internal/templates/MiniModule-1.0.0.0.xml

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>PSModuleDevelopment.Template.Template</T>
      <T>System.Object</T>
    </TN>
    <ToString>PSModuleDevelopment.Template.Template</ToString>
    <Props>
      <S N="Name">MiniModule</S>
      <Obj N="Type" RefId="1">
        <TN RefId="1">
          <T>PSModuleDevelopment.Template.TemplateType</T>
          <T>System.Enum</T>
          <T>System.ValueType</T>
          <T>System.Object</T>
        </TN>
        <ToString>Project</ToString>
        <I32>1</I32>
      </Obj>
      <Version N="Version">1.0.0.0</Version>
      <S N="Description">Module scaffold with full CI/CD support and minimal dependencies</S>
      <S N="Author">Friedrich Weinmann</S>
      <DT N="CreatedOn">2022-04-29T00:00:00+00:00</DT>
      <Obj N="Tags" RefId="2">
        <TN RefId="2">
          <T>System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</T>
          <T>System.Object</T>
        </TN>
        <LST>
          <S>module</S>
        </LST>
      </Obj>
      <Obj N="Parameters" RefId="3">
        <TNRef RefId="2" />
        <LST>
          <S>name</S>
          <S>author</S>
          <S>company</S>
          <S>description</S>
        </LST>
      </Obj>
      <Obj N="Scripts" RefId="4">
        <TN RefId="3">
          <T>System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[PSModuleDevelopment.Template.ParameterScript, PSModuleDevelopment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]]</T>
          <T>System.Object</T>
        </TN>
        <DCT>
          <En>
            <S N="Key">guid</S>
            <Obj N="Value" RefId="5">
              <TN RefId="4">
                <T>PSModuleDevelopment.Template.ParameterScript</T>
                <T>System.Object</T>
              </TN>
              <ToString>PSModuleDevelopment.Template.ParameterScript</ToString>
              <Props>
                <S N="StringScript">_x000D__x000A__x0009__x0009__x0009_[System.Guid]::NewGuid().ToString()_x000D__x000A__x0009__x0009_</S>
                <S N="Name">guid</S>
                <SBK N="ScriptBlock">_x000D__x000A__x0009__x0009__x0009_[System.Guid]::NewGuid().ToString()_x000D__x000A__x0009__x0009_</SBK>
              </Props>
              <MS>
                <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAwDAAAAX1N5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24sIFZlcnNpb249My4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1BQEAAAAsUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5QYXJhbWV0ZXJTY3JpcHQCAAAABE5hbWULU2NyaXB0QmxvY2sBBDtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLlNjcmlwdEJsb2NrU2VyaWFsaXphdGlvbkhlbHBlcgMAAAACAAAABgQAAAAEZ3VpZAkFAAAABQUAAAA7U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5TY3JpcHRCbG9ja1NlcmlhbGl6YXRpb25IZWxwZXIBAAAAClNjcmlwdFRleHQBAwAAAAYGAAAALA0KCQkJW1N5c3RlbS5HdWlkXTo6TmV3R3VpZCgpLlRvU3RyaW5nKCkNCgkJCw==</BA>
              </MS>
            </Obj>
          </En>
          <En>
            <S N="Key">year</S>
            <Obj N="Value" RefId="6">
              <TNRef RefId="4" />
              <ToString>PSModuleDevelopment.Template.ParameterScript</ToString>
              <Props>
                <S N="StringScript">_x000D__x000A__x0009__x0009__x0009_Get-Date -Format "yyyy"_x000D__x000A__x0009__x0009_</S>
                <S N="Name">year</S>
                <SBK N="ScriptBlock">_x000D__x000A__x0009__x0009__x0009_Get-Date -Format "yyyy"_x000D__x000A__x0009__x0009_</SBK>
              </Props>
              <MS>
                <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAwDAAAAX1N5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24sIFZlcnNpb249My4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1BQEAAAAsUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5QYXJhbWV0ZXJTY3JpcHQCAAAABE5hbWULU2NyaXB0QmxvY2sBBDtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLlNjcmlwdEJsb2NrU2VyaWFsaXphdGlvbkhlbHBlcgMAAAACAAAABgQAAAAEeWVhcgkFAAAABQUAAAA7U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5TY3JpcHRCbG9ja1NlcmlhbGl6YXRpb25IZWxwZXIBAAAAClNjcmlwdFRleHQBAwAAAAYGAAAAIA0KCQkJR2V0LURhdGUgLUZvcm1hdCAieXl5eSINCgkJCw==</BA>
              </MS>
            </Obj>
          </En>
        </DCT>
      </Obj>
      <Obj N="Parameters2" RefId="7">
        <TN RefId="5">
          <T>System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[PSModuleDevelopment.Template.Parameter.ParameterBase, PSModuleDevelopment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]]</T>
          <T>System.Object</T>
        </TN>
        <DCT />
      </Obj>
      <Obj N="Children" RefId="8">
        <TN RefId="6">
          <T>System.Collections.Generic.List`1[[PSModuleDevelopment.Template.TemplateItemBase, PSModuleDevelopment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]]</T>
          <T>System.Object</T>
        </TN>
        <LST>
          <Obj RefId="9">
            <TN RefId="7">
              <T>PSModuleDevelopment.Template.TemplateItemFolder</T>
              <T>PSModuleDevelopment.Template.TemplateItemBase</T>
              <T>System.Object</T>
            </TN>
            <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString>
            <Props>
              <Obj N="Children" RefId="10">
                <TNRef RefId="6" />
                <LST>
                  <S>PSModuleDevelopment.Template.TemplateItemFolder</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                </LST>
              </Obj>
              <S N="Name">.github</S>
              <S N="RelativePath">.github</S>
              <S N="Identifier">þ</S>
              <Obj N="FileSystemParameterFlat" RefId="11">
                <TNRef RefId="2" />
                <LST />
              </Obj>
              <Obj N="FileSystemParameterScript" RefId="12">
                <TNRef RefId="2" />
                <LST />
              </Obj>
            </Props>
            <MS>
              <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAABy5naXRodWIGBQAAAAcuZ2l0aHViBgYAAAACw74JBwAAAAkIAAAABAMAAACeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAvUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlW10CAAAACAgJCQAAAAIAAAACAAAABAcAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJCgAAAAAAAAAAAAAAAQgAAAAHAAAACQoAAAAAAAAAAAAAAAcJAAAAAAEAAAAEAAAABC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UCAAAACQsAAAAJDAAAAA0CEQoAAAAAAAAAAQsAAAABAAAACQ0AAAAGDgAAAAl3b3JrZmxvd3MGDwAAABEuZ2l0aHViXHdvcmtmbG93cwkGAAAACREAAAAJEgAAAAUMAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYTAAAAmwUjIFRoZXNlIGFyZSBzdXBwb3J0ZWQgZnVuZGluZyBtb2RlbCBwbGF0Zm9ybXMNCg0KZ2l0aHViOiANCiAgRnJpZWRyaWNoV2Vpbm1hbm4NCnBhdHJlb246ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIFBhdHJlb24gdXNlcm5hbWUNCm9wZW5fY29sbGVjdGl2ZTogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgT3BlbiBDb2xsZWN0aXZlIHVzZXJuYW1lDQprb19maTogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgS28tZmkgdXNlcm5hbWUNCnRpZGVsaWZ0OiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBUaWRlbGlmdCBwbGF0Zm9ybS1uYW1lL3BhY2thZ2UtbmFtZSBlLmcuLCBucG0vYmFiZWwNCmNvbW11bml0eV9icmlkZ2U6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIENvbW11bml0eSBCcmlkZ2UgcHJvamVjdC1uYW1lIGUuZy4sIGNsb3VkLWZvdW5kcnkNCmxpYmVyYXBheTogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgTGliZXJhcGF5IHVzZXJuYW1lDQppc3N1ZWh1bnQ6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIElzc3VlSHVudCB1c2VybmFtZQ0Kb3RlY2hpZTogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgT3RlY2hpZSB1c2VybmFtZQ0KY3VzdG9tOiAjIFJlcGxhY2Ugd2l0aCB1cCB0byA0IGN1c3RvbSBzcG9uc29yc2hpcCBVUkxzIGUuZy4sIFsnbGluazEnLCAnbGluazInXQ0KAQkUAAAACRUAAAAGFgAAAAtGVU5ESU5HLnltbAYXAAAAEy5naXRodWJcRlVORElORy55bWwJBgAAAAkZAAAACRoAAAABDQAAAAMAAAAJGwAAAAIAAAACAAAAAREAAAAHAAAACQoAAAAAAAAAAAAAAAESAAAABwAAAAkKAAAAAAAAAAAAAAABFAAAAAcAAAAJCgAAAAAAAAAAAAAAARUAAAAHAAAACQoAAAAAAAAAAAAAAAEZAAAABwAAAAkKAAAAAAAAAAAAAAABGgAAAAcAAAAJCgAAAAAAAAAAAAAABxsAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJHQAAAAkeAAAADQIBHQAAAAwAAAAGHwAAANwDb246DQogIHB1c2g6DQogICAgYnJhbmNoZXM6DQogICAgICAtIG1hc3Rlcg0KDQpqb2JzOg0KICBidWlsZDoNCg0KICAgIHJ1bnMtb246IHdpbmRvd3MtMjAxOQ0KDQogICAgc3RlcHM6DQogICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYxDQogICAgLSBuYW1lOiBJbnN0YWxsIFByZXJlcXVpc2l0ZXMNCiAgICAgIHJ1bjogLlxidWlsZFx2c3RzLXByZXJlcXVpc2l0ZXMucHMxDQogICAgICBzaGVsbDogcG93ZXJzaGVsbA0KICAgIC0gbmFtZTogVmFsaWRhdGUNCiAgICAgIHJ1bjogLlxidWlsZFx2c3RzLXZhbGlkYXRlLnBzMQ0KICAgICAgc2hlbGw6IHBvd2Vyc2hlbGwNCiAgICAtIG5hbWU6IEJ1aWxkDQogICAgICBydW46IC5cYnVpbGRcdnN0cy1idWlsZC5wczEgLUFwaUtleSAkZW52OkFQSUtFWQ0KICAgICAgc2hlbGw6IHBvd2Vyc2hlbGwNCiAgICAgIGVudjoNCiAgICAgICAgQVBJS0VZOiAke3sgc2VjcmV0cy5BcGlLZXkgfX0BCSAAAAAJIQAAAAYiAAAACWJ1aWxkLnltbAYjAAAAGy5naXRodWJcd29ya2Zsb3dzXGJ1aWxkLnltbAkGAAAACSUAAAAJJgAAAAEeAAAADAAAAAYnAAAAsAJvbjogW3B1bGxfcmVxdWVzdF0NCg0Kam9iczoNCiAgdmFsaWRhdGU6DQoNCiAgICBydW5zLW9uOiB3aW5kb3dzLTIwMTkNCg0KICAgIHN0ZXBzOg0KICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MQ0KICAgIC0gbmFtZTogSW5zdGFsbCBQcmVyZXF1aXNpdGVzDQogICAgICBydW46IC5cYnVpbGRcdnN0cy1wcmVyZXF1aXNpdGVzLnBzMQ0KICAgICAgc2hlbGw6IHBvd2Vyc2hlbGwNCiAgICAtIG5hbWU6IFZhbGlkYXRlDQogICAgICBydW46IC5cYnVpbGRcdnN0cy12YWxpZGF0ZS5wczENCiAgICAgIHNoZWxsOiBwb3dlcnNoZWxsAQkoAAAACSkAAAAGKgAAAAx2YWxpZGF0ZS55bWwGKwAAAB4uZ2l0aHViXHdvcmtmbG93c1x2YWxpZGF0ZS55bWwJBgAAAAktAAAACS4AAAABIAAAAAcAAAAJCgAAAAAAAAAAAAAAASEAAAAHAAAACQoAAAAAAAAAAAAAAAElAAAABwAAAAkKAAAAAAAAAAAAAAABJgAAAAcAAAAJCgAAAAAAAAAAAAAAASgAAAAHAAAACQoAAAAAAAAAAAAAAAEpAAAABwAAAAkKAAAAAAAAAAAAAAABLQAAAAcAAAAJCgAAAAAAAAAAAAAAAS4AAAAHAAAACQoAAAAAAAAAAAAAAAs=</BA>
            </MS>
          </Obj>
          <Obj RefId="13">
            <TNRef RefId="7" />
            <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString>
            <Props>
              <Obj N="Children" RefId="14">
                <TNRef RefId="6" />
                <LST>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                </LST>
              </Obj>
              <S N="Name">build</S>
              <S N="RelativePath">build</S>
              <S N="Identifier">þ</S>
              <Obj N="FileSystemParameterFlat" RefId="15">
                <TNRef RefId="2" />
                <LST />
              </Obj>
              <Obj N="FileSystemParameterScript" RefId="16">
                <TNRef RefId="2" />
                <LST />
              </Obj>
            </Props>
            <MS>
              <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAABWJ1aWxkBgUAAAAFYnVpbGQGBgAAAALDvgkHAAAACQgAAAAEAwAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkJAAAAAwAAAAMAAAAEBwAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkKAAAAAAAAAAAAAAABCAAAAAcAAAAJCgAAAAAAAAAAAAAABwkAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJCwAAAAkMAAAACQ0AAAAKEQoAAAAAAAAABQsAAAAtUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1GaWxlCQAAAAVWYWx1ZQlQbGFpblRleHQUQ29udGVudFBhcmFtZXRlckZsYXQWQ29udGVudFBhcmFtZXRlclNjcmlwdAROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQBAAMDAQEBAwMBf1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAABg4AAACvGzwjDQpUaGlzIHNjcmlwdCBwdWJsaXNoZXMgdGhlIG1vZHVsZSB0byB0aGUgZ2FsbGVyeS4NCkl0IGV4cGVjdHMgYXMgaW5wdXQgYW4gQXBpS2V5IGF1dGhvcml6ZWQgdG8gcHVibGlzaCB0aGUgbW9kdWxlLg0KDQpJbnNlcnQgYW55IGJ1aWxkIHN0ZXBzIHlvdSBtYXkgbmVlZCB0byB0YWtlIGJlZm9yZSBwdWJsaXNoaW5nIGl0IGhlcmUuDQojPg0KcGFyYW0gKA0KCSRBcGlLZXksDQoJDQoJJFdvcmtpbmdEaXJlY3RvcnksDQoJDQoJJFJlcG9zaXRvcnkgPSAnUFNHYWxsZXJ5JywNCgkNCglbc3dpdGNoXQ0KCSRMb2NhbFJlcG8sDQoJDQoJW3N3aXRjaF0NCgkkU2tpcFB1Ymxpc2gsDQoJDQoJW3N3aXRjaF0NCgkkQXV0b1ZlcnNpb24NCikNCg0KI3JlZ2lvbiBIYW5kbGUgV29ya2luZyBEaXJlY3RvcnkgRGVmYXVsdHMNCmlmICgtbm90ICRXb3JraW5nRGlyZWN0b3J5KQ0Kew0KCWlmICgkZW52OlJFTEVBU0VfUFJJTUFSWUFSVElGQUNUU09VUkNFQUxJQVMpDQoJew0KCQkkV29ya2luZ0RpcmVjdG9yeSA9IEpvaW4tUGF0aCAtUGF0aCAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSAtQ2hpbGRQYXRoICRlbnY6UkVMRUFTRV9QUklNQVJZQVJUSUZBQ1RTT1VSQ0VBTElBUw0KCX0NCgllbHNlIHsgJFdvcmtpbmdEaXJlY3RvcnkgPSAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSB9DQp9DQppZiAoLW5vdCAkV29ya2luZ0RpcmVjdG9yeSkgeyAkV29ya2luZ0RpcmVjdG9yeSA9IFNwbGl0LVBhdGggJFBTU2NyaXB0Um9vdCB9DQojZW5kcmVnaW9uIEhhbmRsZSBXb3JraW5nIERpcmVjdG9yeSBEZWZhdWx0cw0KDQojIFByZXBhcmUgcHVibGlzaCBmb2xkZXINCldyaXRlLUhvc3QgIkNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHB1Ymxpc2hpbmcgZGlyZWN0b3J5Ig0KJHB1Ymxpc2hEaXIgPSBOZXctSXRlbSAtUGF0aCAkV29ya2luZ0RpcmVjdG9yeSAtTmFtZSBwdWJsaXNoIC1JdGVtVHlwZSBEaXJlY3RvcnkgLUZvcmNlDQpDb3B5LUl0ZW0gLVBhdGggIiQoJFdvcmtpbmdEaXJlY3RvcnkpXMO+bmFtZcO+IiAtRGVzdGluYXRpb24gJHB1Ymxpc2hEaXIuRnVsbE5hbWUgLVJlY3Vyc2UgLUZvcmNlDQoNCiNyZWdpb24gR2F0aGVyIHRleHQgZGF0YSB0byBjb21waWxlDQokdGV4dCA9IEAoKQ0KDQojIEdhdGhlciBjb21tYW5kcw0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75cZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojIEdhdGhlciBzY3JpcHRzDQpHZXQtQ2hpbGRJdGVtIC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlxpbnRlcm5hbFxzY3JpcHRzXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KW1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxUZXh0KCIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc20xIiwgKCR0ZXh0IC1qb2luICJgbmBuIiksIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQpSZW1vdmUtSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWwiIC1SZWN1cnNlIC1Gb3JjZQ0KUmVtb3ZlLUl0ZW0gLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XGZ1bmN0aW9ucyIgLVJlY3Vyc2UgLUZvcmNlDQojZW5kcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KDQojcmVnaW9uIFVwZGF0aW5nIHRoZSBNb2R1bGUgVmVyc2lvbg0KaWYgKCRBdXRvVmVyc2lvbikNCnsNCglXcml0ZS1Ib3N0ICAiVXBkYXRpbmcgbW9kdWxlIHZlcnNpb24gbnVtYmVycy4iDQoJdHJ5IHsgW3ZlcnNpb25dJHJlbW90ZVZlcnNpb24gPSAoRmluZC1Nb2R1bGUgJ8O+bmFtZcO+JyAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeSAtRXJyb3JBY3Rpb24gU3RvcCkuVmVyc2lvbiB9DQoJY2F0Y2gNCgl7DQoJCXRocm93ICJGYWlsZWQgdG8gYWNjZXNzICQoJFJlcG9zaXRvcnkpIDogJF8iDQoJfQ0KCWlmICgtbm90ICRyZW1vdGVWZXJzaW9uKQ0KCXsNCgkJdGhyb3cgIkNvdWxkbid0IGZpbmQgw75uYW1lw74gb24gcmVwb3NpdG9yeSAkKCRSZXBvc2l0b3J5KSA6ICRfIg0KCX0NCgkkbmV3QnVpbGROdW1iZXIgPSAkcmVtb3RlVmVyc2lvbi5CdWlsZCArIDENCglbdmVyc2lvbl0kbG9jYWxWZXJzaW9uID0gKEltcG9ydC1Qb3dlclNoZWxsRGF0YUZpbGUgLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XMO+bmFtZcO+LnBzZDEiKS5Nb2R1bGVWZXJzaW9uDQoJVXBkYXRlLU1vZHVsZU1hbmlmZXN0IC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIiAtTW9kdWxlVmVyc2lvbiAiJCgkbG9jYWxWZXJzaW9uLk1ham9yKS4kKCRsb2NhbFZlcnNpb24uTWlub3IpLiQoJG5ld0J1aWxkTnVtYmVyKSINCn0NCiNlbmRyZWdpb24gVXBkYXRpbmcgdGhlIE1vZHVsZSBWZXJzaW9uDQoNCiNyZWdpb24gUHVibGlzaA0KaWYgKCRTa2lwUHVibGlzaCkgeyByZXR1cm4gfQ0KaWYgKCRMb2NhbFJlcG8pDQp7DQoJIyBEZXBlbmRlbmNpZXMgbXVzdCBnbyBmaXJzdA0KCVdyaXRlLUhvc3QgICJDcmVhdGluZyBOdWdldCBQYWNrYWdlIGZvciBtb2R1bGU6IFBTRnJhbWV3b3JrIg0KCU5ldy1QU01ETW9kdWxlTnVnZXRQYWNrYWdlIC1Nb2R1bGVQYXRoIChHZXQtTW9kdWxlIC1OYW1lIFBTRnJhbWV3b3JrKS5Nb2R1bGVCYXNlIC1QYWNrYWdlUGF0aCAuDQoJV3JpdGUtSG9zdCAgIkNyZWF0aW5nIE51Z2V0IFBhY2thZ2UgZm9yIG1vZHVsZTogw75uYW1lw74iDQoJTmV3LVBTTURNb2R1bGVOdWdldFBhY2thZ2UgLU1vZHVsZVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+IiAtUGFja2FnZVBhdGggLg0KfQ0KZWxzZQ0Kew0KCSMgUHVibGlzaCB0byBHYWxsZXJ5DQoJV3JpdGUtSG9zdCAgIlB1Ymxpc2hpbmcgdGhlIMO+bmFtZcO+IG1vZHVsZSB0byAkKCRSZXBvc2l0b3J5KSINCglQdWJsaXNoLU1vZHVsZSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw74iIC1OdUdldEFwaUtleSAkQXBpS2V5IC1Gb3JjZSAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeQ0KfQ0KI2VuZHJlZ2lvbiBQdWJsaXNoAQkPAAAACRAAAAAGEQAAAA52c3RzLWJ1aWxkLnBzMQYSAAAAFGJ1aWxkXHZzdHMtYnVpbGQucHMxCQYAAAAJFAAAAAkVAAAAAQwAAAALAAAABhYAAACABnBhcmFtICgNCiAgICBbc3RyaW5nXQ0KICAgICRSZXBvc2l0b3J5ID0gJ1BTR2FsbGVyeScNCikNCg0KJG1vZHVsZXMgPSBAKCJQZXN0ZXIiLCAiUFNTY3JpcHRBbmFseXplciIpDQoNCiMgQXV0b21hdGljYWxseSBhZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMNCiRkYXRhID0gSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSAtUGF0aCAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIg0KZm9yZWFjaCAoJGRlcGVuZGVuY3kgaW4gJGRhdGEuUmVxdWlyZWRNb2R1bGVzKSB7DQogICAgaWYgKCRkZXBlbmRlbmN5IC1pcyBbc3RyaW5nXSkgew0KICAgICAgICBpZiAoJG1vZHVsZXMgLWNvbnRhaW5zICRkZXBlbmRlbmN5KSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJG1vZHVsZXMgKz0gJGRlcGVuZGVuY3kNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIGlmICgkbW9kdWxlcyAtY29udGFpbnMgJGRlcGVuZGVuY3kuTW9kdWxlTmFtZSkgeyBjb250aW51ZSB9DQogICAgICAgICRtb2R1bGVzICs9ICRkZXBlbmRlbmN5Lk1vZHVsZU5hbWUNCiAgICB9DQp9DQoNCmZvcmVhY2ggKCRtb2R1bGUgaW4gJG1vZHVsZXMpIHsNCiAgICBXcml0ZS1Ib3N0ICJJbnN0YWxsaW5nICRtb2R1bGUiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbg0KICAgIEluc3RhbGwtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1Ta2lwUHVibGlzaGVyQ2hlY2sgLVJlcG9zaXRvcnkgJFJlcG9zaXRvcnkNCiAgICBJbXBvcnQtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1QYXNzVGhydQ0KfQEJFwAAAAkYAAAABhkAAAAWdnN0cy1wcmVyZXF1aXNpdGVzLnBzMQYaAAAAHGJ1aWxkXHZzdHMtcHJlcmVxdWlzaXRlcy5wczEJBgAAAAkcAAAACR0AAAABDQAAAAsAAAAGHgAAAEIjIFJ1biBpbnRlcm5hbCBwZXN0ZXIgdGVzdHMNCiYgIiRQU1NjcmlwdFJvb3RcLi5cdGVzdHNccGVzdGVyLnBzMSIBCR8AAAAJIAAAAAYhAAAAEXZzdHMtdmFsaWRhdGUucHMxBiIAAAAXYnVpbGRcdnN0cy12YWxpZGF0ZS5wczEJBgAAAAkkAAAACSUAAAABDwAAAAcAAAAJJgAAAAEAAAABAAAAARAAAAAHAAAACQoAAAAAAAAAAAAAAAEUAAAABwAAAAkKAAAAAAAAAAAAAAABFQAAAAcAAAAJCgAAAAAAAAAAAAAAARcAAAAHAAAACSgAAAABAAAAAQAAAAEYAAAABwAAAAkKAAAAAAAAAAAAAAABHAAAAAcAAAAJCgAAAAAAAAAAAAAAAR0AAAAHAAAACQoAAAAAAAAAAAAAAAEfAAAABwAAAAkKAAAAAAAAAAAAAAABIAAAAAcAAAAJCgAAAAAAAAAAAAAAASQAAAAHAAAACQoAAAAAAAAAAAAAAAElAAAABwAAAAkKAAAAAAAAAAAAAAARJgAAAAQAAAAGKgAAAARuYW1lDQMRKAAAAAQAAAAGKwAAAARuYW1lDQML</BA>
            </MS>
          </Obj>
          <Obj RefId="17">
            <TNRef RefId="7" />
            <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString>
            <Props>
              <Obj N="Children" RefId="18">
                <TNRef RefId="6" />
                <LST>
                  <S>PSModuleDevelopment.Template.TemplateItemFolder</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFolder</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                </LST>
              </Obj>
              <S N="Name">tests</S>
              <S N="RelativePath">tests</S>
              <S N="Identifier">þ</S>
              <Obj N="FileSystemParameterFlat" RefId="19">
                <TNRef RefId="2" />
                <LST />
              </Obj>
              <Obj N="FileSystemParameterScript" RefId="20">
                <TNRef RefId="2" />
                <LST />
              </Obj>
            </Props>
            <MS>
              <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAABXRlc3RzBgUAAAAFdGVzdHMGBgAAAALDvgkHAAAACQgAAAAEAwAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkJAAAABAAAAAQAAAAEBwAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkKAAAAAAAAAAAAAAABCAAAAAcAAAAJCgAAAAAAAAAAAAAABwkAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJCwAAAAkMAAAACQ0AAAAJDgAAABEKAAAAAAAAAAELAAAAAQAAAAkPAAAABhAAAAAJZnVuY3Rpb25zBhEAAAAPdGVzdHNcZnVuY3Rpb25zCQYAAAAJEwAAAAkUAAAAAQwAAAABAAAACRUAAAAGFgAAAAdnZW5lcmFsBhcAAAANdGVzdHNcZ2VuZXJhbAkGAAAACRkAAAAJGgAAAAUNAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYbAAAAhhpwYXJhbSAoDQoJJFRlc3RHZW5lcmFsID0gJHRydWUsDQoJDQoJJFRlc3RGdW5jdGlvbnMgPSAkdHJ1ZSwNCgkNCglbVmFsaWRhdGVTZXQoJ05vbmUnLCAnTm9ybWFsJywgJ0RldGFpbGVkJywgJ0RpYWdub3N0aWMnKV0NCglbQWxpYXMoJ1Nob3cnKV0NCgkkT3V0cHV0ID0gIk5vbmUiLA0KCQ0KCSRJbmNsdWRlID0gIioiLA0KCQ0KCSRFeGNsdWRlID0gIiINCikNCg0KV3JpdGUtSG9zdCAiU3RhcnRpbmcgVGVzdHMiDQoNCldyaXRlLUhvc3QgIkltcG9ydGluZyBNb2R1bGUiDQoNCiRnbG9iYWw6dGVzdHJvb3QgPSAkUFNTY3JpcHRSb290DQokZ2xvYmFsOl9fcGVzdGVyX2RhdGEgPSBAeyB9DQoNClJlbW92ZS1Nb2R1bGUgw75uYW1lw74gLUVycm9yQWN0aW9uIElnbm9yZQ0KSW1wb3J0LU1vZHVsZSAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIg0KSW1wb3J0LU1vZHVsZSAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc20xIiAtRm9yY2UNCg0KIyBOZWVkIHRvIGltcG9ydCBleHBsaWNpdGx5IHNvIHdlIGNhbiB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gY2xhc3MNCkltcG9ydC1Nb2R1bGUgUGVzdGVyDQoNCldyaXRlLUhvc3QgICJDcmVhdGluZyB0ZXN0IHJlc3VsdCBmb2xkZXIiDQokbnVsbCA9IE5ldy1JdGVtIC1QYXRoICIkUFNTY3JpcHRSb290XC4uIiAtTmFtZSBUZXN0UmVzdWx0cyAtSXRlbVR5cGUgRGlyZWN0b3J5IC1Gb3JjZQ0KDQokdG90YWxGYWlsZWQgPSAwDQokdG90YWxSdW4gPSAwDQoNCiR0ZXN0cmVzdWx0cyA9IEAoKQ0KJGNvbmZpZyA9IFtQZXN0ZXJDb25maWd1cmF0aW9uXTo6RGVmYXVsdA0KJGNvbmZpZy5UZXN0UmVzdWx0LkVuYWJsZWQgPSAkdHJ1ZQ0KDQojcmVnaW9uIFJ1biBHZW5lcmFsIFRlc3RzDQppZiAoJFRlc3RHZW5lcmFsKQ0Kew0KCVdyaXRlLUhvc3QgICJNb2R1bGVzIGltcG9ydGVkLCBwcm9jZWVkaW5nIHdpdGggZ2VuZXJhbCB0ZXN0cyINCglmb3JlYWNoICgkZmlsZSBpbiAoR2V0LUNoaWxkSXRlbSAiJFBTU2NyaXB0Um9vdFxnZW5lcmFsIiB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLlRlc3RzLnBzMSIpKQ0KCXsNCgkJaWYgKCRmaWxlLk5hbWUgLW5vdGxpa2UgJEluY2x1ZGUpIHsgY29udGludWUgfQ0KCQlpZiAoJGZpbGUuTmFtZSAtbGlrZSAkRXhjbHVkZSkgeyBjb250aW51ZSB9DQoNCgkJV3JpdGUtSG9zdCAgIiAgRXhlY3V0aW5nICQoJGZpbGUuTmFtZSkiDQoJCSRjb25maWcuVGVzdFJlc3VsdC5PdXRwdXRQYXRoID0gSm9pbi1QYXRoICIkUFNTY3JpcHRSb290XC4uXFRlc3RSZXN1bHRzIiAiVEVTVC0kKCRmaWxlLkJhc2VOYW1lKS54bWwiDQoJCSRjb25maWcuUnVuLlBhdGggPSAkZmlsZS5GdWxsTmFtZQ0KCQkkY29uZmlnLlJ1bi5QYXNzVGhydSA9ICR0cnVlDQoJCSRjb25maWcuT3V0cHV0LlZlcmJvc2l0eSA9ICRPdXRwdXQNCiAgICAJJHJlc3VsdHMgPSBJbnZva2UtUGVzdGVyIC1Db25maWd1cmF0aW9uICRjb25maWcNCgkJZm9yZWFjaCAoJHJlc3VsdCBpbiAkcmVzdWx0cykNCgkJew0KCQkJJHRvdGFsUnVuICs9ICRyZXN1bHQuVG90YWxDb3VudA0KCQkJJHRvdGFsRmFpbGVkICs9ICRyZXN1bHQuRmFpbGVkQ291bnQNCgkJCSRyZXN1bHQuVGVzdHMgfCBXaGVyZS1PYmplY3QgUmVzdWx0IC1uZSAnUGFzc2VkJyB8IEZvckVhY2gtT2JqZWN0IHsNCgkJCQkkdGVzdHJlc3VsdHMgKz0gW3BzY3VzdG9tb2JqZWN0XUB7DQoJCQkJCUJsb2NrICAgID0gJF8uQmxvY2sNCgkJCQkJTmFtZQkgPSAiSXQgJCgkXy5OYW1lKSINCgkJCQkJUmVzdWx0ICAgPSAkXy5SZXN1bHQNCgkJCQkJTWVzc2FnZSAgPSAkXy5FcnJvclJlY29yZC5EaXNwbGF5RXJyb3JNZXNzYWdlDQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KI2VuZHJlZ2lvbiBSdW4gR2VuZXJhbCBUZXN0cw0KDQokZ2xvYmFsOl9fcGVzdGVyX2RhdGEuU2NyaXB0QW5hbHl6ZXIgfCBPdXQtSG9zdA0KDQojcmVnaW9uIFRlc3QgQ29tbWFuZHMNCmlmICgkVGVzdEZ1bmN0aW9ucykNCnsNCglXcml0ZS1Ib3N0ICJQcm9jZWVkaW5nIHdpdGggaW5kaXZpZHVhbCB0ZXN0cyINCglmb3JlYWNoICgkZmlsZSBpbiAoR2V0LUNoaWxkSXRlbSAiJFBTU2NyaXB0Um9vdFxmdW5jdGlvbnMiIC1SZWN1cnNlIC1GaWxlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIipUZXN0cy5wczEiKSkNCgl7DQoJCWlmICgkZmlsZS5OYW1lIC1ub3RsaWtlICRJbmNsdWRlKSB7IGNvbnRpbnVlIH0NCgkJaWYgKCRmaWxlLk5hbWUgLWxpa2UgJEV4Y2x1ZGUpIHsgY29udGludWUgfQ0KCQkNCgkJV3JpdGUtSG9zdCAiICBFeGVjdXRpbmcgJCgkZmlsZS5OYW1lKSINCgkJJGNvbmZpZy5UZXN0UmVzdWx0Lk91dHB1dFBhdGggPSBKb2luLVBhdGggIiRQU1NjcmlwdFJvb3RcLi5cVGVzdFJlc3VsdHMiICJURVNULSQoJGZpbGUuQmFzZU5hbWUpLnhtbCINCgkJJGNvbmZpZy5SdW4uUGF0aCA9ICRmaWxlLkZ1bGxOYW1lDQoJCSRjb25maWcuUnVuLlBhc3NUaHJ1ID0gJHRydWUNCgkJJGNvbmZpZy5PdXRwdXQuVmVyYm9zaXR5ID0gJE91dHB1dA0KICAgIAkkcmVzdWx0cyA9IEludm9rZS1QZXN0ZXIgLUNvbmZpZ3VyYXRpb24gJGNvbmZpZw0KCQlmb3JlYWNoICgkcmVzdWx0IGluICRyZXN1bHRzKQ0KCQl7DQoJCQkkdG90YWxSdW4gKz0gJHJlc3VsdC5Ub3RhbENvdW50DQoJCQkkdG90YWxGYWlsZWQgKz0gJHJlc3VsdC5GYWlsZWRDb3VudA0KCQkJJHJlc3VsdC5UZXN0cyB8IFdoZXJlLU9iamVjdCBSZXN1bHQgLW5lICdQYXNzZWQnIHwgRm9yRWFjaC1PYmplY3Qgew0KCQkJCSR0ZXN0cmVzdWx0cyArPSBbcHNjdXN0b21vYmplY3RdQHsNCgkJCQkJQmxvY2sgICAgPSAkXy5CbG9jaw0KCQkJCQlOYW1lCSA9ICJJdCAkKCRfLk5hbWUpIg0KCQkJCQlSZXN1bHQgICA9ICRfLlJlc3VsdA0KCQkJCQlNZXNzYWdlICA9ICRfLkVycm9yUmVjb3JkLkRpc3BsYXlFcnJvck1lc3NhZ2UNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9DQojZW5kcmVnaW9uIFRlc3QgQ29tbWFuZHMNCg0KJHRlc3RyZXN1bHRzIHwgU29ydC1PYmplY3QgRGVzY3JpYmUsIENvbnRleHQsIE5hbWUsIFJlc3VsdCwgTWVzc2FnZSB8IEZvcm1hdC1MaXN0DQoNCmlmICgkdG90YWxGYWlsZWQgLWVxIDApIHsgV3JpdGUtSG9zdCAgIkFsbCAkdG90YWxSdW4gdGVzdHMgZXhlY3V0ZWQgd2l0aG91dCBhIHNpbmdsZSBmYWlsdXJlISIgfQ0KZWxzZSB7IFdyaXRlLUhvc3QgIiR0b3RhbEZhaWxlZCB0ZXN0cyBvdXQgb2YgJHRvdGFsUnVuIHRlc3RzIGZhaWxlZCEiIH0NCg0KaWYgKCR0b3RhbEZhaWxlZCAtZ3QgMCkNCnsNCgl0aHJvdyAiJHRvdGFsRmFpbGVkIC8gJHRvdGFsUnVuIHRlc3RzIGZhaWxlZCEiDQp9AQkcAAAACR0AAAAGHgAAAApwZXN0ZXIucHMxBh8AAAAQdGVzdHNccGVzdGVyLnBzMQkGAAAACSEAAAAJIgAAAAEOAAAADQAAAAYjAAAAogcjIERlc2NyaXB0aW9uDQoNClRoaXMgaXMgdGhlIGZvbGRlciwgd2hlcmUgYWxsIHRoZSB0ZXN0cyBnby4NCg0KVGhvc2UgYXJlIHN1YmRpdmlkZWQgaW4gdHdvIGNhdGVnb3JpZXM6DQoNCiAtIEdlbmVyYWwNCiAtIEZ1bmN0aW9uDQoNCiMjIEdlbmVyYWwgVGVzdHMNCg0KR2VuZXJhbCB0ZXN0cyBhcmUgZnVuY3Rpb24gZ2VuZXJpYyBhbmQgdGVzdCBmb3IgZ2VuZXJhbCBwb2xpY2llcy4NCg0KVGhlc2UgdGVzdCBzY2FuIGFuc3dlciBxdWVzdGlvbnMgc3VjaCBhczoNCg0KIC0gSXMgbXkgbW9kdWxlIGZvbGxvd2luZyBteSBzdHlsZSBndWlkZXM/DQogLSBEb2VzIGFueSBvZiBteSBzY3JpcHRzIGhhdmUgYSBzeW50YXggZXJyb3I/DQogLSBEbyBteSBzY3JpcHRzIHVzZSBjb21tYW5kcyBJIGRvIG5vdCB3YW50IHRoZW0gdG8gdXNlPw0KIC0gRG8gbXkgY29tbWFuZHMgZm9sbG93IGJlc3QgcHJhY3RpY2VzPw0KIC0gRG8gbXkgY29tbWFuZHMgaGF2ZSBwcm9wZXIgaGVscD8NCg0KQmFzaWNhbGx5LCB0aGVzZSBhbGxvdyBhIGdlbmVyYWwgbW9kdWxlIGhlYWx0aCBjaGVjay4NCg0KVGhlc2UgdGVzdHMgYXJlIGFscmVhZHkgcHJvdmlkZWQgYXMgcGFydCBvZiB0aGUgdGVtcGxhdGUuDQoNCiMjIEZ1bmN0aW9uIFRlc3RzDQoNCkEgaGVhbHRoeSBtb2R1bGUgc2hvdWxkIHByb3ZpZGUgdW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdHMgZm9yIHRoZSBjb21tYW5kcyAmIGNvbXBvbmVudHMgaXQgc2hpcHMuDQpPbmx5IHRoZW4gY2FuIGJlIGd1YXJhbnRlZWQsIHRoYXQgdGhleSB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gYXMgcHJvbWlzZWQuDQoNCkhvd2V2ZXIsIGFzIGVhY2ggc3VjaCB0ZXN0IG11c3QgYmUgc3BlY2lmaWMgdG8gdGhlIGZ1bmN0aW9uIGl0IHRlc3RzLCB0aGVyZSBjYW5ub3QgYmUgbXVjaCBpbiB0aGUgd2F5IG9mIHRlbXBsYXRlcy4BCSQAAAAJJQAAAAYmAAAACXJlYWRtZS5tZAYnAAAAD3Rlc3RzXHJlYWRtZS5tZAkGAAAACSkAAAAJKgAAAAEPAAAAAwAAAAkrAAAAAQAAAAEAAAABEwAAAAcAAAAJCgAAAAAAAAAAAAAAARQAAAAHAAAACQoAAAAAAAAAAAAAAAEVAAAAAwAAAAktAAAABgAAAAYAAAABGQAAAAcAAAAJCgAAAAAAAAAAAAAAARoAAAAHAAAACQoAAAAAAAAAAAAAAAEcAAAABwAAAAkvAAAAAQAAAAEAAAABHQAAAAcAAAAJCgAAAAAAAAAAAAAAASEAAAAHAAAACQoAAAAAAAAAAAAAAAEiAAAABwAAAAkKAAAAAAAAAAAAAAABJAAAAAcAAAAJCgAAAAAAAAAAAAAAASUAAAAHAAAACQoAAAAAAAAAAAAAAAEpAAAABwAAAAkKAAAAAAAAAAAAAAABKgAAAAcAAAAJCgAAAAAAAAAAAAAABysAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJMQAAAA0DBy0AAAAAAQAAAAgAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJMgAAAAkzAAAACTQAAAAJNQAAAAk2AAAACTcAAAANAhEvAAAABAAAAAY4AAAABG5hbWUNAwExAAAADQAAAAY5AAAA1QEjIERlc2NyaXB0aW9uDQoNClRoaXMgaXMgd2hlcmUgdGhlIGZ1bmN0aW9uIHRlc3RzIGdvLg0KDQpNYWtlIHN1cmUgdG8gcHV0IHRoZW0gaW4gZm9sZGVycyByZWZsZWN0aW5nIHRoZSBhY3R1YWwgbW9kdWxlIHN0cnVjdHVyZS4NCg0KSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gaW50ZXJuYWwgYW5kIHB1YmxpYyBmdW5jdGlvbnMgaGVyZS4BCToAAAAJOwAAAAY8AAAACXJlYWRtZS5tZAY9AAAAGXRlc3RzXGZ1bmN0aW9uc1xyZWFkbWUubWQJBgAAAAk/AAAACUAAAAABMgAAAA0AAAAGQQAAAJkFIyBMaXN0IG9mIGZvcmJpZGRlbiBjb21tYW5kcw0KJGdsb2JhbDpCYW5uZWRDb21tYW5kcyA9IEAoDQoJJ1dyaXRlLU91dHB1dCcNCgkNCgkjIFVzZSBDSU0gaW5zdGVhZCB3aGVyZSBwb3NzaWJsZQ0KCSdHZXQtV21pT2JqZWN0Jw0KCSdJbnZva2UtV21pTWV0aG9kJw0KCSdSZWdpc3Rlci1XbWlFdmVudCcNCgknUmVtb3ZlLVdtaU9iamVjdCcNCgknU2V0LVdtaUluc3RhbmNlJw0KDQoJIyBVc2UgR2V0LVdpbkV2ZW50IGluc3RlYWQNCgknR2V0LUV2ZW50TG9nJw0KKQ0KDQo8Iw0KCUNvbnRhaW5zIGxpc3Qgb2YgZXhjZXB0aW9ucyBmb3IgYmFubmVkIGNtZGxldHMuDQoJSW5zZXJ0IHRoZSBmaWxlIG5hbWVzIG9mIGZpbGVzIHRoYXQgbWF5IGNvbnRhaW4gdGhlbS4NCgkNCglFeGFtcGxlOg0KCSJXcml0ZS1Ib3N0IiAgPSBAKCdXcml0ZS1QU0ZIb3N0Q29sb3IucHMxJywnV3JpdGUtUFNGTWVzc2FnZS5wczEnKQ0KIz4NCiRnbG9iYWw6TWF5Q29udGFpbkNvbW1hbmQgPSBAew0KCSJXcml0ZS1Ib3N0IiAgPSBAKCkNCgkiV3JpdGUtVmVyYm9zZSIgPSBAKCkNCgkiV3JpdGUtV2FybmluZyIgPSBAKCkNCgkiV3JpdGUtRXJyb3IiICA9IEAoKQ0KCSJXcml0ZS1PdXRwdXQiID0gQCgpDQoJIldyaXRlLUluZm9ybWF0aW9uIiA9IEAoKQ0KCSJXcml0ZS1EZWJ1ZyIgPSBAKCkNCn0BCUIAAAAJQwAAAAZEAAAAHEZpbGVJbnRlZ3JpdHkuRXhjZXB0aW9ucy5wczEGRQAAACp0ZXN0c1xnZW5lcmFsXEZpbGVJbnRlZ3JpdHkuRXhjZXB0aW9ucy5wczEJBgAAAAlHAAAACUgAAAABMwAAAA0AAAAGSQAAAOEYJG1vZHVsZVJvb3QgPSAoUmVzb2x2ZS1QYXRoICIkZ2xvYmFsOnRlc3Ryb290XC4uIikuUGF0aA0KDQouICIkZ2xvYmFsOnRlc3Ryb290XGdlbmVyYWxcRmlsZUludGVncml0eS5FeGNlcHRpb25zLnBzMSINCg0KRGVzY3JpYmUgIlZlcmlmeWluZyBpbnRlZ3JpdHkgb2YgbW9kdWxlIGZpbGVzIiB7DQoJQmVmb3JlQWxsIHsNCgkJZnVuY3Rpb24gR2V0LUZpbGVFbmNvZGluZw0KCQl7DQoJCTwjDQoJCQkuU1lOT1BTSVMNCgkJCQlUZXN0cyBhIGZpbGUgZm9yIGVuY29kaW5nLg0KCQkJDQoJCQkuREVTQ1JJUFRJT04NCgkJCQlUZXN0cyBhIGZpbGUgZm9yIGVuY29kaW5nLg0KCQkJDQoJCQkuUEFSQU1FVEVSIFBhdGgNCgkJCQlUaGUgZmlsZSB0byB0ZXN0DQoJCSM+DQoJCQlbQ21kbGV0QmluZGluZygpXQ0KCQkJUGFyYW0gKA0KCQkJCVtQYXJhbWV0ZXIoTWFuZGF0b3J5ID0gJFRydWUsIFZhbHVlRnJvbVBpcGVsaW5lQnlQcm9wZXJ0eU5hbWUgPSAkVHJ1ZSldDQoJCQkJW0FsaWFzKCdGdWxsTmFtZScpXQ0KCQkJCVtzdHJpbmddDQoJCQkJJFBhdGgNCgkJCSkNCgkJCQ0KCQkJaWYgKCRQU1ZlcnNpb25UYWJsZS5QU1ZlcnNpb24uTWFqb3IgLWx0IDYpDQoJCQl7DQoJCQkJW2J5dGVbXV0kYnl0ZSA9IGdldC1jb250ZW50IC1FbmNvZGluZyBieXRlIC1SZWFkQ291bnQgNCAtVG90YWxDb3VudCA0IC1QYXRoICRQYXRoDQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJW2J5dGVbXV0kYnl0ZSA9IEdldC1Db250ZW50IC1Bc0J5dGVTdHJlYW0gLVJlYWRDb3VudCA0IC1Ub3RhbENvdW50IDQgLVBhdGggJFBhdGgNCgkJCX0NCgkJCQ0KCQkJaWYgKCRieXRlWzBdIC1lcSAweGVmIC1hbmQgJGJ5dGVbMV0gLWVxIDB4YmIgLWFuZCAkYnl0ZVsyXSAtZXEgMHhiZikgeyAnVVRGOCBCT00nIH0NCgkJCWVsc2VpZiAoJGJ5dGVbMF0gLWVxIDB4ZmUgLWFuZCAkYnl0ZVsxXSAtZXEgMHhmZikgeyAnVW5pY29kZScgfQ0KCQkJZWxzZWlmICgkYnl0ZVswXSAtZXEgMCAtYW5kICRieXRlWzFdIC1lcSAwIC1hbmQgJGJ5dGVbMl0gLWVxIDB4ZmUgLWFuZCAkYnl0ZVszXSAtZXEgMHhmZikgeyAnVVRGMzInIH0NCgkJCWVsc2VpZiAoJGJ5dGVbMF0gLWVxIDB4MmIgLWFuZCAkYnl0ZVsxXSAtZXEgMHgyZiAtYW5kICRieXRlWzJdIC1lcSAweDc2KSB7ICdVVEY3JyB9DQoJCQllbHNlIHsgJ1Vua25vd24nIH0NCgkJfQ0KCX0NCg0KCUNvbnRleHQgIlZhbGlkYXRpbmcgUFMxIFNjcmlwdCBmaWxlcyIgew0KCQkkYWxsRmlsZXMgPSBHZXQtQ2hpbGRJdGVtIC1QYXRoICRtb2R1bGVSb290IC1SZWN1cnNlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIioucHMxIiB8IFdoZXJlLU9iamVjdCBGdWxsTmFtZSAtTm90TGlrZSAiJG1vZHVsZVJvb3RcdGVzdHNcKiINCgkJDQoJCWZvcmVhY2ggKCRmaWxlIGluICRhbGxGaWxlcykNCgkJew0KCQkJJG5hbWUgPSAkZmlsZS5GdWxsTmFtZS5SZXBsYWNlKCIkbW9kdWxlUm9vdFwiLCAnJykNCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgVVRGOCBlbmNvZGluZyB3aXRoIEJ5dGUgT3JkZXIgTWFyayIgLVRlc3RDYXNlcyBAeyBmaWxlID0gJGZpbGUgfSB7DQoJCQkJR2V0LUZpbGVFbmNvZGluZyAtUGF0aCAkZmlsZS5GdWxsTmFtZSB8IFNob3VsZCAtQmUgJ1VURjggQk9NJw0KCQkJfQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBubyB0cmFpbGluZyBzcGFjZSIgLVRlc3RDYXNlcyBAeyBmaWxlID0gJGZpbGUgfSB7DQoJCQkJKCRmaWxlIHwgU2VsZWN0LVN0cmluZyAiXHMkIiB8IFdoZXJlLU9iamVjdCB7ICRfLkxpbmUuVHJpbSgpLkxlbmd0aCAtZ3QgMH0pLkxpbmVOdW1iZXIgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJCX0NCgkJCQ0KCQkJJHRva2VucyA9ICRudWxsDQoJCQkkcGFyc2VFcnJvcnMgPSAkbnVsbA0KCQkJJG51bGwgPSBbU3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5MYW5ndWFnZS5QYXJzZXJdOjpQYXJzZUZpbGUoJGZpbGUuRnVsbE5hbWUsIFtyZWZdJHRva2VucywgW3JlZl0kcGFyc2VFcnJvcnMpDQoJCQkNCgkJCUl0ICJbJG5hbWVdIFNob3VsZCBoYXZlIG5vIHN5bnRheCBlcnJvcnMiIC1UZXN0Q2FzZXMgQHsgcGFyc2VFcnJvcnMgPSAkcGFyc2VFcnJvcnMgfSB7DQoJCQkJJHBhcnNlRXJyb3JzIHwgU2hvdWxkIC1CZU51bGxPckVtcHR5DQoJCQl9DQoJCQkNCgkJCWZvcmVhY2ggKCRjb21tYW5kIGluICRnbG9iYWw6QmFubmVkQ29tbWFuZHMpDQoJCQl7DQoJCQkJaWYgKCRnbG9iYWw6TWF5Q29udGFpbkNvbW1hbmRbIiRjb21tYW5kIl0gLW5vdGNvbnRhaW5zICRmaWxlLk5hbWUpDQoJCQkJew0KCQkJCQlJdCAiWyRuYW1lXSBTaG91bGQgbm90IHVzZSAkY29tbWFuZCIgLVRlc3RDYXNlcyBAeyB0b2tlbnMgPSAkdG9rZW5zOyBjb21tYW5kID0gJGNvbW1hbmQgfSB7DQoJCQkJCQkkdG9rZW5zIHwgV2hlcmUtT2JqZWN0IFRleHQgLUVRICRjb21tYW5kIHwgU2hvdWxkIC1CZU51bGxPckVtcHR5DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJDQoJQ29udGV4dCAiVmFsaWRhdGluZyBoZWxwLnR4dCBoZWxwIGZpbGVzIiB7DQoJCSRhbGxGaWxlcyA9IEdldC1DaGlsZEl0ZW0gLVBhdGggJG1vZHVsZVJvb3QgLVJlY3Vyc2UgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5oZWxwLnR4dCIgfCBXaGVyZS1PYmplY3QgRnVsbE5hbWUgLU5vdExpa2UgIiRtb2R1bGVSb290XHRlc3RzXCoiDQoJCQ0KCQlmb3JlYWNoICgkZmlsZSBpbiAkYWxsRmlsZXMpDQoJCXsNCgkJCSRuYW1lID0gJGZpbGUuRnVsbE5hbWUuUmVwbGFjZSgiJG1vZHVsZVJvb3RcIiwgJycpDQoJCQkNCgkJCUl0ICJbJG5hbWVdIFNob3VsZCBoYXZlIFVURjggZW5jb2RpbmciIC1UZXN0Q2FzZXMgQHsgZmlsZSA9ICRmaWxlIH0gew0KCQkJCUdldC1GaWxlRW5jb2RpbmcgLVBhdGggJGZpbGUuRnVsbE5hbWUgfCBTaG91bGQgLUJlICdVVEY4IEJPTScNCgkJCX0NCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgbm8gdHJhaWxpbmcgc3BhY2UiIC1UZXN0Q2FzZXMgQHsgZmlsZSA9ICRmaWxlIH0gew0KCQkJCSgkZmlsZSB8IFNlbGVjdC1TdHJpbmcgIlxzJCIgfCBXaGVyZS1PYmplY3QgeyAkXy5MaW5lLlRyaW0oKS5MZW5ndGggLWd0IDAgfSB8IE1lYXN1cmUtT2JqZWN0KS5Db3VudCB8IFNob3VsZCAtQmUgMA0KCQkJfQ0KCQl9DQoJfQ0KfQEJSgAAAAlLAAAABkwAAAAXRmlsZUludGVncml0eS5UZXN0cy5wczEGTQAAACV0ZXN0c1xnZW5lcmFsXEZpbGVJbnRlZ3JpdHkuVGVzdHMucHMxCQYAAAAJTwAAAAlQAAAAATQAAAANAAAABlEAAACdBSMgTGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaWdub3JlZA0KJGdsb2JhbDpGdW5jdGlvbkhlbHBUZXN0RXhjZXB0aW9ucyA9IEAoDQogICAgDQopDQoNCjwjDQogIExpc3Qgb2YgYXJyYXllZCBlbnVtZXJhdGlvbnMuIFRoZXNlIG5lZWQgdG8gYmUgdHJlYXRlZCBkaWZmZXJlbnRseS4gQWRkIGZ1bGwgbmFtZS4NCiAgRXhhbXBsZToNCg0KICAiU3FsY29sbGFib3JhdGl2ZS5EYmF0b29scy5Db25uZWN0aW9uLk1hbmFnZW1lbnRDb25uZWN0aW9uVHlwZVtdIg0KIz4NCiRnbG9iYWw6SGVscFRlc3RFbnVtZXJhdGVkQXJyYXlzID0gQCgNCgkNCikNCg0KPCMNCiAgU29tZSB0eXBlcyBvbiBwYXJhbWV0ZXJzIGp1c3QgZmFpbCB0aGVpciB2YWxpZGF0aW9uIG5vIG1hdHRlciB3aGF0Lg0KICBGb3IgdGhvc2UgaXQgYmVjb21lcyBwb3NzaWJsZSB0byBza2lwIHRoZW0sIGJ5IGFkZGluZyB0aGVtIHRvIHRoaXMgaGFzaHRhYmxlLg0KICBBZGQgYnkgZm9sbG93aW5nIHRoaXMgY29udmVudGlvbjogPGNvbW1hbmQgbmFtZT4gPSBAKDxsaXN0IG9mIHBhcmFtZXRlciBuYW1lcz4pDQogIEV4YW1wbGU6DQoNCiAgIkdldC1EYmFDbU9iamVjdCIgICAgICAgPSBAKCJEb05vdFVzZSIpDQojPg0KJGdsb2JhbDpIZWxwVGVzdFNraXBQYXJhbWV0ZXJUeXBlID0gQHsNCiAgICANCn0NCgEJUgAAAAlTAAAABlQAAAATSGVscC5FeGNlcHRpb25zLnBzMQZVAAAAIXRlc3RzXGdlbmVyYWxcSGVscC5FeGNlcHRpb25zLnBzMQkGAAAACVcAAAAJWAAAAAE1AAAADQAAAAZZAAAA+jU8Iw0KICAgIC5OT1RFUw0KICAgICAgICBUaGUgb3JpZ2luYWwgdGVzdCB0aGlzIGlzIGJhc2VkIHVwb24gd2FzIHdyaXR0ZW4gYnkgSnVuZSBCbGVuZGVyLg0KCQlBZnRlciBzZXZlcmFsIHJvdW5kcyBvZiBtb2RpZmljYXRpb25zIGl0IHN0YW5kcyBub3cgYXMgaXQgaXMsIGJ1dCB0aGUgaG9ub3IgcmVtYWlucyBoZXJzLg0KDQoJCVRoYW5rIHlvdSBKdW5lLCBmb3IgYWxsIHlvdSBoYXZlIGRvbmUhDQoNCiAgICAuREVTQ1JJUFRJT04NCgkJVGhpcyB0ZXN0IGV2YWx1YXRlcyB0aGUgaGVscCBmb3IgYWxsIGNvbW1hbmRzIGluIGEgbW9kdWxlLg0KDQoJLlBBUkFNRVRFUiBTa2lwVGVzdA0KCQlEaXNhYmxlcyB0aGlzIHRlc3QuDQoJDQoJLlBBUkFNRVRFUiBDb21tYW5kUGF0aA0KCQlMaXN0IG9mIHBhdGhzIHVuZGVyIHdoaWNoIHRoZSBzY3JpcHQgZmlsZXMgYXJlIHN0b3JlZC4NCgkJVGhpcyB0ZXN0IGFzc3VtZXMgdGhhdCBhbGwgZnVuY3Rpb25zIGhhdmUgdGhlaXIgb3duIGZpbGUgdGhhdCBpcyBuYW1lZCBhZnRlciB0aGVtc2VsdmVzLg0KCQlUaGVzZSBwYXRocyBhcmUgdXNlZCB0byBzZWFyY2ggZm9yIGNvbW1hbmRzIHRoYXQgc2hvdWxkIGV4aXN0IGFuZCBiZSB0ZXN0ZWQuDQoJCVdpbGwgc2VhcmNoIHJlY3Vyc2l2ZWx5IGFuZCBhY2NlcHRzIHdpbGRjYXJkcywgbWFrZSBzdXJlIG9ubHkgZnVuY3Rpb25zIGFyZSBmb3VuZA0KDQoJLlBBUkFNRVRFUiBNb2R1bGVOYW1lDQoJCU5hbWUgb2YgdGhlIG1vZHVsZSB0byBiZSB0ZXN0ZWQuDQoJCVRoZSBtb2R1bGUgbXVzdCBhbHJlYWR5IGJlIGltcG9ydGVkDQoNCgkuUEFSQU1FVEVSIEV4Y2VwdGlvbnNGaWxlDQoJCUZpbGUgaW4gd2hpY2ggZXhjZXB0aW9ucyBhbmQgYWRqdXN0bWVudHMgYXJlIGNvbmZpZ3VyZWQuDQoJCUluIGl0IHRoZXJlIHNob3VsZCBiZSB0d28gYXJyYXlzIGFuZCBhIGhhc2h0YWJsZSBkZWZpbmVkOg0KCQkJJGdsb2JhbDpGdW5jdGlvbkhlbHBUZXN0RXhjZXB0aW9ucw0KCQkJJGdsb2JhbDpIZWxwVGVzdEVudW1lcmF0ZWRBcnJheXMNCgkJCSRnbG9iYWw6SGVscFRlc3RTa2lwUGFyYW1ldGVyVHlwZQ0KCQlUaGVzZSBjYW4gYmUgdXNlZCB0byB0d2VhayB0aGUgdGVzdHMgc2xpZ2h0bHkgaW4gY2FzZXMgb2YgbmVlZC4NCgkJU2VlIHRoZSBleGFtcGxlIGZpbGUgZm9yIGV4cGxhbmF0aW9ucyBvbiBlYWNoIG9mIHRoZXNlIHVzYWdlIGFuZCBlZmZlY3QuDQojPg0KW0NtZGxldEJpbmRpbmcoKV0NClBhcmFtICgNCglbc3dpdGNoXQ0KCSRTa2lwVGVzdCwNCgkNCglbc3RyaW5nW11dDQoJJENvbW1hbmRQYXRoID0gQCgiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxmdW5jdGlvbnMiLCAiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxpbnRlcm5hbFxmdW5jdGlvbnMiKSwNCgkNCglbc3RyaW5nXQ0KCSRNb2R1bGVOYW1lID0gIsO+bmFtZcO+IiwNCgkNCglbc3RyaW5nXQ0KCSRFeGNlcHRpb25zRmlsZSA9ICIkZ2xvYmFsOnRlc3Ryb290XGdlbmVyYWxcSGVscC5FeGNlcHRpb25zLnBzMSINCikNCmlmICgkU2tpcFRlc3QpIHsgcmV0dXJuIH0NCi4gJEV4Y2VwdGlvbnNGaWxlDQoNCiRDb21tYW5kUGF0aCA9IEAoDQogICAgIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75cZnVuY3Rpb25zIg0KICAgICIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGludGVybmFsXGZ1bmN0aW9ucyINCikNCg0KJGluY2x1ZGVkTmFtZXMgPSBmb3JlYWNoICgkcGF0aCBpbiAkQ29tbWFuZFBhdGgpIHsgKEdldC1DaGlsZEl0ZW0gJHBhdGggLVJlY3Vyc2UgLUZpbGUgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5wczEiKS5CYXNlTmFtZSB9DQokY29tbWFuZFR5cGVzID0gQCgnQ21kbGV0JywgJ0Z1bmN0aW9uJykNCmlmICgkUFNWZXJzaW9uVGFibGUuUFNFZGl0aW9uIC1lcSAnRGVza3RvcCcgKSB7ICRjb21tYW5kVHlwZXMgKz0gJ1dvcmtmbG93JyB9DQokY29tbWFuZHMgPSBHZXQtQ29tbWFuZCAtTW9kdWxlIChHZXQtTW9kdWxlICRNb2R1bGVOYW1lKSAtQ29tbWFuZFR5cGUgJGNvbW1hbmRUeXBlcyB8IFdoZXJlLU9iamVjdCBOYW1lIC1JbiAkaW5jbHVkZWROYW1lcw0KDQojIyBXaGVuIHRlc3RpbmcgaGVscCwgcmVtZW1iZXIgdGhhdCBoZWxwIGlzIGNhY2hlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc2Vzc2lvbi4NCiMjIFRvIHRlc3QsIHJlc3RhcnQgc2Vzc2lvbi4NCg0KDQpmb3JlYWNoICgkY29tbWFuZCBpbiAkY29tbWFuZHMpIHsNCiAgICAkY29tbWFuZE5hbWUgPSAkY29tbWFuZC5OYW1lDQogICAgDQogICAgIyBTa2lwIGFsbCBmdW5jdGlvbnMgdGhhdCBhcmUgb24gdGhlIGV4Y2x1c2lvbnMgbGlzdA0KICAgIGlmICgkZ2xvYmFsOkZ1bmN0aW9uSGVscFRlc3RFeGNlcHRpb25zIC1jb250YWlucyAkY29tbWFuZE5hbWUpIHsgY29udGludWUgfQ0KICAgIA0KICAgICMgVGhlIG1vZHVsZS1xdWFsaWZpZWQgY29tbWFuZCBmYWlscyBvbiBNaWNyb3NvZnQuUG93ZXJTaGVsbC5BcmNoaXZlIGNtZGxldHMNCiAgICAkSGVscCA9IEdldC1IZWxwICRjb21tYW5kTmFtZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQ0KCQ0KCURlc2NyaWJlICJUZXN0IGhlbHAgZm9yICRjb21tYW5kTmFtZSIgew0KICAgICAgICANCgkJIyBJZiBoZWxwIGlzIG5vdCBmb3VuZCwgc3lub3BzaXMgaW4gYXV0by1nZW5lcmF0ZWQgaGVscCBpcyB0aGUgc3ludGF4IGRpYWdyYW0NCgkJSXQgInNob3VsZCBub3QgYmUgYXV0by1nZW5lcmF0ZWQiIC1UZXN0Q2FzZXMgQHsgSGVscCA9ICRIZWxwIH0gew0KCQkJJEhlbHAuU3lub3BzaXMgfCBTaG91bGQgLU5vdCAtQmVMaWtlICcqYFtgPENvbW1vblBhcmFtZXRlcnNgPmBdKicNCgkJfQ0KICAgICAgICANCgkJIyBTaG91bGQgYmUgYSBkZXNjcmlwdGlvbiBmb3IgZXZlcnkgZnVuY3Rpb24NCgkJSXQgImdldHMgZGVzY3JpcHRpb24gZm9yICRjb21tYW5kTmFtZSIgLVRlc3RDYXNlcyBAeyBIZWxwID0gJEhlbHAgfSB7DQoJCQkkSGVscC5EZXNjcmlwdGlvbiB8IFNob3VsZCAtTm90IC1CZU51bGxPckVtcHR5DQoJCX0NCiAgICAgICAgDQoJCSMgU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBleGFtcGxlDQoJCUl0ICJnZXRzIGV4YW1wbGUgY29kZSBmcm9tICRjb21tYW5kTmFtZSIgLVRlc3RDYXNlcyBAeyBIZWxwID0gJEhlbHAgfSB7DQoJCQkoJEhlbHAuRXhhbXBsZXMuRXhhbXBsZSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEpLkNvZGUgfCBTaG91bGQgLU5vdCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQoJDQoJCSMgU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBleGFtcGxlIGRlc2NyaXB0aW9uDQoJCUl0ICJnZXRzIGV4YW1wbGUgaGVscCBmcm9tICRjb21tYW5kTmFtZSIgLVRlc3RDYXNlcyBAeyBIZWxwID0gJEhlbHAgfSB7DQoJCQkoJEhlbHAuRXhhbXBsZXMuRXhhbXBsZS5SZW1hcmtzIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMSkuVGV4dCB8IFNob3VsZCAtTm90IC1CZU51bGxPckVtcHR5DQoJCX0NCiAgICAgICAgDQogICAgICAgIENvbnRleHQgIlRlc3QgcGFyYW1ldGVyIGhlbHAgZm9yICRjb21tYW5kTmFtZSIgew0KICAgICAgICAgICAgDQogICAgICAgICAgICAkY29tbW9uID0gJ0RlYnVnJywgJ0Vycm9yQWN0aW9uJywgJ0Vycm9yVmFyaWFibGUnLCAnSW5mb3JtYXRpb25BY3Rpb24nLCAnSW5mb3JtYXRpb25WYXJpYWJsZScsICdPdXRCdWZmZXInLCAnT3V0VmFyaWFibGUnLCAnUGlwZWxpbmVWYXJpYWJsZScsICdWZXJib3NlJywgJ1dhcm5pbmdBY3Rpb24nLCAnV2FybmluZ1ZhcmlhYmxlJw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkcGFyYW1ldGVycyA9ICRjb21tYW5kLlBhcmFtZXRlclNldHMuUGFyYW1ldGVycyB8IFNvcnQtT2JqZWN0IC1Qcm9wZXJ0eSBOYW1lIC1VbmlxdWUgfCBXaGVyZS1PYmplY3QgTmFtZSAtbm90aW4gJGNvbW1vbg0KICAgICAgICAgICAgJHBhcmFtZXRlck5hbWVzID0gJHBhcmFtZXRlcnMuTmFtZQ0KICAgICAgICAgICAgJEhlbHBQYXJhbWV0ZXJOYW1lcyA9ICRIZWxwLlBhcmFtZXRlcnMuUGFyYW1ldGVyLk5hbWUgfCBTb3J0LU9iamVjdCAtVW5pcXVlDQogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1ldGVyIGluICRwYXJhbWV0ZXJzKSB7DQogICAgICAgICAgICAgICAgJHBhcmFtZXRlck5hbWUgPSAkcGFyYW1ldGVyLk5hbWUNCiAgICAgICAgICAgICAgICAkcGFyYW1ldGVySGVscCA9ICRIZWxwLnBhcmFtZXRlcnMucGFyYW1ldGVyIHwgV2hlcmUtT2JqZWN0IE5hbWUgLUVRICRwYXJhbWV0ZXJOYW1lDQoJCQkNCgkJCQkjIFNob3VsZCBiZSBhIGRlc2NyaXB0aW9uIGZvciBldmVyeSBwYXJhbWV0ZXINCgkJCQlJdCAiZ2V0cyBoZWxwIGZvciBwYXJhbWV0ZXI6ICRwYXJhbWV0ZXJOYW1lIDogaW4gJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IHBhcmFtZXRlckhlbHAgPSAkcGFyYW1ldGVySGVscCB9IHsNCgkJCQkJJHBhcmFtZXRlckhlbHAuRGVzY3JpcHRpb24uVGV4dCB8IFNob3VsZCAtTm90IC1CZU51bGxPckVtcHR5DQoJCQkJfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICRjb2RlTWFuZGF0b3J5ID0gJHBhcmFtZXRlci5Jc01hbmRhdG9yeS50b1N0cmluZygpDQoJCQkJSXQgImhlbHAgZm9yICRwYXJhbWV0ZXJOYW1lIHBhcmFtZXRlciBpbiAkY29tbWFuZE5hbWUgaGFzIGNvcnJlY3QgTWFuZGF0b3J5IHZhbHVlIiAtVGVzdENhc2VzIEB7IHBhcmFtZXRlckhlbHAgPSAkcGFyYW1ldGVySGVscDsgY29kZU1hbmRhdG9yeSA9ICRjb2RlTWFuZGF0b3J5IH0gew0KCQkJCQkkcGFyYW1ldGVySGVscC5SZXF1aXJlZCB8IFNob3VsZCAtQmUgJGNvZGVNYW5kYXRvcnkNCgkJCQl9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRIZWxwVGVzdFNraXBQYXJhbWV0ZXJUeXBlWyRjb21tYW5kTmFtZV0gLWNvbnRhaW5zICRwYXJhbWV0ZXJOYW1lKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAkY29kZVR5cGUgPSAkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGUuTmFtZQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGUuSXNFbnVtKSB7DQogICAgICAgICAgICAgICAgICAgICMgRW51bWVyYXRpb25zIG9mdGVuIGhhdmUgaXNzdWVzIHdpdGggdGhlIHR5cGVuYW1lIG5vdCBiZWluZyByZWxpYWJseSBhdmFpbGFibGUNCiAgICAgICAgICAgICAgICAgICAgJG5hbWVzID0gJHBhcmFtZXRlci5QYXJhbWV0ZXJUeXBlOjpHZXROYW1lcygkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGUpDQoJCQkJCQkjIFBhcmFtZXRlciB0eXBlIGluIEhlbHAgc2hvdWxkIG1hdGNoIGNvZGUNCgkJCQkJSXQgImhlbHAgZm9yICRjb21tYW5kTmFtZSBoYXMgY29ycmVjdCBwYXJhbWV0ZXIgdHlwZSBmb3IgJHBhcmFtZXRlck5hbWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwOyBuYW1lcyA9ICRuYW1lcyB9IHsNCgkJCQkJCSRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlR3JvdXAucGFyYW1ldGVyVmFsdWUgfCBTaG91bGQgLWJlICRuYW1lcw0KCQkJCQl9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHBhcmFtZXRlci5QYXJhbWV0ZXJUeXBlLkZ1bGxOYW1lIC1pbiAkSGVscFRlc3RFbnVtZXJhdGVkQXJyYXlzKSB7DQogICAgICAgICAgICAgICAgICAgICMgRW51bWVyYXRpb25zIG9mdGVuIGhhdmUgaXNzdWVzIHdpdGggdGhlIHR5cGVuYW1lIG5vdCBiZWluZyByZWxpYWJseSBhdmFpbGFibGUNCiAgICAgICAgICAgICAgICAgICAgJG5hbWVzID0gW0VudW1dOjpHZXROYW1lcygkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGUuRGVjbGFyZWRNZW1iZXJzWzBdLlJldHVyblR5cGUpDQoJCQkJCUl0ICJoZWxwIGZvciAkY29tbWFuZE5hbWUgaGFzIGNvcnJlY3QgcGFyYW1ldGVyIHR5cGUgZm9yICRwYXJhbWV0ZXJOYW1lIiAtVGVzdENhc2VzIEB7IHBhcmFtZXRlckhlbHAgPSAkcGFyYW1ldGVySGVscDsgbmFtZXMgPSAkbmFtZXMgfSB7DQoJCQkJCQkkcGFyYW1ldGVySGVscC5wYXJhbWV0ZXJWYWx1ZUdyb3VwLnBhcmFtZXRlclZhbHVlIHwgU2hvdWxkIC1iZSAkbmFtZXMNCgkJCQkJfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgIyBUbyBhdm9pZCBjYWxsaW5nIFRyaW0gbWV0aG9kIG9uIGEgbnVsbCBvYmplY3QuDQogICAgICAgICAgICAgICAgICAgICRoZWxwVHlwZSA9IGlmICgkcGFyYW1ldGVySGVscC5wYXJhbWV0ZXJWYWx1ZSkgeyAkcGFyYW1ldGVySGVscC5wYXJhbWV0ZXJWYWx1ZS5UcmltKCkgfQ0KCQkJCQkjIFBhcmFtZXRlciB0eXBlIGluIEhlbHAgc2hvdWxkIG1hdGNoIGNvZGUNCgkJCQkJSXQgImhlbHAgZm9yICRjb21tYW5kTmFtZSBoYXMgY29ycmVjdCBwYXJhbWV0ZXIgdHlwZSBmb3IgJHBhcmFtZXRlck5hbWUiIC1UZXN0Q2FzZXMgQHsgaGVscFR5cGUgPSAkaGVscFR5cGU7IGNvZGVUeXBlID0gJGNvZGVUeXBlIH0gew0KCQkJCQkJJGhlbHBUeXBlIHwgU2hvdWxkIC1iZSAkY29kZVR5cGUNCgkJCQkJfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZvcmVhY2ggKCRoZWxwUGFybSBpbiAkSGVscFBhcmFtZXRlck5hbWVzKSB7DQoJCQkJIyBTaG91bGRuJ3QgZmluZCBleHRyYSBwYXJhbWV0ZXJzIGluIGhlbHAuDQoJCQkJSXQgImZpbmRzIGhlbHAgcGFyYW1ldGVyIGluIGNvZGU6ICRoZWxwUGFybSIgLVRlc3RDYXNlcyBAeyBoZWxwUGFybSA9ICRoZWxwUGFybTsgcGFyYW1ldGVyTmFtZXMgPSAkcGFyYW1ldGVyTmFtZXMgfSB7DQoJCQkJCSRoZWxwUGFybSAtaW4gJHBhcmFtZXRlck5hbWVzIHwgU2hvdWxkIC1CZSAkdHJ1ZQ0KCQkJCX0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0BCVoAAAAJWwAAAAZcAAAADkhlbHAuVGVzdHMucHMxBl0AAAAcdGVzdHNcZ2VuZXJhbFxIZWxwLlRlc3RzLnBzMQkGAAAACV8AAAAJYAAAAAE2AAAADQAAAAZhAAAA1BVEZXNjcmliZSAiVmFsaWRhdGluZyB0aGUgbW9kdWxlIG1hbmlmZXN0IiB7DQoJJG1vZHVsZVJvb3QgPSAoUmVzb2x2ZS1QYXRoICIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+IikuUGF0aA0KCSRtYW5pZmVzdCA9ICgoR2V0LUNvbnRlbnQgIiRtb2R1bGVSb290XMO+bmFtZcO+LnBzZDEiKSAtam9pbiAiYG4iKSB8IEludm9rZS1FeHByZXNzaW9uDQoJQ29udGV4dCAiQmFzaWMgcmVzb3VyY2VzIHZhbGlkYXRpb24iIHsNCgkJJGZpbGVzID0gR2V0LUNoaWxkSXRlbSAiJG1vZHVsZVJvb3RcZnVuY3Rpb25zIiAtUmVjdXJzZSAtRmlsZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLnBzMSINCgkJSXQgIkV4cG9ydHMgYWxsIGZ1bmN0aW9ucyBpbiB0aGUgcHVibGljIGZvbGRlciIgLVRlc3RDYXNlcyBAeyBmaWxlcyA9ICRmaWxlczsgbWFuaWZlc3QgPSAkbWFuaWZlc3QgfSB7DQoJCQkNCgkJCSRmdW5jdGlvbnMgPSAoQ29tcGFyZS1PYmplY3QgLVJlZmVyZW5jZU9iamVjdCAkZmlsZXMuQmFzZU5hbWUgLURpZmZlcmVuY2VPYmplY3QgJG1hbmlmZXN0LkZ1bmN0aW9uc1RvRXhwb3J0IHwgV2hlcmUtT2JqZWN0IFNpZGVJbmRpY2F0b3IgLUxpa2UgJzw9JykuSW5wdXRPYmplY3QNCgkJCSRmdW5jdGlvbnMgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCQlJdCAiRXhwb3J0cyBubyBmdW5jdGlvbiB0aGF0IGlzbid0IGFsc28gcHJlc2VudCBpbiB0aGUgcHVibGljIGZvbGRlciIgLVRlc3RDYXNlcyBAeyBmaWxlcyA9ICRmaWxlczsgbWFuaWZlc3QgPSAkbWFuaWZlc3QgfSB7DQoJCQkkZnVuY3Rpb25zID0gKENvbXBhcmUtT2JqZWN0IC1SZWZlcmVuY2VPYmplY3QgJGZpbGVzLkJhc2VOYW1lIC1EaWZmZXJlbmNlT2JqZWN0ICRtYW5pZmVzdC5GdW5jdGlvbnNUb0V4cG9ydCB8IFdoZXJlLU9iamVjdCBTaWRlSW5kaWNhdG9yIC1MaWtlICc9PicpLklucHV0T2JqZWN0DQoJCQkkZnVuY3Rpb25zIHwgU2hvdWxkIC1CZU51bGxPckVtcHR5DQoJCX0NCgkJDQoJCUl0ICJFeHBvcnRzIG5vbmUgb2YgaXRzIGludGVybmFsIGZ1bmN0aW9ucyIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IG1hbmlmZXN0ID0gJG1hbmlmZXN0IH0gew0KCQkJJGZpbGVzID0gR2V0LUNoaWxkSXRlbSAiJG1vZHVsZVJvb3RcaW50ZXJuYWxcZnVuY3Rpb25zIiAtUmVjdXJzZSAtRmlsZSAtRmlsdGVyICIqLnBzMSINCgkJCSRmaWxlcyB8IFdoZXJlLU9iamVjdCBCYXNlTmFtZSAtSW4gJG1hbmlmZXN0LkZ1bmN0aW9uc1RvRXhwb3J0IHwgU2hvdWxkIC1CZU51bGxPckVtcHR5DQoJCX0NCgl9DQoJDQoJQ29udGV4dCAiSW5kaXZpZHVhbCBmaWxlIHZhbGlkYXRpb24iIHsNCgkJSXQgIlRoZSByb290IG1vZHVsZSBmaWxlIGV4aXN0cyIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IG1hbmlmZXN0ID0gJG1hbmlmZXN0IH0gew0KCQkJVGVzdC1QYXRoICIkbW9kdWxlUm9vdFwkKCRtYW5pZmVzdC5Sb290TW9kdWxlKSIgfCBTaG91bGQgLUJlICR0cnVlDQoJCX0NCgkJDQoJCWZvcmVhY2ggKCRmb3JtYXQgaW4gJG1hbmlmZXN0LkZvcm1hdHNUb1Byb2Nlc3MpDQoJCXsNCgkJCUl0ICJUaGUgZmlsZSAkZm9ybWF0IHNob3VsZCBleGlzdCIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IGZvcm1hdCA9ICRmb3JtYXQgfSB7DQoJCQkJVGVzdC1QYXRoICIkbW9kdWxlUm9vdFwkZm9ybWF0IiB8IFNob3VsZCAtQmUgJHRydWUNCgkJCX0NCgkJfQ0KCQkNCgkJZm9yZWFjaCAoJHR5cGUgaW4gJG1hbmlmZXN0LlR5cGVzVG9Qcm9jZXNzKQ0KCQl7DQoJCQlJdCAiVGhlIGZpbGUgJHR5cGUgc2hvdWxkIGV4aXN0IiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgdHlwZSA9ICR0eXBlIH0gew0KCQkJCVRlc3QtUGF0aCAiJG1vZHVsZVJvb3RcJHR5cGUiIHwgU2hvdWxkIC1CZSAkdHJ1ZQ0KCQkJfQ0KCQl9DQoJCQ0KCQlmb3JlYWNoICgkYXNzZW1ibHkgaW4gJG1hbmlmZXN0LlJlcXVpcmVkQXNzZW1ibGllcykNCgkJew0KICAgICAgICAgICAgaWYgKCRhc3NlbWJseSAtbGlrZSAiKi5kbGwiKSB7DQogICAgICAgICAgICAgICAgSXQgIlRoZSBmaWxlICRhc3NlbWJseSBzaG91bGQgZXhpc3QiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyBhc3NlbWJseSA9ICRhc3NlbWJseSB9IHsNCiAgICAgICAgICAgICAgICAgICAgVGVzdC1QYXRoICIkbW9kdWxlUm9vdFwkYXNzZW1ibHkiIHwgU2hvdWxkIC1CZSAkdHJ1ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIEl0ICJUaGUgZmlsZSAkYXNzZW1ibHkgc2hvdWxkIGxvYWQgZnJvbSB0aGUgR0FDIiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgYXNzZW1ibHkgPSAkYXNzZW1ibHkgfSB7DQogICAgICAgICAgICAgICAgICAgIHsgQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSAkYXNzZW1ibHkgfSB8IFNob3VsZCAtTm90IC1UaHJvdw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KCQkNCgkJZm9yZWFjaCAoJHRhZyBpbiAkbWFuaWZlc3QuUHJpdmF0ZURhdGEuUFNEYXRhLlRhZ3MpDQoJCXsNCgkJCUl0ICJUYWdzIHNob3VsZCBoYXZlIG5vIHNwYWNlcyBpbiBuYW1lIiAtVGVzdENhc2VzIEB7IHRhZyA9ICR0YWcgfSB7DQoJCQkJJHRhZyAtbWF0Y2ggIiAiIHwgU2hvdWxkIC1CZSAkZmFsc2UNCgkJCX0NCgkJfQ0KCX0NCn0BCWIAAAAJYwAAAAZkAAAAEk1hbmlmZXN0LlRlc3RzLnBzMQZlAAAAIHRlc3RzXGdlbmVyYWxcTWFuaWZlc3QuVGVzdHMucHMxCQYAAAAJZwAAAAloAAAAATcAAAANAAAABmkAAACaCVtDbWRsZXRCaW5kaW5nKCldDQpQYXJhbSAoDQoJW3N3aXRjaF0NCgkkU2tpcFRlc3QsDQoJDQoJW3N0cmluZ1tdXQ0KCSRDb21tYW5kUGF0aCA9IEAoIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75cZnVuY3Rpb25zIiwgIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zIikNCikNCg0KaWYgKCRTa2lwVGVzdCkgeyByZXR1cm4gfQ0KDQokZ2xvYmFsOl9fcGVzdGVyX2RhdGEuU2NyaXB0QW5hbHl6ZXIgPSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QNCg0KRGVzY3JpYmUgJ0ludm9raW5nIFBTU2NyaXB0QW5hbHl6ZXIgYWdhaW5zdCBjb21tYW5kYmFzZScgew0KCSRjb21tYW5kRmlsZXMgPSBmb3JlYWNoICgkcGF0aCBpbiAkQ29tbWFuZFBhdGgpIHsgR2V0LUNoaWxkSXRlbSAtUGF0aCAkcGF0aCAtUmVjdXJzZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLnBzMSIgfQ0KCSRzY3JpcHRBbmFseXplclJ1bGVzID0gR2V0LVNjcmlwdEFuYWx5emVyUnVsZQ0KCQ0KCWZvcmVhY2ggKCRmaWxlIGluICRjb21tYW5kRmlsZXMpDQoJew0KCQlDb250ZXh0ICJBbmFseXppbmcgJCgkZmlsZS5CYXNlTmFtZSkiIHsNCgkJCSRhbmFseXNpcyA9IEludm9rZS1TY3JpcHRBbmFseXplciAtUGF0aCAkZmlsZS5GdWxsTmFtZSAtRXhjbHVkZVJ1bGUgUFNBdm9pZFRyYWlsaW5nV2hpdGVzcGFjZSwgUFNTaG91bGRQcm9jZXNzDQoJCQkNCgkJCWZvckVhY2ggKCRydWxlIGluICRzY3JpcHRBbmFseXplclJ1bGVzKQ0KCQkJew0KCQkJCUl0ICJTaG91bGQgcGFzcyAkcnVsZSIgLVRlc3RDYXNlcyBAeyBhbmFseXNpcyA9ICRhbmFseXNpczsgcnVsZSA9ICRydWxlIH0gew0KCQkJCQlJZiAoJGFuYWx5c2lzLlJ1bGVOYW1lIC1jb250YWlucyAkcnVsZSkNCgkJCQkJew0KCQkJCQkJJGFuYWx5c2lzIHwgV2hlcmUtT2JqZWN0IFJ1bGVOYW1lIC1FUSAkcnVsZSAtb3V0dmFyaWFibGUgZmFpbHVyZXMgfCBGb3JFYWNoLU9iamVjdCB7ICRudWxsID0gJGdsb2JhbDpfX3Blc3Rlcl9kYXRhLlNjcmlwdEFuYWx5emVyLkFkZCgkXykgfQ0KCQkJCQkJDQoJCQkJCQkxIHwgU2hvdWxkIC1CZSAwDQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkwIHwgU2hvdWxkIC1CZSAwDQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9AQlqAAAACWsAAAAGbAAAABpQU1NjcmlwdEFuYWx5emVyLlRlc3RzLnBzMQZtAAAAKHRlc3RzXGdlbmVyYWxcUFNTY3JpcHRBbmFseXplci5UZXN0cy5wczEJBgAAAAlvAAAACXAAAAABOgAAAAcAAAAJCgAAAAAAAAAAAAAAATsAAAAHAAAACQoAAAAAAAAAAAAAAAE/AAAABwAAAAkKAAAAAAAAAAAAAAABQAAAAAcAAAAJCgAAAAAAAAAAAAAAAUIAAAAHAAAACQoAAAAAAAAAAAAAAAFDAAAABwAAAAkKAAAAAAAAAAAAAAABRwAAAAcAAAAJCgAAAAAAAAAAAAAAAUgAAAAHAAAACQoAAAAAAAAAAAAAAAFKAAAABwAAAAkKAAAAAAAAAAAAAAABSwAAAAcAAAAJCgAAAAAAAAAAAAAAAU8AAAAHAAAACQoAAAAAAAAAAAAAAAFQAAAABwAAAAkKAAAAAAAAAAAAAAABUgAAAAcAAAAJCgAAAAAAAAAAAAAAAVMAAAAHAAAACQoAAAAAAAAAAAAAAAFXAAAABwAAAAkKAAAAAAAAAAAAAAABWAAAAAcAAAAJCgAAAAAAAAAAAAAAAVoAAAAHAAAACXIAAAABAAAAAQAAAAFbAAAABwAAAAkKAAAAAAAAAAAAAAABXwAAAAcAAAAJCgAAAAAAAAAAAAAAAWAAAAAHAAAACQoAAAAAAAAAAAAAAAFiAAAABwAAAAl0AAAAAQAAAAEAAAABYwAAAAcAAAAJCgAAAAAAAAAAAAAAAWcAAAAHAAAACQoAAAAAAAAAAAAAAAFoAAAABwAAAAkKAAAAAAAAAAAAAAABagAAAAcAAAAJdgAAAAEAAAABAAAAAWsAAAAHAAAACQoAAAAAAAAAAAAAAAFvAAAABwAAAAkKAAAAAAAAAAAAAAABcAAAAAcAAAAJCgAAAAAAAAAAAAAAEXIAAAAEAAAABngAAAAEbmFtZQ0DEXQAAAAEAAAABnkAAAAEbmFtZQ0DEXYAAAAEAAAABnoAAAAEbmFtZQ0DCw==</BA>
            </MS>
          </Obj>
          <Obj RefId="21">
            <TNRef RefId="7" />
            <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString>
            <Props>
              <Obj N="Children" RefId="22">
                <TNRef RefId="6" />
                <LST>
                  <S>PSModuleDevelopment.Template.TemplateItemFolder</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFolder</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                  <S>PSModuleDevelopment.Template.TemplateItemFile</S>
                </LST>
              </Obj>
              <S N="Name">þnameþ</S>
              <S N="RelativePath">þnameþ</S>
              <S N="Identifier">þ</S>
              <Obj N="FileSystemParameterFlat" RefId="23">
                <TNRef RefId="2" />
                <LST>
                  <S>name</S>
                </LST>
              </Obj>
              <Obj N="FileSystemParameterScript" RefId="24">
                <TNRef RefId="2" />
                <LST />
              </Obj>
            </Props>
            <MS>
              <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAACMO+bmFtZcO+BgUAAAAIw75uYW1lw74GBgAAAALDvgkHAAAACQgAAAAEAwAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkJAAAABQAAAAUAAAAEBwAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkKAAAAAQAAAAEAAAABCAAAAAcAAAAJCwAAAAAAAAAAAAAABwkAAAAAAQAAAAgAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJDAAAAAkNAAAACQ4AAAAJDwAAAAkQAAAADQMRCgAAAAQAAAAGEQAAAARuYW1lDQMRCwAAAAAAAAABDAAAAAEAAAAJEgAAAAYTAAAACWZ1bmN0aW9ucwYUAAAAEsO+bmFtZcO+XGZ1bmN0aW9ucwkGAAAACRYAAAAJFwAAAAENAAAAAQAAAAkYAAAABhkAAAAIaW50ZXJuYWwGGgAAABHDvm5hbWXDvlxpbnRlcm5hbAkGAAAACRwAAAAJHQAAAAUOAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYeAAAAxghNSVQgTGljZW5zZQ0KDQpDb3B5cmlnaHQgKGMpIMO+IXllYXIhw74gw75hdXRob3LDvg0KDQpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KDQpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQpTT0ZUV0FSRS4NCgEJHwAAAAkgAAAABiEAAAAHTElDRU5TRQYiAAAAEMO+bmFtZcO+XExJQ0VOU0UJBgAAAAkkAAAACSUAAAABDwAAAA4AAAAGJgAAAOIfQHsNCg0KIyBTY3JpcHQgbW9kdWxlIG9yIGJpbmFyeSBtb2R1bGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYW5pZmVzdC4NClJvb3RNb2R1bGUgPSAnw75uYW1lw74ucHNtMScNCg0KIyBWZXJzaW9uIG51bWJlciBvZiB0aGlzIG1vZHVsZS4NCk1vZHVsZVZlcnNpb24gPSAnMS4wLjAnDQoNCiMgU3VwcG9ydGVkIFBTRWRpdGlvbnMNCiMgQ29tcGF0aWJsZVBTRWRpdGlvbnMgPSBAKCkNCg0KIyBJRCB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgbW9kdWxlDQpHVUlEID0gJ8O+IWd1aWQhw74nDQoNCiMgQXV0aG9yIG9mIHRoaXMgbW9kdWxlDQpBdXRob3IgPSAnw75hdXRob3LDvicNCg0KIyBDb21wYW55IG9yIHZlbmRvciBvZiB0aGlzIG1vZHVsZQ0KQ29tcGFueU5hbWUgPSAnw75jb21wYW55w74nDQoNCiMgQ29weXJpZ2h0IHN0YXRlbWVudCBmb3IgdGhpcyBtb2R1bGUNCkNvcHlyaWdodCA9ICcoYykgw75hdXRob3LDvi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nDQoNCiMgRGVzY3JpcHRpb24gb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUNCkRlc2NyaXB0aW9uID0gJ8O+ZGVzY3JpcHRpb27DvicNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgZW5naW5lIHJlcXVpcmVkIGJ5IHRoaXMgbW9kdWxlDQojIFBvd2VyU2hlbGxWZXJzaW9uID0gJycNCg0KIyBOYW1lIG9mIHRoZSBQb3dlclNoZWxsIGhvc3QgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUNCiMgUG93ZXJTaGVsbEhvc3ROYW1lID0gJycNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgaG9zdCByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQb3dlclNoZWxsSG9zdFZlcnNpb24gPSAnJw0KDQojIE1pbmltdW0gdmVyc2lvbiBvZiBNaWNyb3NvZnQgLk5FVCBGcmFtZXdvcmsgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUuIFRoaXMgcHJlcmVxdWlzaXRlIGlzIHZhbGlkIGZvciB0aGUgUG93ZXJTaGVsbCBEZXNrdG9wIGVkaXRpb24gb25seS4NCiMgRG90TmV0RnJhbWV3b3JrVmVyc2lvbiA9ICcnDQoNCiMgTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBjb21tb24gbGFuZ3VhZ2UgcnVudGltZSAoQ0xSKSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZS4gVGhpcyBwcmVyZXF1aXNpdGUgaXMgdmFsaWQgZm9yIHRoZSBQb3dlclNoZWxsIERlc2t0b3AgZWRpdGlvbiBvbmx5Lg0KIyBDbHJWZXJzaW9uID0gJycNCg0KIyBQcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIChOb25lLCBYODYsIEFtZDY0KSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQcm9jZXNzb3JBcmNoaXRlY3R1cmUgPSAnJw0KDQojIE1vZHVsZXMgdGhhdCBtdXN0IGJlIGltcG9ydGVkIGludG8gdGhlIGdsb2JhbCBlbnZpcm9ubWVudCBwcmlvciB0byBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgUmVxdWlyZWRNb2R1bGVzID0gQCgpDQoNCiMgQXNzZW1ibGllcyB0aGF0IG11c3QgYmUgbG9hZGVkIHByaW9yIHRvIGltcG9ydGluZyB0aGlzIG1vZHVsZQ0KIyBSZXF1aXJlZEFzc2VtYmxpZXMgPSBAKCkNCg0KIyBTY3JpcHQgZmlsZXMgKC5wczEpIHRoYXQgYXJlIHJ1biBpbiB0aGUgY2FsbGVyJ3MgZW52aXJvbm1lbnQgcHJpb3IgdG8gaW1wb3J0aW5nIHRoaXMgbW9kdWxlLg0KIyBTY3JpcHRzVG9Qcm9jZXNzID0gQCgpDQoNCiMgVHlwZSBmaWxlcyAoLnBzMXhtbCkgdG8gYmUgbG9hZGVkIHdoZW4gaW1wb3J0aW5nIHRoaXMgbW9kdWxlDQojIFR5cGVzVG9Qcm9jZXNzID0gQCgpDQoNCiMgRm9ybWF0IGZpbGVzICgucHMxeG1sKSB0byBiZSBsb2FkZWQgd2hlbiBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgRm9ybWF0c1RvUHJvY2VzcyA9IEAoKQ0KDQojIE1vZHVsZXMgdG8gaW1wb3J0IGFzIG5lc3RlZCBtb2R1bGVzIG9mIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIFJvb3RNb2R1bGUvTW9kdWxlVG9Qcm9jZXNzDQojIE5lc3RlZE1vZHVsZXMgPSBAKCkNCg0KIyBGdW5jdGlvbnMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gZnVuY3Rpb25zIHRvIGV4cG9ydC4NCkZ1bmN0aW9uc1RvRXhwb3J0ID0gQCgNCg0KKQ0KDQojIENtZGxldHMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gY21kbGV0cyB0byBleHBvcnQuDQojIENtZGxldHNUb0V4cG9ydCA9ICcqJw0KDQojIFZhcmlhYmxlcyB0byBleHBvcnQgZnJvbSB0aGlzIG1vZHVsZQ0KIyBWYXJpYWJsZXNUb0V4cG9ydCA9ICcqJw0KDQojIEFsaWFzZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gYWxpYXNlcyB0byBleHBvcnQuDQojIEFsaWFzZXNUb0V4cG9ydCA9ICcqJw0KDQojIERTQyByZXNvdXJjZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUNCiMgRHNjUmVzb3VyY2VzVG9FeHBvcnQgPSBAKCkNCg0KIyBMaXN0IG9mIGFsbCBtb2R1bGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgTW9kdWxlTGlzdCA9IEAoKQ0KDQojIExpc3Qgb2YgYWxsIGZpbGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgRmlsZUxpc3QgPSBAKCkNCg0KIyBQcml2YXRlIGRhdGEgdG8gcGFzcyB0byB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiBSb290TW9kdWxlL01vZHVsZVRvUHJvY2Vzcy4gVGhpcyBtYXkgYWxzbyBjb250YWluIGEgUFNEYXRhIGhhc2h0YWJsZSB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlIG1ldGFkYXRhIHVzZWQgYnkgUG93ZXJTaGVsbC4NClByaXZhdGVEYXRhID0gQHsNCg0KICAgIFBTRGF0YSA9IEB7DQoNCiAgICAgICAgIyBUYWdzIGFwcGxpZWQgdG8gdGhpcyBtb2R1bGUuIFRoZXNlIGhlbHAgd2l0aCBtb2R1bGUgZGlzY292ZXJ5IGluIG9ubGluZSBnYWxsZXJpZXMuDQogICAgICAgICMgVGFncyA9IEAoKQ0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIGxpY2Vuc2UgZm9yIHRoaXMgbW9kdWxlLg0KICAgICAgICAjIExpY2Vuc2VVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIG1haW4gd2Vic2l0ZSBmb3IgdGhpcyBwcm9qZWN0Lg0KICAgICAgICAjIFByb2plY3RVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gYW4gaWNvbiByZXByZXNlbnRpbmcgdGhpcyBtb2R1bGUuDQogICAgICAgICMgSWNvblVyaSA9ICcnDQoNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgPSAnJw0KDQogICAgICAgICMgUHJlcmVsZWFzZSBzdHJpbmcgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBQcmVyZWxlYXNlID0gJycNCg0KICAgICAgICAjIEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbW9kdWxlIHJlcXVpcmVzIGV4cGxpY2l0IHVzZXIgYWNjZXB0YW5jZSBmb3IgaW5zdGFsbC91cGRhdGUvc2F2ZQ0KICAgICAgICAjIFJlcXVpcmVMaWNlbnNlQWNjZXB0YW5jZSA9ICRmYWxzZQ0KDQogICAgICAgICMgRXh0ZXJuYWwgZGVwZW5kZW50IG1vZHVsZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBFeHRlcm5hbE1vZHVsZURlcGVuZGVuY2llcyA9IEAoKQ0KDQogICAgfSAjIEVuZCBvZiBQU0RhdGEgaGFzaHRhYmxlDQoNCn0gIyBFbmQgb2YgUHJpdmF0ZURhdGEgaGFzaHRhYmxlDQoNCiMgSGVs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</BA>
            </MS>
          </Obj>
          <Obj RefId="25">
            <TN RefId="8">
              <T>PSModuleDevelopment.Template.TemplateItemFile</T>
              <T>PSModuleDevelopment.Template.TemplateItemBase</T>
              <T>System.Object</T>
            </TN>
            <ToString>PSModuleDevelopment.Template.TemplateItemFile</ToString>
            <Props>
              <S N="Value">MIT License_x000D__x000A__x000D__x000A_Copyright (c) þ!year!þ þauthorþ_x000D__x000A__x000D__x000A_Permission is hereby granted, free of charge, to any person obtaining a copy_x000D__x000A_of this software and associated documentation files (the "Software"), to deal_x000D__x000A_in the Software without restriction, including without limitation the rights_x000D__x000A_to use, copy, modify, merge, publish, distribute, sublicense, and/or sell_x000D__x000A_copies of the Software, and to permit persons to whom the Software is_x000D__x000A_furnished to do so, subject to the following conditions:_x000D__x000A__x000D__x000A_The above copyright notice and this permission notice shall be included in all_x000D__x000A_copies or substantial portions of the Software._x000D__x000A__x000D__x000A_THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR_x000D__x000A_IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,_x000D__x000A_FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE_x000D__x000A_AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER_x000D__x000A_LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,_x000D__x000A_OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE_x000D__x000A_SOFTWARE._x000D__x000A_</S>
              <B N="PlainText">true</B>
              <Obj N="ContentParameterFlat" RefId="26">
                <TNRef RefId="2" />
                <LST>
                  <S>author</S>
                </LST>
              </Obj>
              <Obj N="ContentParameterScript" RefId="27">
                <TNRef RefId="2" />
                <LST>
                  <S>year</S>
                </LST>
              </Obj>
              <S N="Name">LICENSE</S>
              <S N="RelativePath">LICENSE</S>
              <S N="Identifier">þ</S>
              <Obj N="FileSystemParameterFlat" RefId="28">
                <TNRef RefId="2" />
                <LST />
              </Obj>
              <Obj N="FileSystemParameterScript" RefId="29">
                <TNRef RefId="2" />
                <LST />
              </Obj>
            </Props>
            <MS>
              <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYDAAAAxghNSVQgTGljZW5zZQ0KDQpDb3B5cmlnaHQgKGMpIMO+IXllYXIhw74gw75hdXRob3LDvg0KDQpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KDQpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQpTT0ZUV0FSRS4NCgEJBAAAAAkFAAAABgYAAAAHTElDRU5TRQYHAAAAB0xJQ0VOU0UGCAAAAALDvgkJAAAACQoAAAAEBAAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkLAAAAAQAAAAEAAAABBQAAAAQAAAAJDAAAAAEAAAABAAAAAQkAAAAEAAAACQ0AAAAAAAAAAAAAAAEKAAAABAAAAAkNAAAAAAAAAAAAAAARCwAAAAQAAAAGDgAAAAZhdXRob3INAxEMAAAABAAAAAYPAAAABHllYXINAxENAAAAAAAAAAs=</BA>
            </MS>
          </Obj>
          <Obj RefId="30">
            <TNRef RefId="8" />
            <ToString>PSModuleDevelopment.Template.TemplateItemFile</ToString>
            <Props>
              <S N="Value"># þnameþ_x000D__x000A__x000D__x000A_ADD DESCRIPTION HERE_x000D__x000A_</S>
              <B N="PlainText">true</B>
              <Obj N="ContentParameterFlat" RefId="31">
                <TNRef RefId="2" />
                <LST>
                  <S>name</S>
                </LST>
              </Obj>
              <Obj N="ContentParameterScript" RefId="32">
                <TNRef RefId="2" />
                <LST />
              </Obj>
              <S N="Name">readme.md</S>
              <S N="RelativePath">readme.md</S>
              <S N="Identifier">þ</S>
              <Obj N="FileSystemParameterFlat" RefId="33">
                <TNRef RefId="2" />
                <LST />
              </Obj>
              <Obj N="FileSystemParameterScript" RefId="34">
                <TNRef RefId="2" />
                <LST />
              </Obj>
            </Props>
            <MS>
              <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYDAAAAJCMgw75uYW1lw74NCg0KQUREIERFU0NSSVBUSU9OIEhFUkUNCgEJBAAAAAkFAAAABgYAAAAJcmVhZG1lLm1kBgcAAAAJcmVhZG1lLm1kBggAAAACw74JCQAAAAkKAAAABAQAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJCwAAAAEAAAABAAAAAQUAAAAEAAAACQwAAAAAAAAAAAAAAAEJAAAABAAAAAkMAAAAAAAAAAAAAAABCgAAAAQAAAAJDAAAAAAAAAAAAAAAEQsAAAAEAAAABg0AAAAEbmFtZQ0DEQwAAAAAAAAACw==</BA>
            </MS>
          </Obj>
        </LST>
      </Obj>
      <I32 N="Generation">1</I32>
    </Props>
    <MS>
      <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGUMAAAABE5hbWUEVHlwZQdWZXJzaW9uC0Rlc2NyaXB0aW9uBkF1dGhvcglDcmVhdGVkT24EVGFncwpQYXJhbWV0ZXJzB1NjcmlwdHMLUGFyYW1ldGVyczIIQ2hpbGRyZW4KR2VuZXJhdGlvbgEEAwEBAAMDAwMDAClQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlVHlwZQIAAAAOU3lzdGVtLlZlcnNpb24Nf1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXYACU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlclNjcmlwdCwgUFNNb2R1bGVEZXZlbG9wbWVudCwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXYgCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlci5QYXJhbWV0ZXJCYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dngFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZSwgUFNNb2R1bGVEZXZlbG9wbWVudCwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQgCAAAABgMAAAAKTWluaU1vZHVsZQX8////KVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVUeXBlAQAAAAd2YWx1ZV9fAAgCAAAAAQAAAAkFAAAABgYAAABATW9kdWxlIHNjYWZmb2xkIHdpdGggZnVsbCBDSS9DRCBzdXBwb3J0IGFuZCBtaW5pbWFsIGRlcGVuZGVuY2llcwYHAAAAEkZyaWVkcmljaCBXZWlubWFubgDAMTRzKdqICQgAAAAJCQAAAAkKAAAACQsAAAAJDAAAAAEAAAAEBQAAAA5TeXN0ZW0uVmVyc2lvbgQAAAAGX01ham9yBl9NaW5vcgZfQnVpbGQJX1JldmlzaW9uAAAAAAgICAgBAAAAAAAAAAAAAAAAAAAABAgAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJDQAAAAEAAAAAAAAAAQkAAAAIAAAACQ4AAAAEAAAABAAAAAQKAAAAgAJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0LCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBAAAAAdWZXJzaW9uCENvbXBhcmVyCEhhc2hTaXplDUtleVZhbHVlUGFpcnMAAwADCBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyCIQCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0LCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dW10CAAAACQ8AAAADAAAACRAAAAAECwAAAIgCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlci5QYXJhbWV0ZXJCYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAdWZXJzaW9uCENvbXBhcmVyCEhhc2hTaXplAAMACBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyCAAAAAAJDwAAAAAAAAAEDAAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkSAAAABgAAAAYAAAARDQAAAAEAAAAGEwAAAAZtb2R1bGURDgAAAAQAAAAGFAAAAARuYW1lBhUAAAAGYXV0aG9yBhYAAAAHY29tcGFueQYXAAAAC2Rlc2NyaXB0aW9uBA8AAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQEHEAAAAAABAAAAAgAAAAOCAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlclNjcmlwdCwgUFNNb2R1bGVEZXZlbG9wbWVudCwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQTo////ggJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5QYXJhbWV0ZXJTY3JpcHQsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0CAAAAA2tleQV2YWx1ZQEELFBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0AgAAAAYZAAAABGd1aWQJGgAAAAHl////6P///wYcAAAABHllYXIJHQAAAAcSAAAAAAEAAAAIAAAABC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UCAAAACR4AAAAJHwAAAAkgAAAACSEAAAAJIgAAAAkjAAAADQIMJAAAAF9TeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLCBWZXJzaW9uPTMuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49MzFiZjM4NTZhZDM2NGUzNQUaAAAALFBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0AgAAAAROYW1lC1NjcmlwdEJsb2NrAQQ7U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5TY3JpcHRCbG9ja1NlcmlhbGl6YXRpb25IZWxwZXIkAAAAAgAAAAkZAAAACSYAAAABHQAAABoAAAAJHAAAAAkoAAAABR4AAAAvUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1Gb2xkZXIGAAAACENoaWxkcmVuBE5hbWUMUmVsYXRpdmVQYXRoCklkZW50aWZpZXIXRmlsZVN5c3RlbVBhcmFtZXRlckZsYXQZRmlsZVN5c3RlbVBhcmFtZXRlclNjcmlwdAMBAQEDA54BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAkpAAAABioAAAAHLmdpdGh1YgYrAAAABy5naXRodWIGLAAAAALDvgktAAAACS4AAAABHwAAAB4AAAAJLwAAAAYwAAAABWJ1aWxkBjEAAAAFYnVpbGQJLAAAAAkzAAAACTQAAAABIAAAAB4AAAAJNQAAAAY2AAAABXRlc3RzBjcAAAAFdGVzdHMJLAAAAAk5AAAACToAAAABIQAAAB4AAAAJOwAAAAY8AAAACMO+bmFtZcO+Bj0AAAAIw75uYW1lw74JLAAAAAk/AAAACUAAAAAFIgAAAC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUZpbGUJAAAABVZhbHVlCVBsYWluVGV4dBRDb250ZW50UGFyYW1ldGVyRmxhdBZDb250ZW50UGFyYW1ldGVyU2NyaXB0BE5hbWUMUmVsYXRpdmVQYXRoCklkZW50aWZpZXIXRmlsZVN5c3RlbVBhcmFtZXRlckZsYXQZRmlsZVN5c3RlbVBhcmFtZXRlclNjcmlwdAEAAwMBAQEDAwF/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAGQQAAAMYITUlUIExpY2Vuc2UNCg0KQ29weXJpZ2h0IChjKSDDviF5ZWFyIcO+IMO+YXV0aG9yw74NCg0KUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0Kb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwNCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCg0KVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQpjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KDQpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX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YXRyZW9uOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBQYXRyZW9uIHVzZXJuYW1lDQpvcGVuX2NvbGxlY3RpdmU6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIE9wZW4gQ29sbGVjdGl2ZSB1c2VybmFtZQ0Ka29fZmk6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIEtvLWZpIHVzZXJuYW1lDQp0aWRlbGlmdDogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgVGlkZWxpZnQgcGxhdGZvcm0tbmFtZS9wYWNrYWdlLW5hbWUgZS5nLiwgbnBtL2JhYmVsDQpjb21tdW5pdHlfYnJpZGdlOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBDb21tdW5pdHkgQnJpZGdlIHByb2plY3QtbmFtZSBlLmcuLCBjbG91ZC1mb3VuZHJ5DQpsaWJlcmFwYXk6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIExpYmVyYXBheSB1c2VybmFtZQ0KaXNzdWVodW50OiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBJc3N1ZUh1bnQgdXNlcm5hbWUNCm90ZWNoaWU6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIE90ZWNoaWUgdXNlcm5hbWUNCmN1c3RvbTogIyBSZXBsYWNlIHdpdGggdXAgdG8gNCBjdXN0b20gc3BvbnNvcnNoaXAgVVJMcyBlLmcuLCBbJ2xpbmsxJywgJ2xpbmsyJ10NCgEJegAAAAl7AAAABnwAAAALRlVORElORy55bWwGfQAAABMuZ2l0aHViXEZVTkRJTkcueW1sCSwAAAAJfwAAAAmAAAAAAWMAAAAiAAAABoEAAACvGzwjDQpUaGlzIHNjcmlwdCBwdWJsaXNoZXMgdGhlIG1vZHVsZSB0byB0aGUgZ2FsbGVyeS4NCkl0IGV4cGVjdHMgYXMgaW5wdXQgYW4gQXBpS2V5IGF1dGhvcml6ZWQgdG8gcHVibGlzaCB0aGUgbW9kdWxlLg0KDQpJbnNlcnQgYW55IGJ1aWxkIHN0ZXBzIHlvdSBtYXkgbmVlZCB0byB0YWtlIGJlZm9yZSBwdWJsaXNoaW5nIGl0IGhlcmUuDQojPg0KcGFyYW0gKA0KCSRBcGlLZXksDQoJDQoJJFdvcmtpbmdEaXJlY3RvcnksDQoJDQoJJFJlcG9zaXRvcnkgPSAnUFNHYWxsZXJ5JywNCgkNCglbc3dpdGNoXQ0KCSRMb2NhbFJlcG8sDQoJDQoJW3N3aXRjaF0NCgkkU2tpcFB1Ymxpc2gsDQoJDQoJW3N3aXRjaF0NCgkkQXV0b1ZlcnNpb24NCikNCg0KI3JlZ2lvbiBIYW5kbGUgV29ya2luZyBEaXJlY3RvcnkgRGVmYXVsdHMNCmlmICgtbm90ICRXb3JraW5nRGlyZWN0b3J5KQ0Kew0KCWlmICgkZW52OlJFTEVBU0VfUFJJTUFSWUFSVElGQUNUU09VUkNFQUxJQVMpDQoJew0KCQkkV29ya2luZ0RpcmVjdG9yeSA9IEpvaW4tUGF0aCAtUGF0aCAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSAtQ2hpbGRQYXRoICRlbnY6UkVMRUFTRV9QUklNQVJZQVJUSUZBQ1RTT1VSQ0VBTElBUw0KCX0NCgllbHNlIHsgJFdvcmtpbmdEaXJlY3RvcnkgPSAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSB9DQp9DQppZiAoLW5vdCAkV29ya2luZ0RpcmVjdG9yeSkgeyAkV29ya2luZ0RpcmVjdG9yeSA9IFNwbGl0LVBhdGggJFBTU2NyaXB0Um9vdCB9DQojZW5kcmVnaW9uIEhhbmRsZSBXb3JraW5nIERpcmVjdG9yeSBEZWZhdWx0cw0KDQojIFByZXBhcmUgcHVibGlzaCBmb2xkZXINCldyaXRlLUhvc3QgIkNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHB1Ymxpc2hpbmcgZGlyZWN0b3J5Ig0KJHB1Ymxpc2hEaXIgPSBOZXctSXRlbSAtUGF0aCAkV29ya2luZ0RpcmVjdG9yeSAtTmFtZSBwdWJsaXNoIC1JdGVtVHlwZSBEaXJlY3RvcnkgLUZvcmNlDQpDb3B5LUl0ZW0gLVBhdGggIiQoJFdvcmtpbmdEaXJlY3RvcnkpXMO+bmFtZcO+IiAtRGVzdGluYXRpb24gJHB1Ymxpc2hEaXIuRnVsbE5hbWUgLVJlY3Vyc2UgLUZvcmNlDQoNCiNyZWdpb24gR2F0aGVyIHRleHQgZGF0YSB0byBjb21waWxlDQokdGV4dCA9IEAoKQ0KDQojIEdhdGhlciBjb21tYW5kcw0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75cZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojIEdhdGhlciBzY3JpcHRzDQpHZXQtQ2hpbGRJdGVtIC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlxpbnRlcm5hbFxzY3JpcHRzXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KW1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxUZXh0KCIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc20xIiwgKCR0ZXh0IC1qb2luICJgbmBuIiksIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQpSZW1vdmUtSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWwiIC1SZWN1cnNlIC1Gb3JjZQ0KUmVtb3ZlLUl0ZW0gLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XGZ1bmN0aW9ucyIgLVJlY3Vyc2UgLUZvcmNlDQojZW5kcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KDQojcmVnaW9uIFVwZGF0aW5nIHRoZSBNb2R1bGUgVmVyc2lvbg0KaWYgKCRBdXRvVmVyc2lvbikNCnsNCglXcml0ZS1Ib3N0ICAiVXBkYXRpbmcgbW9kdWxlIHZlcnNpb24gbnVtYmVycy4iDQoJdHJ5IHsgW3ZlcnNpb25dJHJlbW90ZVZlcnNpb24gPSAoRmluZC1Nb2R1bGUgJ8O+bmFtZcO+JyAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeSAtRXJyb3JBY3Rpb24gU3RvcCkuVmVyc2lvbiB9DQoJY2F0Y2gNCgl7DQoJCXRocm93ICJGYWlsZWQgdG8gYWNjZXNzICQoJFJlcG9zaXRvcnkpIDogJF8iDQoJfQ0KCWlmICgtbm90ICRyZW1vdGVWZXJzaW9uKQ0KCXsNCgkJdGhyb3cgIkNvdWxkbid0IGZpbmQgw75uYW1lw74gb24gcmVwb3NpdG9yeSAkKCRSZXBvc2l0b3J5KSA6ICRfIg0KCX0NCgkkbmV3QnVpbGROdW1iZXIgPSAkcmVtb3RlVmVyc2lvbi5CdWlsZCArIDENCglbdmVyc2lvbl0kbG9jYWxWZXJzaW9uID0gKEltcG9ydC1Qb3dlclNoZWxsRGF0YUZpbGUgLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XMO+bmFtZcO+LnBzZDEiKS5Nb2R1bGVWZXJzaW9uDQoJVXBkYXRlLU1vZHVsZU1hbmlmZXN0IC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIiAtTW9kdWxlVmVyc2lvbiAiJCgkbG9jYWxWZXJzaW9uLk1ham9yKS4kKCRsb2NhbFZlcnNpb24uTWlub3IpLiQoJG5ld0J1aWxkTnVtYmVyKSINCn0NCiNlbmRyZWdpb24gVXBkYXRpbmcgdGhlIE1vZHVsZSBWZXJzaW9uDQoNCiNyZWdpb24gUHVibGlzaA0KaWYgKCRTa2lwUHVibGlzaCkgeyByZXR1cm4gfQ0KaWYgKCRMb2NhbFJlcG8pDQp7DQoJIyBEZXBlbmRlbmNpZXMgbXVzdCBnbyBmaXJzdA0KCVdyaXRlLUhvc3QgICJDcmVhdGluZyBOdWdldCBQYWNrYWdlIGZvciBtb2R1bGU6IFBTRnJhbWV3b3JrIg0KCU5ldy1QU01ETW9kdWxlTnVnZXRQYWNrYWdlIC1Nb2R1bGVQYXRoIChHZXQtTW9kdWxlIC1OYW1lIFBTRnJhbWV3b3JrKS5Nb2R1bGVCYXNlIC1QYWNrYWdlUGF0aCAuDQoJV3JpdGUtSG9zdCAgIkNyZWF0aW5nIE51Z2V0IFBhY2thZ2UgZm9yIG1vZHVsZTogw75uYW1lw74iDQoJTmV3LVBTTURNb2R1bGVOdWdldFBhY2thZ2UgLU1vZHVsZVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+IiAtUGFja2FnZVBhdGggLg0KfQ0KZWxzZQ0Kew0KCSMgUHVibGlzaCB0byBHYWxsZXJ5DQoJV3JpdGUtSG9zdCAgIlB1Ymxpc2hpbmcgdGhlIMO+bmFtZcO+IG1vZHVsZSB0byAkKCRSZXBvc2l0b3J5KSINCglQdWJsaXNoLU1vZHVsZSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw74iIC1OdUdldEFwaUtleSAkQXBpS2V5IC1Gb3JjZSAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeQ0KfQ0KI2VuZHJlZ2lvbiBQdWJsaXNoAQmCAAAACYMAAAAGhAAAAA52c3RzLWJ1aWxkLnBzMQaFAAAAFGJ1aWxkXHZzdHMtYnVpbGQucHMxCSwAAAAJhwAAAAmIAAAAAWQAAAAiAAAABokAAACABnBhcmFtICgNCiAgICBbc3RyaW5nXQ0KICAgICRSZXBvc2l0b3J5ID0gJ1BTR2FsbGVyeScNCikNCg0KJG1vZHVsZXMgPSBAKCJQZXN0ZXIiLCAiUFNTY3JpcHRBbmFseXplciIpDQoNCiMgQXV0b21hdGljYWxseSBhZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMNCiRkYXRhID0gSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSAtUGF0aCAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIg0KZm9yZWFjaCAoJGRlcGVuZGVuY3kgaW4gJGRhdGEuUmVxdWlyZWRNb2R1bGVzKSB7DQogICAgaWYgKCRkZXBlbmRlbmN5IC1pcyBbc3RyaW5nXSkgew0KICAgICAgICBpZiAoJG1vZHVsZXMgLWNvbnRhaW5zICRkZXBlbmRlbmN5KSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJG1vZHVsZXMgKz0gJGRlcGVuZGVuY3kNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIGlmICgkbW9kdWxlcyAtY29udGFpbnMgJGRlcGVuZGVuY3kuTW9kdWxlTmFtZSkgeyBjb250aW51ZSB9DQogICAgICAgICRtb2R1bGVzICs9ICRkZXBlbmRlbmN5Lk1vZHVsZU5hbWUNCiAgICB9DQp9DQoNCmZvcmVhY2ggKCRtb2R1bGUgaW4gJG1vZHVsZXMpIHsNCiAgICBXcml0ZS1Ib3N0ICJJbnN0YWxsaW5nICRtb2R1bGUiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbg0KICAgIEluc3RhbGwtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1Ta2lwUHVibGlzaGVyQ2hlY2sgLVJlcG9zaXRvcnkgJFJlcG9zaXRvcnkNCiAgICBJbXBvcnQtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1QYXNzVGhydQ0KfQEJigAAAAmLAAAABowAAAAWdnN0cy1wcmVyZXF1aXNpdGVzLnBzMQaNAAAAHGJ1aWxkXHZzdHMtcHJlcmVxdWlzaXRlcy5wczEJLAAAAAmPAAAACZAAAAABZQAAACIAAAAGkQAAAEIjIFJ1biBpbnRlcm5hbCBwZXN0ZXIgdGVzdHMNCiYgIiRQU1NjcmlwdFJvb3RcLi5cdGVzdHNccGVzdGVyLnBzMSIBCZIAAAAJkwAAAAaUAAAAEXZzdHMtdmFsaWRhdGUucHMxBpUAAAAXYnVpbGRcdnN0cy12YWxpZGF0ZS5wczEJLAAAAAmXAAAACZgAAAABZgAAAB4AAAAJmQAAAAaaAAAACWZ1bmN0aW9ucwabAAAAD3Rlc3RzXGZ1bmN0aW9ucwksAAAACZ0AAAAJngAAAAFnAAAAHgAAAAmfAAAABqAAAAAHZ2VuZXJhbAahAAAADXRlc3RzXGdlbmVyYWwJLAAAAAmjAAAACaQAAAABaAAAACIAAAAGpQAAAIYacGFyYW0gKA0KCSRUZXN0R2VuZXJhbCA9ICR0cnVlLA0KCQ0KCSRUZXN0RnVuY3Rpb25zID0gJHRydWUsDQoJDQoJW1ZhbGlkYXRlU2V0KCdOb25lJywgJ05vcm1hbCcsICdEZXRhaWxlZCcsICdEaWFnbm9zdGljJyldDQoJW0FsaWFzKCdTaG93JyldDQoJJE91dHB1dCA9ICJOb25lIiwNCgkNCgkkSW5jbHVkZSA9ICIqIiwNCgkNCgkkRXhjbHVkZSA9ICIiDQopDQoNCldyaXRlLUhvc3QgIlN0YXJ0aW5nIFRlc3RzIg0KDQpXcml0ZS1Ib3N0ICJJbXBvcnRpbmcgTW9kdWxlIg0KDQokZ2xvYmFsOnRlc3Ryb290ID0gJFBTU2NyaXB0Um9vdA0KJGdsb2JhbDpfX3Blc3Rlcl9kYXRhID0gQHsgfQ0KDQpSZW1vdmUtTW9kdWxlIMO+bmFtZcO+IC1FcnJvckFjdGlvbiBJZ25vcmUNCkltcG9ydC1Nb2R1bGUgIiRQU1NjcmlwdFJvb3RcLi5cw75uYW1lw75cw75uYW1lw74ucHNkMSINCkltcG9ydC1Nb2R1bGUgIiRQU1NjcmlwdFJvb3RcLi5cw75uYW1lw75cw75uYW1lw74ucHNtMSIgLUZvcmNlDQoNCiMgTmVlZCB0byBpbXBvcnQgZXhwbGljaXRseSBzbyB3ZSBjYW4gdXNlIHRoZSBjb25maWd1cmF0aW9uIGNsYXNzDQpJbXBvcnQtTW9kdWxlIFBlc3Rlcg0KDQpXcml0ZS1Ib3N0ICAiQ3JlYXRpbmcgdGVzdCByZXN1bHQgZm9sZGVyIg0KJG51bGwgPSBOZXctSXRlbSAtUGF0aCAiJFBTU2NyaXB0Um9vdFwuLiIgLU5hbWUgVGVzdFJlc3VsdHMgLUl0ZW1UeXBlIERpcmVjdG9yeSAtRm9yY2UNCg0KJHRvdGFsRmFpbGVkID0gMA0KJHRvdGFsUnVuID0gMA0KDQokdGVzdHJlc3VsdHMgPSBAKCkNCiRjb25maWcgPSBbUGVzdGVyQ29uZmlndXJhdGlvbl06OkRlZmF1bHQNCiRjb25maWcuVGVzdFJlc3VsdC5FbmFibGVkID0gJHRydWUNCg0KI3JlZ2lvbiBSdW4gR2VuZXJhbCBUZXN0cw0KaWYgKCRUZXN0R2VuZXJhbCkNCnsNCglXcml0ZS1Ib3N0ICAiTW9kdWxlcyBpbXBvcnRlZCwgcHJvY2VlZGluZyB3aXRoIGdlbmVyYWwgdGVzdHMiDQoJZm9yZWFjaCAoJGZpbGUgaW4gKEdldC1DaGlsZEl0ZW0gIiRQU1NjcmlwdFJvb3RcZ2VuZXJhbCIgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5UZXN0cy5wczEiKSkNCgl7DQoJCWlmICgkZmlsZS5OYW1lIC1ub3RsaWtlICRJbmNsdWRlKSB7IGNvbnRpbnVlIH0NCgkJaWYgKCRmaWxlLk5hbWUgLWxpa2UgJEV4Y2x1ZGUpIHsgY29udGludWUgfQ0KDQoJCVdyaXRlLUhvc3QgICIgIEV4ZWN1dGluZyAkKCRmaWxlLk5hbWUpIg0KCQkkY29uZmlnLlRlc3RSZXN1bHQuT3V0cHV0UGF0aCA9IEpvaW4tUGF0aCAiJFBTU2NyaXB0Um9vdFwuLlxUZXN0UmVzdWx0cyIgIlRFU1QtJCgkZmlsZS5CYXNlTmFtZSkueG1sIg0KCQkkY29uZmlnLlJ1bi5QYXRoID0gJGZpbGUuRnVsbE5hbWUNCgkJJGNvbmZpZy5SdW4uUGFzc1RocnUgPSAkdHJ1ZQ0KCQkkY29uZmlnLk91dHB1dC5WZXJib3NpdHkgPSAkT3V0cHV0DQogICAgCSRyZXN1bHRzID0gSW52b2tlLVBlc3RlciAtQ29uZmlndXJhdGlvbiAkY29uZmlnDQoJCWZvcmVhY2ggKCRyZXN1bHQgaW4gJHJlc3VsdHMpDQoJCXsNCgkJCSR0b3RhbFJ1biArPSAkcmVzdWx0LlRvdGFsQ291bnQNCgkJCSR0b3RhbEZhaWxlZCArPSAkcmVzdWx0LkZhaWxlZENvdW50DQoJCQkkcmVzdWx0LlRlc3RzIHwgV2hlcmUtT2JqZWN0IFJlc3VsdCAtbmUgJ1Bhc3NlZCcgfCBGb3JFYWNoLU9iamVjdCB7DQoJCQkJJHRlc3RyZXN1bHRzICs9IFtwc2N1c3RvbW9iamVjdF1Aew0KCQkJCQlCbG9jayAgICA9ICRfLkJsb2NrDQoJCQkJCU5hbWUJID0gIkl0ICQoJF8uTmFtZSkiDQoJCQkJCVJlc3VsdCAgID0gJF8uUmVzdWx0DQoJCQkJCU1lc3NhZ2UgID0gJF8uRXJyb3JSZWNvcmQuRGlzcGxheUVycm9yTWVzc2FnZQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0NCiNlbmRyZWdpb24gUnVuIEdlbmVyYWwgVGVzdHMNCg0KJGdsb2JhbDpfX3Blc3Rlcl9kYXRhLlNjcmlwdEFuYWx5emVyIHwgT3V0LUhvc3QNCg0KI3JlZ2lvbiBUZXN0IENvbW1hbmRzDQppZiAoJFRlc3RGdW5jdGlvbnMpDQp7DQoJV3JpdGUtSG9zdCAiUHJvY2VlZGluZyB3aXRoIGluZGl2aWR1YWwgdGVzdHMiDQoJZm9yZWFjaCAoJGZpbGUgaW4gKEdldC1DaGlsZEl0ZW0gIiRQU1NjcmlwdFJvb3RcZnVuY3Rpb25zIiAtUmVjdXJzZSAtRmlsZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqVGVzdHMucHMxIikpDQoJew0KCQlpZiAoJGZpbGUuTmFtZSAtbm90bGlrZSAkSW5jbHVkZSkgeyBjb250aW51ZSB9DQoJCWlmICgkZmlsZS5OYW1lIC1saWtlICRFeGNsdWRlKSB7IGNvbnRpbnVlIH0NCgkJDQoJCVdyaXRlLUhvc3QgIiAgRXhlY3V0aW5nICQoJGZpbGUuTmFtZSkiDQoJCSRjb25maWcuVGVzdFJlc3VsdC5PdXRwdXRQYXRoID0gSm9pbi1QYXRoICIkUFNTY3JpcHRSb290XC4uXFRlc3RSZXN1bHRzIiAiVEVTVC0kKCRmaWxlLkJhc2VOYW1lKS54bWwiDQoJCSRjb25maWcuUnVuLlBhdGggPSAkZmlsZS5GdWxsTmFtZQ0KCQkkY29uZmlnLlJ1bi5QYXNzVGhydSA9ICR0cnVlDQoJCSRjb25maWcuT3V0cHV0LlZlcmJvc2l0eSA9ICRPdXRwdXQNCiAgICAJJHJlc3VsdHMgPSBJbnZva2UtUGVzdGVyIC1Db25maWd1cmF0aW9uICRjb25maWcNCgkJZm9yZWFjaCAoJHJlc3VsdCBpbiAkcmVzdWx0cykNCgkJew0KCQkJJHRvdGFsUnVuICs9ICRyZXN1bHQuVG90YWxDb3VudA0KCQkJJHRvdGFsRmFpbGVkICs9ICRyZXN1bHQuRmFpbGVkQ291bnQNCgkJCSRyZXN1bHQuVGVzdHMgfCBXaGVyZS1PYmplY3QgUmVzdWx0IC1uZSAnUGFzc2VkJyB8IEZvckVhY2gtT2JqZWN0IHsNCgkJCQkkdGVzdHJlc3VsdHMgKz0gW3BzY3VzdG9tb2JqZWN0XUB7DQoJCQkJCUJsb2NrICAgID0gJF8uQmxvY2sNCgkJCQkJTmFtZQkgPSAiSXQgJCgkXy5OYW1lKSINCgkJCQkJUmVzdWx0ICAgPSAkXy5SZXN1bHQNCgkJCQkJTWVzc2FnZSAgPSAkXy5FcnJvclJlY29yZC5EaXNwbGF5RXJyb3JNZXNzYWdlDQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KI2VuZHJlZ2lvbiBUZXN0IENvbW1hbmRzDQoNCiR0ZXN0cmVzdWx0cyB8IFNvcnQtT2JqZWN0IERlc2NyaWJlLCBDb250ZXh0LCBOYW1lLCBSZXN1bHQsIE1lc3NhZ2UgfCBGb3JtYXQtTGlzdA0KDQppZiAoJHRvdGFsRmFpbGVkIC1lcSAwKSB7IFdyaXRlLUhvc3QgICJBbGwgJHRvdGFsUnVuIHRlc3RzIGV4ZWN1dGVkIHdpdGhvdXQgYSBzaW5nbGUgZmFpbHVyZSEiIH0NCmVsc2UgeyBXcml0ZS1Ib3N0ICIkdG90YWxGYWlsZWQgdGVzdHMgb3V0IG9mICR0b3RhbFJ1biB0ZXN0cyBmYWlsZWQhIiB9DQoNCmlmICgkdG90YWxGYWlsZWQgLWd0IDApDQp7DQoJdGhyb3cgIiR0b3RhbEZhaWxlZCAvICR0b3RhbFJ1biB0ZXN0cyBmYWlsZWQhIg0KfQEJpgAAAAmnAAAABqgAAAAKcGVzdGVyLnBzMQapAAAAEHRlc3RzXHBlc3Rlci5wczEJLAAAAAmrAAAACawAAAABaQAAACIAAAAGrQAAAKIHIyBEZXNjcmlwdGlvbg0KDQpUaGlzIGlzIHRoZSBmb2xkZXIsIHdoZXJlIGFsbCB0aGUgdGVzdHMgZ28uDQoNClRob3NlIGFyZSBzdWJkaXZpZGVkIGluIHR3byBjYXRlZ29yaWVzOg0KDQogLSBHZW5lcmFsDQogLSBGdW5jdGlvbg0KDQojIyBHZW5lcmFsIFRlc3RzDQoNCkdlbmVyYWwgdGVzdHMgYXJlIGZ1bmN0aW9uIGdlbmVyaWMgYW5kIHRlc3QgZm9yIGdlbmVyYWwgcG9saWNpZXMuDQoNClRoZXNlIHRlc3Qgc2NhbiBhbnN3ZXIgcXVlc3Rpb25zIHN1Y2ggYXM6DQoNCiAtIElzIG15IG1vZHVsZSBmb2xsb3dpbmcgbXkgc3R5bGUgZ3VpZGVzPw0KIC0gRG9lcyBhbnkgb2YgbXkgc2NyaXB0cyBoYXZlIGEgc3ludGF4IGVycm9yPw0KIC0gRG8gbXkgc2NyaXB0cyB1c2UgY29tbWFuZHMgSSBkbyBub3Qgd2FudCB0aGVtIHRvIHVzZT8NCiAtIERvIG15IGNvbW1hbmRzIGZvbGxvdyBiZXN0IHByYWN0aWNlcz8NCiAtIERvIG15IGNvbW1hbmRzIGhhdmUgcHJvcGVyIGhlbHA/DQoNCkJhc2ljYWxseSwgdGhlc2UgYWxsb3cgYSBnZW5lcmFsIG1vZHVsZSBoZWFsdGggY2hlY2suDQoNClRoZXNlIHRlc3RzIGFyZSBhbHJlYWR5IHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIHRlbXBsYXRlLg0KDQojIyBGdW5jdGlvbiBUZXN0cw0KDQpBIGhlYWx0aHkgbW9kdWxlIHNob3VsZCBwcm92aWRlIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzIGZvciB0aGUgY29tbWFuZHMgJiBjb21wb25lbnRzIGl0IHNoaXBzLg0KT25seSB0aGVuIGNhbiBiZSBndWFyYW50ZWVkLCB0aGF0IHRoZXkgd2lsbCBhY3R1YWxseSBwZXJmb3JtIGFzIHByb21pc2VkLg0KDQpIb3dldmVyLCBhcyBlYWNoIHN1Y2ggdGVzdCBtdXN0IGJlIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdCB0ZXN0cywgdGhlcmUgY2Fubm90IGJlIG11Y2ggaW4gdGhlIHdheSBvZiB0ZW1wbGF0ZXMuAQmuAAAACa8AAAAGsAAAAAlyZWFkbWUubWQGsQAAAA90ZXN0c1xyZWFkbWUubWQJLAAAAAmzAAAACbQAAAABagAAAB4AAAAJtQAAAAa2AAAACWZ1bmN0aW9ucwa3AAAAEsO+bmFtZcO+XGZ1bmN0aW9ucwksAAAACbkAAAAJugAAAAFrAAAAHgAAAAm7AAAABrwAAAAIaW50ZXJuYWwGvQAAABHDvm5hbWXDvlxpbnRlcm5hbAksAAAACb8AAAAJwAAAAAFsAAAAIgAAAAbBAAAAxghNSVQgTGljZW5zZQ0KDQpDb3B5cmlnaHQgKGMpIMO+IXllYXIhw74gw75hdXRob3LDvg0KDQpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KDQpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQpTT0ZUV0FSRS4NCgEJwgAAAAnDAAAABsQAAAAHTElDRU5TRQbFAAAAEMO+bmFtZcO+XExJQ0VOU0UJLAAAAAnHAAAACcgAAAABbQAAACIAAAAGyQAAAOIfQHsNCg0KIyBTY3JpcHQgbW9kdWxlIG9yIGJpbmFyeSBtb2R1bGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYW5pZmVzdC4NClJvb3RNb2R1bGUgPSAnw75uYW1lw74ucHNtMScNCg0KIyBWZXJzaW9uIG51bWJlciBvZiB0aGlzIG1vZHVsZS4NCk1vZHVsZVZlcnNpb24gPSAnMS4wLjAnDQoNCiMgU3VwcG9ydGVkIFBTRWRpdGlvbnMNCiMgQ29tcGF0aWJsZVBTRWRpdGlvbnMgPSBAKCkNCg0KIyBJRCB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgbW9kdWxlDQpHVUlEID0gJ8O+IWd1aWQhw74nDQoNCiMgQXV0aG9yIG9mIHRoaXMgbW9kdWxlDQpBdXRob3IgPSAnw75hdXRob3LDvicNCg0KIyBDb21wYW55IG9yIHZlbmRvciBvZiB0aGlzIG1vZHVsZQ0KQ29tcGFueU5hbWUgPSAnw75jb21wYW55w74nDQoNCiMgQ29weXJpZ2h0IHN0YXRlbWVudCBmb3IgdGhpcyBtb2R1bGUNCkNvcHlyaWdodCA9ICcoYykgw75hdXRob3LDvi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nDQoNCiMgRGVzY3JpcHRpb24gb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUNCkRlc2NyaXB0aW9uID0gJ8O+ZGVzY3JpcHRpb27DvicNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgZW5naW5lIHJlcXVpcmVkIGJ5IHRoaXMgbW9kdWxlDQojIFBvd2VyU2hlbGxWZXJzaW9uID0gJycNCg0KIyBOYW1lIG9mIHRoZSBQb3dlclNoZWxsIGhvc3QgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUNCiMgUG93ZXJTaGVsbEhvc3ROYW1lID0gJycNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgaG9zdCByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQb3dlclNoZWxsSG9zdFZlcnNpb24gPSAnJw0KDQojIE1pbmltdW0gdmVyc2lvbiBvZiBNaWNyb3NvZnQgLk5FVCBGcmFtZXdvcmsgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUuIFRoaXMgcHJlcmVxdWlzaXRlIGlzIHZhbGlkIGZvciB0aGUgUG93ZXJTaGVsbCBEZXNrdG9wIGVkaXRpb24gb25seS4NCiMgRG90TmV0RnJhbWV3b3JrVmVyc2lvbiA9ICcnDQoNCiMgTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBjb21tb24gbGFuZ3VhZ2UgcnVudGltZSAoQ0xSKSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZS4gVGhpcyBwcmVyZXF1aXNpdGUgaXMgdmFsaWQgZm9yIHRoZSBQb3dlclNoZWxsIERlc2t0b3AgZWRpdGlvbiBvbmx5Lg0KIyBDbHJWZXJzaW9uID0gJycNCg0KIyBQcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIChOb25lLCBYODYsIEFtZDY0KSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQcm9jZXNzb3JBcmNoaXRlY3R1cmUgPSAnJw0KDQojIE1vZHVsZXMgdGhhdCBtdXN0IGJlIGltcG9ydGVkIGludG8gdGhlIGdsb2JhbCBlbnZpcm9ubWVudCBwcmlvciB0byBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgUmVxdWlyZWRNb2R1bGVzID0gQCgpDQoNCiMgQXNzZW1ibGllcyB0aGF0IG11c3QgYmUgbG9hZGVkIHByaW9yIHRvIGltcG9ydGluZyB0aGlzIG1vZHVsZQ0KIyBSZXF1aXJlZEFzc2VtYmxpZXMgPSBAKCkNCg0KIyBTY3JpcHQgZmlsZXMgKC5wczEpIHRoYXQgYXJlIHJ1biBpbiB0aGUgY2FsbGVyJ3MgZW52aXJvbm1lbnQgcHJpb3IgdG8gaW1wb3J0aW5nIHRoaXMgbW9kdWxlLg0KIyBTY3JpcHRzVG9Qcm9jZXNzID0gQCgpDQoNCiMgVHlwZSBmaWxlcyAoLnBzMXhtbCkgdG8gYmUgbG9hZGVkIHdoZW4gaW1wb3J0aW5nIHRoaXMgbW9kdWxlDQojIFR5cGVzVG9Qcm9jZXNzID0gQCgpDQoNCiMgRm9ybWF0IGZpbGVzICgucHMxeG1sKSB0byBiZSBsb2FkZWQgd2hlbiBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgRm9ybWF0c1RvUHJvY2VzcyA9IEAoKQ0KDQojIE1vZHVsZXMgdG8gaW1wb3J0IGFzIG5lc3RlZCBtb2R1bGVzIG9mIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIFJvb3RNb2R1bGUvTW9kdWxlVG9Qcm9jZXNzDQojIE5lc3RlZE1vZHVsZXMgPSBAKCkNCg0KIyBGdW5jdGlvbnMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gZnVuY3Rpb25zIHRvIGV4cG9ydC4NCkZ1bmN0aW9uc1RvRXhwb3J0ID0gQCgNCg0KKQ0KDQojIENtZGxldHMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gY21kbGV0cyB0byBleHBvcnQuDQojIENtZGxldHNUb0V4cG9ydCA9ICcqJw0KDQojIFZhcmlhYmxlcyB0byBleHBvcnQgZnJvbSB0aGlzIG1vZHVsZQ0KIyBWYXJpYWJsZXNUb0V4cG9ydCA9ICcqJw0KDQojIEFsaWFzZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gYWxpYXNlcyB0byBleHBvcnQuDQojIEFsaWFzZXNUb0V4cG9ydCA9ICcqJw0KDQojIERTQyByZXNvdXJjZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUNCiMgRHNjUmVzb3VyY2VzVG9FeHBvcnQgPSBAKCkNCg0KIyBMaXN0IG9mIGFsbCBtb2R1bGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgTW9kdWxlTGlzdCA9IEAoKQ0KDQojIExpc3Qgb2YgYWxsIGZpbGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgRmlsZUxpc3QgPSBAKCkNCg0KIyBQcml2YXRlIGRhdGEgdG8gcGFzcyB0byB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiBSb290TW9kdWxlL01vZHVsZVRvUHJvY2Vzcy4gVGhpcyBtYXkgYWxzbyBjb250YWluIGEgUFNEYXRhIGhhc2h0YWJsZSB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlIG1ldGFkYXRhIHVzZWQgYnkgUG93ZXJTaGVsbC4NClByaXZhdGVEYXRhID0gQHsNCg0KICAgIFBTRGF0YSA9IEB7DQoNCiAgICAgICAgIyBUYWdzIGFwcGxpZWQgdG8gdGhpcyBtb2R1bGUuIFRoZXNlIGhlbHAgd2l0aCBtb2R1bGUgZGlzY292ZXJ5IGluIG9ubGluZSBnYWxsZXJpZXMuDQogICAgICAgICMgVGFncyA9IEAoKQ0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIGxpY2Vuc2UgZm9yIHRoaXMgbW9kdWxlLg0KICAgICAgICAjIExpY2Vuc2VVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIG1haW4gd2Vic2l0ZSBmb3IgdGhpcyBwcm9qZWN0Lg0KICAgICAgICAjIFByb2plY3RVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gYW4gaWNvbiByZXByZXNlbnRpbmcgdGhpcyBtb2R1bGUuDQogICAgICAgICMgSWNvblVyaSA9ICcnDQoNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgPSAnJw0KDQogICAgICAgICMgUHJlcmVsZWFzZSBzdHJpbmcgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBQcmVyZWxlYXNlID0gJycNCg0KICAgICAgICAjIEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbW9kdWxlIHJlcXVpcmVzIGV4cGxpY2l0IHVzZXIgYWNjZXB0YW5jZSBmb3IgaW5zdGFsbC91cGRhdGUvc2F2ZQ0KICAgICAgICAjIFJlcXVpcmVMaWNlbnNlQWNjZXB0YW5jZSA9ICRmYWxzZQ0KDQogICAgICAgICMgRXh0ZXJuYWwgZGVwZW5kZW50IG1vZHVsZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBFeHRlcm5hbE1vZHVsZURlcGVuZGVuY2llcyA9IEAoKQ0KDQogICAgfSAjIEVuZCBvZiBQU0RhdGEgaGFzaHRhYmxlDQoNCn0gIyBFbmQgb2YgUHJpdmF0ZURhdGEgaGFzaHRhYmxlDQoNCiMgSGVscEluZm8gVVJJIG9mIHRoaXMgbW9kdWxlDQojIEhlbHBJbmZvVVJJID0gJycNCg0KIyBEZWZhdWx0IHByZWZpeCBmb3IgY29tbWFuZHMgZXhwb3J0ZWQgZnJvbSB0aGlzIG1vZHVsZS4gT3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJlZml4IHVzaW5nIEltcG9ydC1Nb2R1bGUgLVByZWZpeC4NCiMgRGVmYXVsdENvbW1hbmRQcmVmaXggPSAnJw0KDQp9DQoNCgEJygAAAAnLAAAABswAAAANw75uYW1lw74ucHNkMQbNAAAAFsO+bmFtZcO+XMO+bmFtZcO+LnBzZDEJLAAAAAnPAAAACdAAAAABbgAAACIAAAAG0QAAAO4C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ZC55bWwGDgEAABsuZ2l0aHViXHdvcmtmbG93c1xidWlsZC55bWwJLAAAAAkQAQAACREBAAAB8wAAACIAAAAGEgEAALACb246IFtwdWxsX3JlcXVlc3RdDQoNCmpvYnM6DQogIHZhbGlkYXRlOg0KDQogICAgcnVucy1vbjogd2luZG93cy0yMDE5DQoNCiAgICBzdGVwczoNCiAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjENCiAgICAtIG5hbWU6IEluc3RhbGwgUHJlcmVxdWlzaXRlcw0KICAgICAgcnVuOiAuXGJ1aWxkXHZzdHMtcHJlcmVxdWlzaXRlcy5wczENCiAgICAgIHNoZWxsOiBwb3dlcnNoZWxsDQogICAgLSBuYW1lOiBWYWxpZGF0ZQ0KICAgICAgcnVuOiAuXGJ1aWxkXHZzdHMtdmFsaWRhdGUucHMxDQogICAgICBzaGVsbDogcG93ZXJzaGVsbAEJEwEAAAkUAQAABhUBAAAMdmFsaWRhdGUueW1sBhYBAAAeLmdpdGh1Ylx3b3JrZmxvd3NcdmFsaWRhdGUueW1sCSwAAAAJGAEAAAkZAQAAAfYAAAAiAAAABhoBAADVASMgRGVzY3JpcHRpb24NCg0KVGhpcyBpcyB3aGVyZSB0aGUgZnVuY3Rpb24gdGVzdHMgZ28uDQoNCk1ha2Ugc3VyZSB0byBwdXQgdGhlbSBpbiBmb2xkZXJzIHJlZmxlY3RpbmcgdGhlIGFjdHVhbCBtb2R1bGUgc3RydWN0dXJlLg0KDQpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnRlcm5hbCBhbmQgcHVibGljIGZ1bmN0aW9ucyBoZXJlLgEJGwEAAAkcAQAABh0BAAAJcmVhZG1lLm1kBh4BAAAZdGVzdHNcZnVuY3Rpb25zXHJlYWRtZS5tZAksAAAACSABAAAJIQEAAAH3AAAAIgAAAAYiAQAAmQUjIExpc3Qgb2YgZm9yYmlkZGVuIGNvbW1hbmRzDQokZ2xvYmFsOkJhbm5lZENvbW1hbmRzID0gQCgNCgknV3JpdGUtT3V0cHV0Jw0KCQ0KCSMgVXNlIENJTSBpbnN0ZWFkIHdoZXJlIHBvc3NpYmxlDQoJJ0dldC1XbWlPYmplY3QnDQoJJ0ludm9rZS1XbWlNZXRob2QnDQoJJ1JlZ2lzdGVyLVdtaUV2ZW50Jw0KCSdSZW1vdmUtV21pT2JqZWN0Jw0KCSdTZXQtV21pSW5zdGFuY2UnDQoNCgkjIFVzZSBHZXQtV2luRXZlbnQgaW5zdGVhZA0KCSdHZXQtRXZlbnRMb2cnDQopDQoNCjwjDQoJQ29udGFpbnMgbGlzdCBvZiBleGNlcHRpb25zIGZvciBiYW5uZWQgY21kbGV0cy4NCglJbnNlcnQgdGhlIGZpbGUgbmFtZXMgb2YgZmlsZXMgdGhhdCBtYXkgY29udGFpbiB0aGVtLg0KCQ0KCUV4YW1wbGU6DQoJIldyaXRlLUhvc3QiICA9IEAoJ1dyaXRlLVBTRkhvc3RDb2xvci5wczEnLCdXcml0ZS1QU0ZNZXNzYWdlLnBzMScpDQojPg0KJGdsb2JhbDpNYXlDb250YWluQ29tbWFuZCA9IEB7DQoJIldyaXRlLUhvc3QiICA9IEAoKQ0KCSJXcml0ZS1WZXJib3NlIiA9IEAoKQ0KCSJXcml0ZS1XYXJuaW5nIiA9IEAoKQ0KCSJXcml0ZS1FcnJvciIgID0gQCgpDQoJIldyaXRlLU91dHB1dCIgPSBAKCkNCgkiV3JpdGUtSW5mb3JtYXRpb24iID0gQCgpDQoJIldyaXRlLURlYnVnIiA9IEAoKQ0KfQEJIwEAAAkkAQAABiUBAAAcRmlsZUludGVncml0eS5FeGNlcHRpb25zLnBzMQYmAQAAKnRlc3RzXGdlbmVyYWxcRmlsZUludGVncml0eS5FeGNlcHRpb25zLnBzMQksAAAACSgBAAAJKQEAAAH4AAAAIgAAAAYqAQAA4RgkbW9kdWxlUm9vdCA9IChSZXNvbHZlLVBhdGggIiRnbG9iYWw6dGVzdHJvb3RcLi4iKS5QYXRoDQoNCi4gIiRnbG9iYWw6dGVzdHJvb3RcZ2VuZXJhbFxGaWxlSW50ZWdyaXR5LkV4Y2VwdGlvbnMucHMxIg0KDQpEZXNjcmliZSAiVmVyaWZ5aW5nIGludGVncml0eSBvZiBtb2R1bGUgZmlsZXMiIHsNCglCZWZvcmVBbGwgew0KCQlmdW5jdGlvbiBHZXQtRmlsZUVuY29kaW5nDQoJCXsNCgkJPCMNCgkJCS5TWU5PUFNJUw0KCQkJCVRlc3RzIGEgZmlsZSBmb3IgZW5jb2RpbmcuDQoJCQkNCgkJCS5ERVNDUklQVElPTg0KCQkJCVRlc3RzIGEgZmlsZSBmb3IgZW5jb2RpbmcuDQoJCQkNCgkJCS5QQVJBTUVURVIgUGF0aA0KCQkJCVRoZSBmaWxlIHRvIHRlc3QNCgkJIz4NCgkJCVtDbWRsZXRCaW5kaW5nKCldDQoJCQlQYXJhbSAoDQoJCQkJW1BhcmFtZXRlcihNYW5kYXRvcnkgPSAkVHJ1ZSwgVmFsdWVGcm9tUGlwZWxpbmVCeVByb3BlcnR5TmFtZSA9ICRUcnVlKV0NCgkJCQlbQWxpYXMoJ0Z1bGxOYW1lJyldDQoJCQkJW3N0cmluZ10NCgkJCQkkUGF0aA0KCQkJKQ0KCQkJDQoJCQlpZiAoJFBTVmVyc2lvblRhYmxlLlBTVmVyc2lvbi5NYWpvciAtbHQgNikNCgkJCXsNCgkJCQlbYnl0ZVtdXSRieXRlID0gZ2V0LWNvbnRlbnQgLUVuY29kaW5nIGJ5dGUgLVJlYWRDb3VudCA0IC1Ub3RhbENvdW50IDQgLVBhdGggJFBhdGgNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlbYnl0ZVtdXSRieXRlID0gR2V0LUNvbnRlbnQgLUFzQnl0ZVN0cmVhbSAtUmVhZENvdW50IDQgLVRvdGFsQ291bnQgNCAtUGF0aCAkUGF0aA0KCQkJfQ0KCQkJDQoJCQlpZiAoJGJ5dGVbMF0gLWVxIDB4ZWYgLWFuZCAkYnl0ZVsxXSAtZXEgMHhiYiAtYW5kICRieXRlWzJdIC1lcSAweGJmKSB7ICdVVEY4IEJPTScgfQ0KCQkJZWxzZWlmICgkYnl0ZVswXSAtZXEgMHhmZSAtYW5kICRieXRlWzFdIC1lcSAweGZmKSB7ICdVbmljb2RlJyB9DQoJCQllbHNlaWYgKCRieXRlWzBdIC1lcSAwIC1hbmQgJGJ5dGVbMV0gLWVxIDAgLWFuZCAkYnl0ZVsyXSAtZXEgMHhmZSAtYW5kICRieXRlWzNdIC1lcSAweGZmKSB7ICdVVEYzMicgfQ0KCQkJZWxzZWlmICgkYnl0ZVswXSAtZXEgMHgyYiAtYW5kICRieXRlWzFdIC1lcSAweDJmIC1hbmQgJGJ5dGVbMl0gLWVxIDB4NzYpIHsgJ1VURjcnIH0NCgkJCWVsc2UgeyAnVW5rbm93bicgfQ0KCQl9DQoJfQ0KDQoJQ29udGV4dCAiVmFsaWRhdGluZyBQUzEgU2NyaXB0IGZpbGVzIiB7DQoJCSRhbGxGaWxlcyA9IEdldC1DaGlsZEl0ZW0gLVBhdGggJG1vZHVsZVJvb3QgLVJlY3Vyc2UgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5wczEiIHwgV2hlcmUtT2JqZWN0IEZ1bGxOYW1lIC1Ob3RMaWtlICIkbW9kdWxlUm9vdFx0ZXN0c1wqIg0KCQkNCgkJZm9yZWFjaCAoJGZpbGUgaW4gJGFsbEZpbGVzKQ0KCQl7DQoJCQkkbmFtZSA9ICRmaWxlLkZ1bGxOYW1lLlJlcGxhY2UoIiRtb2R1bGVSb290XCIsICcnKQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBVVEY4IGVuY29kaW5nIHdpdGggQnl0ZSBPcmRlciBNYXJrIiAtVGVzdENhc2VzIEB7IGZpbGUgPSAkZmlsZSB9IHsNCgkJCQlHZXQtRmlsZUVuY29kaW5nIC1QYXRoICRmaWxlLkZ1bGxOYW1lIHwgU2hvdWxkIC1CZSAnVVRGOCBCT00nDQoJCQl9DQoJCQkNCgkJCUl0ICJbJG5hbWVdIFNob3VsZCBoYXZlIG5vIHRyYWlsaW5nIHNwYWNlIiAtVGVzdENhc2VzIEB7IGZpbGUgPSAkZmlsZSB9IHsNCgkJCQkoJGZpbGUgfCBTZWxlY3QtU3RyaW5nICJccyQiIHwgV2hlcmUtT2JqZWN0IHsgJF8uTGluZS5UcmltKCkuTGVuZ3RoIC1ndCAwfSkuTGluZU51bWJlciB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQkJfQ0KCQkJDQoJCQkkdG9rZW5zID0gJG51bGwNCgkJCSRwYXJzZUVycm9ycyA9ICRudWxsDQoJCQkkbnVsbCA9IFtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLkxhbmd1YWdlLlBhcnNlcl06OlBhcnNlRmlsZSgkZmlsZS5GdWxsTmFtZSwgW3JlZl0kdG9rZW5zLCBbcmVmXSRwYXJzZUVycm9ycykNCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgbm8gc3ludGF4IGVycm9ycyIgLVRlc3RDYXNlcyBAeyBwYXJzZUVycm9ycyA9ICRwYXJzZUVycm9ycyB9IHsNCgkJCQkkcGFyc2VFcnJvcnMgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJCX0NCgkJCQ0KCQkJZm9yZWFjaCAoJGNvbW1hbmQgaW4gJGdsb2JhbDpCYW5uZWRDb21tYW5kcykNCgkJCXsNCgkJCQlpZiAoJGdsb2JhbDpNYXlDb250YWluQ29tbWFuZFsiJGNvbW1hbmQiXSAtbm90Y29udGFpbnMgJGZpbGUuTmFtZSkNCgkJCQl7DQoJCQkJCUl0ICJbJG5hbWVdIFNob3VsZCBub3QgdXNlICRjb21tYW5kIiAtVGVzdENhc2VzIEB7IHRva2VucyA9ICR0b2tlbnM7IGNvbW1hbmQgPSAkY29tbWFuZCB9IHsNCgkJCQkJCSR0b2tlbnMgfCBXaGVyZS1PYmplY3QgVGV4dCAtRVEgJGNvbW1hbmQgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgkNCglDb250ZXh0ICJWYWxpZGF0aW5nIGhlbHAudHh0IGhlbHAgZmlsZXMiIHsNCgkJJGFsbEZpbGVzID0gR2V0LUNoaWxkSXRlbSAtUGF0aCAkbW9kdWxlUm9vdCAtUmVjdXJzZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLmhlbHAudHh0IiB8IFdoZXJlLU9iamVjdCBGdWxsTmFtZSAtTm90TGlrZSAiJG1vZHVsZVJvb3RcdGVzdHNcKiINCgkJDQoJCWZvcmVhY2ggKCRmaWxlIGluICRhbGxGaWxlcykNCgkJew0KCQkJJG5hbWUgPSAkZmlsZS5GdWxsTmFtZS5SZXBsYWNlKCIkbW9kdWxlUm9vdFwiLCAnJykNCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgVVRGOCBlbmNvZGluZyIgLVRlc3RDYXNlcyBAeyBmaWxlID0gJGZpbGUgfSB7DQoJCQkJR2V0LUZpbGVFbmNvZGluZyAtUGF0aCAkZmlsZS5GdWxsTmFtZSB8IFNob3VsZCAtQmUgJ1VURjggQk9NJw0KCQkJfQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBubyB0cmFpbGluZyBzcGFjZSIgLVRlc3RDYXNlcyBAeyBmaWxlID0gJGZpbGUgfSB7DQoJCQkJKCRmaWxlIHwgU2VsZWN0LVN0cmluZyAiXHMkIiB8IFdoZXJlLU9iamVjdCB7ICRfLkxpbmUuVHJpbSgpLkxlbmd0aCAtZ3QgMCB9IHwgTWVhc3VyZS1PYmplY3QpLkNvdW50IHwgU2hvdWxkIC1CZSAwDQoJCQl9DQoJCX0NCgl9DQp9AQkrAQAACSwBAAAGLQEAABdGaWxlSW50ZWdyaXR5LlRlc3RzLnBzMQYuAQAAJXRlc3RzXGdlbmVyYWxcRmlsZUludGVncml0eS5UZXN0cy5wczEJLAAAAAkwAQAACTEBAAAB+QAAACIAAAAGMgEAAJ0FIyBMaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkDQokZ2xvYmFsOkZ1bmN0aW9uSGVscFRlc3RFeGNlcHRpb25zID0gQCgNCiAgICANCikNCg0KPCMNCiAgTGlzdCBvZiBhcnJheWVkIGVudW1lcmF0aW9ucy4gVGhlc2UgbmVlZCB0byBiZSB0cmVhdGVkIGRpZmZlcmVudGx5LiBBZGQgZnVsbCBuYW1lLg0KICBFeGFtcGxlOg0KDQogICJTcWxjb2xsYWJvcmF0aXZlLkRiYXRvb2xzLkNvbm5lY3Rpb24uTWFuYWdlbWVudENvbm5lY3Rpb25UeXBlW10iDQojPg0KJGdsb2JhbDpIZWxwVGVzdEVudW1lcmF0ZWRBcnJheXMgPSBAKA0KCQ0KKQ0KDQo8Iw0KICBTb21lIHR5cGVzIG9uIHBhcmFtZXRlcnMganVzdCBmYWlsIHRoZWlyIHZhbGlkYXRpb24gbm8gbWF0dGVyIHdoYXQuDQogIEZvciB0aG9zZSBpdCBiZWNvbWVzIHBvc3NpYmxlIHRvIHNraXAgdGhlbSwgYnkgYWRkaW5nIHRoZW0gdG8gdGhpcyBoYXNodGFibGUuDQogIEFkZCBieSBmb2xsb3dpbmcgdGhpcyBjb252ZW50aW9uOiA8Y29tbWFuZCBuYW1lPiA9IEAoPGxpc3Qgb2YgcGFyYW1ldGVyIG5hbWVzPikNCiAgRXhhbXBsZToNCg0KICAiR2V0LURiYUNtT2JqZWN0IiAgICAgICA9IEAoIkRvTm90VXNlIikNCiM+DQokZ2xvYmFsOkhlbHBUZXN0U2tpcFBhcmFtZXRlclR5cGUgPSBAew0KICAgIA0KfQ0KAQkzAQAACTQBAAAGNQEAABNIZWxwLkV4Y2VwdGlvbnMucHMxBjYBAAAhdGVzdHNcZ2VuZXJhbFxIZWxwLkV4Y2VwdGlvbnMucHMxCSwAAAAJOAEAAAk5AQAAAfoAAAAiAAAABjoBAAD6NTwjDQogICAgLk5PVEVTDQogICAgICAgIFRoZSBvcmlnaW5hbCB0ZXN0IHRoaXMgaXMgYmFzZWQgdXBvbiB3YXMgd3JpdHRlbiBieSBKdW5lIEJsZW5kZXIuDQoJCUFmdGVyIHNldmVyYWwgcm91bmRzIG9mIG1vZGlmaWNhdGlvbnMgaXQgc3RhbmRzIG5vdyBhcyBpdCBpcywgYnV0IHRoZSBob25vciByZW1haW5zIGhlcnMuDQoNCgkJVGhhbmsgeW91IEp1bmUsIGZvciBhbGwgeW91IGhhdmUgZG9uZSENCg0KICAgIC5ERVNDUklQVElPTg0KCQlUaGlzIHRlc3QgZXZhbHVhdGVzIHRoZSBoZWxwIGZvciBhbGwgY29tbWFuZHMgaW4gYSBtb2R1bGUuDQoNCgkuUEFSQU1FVEVSIFNraXBUZXN0DQoJCURpc2FibGVzIHRoaXMgdGVzdC4NCgkNCgkuUEFSQU1FVEVSIENvbW1hbmRQYXRoDQoJCUxpc3Qgb2YgcGF0aHMgdW5kZXIgd2hpY2ggdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkLg0KCQlUaGlzIHRlc3QgYXNzdW1lcyB0aGF0IGFsbCBmdW5jdGlvbnMgaGF2ZSB0aGVpciBvd24gZmlsZSB0aGF0IGlzIG5hbWVkIGFmdGVyIHRoZW1zZWx2ZXMuDQoJCVRoZXNlIHBhdGhzIGFyZSB1c2VkIHRvIHNlYXJjaCBmb3IgY29tbWFuZHMgdGhhdCBzaG91bGQgZXhpc3QgYW5kIGJlIHRlc3RlZC4NCgkJV2lsbCBzZWFyY2ggcmVjdXJzaXZlbHkgYW5kIGFjY2VwdHMgd2lsZGNhcmRzLCBtYWtlIHN1cmUgb25seSBmdW5jdGlvbnMgYXJlIGZvdW5kDQoNCgkuUEFSQU1FVEVSIE1vZHVsZU5hbWUNCgkJTmFtZSBvZiB0aGUgbW9kdWxlIHRvIGJlIHRlc3RlZC4NCgkJVGhlIG1vZHVsZSBtdXN0IGFscmVhZHkgYmUgaW1wb3J0ZWQNCg0KCS5QQVJBTUVURVIgRXhjZXB0aW9uc0ZpbGUNCgkJRmlsZSBpbiB3aGljaCBleGNlcHRpb25zIGFuZCBhZGp1c3RtZW50cyBhcmUgY29uZmlndXJlZC4NCgkJSW4gaXQgdGhlcmUgc2hvdWxkIGJlIHR3byBhcnJheXMgYW5kIGEgaGFzaHRhYmxlIGRlZmluZWQ6DQoJCQkkZ2xvYmFsOkZ1bmN0aW9uSGVscFRlc3RFeGNlcHRpb25zDQoJCQkkZ2xvYmFsOkhlbHBUZXN0RW51bWVyYXRlZEFycmF5cw0KCQkJJGdsb2JhbDpIZWxwVGVzdFNraXBQYXJhbWV0ZXJUeXBlDQoJCVRoZXNlIGNhbiBiZSB1c2VkIHRvIHR3ZWFrIHRoZSB0ZXN0cyBzbGlnaHRseSBpbiBjYXNlcyBvZiBuZWVkLg0KCQlTZWUgdGhlIGV4YW1wbGUgZmlsZSBmb3IgZXhwbGFuYXRpb25zIG9uIGVhY2ggb2YgdGhlc2UgdXNhZ2UgYW5kIGVmZmVjdC4NCiM+DQpbQ21kbGV0QmluZGluZygpXQ0KUGFyYW0gKA0KCVtzd2l0Y2hdDQoJJFNraXBUZXN0LA0KCQ0KCVtzdHJpbmdbXV0NCgkkQ29tbWFuZFBhdGggPSBAKCIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGZ1bmN0aW9ucyIsICIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGludGVybmFsXGZ1bmN0aW9ucyIpLA0KCQ0KCVtzdHJpbmddDQoJJE1vZHVsZU5hbWUgPSAiw75uYW1lw74iLA0KCQ0KCVtzdHJpbmddDQoJJEV4Y2VwdGlvbnNGaWxlID0gIiRnbG9iYWw6dGVzdHJvb3RcZ2VuZXJhbFxIZWxwLkV4Y2VwdGlvbnMucHMxIg0KKQ0KaWYgKCRTa2lwVGVzdCkgeyByZXR1cm4gfQ0KLiAkRXhjZXB0aW9uc0ZpbGUNCg0KJENvbW1hbmRQYXRoID0gQCgNCiAgICAiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxmdW5jdGlvbnMiDQogICAgIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zIg0KKQ0KDQokaW5jbHVkZWROYW1lcyA9IGZvcmVhY2ggKCRwYXRoIGluICRDb21tYW5kUGF0aCkgeyAoR2V0LUNoaWxkSXRlbSAkcGF0aCAtUmVjdXJzZSAtRmlsZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLnBzMSIpLkJhc2VOYW1lIH0NCiRjb21tYW5kVHlwZXMgPSBAKCdDbWRsZXQnLCAnRnVuY3Rpb24nKQ0KaWYgKCRQU1ZlcnNpb25UYWJsZS5QU0VkaXRpb24gLWVxICdEZXNrdG9wJyApIHsgJGNvbW1hbmRUeXBlcyArPSAnV29ya2Zsb3cnIH0NCiRjb21tYW5kcyA9IEdldC1Db21tYW5kIC1Nb2R1bGUgKEdldC1Nb2R1bGUgJE1vZHVsZU5hbWUpIC1Db21tYW5kVHlwZSAkY29tbWFuZFR5cGVzIHwgV2hlcmUtT2JqZWN0IE5hbWUgLUluICRpbmNsdWRlZE5hbWVzDQoNCiMjIFdoZW4gdGVzdGluZyBoZWxwLCByZW1lbWJlciB0aGF0IGhlbHAgaXMgY2FjaGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBzZXNzaW9uLg0KIyMgVG8gdGVzdCwgcmVzdGFydCBzZXNzaW9uLg0KDQoNCmZvcmVhY2ggKCRjb21tYW5kIGluICRjb21tYW5kcykgew0KICAgICRjb21tYW5kTmFtZSA9ICRjb21tYW5kLk5hbWUNCiAgICANCiAgICAjIFNraXAgYWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSBvbiB0aGUgZXhjbHVzaW9ucyBsaXN0DQogICAgaWYgKCRnbG9iYWw6RnVuY3Rpb25IZWxwVGVzdEV4Y2VwdGlvbnMgLWNvbnRhaW5zICRjb21tYW5kTmFtZSkgeyBjb250aW51ZSB9DQogICAgDQogICAgIyBUaGUgbW9kdWxlLXF1YWxpZmllZCBjb21tYW5kIGZhaWxzIG9uIE1pY3Jvc29mdC5Qb3dlclNoZWxsLkFyY2hpdmUgY21kbGV0cw0KICAgICRIZWxwID0gR2V0LUhlbHAgJGNvbW1hbmROYW1lIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlDQoJDQoJRGVzY3JpYmUgIlRlc3QgaGVscCBmb3IgJGNvbW1hbmROYW1lIiB7DQogICAgICAgIA0KCQkjIElmIGhlbHAgaXMgbm90IGZvdW5kLCBzeW5vcHNpcyBpbiBhdXRvLWdlbmVyYXRlZCBoZWxwIGlzIHRoZSBzeW50YXggZGlhZ3JhbQ0KCQlJdCAic2hvdWxkIG5vdCBiZSBhdXRvLWdlbmVyYXRlZCIgLVRlc3RDYXNlcyBAeyBIZWxwID0gJEhlbHAgfSB7DQoJCQkkSGVscC5TeW5vcHNpcyB8IFNob3VsZCAtTm90IC1CZUxpa2UgJypgW2A8Q29tbW9uUGFyYW1ldGVyc2A+YF0qJw0KCQl9DQogICAgICAgIA0KCQkjIFNob3VsZCBiZSBhIGRlc2NyaXB0aW9uIGZvciBldmVyeSBmdW5jdGlvbg0KCQlJdCAiZ2V0cyBkZXNjcmlwdGlvbiBmb3IgJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSRIZWxwLkRlc2NyaXB0aW9uIHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KICAgICAgICANCgkJIyBTaG91bGQgYmUgYXQgbGVhc3Qgb25lIGV4YW1wbGUNCgkJSXQgImdldHMgZXhhbXBsZSBjb2RlIGZyb20gJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSgkSGVscC5FeGFtcGxlcy5FeGFtcGxlIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMSkuQ29kZSB8IFNob3VsZCAtTm90IC1CZU51bGxPckVtcHR5DQoJCX0NCgkNCgkJIyBTaG91bGQgYmUgYXQgbGVhc3Qgb25lIGV4YW1wbGUgZGVzY3JpcHRpb24NCgkJSXQgImdldHMgZXhhbXBsZSBoZWxwIGZyb20gJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSgkSGVscC5FeGFtcGxlcy5FeGFtcGxlLlJlbWFya3MgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCAxKS5UZXh0IHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KICAgICAgICANCiAgICAgICAgQ29udGV4dCAiVGVzdCBwYXJhbWV0ZXIgaGVscCBmb3IgJGNvbW1hbmROYW1lIiB7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRjb21tb24gPSAnRGVidWcnLCAnRXJyb3JBY3Rpb24nLCAnRXJyb3JWYXJpYWJsZScsICdJbmZvcm1hdGlvbkFjdGlvbicsICdJbmZvcm1hdGlvblZhcmlhYmxlJywgJ091dEJ1ZmZlcicsICdPdXRWYXJpYWJsZScsICdQaXBlbGluZVZhcmlhYmxlJywgJ1ZlcmJvc2UnLCAnV2FybmluZ0FjdGlvbicsICdXYXJuaW5nVmFyaWFibGUnDQogICAgICAgICAgICANCiAgICAgICAgICAgICRwYXJhbWV0ZXJzID0gJGNvbW1hbmQuUGFyYW1ldGVyU2V0cy5QYXJhbWV0ZXJzIHwgU29ydC1PYmplY3QgLVByb3BlcnR5IE5hbWUgLVVuaXF1ZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1ub3RpbiAkY29tbW9uDQogICAgICAgICAgICAkcGFyYW1ldGVyTmFtZXMgPSAkcGFyYW1ldGVycy5OYW1lDQogICAgICAgICAgICAkSGVscFBhcmFtZXRlck5hbWVzID0gJEhlbHAuUGFyYW1ldGVycy5QYXJhbWV0ZXIuTmFtZSB8IFNvcnQtT2JqZWN0IC1VbmlxdWUNCiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbWV0ZXIgaW4gJHBhcmFtZXRlcnMpIHsNCiAgICAgICAgICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICRwYXJhbWV0ZXIuTmFtZQ0KICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJIZWxwID0gJEhlbHAucGFyYW1ldGVycy5wYXJhbWV0ZXIgfCBXaGVyZS1PYmplY3QgTmFtZSAtRVEgJHBhcmFtZXRlck5hbWUNCgkJCQ0KCQkJCSMgU2hvdWxkIGJlIGEgZGVzY3JpcHRpb24gZm9yIGV2ZXJ5IHBhcmFtZXRlcg0KCQkJCUl0ICJnZXRzIGhlbHAgZm9yIHBhcmFtZXRlcjogJHBhcmFtZXRlck5hbWUgOiBpbiAkY29tbWFuZE5hbWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwIH0gew0KCQkJCQkkcGFyYW1ldGVySGVscC5EZXNjcmlwdGlvbi5UZXh0IHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJCQl9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGNvZGVNYW5kYXRvcnkgPSAkcGFyYW1ldGVyLklzTWFuZGF0b3J5LnRvU3RyaW5nKCkNCgkJCQlJdCAiaGVscCBmb3IgJHBhcmFtZXRlck5hbWUgcGFyYW1ldGVyIGluICRjb21tYW5kTmFtZSBoYXMgY29ycmVjdCBNYW5kYXRvcnkgdmFsdWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwOyBjb2RlTWFuZGF0b3J5ID0gJGNvZGVNYW5kYXRvcnkgfSB7DQoJCQkJCSRwYXJhbWV0ZXJIZWxwLlJlcXVpcmVkIHwgU2hvdWxkIC1CZSAkY29kZU1hbmRhdG9yeQ0KCQkJCX0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJEhlbHBUZXN0U2tpcFBhcmFtZXRlclR5cGVbJGNvbW1hbmROYW1lXSAtY29udGFpbnMgJHBhcmFtZXRlck5hbWUpIHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICRjb2RlVHlwZSA9ICRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5OYW1lDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5Jc0VudW0pIHsNCiAgICAgICAgICAgICAgICAgICAgIyBFbnVtZXJhdGlvbnMgb2Z0ZW4gaGF2ZSBpc3N1ZXMgd2l0aCB0aGUgdHlwZW5hbWUgbm90IGJlaW5nIHJlbGlhYmx5IGF2YWlsYWJsZQ0KICAgICAgICAgICAgICAgICAgICAkbmFtZXMgPSAkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGU6OkdldE5hbWVzKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZSkNCgkJCQkJCSMgUGFyYW1ldGVyIHR5cGUgaW4gSGVscCBzaG91bGQgbWF0Y2ggY29kZQ0KCQkJCQlJdCAiaGVscCBmb3IgJGNvbW1hbmROYW1lIGhhcyBjb3JyZWN0IHBhcmFtZXRlciB0eXBlIGZvciAkcGFyYW1ldGVyTmFtZSIgLVRlc3RDYXNlcyBAeyBwYXJhbWV0ZXJIZWxwID0gJHBhcmFtZXRlckhlbHA7IG5hbWVzID0gJG5hbWVzIH0gew0KCQkJCQkJJHBhcmFtZXRlckhlbHAucGFyYW1ldGVyVmFsdWVHcm91cC5wYXJhbWV0ZXJWYWx1ZSB8IFNob3VsZCAtYmUgJG5hbWVzDQoJCQkJCX0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICgkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGUuRnVsbE5hbWUgLWluICRIZWxwVGVzdEVudW1lcmF0ZWRBcnJheXMpIHsNCiAgICAgICAgICAgICAgICAgICAgIyBFbnVtZXJhdGlvbnMgb2Z0ZW4gaGF2ZSBpc3N1ZXMgd2l0aCB0aGUgdHlwZW5hbWUgbm90IGJlaW5nIHJlbGlhYmx5IGF2YWlsYWJsZQ0KICAgICAgICAgICAgICAgICAgICAkbmFtZXMgPSBbRW51bV06OkdldE5hbWVzKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5EZWNsYXJlZE1lbWJlcnNbMF0uUmV0dXJuVHlwZSkNCgkJCQkJSXQgImhlbHAgZm9yICRjb21tYW5kTmFtZSBoYXMgY29ycmVjdCBwYXJhbWV0ZXIgdHlwZSBmb3IgJHBhcmFtZXRlck5hbWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwOyBuYW1lcyA9ICRuYW1lcyB9IHsNCgkJCQkJCSRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlR3JvdXAucGFyYW1ldGVyVmFsdWUgfCBTaG91bGQgLWJlICRuYW1lcw0KCQkJCQl9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAjIFRvIGF2b2lkIGNhbGxpbmcgVHJpbSBtZXRob2Qgb24gYSBudWxsIG9iamVjdC4NCiAgICAgICAgICAgICAgICAgICAgJGhlbHBUeXBlID0gaWYgKCRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlKSB7ICRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlLlRyaW0oKSB9DQoJCQkJCSMgUGFyYW1ldGVyIHR5cGUgaW4gSGVscCBzaG91bGQgbWF0Y2ggY29kZQ0KCQkJCQlJdCAiaGVscCBmb3IgJGNvbW1hbmROYW1lIGhhcyBjb3JyZWN0IHBhcmFtZXRlciB0eXBlIGZvciAkcGFyYW1ldGVyTmFtZSIgLVRlc3RDYXNlcyBAeyBoZWxwVHlwZSA9ICRoZWxwVHlwZTsgY29kZVR5cGUgPSAkY29kZVR5cGUgfSB7DQoJCQkJCQkkaGVscFR5cGUgfCBTaG91bGQgLWJlICRjb2RlVHlwZQ0KCQkJCQl9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZm9yZWFjaCAoJGhlbHBQYXJtIGluICRIZWxwUGFyYW1ldGVyTmFtZXMpIHsNCgkJCQkjIFNob3VsZG4ndCBmaW5kIGV4dHJhIHBhcmFtZXRlcnMgaW4gaGVscC4NCgkJCQlJdCAiZmluZHMgaGVscCBwYXJhbWV0ZXIgaW4gY29kZTogJGhlbHBQYXJtIiAtVGVzdENhc2VzIEB7IGhlbHBQYXJtID0gJGhlbHBQYXJtOyBwYXJhbWV0ZXJOYW1lcyA9ICRwYXJhbWV0ZXJOYW1lcyB9IHsNCgkJCQkJJGhlbHBQYXJtIC1pbiAkcGFyYW1ldGVyTmFtZXMgfCBTaG91bGQgLUJlICR0cnVlDQoJCQkJfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQEJOwEAAAk8AQAABj0BAAAOSGVscC5UZXN0cy5wczEGPgEAABx0ZXN0c1xnZW5lcmFsXEhlbHAuVGVzdHMucHMxCSwAAAAJQAEAAAlBAQAAAfsAAAAiAAAABkIBAADUFURlc2NyaWJlICJWYWxpZGF0aW5nIHRoZSBtb2R1bGUgbWFuaWZlc3QiIHsNCgkkbW9kdWxlUm9vdCA9IChSZXNvbHZlLVBhdGggIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw74iKS5QYXRoDQoJJG1hbmlmZXN0ID0gKChHZXQtQ29udGVudCAiJG1vZHVsZVJvb3Rcw75uYW1lw74ucHNkMSIpIC1qb2luICJgbiIpIHwgSW52b2tlLUV4cHJlc3Npb24NCglDb250ZXh0ICJCYXNpYyByZXNvdXJjZXMgdmFsaWRhdGlvbiIgew0KCQkkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtICIkbW9kdWxlUm9vdFxmdW5jdGlvbnMiIC1SZWN1cnNlIC1GaWxlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIioucHMxIg0KCQlJdCAiRXhwb3J0cyBhbGwgZnVuY3Rpb25zIGluIHRoZSBwdWJsaWMgZm9sZGVyIiAtVGVzdENhc2VzIEB7IGZpbGVzID0gJGZpbGVzOyBtYW5pZmVzdCA9ICRtYW5pZmVzdCB9IHsNCgkJCQ0KCQkJJGZ1bmN0aW9ucyA9IChDb21wYXJlLU9iamVjdCAtUmVmZXJlbmNlT2JqZWN0ICRmaWxlcy5CYXNlTmFtZSAtRGlmZmVyZW5jZU9iamVjdCAkbWFuaWZlc3QuRnVuY3Rpb25zVG9FeHBvcnQgfCBXaGVyZS1PYmplY3QgU2lkZUluZGljYXRvciAtTGlrZSAnPD0nKS5JbnB1dE9iamVjdA0KCQkJJGZ1bmN0aW9ucyB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQoJCUl0ICJFeHBvcnRzIG5vIGZ1bmN0aW9uIHRoYXQgaXNuJ3QgYWxzbyBwcmVzZW50IGluIHRoZSBwdWJsaWMgZm9sZGVyIiAtVGVzdENhc2VzIEB7IGZpbGVzID0gJGZpbGVzOyBtYW5pZmVzdCA9ICRtYW5pZmVzdCB9IHsNCgkJCSRmdW5jdGlvbnMgPSAoQ29tcGFyZS1PYmplY3QgLVJlZmVyZW5jZU9iamVjdCAkZmlsZXMuQmFzZU5hbWUgLURpZmZlcmVuY2VPYmplY3QgJG1hbmlmZXN0LkZ1bmN0aW9uc1RvRXhwb3J0IHwgV2hlcmUtT2JqZWN0IFNpZGVJbmRpY2F0b3IgLUxpa2UgJz0+JykuSW5wdXRPYmplY3QNCgkJCSRmdW5jdGlvbnMgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCQkNCgkJSXQgIkV4cG9ydHMgbm9uZSBvZiBpdHMgaW50ZXJuYWwgZnVuY3Rpb25zIiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgbWFuaWZlc3QgPSAkbWFuaWZlc3QgfSB7DQoJCQkkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtICIkbW9kdWxlUm9vdFxpbnRlcm5hbFxmdW5jdGlvbnMiIC1SZWN1cnNlIC1GaWxlIC1GaWx0ZXIgIioucHMxIg0KCQkJJGZpbGVzIHwgV2hlcmUtT2JqZWN0IEJhc2VOYW1lIC1JbiAkbWFuaWZlc3QuRnVuY3Rpb25zVG9FeHBvcnQgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCX0NCgkNCglDb250ZXh0ICJJbmRpdmlkdWFsIGZpbGUgdmFsaWRhdGlvbiIgew0KCQlJdCAiVGhlIHJvb3QgbW9kdWxlIGZpbGUgZXhpc3RzIiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgbWFuaWZlc3QgPSAkbWFuaWZlc3QgfSB7DQoJCQlUZXN0LVBhdGggIiRtb2R1bGVSb290XCQoJG1hbmlmZXN0LlJvb3RNb2R1bGUpIiB8IFNob3VsZCAtQmUgJHRydWUNCgkJfQ0KCQkNCgkJZm9yZWFjaCAoJGZvcm1hdCBpbiAkbWFuaWZlc3QuRm9ybWF0c1RvUHJvY2VzcykNCgkJew0KCQkJSXQgIlRoZSBmaWxlICRmb3JtYXQgc2hvdWxkIGV4aXN0IiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgZm9ybWF0ID0gJGZvcm1hdCB9IHsNCgkJCQlUZXN0LVBhdGggIiRtb2R1bGVSb290XCRmb3JtYXQiIHwgU2hvdWxkIC1CZSAkdHJ1ZQ0KCQkJfQ0KCQl9DQoJCQ0KCQlmb3JlYWNoICgkdHlwZSBpbiAkbWFuaWZlc3QuVHlwZXNUb1Byb2Nlc3MpDQoJCXsNCgkJCUl0ICJUaGUgZmlsZSAkdHlwZSBzaG91bGQgZXhpc3QiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyB0eXBlID0gJHR5cGUgfSB7DQoJCQkJVGVzdC1QYXRoICIkbW9kdWxlUm9vdFwkdHlwZSIgfCBTaG91bGQgLUJlICR0cnVlDQoJCQl9DQoJCX0NCgkJDQoJCWZvcmVhY2ggKCRhc3NlbWJseSBpbiAkbWFuaWZlc3QuUmVxdWlyZWRBc3NlbWJsaWVzKQ0KCQl7DQogICAgICAgICAgICBpZiAoJGFzc2VtYmx5IC1saWtlICIqLmRsbCIpIHsNCiAgICAgICAgICAgICAgICBJdCAiVGhlIGZpbGUgJGFzc2VtYmx5IHNob3VsZCBleGlzdCIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IGFzc2VtYmx5ID0gJGFzc2VtYmx5IH0gew0KICAgICAgICAgICAgICAgICAgICBUZXN0LVBhdGggIiRtb2R1bGVSb290XCRhc3NlbWJseSIgfCBTaG91bGQgLUJlICR0cnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgSXQgIlRoZSBmaWxlICRhc3NlbWJseSBzaG91bGQgbG9hZCBmcm9tIHRoZSBHQUMiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyBhc3NlbWJseSA9ICRhc3NlbWJseSB9IHsNCiAgICAgICAgICAgICAgICAgICAgeyBBZGQtVHlwZSAtQXNzZW1ibHlOYW1lICRhc3NlbWJseSB9IHwgU2hvdWxkIC1Ob3QgLVRocm93DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoJCQ0KCQlmb3JlYWNoICgkdGFnIGluICRtYW5pZmVzdC5Qcml2YXRlRGF0YS5QU0RhdGEuVGFncykNCgkJew0KCQkJSXQgIlRhZ3Mgc2hvdWxkIGhhdmUgbm8gc3BhY2VzIGluIG5hbWUiIC1UZXN0Q2FzZXMgQHsgdGFnID0gJHRhZyB9IHsNCgkJCQkkdGFnIC1tYXRjaCAiICIgfCBTaG91bGQgLUJlICRmYWxzZQ0KCQkJfQ0KCQl9DQoJfQ0KfQEJQwEAAAlEAQAABkUBAAASTWFuaWZlc3QuVGVzdHMucHMxBkYBAAAgdGVzdHNcZ2VuZXJhbFxNYW5pZmVzdC5UZXN0cy5wczEJLAAAAAlIAQAACUkBAAAB/AAAACIAAAAGSgEAAJoJW0NtZGxldEJpbmRpbmcoKV0NClBhcmFtICgNCglbc3dpdGNoXQ0KCSRTa2lwVGVzdCwNCgkNCglbc3RyaW5nW11dDQoJJENvbW1hbmRQYXRoID0gQCgiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxmdW5jdGlvbnMiLCAiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxpbnRlcm5hbFxmdW5jdGlvbnMiKQ0KKQ0KDQppZiAoJFNraXBUZXN0KSB7IHJldHVybiB9DQoNCiRnbG9iYWw6X19wZXN0ZXJfZGF0YS5TY3JpcHRBbmFseXplciA9IE5ldy1PYmplY3QgU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdA0KDQpEZXNjcmliZSAnSW52b2tpbmcgUFNTY3JpcHRBbmFseXplciBhZ2FpbnN0IGNvbW1hbmRiYXNlJyB7DQoJJGNvbW1hbmRGaWxlcyA9IGZvcmVhY2ggKCRwYXRoIGluICRDb21tYW5kUGF0aCkgeyBHZXQtQ2hpbGRJdGVtIC1QYXRoICRwYXRoIC1SZWN1cnNlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIioucHMxIiB9DQoJJHNjcmlwdEFuYWx5emVyUnVsZXMgPSBHZXQtU2NyaXB0QW5hbHl6ZXJSdWxlDQoJDQoJZm9yZWFjaCAoJGZpbGUgaW4gJGNvbW1hbmRGaWxlcykNCgl7DQoJCUNvbnRleHQgIkFuYWx5emluZyAkKCRmaWxlLkJhc2VOYW1lKSIgew0KCQkJJGFuYWx5c2lzID0gSW52b2tlLVNjcmlwdEFuYWx5emVyIC1QYXRoICRmaWxlLkZ1bGxOYW1lIC1FeGNsdWRlUnVsZSBQU0F2b2lkVHJhaWxpbmdXaGl0ZXNwYWNlLCBQU1Nob3VsZFByb2Nlc3MNCgkJCQ0KCQkJZm9yRWFjaCAoJHJ1bGUgaW4gJHNjcmlwdEFuYWx5emVyUnVsZXMpDQoJCQl7DQoJCQkJSXQgIlNob3VsZCBwYXNzICRydWxlIiAtVGVzdENhc2VzIEB7IGFuYWx5c2lzID0gJGFuYWx5c2lzOyBydWxlID0gJHJ1bGUgfSB7DQoJCQkJCUlmICgkYW5hbHlzaXMuUnVsZU5hbWUgLWNvbnRhaW5zICRydWxlKQ0KCQkJCQl7DQoJCQkJCQkkYW5hbHlzaXMgfCBXaGVyZS1PYmplY3QgUnVsZU5hbWUgLUVRICRydWxlIC1vdXR2YXJpYWJsZSBmYWlsdXJlcyB8IEZvckVhY2gtT2JqZWN0IHsgJG51bGwgPSAkZ2xvYmFsOl9fcGVzdGVyX2RhdGEuU2NyaXB0QW5hbHl6ZXIuQWRkKCRfKSB9DQoJCQkJCQkNCgkJCQkJCTEgfCBTaG91bGQgLUJlIDANCgkJCQkJfQ0KCQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCTAgfCBTaG91bGQgLUJlIDANCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0BCUsBAAAJTAEAAAZNAQAAGlBTU2NyaXB0QW5hbHl6ZXIuVGVzdHMucHMxBk4BAAAodGVzdHNcZ2VuZXJhbFxQU1NjcmlwdEFuYWx5emVyLlRlc3RzLnBzMQksAAAACVABAAAJUQEAAAH+AAAAIgAAAAZSAQAAVSMgRnVuY3Rpb25zDQoNCkZvbGRlciBmb3IgYWxsIHRoZSBmdW5jdGlvbnMgdGhlIHVzZXIgaXMgc3VwcG9zZWQgdG8gaGF2ZSBhY2Nlc3MgdG8uDQoBCVMBAAAJVAEAAAZVAQAACXJlYWRtZS5tZAZWAQAAHMO+bmFtZcO+XGZ1bmN0aW9uc1xyZWFkbWUubWQJLAAAAAlYAQAACVkBAAAB/wAAAB4AAAAJWgEAAAZbAQAACWZ1bmN0aW9ucwZcAQAAG8O+bmFtZcO+XGludGVybmFsXGZ1bmN0aW9ucwksAAAACV4BAAAJXwEAAAEAAQAAHgAAAAlgAQAABmEBAAAHc2NyaXB0cwZiAQAAGcO+bmFtZcO+XGludGVybmFsXHNjcmlwdHMJLAAAAAlkAQAACWUBAAABCwEAAAgAAAAJVAAAAAAAAAAAAAAAAQwBAAAIAAAACVQAAAAAAAAAAAAAAAEQAQAACAAAAAlUAAAAAAAAAAAAAAABEQEAAAgAAAAJVAAAAAAAAAAAAAAAARMBAAAIAAAACVQAAAAAAAAAAAAAAAEUAQAACAAAAAlUAAAAAAAAAAAAAAABGAEAAAgAAAAJVAAAAAAAAAAAAAAAARkBAAAIAAAACVQAAAAAAAAAAAAAAAEbAQAACAAAAAlUAAAAAAAAAAAAAAABHAEAAAgAAAAJVAAAAAAAAAAAAAAAASABAAAIAAAACVQAAAAAAAAAAAAAAAEhAQAACAAAAAlUAAAAAAAAAAAAAAABIwEAAAgAAAAJVAAAAAAAAAAAAAAAASQBAAAIAAAACVQAAAAAAAAAAAAAAAEoAQAACAAAAAlUAAAAAAAAAAAAAAABKQEAAAgAAAAJVAAAAAAAAAAAAAAAASsBAAAIAAAACVQAAAAAAAAAAAAAAAEsAQAACAAAAAlUAAAAAAAAAAAAAAABMAEAAAgAAAAJVAAAAAAAAAAAAAAAATEBAAAIAAAACVQAAAAAAAAAAAAAAAEzAQAACAAAAAlUAAAAAAAAAAAAAAABNAEAAAgAAAAJVAAAAAAAAAAAAAAAATgBAAAIAAAACVQAAAAAAAAAAAAAAAE5AQAACAAAAAlUAAAAAAAAAAAAAAABOwEAAAgAAAAJZwEAAAEAAAABAAAAATwBAAAIAAAACVQAAAAAAAAAAAAAAAFAAQAACAAAAAlUAAAAAAAAAAAAAAABQQEAAAgAAAAJVAAAAAAAAAAAAAAAAUMBAAAIAAAACWkBAAABAAAAAQAAAAFEAQAACAAAAAlUAAAAAAAAAAAAAAABSAEAAAgAAAAJVAAAAAAAAAAAAAAAAUkBAAAIAAAACVQAAAAAAAAAAAAAAAFLAQAACAAAAAlrAQAAAQAAAAEAAAABTAEAAAgAAAAJVAAAAAAAAAAAAAAAAVABAAAIAAAACVQAAAAAAAAAAAAAAAFRAQAACAAAAAlUAAAAAAAAAAAAAAABUwEAAAgAAAAJVAAAAAAAAAAAAAAAAVQBAAAIAAAACVQAAAAAAAAAAAAAAAFYAQAACAAAAAlUAAAAAAAAAAAAAAABWQEAAAgAAAAJVAAAAAAAAAAAAAAAAVoBAAAMAAAACW0BAAABAAAAAQAAAAFeAQAACAAAAAlUAAAAAAAAAAAAAAABXwEAAAgAAAAJVAAAAAAAAAAAAAAAAWABAAAMAAAACW8BAAABAAAAAQAAAAFkAQAACAAAAAlUAAAAAAAAAAAAAAABZQEAAAgAAAAJVAAAAAAAAAAAAAAAEWcBAAAEAAAABnEBAAAEbmFtZQ0DEWkBAAAEAAAABnIBAAAEbmFtZQ0DEWsBAAAEAAAABnMBAAAEbmFtZQ0DB20BAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJdAEAAA0DB28BAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJdQEAAA0DAXQBAAAiAAAABnYBAABWIyBJbnRlcm5hbCA+IEZ1bmN0aW9ucw0KDQpGb2xkZXIgZm9yIGFsbCB0aGUgZnVuY3Rpb25zIHlvdSB3YW50IHRoZSB1c2VyIHRvIG5vdCBzZWUuDQoBCXcBAAAJeAEAAAZ5AQAACXJlYWRtZS5tZAZ6AQAAJcO+bmFtZcO+XGludGVybmFsXGZ1bmN0aW9uc1xyZWFkbWUubWQJLAAAAAl8AQAACX0BAAABdQEAACIAAAAGfgEAAFYjIEludGVybmFsID4gU2NyaXB0cw0KDQpQdXQgaW4gYWxsIHRoZSBzY3JpcHRzIHRoYXQgc2hvdWxkIGJlIHJ1biBvbmNlIGR1cmluZyBpbXBvcnQNCgEJfwEAAAmAAQAABoEBAAAJcmVhZG1lLm1kBoIBAAAjw75uYW1lw75caW50ZXJuYWxcc2NyaXB0c1xyZWFkbWUubWQJLAAAAAmEAQAACYUBAAABdwEAAAgAAAAJVAAAAAAAAAAAAAAAAXgBAAAIAAAACVQAAAAAAAAAAAAAAAF8AQAACAAAAAlUAAAAAAAAAAAAAAABfQEAAAgAAAAJVAAAAAAAAAAAAAAAAX8BAAAIAAAACVQAAAAAAAAAAAAAAAGAAQAACAAAAAlUAAAAAAAAAAAAAAABhAEAAAgAAAAJVAAAAAAAAAAAAAAAAYUBAAAIAAAACVQAAAAAAAAAAAAAAAs=</BA>
    </MS>
  </Obj>
</Objs>