<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ExtendedArticleEdit</Name>
    <Version>11.0.5</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-04-27 16:13:28" Version="11.0.5">Update to OTOBO 11.0.16.</ChangeLog>
    <ChangeLog Date="2026-02-05 13:24:57" Version="11.0.4">Update to OTOBO 11.0.15.</ChangeLog>
    <ChangeLog Date="2025-08-12 11:21:18" Version="11.0.3">Implemented sysconfig to enable or disable editing customer articles.</ChangeLog>
    <ChangeLog Date="2025-03-31 08:12:05" Version="11.0.2">Bugfixes.</ChangeLog>
    <ChangeLog Date="2025-03-25 14:51:37" Version="11.0.1">Initial Release.</ChangeLog>
    <Description Lang="en">The package ExtendedArticleEdit adds the possibility to change ticket and article attributes.</Description>
    <Framework>11.0.x</Framework>
    <BuildCommitID>9f666aa38112c18b03214fb1759fa0eaa901a8c6</BuildCommitID>
    <BuildDate>2026-04-27 16:13:31</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AgentTicketActionCommon.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBiNTU1NWUzNDhhNTZhZTI2MzEwMjgxMTk0ZjkzOGZmYTlhMDRlMGVkIC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0QWN0aW9uQ29tbW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiMgdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKdXNlIExpc3Q6OlV0aWwgcXcoYW55IGZpcnN0KTsKIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXIgICAoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIFRyeSB0byBsb2FkIGRyYWZ0IGlmIHJlcXVlc3RlZC4KICAgIGlmICgKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57Rm9ybURyYWZ0fQogICAgICAgICYmICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMb2FkRm9ybURyYWZ0JyApCiAgICAgICAgJiYgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1EcmFmdElEJyApCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9ID0gJFBhcmFtT2JqZWN0LT5Mb2FkRm9ybURyYWZ0KAogICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0SUQnICksCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGFydGljbGUgZm9yIHdob20gdGhpcyBzaG91bGQgYmUgYSByZXBseSwgaWYgYXZhaWxhYmxlCiAgICBteSAkUmVwbHlUb0FydGljbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUmVwbHlUb0FydGljbGUnICkgfHwgJyc7CiAgICBteSAkVGlja2V0SUQgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGlja2V0SUQnICkgICAgICAgfHwgJyc7CgogICAgIyBjaGVjayBpZiBSZXBseVRvQXJ0aWNsZSByZWFsbHkgYmVsb25ncyB0byB0aGUgdGlja2V0CiAgICBteSAlUmVwbHlUb0FydGljbGVDb250ZW50OwogICAgaWYgKCRSZXBseVRvQXJ0aWNsZSkgewoKICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFRpY2tldElELAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFJlcGx5VG9BcnRpY2xlLAogICAgICAgICk7CiAgICAgICAgJVJlcGx5VG9BcnRpY2xlQ29udGVudCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgPT4gJFJlcGx5VG9BcnRpY2xlLAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gICAgICAgID0gJFJlcGx5VG9BcnRpY2xlOwogICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSA9IFwlUmVwbHlUb0FydGljbGVDb250ZW50OwoKICAgICAgICAjIGdldCBzZW5kZXIgb2Ygb3JpZ2luYWwgbm90ZSAodG8gaW5mb3JtIHNlbmRlciBhYm91dCBhbnN3ZXIpCiAgICAgICAgaWYgKCAkUmVwbHlUb0FydGljbGVDb250ZW50e0NyZWF0ZUJ5fSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9TZW5kZXJJRCA9ICggJFJlcGx5VG9BcnRpY2xlQ29udGVudHtDcmVhdGVCeX0gKTsKICAgICAgICAgICAgJFNlbGYtPntSZXBseVRvU2VuZGVyVXNlcklEfSA9IFxAUmVwbHlUb1NlbmRlcklEOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhcnRpY2xlIGJlbG9uZ3MgdG8gb3RoZXIgdGlja2V0LCBkb24ndCB1c2UgaXQgYXMgcmVwbHkKICAgICAgICBpZiAoICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7VGlja2V0SUR9IG5lICRTZWxmLT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSA9ICIiOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhcnRpY2xlIGlzIG5vdCBvZiB0eXBlIG5vdGUtaW50ZXJuYWwsIGRvbid0IHVzZSBpdCBhcyByZXBseQogICAgICAgIGlmICgKICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpIG5lICdJbnRlcm5hbCcKICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpIGVxICdJbnRlcm5hbCcKICAgICAgICAgICAgICAgICYmICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7U2VuZGVyVHlwZX0gbmUgJ2FnZW50JwogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGV9ID0gIiI7CiAgICAgICAgfQogICAgfQoKICAgICMgZnJvbnRlbmQgc3BlY2lmaWMgY29uZmlnCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAxLAoKICAgICAgICAjIG9ubHkgc2NyZWVucyB0aGF0IGFkZCBub3RlcyBjYW4gbW9kaWZ5IEFydGljbGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBPYmplY3RUeXBlICA9PiAkQ29uZmlnLT57Tm90ZX0gPyBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXSA6IFsnVGlja2V0J10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgIG15ICRUaWNrZXREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6TWFzaycpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIE1hc2sgPT4gJFNlbGYtPntBY3Rpb259LAogICAgKSB8fCB7fTsKCiAgICAjIGRlZmluaXRpb25zIGFyZSBzcGxpdCB1cCBiZWNhdXNlIGFydGljbGUgaXMgcmVuZGVyZWQgc2VwYXJhdGVseQogICAgJFNlbGYtPntUaWNrZXRNYXNrRGVmaW5pdGlvbn0gID0gJFRpY2tldERlZmluaXRpb24tPntNYXNrfTsKICAgICRTZWxmLT57QXJ0aWNsZU1hc2tEZWZpbml0aW9ufSA9IFtdOwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ICAgICAgICAgID0ge307CgogICAgIyBhbGlnbiBzeXNjb25maWcgYW5kIHRpY2tldCBtYXNrIGRhdGEgSQogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyAkRHluYW1pY0ZpZWxkTGlzdCAvLyBbXSB9ICkgewoKICAgICAgICAjIHNlcGFyYXRlIHRpY2tldCBhbmQgYXJ0aWNsZSB0eXBlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgICAgIGlmICggZXhpc3RzICRUaWNrZXREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkc317ICREeW5hbWljRmllbGQtPntOYW1lfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJFBhcmFtZXRlcnMgPSBkZWxldGUgJFRpY2tldERlZmluaXRpb24tPntEeW5hbWljRmllbGRzfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gLy8ge307CgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICRQYXJhbWV0ZXJzLT4lKiApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57JEF0dHJpYnV0ZX0gPSAkUGFyYW1ldGVycy0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCAkU2VsZi0+e1RpY2tldE1hc2tEZWZpbml0aW9ufS0+QCosIHsKICAgICAgICAgICAgICAgICAgICBERiAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPT0gMiA/IDEgOiAwLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWctPntEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGQtPntNYW5kYXRvcnl9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHVzaCAkU2VsZi0+e0FydGljbGVNYXNrRGVmaW5pdGlvbn0tPkAqLCB7CiAgICAgICAgICAgICAgICBERiAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+ICRDb25maWctPntEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9PSAyID8gMSA6IDAsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoICRDb25maWctPntEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9PSAyICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e01hbmRhdG9yeX0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgIH0KCiAgICAjIGFsaWduIHN5c2NvbmZpZyBhbmQgdGlja2V0IG1hc2sgZGF0YSBJSQogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICgga2V5cyAkVGlja2V0RGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH17JER5bmFtaWNGaWVsZE5hbWV9ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICk7CgogICAgICAgIG15ICRQYXJhbWV0ZXJzID0gJFRpY2tldERlZmluaXRpb24tPntEeW5hbWljRmllbGRzfXskRHluYW1pY0ZpZWxkTmFtZX0gLy8ge307CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAkUGFyYW1ldGVycy0+JSogKSB7CiAgICAgICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfXskRHluYW1pY0ZpZWxkTmFtZX17JEF0dHJpYnV0ZX0gPSAkUGFyYW1ldGVycy0+eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpGb3JtQ2FjaGUnKS0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgIExheW91dE9iamVjdCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICApOwoKICAgICMgbWV0aG9kcyB3aGljaCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgc3RhbmRhcmQgZmllbGRzCiAgICAkU2VsZi0+e0ZpZWxkTWV0aG9kc30gPSBbCiAgICAgICAgewogICAgICAgICAgICBGaWVsZElEID0+ICdEZXN0JywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRRdWV1ZXMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnTmV3VXNlcklEJywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRPd25lcnMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgIE1ldGhvZCAgPT4gXCZfR2V0UmVzcG9uc2libGUKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnTmV4dFN0YXRlSUQnLAogICAgICAgICAgICBNZXRob2QgID0+IFwmX0dldE5leHRTdGF0ZXMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnUHJpb3JpdHlJRCcsCiAgICAgICAgICAgIE1ldGhvZCAgPT4gXCZfR2V0UHJpb3JpdGllcwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBGaWVsZElEID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICBNZXRob2QgID0+IFwmX0dldFNlcnZpY2VzCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEZpZWxkSUQgPT4gJ1NMQUlEJywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRTTEFzCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEZpZWxkSUQgPT4gJ1N0YW5kYXJkVGVtcGxhdGVJRCcsCiAgICAgICAgICAgIE1ldGhvZCAgPT4gXCZfR2V0U3RhbmRhcmRUZW1wbGF0ZXMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnVHlwZUlEJywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRUeXBlcwogICAgICAgIH0sCiAgICBdOwoKICAgICMgZGVwZW5kZW5jaWVzIG9mIHN0YW5kYXJkIGZpZWxkcyB3aGljaCBhcmUgbm90IGRlZmluZWQgdmlhIEFDTHMKICAgICRTZWxmLT57SW50ZXJuYWxEZXBlbmRhbmN5fSA9IHsKICAgICAgICBEZXN0ID0+IHsKICAgICAgICAgICAgTmV3VXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgICA9PiAxLAogICAgICAgICAgICBTdGFuZGFyZFRlbXBsYXRlSUQgPT4gMSwKICAgICAgICB9LAogICAgICAgIFNlcnZpY2VJRCA9PiB7CiAgICAgICAgICAgIFNMQUlEICAgICA9PiAxLAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gMSwgICAgI0N1c3RvbWVyVXNlciB1cGRhdGVzIGNhbiBiZSBzdWJtaXR0ZWQgYXMgRWxlbWVudENoYW5nZWQ6IFNlcnZpY2VJRAogICAgICAgIH0sCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+IHsKICAgICAgICAgICAgU2VydmljZUlEID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPd25lckFsbCA9PiB7CiAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVzcG9uc2libGVBbGwgPT4gewogICAgICAgICAgICBOZXdSZXNwb25zaWJsZUlEID0+IDEsCiAgICAgICAgfSwKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpGaWVsZFJlc3RyaWN0aW9ucycpOwogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkU2VsZi0+e1RpY2tldElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUaWNrZXRJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfQogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbiwgZG9uJ3Qgc2hvdyB0aWNrZXQKICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEFDTCByZXN0cmljdGlvbnMKICAgIG15ICVQb3NzaWJsZUFjdGlvbnMgPSAoIDEgPT4gJFNlbGYtPntBY3Rpb259ICk7CgogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlUG9zc2libGVBY3Rpb25zLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICctJywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAlQWNsQWN0aW9uID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsQWN0aW9uRGF0YSgpOwoKICAgICMgY2hlY2sgaWYgQUNMIHJlc3RyaWN0aW9ucyBleGlzdAogICAgaWYgKCRBQ0wpIHsKCiAgICAgICAgbXkgJUFjbEFjdGlvbkxvb2t1cCA9IHJldmVyc2UgJUFjbEFjdGlvbjsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbiBpZiBBQ0wgcHJvaGliaXRzIHRoaXMgYWN0aW9uCiAgICAgICAgaWYgKCAhJEFjbEFjdGlvbkxvb2t1cHsgJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBmb3IgZmFpbGVkIGRyYWZ0IGxvYWRpbmcgcmVxdWVzdC4KICAgIGlmICgKICAgICAgICAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTG9hZEZvcm1EcmFmdCcgKQogICAgICAgICYmICEkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdMb2FkaW5nIGRyYWZ0IGZhaWxlZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvYWRlZEZvcm1EcmFmdDsKICAgIGlmICggJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgJExvYWRlZEZvcm1EcmFmdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGb3JtRHJhZnQnKS0+Rm9ybURyYWZ0R2V0KAogICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfSwKICAgICAgICAgICAgR2V0Q29udGVudCAgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBPbmx5TGFzdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmIChAQXJ0aWNsZXMpIHsKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlID0gJEFydGljbGVzWzBdOwoKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlU3lzdGVtVGltZTsKICAgICAgICAgICAgaWYgKCAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSApIHsKICAgICAgICAgICAgICAgIG15ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWUgPSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGb3JtRHJhZnRTeXN0ZW1UaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZVRpbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdFN5c3RlbVRpbWUgPSAkRm9ybURyYWZ0U3lzdGVtVGltZU9iamVjdC0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgaWYgKCAhJExhc3RBcnRpY2xlU3lzdGVtVGltZSB8fCAkRm9ybURyYWZ0U3lzdGVtVGltZSA8PSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAgICAgJFBhcmFte0Zvcm1EcmFmdE91dGRhdGVkfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkTG9hZGVkRm9ybURyYWZ0KSApIHsKCiAgICAgICAgJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZUJ5TmFtZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRMb2FkZWRGb3JtRHJhZnQtPntDaGFuZ2VCeX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW07CiAgICBteSBAQXJ0aWNsZUF0dGFjaG1lbnRzOwogICAgbXkgJUFydGljbGVEYXRhOwoKICAgICMgaWYgd2UgYXJlIGVkaXRpbmcgYW4gYXJ0aWNsZQogICAgaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gJiYgISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgJUFydGljbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICBSZWFsTmFtZXMgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBrZXlzICVBcnRpY2xlRGF0YSApIHsKICAgICAgICAgICAgQEFydGljbGVBdHRhY2htZW50cyA9ICRTZWxmLT5fQ29weUFydGljbGVBdHRhY2htZW50c1RvVXBsb2FkQ2FjaGUoCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAlR2V0UGFyYW0gPSAkU2VsZi0+X0xvYWRBcnRpY2xlRWRpdCgKICAgICAgICAgICAgICAgIEFydGljbGVEYXRhICAgICAgICAgID0+IFwlQXJ0aWNsZURhdGEsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIEFydGljbGVCYWNrZW5kT2JqZWN0ID0+ICRBcnRpY2xlQmFja2VuZE9iamVjdAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdQcm9wZXJ0aWVzJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRm9ybURyYWZ0ICAgICAgPT4gJENvbmZpZy0+e0Zvcm1EcmFmdH0sCiAgICAgICAgICAgIEZvcm1EcmFmdElEICAgID0+ICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9LAogICAgICAgICAgICBGb3JtRHJhZnRUaXRsZSA9PiAkTG9hZGVkRm9ybURyYWZ0ID8gJExvYWRlZEZvcm1EcmFmdC0+e1RpdGxlfSA6ICcnLAogICAgICAgICAgICBGb3JtRHJhZnRNZXRhICA9PiAkTG9hZGVkRm9ybURyYWZ0LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIFJlcGx5VG9BcnRpY2xlID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICA9PiAkU2VsZi0+e0FydGljbGVJRH0gfHwgJycsCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgcmlnaHQgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdIZWFkZXInIC4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBcnRpY2xlVGl0bGUgPT4gJEdldFBhcmFte1N1YmplY3R9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGxvY2sgc3RhdGUKICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgaWYgKCAhJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja0dldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKSApIHsKCiAgICAgICAgICAgIG15ICRMb2NrID0gJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja1NldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJExvY2spIHsKCiAgICAgICAgICAgICAgICAjIFNldCBuZXcgb3duZXIgaWYgdGlja2V0IG93bmVyIGlzIGRpZmZlcmVudCB0aGVuIGxvZ2dlZCB1c2VyLgogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0e093bmVySUR9ICE9ICRTZWxmLT57VXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBSZW1lbWJlciBwcmV2aW91cyBvd25lciwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlc3RvcmUgdGlja2V0IG93bmVyIG9uIHVuZG8gYWN0aW9uLgogICAgICAgICAgICAgICAgICAgICRQYXJhbXtQcmV2aW91c093bmVyfSA9ICRUaWNrZXR7T3duZXJJRH07CgogICAgICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFNob3cgbG9jayBzdGF0ZS4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXNMb2NrJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gJFRpY2tldE9iamVjdC0+T3duZXJDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgT3duZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRUaWNrZXR7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5XYXJuaW5nKAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnU29ycnksIHlvdSBuZWVkIHRvIGJlIHRoZSB0aWNrZXQgb3duZXIgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjaGFuZ2UgdGhlIG93bmVyIGZpcnN0LicpLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IGJhY2sgbGluayB3aGVuIHRoZSBvd25lciBjaGVjayB3YXMgb2sKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRCYWNrJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldEJhY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbXMKICAgIFBBUkFNRVRFUjoKICAgIGZvciBteSAkS2V5ICgKICAgICAgICBxdygKICAgICAgICAgICAgTmV3U3RhdGVJRCBOZXdQcmlvcml0eUlEIFRpbWVVbml0cyBJc1Zpc2libGVGb3JDdXN0b21lciBUaXRsZSBCb2R5IFN1YmplY3QgTmV3UXVldWVJRAogICAgICAgICAgICBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSBOZXdPd25lcklEIE5ld1Jlc3BvbnNpYmxlSUQgVHlwZUlEIFNlcnZpY2VJRCBTTEFJRAogICAgICAgICAgICBSZXBseVRvQXJ0aWNsZSBTdGFuZGFyZFRlbXBsYXRlSUQgQ3JlYXRlQXJ0aWNsZSBGb3JtRHJhZnRJRCBUaXRsZQogICAgICAgICkKICAgICAgICApCiAgICB7CgogICAgICAgIG5leHQgUEFSQU1FVEVSIGlmICRTZWxmLT57QXJ0aWNsZUlEfSAmJiAhJFNlbGYtPntTdWJhY3Rpb259ICYmICggJEtleSBlcSAnQm9keScgfHwgJEtleSBlcSAnU3ViamVjdCcgKTsKCiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgfQoKICAgICMgQUNMIGNvbXBhdGliaWxpdHkgdHJhbnNsYXRpb24KICAgIG15ICVBQ0xDb21wYXRHZXRQYXJhbSA9ICgKICAgICAgICBTdGF0ZUlEICAgICAgID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICBQcmlvcml0eUlEICAgID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICBRdWV1ZUlEICAgICAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICBPd25lcklEICAgICAgID0+ICRHZXRQYXJhbXtOZXdPd25lcklEfSwKICAgICAgICBSZXNwb25zaWJsZUlEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFNlbGYtPntEeW5hbWljRmllbGR9LT4lKiApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMgaW50byBhIHN0cnVjdHVyZSBmb3IgQUNMcwogICAgewogICAgICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZEl0ZW0gKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRJdGVtOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgZGVmaW5lZCAkRHluYW1pY0ZpZWxkVmFsdWVzeyREeW5hbWljRmllbGRJdGVtfTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkSXRlbSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkSXRlbX07CiAgICAgICAgfQogICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gXCVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgfQoKICAgICMgdHJhbnNmb3JtIHBlbmRpbmcgdGltZSwgdGltZSBzdGFtcCBiYXNlZCBvbiB1c2VyIHRpbWUgem9uZQogICAgaWYgKAogICAgICAgIGRlZmluZWQgJEdldFBhcmFte1llYXJ9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17TW9udGh9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17RGF5fQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte0hvdXJ9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17TWludXRlfQogICAgICAgICkKICAgIHsKICAgICAgICAlR2V0UGFyYW0gPSAkTGF5b3V0T2JqZWN0LT5UcmFuc2Zvcm1EYXRlU2VsZWN0aW9uKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJld3JhcCBib2R5IGlmIG5vIHJpY2ggdGV4dCBpcyB1c2VkCiAgICBpZiAoICRHZXRQYXJhbXtCb2R5fSAmJiAhJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+V3JhcFBsYWluVGV4dCgKICAgICAgICAgICAgTWF4Q2hhcmFjdGVycyA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZScpLAogICAgICAgICAgICBQbGFpblRleHQgICAgID0+ICRHZXRQYXJhbXtCb2R5fSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVwbG9hZCBjYWNoZSBvYmplY3QKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgaWYgKAogICAgICAgICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RvcmUnCiAgICAgICAgfHwKICAgICAgICAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTdG9yZScgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKICAgICAgICB9CgogICAgICAgICRHZXRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gLy89IDA7CgogICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBhbmQgdmFsaWRhdGUgZHJhZnQgYWN0aW9uLgogICAgICAgIG15ICRGb3JtRHJhZnRBY3Rpb24gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0QWN0aW9uJyApOwogICAgICAgIGlmICggJEZvcm1EcmFmdEFjdGlvbiAmJiAhJENvbmZpZy0+e0Zvcm1EcmFmdH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdGb3JtRHJhZnQgZnVuY3Rpb25hbGl0eSBkaXNhYmxlZCEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVGb3JtRHJhZnRSZXNwb25zZTsKCiAgICAgICAgIyBDaGVjayBkcmFmdCBuYW1lLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbgogICAgICAgICAgICAmJgogICAgICAgICAgICAoICRGb3JtRHJhZnRBY3Rpb24gZXEgJ0FkZCcgfHwgJEZvcm1EcmFmdEFjdGlvbiBlcSAnVXBkYXRlJyApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRUaXRsZScgKTsKCiAgICAgICAgICAgICMgQSBkcmFmdCBuYW1lIGlzIHJlcXVpcmVkLgogICAgICAgICAgICBpZiAoICEkVGl0bGUgKSB7CgogICAgICAgICAgICAgICAgJUZvcm1EcmFmdFJlc3BvbnNlID0gKAogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgiRHJhZnQgbmFtZSBpcyByZXF1aXJlZCEiKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ2hvc2VuIGRyYWZ0IG5hbWUgbXVzdCBiZSB1bmlxdWUuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEZvcm1EcmFmdExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Rm9ybURyYWZ0JyktPkZvcm1EcmFmdExpc3RHZXQoCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIERSQUZUOgogICAgICAgICAgICAgICAgZm9yIG15ICRGb3JtRHJhZnQgKCBAeyRGb3JtRHJhZnRMaXN0fSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBObyBleGlzdGluZyBkcmFmdCB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUIGlmICRUaXRsZSBuZSAkRm9ybURyYWZ0LT57VGl0bGV9OwoKICAgICAgICAgICAgICAgICAgICAjIFNhbWUgbmFtZSBmb3IgdXBkYXRlIG9uIGV4aXN0aW5nIGRyYWZ0LgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkRm9ybURyYWZ0QWN0aW9uIGVxICdVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gZXEgJEZvcm1EcmFmdC0+e0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBBbm90aGVyIGRyYWZ0IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICAgICAgICAgICVGb3JtRHJhZnRSZXNwb25zZSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSggIkZvcm1EcmFmdCBuYW1lICVzIGlzIGFscmVhZHkgaW4gdXNlISIsICRUaXRsZSApLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGxhc3QgRFJBRlQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUGVyZm9ybSBkcmFmdCBhY3Rpb24gaW5zdGVhZCBvZiBzYXZpbmcgZm9ybSBkYXRhIGluIHRpY2tldC9hcnRpY2xlLgogICAgICAgIGlmICggJEZvcm1EcmFmdEFjdGlvbiAmJiAhJUZvcm1EcmFmdFJlc3BvbnNlICkgewoKICAgICAgICAgICAgIyBSZXNldCBGb3JtRHJhZnRJRCB0byBwcmV2ZW50IHVwZGF0aW5nIGV4aXN0aW5nIGRyYWZ0LgogICAgICAgICAgICBpZiAoICRGb3JtRHJhZnRBY3Rpb24gZXEgJ0FkZCcgJiYgJEdldFBhcmFte0Zvcm1EcmFmdElEfSApIHsKCiAgICAgICAgICAgICAgICAjIG1lZGRsaW5nIHdpdGggdGhlIGlubmFyZHMgb2YgS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcmFtT2JqZWN0LT5TZXRBcnJheSgKICAgICAgICAgICAgICAgICAgICBQYXJhbSAgPT4gJ0Zvcm1EcmFmdElEJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgPT4gWycnXQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdEFjdGlvbk9rOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0QWN0aW9uIGVxICdBZGQnCiAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgKCAkRm9ybURyYWZ0QWN0aW9uIGVxICdVcGRhdGUnICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0QWN0aW9uT2sgPSAkUGFyYW1PYmplY3QtPlNhdmVGb3JtRHJhZnQoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlUGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVwbHlUb0FydGljbGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkRm9ybURyYWZ0QWN0aW9uT2spIHsKICAgICAgICAgICAgICAgICRGb3JtRHJhZnRSZXNwb25zZXtTdWNjZXNzfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAlRm9ybURyYWZ0UmVzcG9uc2UgPSAoCiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3QgcGVyZm9ybSByZXF1ZXN0ZWQgZHJhZnQgYWN0aW9uIScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFJldHVybiBKU09OIHdoZW4gdGhlcmUgYWxyZWFkeSBpcyBhIHJlc3BvbnNlCiAgICAgICAgaWYgKCVGb3JtRHJhZnRSZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJUZvcm1EcmFmdFJlc3BvbnNlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzdGF0ZSBvYmplY3QKICAgICAgICBteSAkU3RhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKCiAgICAgICAgIyBzdG9yZSBhY3Rpb24KICAgICAgICBteSAlRXJyb3I7CgogICAgICAgICMgY2hlY2sgcGVuZGluZyB0aW1lCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgIG15ICVTdGF0ZURhdGEgPSAkU3RhdGVPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICAgICAgSUQgPT4gJEdldFBhcmFte05ld1N0YXRlSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBzdGF0ZSB0eXBlCiAgICAgICAgICAgIGlmICggJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15wZW5kaW5nL2kgKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICAgICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yeydEYXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgZGF0ZXRpbWUgb2JqZWN0CiAgICAgICAgICAgICAgICBteSAkUGVuZGluZ0RhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCA9PiAwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGN1cnJlbnQgc3lzdGVtIGVwb2NoCiAgICAgICAgICAgICAgICBteSAkQ3VyU3lzdGVtRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGRhdGUKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAhJFBlbmRpbmdEYXRlVGltZU9iamVjdAogICAgICAgICAgICAgICAgICAgIHx8ICRQZW5kaW5nRGF0ZVRpbWVPYmplY3QgPCAkQ3VyU3lzdGVtRGF0ZVRpbWVPYmplY3QKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yeydEYXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgICAgICAjIGlmIGFjdGlvbiBpcyBBcnRpY2xlRWRpdCwgY2hlY2sgaWYgYXJ0aWNsZSBpcyBlZGl0YWJsZQogICAgICAgIG15ICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgPSAwOwogICAgICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudFRpY2tldEFydGljbGVFZGl0JyAmJiAkQ29uZmlnLT57QXJ0aWNsZX0gJiYgJFNlbGYtPntBcnRpY2xlSUR9ICkgewoKICAgICAgICAgICAgIyBmZXRjaCBjb21tdW5pY2F0aW9uIGNoYW5uZWwgaWQgYnkgYXJ0aWNsZSBpZAogICAgICAgICAgICBteSBAQmFzZUFydGljbGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5BcnRpY2xlTGlzdCgKICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmIChAQmFzZUFydGljbGVzKSB7CiAgICAgICAgICAgICAgICBteSAkQ29tbXVuaWNhdGlvbkNoYW5uZWxJRCA9ICRCYXNlQXJ0aWNsZXNbMF0tPntDb21tdW5pY2F0aW9uQ2hhbm5lbElEfTsKICAgICAgICAgICAgICAgIG15ICVDb21tdW5pY2F0aW9uQ2hhbm5lbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb21tdW5pY2F0aW9uQ2hhbm5lbCcpLT5DaGFubmVsR2V0KAogICAgICAgICAgICAgICAgICAgIENoYW5uZWxJRCAgID0+ICRDb21tdW5pY2F0aW9uQ2hhbm5lbElELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgPSAkU2VsZi0+X0NoZWNrQXJ0aWNsZUVkaXRpbmdFbmFibGVkKAogICAgICAgICAgICAgICAgICAgIEFydGljbGUgICAgICAgICAgICAgID0+ICRDb25maWctPntBcnRpY2xlfSwKICAgICAgICAgICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAkQ29tbXVuaWNhdGlvbkNoYW5uZWx7Q2hhbm5lbE5hbWV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fSA9ICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQ7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Q3JlYXRlQXJ0aWNsZX0gPSAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkOwogICAgICAgICAgICB9CiAgICAgICAgfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gJiYgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBzdWJqZWN0CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtTdWJqZWN0fSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnU3ViamVjdEludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYm9keQogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17Qm9keX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J0JvZHlJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG93bmVyCiAgICAgICAgaWYgKCAkQ29uZmlnLT57T3duZXJ9ICYmICRDb25maWctPntPd25lck1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtOZXdPd25lcklEfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnTmV3T3duZXJJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlc3BvbnNpYmxlCiAgICAgICAgaWYgKCAkQ29uZmlnLT57UmVzcG9uc2libGV9ICYmICRDb25maWctPntSZXNwb25zaWJsZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnTmV3UmVzcG9uc2libGVJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRpdGxlCiAgICAgICAgaWYgKCAkQ29uZmlnLT57VGl0bGV9ICYmICEkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAkRXJyb3J7J1RpdGxlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdHlwZQogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICkKICAgICAgICAgICAgJiYKICAgICAgICAgICAgKCAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSAmJgogICAgICAgICAgICAoICEkR2V0UGFyYW17VHlwZUlEfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnVHlwZUlESW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHNlcnZpY2UKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2V9CiAgICAgICAgICAgICYmICRHZXRQYXJhbXtTTEFJRH0KICAgICAgICAgICAgJiYgISRHZXRQYXJhbXtTZXJ2aWNlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnU2VydmljZUludmFsaWQnfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBtYW5kYXRvcnkgc2VydmljZQogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKQogICAgICAgICAgICAmJiAkQ29uZmlnLT57U2VydmljZX0KICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2VNYW5kYXRvcnl9CiAgICAgICAgICAgICYmICEkR2V0UGFyYW17U2VydmljZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3J7J1NlcnZpY2VJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHNsYQogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKQogICAgICAgICAgICAmJiAkQ29uZmlnLT57U2VydmljZX0KICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NMQU1hbmRhdG9yeX0KICAgICAgICAgICAgJiYgISRHZXRQYXJhbXtTTEFJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yeydTTEFJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHF1ZXVlCiAgICAgICAgaWYgKCAkQ29uZmlnLT57UXVldWV9ICYmICRDb25maWctPntRdWV1ZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtOZXdRdWV1ZUlEfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnTmV3UXVldWVJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBzdGF0ZQogICAgICAgIGlmICggJENvbmZpZy0+e1N0YXRlfSAmJiAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld1N0YXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB0aW1lIHVuaXRzLCBidXQgb25seSBpZiB0aGUgY3VycmVudCBzY3JlZW4gaGFzIGEgbm90ZQogICAgICAgICMgICAoYWNjb3VudGVkIHRpbWUgY2FuIG9ubHkgYmUgc3RvcmVkIGlmIGFuZCBhcnRpY2xlIGlzIGdlbmVyYXRlZCkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICAmJiAkR2V0UGFyYW17Q3JlYXRlQXJ0aWNsZX0KICAgICAgICAgICAgJiYgJEdldFBhcmFte1RpbWVVbml0c30gZXEgJycKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yeydUaW1lVW5pdHNJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgc2tpcCB2YWxpZGF0aW9uIG9mIGhpZGRlbiBmaWVsZHMKICAgICAgICBteSAlVmlzaWJpbGl0eTsKCiAgICAgICAgIyB0cmFuc2Zvcm0gZHluYW1pYyBmaWVsZCBkYXRhIGludG8gREZOYW1lID0+IERGTmFtZSBwYWlyCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEFjbCA9IG1hcCB7ICRfID0+ICRfIH0ga2V5cyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqOwoKICAgICAgICAjIGNhbGwgdGlja2V0IEFDTHMgZm9yIER5bmFtaWNGaWVsZHMgdG8gY2hlY2sgZmllbGQgdmlzaWJpbGl0eQogICAgICAgIG15ICRBQ0xSZXN1bHQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0Zvcm0nLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICctJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZEFjbCwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTFJlc3VsdCkgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDAgfSBrZXlzICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+JSo7CiAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICVBY2xEYXRhICkgewogICAgICAgICAgICAgICAgJFZpc2liaWxpdHl7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZCB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJVZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAxIH0ga2V5cyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciBkeW5hbWljIGZpZWxkIHZhbGlkYXRpb24gcmVzdWx0cyBpZiBlcnJvbmVvdXMKICAgICAgICBteSAlRHluYW1pY0ZpZWxkVmFsaWRhdGlvblJlc3VsdDsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPIGFsc28gcGFzcyBvYmplY3QgaGVyZT8KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgICMgRG8gbm90IHZhbGlkYXRlIG9ubHkgaWYgb2JqZWN0IHR5cGUgaXMgQXJ0aWNsZSBhbmQgQ3JlYXRlQXJ0aWNsZSB2YWx1ZSBpcyBub3QgZGVmaW5lZCwgb3IgRmllbGQgaXMgaW52aXNpYmxlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ0FydGljbGUnICYmICEkR2V0UGFyYW17Q3JlYXRlQXJ0aWNsZX0gKQogICAgICAgICAgICAgICAgJiYgJFZpc2liaWxpdHl7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKCiAgICAgICAgICAgICAgICAgICAgIyBNYW5kYXRvcnkgaXMgYWRkZWQgdG8gdGhlIGNvbmZpZ3MgYnkgJFNlbGYtPm5ldwogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TWFuZGF0b3J5fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICVzIScsICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUHJvcGFnYXRlIHZhbGlkYXRpb24gZXJyb3IgdG8gdGhlIEVycm9yIHZhcmlhYmxlIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSBmcm9udGVuZC4KICAgICAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gICAgICAgICAgICAgICAgICAgICAgICA9ICcgU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWxpZGF0aW9uUmVzdWx0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBzYXZlIGZvcm0gaWYgYSBkcmFmdCB3YXMgbG9hZGVkLgogICAgICAgIGlmICggJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgICAgICVFcnJvciA9ICggTG9hZGVkRm9ybURyYWZ0ID0+IDEgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZXJyb3JzCiAgICAgICAgaWYgKCVFcnJvcikgewogICAgICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgICAgICBWaXNpYmlsaXR5ICAgICAgID0+IFwlVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgICAgICBERlBvc3NpYmxlVmFsdWVzID0+IFwlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgREZFcnJvcnMgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZFZhbGlkYXRpb25SZXN1bHQsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdGl0bGUKICAgICAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgPT4gJEdldFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdHlwZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlQUNMQ29tcGF0R2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VydmljZVNldCgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUFDTENvbXBhdEdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17U0xBSUR9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U0xBU2V0KAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlQUNMQ29tcGF0R2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFNMQUlEICAgID0+ICRHZXRQYXJhbXtTTEFJRH0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFVubG9ja09uQXdheSA9IDE7CgogICAgICAgICMgbW92ZSB0aWNrZXQgdG8gYSBuZXcgcXVldWUsIGJ1dCBvbmx5IGlmIHRoZSBxdWV1ZSB3YXMgY2hhbmdlZAogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZy0+e1F1ZXVlfQogICAgICAgICAgICAmJiAkR2V0UGFyYW17TmV3UXVldWVJRH0KICAgICAgICAgICAgJiYgJEdldFBhcmFte05ld1F1ZXVlSUR9IG5lICRUaWNrZXR7UXVldWVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgbW92ZSB0aWNrZXQgKHNlbmQgbm90aWZpY2F0aW9uIGlmIG5vIG5ldyBvd25lciBpcyBzZWxlY3RlZCkKICAgICAgICAgICAgbXkgJEJvZHlUZXh0ID0gJyc7CiAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAkQm9keVRleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8IDAsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEJvZHlUZXh0ID0gJEdldFBhcmFte0JvZHl9IHx8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJE1vdmUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRRdWV1ZVNldCgKICAgICAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmV3UXVldWVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgU2VuZE5vTm90aWZpY2F0aW9uID0+ICRHZXRQYXJhbXtOZXdVc2VySUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICAgICAgID0+ICRCb2R5VGV4dCwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRNb3ZlICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBvd25lcgogICAgICAgIG15IEBOb3RpZnlEb25lOwogICAgICAgIGlmICggJENvbmZpZy0+e093bmVyfSApIHsKICAgICAgICAgICAgbXkgJEJvZHlUZXh0ID0gJExheW91dE9iamVjdC0+UmljaFRleHQyQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtOZXdPd25lcklEfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgID0+ICRCb2R5VGV4dCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkVW5sb2NrT25Bd2F5ID0gMDsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgb3duZXIgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3T3duZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyByZXNwb25zaWJsZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgICAgICAgICBteSAkQm9keVRleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgTmV3VXNlcklEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgPT4gJEJvZHlUZXh0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgcmVzcG9uc2libGUgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIG5vdGUKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJyc7CiAgICAgICAgbXkgJFJldHVyblVSTDsKCiAgICAgICAgIyBzZXQgcHJpb3JpdHkKICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gJiYgJEdldFBhcmFte05ld1ByaW9yaXR5SUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBQcmlvcml0eUlEID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgc3RhdGUKICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gJiYgJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1bmxvY2sgdGhlIHRpY2tldCBhZnRlciBjbG9zZQogICAgICAgICAgICBteSAlU3RhdGVEYXRhID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgICAgIElEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHVubG9jayBvbiBjbG9zZSBzdGF0ZQogICAgICAgICAgICBpZiAoICRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9eY2xvc2UvaSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgcGVuZGluZyB0aW1lIG9uIHBlbmRpbmcgc3RhdGUKICAgICAgICAgICAgZWxzaWYgKCAkU3RhdGVEYXRhe1R5cGVOYW1lfSA9fiAvXnBlbmRpbmcvaSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlZGlyZWN0IHBhcmVudCB3aW5kb3cgdG8gbGFzdCBzY3JlZW4gb3ZlcnZpZXcgb24gY2xvc2VkIHRpY2tldHMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15jbG9zZS9pCiAgICAgICAgICAgICAgICAmJiAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpSZWRpcmVjdEFmdGVyQ2xvc2VEaXNhYmxlZCcpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRSZXR1cm5VUkwgPSAkU2VsZi0+e0xhc3RTY3JlZW5PdmVydmlld30gfHwgJ0FjdGlvbj1BZ2VudERhc2hib2FyZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte0NyZWF0ZUFydGljbGV9CiAgICAgICAgICAgICYmICRDb25maWctPntOb3RlfQogICAgICAgICAgICAmJiAoICRHZXRQYXJhbXtTdWJqZWN0fSB8fCAkR2V0UGFyYW17Qm9keX0gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte1N1YmplY3R9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3ViamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1YmplY3QgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRDb25maWctPntTdWJqZWN0fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRTdWJqZWN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJEdldFBhcmFte1N1YmplY3R9CiAgICAgICAgICAgICAgICAgICAgfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBzdWJqZWN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHByZSBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCVVcGxvYWRTdHVmZikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudHMsIFwlVXBsb2FkU3R1ZmY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRNaW1lVHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICRNaW1lVHlwZSA9ICd0ZXh0L2h0bWwnOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHVudXNlZCBpbmxpbmUgaW1hZ2VzCiAgICAgICAgICAgICAgICBteSBATmV3QXR0YWNobWVudERhdGE7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElEID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID1+IC9pbWFnZS9pICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50SURIVE1MUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3JrYXJvdW5kIGZvciBsaW5rIGVuY29kZSBvZiByaWNoIHRleHQgZWRpdG9yLCBzZWUgYnVnIzUwNTMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGF0dGFjaG1lbnQgaWYgbm90IGxpbmtlZCBpbiBib2R5CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0JvZHl9ICF+IC8oXFEkQ29udGVudElESFRNTFF1b3RlXEV8XFEkQ29udGVudElEXEUpL2k7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGlubGluZSBpbWFnZXMgYW5kIG5vcm1hbCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIHB1c2ggQE5ld0F0dGFjaG1lbnREYXRhLCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAQXR0YWNobWVudHMgPSBATmV3QXR0YWNobWVudERhdGE7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaHRtbCBkb2N1bWVudAogICAgICAgICAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRnJvbSA9ICJcIiRTZWxmLT57VXNlckZ1bGxuYW1lfVwiIDwkU2VsZi0+e1VzZXJFbWFpbH0+IjsKICAgICAgICAgICAgbXkgQE5vdGlmeVVzZXJJRHM7CgogICAgICAgICAgICAjIGdldCBsaXN0IG9mIHVzZXJzIHRoYXQgd2lsbCBiZSBpbmZvcm1lZCB3aXRob3V0IHNlbGVjdGlvbiBpbiBpbmZvcm1lZC9pbnZvbHZlZCBsaXN0CiAgICAgICAgICAgIG15IEBVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gPSBzcGxpdCAvLC8sICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24nICkgfHwgIiI7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwoKICAgICAgICAgICAgIyBnZXQgaW52b2x2ZWQgdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0luZm9ybUFnZW50fSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBJbmZvcm1Vc2VySUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBATm90aWZ5VXNlcklEcywgQEludm9sdmVkVXNlcklEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBATm90aWZ5VXNlcklEcywgQFVzZXJMaXN0V2l0aG91dFNlbGVjdGlvbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50VGlja2V0RW1haWxPdXRib3VuZCcgKSB7CiAgICAgICAgICAgICAgICAkQXJ0aWNsZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6RW1haWwnKS0+QXJ0aWNsZVNlbmQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICAgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgICAgICBNaW1lVHlwZSAgICAgICAgICAgICAgICAgICAgICAgID0+ICRNaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57SGlzdG9yeVR5cGV9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlDb21tZW50fSwKICAgICAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgICAgICBFeGNsdWRlTXV0ZU5vdGlmaWNhdGlvblRvVXNlcklEID0+IFxATm90aWZ5RG9uZSwKICAgICAgICAgICAgICAgICAgICBVbmxvY2tPbkF3YXkgICAgICAgICAgICAgICAgICAgID0+ICRVbmxvY2tPbkF3YXksCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gKSB7CiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyAgICAgICAgICAgICAgICAgJEFydGljbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6OkludGVybmFsJyktPkFydGljbGVFZGl0KAojICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKIyAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBcnRpY2xlSUR9LCAgICAgICAgICAgICAjSW5jbHVkZSB0aGUgb3JpZ2luYWwgYXJ0aWNsZSBpZCBmb3IgYXJ0aWNsZSB2ZXJzaW9uaW5nCiMgICAgICAgICAgICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICAgICAgICAgICAgID0+ICdhZ2VudCcsCiMgICAgICAgICAgICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRGcm9tLAojICAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiMgICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiMgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKIyAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKIyAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlDb21tZW50fSwKIyAgICAgICAgICAgICAgICAgICAgIEZvcmNlTm90aWZpY2F0aW9uVG9Vc2VySUQgICAgICAgPT4gXEBOb3RpZnlVc2VySURzLAojICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiMgICAgICAgICAgICAgICAgICAgICBVbmxvY2tPbkF3YXkgICAgICAgICAgICAgICAgICAgID0+ICRVbmxvY2tPbkF3YXksCiMgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ICAgICAgICAgICAgICAgICAgICAgID0+IFxAQXR0YWNobWVudHMsCiMgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKIyAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKIyAgICAgICAgICAgICAgICAgKTsKIyAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBlZGl0aW5nIGlzIG5lY2Vzc2FyeSBieSBjb21wYXJpbmcgYXJ0aWNsZSBib2R5CiAgICAgICAgICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICVBcnRpY2xlID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEICAgICA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJlYWxOYW1lcyAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICVEYXRhID0gJFNlbGYtPl9Mb2FkQXJ0aWNsZUVkaXQoCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZURhdGEgICAgICAgICAgPT4gXCVBcnRpY2xlLAogICAgICAgICAgICAgICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IFwlVGlja2V0LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVCYWNrZW5kT2JqZWN0ID0+ICRBcnRpY2xlQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBOb0F0dGFjaG1lbnRzICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNhbml0aXplIGJvdGggYm9keSBzdHJpbmdzIGZyb20gY29udGVudCBpZHMgZm9yIGNvbXBhcmlzb24KICAgICAgICAgICAgICAgIG15ICRFeGlzdGluZ0JvZHkgPSAkRGF0YXtCb2R5fTsKICAgICAgICAgICAgICAgICRFeGlzdGluZ0JvZHkgPX4gcy8oPXwifCcpY2lkOiguKj8pKCJ8J3w+fFwvPnxccykvL2VneGk7CiAgICAgICAgICAgICAgICBteSAkTmV3Qm9keSA9ICRHZXRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICROZXdCb2R5ID1+IHMvKD18InwnKWNpZDooLio/KSgifCd8PnxcLz58XHMpLy9lZ3hpOwoKICAgICAgICAgICAgICAgICMgY29tcGFyZSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRzRGlmZmVyZW50ID0gMDsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIGRlZmluZSBpZiByaWNoIHRleHQgc2hvdWxkIGJlIHVzZWQKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1JpY2hUZXh0fSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6Wm9vbVJpY2hUZXh0Rm9yY2UnKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgICAgICAgICB8fCAwOwoKICAgICAgICAgICAgICAgICAgICAjIEFsd2F5cyBleGNsdWRlIHBsYWluIHRleHQgYXR0YWNobWVudCwgYnV0IGV4Y2x1ZGUgSFRNTCBib2R5IG9ubHkgaWYgcmljaCB0ZXh0IGlzIGVuYWJsZWQuCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlUGxhaW5UZXh0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVIVE1MQm9keSAgPT4gJFNlbGYtPntSaWNoVGV4dH0sCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgIyBHZXQgYXR0YWNobWVudCBpbmRleCAoZXhjbHVkaW5nIGJvZHkgYXR0YWNobWVudHMpLgogICAgICAgICAgICAgICAgICAgIG15ICVBdG1JbmRleCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9IH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCBzY2FsYXIgQEF0dGFjaG1lbnRzICE9IHNjYWxhciggdmFsdWVzICVBdG1JbmRleCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHNEaWZmZXJlbnQgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQEF0dGFjaG1lbnRzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbXBhcmVBdHRhY2htZW50ID0gZmlyc3QgeyAkXy0+e0ZpbGVuYW1lfSBlcSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSB9IHZhbHVlcyAlQXRtSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQ29tcGFyZUF0dGFjaG1lbnQpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50c0RpZmZlcmVudCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBBVFRBQ0hNRU5UOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29tcGFyZUF0dGFjaG1lbnQtPntGaWxlc2l6ZVJhd30gIT0gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRzRGlmZmVyZW50ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICggJEV4aXN0aW5nQm9keSBuZSAkTmV3Qm9keSApCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkQXJ0aWNsZXtTdWJqZWN0fSBuZSAkR2V0UGFyYW17U3ViamVjdH0gKQogICAgICAgICAgICAgICAgICAgIHx8ICggJEF0dGFjaG1lbnRzRGlmZmVyZW50ICkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRBcnRpY2xlSUQgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVFZGl0KAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAkQXJ0aWNsZXtTZW5kZXJUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzZXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57SGlzdG9yeUNvbW1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIFVubG9ja09uQXdheSAgICAgICAgICAgICAgICAgICAgPT4gJFVubG9ja09uQXdheSwKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQXJ0aWNsZUlEID0gJFNlbGYtPntBcnRpY2xlSUR9OwogICAgICAgICAgICAgICAgfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRBcnRpY2xlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlOjpCYWNrZW5kOjpJbnRlcm5hbCcpLT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEZyb20sCiAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICAgICAgICAgICAgID0+ICRDb25maWctPntIaXN0b3J5Q29tbWVudH0sCiAgICAgICAgICAgICAgICAgICAgRm9yY2VOb3RpZmljYXRpb25Ub1VzZXJJRCAgICAgICA9PiBcQE5vdGlmeVVzZXJJRHMsCiAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiAgICAgICAgICAgICAgICAgICAgVW5sb2NrT25Bd2F5ICAgICAgICAgICAgICAgICAgICA9PiAkVW5sb2NrT25Bd2F5LAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgICAgICAgICAgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdGltZSBhY2NvdW50aW5nCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVVbml0c30gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2NvdW50VGltZSgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgVGltZVVuaXQgID0+ICRHZXRQYXJhbXtUaW1lVW5pdHN9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgZm9ybSBkYXRhCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGhpZGRlbiBmaWVsZHMgY2FjaGUKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0hpZGRlbkZpZWxkcycsCiAgICAgICAgICAgICAgICBLZXkgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50VGlja2V0QXJ0aWNsZUVkaXQnICYmICggJENvbmZpZy0+e1RpbWVVbml0c30gfHwgJEFydGljbGVFZGl0aW5nRW5hYmxlZCApICkgewoKICAgICAgICAgICAgIyB0aW1lIGFjY291bnRpbmcKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57QXJ0aWNsZUlEfTsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17VGltZVVuaXRzfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEFjY291bnRUaW1lKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBUaW1lVW5pdCAgPT4gJEdldFBhcmFte1RpbWVVbml0c30sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudFRpY2tldEFydGljbGVFZGl0JyAmJiAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICAgICBteSAkSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPSAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJEZWZhdWx0fTsKICAgICAgICAgICAgJElzVmlzaWJsZUZvckN1c3RvbWVyID0gJEdldFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSA/IDEgOiAwOwoKICAgICAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVVcGRhdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICdJc1Zpc2libGVGb3JDdXN0b21lcicsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJElzVmlzaWJsZUZvckN1c3RvbWVyLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57QXJ0aWNsZUlEfTsKICAgICAgICB9CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKICAgICAgICAjIHNldCBkeW5hbWljIGZpZWxkcwogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkVmlzaWJpbGl0eXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UmVhZG9ubHl9OwoKICAgICAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBJRCAoVGlja2V0SUQgb3IgQXJ0aWNsZUlEKSBkZXBlbmRpbmcgb24gdGhlIGZpZWxkIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgbXkgJE9iamVjdElEID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdBcnRpY2xlJwogICAgICAgICAgICAgICAgPyAkU2VsZi0+e0FydGljbGVJRH0gfHwgJEFydGljbGVJRAogICAgICAgICAgICAgICAgOiAkU2VsZi0+e1RpY2tldElEfTsKCiAgICAgICAgICAgICMgc2V0IHRoZSB2YWx1ZSB3aGljaCB3YXMgdGFrZW4gZnJvbSB3ZWIgcmVxdWVzdAogICAgICAgICAgICAjIFRPRE86IGZvciBSZWZlcmVuY2UgYW5kIExlbnMsIHRoZSBvcmRlciBpcyByZWxldmFudAogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRPYmplY3RJRCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIElmIGZvcm0gd2FzIGNhbGxlZCBiYXNlZCBvbiBhIGRyYWZ0LAogICAgICAgICMgICBkZWxldGUgZHJhZnQgc2luY2UgaXRzIGNvbnRlbnQgaGFzIG5vdyBiZWVuIHVzZWQuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkR2V0UGFyYW17Rm9ybURyYWZ0SUR9CiAgICAgICAgICAgICYmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Rm9ybURyYWZ0JyktPkZvcm1EcmFmdERlbGV0ZSgKICAgICAgICAgICAgICAgIEZvcm1EcmFmdElEID0+ICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBkZWxldGUgZHJhZnQhJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGxvYWQgbmV3IFVSTCBpbiBwYXJlbnQgd2luZG93IGFuZCBjbG9zZSBwb3B1cAogICAgICAgICRSZXR1cm5VUkwgfHw9ICJBY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRTZWxmLT57VGlja2V0SUR9O0FydGljbGVJRD0kQXJ0aWNsZUlEIjsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAkUmV0dXJuVVJMLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFVwZGF0ZScgKSB7CiAgICAgICAgbXkgJVRpY2tldCAgICAgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwogICAgICAgIG15ICRDdXN0b21lclVzZXIgICA9ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9OwogICAgICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKCiAgICAgICAgIyB1c2UgdGhlIEZpZWxkSURzLCB3aGljaCBhcmUgZm91bmQgaW4gQWdlbnRUaWNrZXRQaG9uZS9FbWFpbCwgYW5kIEN1c3RvbWVyVGlja2V0TWVzc2FnZQogICAgICAgIG15ICVVbmlmb3JtaXR5ID0gKAogICAgICAgICAgICBOZXdRdWV1ZUlEICAgID0+ICdEZXN0JywKICAgICAgICAgICAgTmV3T3duZXJJRCAgICA9PiAnTmV3VXNlcklEJywKICAgICAgICAgICAgTmV3UHJpb3JpdHlJRCA9PiAnUHJpb3JpdHlJRCcsCiAgICAgICAgICAgIE5ld1N0YXRlSUQgICAgPT4gJ05leHRTdGF0ZUlEJywKICAgICAgICApOwogICAgICAgIGlmICggJEVsZW1lbnRDaGFuZ2VkICYmICRVbmlmb3JtaXR5eyRFbGVtZW50Q2hhbmdlZH0gKSB7CiAgICAgICAgICAgICRFbGVtZW50Q2hhbmdlZCA9ICRVbmlmb3JtaXR5eyRFbGVtZW50Q2hhbmdlZH07CiAgICAgICAgfQoKICAgICAgICAjIHVzZSB0aWNrZXQgc2VydmljZSB2YWx1ZSB3aGVuIGl0IGNhbid0IGJlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgISRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1NlcnZpY2VJRH0gPSAkVGlja2V0e1NlcnZpY2VJRH0gfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIHVzZSB0aGUgRmllbGRJRHMsIHdoaWNoIGFyZSBmb3VuZCBpbiBBZ2VudFRpY2tldFBob25lL0VtYWlsLCBhbmQgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlOyBpZiBuZWVkZWQsIGZpbGwgd2l0aCB0aWNrZXQgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte1F1ZXVlSUR9ICAgICA9ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSB8fCAkVGlja2V0e1F1ZXVlSUR9OwogICAgICAgICRHZXRQYXJhbXtEZXN0fSAgICAgICAgPSAkR2V0UGFyYW17UXVldWVJRH07CiAgICAgICAgJEdldFBhcmFte05leHRTdGF0ZUlEfSA9ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSAgICB8fCAkVGlja2V0e1N0YXRlSUR9OwogICAgICAgICRHZXRQYXJhbXtOZXdVc2VySUR9ICAgPSAkR2V0UGFyYW17TmV3T3duZXJJRH0gICAgfHwgJyc7CiAgICAgICAgJEdldFBhcmFte1ByaW9yaXR5SUR9ICA9ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSB8fCAnJzsKCiAgICAgICAgIyBnZXQgbGlzdCB0eXBlCiAgICAgICAgbXkgJFRyZWVWaWV3ICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnID8gMSA6IDA7CiAgICAgICAgbXkgJEF1dG9zZWxlY3QgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwogICAgICAgIG15ICRBQ0xQcmVzZWxlY3Rpb247CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEFDTDo6QUNMUHJlc2VsZWN0aW9uJykgKSB7CgogICAgICAgICAgICAjIGdldCBjYWNoZWQgcHJlc2VsZWN0aW9uIHJ1bGVzCiAgICAgICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgICAgICBUeXBlID0+ICdUaWNrZXRBQ0wnLAogICAgICAgICAgICAgICAgS2V5ICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbiApIHsKICAgICAgICAgICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb252ZXJnZW5jZSA9ICgKICAgICAgICAgICAgU3RkRmllbGRzID0+IDAsCiAgICAgICAgICAgIEZpZWxkcyAgICA9PiAwLAogICAgICAgICk7CiAgICAgICAgbXkgJUNoYW5nZWRFbGVtZW50cyAgICAgICAgPSAkRWxlbWVudENoYW5nZWQgPyAoICRFbGVtZW50Q2hhbmdlZCA9PiAxICkgOiAoKTsKICAgICAgICBteSAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydCA9ICVDaGFuZ2VkRWxlbWVudHM7CiAgICAgICAgbXkgJUNoYW5nZWRTdGRGaWVsZHMgICAgICAgPSAkRWxlbWVudENoYW5nZWQgJiYgJEVsZW1lbnRDaGFuZ2VkICF+IC9eRHluYW1pY0ZpZWxkXy8gPyAlQ2hhbmdlZEVsZW1lbnRzIDogKCk7CgogICAgICAgIG15ICRMb29wUHJvdGVjdGlvbiA9IDEwMDsKICAgICAgICBteSAlU3RkRmllbGRWYWx1ZXM7CiAgICAgICAgbXkgJUR5bkZpZWxkU3RhdGVzID0gKAogICAgICAgICAgICBWaXNpYmlsaXR5ID0+IHt9LAogICAgICAgICAgICBGaWVsZHMgICAgID0+IHt9LAogICAgICAgICAgICBTZXRzICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgIHVudGlsICggJENvbnZlcmdlbmNle0ZpZWxkc30gKSB7CgogICAgICAgICAgICAjIGRldGVybWluZSBzdGFuZGFyZCBmaWVsZCBpbnB1dAogICAgICAgICAgICB1bnRpbCAoICRDb252ZXJnZW5jZXtTdGRGaWVsZHN9ICkgewoKICAgICAgICAgICAgICAgIG15ICVOZXdDaGFuZ2VkRWxlbWVudHM7CgogICAgICAgICAgICAgICAgIyB3aGljaCBzdGFuZGFyZCBmaWVsZHMgdG8gY2hlY2sgLSBGaWVsZElEID0+IEdldFBhcmFtVmFsdWUgKG5lY2Vzc2FyeSBmb3IgRGVzdCkKICAgICAgICAgICAgICAgIG15ICVDaGVjayA9ICgKICAgICAgICAgICAgICAgICAgICBEZXN0ICAgICAgICAgICAgID0+ICdRdWV1ZUlEJywKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgICAgICAgID0+ICdOZXdVc2VySUQnLAogICAgICAgICAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gJ05ld1Jlc3BvbnNpYmxlSUQnLAogICAgICAgICAgICAgICAgICAgIE5leHRTdGF0ZUlEICAgICAgPT4gJ05leHRTdGF0ZUlEJywKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eUlEICAgICAgID0+ICdQcmlvcml0eUlEJywKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICAgICAgICAgIFNMQUlEICAgICAgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgICAgICAgICBUeXBlSUQgICAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkQUNMUHJlc2VsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZElEICggc29ydCBrZXlzICVDaGVjayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbi0+e0ZpZWxkc317JEZpZWxkSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEZpZWxkSUQgbm90IGRlZmluZWQgaW4gVGlja2V0QUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRBdXRvc2VsZWN0ICYmICRBdXRvc2VsZWN0LT57JEZpZWxkSUR9ICYmICRDaGFuZ2VkRWxlbWVudHN7JEZpZWxkSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJUNoYW5nZWRFbGVtZW50cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uLT57UnVsZXN9e1RpY2tldH17JEVsZW1lbnR9eyRGaWVsZElEfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZWxmLT57SW50ZXJuYWxEZXBlbmRhbmN5fXskRWxlbWVudH17JEZpZWxkSUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uLT57RmllbGRzfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBUaWNrZXRBQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIHVuYWZmZWN0ZWQgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ2hlY2t7JEZpZWxkSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZvciBlYWNoIHN0YW5kYXJkIGZpZWxkIHdoaWNoIGhhcyB0byBiZSBjaGVja2VkLCBydW4gdGhlIGRlZmluZWQgbWV0aG9kCiAgICAgICAgICAgICAgICBNRVRIT0Q6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggJFNlbGYtPntGaWVsZE1ldGhvZHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FVEhPRCBpZiAhJENoZWNreyAkRmllbGQtPntGaWVsZElEfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIHVzZSAkQ2hlY2t7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gZm9yIERlc3Q9PlF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAkU3RkRmllbGRWYWx1ZXN7ICRDaGVja3sgJEZpZWxkLT57RmllbGRJRH0gfSB9ID0gJEZpZWxkLT57TWV0aG9kfS0+KAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJEN1c3RvbWVyVXNlciB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJEdldFBhcmFte05leHRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgc3R1ZmYgZm9yIFF1ZXVlSUQvRGVzdDogaW5jbHVkZWQgZm9yIG1vcmUgc2ltaWxhcml0eSB0byBBZ2VudFRpY2tldFBob25lIGV0Yy47CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmllbGQtPntGaWVsZElEfSBlcSAnRGVzdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdGRGaWVsZFZhbHVlc3tEZXN0fSA9ICRTdGRGaWVsZFZhbHVlc3tRdWV1ZUlEfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY3VycmVudCBzZWxlY3Rpb24gb2YgUXVldWVJRCAoRGVzdCB3aWxsIGJlIGRvbmUgdG9nZXRoZXIgd2l0aCB0aGUgb3RoZXIgZmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtRdWV1ZUlEfSAmJiAhJFN0ZEZpZWxkVmFsdWVze1F1ZXVlSUR9eyAkR2V0UGFyYW17UXVldWVJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtRdWV1ZUlEfSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGF1dG9zZWxlY3QKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte1F1ZXVlSUR9ICYmICRBdXRvc2VsZWN0ICYmICRBdXRvc2VsZWN0LT57RGVzdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17UXVldWVJRH0gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFN0ZEZpZWxkVmFsdWVze1F1ZXVlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgc2VsZWN0ZWQgdmFsdWUgaXMgc3RpbGwgdmFsaWQgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkU3RkRmllbGRWYWx1ZXN7ICRGaWVsZC0+e0ZpZWxkSUR9IH17ICRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbm90IGVtcHR5IHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gICAgICAgICAgID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdDaGFuZ2VkRWxlbWVudHN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAkQ2hhbmdlZFN0ZEZpZWxkc3sgJEZpZWxkLT57RmllbGRJRH0gfSAgID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYXV0b3NlbGVjdAogICAgICAgICAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSAmJiAkQXV0b3NlbGVjdCAmJiAkQXV0b3NlbGVjdC0+eyAkRmllbGQtPntGaWVsZElEfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkU3RkRmllbGRWYWx1ZXN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld0NoYW5nZWRFbGVtZW50c3sgJEZpZWxkLT57RmllbGRJRH0gfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hhbmdlZFN0ZEZpZWxkc3sgJEZpZWxkLT57RmllbGRJRH0gfSAgID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICElTmV3Q2hhbmdlZEVsZW1lbnRzICkgewogICAgICAgICAgICAgICAgICAgICRDb252ZXJnZW5jZXtTdGRGaWVsZHN9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHMgPSAlTmV3Q2hhbmdlZEVsZW1lbnRzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0ID0gKAogICAgICAgICAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0LAogICAgICAgICAgICAgICAgICAgICVOZXdDaGFuZ2VkRWxlbWVudHMsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJExvb3BQcm90ZWN0aW9uLS0gPCAxICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUmFuIGludG8gdW5yZXNvbHZhYmxlIGxvb3AhIiwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzICAgICAgICA9ICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0OwogICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydCA9ICgpOwoKICAgICAgICAgICAgIyBjaGVjayBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBteSAlQ3VyRmllbGRTdGF0ZXM7CiAgICAgICAgICAgIGlmICglQ2hhbmdlZEVsZW1lbnRzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdmFsdWVzIGFuZCB2aXNpYmlsaXR5IG9mIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAlQ3VyRmllbGRTdGF0ZXMgPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkdldEZpZWxkU3RhdGVzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldE9iamVjdCAgICAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgICAgID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRFbGVtZW50cyAgICAgICAgICAgPT4gXCVDaGFuZ2VkRWxlbWVudHMsICAgICAgICAgICAgIyBvcHRpb25hbCB0byByZWR1Y2UgQUNMIGV2YWx1YXRpb24KICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciB8fCAnJywKICAgICAgICAgICAgICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgICAgICAgICBBQ0xQcmVzZWxlY3Rpb24gICAgICAgICAgID0+ICRBQ0xQcmVzZWxlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNvbWJpbmUgRmllbGRTdGF0ZXMKICAgICAgICAgICAgICAgICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze0ZpZWxkc30gfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkRHluRmllbGRTdGF0ZXN7VmlzaWJpbGl0eX0gPSB7CiAgICAgICAgICAgICAgICAgICAgJXsgJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJER5bkZpZWxkU3RhdGVze1NldHN9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tTZXRzfSB9LAogICAgICAgICAgICAgICAgICAgICV7ICRDdXJGaWVsZFN0YXRlc3tTZXRzfSB9LAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIG5ldyB2YWx1ZXMKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze05ld1ZhbHVlc30gfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgY2hlY2sgc3RhbmRhcmQgZmllbGRzIGFnYWluCiAgICAgICAgICAgIGlmICggJUN1ckZpZWxkU3RhdGVzICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ3VyRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSApICkgewogICAgICAgICAgICAgICAgJENvbnZlcmdlbmNle1N0ZEZpZWxkc30gPSAwOwogICAgICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50cyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRDdXJGaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ29udmVyZ2VuY2V7RmllbGRzfSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHRoZSBBSkFYIHJldHVybiBmb3IgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgQER5bmFtaWNGaWVsZEFKQVg7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAkRHluRmllbGRTdGF0ZXN7RmllbGRzfS0+JSogKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkU2VsZi0+e0R5bmFtaWNGaWVsZH17JE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRpICggMCAuLiAkI3sgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgPyAoICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In1bJGldIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gIl8kaSIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCB0ZW1wbGF0ZSB2YWx1ZSBmb3Iga2VlcGluZyB0ZW1wbGF0ZXMgaW4gbGluZSB3aXRoIEFDTHMKICAgICAgICAgICAgICAgIGlmICggISREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICJfVGVtcGxhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17Tm90QUNMUmVkdWNpYmxlfQogICAgICAgICAgICAgICAgPyAoICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gLy8gJycgKQogICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0sCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRTZXRGaWVsZCAoIHZhbHVlcyAkRHluRmllbGRTdGF0ZXN7U2V0c30tPiUqICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNldEZpZWxkLT57RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgICAgICMgdGhlIGZyb250ZW5kIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkIGluY2x1ZGluZyBpdHMgaW5kZXggb3IgdGhlICdfVGVtcGxhdGUnIHN1ZmZpeAogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRnJvbnRlbmROYW1lICgga2V5cyAkU2V0RmllbGQtPntGaWVsZFN0YXRlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gJiYgcmVmICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiXyRpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfVskaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGFkZCB0ZW1wbGF0ZSB2YWx1ZSBmb3Iga2VlcGluZyB0ZW1wbGF0ZXMgaW4gbGluZSB3aXRoIEFDTHMKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17Tm90QUNMUmVkdWNpYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiX1RlbXBsYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICA/ICggJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRnJvbnRlbmROYW1lLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdSZXN0cmljdGlvbnNfVmlzaWJpbGl0eScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgQUpBWCByZXR1cm4gZm9yIHRoZSBzdGFuZGFyZCBmaWVsZHMKICAgICAgICBteSBAU3RkRmllbGRBSkFYOwogICAgICAgIG15ICVBdHRyaWJ1dGVzID0gKAogICAgICAgICAgICBEZXN0ID0+IHsKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBOZXdVc2VySUQgPT4gewogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gewogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5leHRTdGF0ZUlEID0+IHsKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gewogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZUlEID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmVlVmlldywKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTTEFJRCA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3RhbmRhcmRUZW1wbGF0ZUlEID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUeXBlSUQgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgICAgIGRlbGV0ZSAkU3RkRmllbGRWYWx1ZXN7UXVldWVJRH07CiAgICAgICAgbXkgJURpdmVyc2l0eSA9IHJldmVyc2UgJVVuaWZvcm1pdHk7CiAgICAgICAgZm9yIG15ICRGaWVsZCAoIHNvcnQga2V5cyAlU3RkRmllbGRWYWx1ZXMgKSB7CiAgICAgICAgICAgIHB1c2ggQFN0ZEZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRGl2ZXJzaXR5eyRGaWVsZH0gfHwgJEZpZWxkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkU3RkRmllbGRWYWx1ZXN7JEZpZWxkfSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFteyRGaWVsZH0sCiAgICAgICAgICAgICAgICAleyAkQXR0cmlidXRlc3skRmllbGR9IH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSBAVGVtcGxhdGVBSkFYOwoKICAgICAgICAjIHVwZGF0ZSB0aWNrZXQgYm9keSBhbmQgYXR0YWNobWVudHMgaWYgbmVlZGVkLgogICAgICAgIGlmICggJENoYW5nZWRTdGRGaWVsZHN7U3RhbmRhcmRUZW1wbGF0ZUlEfSApIHsKICAgICAgICAgICAgbXkgQFRpY2tldEF0dGFjaG1lbnRzOwogICAgICAgICAgICBteSAkVGVtcGxhdGVUZXh0OwoKICAgICAgICAgICAgIyByZW1vdmUgYWxsIGF0dGFjaG1lbnRzIGZyb20gdGhlIFVwbG9hZCBjYWNoZQogICAgICAgICAgICBteSAkUmVtb3ZlU3VjY2VzcyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFJlbW92ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGb3JtIGF0dGFjaG1lbnRzIGNvdWxkIG5vdCBiZSBkZWxldGVkISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB0aGUgdGVtcGxhdGUgdGV4dCBhbmQgc2V0IG5ldyBhdHRhY2htZW50cyBpZiBhIHRlbXBsYXRlIGlzIHNlbGVjdGVkCiAgICAgICAgICAgIGlmICggSXNQb3NpdGl2ZUludGVnZXIoICRHZXRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVHZW5lcmF0b3IgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKTsKCiAgICAgICAgICAgICAgICAjIHNldCB0ZW1wbGF0ZSB0ZXh0LCByZXBsYWNlIHNtYXJ0IHRhZ3MgKGxpbWl0ZWQgYXMgdGlja2V0IGlzIG5vdCBjcmVhdGVkKQogICAgICAgICAgICAgICAgJFRlbXBsYXRlVGV4dCA9ICRUZW1wbGF0ZUdlbmVyYXRvci0+VGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkR2V0UGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIFJlcGx5VG9BcnRpY2xlIGlzIGdpdmVuLCBnZXQgdGhpcyBhcnRpY2xlIHRvIGdlbmVyYXRlCiAgICAgICAgICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBhcnRpY2xlIHRvIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgbXkgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICA9PiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWRDYWNoZU9iamVjdCA9PiAkVXBsb2FkQ2FjaGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAkQm9keSA9ICRTZWxmLT5fR2V0UXVvdGVkUmVwbHlCb2R5KAogICAgICAgICAgICAgICAgICAgICAgICAleyAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGVtcGxhdGVUZXh0ID0gJFRlbXBsYXRlVGV4dCAuICc8YnI+PGJyPicgLiAkQm9keTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wbGF0ZVRleHQgPSAkVGVtcGxhdGVUZXh0IC4gIlxuXG4iIC4gJEJvZHk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFN0ZEF0dGFjaG1lbnRPYmplY3QKICAgICAgICAgICAgICAgIG15ICRTdGRBdHRhY2htZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0ZEF0dGFjaG1lbnQnKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBzdGQuIGF0dGFjaG1lbnRzIHRvIHRpY2tldAogICAgICAgICAgICAgICAgbXkgJUFsbFN0ZEF0dGFjaG1lbnRzID0gJFN0ZEF0dGFjaG1lbnRPYmplY3QtPlN0ZEF0dGFjaG1lbnRTdGFuZGFyZFRlbXBsYXRlTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZFRlbXBsYXRlSUQgPT4gJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yICggc29ydCBrZXlzICVBbGxTdGRBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudHNEYXRhID0gJFN0ZEF0dGFjaG1lbnRPYmplY3QtPlN0ZEF0dGFjaG1lbnRHZXQoIElEID0+ICRfICk7CiAgICAgICAgICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgJUF0dGFjaG1lbnRzRGF0YSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2VuZCBhIGxpc3Qgb2YgYXR0YWNobWVudHMgaW4gdGhlIHVwbG9hZCBjYWNoZSBiYWNrIHRvIHRoZSBjbGllbnRzaWRlIEphdmFTY3JpcHQKICAgICAgICAgICAgICAgICMgd2hpY2ggcmVuZGVycyB0aGVuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSB1cGxvYWRlZCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgQFRpY2tldEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAVGlja2V0QXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSA9ICRMYXlvdXRPYmplY3QtPkh1bWFuUmVhZGFibGVEYXRhU2l6ZSgKICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSA9PiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBAVGVtcGxhdGVBSkFYID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1VzZVRlbXBsYXRlTm90ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAnMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRUZW1wbGF0ZVRleHQgfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICdUaWNrZXRBdHRhY2htZW50cycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXEBUaWNrZXRBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICBLZWVwRGF0YSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICBAU3RkRmllbGRBSkFYLAogICAgICAgICAgICAgICAgQER5bmFtaWNGaWVsZEFKQVgsCiAgICAgICAgICAgICAgICBAVGVtcGxhdGVBSkFYLAogICAgICAgICAgICBdLAogICAgICAgICk7CgogICAgICAgICMgY2FuJ3QgdXNlIEpTT05SZXBseSBoZXJlLCBhcyB3ZSBhbHJlYWR5IGhhdmUgSlNPTgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICRCb2R5ID0gJyc7CgogICAgICAgICMgaWYgUmVwbHlUb0FydGljbGUgaXMgZ2l2ZW4sIGdldCB0aGlzIGFydGljbGUgdG8gZ2VuZXJhdGUKICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IGFydGljbGUgdG8gcXVvdGUKICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgVXBsb2FkQ2FjaGVPYmplY3QgPT4gJFVwbG9hZENhY2hlT2JqZWN0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPSAkU2VsZi0+X0dldFF1b3RlZFJlcGx5Qm9keSgKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgaWYgYSBib2R5IGNvbnRlbnQgd2FzIHByZSBkZWZpbmVkLCBhZGQgdGhpcyBiZWZvcmUgdGhlIHF1b3RlZCBhcnRpY2xlIGNvbnRlbnQKICAgICAgICBpZiAoICRHZXRQYXJhbXtCb2R5fSApIHsKCiAgICAgICAgICAgICMgbWFrZSBzdXJlIGJvZHkgaXMgcmljaCB0ZXh0CiAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gJiYgISRTZWxmLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMlJpY2hUZXh0KAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkQm9keSA9ICRHZXRQYXJhbXtCb2R5fSAuICRCb2R5OwogICAgICAgIH0KCiAgICAgICAgIyBmaWxsdXAgY29uZmlndXJlZCBkZWZhdWx0IHZhcnMKICAgICAgICBpZiAoICRCb2R5IGVxICcnICYmICRDb25maWctPntCb2R5fSApIHsKICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkQ29uZmlnLT57Qm9keX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSBib2R5IGlzIHJpY2ggdGV4dAogICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJSaWNoVGV4dCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEJvZHksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBCb2R5IHZhciB0byBjYWxjdWxhdGVkIGNvbnRlbnQKICAgICAgICAkR2V0UGFyYW17Qm9keX0gPSAkQm9keTsKCiAgICAgICAgbXkgJVNhZmV0eUNoZWNrUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCgogICAgICAgICAgICAjIFN0cmlwIG91dCBleHRlcm5hbCBjb250ZW50IGlmIEJsb2NrTG9hZGluZ1JlbW90ZUNvbnRlbnQgaXMgZW5hYmxlZC4KICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QmxvY2tMb2FkaW5nUmVtb3RlQ29udGVudCcpLAoKICAgICAgICAgICAgIyBEaXNhbGxvdyBwb3RlbnRpYWxseSB1bnNhZmUgY29udGVudC4KICAgICAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgICAgICBOb0VtYmVkICAgICAgPT4gMSwKICAgICAgICAgICAgTm9TVkcgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJFNhZmV0eUNoZWNrUmVzdWx0e1N0cmluZ307CgogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CiAgICAgICAgICAgIG15ICRUaWNrZXRTdWJqZWN0UmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U3ViamVjdFJlJykgfHwgJ1JlJzsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJFRpY2tldFN1YmplY3RSZSAuICc6ICcgLiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH17U3ViamVjdH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggIWRlZmluZWQgJEdldFBhcmFte1N1YmplY3R9ICYmICRDb25maWctPntTdWJqZWN0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJENvbmZpZy0+e1N1YmplY3R9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1c2UgdGlja2V0IHZhbHVlcwogICAgICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1F1ZXVlSUR9ID0gJFRpY2tldHtRdWV1ZUlEfSAvLyAnJzsKICAgICAgICAgICAgJEdldFBhcmFte0Rlc3R9ICAgID0gJFRpY2tldHtRdWV1ZUlEfSAvLyAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29uZmlnLT57U2VydmljZX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtTTEFJRH0gICAgID0gJFRpY2tldHtTTEFJRH0gICAgIC8vICcnOwogICAgICAgICAgICAkR2V0UGFyYW17U2VydmljZUlEfSA9ICRUaWNrZXR7U2VydmljZUlEfSAvLyAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtUeXBlSUR9ID0gJFRpY2tldHtUeXBlSUR9IC8vICcnOwogICAgICAgIH0KICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtOZXh0U3RhdGVJRH0gPSAkVGlja2V0e1N0YXRlSUR9IC8vICcnOwogICAgICAgIH0KICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtQcmlvcml0eUlEfSA9ICRUaWNrZXR7UHJpb3JpdHlJRH0gLy8gJyc7CiAgICAgICAgfQogICAgICAgIG15ICRDdXN0b21lclVzZXIgPSAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSAvLyAnJzsKCiAgICAgICAgIyBHZXQgdmFsdWVzIGZvciBUaWNrZXQgZmllbGRzIGFuZCB1c2UgZGVmYXVsdCB2YWx1ZSBmb3IgQXJ0aWNsZSBmaWVsZHMsIGlmIGdpdmVuIChhbGwgc2NyZWVucyBiYXNlZCBvbgogICAgICAgICMgQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gZ2VuZXJhdGUgYSBuZXcgYXJ0aWNsZSwgdGhlbiBhcnRpY2xlIGZpZWxkcyB3aWxsIGJlIGFsd2F5cyBkZWZhdWx0IHZhbHVlIG9yCiAgICAgICAgIyBlbXB0eSBhdCB0aGUgYmVnaW5uaW5nKS4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFNlbGYtPntEeW5hbWljRmllbGR9LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBUaGlzIG92ZXJ3cml0ZXMgdGhlIHZhbHVlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiB0YWtlbiBmcm9tIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlcmUgc2hvdWxkbid0IGJlIGFueSB2YWx1ZXMgZnJvbSB0aGUgd2ViIHJlcXVlc3QsCiAgICAgICAgICAgICMgYmVjYXVzZSBzdWJtaXRzLCBzdWNjZXNzZnVsIGFuZCB1bnN1Y2Nlc3NmdWwgaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeSBhYm92ZS4KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgKSB7CgogICAgICAgICAgICAgICAgIyBWYWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIGZyb20gVGlja2V0LgogICAgICAgICAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ0FydGljbGUnICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgaWYgd2UgYXJlIGluIGVkaXQgbW9kZSB0YWtlIHRoZSBkYiBkYXRhIG9mIHRoZSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJEFydGljbGVEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57RGVmYXVsdFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEF1dG9zZWxlY3QgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwoKICAgICAgICAjIGdhdGhlciBmaWVsZHMgd2hpY2ggYXJlIHN1cHBvc2VkIHRvIGJlIGhpZGRlbiB3aGVuIGF1dG9zZWxlY3RlZAogICAgICAgIG15ICRIaWRlQXV0b3NlbGVjdGVkSlNPTjsKICAgICAgICBpZiAoJEF1dG9zZWxlY3QpIHsKICAgICAgICAgICAgbXkgQEhpZGVBdXRvc2VsZWN0ZWQgPSBncmVwIHsgIXJlZiggJEF1dG9zZWxlY3QtPnskX30gKSAmJiAkQXV0b3NlbGVjdC0+eyRffSA9PSAyIH0ga2V5cyAleyRBdXRvc2VsZWN0fTsKICAgICAgICAgICAgaWYgKCAkQXV0b3NlbGVjdC0+e0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBIaWRlQXV0b3NlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgIG1hcCB7ICJEeW5hbWljRmllbGRfIiAuICRfIH0KICAgICAgICAgICAgICAgICAgICAoIGdyZXAgeyAkQXV0b3NlbGVjdC0+e0R5bmFtaWNGaWVsZH17JF99ID09IDIgfSBrZXlzICV7ICRBdXRvc2VsZWN0LT57RHluYW1pY0ZpZWxkfSB9ICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChASGlkZUF1dG9zZWxlY3RlZCkgewogICAgICAgICAgICAgICAgbXkgJEpTT05PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgICAgICAgICAgICAgJEhpZGVBdXRvc2VsZWN0ZWRKU09OID0gJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFxASGlkZUF1dG9zZWxlY3RlZCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRBQ0xQcmVzZWxlY3Rpb247CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEFDTDo6QUNMUHJlc2VsZWN0aW9uJykgKSB7CgogICAgICAgICAgICAjIGdldCBjYWNoZWQgcHJlc2VsZWN0aW9uIHJ1bGVzCiAgICAgICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgICAgICBUeXBlID0+ICdUaWNrZXRBQ0wnLAogICAgICAgICAgICAgICAgS2V5ICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbiApIHsKICAgICAgICAgICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb252ZXJnZW5jZSA9ICgKICAgICAgICAgICAgU3RkRmllbGRzID0+IDAsCiAgICAgICAgICAgIEZpZWxkcyAgICA9PiAwLAogICAgICAgICk7CiAgICAgICAgbXkgJUNoYW5nZWRFbGVtZW50czsKICAgICAgICBteSAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydDsKICAgICAgICBteSAlQ2hhbmdlZFN0ZEZpZWxkczsKCiAgICAgICAgbXkgJExvb3BQcm90ZWN0aW9uID0gMTAwOwogICAgICAgIG15ICVTdGRGaWVsZFZhbHVlczsKICAgICAgICBteSAlRHluRmllbGRTdGF0ZXMgPSAoCiAgICAgICAgICAgIFZpc2liaWxpdHkgPT4ge30sCiAgICAgICAgICAgIEZpZWxkcyAgICAgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEluaXRpYWxSdW4gPSAxOwoKICAgICAgICB1bnRpbCAoICRDb252ZXJnZW5jZXtGaWVsZHN9ICkgewoKICAgICAgICAgICAgIyBkZXRlcm1pbmUgc3RhbmRhcmQgZmllbGQgaW5wdXQKICAgICAgICAgICAgdW50aWwgKCAkQ29udmVyZ2VuY2V7U3RkRmllbGRzfSApIHsKCiAgICAgICAgICAgICAgICBteSAlTmV3Q2hhbmdlZEVsZW1lbnRzOwoKICAgICAgICAgICAgICAgICMgd2hpY2ggc3RhbmRhcmQgZmllbGRzIHRvIGNoZWNrIC0gRmllbGRJRCA9PiBHZXRQYXJhbVZhbHVlIChuZWNlc3NhcnkgZm9yIERlc3QpCiAgICAgICAgICAgICAgICBteSAlQ2hlY2sgPSAoCiAgICAgICAgICAgICAgICAgICAgRGVzdCAgICAgICAgICAgICA9PiAnUXVldWVJRCcsCiAgICAgICAgICAgICAgICAgICAgTmV3VXNlcklEICAgICAgICA9PiAnTmV3VXNlcklEJywKICAgICAgICAgICAgICAgICAgICBOZXdSZXNwb25zaWJsZUlEID0+ICdOZXdSZXNwb25zaWJsZUlEJywKICAgICAgICAgICAgICAgICAgICBOZXh0U3RhdGVJRCAgICAgID0+ICdOZXh0U3RhdGVJRCcsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHlJRCAgICAgICA9PiAnUHJpb3JpdHlJRCcsCiAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgICAgICAgICBTTEFJRCAgICAgICAgICAgID0+ICdTTEFJRCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZUlEICAgICAgICAgICA9PiAnVHlwZUlEJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICRBQ0xQcmVzZWxlY3Rpb24gJiYgISRJbml0aWFsUnVuICkgewogICAgICAgICAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRmllbGRJRCAoIHNvcnQga2V5cyAlQ2hlY2sgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRBQ0xQcmVzZWxlY3Rpb24tPntGaWVsZHN9eyRGaWVsZElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRGaWVsZElEIG5vdCBkZWZpbmVkIGluIFRpY2tldEFDTCBwcmVzZWxlY3Rpb24gcnVsZXMhIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXV0b3NlbGVjdCAmJiAkQXV0b3NlbGVjdC0+eyRGaWVsZElEfSAmJiAkQ2hhbmdlZEVsZW1lbnRzeyRGaWVsZElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICVDaGFuZ2VkRWxlbWVudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEFDTFByZXNlbGVjdGlvbi0+e1J1bGVzfXtUaWNrZXR9eyRFbGVtZW50fXskRmllbGRJRH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2VsZi0+e0ludGVybmFsRGVwZW5kYW5jeX17JEVsZW1lbnR9eyRGaWVsZElEfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbi0+e0ZpZWxkc317JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEVsZW1lbnQgbm90IGRlZmluZWQgaW4gVGlja2V0QUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB1bmFmZmVjdGVkIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJENoZWNreyRGaWVsZElEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmb3IgZWFjaCBzdGFuZGFyZCBmaWVsZCB3aGljaCBoYXMgdG8gYmUgY2hlY2tlZCwgcnVuIHRoZSBkZWZpbmVkIG1ldGhvZAogICAgICAgICAgICAgICAgTUVUSE9EOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoIEB7ICRTZWxmLT57RmllbGRNZXRob2RzfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgTUVUSE9EIHVubGVzcyAkQ2hlY2t7ICRGaWVsZC0+e0ZpZWxkSUR9IH07CgogICAgICAgICAgICAgICAgICAgICMgdXNlICRDaGVja3sgJEZpZWxkLT57RmllbGRJRH0gfSBmb3IgRGVzdD0+UXVldWVJRAogICAgICAgICAgICAgICAgICAgICRTdGRGaWVsZFZhbHVlc3sgJENoZWNreyAkRmllbGQtPntGaWVsZElEfSB9IH0gPSAkRmllbGQtPntNZXRob2R9LT4oCiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgICA9PiAkR2V0UGFyYW17TmV4dFN0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCBzdHVmZiBmb3IgUXVldWVJRC9EZXN0OiBpbmNsdWRlZCBmb3IgbW9yZSBzaW1pbGFyaXR5IHRvIEFnZW50VGlja2V0UGhvbmUgZXRjLjsKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWVsZC0+e0ZpZWxkSUR9IGVxICdEZXN0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0ZEZpZWxkVmFsdWVze0Rlc3R9ID0gJFN0ZEZpZWxkVmFsdWVze1F1ZXVlSUR9OwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBjdXJyZW50IHNlbGVjdGlvbiBvZiBRdWV1ZUlEIChEZXN0IHdpbGwgYmUgZG9uZSB0b2dldGhlciB3aXRoIHRoZSBvdGhlciBmaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFte1F1ZXVlSUR9ICYmICEkU3RkRmllbGRWYWx1ZXN7UXVldWVJRH17ICRHZXRQYXJhbXtRdWV1ZUlEfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte1F1ZXVlSUR9ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgYXV0b3NlbGVjdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17UXVldWVJRH0gJiYgJEF1dG9zZWxlY3QgJiYgJEF1dG9zZWxlY3QtPntEZXN0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtRdWV1ZUlEfSA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+QXV0b3NlbGVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkU3RkRmllbGRWYWx1ZXN7UXVldWVJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgY3VycmVudCBzZWxlY3RlZCB2YWx1ZSBpcyBzdGlsbCB2YWxpZCBmb3IgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRTdGRGaWVsZFZhbHVlc3sgJEZpZWxkLT57RmllbGRJRH0gfXsgJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBub3QgZW1wdHkgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSAgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld0NoYW5nZWRFbGVtZW50c3sgJEZpZWxkLT57RmllbGRJRH0gfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICRDaGFuZ2VkU3RkRmllbGRzeyAkRmllbGQtPntGaWVsZElEfSB9ICAgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBhdXRvc2VsZWN0CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9ICYmICRBdXRvc2VsZWN0ICYmICRBdXRvc2VsZWN0LT57ICRGaWVsZC0+e0ZpZWxkSUR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+QXV0b3NlbGVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+ICRTdGRGaWVsZFZhbHVlc3sgJEZpZWxkLT57RmllbGRJRH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3Q2hhbmdlZEVsZW1lbnRzeyAkRmllbGQtPntGaWVsZElEfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDaGFuZ2VkU3RkRmllbGRzeyAkRmllbGQtPntGaWVsZElEfSB9ICAgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggISVOZXdDaGFuZ2VkRWxlbWVudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnZlcmdlbmNle1N0ZEZpZWxkc30gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50cyA9ICVOZXdDaGFuZ2VkRWxlbWVudHM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50c0RGU3RhcnQgPSAoCiAgICAgICAgICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50c0RGU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgJU5ld0NoYW5nZWRFbGVtZW50cywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkTG9vcFByb3RlY3Rpb24tLSA8IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSYW4gaW50byB1bnJlc29sdmFibGUgbG9vcCEiLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHMgICAgICAgID0gJUNoYW5nZWRFbGVtZW50c0RGU3RhcnQ7CiAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0ID0gKCk7CgogICAgICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIG15ICVDdXJGaWVsZFN0YXRlczsKICAgICAgICAgICAgaWYgKCAlQ2hhbmdlZEVsZW1lbnRzIHx8ICRJbml0aWFsUnVuICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHZhbHVlcyBhbmQgdmlzaWJpbGl0eSBvZiBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICAgICAgJUN1ckZpZWxkU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICAgICAgICAgICAgICBUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0+ICRUaWNrZXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgICAgICA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IFwlQ2hhbmdlZEVsZW1lbnRzLCAgICAgICAgICAgICMgb3B0aW9uYWwgdG8gcmVkdWNlIEFDTCBldmFsdWF0aW9uCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgICAgICAgICAgICAgID0+ICRDdXN0b21lclVzZXIgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIEF1dG9zZWxlY3QgICAgICAgICAgICAgICAgPT4gJEF1dG9zZWxlY3QsCiAgICAgICAgICAgICAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAkQUNMUHJlc2VsZWN0aW9uLAogICAgICAgICAgICAgICAgICAgIExvb3BQcm90ZWN0aW9uICAgICAgICAgICAgPT4gXCRMb29wUHJvdGVjdGlvbiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjb21iaW5lIEZpZWxkU3RhdGVzCiAgICAgICAgICAgICAgICAkRHluRmllbGRTdGF0ZXN7RmllbGRzfSA9IHsKICAgICAgICAgICAgICAgICAgICAleyAkRHluRmllbGRTdGF0ZXN7RmllbGRzfSB9LAogICAgICAgICAgICAgICAgICAgICV7ICRDdXJGaWVsZFN0YXRlc3tGaWVsZHN9IH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSB9LAogICAgICAgICAgICAgICAgICAgICV7ICRDdXJGaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSB9LAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIG5ldyB2YWx1ZXMKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze05ld1ZhbHVlc30gfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgY2hlY2sgc3RhbmRhcmQgZmllbGRzIGFnYWluCiAgICAgICAgICAgIGlmICggJUN1ckZpZWxkU3RhdGVzICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ3VyRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSApICkgewogICAgICAgICAgICAgICAgJENvbnZlcmdlbmNle1N0ZEZpZWxkc30gPSAwOwogICAgICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50cyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRDdXJGaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ29udmVyZ2VuY2V7RmllbGRzfSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRJbml0aWFsUnVuID0gMDsKICAgICAgICB9CgogICAgICAgIG15ICVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlcyA9IG1hcCB7CiAgICAgICAgICAgICdEeW5hbWljRmllbGRfJyAuICRfID0+IGRlZmluZWQgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JF99CiAgICAgICAgICAgICAgICA/ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyRffXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgIDogdW5kZWYKICAgICAgICB9ICgga2V5cyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqICk7CgogICAgICAgICMgcHJpbnQgZm9ybSAuLi4KICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICBOZXdRdWV1ZUlEICAgICAgID0+ICRHZXRQYXJhbXtRdWV1ZUlEfSwKICAgICAgICAgICAgICAgIE5ld093bmVySUQgICAgICAgPT4gJEdldFBhcmFte05ld1VzZXJJRH0sCiAgICAgICAgICAgICAgICBOZXdTdGF0ZUlEICAgICAgID0+ICRHZXRQYXJhbXtOZXh0U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBOZXdQcmlvcml0eUlEICAgID0+ICRHZXRQYXJhbXtQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFNMQUlEICAgICAgICAgICAgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgICAgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICBUeXBlSUQgICAgICAgICAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgSGlkZUF1dG9zZWxlY3RlZCA9PiAkSGlkZUF1dG9zZWxlY3RlZEpTT04sCiAgICAgICAgICAgICAgICBWaXNpYmlsaXR5ICAgICAgID0+ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSwKICAgICAgICAgICAgICAgIERGUG9zc2libGVWYWx1ZXMgPT4gXCVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgPT4gXEBBcnRpY2xlQXR0YWNobWVudHMKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICAgICApOwogICAgfQp9CgpzdWIgX01hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgPyAxIDogMDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyByZW5kZXIgdGlja2V0IHR5cGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICRUaWNrZXRUeXBlRHluYW1pY0ZpZWxkSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgQ29udGVudCAgICAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRNYXNrRGVmaW5pdGlvbn0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGR9LAogICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQYXJhbXtERlBvc3NpYmxlVmFsdWVzfSwKICAgICAgICBFcnJvcnMgICAgICAgICAgICAgICA9PiAkUGFyYW17REZFcnJvcnN9LAogICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+ICRQYXJhbXtWaXNpYmlsaXR5fSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgfSwKICAgICk7CgogICAgIyBXaWRnZXQgVGlja2V0IEFjdGlvbnMKICAgIGlmICgKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpUeXBlJykgJiYgJENvbmZpZy0+e1RpY2tldFR5cGV9ICkKICAgICAgICB8fAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSAmJiAkQ29uZmlnLT57U2VydmljZX0gKSAgICAgICAgIHx8CiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6UmVzcG9uc2libGUnKSAmJiAkQ29uZmlnLT57UmVzcG9uc2libGV9ICkgfHwKICAgICAgICAkQ29uZmlnLT57VGl0bGV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICRDb25maWctPntRdWV1ZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgJENvbmZpZy0+e093bmVyfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAkQ29uZmlnLT57U3RhdGV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICRDb25maWctPntQcmlvcml0eX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgYW55IHsgJF8tPntPYmplY3RUeXBlfSBlcSAnVGlja2V0JyB9IHZhbHVlcyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqCiAgICAgICAgKQogICAgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdXaWRnZXRUaWNrZXRBY3Rpb25zJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+ICRUaWNrZXRUeXBlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1RpdGxlfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVGl0bGUnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtIaWRlQXV0b3NlbGVjdGVkfSApIHsKCiAgICAgICAgIyBhZGQgQXV0b3NlbGVjdCBKUwogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBDb2RlID0+ICJDb3JlLkZvcm0uSW5pdEhpZGVBdXRvc2VsZWN0ZWQoeyBGaWVsZElEczogJFBhcmFte0hpZGVBdXRvc2VsZWN0ZWR9IH0pOyIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHR5cGVzCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpUeXBlJykgJiYgJENvbmZpZy0+e1RpY2tldFR5cGV9ICkgewogICAgICAgIG15ICVUeXBlID0gJFRpY2tldE9iamVjdC0+VGlja2V0VHlwZUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtUeXBlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUgRm9ybVVwZGF0ZSAnIC4gKCAkUGFyYW17RXJyb3JzfS0+e1R5cGVJREludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVR5cGUsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVHlwZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1R5cGUnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXJ2aWNlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICBteSAkU2VydmljZXMgPSAkU2VsZi0+X0dldFNlcnZpY2VzKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJlc2V0IHByZXZpb3VzIFNlcnZpY2VJRCB0byByZXNldCBTTEEtTGlzdCBpZiBubyBzZXJ2aWNlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCAhJFBhcmFte1NlcnZpY2VJRH0gfHwgISRTZXJ2aWNlcy0+eyAkUGFyYW17U2VydmljZUlEfSB9ICkgewogICAgICAgICAgICAkUGFyYW17U2VydmljZUlEfSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJFBhcmFte1NlcnZpY2VTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+ICRTZXJ2aWNlcywKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAiTW9kZXJuaXplIEZvcm1VcGRhdGUgIgogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTZXJ2aWNlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtTZXJ2aWNlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTZXJ2aWNlTWFuZGF0b3J5ID0+ICRDb25maWctPntTZXJ2aWNlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICVTTEEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTTEFMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte1NMQVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTTEEsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U0xBSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICJNb2Rlcm5pemUgRm9ybVVwZGF0ZSAiCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1NMQU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17U2VydmljZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAyMDAsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NMQScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU0xBTWFuZGF0b3J5ID0+ICRDb25maWctPntTTEFNYW5kYXRvcnl9LAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnLT57UXVldWV9ICkgewoKICAgICAgICAjIGZldGNoIGFsbCBxdWV1ZXMKICAgICAgICBteSAlTW92ZVF1ZXVlcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE1vdmVMaXN0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdtb3ZlX2ludG8nLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG1vdmUgcXVldWVzCiAgICAgICAgJFBhcmFte1F1ZXVlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QWdlbnRRdWV1ZUxpc3RPcHRpb24oCiAgICAgICAgICAgIERhdGEgICAgID0+IHsgJU1vdmVRdWV1ZXMsICcnID0+ICctJyB9LAogICAgICAgICAgICBNdWx0aXBsZSA9PiAwLAogICAgICAgICAgICBTaXplICAgICA9PiAwLAogICAgICAgICAgICBDbGFzcyAgICA9PiAnTmV3UXVldWVJRCBNb2Rlcm5pemUgRm9ybVVwZGF0ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1F1ZXVlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdRdWV1ZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOZXdRdWV1ZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgICAgPT4gJFBhcmFte05ld1F1ZXVlSUR9LAogICAgICAgICAgICBUcmVlVmlldyAgICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgIEN1cnJlbnRRdWV1ZUlEID0+ICRQYXJhbXtRdWV1ZUlEfSwKICAgICAgICAgICAgT25DaGFuZ2VTdWJtaXQgPT4gMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVldWUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFF1ZXVlTWFuZGF0b3J5ID0+ICRDb25maWctPntRdWV1ZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbQogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJFVzZXJPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgIGlmICggJENvbmZpZy0+e093bmVyfSApIHsKCiAgICAgICAgIyBnZXQgdXNlciBvZiBvd24gZ3JvdXBzCiAgICAgICAgbXkgJVNob3duVXNlcnM7CiAgICAgICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdJRCAgICAgICAgPSAkUXVldWVPYmplY3QtPkdldFF1ZXVlR3JvdXBJRCggUXVldWVJRCA9PiAkVGlja2V0e1F1ZXVlSUR9ICk7CiAgICAgICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdvd25lcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ05ld093bmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgb2xkIG93bmVyCiAgICAgICAgbXkgQE9sZFVzZXJJbmZvID0gJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJMaXN0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwogICAgICAgIG15IEBPbGRPd25lcnM7CiAgICAgICAgbXkgJU9sZE93bmVyc1Nob3duOwogICAgICAgIG15ICVTZWVuT2xkT3duZXI7CiAgICAgICAgaWYgKEBPbGRVc2VySW5mbykgewogICAgICAgICAgICBteSAkQ291bnRlciA9IDE7CiAgICAgICAgICAgIFVTRVI6CiAgICAgICAgICAgIGZvciBteSAkVXNlciAoIHJldmVyc2UgQE9sZFVzZXJJbmZvICkgewoKICAgICAgICAgICAgICAgICMgc2tpcCBpZiBvbGQgb3duZXIgaXMgYWxyZWFkeSBpbiB0aGUgbGlzdAogICAgICAgICAgICAgICAgbmV4dCBVU0VSIGlmICRTZWVuT2xkT3duZXJ7ICRVc2VyLT57VXNlcklEfSB9OwogICAgICAgICAgICAgICAgJFNlZW5PbGRPd25lcnsgJFVzZXItPntVc2VySUR9IH0gPSAxOwogICAgICAgICAgICAgICAgbXkgJEtleSAgID0gJFVzZXItPntVc2VySUR9OwogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAgICAgcHVzaCBAT2xkT3duZXJzLCB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJE9sZE93bmVyc1Nob3dueyRLZXl9ID0gJFZhbHVlOwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICcnOwogICAgICAgIGlmICggJFBhcmFte09sZE93bmVySUR9ICkgewogICAgICAgICAgICAkT2xkT3duZXJTZWxlY3RlZElEID0gJFBhcmFte09sZE93bmVySUR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRPbGRVc2VySW5mb1swXS0+e1VzZXJJRH0gKSB7CiAgICAgICAgICAgICRPbGRPd25lclNlbGVjdGVkSUQgPSAkT2xkVXNlckluZm9bMF0tPntVc2VySUR9IC4gJzEnOwogICAgICAgIH0KCiAgICAgICAgbXkgJE9sZE93bmVyQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnT2xkT3duZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlT2xkT3duZXJzU2hvd24sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkT2xkT3duZXJBQ0wpIHsKICAgICAgICAgICAgJU9sZE93bmVyc1Nob3duID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IG9ubHkgdXNlcnMgd2l0aCBvd25lciBvciBydyBwZXJtaXNzaW9ucyBpbiB0aGUgcXVldWUKICAgICAgICBteSAlT2xkT3duZXJzV2l0aEFjY2VzczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAgICAgJU9sZE93bmVyc1dpdGhBY2Nlc3MgPSAlT2xkT3duZXJzU2hvd247CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIGtleXMgJU9sZE93bmVyc1Nob3duICkgewogICAgICAgICAgICAgICAgaWYgKCBleGlzdHMgJFNob3duVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE9sZE93bmVyc1dpdGhBY2Nlc3N7JFVzZXJJRH0gPSAkT2xkT3duZXJzU2hvd257JFVzZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYnVpbGQgc3RyaW5nCiAgICAgICAgJFBhcmFte093bmVyU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte05ld093bmVySUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdOZXdPd25lcklEJywKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntPd25lck1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3T3duZXJJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIEZpbHRlcnMgICAgICA9PiB7CiAgICAgICAgICAgICAgICBPbGRPd25lcnMgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ByZXZpb3VzIE93bmVyJyksCiAgICAgICAgICAgICAgICAgICAgVmFsdWVzID0+IFwlT2xkT3duZXJzV2l0aEFjY2VzcywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ093bmVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBPd25lck1hbmRhdG9yeSA9PiAkQ29uZmlnLT57T3duZXJNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpSZXNwb25zaWJsZScpICYmICRDb25maWctPntSZXNwb25zaWJsZX0gKSB7CgogICAgICAgICMgZ2V0IHVzZXIgb2Ygb3duIGdyb3VwcwogICAgICAgIG15ICVTaG93blVzZXJzOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAlQWxsR3JvdXBzTWVtYmVyczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncmVzcG9uc2libGUnLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHJlc3BvbnNpYmxlCiAgICAgICAgJFBhcmFte1Jlc3BvbnNpYmxlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte05ld1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdOZXdSZXNwb25zaWJsZUlEJywKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntSZXNwb25zaWJsZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3UmVzcG9uc2libGVJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFJlc3BvbnNpYmxlTWFuZGF0b3J5ID0+ICRDb25maWctPntSZXNwb25zaWJsZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgIH0KCiAgICBpZiAoICRDb25maWctPntTdGF0ZX0gKSB7CgogICAgICAgIG15ICVTdGF0ZTsKICAgICAgICBteSAlU3RhdGVMaXN0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVMaXN0KAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkUGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gKSB7CiAgICAgICAgICAgICAgICAkU3RhdGV7U2VsZWN0ZWRWYWx1ZX0gPSAkQ29uZmlnLT57U3RhdGVEZWZhdWx0fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFN0YXRle1NlbGVjdGVkSUR9ID0gJFBhcmFte05ld1N0YXRlSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBuZXh0IHN0YXRlcyBzdHJpbmcKICAgICAgICAkUGFyYW17U3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICA9PiBcJVN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgPT4gJ05ld1N0YXRlSUQnLAogICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTdGF0ZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3U3RhdGVJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH0gPyAwIDogMSwKICAgICAgICAgICAgJVN0YXRlLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdGF0ZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRDb25maWctPntTdGF0ZVR5cGV9ICkgKSB7CgogICAgICAgICAgICBTVEFURVRZUEU6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlICggQHsgJENvbmZpZy0+e1N0YXRlVHlwZX0gfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRSBpZiAhJFN0YXRlVHlwZTsKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFIGlmICRTdGF0ZVR5cGUgIX4gL3BlbmRpbmcvaTsKCiAgICAgICAgICAgICAgICAjIGdldCB1c2VkIGNhbGVuZGFyCiAgICAgICAgICAgICAgICBteSAkQ2FsZW5kYXIgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDYWxlbmRhckdldCgKICAgICAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkUXVpY2tEYXRlQnV0dG9ucyA9ICRDb25maWctPntRdWlja0RhdGVCdXR0b25zfSAvLyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkRlZmF1bHRRdWlja0RhdGVCdXR0b25zJyk7CgogICAgICAgICAgICAgICAgJFBhcmFte0RhdGVTdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiA1LAogICAgICAgICAgICAgICAgICAgIERpZmZUaW1lICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpQZW5kaW5nRGlmZlRpbWUnKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAwLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgID0+ICRQYXJhbXtEYXRlSW52YWxpZH0gfHwgJyAnLAogICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEYXRlSW5GdXR1cmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDYWxlbmRhciAgICAgICAgICAgICA9PiAkQ2FsZW5kYXIsCiAgICAgICAgICAgICAgICAgICAgUXVpY2tEYXRlQnV0dG9ucyAgICAgPT4gJFF1aWNrRGF0ZUJ1dHRvbnMsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRlUGVuZGluZycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBsYXN0IFNUQVRFVFlQRTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwcmlvcml0eQogICAgaWYgKCAkQ29uZmlnLT57UHJpb3JpdHl9ICkgewoKICAgICAgICBteSAlUHJpb3JpdHk7CiAgICAgICAgbXkgJVByaW9yaXR5TGlzdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFByaW9yaXR5TGlzdCgKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICRQcmlvcml0eUxpc3R7Jyd9ID0gJy0nOwogICAgICAgIH0KICAgICAgICBpZiAoICEkUGFyYW17TmV3UHJpb3JpdHlJRH0gKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRWYWx1ZX0gPSAkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkSUR9ID0gJFBhcmFte05ld1ByaW9yaXR5SUR9OwogICAgICAgIH0KICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRJRH0gfHw9ICRQYXJhbXtQcmlvcml0eUlEfTsKICAgICAgICAkUGFyYW17UHJpb3JpdHlTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICA9PiBcJVByaW9yaXR5TGlzdCwKICAgICAgICAgICAgTmFtZSAgPT4gJ05ld1ByaW9yaXR5SUQnLAogICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplIEZvcm1VcGRhdGUnLAogICAgICAgICAgICAlUHJpb3JpdHksCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHJpb3JpdHknLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVuZCBXaWRnZXQgVGlja2V0IEFjdGlvbnMKCiAgICAjIFdpZGdldCBBcnRpY2xlCiAgICBpZiAoICRDb25maWctPntOb3RlfSApIHsKCiAgICAgICAgJFBhcmFte1dpZGdldFN0YXR1c30gPSAnQ29sbGFwc2VkJzsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0KICAgICAgICAgICAgfHwgJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0KICAgICAgICAgICAgfHwgJFBhcmFte0NyZWF0ZUFydGljbGV9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRQYXJhbXtXaWRnZXRTdGF0dXN9ID0gJ0V4cGFuZGVkJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICAkUGFyYW17U3ViamVjdFJlcXVpcmVkfSA9ICdWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICAgICAgICAgICRQYXJhbXtCb2R5UmVxdWlyZWR9ICAgID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQYXJhbXtTdWJqZWN0UmVxdWlyZWR9ID0gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJzsKICAgICAgICAgICAgJFBhcmFte0JvZHlSZXF1aXJlZH0gICAgPSAnVmFsaWRhdGVfRGVwZW5kaW5nUmVxdWlyZWRBTkQgVmFsaWRhdGVfRGVwZW5kaW5nX0NyZWF0ZUFydGljbGUnOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgY3VzdG9tZXIgdmlzaWJpbGl0eSBvZiB0aGlzIG5vdGUgdG8gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGFydGljbGUgZm9yIHdob20gdGhpcyBpcyB0aGUgcmVwbHkKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICYmICFkZWZpbmVkICRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gPSAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0tPntJc1Zpc2libGVGb3JDdXN0b21lcn07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggIWRlZmluZWQgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSA9ICRDb25maWctPntJc1Zpc2libGVGb3JDdXN0b21lckRlZmF1bHR9OwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGF0dGFjaG1lbnRzCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCBAeyAkUGFyYW17QXR0YWNobWVudHN9IH0gKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudElEfQogICAgICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17QXR0YWNobWVudExpc3R9IH0sICRBdHRhY2htZW50OwogICAgICAgIH0KCiAgICAgICAgIyByZW5kZXIgYXJ0aWNsZSB0eXBlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJEFydGljbGVUeXBlRHluYW1pY0ZpZWxkSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICAgID0+ICRTZWxmLT57QXJ0aWNsZU1hc2tEZWZpbml0aW9ufSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGR9LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUGFyYW17REZQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgIEVycm9ycyAgICAgICAgICAgICAgID0+ICRQYXJhbXtERkVycm9yc30sCiAgICAgICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+ICRQYXJhbXtWaXNpYmlsaXR5fSwKICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFBhcmFte0N1c3RvbWVySUR9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGR9LT4lKiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnV2lkZ2V0QXJ0aWNsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiAkQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGFsbCB1c2VyIGlkcyBvZiBhZ2VudHMsIHRoYXQgY2FuIGJlIHNob3duIGluIHRoaXMgZGlhbG9nCiAgICAgICAgIyBiYXNlZCBvbiBxdWV1ZSByaWdodHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJEdJRCAgICAgICAgPSAkUXVldWVPYmplY3QtPkdldFF1ZXVlR3JvdXBJRCggUXVldWVJRCA9PiAkVGlja2V0e1F1ZXVlSUR9ICk7CiAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdub3RlJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgZW1haWwgcGFyc2VyIG9iamVjdAogICAgICAgIG15ICRFbWFpbFBhcnNlck9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpFbWFpbFBhcnNlci0+bmV3KAogICAgICAgICAgICBNb2RlICA9PiAnU3RhbmRhbG9uZScsCiAgICAgICAgICAgIERlYnVnID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhbmQgcmV0cmlldmUgaW52b2x2ZWQgYW5kIGluZm9ybWVkIGFnZW50cyBvZiBSZXBseVRvIE5vdGUKICAgICAgICBteSBAUmVwbHlUb1VzZXJzOwogICAgICAgIG15ICVSZXBseVRvVXNlcnNIYXNoOwogICAgICAgIG15ICVSZXBseVRvVXNlcklEczsKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewogICAgICAgICAgICBteSBAUmVwbHlUb1BhcnRzID0gJEVtYWlsUGFyc2VyT2JqZWN0LT5TcGxpdEFkZHJlc3NMaW5lKAogICAgICAgICAgICAgICAgTGluZSA9PiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0tPntUb30gfHwgJycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBSRVBMWVRPUEFSVDoKICAgICAgICAgICAgZm9yIG15ICRTaW5nbGVSZXBseVRvUGFydCAoQFJlcGx5VG9QYXJ0cykgewogICAgICAgICAgICAgICAgbXkgJFJlcGx5VG9BZGRyZXNzID0gJEVtYWlsUGFyc2VyT2JqZWN0LT5HZXRFbWFpbEFkZHJlc3MoCiAgICAgICAgICAgICAgICAgICAgRW1haWwgPT4gJFNpbmdsZVJlcGx5VG9QYXJ0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IFJFUExZVE9QQVJUIGlmICEkUmVwbHlUb0FkZHJlc3M7CiAgICAgICAgICAgICAgICBwdXNoIEBSZXBseVRvVXNlcnMsICRSZXBseVRvQWRkcmVzczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFJlcGx5VG9Vc2Vyc0hhc2h7JF99KysgZm9yIEBSZXBseVRvVXNlcnM7CgogICAgICAgICAgICAjIGdldCB1c2VyIGlkcyBvZiBhdmFpbGFibGUgdXNlcnMKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRVc2VyRW1haWwgPSAkVXNlckRhdGF7VXNlckVtYWlsfTsKICAgICAgICAgICAgICAgIGlmICggJFJlcGx5VG9Vc2Vyc0hhc2h7JFVzZXJFbWFpbH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgb3JpZ2luYWwgbm90ZSBzZW5kZXIgdG8gbGlzdCBvZiB1c2VyIGlkcwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQgQHsgJFNlbGYtPntSZXBseVRvU2VuZGVyVXNlcklEfSB9ICkgewoKICAgICAgICAgICAgICAgICMgaWYgc2VuZGVyIHJlcGxpZXMgdG8gaGltc2VsZiwgZG8gbm90IGluY2x1ZGUgc2VuZGVyIGluIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJFVzZXJJRCBuZSAkU2VsZi0+e1VzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZW1vdmUgdXNlciBpZCBvZiBhY3RpdmUgdXNlcgogICAgICAgICAgICBkZWxldGUgJFJlcGx5VG9Vc2VySURzeyAkU2VsZi0+e1VzZXJJRH0gfTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luZm9ybUFnZW50fSB8fCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWRkaXRpb25hbEFnZW50cycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgICAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgICAgICMgZ2V0IGFsbCBhZ2VudHMgZm9yICJpbnZvbHZlZCBhZ2VudHMiCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSB7CgogICAgICAgICAgICBteSBAVXNlcklEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEludm9sdmVkQWdlbnRzTGlzdCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEludm9sdmVkQWdlbnRzOwogICAgICAgICAgICBteSAkQ291bnRlciA9IDE7CgogICAgICAgICAgICBteSBASW52b2x2ZWRVc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW52b2x2ZWRVc2VySUQnICk7CgogICAgICAgICAgICBteSAlQWdlbnRXaXRoUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgVVNFUjoKICAgICAgICAgICAgZm9yIG15ICRVc2VyICggcmV2ZXJzZSBAVXNlcklEcyApIHsKCiAgICAgICAgICAgICAgICBuZXh0IFVTRVIgaWYgIWRlZmluZWQgJEFnZW50V2l0aFBlcm1pc3Npb257ICRVc2VyLT57VXNlcklEfSB9OwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgICAgIGlmICggJFVzZXItPntPdXRPZk9mZmljZU1lc3NhZ2V9ICkgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAiICRVc2VyLT57T3V0T2ZPZmZpY2VNZXNzYWdlfSI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBASW52b2x2ZWRBZ2VudHMsIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkVXNlci0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAgICAgIyBhZGQgaW52b2x2ZWQgdXNlciBhcyBzZWxlY3RlZCBlbnRyaWVzLCBpZiBhdmFpbGFibGUgaW4gUmVwbHlUb0FkZHJlc3NlcyBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICYmICRSZXBseVRvVXNlcklEc3sgJFVzZXItPntVc2VySUR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBASW52b2x2ZWRVc2VySUQsICRVc2VyLT57VXNlcklEfTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEludm9sdmVkQWdlbnRTaXplID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpJbnZvbHZlZEFnZW50TWF4U2l6ZScpIHx8IDM7CiAgICAgICAgICAgICRQYXJhbXtJbnZvbHZlZEFnZW50U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gXEBJbnZvbHZlZEFnZW50cywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gXEBJbnZvbHZlZFVzZXJJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0ludm9sdmVkVXNlcklEJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+ICRJbnZvbHZlZEFnZW50U2l6ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYmxvY2sgaXMgY2FsbGVkIGJlbG93ICJpbmZvcm0gYWdlbnRzIgogICAgICAgIH0KCiAgICAgICAgIyBhZ2VudCBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW5mb3JtQWdlbnR9ICkgewoKICAgICAgICAgICAgIyBnZXQgaW5mb3JtIHVzZXIgbGlzdAogICAgICAgICAgICBteSAlSW5mb3JtQWdlbnRzOwogICAgICAgICAgICBteSBASW5mb3JtVXNlcklEICAgID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0luZm9ybVVzZXJJRCcgKTsKICAgICAgICAgICAgbXkgJUluZm9ybUFnZW50TGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlSW5mb3JtQWdlbnRMaXN0ICkgewogICAgICAgICAgICAgICAgJEluZm9ybUFnZW50c3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGVtYWlsIGFkZHJlc3Mgb2YgYWxsIHVzZXJzIGFuZCBjb21wYXJlIHRvIHJlcGx5dG8tYWRkcmVzc2VzCiAgICAgICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlSW5mb3JtQWdlbnRzICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJbmZvcm1Vc2VySUQsICRVc2VySUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkSW5mb3JtQWdlbnRTaXplID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpJbmZvcm1BZ2VudE1heFNpemUnKQogICAgICAgICAgICAgICAgfHwgMzsKICAgICAgICAgICAgJFBhcmFte09wdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+IFwlSW5mb3JtQWdlbnRzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEluZm9ybVVzZXJJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luZm9ybVVzZXJJRCcsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICA9PiAkSW5mb3JtQWdlbnRTaXplLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50JywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGludm9sdmVkCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ludm9sdmVkQWdlbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGxpc3Qgb2YgYWdlbnRzLCB0aGF0IHJlY2VpdmUgdGhpcyBub3RlIChSZXBseVRvTm90ZSkKICAgICAgICAjIGF0IGxlYXN0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlIGFuZCBhbGwgcmVjaXBpZW50cyBvZiB0aGUgb3JpZ2luYWwgbm90ZQogICAgICAgICMgdGhhdCBjb3VsZG4ndCBiZSBzZWxlY3RlZCB3aXRoIGludm9sdmVkL2luZm9ybSBhZ2VudHMKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgbXkgJFVzZXJzSGFzaFNpemUgPSBrZXlzICVSZXBseVRvVXNlcklEczsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICAgICAgPSAwOwogICAgICAgICAgICAkUGFyYW17VXNlckxpc3RXaXRob3V0U2VsZWN0aW9ufSA9IGpvaW4oICcsJywga2V5cyAlUmVwbHlUb1VzZXJJRHMgKTsKCiAgICAgICAgICAgIGlmICggJFVzZXJzSGFzaFNpemUgPiAwICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlUmVwbHlUb1VzZXJJRHMgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlVXNlckRhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgYSBzZXBhcmF0b3IgKEluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yKSwKICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCBsYXN0IGVudHJ5CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciA8ICRVc2Vyc0hhc2hTaXplICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1YmplY3RMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHRMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1YmplY3RMYWJlbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmljaFRleHRMYWJlbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHRleHQgdGVtcGxhdGUgc3RyaW5nCiAgICAgICAgbXkgJVN0YW5kYXJkVGVtcGxhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YW5kYXJkVGVtcGxhdGUnKS0+U3RhbmRhcmRUZW1wbGF0ZUxpc3QoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIFR5cGUgID0+ICdOb3RlJywKICAgICAgICApOwoKICAgICAgICBteSAkUXVldWVTdGFuZGFyZFRlbXBsYXRlcyA9ICRTZWxmLT5fR2V0U3RhbmRhcmRUZW1wbGF0ZXMoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gfHwgJycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkQ29uZmlnLT57UXVldWV9ICYmIElzSGFzaFJlZldpdGhEYXRhKCBcJVN0YW5kYXJkVGVtcGxhdGVzICkgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkUXVldWVTdGFuZGFyZFRlbXBsYXRlcyB8fCB7fSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU3RhbmRhcmRUZW1wbGF0ZUlEJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSB8fCAnJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAyMDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhbmRhcmRUZW1wbGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRpbWUgYWNjb3VudGluZyBib3gKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWNjb3VudFRpbWUnKSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykgJiYgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzTGFiZWxNYW5kYXRvcnknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFBhcmFte1RpbWVVbml0c1JlcXVpcmVkfSA9ICdWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHNMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17VGltZVVuaXRzUmVxdWlyZWR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpCiAgICAgICAgICAgICAgICAgICAgPyAnVmFsaWRhdGVfRGVwZW5kaW5nUmVxdWlyZWRBTkQgVmFsaWRhdGVfRGVwZW5kaW5nX0NyZWF0ZUFydGljbGUnCiAgICAgICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IEFydGljbGUKCiAgICAjIGV4cGxhbmF0b3J5IG1lc3NhZ2UgYWJvdXQgYXN0ZXJpc2sKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBc3Rlcmlza0V4cGxhbmF0aW9uJykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FzdGVyaXNrRXhwbGFuYXRpb24nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgKTsKfQoKc3ViIF9HZXROZXh0U3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJU5leHRTdGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFN0YXRlTGlzdCgKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuIFwlTmV4dFN0YXRlczsKfQoKc3ViIF9HZXRSZXNwb25zaWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTaG93blVzZXJzOwogICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBzaG93IGFsbCB1c2VycwogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgJVNob3duVXNlcnMgPSAlQWxsR3JvdXBzTWVtYmVyczsKICAgIH0KCiAgICAjIHNob3cgb25seSB1c2VycyB3aXRoIHJlc3BvbnNpYmxlIG9yIHJ3IHBlcm1pc3Npb25zIGluIHRoZSBxdWV1ZQogICAgZWxzaWYgKCAkUGFyYW17UXVldWVJRH0gJiYgISRQYXJhbXtPd25lckFsbH0gKSB7CiAgICAgICAgbXkgJEdJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRRdWV1ZUdyb3VwSUQoCiAgICAgICAgICAgIFF1ZXVlSUQgPT4gJFBhcmFte05ld1F1ZXVlSUR9IHx8ICRQYXJhbXtRdWV1ZUlEfQogICAgICAgICk7CiAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ3Jlc3BvbnNpYmxlJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgd29ya2Zsb3cKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4geyAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCkgfSBpZiAkQUNMOwogICAgcmV0dXJuIFwlU2hvd25Vc2VyczsKfQoKc3ViIF9HZXRPd25lcnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2hvd25Vc2VyczsKICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgc2hvdyBhbGwgdXNlcnMKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICB9CgogICAgIyBzaG93IG9ubHkgdXNlcnMgd2l0aCBvd25lciBvciBydyBwZXJtaXNzaW9ucyBpbiB0aGUgcXVldWUKICAgIGVsc2lmICggJFBhcmFte1F1ZXVlSUR9ICYmICEkUGFyYW17T3duZXJBbGx9ICkgewogICAgICAgIG15ICRHSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+R2V0UXVldWVHcm91cElEKAogICAgICAgICAgICBRdWV1ZUlEID0+ICRQYXJhbXtOZXdRdWV1ZUlEfSB8fCAkUGFyYW17UXVldWVJRH0KICAgICAgICApOwogICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdvd25lcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIHdvcmtmbG93CiAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ05ld093bmVyJywKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHsgJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpIH0gaWYgJEFDTDsKICAgIHJldHVybiBcJVNob3duVXNlcnM7Cn0KCnN1YiBfR2V0T2xkT3duZXJzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSBAT2xkVXNlckluZm8gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lckxpc3QoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICBteSAlVXNlckhhc2g7CiAgICBpZiAoQE9sZFVzZXJJbmZvKSB7CiAgICAgICAgbXkgJENvdW50ZXIgPSAxOwogICAgICAgIFVTRVI6CiAgICAgICAgZm9yIG15ICRVc2VyICggcmV2ZXJzZSBAT2xkVXNlckluZm8gKSB7CgogICAgICAgICAgICBuZXh0IFVTRVIgaWYgJFVzZXJIYXNoeyAkVXNlci0+e1VzZXJJRH0gfTsKCiAgICAgICAgICAgICRVc2VySGFzaHsgJFVzZXItPntVc2VySUR9IH0gPSAiJENvdW50ZXI6ICRVc2VyLT57VXNlckZ1bGxuYW1lfSI7CiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgd29ya2Zsb3cKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnT2xkT3duZXInLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVVc2VySGFzaCwKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHsgJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpIH0gaWYgJEFDTDsKICAgIHJldHVybiBcJVVzZXJIYXNoOwp9CgpzdWIgX0dldFNlcnZpY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgc2VydmljZQogICAgbXkgJVNlcnZpY2U7CgogICAgIyBnZXQgb3B0aW9ucyBmb3IgZGVmYXVsdCBzZXJ2aWNlcyBmb3IgdW5rbm93biBjdXN0b21lcnMKICAgIG15ICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpEZWZhdWx0OjpVbmtub3duQ3VzdG9tZXInKTsKCiAgICAjIGNoZWNrIGlmIG5vIEN1c3RvbWVyVXNlcklEIGlzIHNlbGVjdGVkCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDAgbGVhdmUgQ3VzdG9tZXJVc2VySUQgZW1wdHksIGl0IHdpbGwgbm90IGdldCBhbnkgc2VydmljZXMKICAgICMgaWYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gMSBzZXQgQ3VzdG9tZXJVc2VySUQgdG8gZ2V0IGRlZmF1bHQgc2VydmljZXMKICAgIGlmICggISRQYXJhbXtDdXN0b21lclVzZXJJRH0gJiYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyICkgewogICAgICAgICRQYXJhbXtDdXN0b21lclVzZXJJRH0gPSAnPERFRkFVTFQ+JzsKICAgIH0KCiAgICAjIGdldCBzZXJ2aWNlIGxpc3QKICAgIGlmICggJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAlU2VydmljZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U2VydmljZUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIFwlU2VydmljZTsKfQoKc3ViIF9HZXRTTEFzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiBub24gc2V0IGN1c3RvbWVycyBjYW4gZ2V0IGRlZmF1bHQgc2VydmljZXMgdGhlbiB0aGV5IHNob3VsZCBhbHNvIGJlIGFibGUgdG8gZ2V0IHRoZSBTTEFzCiAgICAjICBmb3IgdGhvc2Ugc2VydmljZXMgKHRoaXMgd29ya3MgZHVyaW5nIHRpY2tldCBjcmVhdGlvbikuCiAgICAjIGlmIG5vIEN1c3RvbWVyVXNlcklEIGlzIHNldCwgVGlja2V0U0xBTGlzdCB3aWxsIGNvbXBsYWluIGR1cmluZyBBSkFYIHVwZGF0ZXMgYXMgVXNlcklEIGlzIG5vdAogICAgIyAgcGFzc2VkLiBTZWUgYnVnIDExMTQ3LgoKICAgICMgZ2V0IG9wdGlvbnMgZm9yIGRlZmF1bHQgc2VydmljZXMgZm9yIHVua25vd24gY3VzdG9tZXJzCiAgICBteSAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6U2VydmljZTo6RGVmYXVsdDo6VW5rbm93bkN1c3RvbWVyJyk7CgogICAgIyBjaGVjayBpZiBubyBDdXN0b21lclVzZXJJRCBpcyBzZWxlY3RlZAogICAgIyBpZiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgPSAwIGxlYXZlIEN1c3RvbWVyVXNlcklEIGVtcHR5LCBpdCB3aWxsIG5vdCBnZXQgYW55IHNlcnZpY2VzCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDEgc2V0IEN1c3RvbWVyVXNlcklEIHRvIGdldCBkZWZhdWx0IHNlcnZpY2VzCiAgICBpZiAoICEkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICYmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciApIHsKICAgICAgICAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ID0gJzxERUZBVUxUPic7CiAgICB9CgogICAgbXkgJVNMQTsKICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gKSB7CiAgICAgICAgJVNMQSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gXCVTTEE7Cn0KCnN1YiBfR2V0UHJpb3JpdGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVQcmlvcml0aWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRQcmlvcml0eUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIGlmICggISRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICRQcmlvcml0aWVzeycnfSA9ICctJzsKICAgIH0KCiAgICByZXR1cm4gXCVQcmlvcml0aWVzOwp9CgpzdWIgX0dldFF1b3RlZFJlcGx5Qm9keSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpRdW90ZScpIHx8ICcnLAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRRdW90ZSkgewoKICAgICAgICAgICAgICAgICMgcXVvdGUgdGV4dAogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxibG9ja3F1b3RlIHR5cGU9XCJjaXRlXCI+JFBhcmFte0JvZHl9PC9ibG9ja3F1b3RlPlxuIjsKCiAgICAgICAgICAgICAgICAjIGNsZWFudXAgbm90IGNvbXBhdC4gdGFncwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENsZWFudXAoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtCb2R5fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlc3BvbnNlRm9ybWF0ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZyggJFBhcmFte0NyZWF0ZVRpbWV9LCAnRGF0ZUZvcm1hdCcsICdOb1NlY29uZHMnICk7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQgLj0gJyAtICcgLiAkUGFyYW17RnJvbX0gLiAnICc7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQKICAgICAgICAgICAgICAgICAgICAuPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3dyb3RlJykgLiAnOic7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJFJlc3BvbnNlRm9ybWF0IC4gJFBhcmFte0JvZHl9OwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICI8YnIvPiIgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17Q3JlYXRlVGltZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEYXRlJykgLgogICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17Q3JlYXRlVGltZX08YnIvPiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yIChxdyhTdWJqZWN0IFJlcGx5VG8gUmVwbHktVG8gQ2MgVG8gRnJvbSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkXykgLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogJFBhcmFteyRffTxici8+IiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZyb20gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJSaWNoVGV4dCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0Zyb219LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkTWVzc2FnZUZyb20gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ01lc3NhZ2UgZnJvbScpOwogICAgICAgICAgICAgICAgbXkgJEVuZE1lc3NhZ2UgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdFbmQgbWVzc2FnZScpOwoKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICI8YnIvPi0tLS0gJE1lc3NhZ2VGcm9tICRGcm9tIC0tLTxici8+PGJyLz4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9IC49ICI8YnIvPi0tLS0gJEVuZE1lc3NhZ2UgLS0tPGJyLz4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcHJlcGFyZSBib2R5LCBzdWJqZWN0LCBSZXBseVRvIC4uLgogICAgICAgICMgcmV3cmFwIGJvZHkgaWYgZXhpc3RzCiAgICAgICAgaWYgKCAkUGFyYW17Qm9keX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9fiBzL1x0LyAvZzsKICAgICAgICAgICAgbXkgJFF1b3RlID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpRdW90ZScpOwogICAgICAgICAgICBpZiAoJFF1b3RlKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPX4gcy9cbi9cbiRRdW90ZSAvZzsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICJcbiRRdW90ZSAiIC4gJFBhcmFte0JvZHl9OwoKICAgICAgICAgICAgICAgIG15ICRSZXNwb25zZUZvcm1hdCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoICRQYXJhbXtDcmVhdGVUaW1lfSwgJ0RhdGVGb3JtYXQnLCAnTm9TZWNvbmRzJyApOwogICAgICAgICAgICAgICAgJFJlc3BvbnNlRm9ybWF0IC49ICcgLSAnIC4gJFBhcmFte0Zyb219IC4gJyAnOwogICAgICAgICAgICAgICAgJFJlc3BvbnNlRm9ybWF0CiAgICAgICAgICAgICAgICAgICAgLj0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCd3cm90ZScpIC4gIjpcbiI7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJFJlc3BvbnNlRm9ybWF0IC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuIiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NyZWF0ZVRpbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGF0ZScpIC4KICAgICAgICAgICAgICAgICAgICAgICAgIjogJFBhcmFte0NyZWF0ZVRpbWV9XG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAocXcoU3ViamVjdCBSZXBseVRvIFJlcGx5LVRvIENjIFRvIEZyb20pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17JF99ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJF8pIC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICRQYXJhbXskX31cbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRNZXNzYWdlRnJvbSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTWVzc2FnZSBmcm9tJyk7CiAgICAgICAgICAgICAgICBteSAkRW5kTWVzc2FnZSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0VuZCBtZXNzYWdlJyk7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuLS0tLSAkTWVzc2FnZUZyb20gJFBhcmFte0Zyb219IC0tLVxuXG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9IC49ICJcbi0tLS0gJEVuZE1lc3NhZ2UgLS0tXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUGFyYW17Qm9keX07Cn0KCnN1YiBfR2V0U3RhbmRhcmRUZW1wbGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGVpdGhlciBRdWV1ZUlEIG9yIFRpY2tldElEIGlzIG5lZWRlZAogICAgcmV0dXJuIHt9IGlmICEkUGFyYW17UXVldWVJRH0gJiYgISRQYXJhbXtUaWNrZXRJRH07CgogICAgbXkgJFF1ZXVlSUQgPSAkUGFyYW17UXVldWVJRH0gfHwgJyc7CiAgICBpZiAoICEkUGFyYW17UXVldWVJRH0gJiYgJFBhcmFte1RpY2tldElEfSApIHsKCiAgICAgICAgIyBnZXQgUXVldWVJRCBmcm9tIHRoZSB0aWNrZXQKICAgICAgICBteSAlVGlja2V0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRRdWV1ZUlEID0gJFRpY2tldHtRdWV1ZUlEfSB8fCAnJzsKICAgIH0KCiAgICAjIGZldGNoIGFsbCBzdGQuIHRlbXBsYXRlcwogICAgbXkgJVN0YW5kYXJkVGVtcGxhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlU3RhbmRhcmRUZW1wbGF0ZU1lbWJlckxpc3QoCiAgICAgICAgUXVldWVJRCAgICAgICA9PiAkUXVldWVJRCwKICAgICAgICBUZW1wbGF0ZVR5cGVzID0+IDEsCiAgICApOwoKICAgICMgcmV0dXJuIGVtcHR5IGhhc2ggaWYgdGhlcmUgYXJlIG5vIHRlbXBsYXRlcyBmb3IgdGhpcyBzY3JlZW4KICAgIHJldHVybiB7fSB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRTdGFuZGFyZFRlbXBsYXRlc3tOb3RlfSApOwoKICAgICMgcmV0dXJuIGp1c3QgdGhlIHRlbXBsYXRlcyBmb3IgdGhpcyBzY3JlZW4KICAgIHJldHVybiAkU3RhbmRhcmRUZW1wbGF0ZXN7Tm90ZX07Cn0KCnN1YiBfR2V0VHlwZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG5vIHR5cGVzIHdoZW4gYSBwYXJhbWV0ZXIgaXMgbWlzc2luZwogICAgcmV0dXJuIHt9IHVubGVzcyAoICRQYXJhbXtRdWV1ZUlEfSB8fCAkUGFyYW17VGlja2V0SUR9ICk7CgogICAgIyBnZXQgdGlja2V0IHR5cGVzIHdpdGggY29uc2lkZXJpbmcgQUNMcwogICAgbXkgJVR5cGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFR5cGVMaXN0KAogICAgICAgICVQYXJhbSwKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gXCVUeXBlOwp9CgpzdWIgX0dldFF1ZXVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgR2V0IFF1ZXVlcy4KICAgIG15ICVRdWV1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldE1vdmVMaXN0KAogICAgICAgICVQYXJhbSwKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFR5cGUgICAgID0+ICdtb3ZlX2ludG8nLAogICAgKTsKCiAgICByZXR1cm4gXCVRdWV1ZXM7Cn0KCnN1YiBfTG9hZEFydGljbGVFZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgbXkgJVRpY2tldCAgICAgICAgICAgICAgID0gJXsgJFBhcmFte1RpY2tldH0gfTsKICAgIG15ICVBcnRpY2xlRGF0YSAgICAgICAgICA9ICV7ICRQYXJhbXtBcnRpY2xlRGF0YX0gfTsKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRQYXJhbXtBcnRpY2xlQmFja2VuZE9iamVjdH07CgogICAgIyBDaGVjayBpZiB0aGVyZSBpcyBIVE1MIGJvZHkgYXR0YWNobWVudC4KICAgIG15ICVBdHRhY2htZW50SW5kZXhIVE1MQm9keSA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICBBcnRpY2xlSUQgICAgPT4gJEFydGljbGVEYXRhe0FydGljbGVJRH0sCiAgICAgICAgT25seUhUTUxCb2R5ID0+IDEsCiAgICApOwogICAgKCAkQXJ0aWNsZURhdGF7SFRNTEJvZHlBdHRhY2htZW50SUR9ICkgPSBzb3J0IGtleXMgJUF0dGFjaG1lbnRJbmRleEhUTUxCb2R5OwoKICAgIGlmICggJEFydGljbGVEYXRhe0hUTUxCb2R5QXR0YWNobWVudElEfSApIHsKICAgICAgICAkQXJ0aWNsZURhdGF7TWltZVR5cGV9ID0gJ3RleHQvaHRtbCc7CgogICAgICAgICMgUmVuZGVyIGFydGljbGUgY29udGVudC4KICAgICAgICAkQXJ0aWNsZURhdGF7Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUHJldmlldygKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICA9PiAkVGlja2V0e1RpY2tldElEfSwKICAgICAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICA9PiAkQXJ0aWNsZURhdGF7QXJ0aWNsZUlEfSwKICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAxCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAlQXJ0aWNsZURhdGE7CiAgICB9CgojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBpZiAoJFBhcmFte05vQXR0YWNobWVudHN9KSB7CiAgICAgICAgcmV0dXJuICVBcnRpY2xlRGF0YTsKICAgIH0KIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CgogICAgbXkgJENvbnRlbnQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuSFRNTCAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBIVE1MID0+ICRBcnRpY2xlRGF0YXtCb2R5fSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBDb250ZW50ICAgICAgICAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ29udGVudEFsdGVybmF0aXZlID0+ICcnLAogICAgICAgIENvbnRlbnRJRCAgICAgICAgICA9PiAnJywKICAgICAgICBDb250ZW50VHlwZSAgICAgICAgPT4gJ3RleHQvaHRtbDsgY2hhcnNldD0idXRmLTgiJywKICAgICAgICBEaXNwb3NpdGlvbiAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgRmlsZXNpemVSYXcgICAgICAgID0+IGJ5dGVzOjpsZW5ndGgoJENvbnRlbnQpLAogICAgKTsKCiAgICAjIHNldCBkb3dubG9hZCB0eXBlIHRvIGlubGluZQogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdBdHRhY2htZW50RG93bmxvYWRUeXBlJywKICAgICAgICBWYWx1ZSA9PiAnaW5saW5lJwogICAgKTsKCiAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICBteSAkVVJMID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkO0Zvcm1JRD0kU2VsZi0+e0Zvcm1JRH07Q29udGVudElEPSI7CgogICAgIyBzZXQgZmlsZW5hbWUgZm9yIGlubGluZSB2aWV3aW5nCiAgICAkRGF0YXtGaWxlbmFtZX0gPSAiVGlja2V0LSRUaWNrZXR7VGlja2V0TnVtYmVyfS1BcnRpY2xlSUQtJEFydGljbGVEYXRhe0FydGljbGVJRH0uaHRtbCI7CgogICAgIyByZXBsYWNlIGxpbmtzIHRvIGlubGluZSBpbWFnZXMgaW4gaHRtbCBjb250ZW50CiAgICBteSAlQXRtQm94ID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQXR0YWNobWVudEluZGV4KAogICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZURhdGF7QXJ0aWNsZUlEfSwKICAgICk7CgogICAgZm9yIG15ICRGaWxlSUQgKCBrZXlzICVBdG1Cb3ggKSB7CiAgICAgICAgbXkgJUZpbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQXR0YWNobWVudCgKICAgICAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICAgICA9PiAkQXJ0aWNsZURhdGF7QXJ0aWNsZUlEfSwKICAgICAgICAgICAgRmlsZUlEICAgICAgICAgICAgICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICBDb250ZW50TWF5QmVGaWxlaGFuZGxlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkRmlsZURhdGF7RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICYmICRGaWxlRGF0YXtGaWxlbmFtZX0gbmUgJ2ZpbGUtMicgKSB7CgogICAgICAgICAgICAjIGFkZCB1cGxvYWRlZCBmaWxlIHRvIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZURhdGF7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbGVEYXRhe0NvbnRlbnR9LAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEZpbGVEYXRhe0NvbnRlbnRUeXBlfSAuICc7IG5hbWU9IicgLiAkRmlsZURhdGF7RmlsZW5hbWV9IC4gJyInLAogICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJEZpbGVEYXRhe0Rpc3Bvc2l0aW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmV3IGNvbnRlbnQgaWQKICAgIG15ICVDb250ZW50SURzOwoKICAgIG15IEBBdHRhY2htZW50TWV0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0KICAgICk7CgogICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudE1ldGEpIHsKICAgICAgICAkQ29udGVudElEc3sgJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0gfSA9ICRBdHRhY2htZW50LT57Q29udGVudElEfTsKICAgIH0KCiAgICAjIERvIG5vdCBsb2FkIGV4dGVybmFsIGltYWdlcyBpZiAnQmxvY2tMb2FkaW5nUmVtb3RlQ29udGVudCcgaXMgZW5hYmxlZC4KICAgIG15ICRMb2FkRXh0ZXJuYWxJbWFnZXMgPSAxOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkJsb2NrTG9hZGluZ1JlbW90ZUNvbnRlbnQnKSApIHsKICAgICAgICAkTG9hZEV4dGVybmFsSW1hZ2VzID0gMDsKICAgIH0KCiAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVBdG1Cb3gsCiAgICAgICAgQ29udGVudElEcyAgICAgICAgID0+IFwlQ29udGVudElEcywKICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gJExvYWRFeHRlcm5hbEltYWdlcywKICAgICk7CgogICAgIyBpZiB0aGVyZSBpcyB1bmV4cGVjdGVkbHkgcGdwIGRlY3J5cHRlZCBjb250ZW50IGluIHRoZSBodG1sIGVtYWlsIChPRSksCiAgICAjIHdlIHdpbGwgdXNlIHRoZSBhcnRpY2xlIGJvZHkgKHBsYWluIHRleHQpIGZyb20gdGhlIGRhdGFiYXNlIGFzIGZhbGwgYmFjawogICAgIyBzZWUgYnVnIzk2NzIKICAgIGlmICgKICAgICAgICAkRGF0YXtDb250ZW50fSA9fiBtewogICAgICAgIF4gLiogLS0tLS1CRUdJTiBbIF0gUEdQIFsgXSBNRVNTQUdFLS0tLS0gIC4qICQgICAgICAjIGdyZXAgUEdQIGJlZ2luIHRhZwogICAgICAgIC4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBHUCBwYXJ0cyBtYXkgYmUgbmVzdGVkIGluIGh0bWwKICAgICAgICBeIC4qIC0tLS0tRU5EIFsgXSBQR1AgWyBdIE1FU1NBR0UtLS0tLSAgLiogJCAgICAgICAgIyBncmVwIFBHUCBlbmQgdGFnCiAgICB9eG1zCiAgICAgICAgKQogICAgewogICAgICAgICMgaHRtbCBxdW90aW5nCiAgICAgICAgbXkgJEhUTUxCb2R5ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdEZWZhdWx0Vmlld05ld0xpbmUnKSwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEFydGljbGVEYXRhe0JvZHl9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlZmF1bHRWaWV3TGluZXMnKSB8fCA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICREYXRhe0NvbnRlbnR9ID0gJEhUTUxCb2R5OwogICAgfQoKICAgICRBcnRpY2xlRGF0YXtCb2R5fSA9ICREYXRhe0NvbnRlbnR9OwogICAgZGVsZXRlICRBcnRpY2xlRGF0YXtJc0VkaXRlZH07CgogICAgcmV0dXJuICVBcnRpY2xlRGF0YTsKfQoKc3ViIF9Db3B5QXJ0aWNsZUF0dGFjaG1lbnRzVG9VcGxvYWRDYWNoZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgIG15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlSUR9LAogICAgKTsKCiAgICAjIGRlZmluZSBpZiByaWNoIHRleHQgc2hvdWxkIGJlIHVzZWQKICAgICRTZWxmLT57UmljaFRleHR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpab29tUmljaFRleHRGb3JjZScpCiAgICAgICAgfHwgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICB8fCAwOwoKICAgICMgQWx3YXlzIGV4Y2x1ZGUgcGxhaW4gdGV4dCBhdHRhY2htZW50LCBidXQgZXhjbHVkZSBIVE1MIGJvZHkgb25seSBpZiByaWNoIHRleHQgaXMgZW5hYmxlZC4KICAgICRTZWxmLT57RXhjbHVkZUF0dGFjaG1lbnRzfSA9IHsKICAgICAgICBFeGNsdWRlUGxhaW5UZXh0ID0+IDEsCiAgICAgICAgRXhjbHVkZUhUTUxCb2R5ICA9PiAkU2VsZi0+e1JpY2hUZXh0fSwKICAgICAgICBFeGNsdWRlSW5saW5lICAgID0+ICRTZWxmLT57UmljaFRleHR9LAogICAgfTsKCiAgICAjIEdldCBhdHRhY2htZW50IGluZGV4IChleGNsdWRpbmcgYm9keSBhdHRhY2htZW50cykuCiAgICBteSAlQXRtSW5kZXggPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVBdHRhY2htZW50SW5kZXgoCiAgICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlSUR9LAogICAgICAgICV7ICRTZWxmLT57RXhjbHVkZUF0dGFjaG1lbnRzfSB9LAogICAgKTsKCiAgICBGSUxFOgogICAgZm9yIG15ICRGaWxlSUQgKCBzb3J0IGtleXMgJUF0bUluZGV4ICkgewoKICAgICAgICAjIGdldCBhbiBhdHRhY2htZW50CiAgICAgICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQXR0YWNobWVudCgKICAgICAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICAgICA9PiAkUGFyYW17QXJ0aWNsZUlEfSwKICAgICAgICAgICAgRmlsZUlEICAgICAgICAgICAgICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICBDb250ZW50TWF5QmVGaWxlaGFuZGxlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBGSUxFIGlmICEkQXR0YWNobWVudERhdGF7Q29udGVudH07CgogICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgIG15ICRTdWNjZXNzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdhdHRhY2htZW50JywKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnREYXRhe0ZpbGVuYW1lfSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudERhdGF7Q29udGVudFR5cGV9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcHJlIGxvYWRlZCBhdHRhY2htZW50CiAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgKTsKCiAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgbXkgJVVwbG9hZFN0dWZmID0gJFBhcmFtT2JqZWN0LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgUGFyYW0gPT4gJ0ZpbGVVcGxvYWQnLAogICAgKTsKCiAgICBpZiAoJVVwbG9hZFN0dWZmKSB7CiAgICAgICAgcHVzaCBAQXR0YWNobWVudHMsIFwlVXBsb2FkU3R1ZmY7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Modules/AgentTicketArticleEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBcnRpY2xlRWRpdC5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47Cgp1c2UgcGFyZW50IHF3KCBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0QWN0aW9uQ29tbW9uICk7CgojIGNvcmUgbW9kdWxlcwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEpOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkU2VsZi0+e1RpY2tldElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUaWNrZXRJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgc2V0IEFydGljbGVFZGl0IHNwZWNpZmljIHBhcmFtcwogICAgJFNlbGYtPntBcnRpY2xlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FydGljbGVJRCcgKTsKCiAgICBpZiAoICEkU2VsZi0+e0FydGljbGVJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQXJ0aWNsZUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRDb25maWcgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgcHJldmVudCBzaGVuYW5pZ2FucwogICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFydGljbGVJRCAgICAgICAgICAgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgIFNob3dEZWxldGVkQXJ0aWNsZXMgPT4gMSwKICAgICk7CgogICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICApOwoKICAgICMgc2hvdyAibm8gcGVybWlzc2lvbiIgZXJyb3Igc2NyZWVuIHRvIGdpdmUgbWluaW1hbCBpbmZvIGlmIFRpY2tldElEIGFuZCBBcnRpY2xlSUQgZG8gbm90IG1hdGNoCiAgICBpZiAoICElQXJ0aWNsZSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRDb25maWctPntQZXJtaXNzaW9ufSApLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayB3aGV0aGVyIHRoaXMgYXJ0aWNsZSB0eXBlIGlzIGVsaWdpYmxlIGZvciBjaGFuZ2luZwogICAgbXkgJENoYW5uZWxOYW1lICAgID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpOwogICAgbXkgJEFydGljbGVBY3Rpb25zID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zIiktPnskQ2hhbm5lbE5hbWV9OwoKICAgICMgY2FsbCBwZXJtaXNzaW9uIGNoZWNrIG9mIGNvcnJlc3BvbmRpbmcgYXJ0aWNsZSBhY3Rpb24KICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJEFjdGlvblN0cmcgPSAnQWdlbnRUaWNrZXRBcnRpY2xlRWRpdCc7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlJyApIHsKICAgICAgICAgICAgJEFjdGlvblN0cmcgPSAnQWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlJzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1Jlc3RvcmUnICkgewogICAgICAgICAgICAkQWN0aW9uU3RyZyA9ICdBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlJzsKICAgICAgICB9CiAgICB9CiAgICBteSAkQWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCggJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjonIC4gJEFjdGlvblN0cmcgKS0+Q2hlY2tBY2Nlc3MoCiAgICAgICAgVGlja2V0ICAgICAgICAgID0+IFwlVGlja2V0LAogICAgICAgIEFydGljbGUgICAgICAgICA9PiBcJUFydGljbGUsCiAgICAgICAgQ2hhbm5lbE5hbWUgICAgID0+ICRDaGFubmVsTmFtZSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIEFjbEFjdGlvbkxvb2t1cCA9PiB7CiAgICAgICAgICAgICRBY3Rpb25TdHJnID0+IDEsCiAgICAgICAgfSwKICAgICk7CiAgICBpZiAoICEkQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaGlzIGFjdGlvbiBpcyBub3QgcGVybWl0dGVkIG9uIHRoZSBhcnRpY2xlIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FydGljbGVEZWxldGUnICkgewogICAgICAgIGlmICggISRBcnRpY2xlQWN0aW9ucy0+eydBZ2VudFRpY2tldEFydGljbGVEZWxldGUnfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQXJ0aWNsZURlbGV0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENvbmZpZyA9PiAkQ29uZmlnLAogICAgICAgICk7CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FydGljbGVSZXN0b3JlJyApIHsKICAgICAgICBpZiAoICEkQXJ0aWNsZUFjdGlvbnMtPnsnQWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZSd9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9BcnRpY2xlRGVsZXRpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ29uZmlnICA9PiAkQ29uZmlnLAogICAgICAgICAgICBSZXN0b3JlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGVsc2Ugd2UgYXJlIGluIG5vcm1hbCBlZGl0IG1vZGUKICAgIGVsc2lmICggISRBcnRpY2xlQWN0aW9ucy0+eydBZ2VudFRpY2tldEFydGljbGVFZGl0J30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgIyBjaGVjayBpZiBjYWxsaW5nIHRoaXMgbWFzayBpcyBhbGxvd2VkCiAgICBpZiAoCiAgICAgICAgKCAkQXJ0aWNsZXtJc1Zpc2libGVGb3JDdXN0b21lcn0gJiYgISRDb25maWctPntBcnRpY2xlQ3VzdG9tZXJWaXNpYmxlfSApCiAgICAgICAgfHwgKCAkQXJ0aWNsZXtTZW5kZXJUeXBlfSBlcSAnY3VzdG9tZXInICYmICEkQ29uZmlnLT57RWRpdEN1c3RvbWVyQXJ0aWNsZXN9ICkKICAgICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnVGhpcyBhcnRpY2xlIGlzIG5vdCBlZGl0YWJsZSEnICksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CgogICAgcmV0dXJuICRTZWxmLT5TVVBFUjo6UnVuKCVQYXJhbSk7Cn0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnID8gMSA6IDA7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgcmVuZGVyIHRpY2tldCB0eXBlIGR5bmFtaWMgZmllbGRzCiAgICBteSAkVGlja2V0VHlwZUR5bmFtaWNGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RHluYW1pY0ZpZWxkOjpNYXNrJyktPkVkaXRTZWN0aW9uUmVuZGVyKAogICAgICAgIENvbnRlbnQgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0TWFza0RlZmluaXRpb259LAogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwKICAgICAgICBEeW5hbWljRmllbGRWYWx1ZXMgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkfSwKICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUGFyYW17REZQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgRXJyb3JzICAgICAgICAgICAgICAgPT4gJFBhcmFte0RGRXJyb3JzfSwKICAgICAgICBWaXNpYmlsaXR5ICAgICAgICAgICA9PiAkUGFyYW17VmlzaWJpbGl0eX0sCiAgICAgICAgT2JqZWN0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBDdXN0b21lcklEICAgICA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZH0tPiUqLAogICAgICAgIH0sCiAgICApOwoKICAgICMgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCiAgICBpZiAoCiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApCiAgICAgICAgfHwKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJENvbmZpZy0+e1NlcnZpY2V9ICkgICAgICAgICB8fAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHx8CiAgICAgICAgJENvbmZpZy0+e1RpdGxlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAkQ29uZmlnLT57UXVldWV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICRDb25maWctPntPd25lcn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgJENvbmZpZy0+e1N0YXRlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAkQ29uZmlnLT57UHJpb3JpdHl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgIGFueSB7ICRfLT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgfSB2YWx1ZXMgJFNlbGYtPntEeW5hbWljRmllbGR9LT4lKgogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnV2lkZ2V0VGlja2V0QWN0aW9ucycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiAkVGlja2V0VHlwZUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17SGlkZUF1dG9zZWxlY3RlZH0gKSB7CgogICAgICAgICMgYWRkIEF1dG9zZWxlY3QgSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgQ29kZSA9PiAiQ29yZS5Gb3JtLkluaXRIaWRlQXV0b3NlbGVjdGVkKHsgRmllbGRJRHM6ICRQYXJhbXtIaWRlQXV0b3NlbGVjdGVkfSB9KTsiLAogICAgICAgICk7CiAgICB9CgogICAgIyB0eXBlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApIHsKICAgICAgICBteSAlVHlwZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplIEZvcm1VcGRhdGUgJyAuICggJFBhcmFte0Vycm9yc30tPntUeXBlSURJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUeXBlLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1R5cGVJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUeXBlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2VydmljZXMKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSAmJiAkQ29uZmlnLT57U2VydmljZX0gKSB7CiAgICAgICAgbXkgJFNlcnZpY2VzID0gJFNlbGYtPl9HZXRTZXJ2aWNlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXNldCBwcmV2aW91cyBTZXJ2aWNlSUQgdG8gcmVzZXQgU0xBLUxpc3QgaWYgbm8gc2VydmljZSBpcyBzZWxlY3RlZAogICAgICAgIGlmICggISRQYXJhbXtTZXJ2aWNlSUR9IHx8ICEkU2VydmljZXMtPnsgJFBhcmFte1NlcnZpY2VJRH0gfSApIHsKICAgICAgICAgICAgJFBhcmFte1NlcnZpY2VJRH0gPSAnJzsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtTZXJ2aWNlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkU2VydmljZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ1NlcnZpY2VJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gIk1vZGVybml6ZSBGb3JtVXBkYXRlICIKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57U2VydmljZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17U2VydmljZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ1RyZWVWaWV3JywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmVlVmlldywKICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U2VydmljZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAlU0xBID0gJFRpY2tldE9iamVjdC0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtTTEFTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlU0xBLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdTTEFJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAiTW9kZXJuaXplIEZvcm1VcGRhdGUgIgogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTTEFNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte1NlcnZpY2VJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTTEEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFNMQU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U0xBTWFuZGF0b3J5fSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSApIHsKCiAgICAgICAgIyBmZXRjaCBhbGwgcXVldWVzCiAgICAgICAgbXkgJU1vdmVRdWV1ZXMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRNb3ZlTGlzdCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBUeXBlICAgICA9PiAnbW92ZV9pbnRvJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBtb3ZlIHF1ZXVlcwogICAgICAgICRQYXJhbXtRdWV1ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkFnZW50UXVldWVMaXN0T3B0aW9uKAogICAgICAgICAgICBEYXRhICAgICA9PiB7ICVNb3ZlUXVldWVzLCAnJyA9PiAnLScgfSwKICAgICAgICAgICAgTXVsdGlwbGUgPT4gMCwKICAgICAgICAgICAgU2l6ZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgPT4gJ05ld1F1ZXVlSUQgTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntRdWV1ZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3UXVldWVJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmV3UXVldWVJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICAgID0+ICRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICAgICAgVHJlZVZpZXcgICAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICBDdXJyZW50UXVldWVJRCA9PiAkUGFyYW17UXVldWVJRH0sCiAgICAgICAgICAgIE9uQ2hhbmdlU3VibWl0ID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXVlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBRdWV1ZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57UXVldWVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0KICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUXVldWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgIG15ICRVc2VyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICBpZiAoICRDb25maWctPntPd25lcn0gKSB7CgogICAgICAgICMgZ2V0IHVzZXIgb2Ygb3duIGdyb3VwcwogICAgICAgIG15ICVTaG93blVzZXJzOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAlQWxsR3JvdXBzTWVtYmVyczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnb3duZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdOZXdPd25lcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG9sZCBvd25lcgogICAgICAgIG15IEBPbGRVc2VySW5mbyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyTGlzdCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgICAgICBteSBAT2xkT3duZXJzOwogICAgICAgIG15ICVPbGRPd25lcnNTaG93bjsKICAgICAgICBteSAlU2Vlbk9sZE93bmVyOwogICAgICAgIGlmIChAT2xkVXNlckluZm8pIHsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAxOwogICAgICAgICAgICBVU0VSOgogICAgICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBPbGRVc2VySW5mbyApIHsKCiAgICAgICAgICAgICAgICAjIHNraXAgaWYgb2xkIG93bmVyIGlzIGFscmVhZHkgaW4gdGhlIGxpc3QKICAgICAgICAgICAgICAgIG5leHQgVVNFUiBpZiAkU2Vlbk9sZE93bmVyeyAkVXNlci0+e1VzZXJJRH0gfTsKICAgICAgICAgICAgICAgICRTZWVuT2xkT3duZXJ7ICRVc2VyLT57VXNlcklEfSB9ID0gMTsKICAgICAgICAgICAgICAgIG15ICRLZXkgICA9ICRVc2VyLT57VXNlcklEfTsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgICAgIHB1c2ggQE9sZE93bmVycywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRPbGRPd25lcnNTaG93bnskS2V5fSA9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRPbGRPd25lclNlbGVjdGVkSUQgPSAnJzsKICAgICAgICBpZiAoICRQYXJhbXtPbGRPd25lcklEfSApIHsKICAgICAgICAgICAgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICRQYXJhbXtPbGRPd25lcklEfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkT2xkVXNlckluZm9bMF0tPntVc2VySUR9ICkgewogICAgICAgICAgICAkT2xkT3duZXJTZWxlY3RlZElEID0gJE9sZFVzZXJJbmZvWzBdLT57VXNlcklEfSAuICcxJzsKICAgICAgICB9CgogICAgICAgIG15ICRPbGRPd25lckFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ09sZE93bmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJU9sZE93bmVyc1Nob3duLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJE9sZE93bmVyQUNMKSB7CiAgICAgICAgICAgICVPbGRPd25lcnNTaG93biA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgc3RyaW5nCiAgICAgICAgJFBhcmFte093bmVyU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte05ld093bmVySUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdOZXdPd25lcklEJywKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntPd25lck1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3T3duZXJJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIEZpbHRlcnMgICAgICA9PiB7CiAgICAgICAgICAgICAgICBPbGRPd25lcnMgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ByZXZpb3VzIE93bmVyJyksCiAgICAgICAgICAgICAgICAgICAgVmFsdWVzID0+IFwlT2xkT3duZXJzU2hvd24sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPd25lcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgT3duZXJNYW5kYXRvcnkgPT4gJENvbmZpZy0+e093bmVyTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6UmVzcG9uc2libGUnKSAmJiAkQ29uZmlnLT57UmVzcG9uc2libGV9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEICAgICAgICA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ3Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCByZXNwb25zaWJsZQogICAgICAgICRQYXJhbXtSZXNwb25zaWJsZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSBGb3JtVXBkYXRlICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57UmVzcG9uc2libGVNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld1Jlc3BvbnNpYmxlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBSZXNwb25zaWJsZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57UmVzcG9uc2libGVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICB9CgogICAgaWYgKCAkQ29uZmlnLT57U3RhdGV9ICkgewoKICAgICAgICBteSAlU3RhdGU7CiAgICAgICAgbXkgJVN0YXRlTGlzdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlTGlzdCgKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZURlZmF1bHR9ICkgewogICAgICAgICAgICAgICAgJFN0YXRle1NlbGVjdGVkVmFsdWV9ID0gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTdGF0ZXtTZWxlY3RlZElEfSA9ICRQYXJhbXtOZXdTdGF0ZUlEfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgbmV4dCBzdGF0ZXMgc3RyaW5nCiAgICAgICAgJFBhcmFte1N0YXRlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgPT4gXCVTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgID0+ICdOZXdTdGF0ZUlEJywKICAgICAgICAgICAgQ2xhc3MgPT4gJ01vZGVybml6ZSBGb3JtVXBkYXRlICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld1N0YXRlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+ICRDb25maWctPntTdGF0ZURlZmF1bHR9ID8gMCA6IDEsCiAgICAgICAgICAgICVTdGF0ZSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdGF0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU3RhdGVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1N0YXRlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkQ29uZmlnLT57U3RhdGVUeXBlfSApICkgewoKICAgICAgICAgICAgU1RBVEVUWVBFOgogICAgICAgICAgICBmb3IgbXkgJFN0YXRlVHlwZSAoIEB7ICRDb25maWctPntTdGF0ZVR5cGV9IH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBTVEFURVRZUEUgaWYgISRTdGF0ZVR5cGU7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRSBpZiAkU3RhdGVUeXBlICF+IC9wZW5kaW5nL2k7CgogICAgICAgICAgICAgICAgIyBnZXQgdXNlZCBjYWxlbmRhcgogICAgICAgICAgICAgICAgbXkgJENhbGVuZGFyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q2FsZW5kYXJHZXQoCiAgICAgICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFF1aWNrRGF0ZUJ1dHRvbnMgPSAkQ29uZmlnLT57UXVpY2tEYXRlQnV0dG9uc30gLy8gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpEZWZhdWx0UXVpY2tEYXRlQnV0dG9ucycpOwoKICAgICAgICAgICAgICAgICRQYXJhbXtEYXRlU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gNSwKICAgICAgICAgICAgICAgICAgICBEaWZmVGltZSAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6UGVuZGluZ0RpZmZUaW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgfHwgMCwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGF0ZUludmFsaWR9IHx8ICcgJywKICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZSAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGF0ZUluRnV0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIgICAgICAgICAgICAgPT4gJENhbGVuZGFyLAogICAgICAgICAgICAgICAgICAgIFF1aWNrRGF0ZUJ1dHRvbnMgICAgID0+ICRRdWlja0RhdGVCdXR0b25zLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGF0ZVBlbmRpbmcnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbGFzdCBTVEFURVRZUEU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcHJpb3JpdHkKICAgIGlmICggJENvbmZpZy0+e1ByaW9yaXR5fSApIHsKCiAgICAgICAgbXkgJVByaW9yaXR5OwogICAgICAgIG15ICVQcmlvcml0eUxpc3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICApOwogICAgICAgIGlmICggISRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICAgICAkUHJpb3JpdHlMaXN0eycnfSA9ICctJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJFBhcmFte05ld1ByaW9yaXR5SUR9ICkgewogICAgICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkVmFsdWV9ID0gJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQcmlvcml0eXtTZWxlY3RlZElEfSA9ICRQYXJhbXtOZXdQcmlvcml0eUlEfTsKICAgICAgICB9CiAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkSUR9IHx8PSAkUGFyYW17UHJpb3JpdHlJRH07CiAgICAgICAgJFBhcmFte1ByaW9yaXR5U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgPT4gXCVQcmlvcml0eUxpc3QsCiAgICAgICAgICAgIE5hbWUgID0+ICdOZXdQcmlvcml0eUlEJywKICAgICAgICAgICAgQ2xhc3MgPT4gJ01vZGVybml6ZSBGb3JtVXBkYXRlJywKICAgICAgICAgICAgJVByaW9yaXR5LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByaW9yaXR5JywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCgogICAgIyBXaWRnZXQgQXJ0aWNsZQogICAgbXkgJEFydGljbGVFZGl0aW5nRW5hYmxlZCA9IDA7CiAgICBpZiAoICRDb25maWctPntBcnRpY2xlfSApIHsKCiAgICAgICAgIyBpZiBub3QgZ2l2ZW4gKGUuZy4gaW4gZXJyb3IgY2FzZSksIGZldGNoIGNvbW11bmljYXRpb24gY2hhbm5lbCBpZCBieSBhcnRpY2xlIGlkCiAgICAgICAgaWYgKCAhJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsSUR9ICYmICRTZWxmLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgbXkgQEJhc2VBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoQEJhc2VBcnRpY2xlcykgewogICAgICAgICAgICAgICAgJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsSUR9ID0gJEJhc2VBcnRpY2xlc1swXS0+e0NvbW11bmljYXRpb25DaGFubmVsSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlQ29tbXVuaWNhdGlvbkNoYW5uZWwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29tbXVuaWNhdGlvbkNoYW5uZWwnKS0+Q2hhbm5lbEdldCgKICAgICAgICAgICAgQ2hhbm5lbElEICAgPT4gJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsSUR9LAogICAgICAgICk7CiAgICAgICAgJEFydGljbGVFZGl0aW5nRW5hYmxlZCA9ICRTZWxmLT5fQ2hlY2tBcnRpY2xlRWRpdGluZ0VuYWJsZWQoCiAgICAgICAgICAgIEFydGljbGUgICAgICAgICAgICAgID0+ICRDb25maWctPntBcnRpY2xlfSwKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJENvbW11bmljYXRpb25DaGFubmVse0NoYW5uZWxOYW1lfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckFydGljbGUoCiAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICApOwogICAgbXkgJUFydGljbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgKTsKCiAgICAkUGFyYW17V2lkZ2V0U3RhdHVzfSA9ICdFeHBhbmRlZCc7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnV2lkZ2V0QXJ0aWNsZScsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICBpZiAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgKSB7CiAgICAgICAgJFBhcmFte1N1YmplY3RSZXF1aXJlZH0gPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgICRQYXJhbXtCb2R5UmVxdWlyZWR9ICAgID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICAjIHNldCBjdXN0b21lciB2aXNpYmlsaXR5IG9mIHRoaXMgbm90ZSB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgYXJ0aWNsZSBmb3Igd2hvbSB0aGlzIGlzIHRoZSByZXBseQogICAgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSAvLz0gJEFydGljbGVEYXRhe0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgIWRlZmluZWQgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ID0gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgfQogICAgZWxzaWYgKCAhZGVmaW5lZCAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gPSAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJEZWZhdWx0fTsKICAgIH0KCiAgICAjIHNob3cgYXR0YWNobWVudHMKICAgIGlmICggJEFydGljbGVFZGl0aW5nRW5hYmxlZCApIHsKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9CiAgICAgICAgICAgICAgICAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvaW1hZ2UvaSApCiAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRhY2htZW50TGlzdH0gfSwgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQogICAgfQoKICAgICMgcmVuZGVyIGFydGljbGUgdHlwZSBkeW5hbWljIGZpZWxkcwogICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkR5bmFtaWNGaWVsZDo6TWFzaycpLT5FZGl0U2VjdGlvblJlbmRlcigKICAgICAgICBDb250ZW50ICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FydGljbGVNYXNrRGVmaW5pdGlvbn0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGR9LAogICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQYXJhbXtERlBvc3NpYmxlVmFsdWVzfSwKICAgICAgICBFcnJvcnMgICAgICAgICAgICAgICA9PiAkUGFyYW17REZFcnJvcnN9LAogICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+ICRQYXJhbXtWaXNpYmlsaXR5fSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgYWxsIHVzZXIgaWRzIG9mIGFnZW50cywgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhpcyBkaWFsb2cKICAgICMgYmFzZWQgb24gcXVldWUgcmlnaHRzCiAgICBteSAlU2hvd25Vc2VyczsKICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgVHlwZSAgICA9PiAnbm90ZScsCiAgICApOwogICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBlbWFpbCBwYXJzZXIgb2JqZWN0CiAgICBteSAkRW1haWxQYXJzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXItPm5ldygKICAgICAgICBNb2RlICA9PiAnU3RhbmRhbG9uZScsCiAgICAgICAgRGVidWcgPT4gMCwKICAgICk7CgogICAgIyBjaGVjayBhbmQgcmV0cmlldmUgaW52b2x2ZWQgYW5kIGluZm9ybWVkIGFnZW50cyBvZiBSZXBseVRvIE5vdGUKICAgIG15IEBSZXBseVRvVXNlcnM7CiAgICBteSAlUmVwbHlUb1VzZXJzSGFzaDsKICAgIG15ICVSZXBseVRvVXNlcklEczsKICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CiAgICAgICAgbXkgQFJlcGx5VG9QYXJ0cyA9ICRFbWFpbFBhcnNlck9iamVjdC0+U3BsaXRBZGRyZXNzTGluZSgKICAgICAgICAgICAgTGluZSA9PiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0tPntUb30gfHwgJycsCiAgICAgICAgKTsKCiAgICAgICAgUkVQTFlUT1BBUlQ6CiAgICAgICAgZm9yIG15ICRTaW5nbGVSZXBseVRvUGFydCAoQFJlcGx5VG9QYXJ0cykgewogICAgICAgICAgICBteSAkUmVwbHlUb0FkZHJlc3MgPSAkRW1haWxQYXJzZXJPYmplY3QtPkdldEVtYWlsQWRkcmVzcygKICAgICAgICAgICAgICAgIEVtYWlsID0+ICRTaW5nbGVSZXBseVRvUGFydCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUkVQTFlUT1BBUlQgaWYgISRSZXBseVRvQWRkcmVzczsKICAgICAgICAgICAgcHVzaCBAUmVwbHlUb1VzZXJzLCAkUmVwbHlUb0FkZHJlc3M7CiAgICAgICAgfQoKICAgICAgICAkUmVwbHlUb1VzZXJzSGFzaHskX30rKyBmb3IgQFJlcGx5VG9Vc2VyczsKCiAgICAgICAgIyBnZXQgdXNlciBpZHMgb2YgYXZhaWxhYmxlIHVzZXJzCiAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgICAgIG15ICVVc2VyRGF0YSA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFVzZXJFbWFpbCA9ICRVc2VyRGF0YXtVc2VyRW1haWx9OwogICAgICAgICAgICBpZiAoICRSZXBseVRvVXNlcnNIYXNoeyRVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgb3JpZ2luYWwgbm90ZSBzZW5kZXIgdG8gbGlzdCBvZiB1c2VyIGlkcwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBAeyAkU2VsZi0+e1JlcGx5VG9TZW5kZXJVc2VySUR9IH0gKSB7CgogICAgICAgICAgICAjIGlmIHNlbmRlciByZXBsaWVzIHRvIGhpbXNlbGYsIGRvIG5vdCBpbmNsdWRlIHNlbmRlciBpbiBsaXN0CiAgICAgICAgICAgIGlmICggJFVzZXJJRCBuZSAkU2VsZi0+e1VzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSB1c2VyIGlkIG9mIGFjdGl2ZSB1c2VyCiAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3sgJFNlbGYtPntVc2VySUR9IH07CiAgICB9CgogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICYmICggJENvbmZpZy0+e0luZm9ybUFnZW50fSB8fCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWRkaXRpb25hbEFnZW50cycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBhbGwgYWdlbnRzIGZvciAiaW52b2x2ZWQgYWdlbnRzIgogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICYmICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKCiAgICAgICAgbXkgQFVzZXJJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJbnZvbHZlZEFnZW50c0xpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBJbnZvbHZlZEFnZW50czsKICAgICAgICBteSAkQ291bnRlciA9IDE7CgogICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgbXkgJUFnZW50V2l0aFBlcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgKTsKCiAgICAgICAgVVNFUjoKICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBVc2VySURzICkgewoKICAgICAgICAgICAgbmV4dCBVU0VSIGlmICFkZWZpbmVkICRBZ2VudFdpdGhQZXJtaXNzaW9ueyAkVXNlci0+e1VzZXJJRH0gfTsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgaWYgKCAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgLj0gIiAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0iOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJbnZvbHZlZEFnZW50cywgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFVzZXItPntVc2VySUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBhZGQgaW52b2x2ZWQgdXNlciBhcyBzZWxlY3RlZCBlbnRyaWVzLCBpZiBhdmFpbGFibGUgaW4gUmVwbHlUb0FkZHJlc3NlcyBsaXN0CiAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEludm9sdmVkVXNlcklELCAkVXNlci0+e1VzZXJJRH07CiAgICAgICAgICAgICAgICBkZWxldGUgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEludm9sdmVkQWdlbnRTaXplID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpJbnZvbHZlZEFnZW50TWF4U2l6ZScpIHx8IDM7CiAgICAgICAgJFBhcmFte0ludm9sdmVkQWdlbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFxASW52b2x2ZWRBZ2VudHMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gXEBJbnZvbHZlZFVzZXJJRCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW52b2x2ZWRVc2VySUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEludm9sdmVkQWdlbnRTaXplLAogICAgICAgICk7CgogICAgICAgICMgYmxvY2sgaXMgY2FsbGVkIGJlbG93ICJpbmZvcm0gYWdlbnRzIgogICAgfQoKICAgICMgYWdlbnQgbGlzdAogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICYmICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CgogICAgICAgICMgZ2V0IGluZm9ybSB1c2VyIGxpc3QKICAgICAgICBteSAlSW5mb3JtQWdlbnRzOwogICAgICAgIG15IEBJbmZvcm1Vc2VySUQgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwogICAgICAgIG15ICVJbmZvcm1BZ2VudExpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlSW5mb3JtQWdlbnRMaXN0ICkgewogICAgICAgICAgICAkSW5mb3JtQWdlbnRzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgIyBnZXQgZW1haWwgYWRkcmVzcyBvZiBhbGwgdXNlcnMgYW5kIGNvbXBhcmUgdG8gcmVwbHl0by1hZGRyZXNzZXMKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJUluZm9ybUFnZW50cyApIHsKICAgICAgICAgICAgICAgIGlmICggJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQEluZm9ybVVzZXJJRCwgJFVzZXJJRDsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSW5mb3JtQWdlbnRTaXplID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpJbmZvcm1BZ2VudE1heFNpemUnKQogICAgICAgICAgICB8fCAzOwogICAgICAgICRQYXJhbXtPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlSW5mb3JtQWdlbnRzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+IFxASW5mb3JtVXNlcklELAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdJbmZvcm1Vc2VySUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEluZm9ybUFnZW50U2l6ZSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZ2VudCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGludm9sdmVkCiAgICBpZiAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgJiYgJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW52b2x2ZWRBZ2VudCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBsaXN0IG9mIGFnZW50cywgdGhhdCByZWNlaXZlIHRoaXMgbm90ZSAoUmVwbHlUb05vdGUpCiAgICAjIGF0IGxlYXN0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlIGFuZCBhbGwgcmVjaXBpZW50cyBvZiB0aGUgb3JpZ2luYWwgbm90ZQogICAgIyB0aGF0IGNvdWxkbid0IGJlIHNlbGVjdGVkIHdpdGggaW52b2x2ZWQvaW5mb3JtIGFnZW50cwogICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgbXkgJFVzZXJzSGFzaFNpemUgPSBrZXlzICVSZXBseVRvVXNlcklEczsKICAgICAgICBteSAkQ291bnRlciAgICAgICA9IDA7CiAgICAgICAgJFBhcmFte1VzZXJMaXN0V2l0aG91dFNlbGVjdGlvbn0gPSBqb2luKCAnLCcsIGtleXMgJVJlcGx5VG9Vc2VySURzICk7CgogICAgICAgIGlmICggJFVzZXJzSGFzaFNpemUgPiAwICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVJlcGx5VG9Vc2VySURzICkgewogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlVXNlckRhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGEgc2VwYXJhdG9yIChJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uU2luZ2xlVXNlclNlcGFyYXRvciksCiAgICAgICAgICAgICAgICAjIGlmIG5vdCBsYXN0IGVudHJ5CiAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyIDwgJFVzZXJzSGFzaFNpemUgKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVVzZXJEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdWJqZWN0JywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZy0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSXNWaXNpYmxlRm9yQ3VzdG9tZXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgdGltZSBhY2NvdW50aW5nIGJveAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFjY291bnRUaW1lJykgJiYgKCAkQ29uZmlnLT57VGltZVVuaXRzfSB8fCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICkgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHNXcmFwcGVyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgIGlmICggJEFydGljbGVFZGl0aW5nRW5hYmxlZCAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzTGFiZWxNYW5kYXRvcnknLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBhcmFte1RpbWVVbml0c1JlcXVpcmVkfSA9ICdWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0c0xhYmVsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQYXJhbXtUaW1lVW5pdHNSZXF1aXJlZH0gPSAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgJiYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpICkKICAgICAgICAgICAgICAgID8gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJwogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0cycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IEFydGljbGUKCiAgICAjIGV4cGxhbmF0b3J5IG1lc3NhZ2UgYWJvdXQgYXN0ZXJpc2sKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBc3Rlcmlza0V4cGxhbmF0aW9uJykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FzdGVyaXNrRXhwbGFuYXRpb24nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgKTsKfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCnN1YiBfQXJ0aWNsZURlbGV0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJFBhcmFte0NvbmZpZ317UGVybWlzc2lvbn0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICApOwoKICAgICMgZXJyb3Igc2NyZWVuLCBkb24ndCBzaG93IHRpY2tldAogICAgaWYgKCAhJEFjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRQYXJhbXtDb25maWd9e1Blcm1pc3Npb259ICksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICBteSAlUG9zc2libGVBY3Rpb25zID0gKCAxID0+ICRTZWxmLT57QWN0aW9ufSApOwoKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0FjdGlvbicsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJUFjbEFjdGlvbiA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbEFjdGlvbkRhdGEoKTsKCiAgICAjIGNoZWNrIGlmIEFDTCByZXN0cmljdGlvbnMgZXhpc3QKICAgIGlmICgkQUNMKSB7CgogICAgICAgIG15ICVBY2xBY3Rpb25Mb29rdXAgPSByZXZlcnNlICVBY2xBY3Rpb247CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4gaWYgQUNMIHByb2hpYml0cyB0aGlzIGFjdGlvbgogICAgICAgIGlmICggISRBY2xBY3Rpb25Mb29rdXB7ICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICBteSAkU3VjY2VzczsKICAgIGlmICggJFBhcmFte1Jlc3RvcmV9ICkgewoKICAgICAgICAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5BcnRpY2xlUmVzdG9yZSgKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdFcnJvciB0cnlpbmcgdG8gcmVzdG9yZSBhcnRpY2xlIGlkOiAnIC4gJFNlbGYtPntBcnRpY2xlSUR9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGVsc2UgewoKICAgICAgICAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5BcnRpY2xlRGVsZXRlKAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0Vycm9yIHRyeWluZyB0byBkZWxldGUgYXJ0aWNsZSBpZDogJyAuICRTZWxmLT57QXJ0aWNsZUlEfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+X1RpY2tldENhY2hlQ2xlYXIoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcwogICAgICAgIH0sCiAgICApOwoKICAgICMgc2VuZCBKU09OIHJlc3BvbnNlCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CnN1YiBfQ2hlY2tBcnRpY2xlRWRpdGluZ0VuYWJsZWQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb21tdW5pY2F0aW9uQ2hhbm5lbH07CiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtBcnRpY2xlfTsKCiAgICBpZiAoJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsfSBlcSAnUGhvbmUnIHx8ICRQYXJhbXtDb21tdW5pY2F0aW9uQ2hhbm5lbH0gZXEgJ0ludGVybmFsJykgewogICAgICAgIGlmICggJFBhcmFte0FydGljbGV9IGVxICdCb3RoJyApIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte0FydGljbGV9IGVxICRQYXJhbXtDb21tdW5pY2F0aW9uQ2hhbm5lbH0gKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0QXJ0aWNsZURlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCiMgb3B0aW9uYWwgQWNsQWN0aW9uTG9va3VwCnN1YiBDaGVja0FjY2VzcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIENoYW5uZWxOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdCcpOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyAgICAgcmV0dXJuIGlmICRQYXJhbXtDaGFubmVsTmFtZX0gbmUgJ0ludGVybmFsJzsKIyAgICAgcmV0dXJuIGlmICRQYXJhbXtBcnRpY2xlfS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKICAgIHJldHVybiBpZiAoICRQYXJhbXtBcnRpY2xlfXtJc1Zpc2libGVGb3JDdXN0b21lcn0gJiYgISRDb25maWctPntBcnRpY2xlQ3VzdG9tZXJWaXNpYmxlfSApOwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e1NlbmRlclR5cGV9IGVxICdjdXN0b21lcicgJiYgISRDb25maWctPntFZGl0Q3VzdG9tZXJBcnRpY2xlc30gKTsKIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICByZXR1cm4gaWYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6Ok1JTUVCYXNlOjpBcnRpY2xlU3RvcmFnZScpID1+IG0vQXJ0aWNsZVN0b3JhZ2VTMy87CgogICAgIyBOT1RFIGNoZWNraW5nIGZvciBBZ2VudFRpY2tldEFydGljbGVFZGl0IGJlY2F1c2UKICAgICMgICBBZ2VudFRpY2tldEFydGljbGVEZWxldGUgaGFzIG5vIG1vZHVsZSBjb25maWcgb24gaXRzIG93bgogICAgIyAgIGFuZCBwZXJtaXNzaW9uIGlzIHZpZXdlZCBhcyB0cmFuc2ZlcmFibGUgZnJvbSBBZ2VudFRpY2tldEFydGljbGVFZGl0CiAgICAjIGNoZWNrIGlmIG1vZHVsZSBpcyByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgIyBjaGVjayBBY2wKICAgIHJldHVybiBpZiAhJFBhcmFte0FjbEFjdGlvbkxvb2t1cH0tPntBZ2VudFRpY2tldEFydGljbGVFZGl0fTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgbXkgJE9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISRPazsKICAgIH0KICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgbXkgJExvY2tlZCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9CiAgICAgICAgKTsKICAgICAgICBpZiAoJExvY2tlZCkgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICEkQWNjZXNzT2s7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57RGVsZXRlZFZlcnNpb25JRH07CgogICAgbXkgJU1lbnVJdGVtID0gKAogICAgICAgIEl0ZW1UeXBlICAgID0+ICdMaW5rJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiBUcmFuc2xhdGFibGUoJ0RlbGV0ZSB0aGlzIGFydGljbGUnKSwKICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlbGV0ZScpLAogICAgICAgIENsYXNzICAgICAgID0+ICdBcnRpY2xlRGVsZXRlJywKICAgICAgICBMaW5rICAgICAgICA9PgogICAgICAgICAgICAiQWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kUGFyYW17VGlja2V0fS0+e1RpY2tldElEfTtBcnRpY2xlSUQ9JFBhcmFte0FydGljbGV9LT57QXJ0aWNsZUlEfSIsCiAgICApOwoKICAgIHJldHVybiAoIFwlTWVudUl0ZW0gKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlRWRpdC5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKIyBvcHRpb25hbCBBY2xBY3Rpb25Mb29rdXAKc3ViIENoZWNrQWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0IEFydGljbGUgQ2hhbm5lbE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICByZXR1cm4gaWYgJFBhcmFte0NoYW5uZWxOYW1lfSBuZSAnSW50ZXJuYWwnOwojICAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgcmV0dXJuIGlmICgkUGFyYW17QXJ0aWNsZX17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICYmICEkQ29uZmlnLT57QXJ0aWNsZUN1c3RvbWVyVmlzaWJsZX0pOwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e1NlbmRlclR5cGV9IGVxICdjdXN0b21lcicgJiYgISRDb25maWctPntFZGl0Q3VzdG9tZXJBcnRpY2xlc30gKTsKIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICByZXR1cm4gaWYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6Ok1JTUVCYXNlOjpBcnRpY2xlU3RvcmFnZScpID1+IG0vQXJ0aWNsZVN0b3JhZ2VTMy87CgogICAgIyBjaGVjayBpZiBtb2R1bGUgaXMgcmVnaXN0ZXJlZAogICAgcmV0dXJuIGlmICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50VGlja2V0QXJ0aWNsZUVkaXR9OwoKICAgICMgY2hlY2sgQWNsCiAgICByZXR1cm4gaWYgISRQYXJhbXtBY2xBY3Rpb25Mb29rdXB9LT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyAgICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdCcpOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIGlmICggJENvbmZpZy0+e1Blcm1pc3Npb259ICkgewogICAgICAgIG15ICRPayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICRDb25maWctPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBMb2dObyAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIGlmICEkT2s7CiAgICB9CiAgICBpZiAoICRDb25maWctPntSZXF1aXJlZExvY2t9ICkgewogICAgICAgIG15ICRMb2NrZWQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrR2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfQogICAgICAgICk7CiAgICAgICAgaWYgKCRMb2NrZWQpIHsKICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gJFRpY2tldE9iamVjdC0+T3duZXJDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgT3duZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiBpZiAhJEFjY2Vzc09rOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIEdldENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhUaWNrZXQgQXJ0aWNsZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICRQYXJhbXtBcnRpY2xlfS0+e0RlbGV0ZWRWZXJzaW9uSUR9OwoKICAgIG15ICVNZW51SXRlbSA9ICgKICAgICAgICBJdGVtVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gVHJhbnNsYXRhYmxlKCdFZGl0IHRoaXMgYXJ0aWNsZScpLAogICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRWRpdCcpLAogICAgICAgIENsYXNzICAgICAgID0+ICdBc1BvcHVwIFBvcHVwVHlwZV9UaWNrZXRBY3Rpb24nLAogICAgICAgIExpbmsgICAgICAgID0+CiAgICAgICAgICAgICJBY3Rpb249QWdlbnRUaWNrZXRBcnRpY2xlRWRpdDtUaWNrZXRJRD0kUGFyYW17VGlja2V0fS0+e1RpY2tldElEfTtBcnRpY2xlSUQ9JFBhcmFte0FydGljbGV9LT57QXJ0aWNsZUlEfSIsCiAgICApOwoKICAgIHJldHVybiAoIFwlTWVudUl0ZW0gKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleRestore.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZS5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKIyBvcHRpb25hbCBBY2xBY3Rpb25Mb29rdXAKc3ViIENoZWNrQWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0IEFydGljbGUgQ2hhbm5lbE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICByZXR1cm4gaWYgJFBhcmFte0NoYW5uZWxOYW1lfSBuZSAnSW50ZXJuYWwnOwojICAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e0lzVmlzaWJsZUZvckN1c3RvbWVyfSAmJiAhJENvbmZpZy0+e0FydGljbGVDdXN0b21lclZpc2libGV9ICk7CiAgICByZXR1cm4gaWYgKCAkUGFyYW17QXJ0aWNsZX17U2VuZGVyVHlwZX0gZXEgJ2N1c3RvbWVyJyAmJiAhJENvbmZpZy0+e0VkaXRDdXN0b21lckFydGljbGVzfSApOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIHJldHVybiBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6TUlNRUJhc2U6OkFydGljbGVTdG9yYWdlJykgPX4gbS9BcnRpY2xlU3RvcmFnZVMzLzsKCiAgICAjIE5PVEUgY2hlY2tpbmcgZm9yIEFnZW50VGlja2V0QXJ0aWNsZUVkaXQgYmVjYXVzZQogICAgIyAgIEFnZW50VGlja2V0QXJ0aWNsZVJlc3RvcmUgaGFzIG5vIG1vZHVsZSBjb25maWcgb24gaXRzIG93bgogICAgIyAgIGFuZCBwZXJtaXNzaW9uIGlzIHZpZXdlZCBhcyB0cmFuc2ZlcmFibGUgZnJvbSBBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlCiAgICAjIGNoZWNrIGlmIG1vZHVsZSBpcyByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgIyBjaGVjayBBY2wKICAgIHJldHVybiBpZiAhJFBhcmFte0FjbEFjdGlvbkxvb2t1cH0tPntBZ2VudFRpY2tldEFydGljbGVFZGl0fTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgbXkgJE9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISRPazsKICAgIH0KICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgbXkgJExvY2tlZCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9CiAgICAgICAgKTsKICAgICAgICBpZiAoJExvY2tlZCkgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICEkQWNjZXNzT2s7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRQYXJhbXtBcnRpY2xlfS0+e0RlbGV0ZWRWZXJzaW9uSUR9OwoKICAgIG15ICVNZW51SXRlbSA9ICgKICAgICAgICBJdGVtVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gVHJhbnNsYXRhYmxlKCdSZXN0b3JlIHRoaXMgYXJ0aWNsZScpLAogICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUmVzdG9yZScpLAogICAgICAgIENsYXNzICAgICAgID0+ICdBcnRpY2xlUmVzdG9yZScsCiAgICAgICAgTGluayAgICAgICAgPT4KICAgICAgICAgICAgIkFjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07QXJ0aWNsZUlEPSRQYXJhbXtBcnRpY2xlfS0+e0FydGljbGVJRH0iLAogICAgKTsKCiAgICByZXR1cm4gKCBcJU1lbnVJdGVtICk7Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleVersion.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlVmVyc2lvbi5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZUZlYXR1cmVzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKIyBvcHRpb25hbCBBY2xBY3Rpb25Mb29rdXAKc3ViIENoZWNrQWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0IEFydGljbGUgQ2hhbm5lbE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICByZXR1cm4gaWYgJFBhcmFte0NoYW5uZWxOYW1lfSBuZSAnSW50ZXJuYWwnOwojICAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e0lzVmlzaWJsZUZvckN1c3RvbWVyfSAmJiAhJENvbmZpZy0+e0FydGljbGVDdXN0b21lclZpc2libGV9ICk7CiAgICByZXR1cm4gaWYgKCAkUGFyYW17QXJ0aWNsZX17U2VuZGVyVHlwZX0gZXEgJ2N1c3RvbWVyJyAmJiAhJENvbmZpZy0+e0VkaXRDdXN0b21lckFydGljbGVzfSApOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIHJldHVybiBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6TUlNRUJhc2U6OkFydGljbGVTdG9yYWdlJykgPX4gbS9BcnRpY2xlU3RvcmFnZVMzLzsKCiAgICAjIE5PVEUgY2hlY2tpbmcgZm9yIEFnZW50VGlja2V0QXJ0aWNsZUVkaXQgYmVjYXVzZQogICAgIyAgIEFnZW50VGlja2V0QXJ0aWNsZVZlcnNpb24gaGFzIG5vIG1vZHVsZSBjb25maWcgb24gaXRzIG93bgogICAgIyAgIGFuZCBwZXJtaXNzaW9uIGlzIHZpZXdlZCBhcyB0cmFuc2ZlcmFibGUgZnJvbSBBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uCiAgICAjIGNoZWNrIGlmIG1vZHVsZSBpcyByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgIyBjaGVjayBBY2wKICAgIHJldHVybiBpZiAhJFBhcmFte0FjbEFjdGlvbkxvb2t1cH0tPntBZ2VudFRpY2tldEFydGljbGVFZGl0fTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgbXkgJE9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISRPazsKICAgIH0KICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgbXkgJExvY2tlZCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9CiAgICAgICAgKTsKICAgICAgICBpZiAoJExvY2tlZCkgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICEkQWNjZXNzT2s7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgQE1lbnVJdGVtczsKICAgIG15ICVBcnRpY2xlVmVyc2lvbnM7CiAgICBteSAkQ291bnQgPSAxOwoKICAgIG15ICVBcnRpY2xlVmVyc2lvbkhpc3RvcnkgPSAlewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5WZXJzaW9uSGlzdG9yeUdldCgKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlfS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICApCiAgICB9OwoKICAgIGZvciBteSAkRW50cnkgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlQXJ0aWNsZVZlcnNpb25IaXN0b3J5ICkgewogICAgICAgIG15ICVWZXJzaW9uRGF0YSA9ICV7ICRBcnRpY2xlVmVyc2lvbkhpc3Rvcnl7JEVudHJ5fSB9OwoKICAgICAgICBteSAlVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0KICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBkYXRldGltZSBvYmplY3QKICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkVmVyc2lvbkRhdGF7Q3JlYXRlVGltZX0KICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICNUcmFuc2Zvcm0gZGF0ZSB0byBjdXJyZW50IHVzZXIgdGltZXpvbmUKICAgICAgICBpZiAoICRVc2Vye1VzZXJUaW1lWm9uZX0gKSB7CiAgICAgICAgICAgICREYXRlVGltZU9iamVjdC0+VG9UaW1lWm9uZSgKICAgICAgICAgICAgICAgIFRpbWVab25lID0+ICRVc2Vye1VzZXJUaW1lWm9uZX0KICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRBcnRpY2xlVmVyc2lvbnN7JEVudHJ5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVmVyc2lvbicpIC4gIiAkQ291bnQgKCIgLiAkRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCkgLiAiICRWZXJzaW9uRGF0YXtGdWxsTmFtZX0pIjsKICAgICAgICAkQ291bnQrKzsKICAgIH0KCiAgICBpZiAoJUFydGljbGVWZXJzaW9ucykgewogICAgICAgIG15ICRBcnRpY2xlVmVyc2lvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdBcnRpY2xlVmVyc2lvbicsCiAgICAgICAgICAgIElEICAgICAgICAgICA9PiAnQXJ0aWNsZVZlcnNpb24nLAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJUFydGljbGVWZXJzaW9ucywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnTnVtZXJpY0tleScKICAgICAgICApOwoKICAgICAgICBwdXNoIEBNZW51SXRlbXMsIHsKICAgICAgICAgICAgSXRlbVR5cGUgICAgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgICAgIERyb3Bkb3duVHlwZSAgICAgICA9PiAnVmVyc2lvbicsCiAgICAgICAgICAgIEFydGljbGVWZXJzaW9uU3RyZyA9PiAkQXJ0aWNsZVZlcnNpb25TdHJnLAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgPT4gJ1ZlcnNpb24nIC4gJFBhcmFte0FydGljbGV9LT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgID0+ICdBc1BvcHVwIFBvcHVwVHlwZV9UaWNrZXRBY3Rpb24nLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0FnZW50VGlja2V0QXJ0aWNsZUVkaXQnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIEBNZW51SXRlbXM7Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentTicketArticleEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudFRpY2tldEFydGljbGVFZGl0LnR0CiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyBJTVBPUlRBTlQKIyAgIHBhY2thZ2UgbWFya2VycyBhbmQgb3JpZ2luYWwgY29kZSBhcmUgbWlzc2luZyBiZWNhdXNlIFRlbXBsYXRlOjpUb29sa2l0IGV2YWx1YXRlcyBkaXNhYmxlZCBjb2RlCiMgICBvcmlnaW5hbCBjb2RlIHdhcyBpbmNsdWRpbmcgdGhlIEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIHRlbXBsYXRlCiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvcGVydGllcyIpICVdCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iY29tcG9zZSIgaWQ9IkNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN0b3JlIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaWNrZXRJRCIgdmFsdWU9IlslIERhdGEuVGlja2V0SUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBcnRpY2xlSUQiIHZhbHVlPSJbJSBEYXRhLkFydGljbGVJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlcGx5VG9BcnRpY2xlIiB2YWx1ZT0iWyUgRGF0YS5SZXBseVRvQXJ0aWNsZSB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkV4cGFuZCIgaWQ9IkV4cGFuZCIgdmFsdWU9IiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRUaXRsZSIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0VGl0bGUgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRJRCIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0SUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRBY3Rpb24iIGlkPSJGb3JtRHJhZnRBY3Rpb24iIC8+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8dWwgY2xhc3M9IkhlYWRlclBvcHVwIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyUG9wdXBsZWZ0Ij4KICAgICAgICAgICAgICAgICAgICA8aDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0QXJ0aWNsZUVkaXQiKSAlXQpbJSBUcmFuc2xhdGUoIkVkaXQgQXJ0aWNsZSBcIiVzXCIgb2YgJXMlcyVzIiwgRGF0YS5BcnRpY2xlVGl0bGUsIENvbmZpZygnVGlja2V0OjpIb29rJyksIENvbmZpZygnVGlja2V0OjpIb29rRGl2aWRlcicpLCBEYXRhLlRpY2tldE51bWJlcikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZ2VudFRpY2tldEFydGljbGVFZGl0IikgJV0KICAgICAgICAgICAgICAgICAmbWRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRCYWNrIikgJV0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyUG9wdXByaWdodCI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRCYWNrIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvcGVydGllc0xvY2siKSAlXQogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXJQb3B1cHJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSB0aWNrZXQgaGFzIGJlZW4gbG9ja2VkIikgfCBodG1sICVdLgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJVbmRvQ2xvc2VQb3B1cCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0TG9jaztTdWJhY3Rpb249VW5sb2NrO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgJV1bJSBJRiBEYXRhLlByZXZpb3VzT3duZXIgJV07UHJldmlvdXNPd25lcj1bJSBEYXRhLlByZXZpb3VzT3duZXIgJV1bJSBFTkQgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJVbmRvICYgY2xvc2UiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllc0xvY2siKSAlXQogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBc3Rlcmlza0V4cGxhbmF0aW9uIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iIGlkPSJBc3Rlcmlza0V4cGxhbmF0aW9uSGVhZGVyIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXN0ZXJpc2tFeHBsYW5hdGlvbiIpICVdCiAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9EcmFmdE5vdGlmaWNhdGlvbnMudHQiICVdClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldFRpY2tldEFjdGlvbnMiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRXhwYW5kZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgU2V0dGluZ3MiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJXNzVwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlRpdGxlSW52YWxpZCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpdGxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUeXBlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVHlwZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVHlwZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVHlwZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWV1ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUXVldWVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1F1ZXVlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJRdWV1ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdRdWV1ZUlEIj5bJSBUcmFuc2xhdGUoIlF1ZXVlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlF1ZXVlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUXVldWVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdRdWV1ZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdRdWV1ZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlF1ZXVlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVldWUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU2VydmljZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSUQiPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TZXJ2aWNlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZXJ2aWNlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU2VydmljZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZU1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlNlcnZpY2VJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU0xBTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTTEFJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNMQUlEIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU0xBTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU0xBIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTTEEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU0xBSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNMQUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU0xBIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk93bmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Pd25lck1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3T3duZXJJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBPd25lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdPd25lcklEIj5bJSBUcmFuc2xhdGUoIk5ldyBPd25lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Pd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuT3duZXJNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgb3duZXIhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3T3duZXJJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJPd25lciBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk93bmVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk93bmVyTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3T3duZXJJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBPd25lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk93bmVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3T3duZXJJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugc2V0IGEgbmV3IG93bmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld093bmVySURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiT3duZXIgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPd25lck1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zaWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUmVzcG9uc2libGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1Jlc3BvbnNpYmxlSUQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXcgUmVzcG9uc2libGUiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdSZXNwb25zaWJsZUlEIj5bJSBUcmFuc2xhdGUoIk5ldyBSZXNwb25zaWJsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXNwb25zaWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUmVzcG9uc2libGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdSZXNwb25zaWJsZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgcmVzcG9uc2libGUhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1Jlc3BvbnNpYmxlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUmVzcG9uc2libGUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNpYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNpYmxlTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3UmVzcG9uc2libGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBSZXNwb25zaWJsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJlc3BvbnNpYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UmVzcG9uc2libGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugc2V0IGEgbmV3IHJlc3BvbnNpYmxlISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1Jlc3BvbnNpYmxlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUmVzcG9uc2libGUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSZXNwb25zaWJsZU1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU3RhdGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1N0YXRlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXh0IHN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1N0YXRlSUQiPlslIFRyYW5zbGF0ZSgiTmV4dCBzdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU3RhdGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdTdGF0ZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1N0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU3RhdGUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRlUGVuZGluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlBlbmRpbmcgZGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkRhdGVTdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkRheVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJEYXRlIGludmFsaWQhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSG91clNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJEYXRlIGludmFsaWQhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiRm9yIGFsbCBwZW5kaW5nKiBzdGF0ZXMuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdGVQZW5kaW5nIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlByaW9yaXR5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UHJpb3JpdHlJRCI+WyUgVHJhbnNsYXRlKCJQcmlvcml0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcmlvcml0eVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlByaW9yaXR5IikgJV0KClslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJXaWRnZXRUaWNrZXRBY3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldEFydGljbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgWyUgRGF0YS5XaWRnZXRTdGF0dXMgfCBodG1sICVdIiBpZD0iV2lkZ2V0QXJ0aWNsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQXJ0aWNsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkNyZWF0ZUFydGljbGUiIG5hbWU9IkNyZWF0ZUFydGljbGUiIHZhbHVlPSIxIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFkZGl0aW9uYWxBZ2VudHMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvcm1BZ2VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluZm9ybVVzZXJJRCI+WyUgVHJhbnNsYXRlKCJJbmZvcm0gYWdlbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5PcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkludm9sdmVkQWdlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnZvbHZlZFVzZXJJRCI+WyUgVHJhbnNsYXRlKCJJbmZvcm0gaW52b2x2ZWQgYWdlbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbnZvbHZlZEFnZW50U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW52b2x2ZWRBZ2VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBzZWxlY3QgYWRkaXRpb25hbCBhZ2VudHMgd2hpY2ggc2hvdWxkIHJlY2VpdmUgYSBub3RpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBuZXcgYXJ0aWNsZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9ybUFkZGl0aW9uYWxBZ2VudHMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGV4dCB3aWxsIGFsc28gYmUgcmVjZWl2ZWQgYnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVXNlckxpc3RXaXRob3V0U2VsZWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5Vc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gIHwgaHRtbCAlXSIgLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVXNlckVtYWlsIHwgaHRtbCAlXSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdPC9zcGFuPlslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yIikgJV0sWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvbiIpICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3ViamVjdExhYmVsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3ViamVjdCI+WyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJqZWN0TGFiZWwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTdWJqZWN0Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViamVjdExhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJTdWJqZWN0IiBuYW1lPSJTdWJqZWN0IiB2YWx1ZT0iWyUgRGF0YS5TdWJqZWN0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlIFslIERhdGEuU3ViamVjdEludmFsaWQgJV0gWyUgRGF0YS5TdWJqZWN0UmVxdWlyZWQgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1YmplY3RFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTdWJqZWN0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViamVjdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldE9wdGlvbnMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPcHRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KCjwhLS0gT3V0cHV0RmlsdGVySG9va19UaWNrZXRPcHRpb25zQmVnaW4gLS0+CjwhLS0gT3V0cHV0RmlsdGVySG9va19UaWNrZXRPcHRpb25zRW5kIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE9wdGlvbnMiKSAlXQoKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSaWNoVGV4dExhYmVsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmljaFRleHQiPlslIFRyYW5zbGF0ZSgiVGV4dCIpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmljaFRleHRMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJSaWNoVGV4dCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUmljaFRleHRGaWVsZCIgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJSaWNoVGV4dCIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlIFslIERhdGEuQm9keUludmFsaWQgJV0gWyUgRGF0YS5Cb2R5UmVxdWlyZWQgJV0iIG5hbWU9IkJvZHkiIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLkJvZHkgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUmljaFRleHRTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSaWNoVGV4dCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0F0dGFjaG1lbnRMaXN0LnR0IiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSXNWaXNpYmxlRm9yQ3VzdG9tZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJc1Zpc2libGVGb3JDdXN0b21lciI+WyUgVHJhbnNsYXRlKCJJcyB2aXNpYmxlIGZvciBjdXN0b21lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IklzVmlzaWJsZUZvckN1c3RvbWVyIiBpZD0iSXNWaXNpYmxlRm9yQ3VzdG9tZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Jc1Zpc2libGVGb3JDdXN0b21lciAlXWNoZWNrZWRbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJc1Zpc2libGVGb3JDdXN0b21lciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHNXcmFwcGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGltZVVuaXRzTGFiZWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0c0xhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGltZVVuaXRzIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbE1hbmRhdG9yeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0cyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaW1lVW5pdHMiIGlkPSJUaW1lVW5pdHMiIHZhbHVlPSJbJSBEYXRhLlRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9UaW1lVW5pdHMgWyUgRGF0YS5UaW1lVW5pdHNSZXF1aXJlZCB8IGh0bWwgJV0gWyUgRGF0YS5UaW1lVW5pdHNJbnZhbGlkIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGltZVVuaXRzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIkludmFsaWQgdGltZSEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaW1lVW5pdHNTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHMiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzV3JhcHBlciIpICVdCgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiV2lkZ2V0QXJ0aWNsZSIpICVdCgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9InN1Ym1pdFJpY2hUZXh0IiBhY2Nlc3NrZXk9ImciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSAoZykiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9EcmFmdEJ1dHRvbnMudHQiICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllcyIpICVdCg==</File>
        <File Location="Kernel/Config/Files/XML/ExtendedArticleEdit.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDaGFuZ2VzIj4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQjIyNBcnRpY2xlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgZm9yIHdoaWNoIGFydGljbGUgdHlwZXMgdGhlIGVkaXRpbmcgb2Ygc3ViamVjdCwgYm9keSBhbmQgYXR0YWNobWVudCBpcyBlbmFibGVkLiAiQm90aCIgaW5jbHVkZXMgIlBob25lIiBhbmQgIkludGVybmFsIi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0QXJ0aWNsZUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iSW50ZXJuYWwiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJQaG9uZSIgVHJhbnNsYXRhYmxlPSIxIj5QaG9uZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW50ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+SW50ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkJvdGgiIFRyYW5zbGF0YWJsZT0iMSI+Qm90aDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTm9uZSIgVHJhbnNsYXRhYmxlPSIxIj5Ob25lPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQjIyNBcnRpY2xlQ3VzdG9tZXJWaXNpYmxlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGVkaXRpbmcgb2YgYXJ0aWNsZXMgd2hpY2ggYXJlIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBpbiBnZW5lcmFsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRBcnRpY2xlRWRpdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQjIyNJc1Zpc2libGVGb3JDdXN0b21lciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZGRzIGN1c3RvbWVyIHZpc2liaWxpdHkgb2YgdGhlIGFydGljbGUgdG8gdGhlIGFydGljbGUgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0QXJ0aWNsZUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0IyMjRWRpdEN1c3RvbWVyQXJ0aWNsZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiBhcnRpY2xlcyB3cml0dGVuIGJ5IHRoZSBjdXN0b21lciBhcmUgZWRpdGFibGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldEFydGljbGVFZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdCMjI1RpbWVVbml0cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSB0aW1lIHVuaXRzIGluIHRoZSB0aWNrZXQgbm90ZSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0QXJ0aWNsZUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zIyMjRW1haWwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhdmFpbGFibGUgYXJ0aWNsZSBhY3Rpb25zIGZvciBlLW1haWwgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldFpvb206OkFydGljbGVBY3Rpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldENvbXBvc2UiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0Q29tcG9zZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlRWRpdCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj41MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Rm9yd2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRGb3J3YXJkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Qm91bmNlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEJvdW5jZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldFBob25lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UHJpbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRNZXNzYWdlTG9nIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldE1lc3NhZ2VMb2c8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTUwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQbGFpbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRQbGFpbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj42MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXJrQXNJbXBvcnRhbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok1hcmtBc0ltcG9ydGFudDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj43MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldE5vdGUiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0Tm90ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEVtYWlsUmVzZW5kIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEVtYWlsUmVzZW5kPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjkwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hcmtBcnRpY2xlU2VlblVuc2VlbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6TWFya0FydGljbGVTZWVuVW5zZWVuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFydGljbGU6OkFjdGlvbnMjIyNQaG9uZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGF2YWlsYWJsZSBhcnRpY2xlIGFjdGlvbnMgZm9yIFBob25lIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRab29tOjpBcnRpY2xlQWN0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRDb21wb3NlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldENvbXBvc2U8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0QXJ0aWNsZURlbGV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlVmVyc2lvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0QXJ0aWNsZUVkaXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MTEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Rm9yd2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRGb3J3YXJkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Qm91bmNlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEJvdW5jZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldFBob25lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UHJpbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQbGFpbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRQbGFpbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj42MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXJrQXNJbXBvcnRhbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok1hcmtBc0ltcG9ydGFudDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj43MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldE5vdGUiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0Tm90ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXJrQXJ0aWNsZVNlZW5VbnNlZW4iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok1hcmtBcnRpY2xlU2VlblVuc2VlbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj45MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Language/de_ExtendedArticleEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0V4dGVuZGVkQXJ0aWNsZUVkaXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldEFydGljbGVFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFydGljbGUnfSA9ICdBcnRpa2VsIGJlYXJiZWl0ZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QXJ0aWNsZUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBub3QgZWRpdGFibGUhJ30gPSAnRGllc2VyIEFydGlrZWwga2FubiBuaWNodCBiZWFyYmVpdGV0IHdlcmRlbiEnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRzIGN1c3RvbWVyIHZpc2liaWxpdHkgb2YgdGhlIGFydGljbGUgdG8gdGhlIGFydGljbGUgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0bDvGd0IGRpZSBLdW5kZW5zaWNodGJhcmtlaXQgaW0gQXJ0aWtlbC1iZWFyYmVpdGVuLUJpbGRzY2hpcm0gdm9uIFRpY2tldHMgaW0gQWdlbnRlbmJlcmVpY2ggaGluenUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JvdGgnfSA9ICdCZWlkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBmb3Igd2hpY2ggYXJ0aWNsZSB0eXBlcyB0aGUgZWRpdGluZyBvZiBzdWJqZWN0LCBib2R5IGFuZCBhdHRhY2htZW50IGlzIGVuYWJsZWQuICJCb3RoIiBpbmNsdWRlcyAiUGhvbmUiIGFuZCAiSW50ZXJuYWwiLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBmw7xyIHdlbGNoZSBBcnRpa2VsLVR5cGVuIGRlciBCZXRyZWZmLCBkZXIgVGV4dCB1bmQgZGllIEFuaMOkbmdlIGdlw6RuZGVydCB3ZXJkZW4ga8O2bm5lbi4gIkJlaWRlcyIgYmVpbmhhbHRldCAiVGVsZWZvbiIgdW5kICJJbnRlcm4iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGFydGljbGVzIHdyaXR0ZW4gYnkgdGhlIGN1c3RvbWVyIGFyZSBlZGl0YWJsZS4nfSA9ICdEZWZpbmllcnQsIG9iIEFydGlrZWwsIGRpZSBlaW4gS3VuZGVuYmVudXR6ZXIgZ2VzY2hyaWViZW4gaGF0LCBiZWFyYmVpdGV0IHdlcmRlbiBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlZGl0aW5nIG9mIGFydGljbGVzIHdoaWNoIGFyZSB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgaW4gZ2VuZXJhbC4nfSA9CiAgICAgICAgJ0FrdGl2aWVydCBvZGVyIGRlYWt0aXZpZXJ0IGRhcyBCZWFyYmVpdGVuIHZvbiBBcnRpa2VsbiwgZGllIGbDvHIgZGVuIEt1bmRlbiBzaWNodGJhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCd9ID0gJ0ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aW1lIHVuaXRzIGluIHRoZSB0aWNrZXQgbm90ZSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGRpZSBaZWl0YnVjaHVuZyBpbSBBcnRpa2VsLcOkbmRlcm4tQmlsZHNjaGlybSB2b24gVGlja2V0cyBpbSBBZ2VudGVuYmVyZWljaC4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="doc/en/ExtendedArticleEdit.pdf" Permission="644" Encode="Base64">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gH0B9gVgXwD2BdiXBIB9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQHYF2BfAPYFYF+AfQHYF4B9AfYlAWBfAPYFYF+AfQHYF4B9AfYFYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfgH1JANgXgH0B2BdgXwD2BWBfgH0B2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXYF8SAPYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF8A9gXYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYF2JcEgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2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</File>
    </Filelist>
</otrs_package>