<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>35523</bug_id>
          
          <creation_ts>2018-10-18 13:53:28 +0300</creation_ts>
          <short_desc>[e2k] regexec.c, ext/re/re_exec.c надо собирать с -O1 во избежание некорректной работы</short_desc>
          <delta_ts>2021-08-04 13:27:53 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>perl</component>
          <version>unstable</version>
          <rep_platform>e2k</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://bugzilla.redhat.com/show_bug.cgi?id=838427</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>40649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="viy">viy</assigned_to>
          <cc>at</cc>
    
    <cc>azol</cc>
    
    <cc>bircoph</cc>
    
    <cc>crux</cc>
    
    <cc>viy</cc>
    
    <cc>wd</cc>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175105</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-10-18 13:53:28 +0300</bug_when>
    <thetext>publican-4.3.2-alt3_9 у меня на e2k вылетает при сборке docs-alt-workstation:

make: Entering directory `/usr/src/RPM/BUILD/docs-alt-workstation-8.2-alt3&apos;
publican build --config publican.cfg --brand_dir ru-RU/Common_Content/altlinux-brand --langs ru-RU --formats html-single --publish &amp;&amp; touch tmp/ru-RU/html-single
publican only accepts one action you supplied &apos;10&apos;: build &amp; --config &amp; publican.cfg &amp; --brand_dir &amp; ru-RU/Common_Content/altlinux-brand &amp; --langs &amp; ru-RU &amp; --formats &amp; html-single &amp; --publish
 at /usr/bin/publican line 396.
make: *** [tmp/ru-RU/html-single] Error 2

...при этом publican-4.3.2-alt3_11 на сизифе не видит никаких проблем с аргументами (помнится, аналогично обстояло в сентябре и вроде бы в мае тоже).

От обычного вызова строка выше отличается &quot;--brand_dir &quot; вместо &quot;--brand_dir=&quot; -- на аэродинамику не влияет.

Проблема воспроизводится и автономно на самом publican:

x86_64$ $ publican build --help
build
    Transform XML to other formats (pdf, html, html-single,
    drupal-book, etc)
[...]

e2k$ publican build --help
publican only accepts one action you supplied &apos;2&apos;: build &amp; --help
 at /usr/bin/publican line 396.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177042</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-12-28 21:17:13 +0300</bug_when>
    <thetext>Один добрый человек взялся посмотреть; пока докопались до того, что
в Getopt::Long не матчится регэксп в utf8, что попытались объехать добавлением
  utf8::encode $_ for @ARGV;
перед GetOptions( \%opts, @optns, ) в /usr/bin/publican,
после чего текущая картинка сдвинулась в сторону

FATAL ERROR: ru-RU/Book_Info.xml: No such file or directory at /usr/lib64/perl5/XML/Parser/Expat.pm line 466.
 at /usr/bin/publican line 1010.

-- т.е. по крайней мере опции были разобраны верно.

Начали с вставки между GetOptions и croak в /usr/bin/publican:

use Data::Dumper;
$Data::Dumper::Sortkeys=1;
warn Dumper \%opts, \@optns;

и заметили разницу между e2k и x86: http://paste.org.ru/?jf1356

Дальше дошли до отладки Long.pm (похаченая версия из hasher chroot прилагается вместе с diff), в итоге текущее предположение -- надо проверить на perl, собранном с -O0, вдруг это miscompilation (но тогда он происходит и на lcc-1.21.24, и на lcc-1.23.12 с одинаковым эффектом, это проверил).

Проверка -- попыткой пересборки docs-alt-workstation-8.2-alt3.src.rpm
(можно брать сизифный пакет).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177043</commentid>
    <comment_count>2</comment_count>
      <attachid>7922</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-12-28 21:17:59 +0300</bug_when>
    <thetext>Created attachment 7922
publican.diff &quot;как есть&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177044</commentid>
    <comment_count>3</comment_count>
      <attachid>7923</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-12-28 21:18:57 +0300</bug_when>
    <thetext>Created attachment 7923
модифицированный /usr/bin/publican (изначально из publican-4.3.2-alt3_9)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177045</commentid>
    <comment_count>4</comment_count>
      <attachid>7924</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-12-28 21:19:46 +0300</bug_when>
    <thetext>Created attachment 7924
Long.pm.diff &quot;как есть&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177046</commentid>
    <comment_count>5</comment_count>
      <attachid>7925</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-12-28 21:21:35 +0300</bug_when>
    <thetext>Created attachment 7925
модифицированный /usr/share/perl5/Getopt/Long.pm (изначально из perl-base-5.26.2-alt3)

Т.е. объезд совсем исходной проблемы в добуквенной формулировке найден
(--help отрабатывает штатно), но сборка документации всё-таки валится.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177048</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-12-28 21:40:28 +0300</bug_when>
    <thetext>PS: ещё приборы и материалы:
http://paste.org.ru/?z0np29 -- тест, отрабатывает одинаково на e2k/x86;
http://paste.org.ru/?nmggwk -- publican debug на e2k, не разобрал опции;
http://paste.org.ru/?hccr38 -- publican debug на x86, _разобрал_ опции;

http://paste.org.ru/?mpfzl2 -- Match failed;
http://paste.org.ru/?xr3pn6 -- Match failed (в чруте, собранном lcc-1.23);
http://paste.org.ru/?5q5t08 -- utf8::encode $_ for @ARGV; и Match successful!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177097</commentid>
    <comment_count>7</comment_count>
    <who name="">wd</who>
    <bug_when>2018-12-31 11:36:16 +0300</bug_when>
    <thetext>можно еще попробовать собирать с LANG=C, тогда @ARGV не должен быть заюникоденным...
хотя use Encode в начале всеравно смущает</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182360</commentid>
    <comment_count>8</comment_count>
      <attachid>8165</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-12 17:41:42 +0300</bug_when>
    <thetext>Created attachment 8165
воспроизводилка проблемы

Получили воспроизведение проблемы (5.26.2, собранный 1.23.12):

$ LANG=POSIX perl repro.pl --config фыв
$VAR1 = [
          &quot;--config&quot;,
          &quot;\321\204\321\213\320\262&quot;
        ];

--config: 1
фыв: 0

$VAR1 = {};
$VAR2 = [
          &quot;config=s&quot;
        ];

_Без_ upgrade получаем разобранные опции.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182361</commentid>
    <comment_count>9</comment_count>
      <attachid>8166</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-12 18:16:18 +0300</bug_when>
    <thetext>Created attachment 8166
суженная воспроизводилка

В случае юникодности .* обламывается на втором символе при наличии /s:

$ perl repro2.pl a 
1
1
1
$ perl repro2.pl aa
1
1
0
$ perl repro2.pl aaa
1
1
0
$ _</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182362</commentid>
    <comment_count>10</comment_count>
    <who name="viy">viy</who>
    <bug_when>2019-06-12 19:34:48 +0300</bug_when>
    <thetext>use re &apos;debug&apos;; показал, что проблема в SANY
смотрим код
regexec.c:

    case SANY:
        if (utf8_target) {
            while (scan &lt; loceol &amp;&amp; hardcount &lt; max) {
                scan += UTF8SKIP(scan);
                hardcount++;
            }
        }
        else
            scan = loceol;
        break;

возможность проблемы в UTF8SKIP
utf8.h:
#ifdef DOINIT
EXTCONST unsigned char PL_utf8skip[] = {
/* 0x00 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
[...]
#else
EXTCONST unsigned char PL_utf8skip[];
#endif

Гипотеза: на эльбрусе при сборке не выставлен  DOINIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182363</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-12 19:43:17 +0300</bug_when>
    <thetext>(В ответ на комментарий №10)
&gt; Гипотеза: на эльбрусе при сборке не выставлен  DOINIT
Да, не выставлен в config.h!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182365</commentid>
    <comment_count>12</comment_count>
    <who name="viy">viy</who>
    <bug_when>2019-06-12 19:54:38 +0300</bug_when>
    <thetext>(In reply to comment #11)
&gt; (В ответ на комментарий №10)
&gt; &gt; Гипотеза: на эльбрусе при сборке не выставлен  DOINIT
&gt; Да, не выставлен в config.h!

DOINIT выставляется в INTERN.h
а если выбирается EXTERN.h, то нужен внешний сгенерированный файл</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182398</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-13 19:55:20 +0300</bug_when>
    <thetext>Было подозрение на массив PL_utf8skip в плане различной инициализации на e2k
и x86_64 -- не подтвердилось, таблица одинаково верно заполнена и там, и там:

$ objdump -s -j .rodata globals.o
[...]
 0400 01010101 01010101 01010101 01010101  ................
 0410 01010101 01010101 01010101 01010101  ................
 0420 01010101 01010101 01010101 01010101  ................
 0430 01010101 01010101 01010101 01010101  ................
 0440 01010101 01010101 01010101 01010101  ................
 0450 01010101 01010101 01010101 01010101  ................
 0460 01010101 01010101 01010101 01010101  ................
 0470 01010101 01010101 01010101 01010101  ................
 0480 01010101 01010101 01010101 01010101  ................
 0490 01010101 01010101 01010101 01010101  ................
 04a0 01010101 01010101 01010101 01010101  ................
 04b0 01010101 01010101 01010101 01010101  ................
 04c0 02020202 02020202 02020202 02020202  ................
 04d0 02020202 02020202 02020202 02020202  ................
 04e0 03030303 03030303 03030303 03030303  ................
 04f0 04040404 04040404 05050505 0606070d  ................
[...]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182425</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-14 16:52:28 +0300</bug_when>
    <thetext>В общем, publican собирается perl, собранным с вот таким патчиком на спек:

 make
 
+%ifarch %e2k
+# http://bugzilla.altlinux.org/35523 workaround
+rm -f regexec.o libperl-%ver.so ext/re/re_exec.o
+make OPTIMIZE+=&apos;%optflags -O1&apos; regexec.o
+make libperl-%ver.so
+make -C ext/re OPTIMIZE+=&apos;%optflags -O1&apos; re_exec.o
+make -C ext/re all
+%endif
+
 %check

...и дальше собирает, скажем, docs-alt-workstation.

Похоже, это в силе как минимум для lcc 1.23.12 и 1.21.24.

Игорь, Андрей, спасибо!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182426</commentid>
    <comment_count>15</comment_count>
      <attachid>8167</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-14 17:12:35 +0300</bug_when>
    <thetext>Created attachment 8167
perl.spec: ALT #35523 workaround (-O1 for regexec, re_exec)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182428</commentid>
    <comment_count>16</comment_count>
    <who name="viy">viy</who>
    <bug_when>2019-06-14 17:28:42 +0300</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=8167) [details]
&gt; perl.spec: ALT #35523 workaround (-O1 for regexec, re_exec)

приложил.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182442</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2019-06-15 00:35:36 +0300</bug_when>
    <thetext>Спасибо!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7922</attachid>
            <date>2018-12-28 21:17:59 +0300</date>
            <delta_ts>2018-12-28 21:17:59 +0300</delta_ts>
            <desc>publican.diff &quot;как есть&quot;</desc>
            <filename>publican.diff</filename>
            <type>text/plain</type>
            <size>810</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">LS0tIC90bXAvLnByaXZhdGUvbWlrZS9oYXNoZXIvY2hyb290L3Vzci9iaW4vcHVibGljYW4ub3Jp
ZwkyMDE4LTA1LTI4IDE5OjI1OjA5LjAwMDAwMDAwMCArMDAwMAorKysgL3RtcC8ucHJpdmF0ZS9t
aWtlL2hhc2hlci9jaHJvb3QvdXNyL2Jpbi9wdWJsaWNhbgkyMDE4LTEyLTI4IDE4OjA3OjU4LjY2
Mzg3NDc4NSArMDAwMApAQCAtNCw3ICs0LDggQEAKIHVzZSBzdHJpY3Q7CiB1c2UgNS4wMDg7CiB1
c2UgQ2FycDsKLXVzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBub19hdXRvX2FiYnJldik7Cisj
dXNlIEdldG9wdDo6TG9uZyBxdyg6Y29uZmlnIG5vX2F1dG9fYWJicmV2KTsKK3VzZSBHZXRvcHQ6
OkxvbmcgcXcoOmNvbmZpZyBub19hdXRvX2FiYnJldiBkZWJ1Zyk7CiB1c2UgUG9kOjpVc2FnZTsK
IHVzZSBQdWJsaWNhbjsKIHVzZSBQdWJsaWNhbjo6Q3JlYXRlQm9vazsKQEAgLTM4NCw2ICszODUs
MTEgQEAKICAgICB9CiB9CiAKKwl1c2UgRGF0YTo6RHVtcGVyOworCSREYXRhOjpEdW1wZXI6OlNv
cnRrZXlzPTE7CisKKwl1dGY4OjplbmNvZGUgJF8gZm9yIEBBUkdWOworCiBHZXRPcHRpb25zKCBc
JW9wdHMsIEBvcHRucywgKQogICAgIG9yIHBvZDJ1c2FnZSgKICAgICAtdmVyYm9zZSAgPT4gMSwK
QEAgLTM5Miw2ICszOTgsOSBAQAogICAgIC1wYXRobGlzdCA9PiBcQHBvZF9wYXRocwogICAgICk7
CiAKKyAgICAjd2FybiBEdW1wZXIgXCVJTkM7CisJd2FybiBEdW1wZXIgXCVvcHRzLCBcQG9wdG5z
OworCiAjIGNhdGNoIG11bHRpcGxlIGFjdGlvbnMKIGlmICggc2NhbGFyIEBBUkdWID4gMSApIHsK
ICAgICBjcm9haygK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7923</attachid>
            <date>2018-12-28 21:18:57 +0300</date>
            <delta_ts>2018-12-28 21:18:57 +0300</delta_ts>
            <desc>модифицированный /usr/bin/publican (изначально из publican-4.3.2-alt3_9)</desc>
            <filename>publican</filename>
            <type>text/plain</type>
            <size>53157</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsIC1DREFTCgp1c2Ugd2FybmluZ3M7CnVzZSBzdHJpY3Q7CnVzZSA1LjAw
ODsKdXNlIENhcnA7CiN1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgbm9fYXV0b19hYmJyZXYp
Owp1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgbm9fYXV0b19hYmJyZXYgZGVidWcpOwp1c2Ug
UG9kOjpVc2FnZTsKdXNlIFB1YmxpY2FuOwp1c2UgUHVibGljYW46OkNyZWF0ZUJvb2s7CnVzZSBQ
dWJsaWNhbjo6Q3JlYXRlQnJhbmQ7CnVzZSBQdWJsaWNhbjo6QnVpbGRlcjsKdXNlIFB1YmxpY2Fu
OjpCdWlsZGVyOjpEb2NCb29rNDsKdXNlIFB1YmxpY2FuOjpCdWlsZGVyOjpEb2NCb29rNTsKdXNl
IFB1YmxpY2FuOjpYbWxDbGVhbjsKdXNlIFB1YmxpY2FuOjpUcmVlVmlldzsKdXNlIFB1YmxpY2Fu
OjpXZWJTaXRlOwp1c2UgRmlsZTo6UGF0aDsKdXNlIEZpbGU6OkZpbmQ6OlJ1bGU7CnVzZSBGaWxl
OjpwdXNoZDsKdXNlIEFyY2hpdmU6OlRhcjsKdXNlIFRlcm06OkFOU0lDb2xvciBxdyg6Y29uc3Rh
bnRzKTsKdXNlIEN3ZCBxdyhhYnNfcGF0aCBjd2QpOwp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBG
aWxlOjpIb21lRGlyOwp1c2UgUHVibGljYW46OkNvbmZpZ0RhdGE7CnVzZSBFbmNvZGUgcXcoaXNf
dXRmOCBkZWNvZGVfdXRmOCBlbmNvZGVfdXRmOCk7CnVzZSBMaW5ndWE6OkVOOjpGYXRob207Cgoj
YmlubW9kZSBTVERJTiwgIjplbmNvZGluZyhVVEYtOCkiOwojYmlubW9kZSBTVERPVVQsICI6ZW5j
b2RpbmcoVVRGLTgpIjsKCm15ICRWRVJTSU9OICAgICAgICAgICA9ICIkUHVibGljYW46OlZFUlNJ
T04iOwpteSAkTEFOR19QQVRURVJOICAgICAgPSBxfF9fTEFOR19ffDsKbXkgJFdFQl9URU1QTEFU
RV9QQVRIID0gUHVibGljYW46OkNvbmZpZ0RhdGEtPmNvbmZpZygnd2ViJyk7Cm15ICREQVRBX0RJ
UiAgICAgICAgICA9IFB1YmxpY2FuOjpDb25maWdEYXRhLT5jb25maWcoJ2RhdGFkaXInKTsKCiMg
VHJ5IHRvIGNhdGNoIFNSUE1TIGNyZWF0ZWQgdXNpbmcgb3V0ZGF0ZWQgdmVyc2lvbnMgb2YgcHVi
bGljYW4gaW4gYnJldy9rb2ppL21vY2sKaWYgKCAgICggJEVOVntSUE1fQlVJTERfRElSfSApCiAg
ICAmJiAoICRFTlZ7UlBNX0JVSUxEX0RJUn0gbmUgIiIgKQogICAgJiYgKCAkRU5We1JQTV9QQUNL
QUdFX05BTUV9IG5lICJwdWJsaWNhbiIgKQogICAgJiYgKC1mICIvYnVpbGRkaXIvYnVpbGQvU1JQ
TVMvJEVOVntSUE1fUEFDS0FHRV9OQU1FfS0kRU5We1JQTV9QQUNLQUdFX1ZFUlNJT059LSRFTlZ7
UlBNX1BBQ0tBR0VfUkVMRUFTRX0uc3JjLnJwbSIKICAgICkKICAgICkKewoKICAgIG15ICRwa2cK
ICAgICAgICA9IHFxfC9idWlsZGRpci9idWlsZC9TUlBNUy8kRU5We1JQTV9QQUNLQUdFX05BTUV9
LSRFTlZ7UlBNX1BBQ0tBR0VfVkVSU0lPTn0tJEVOVntSUE1fUEFDS0FHRV9SRUxFQVNFfS5zcmMu
cnBtfDsKICAgIG15ICRyZXFfdmVyc2lvbgogICAgICAgID0gcXh8cnBtIC0tcmVxdWlyZXMgLXFw
ICRwa2cgXHwgZ3JlcCAncHVibGljYW4tQVBJJyBcfCBzZWQgLWUgJ3MvXlteMC05XC5dKi8vJ3w7
CgogICAgc3lzdGVtKCJycG0gLVV2aCAkcGtnIik7CiAgICBteSAkc3BlYyA9IHFxfC9idWlsZGRp
ci9idWlsZC9TUEVDUy8kRU5We1JQTV9QQUNLQUdFX05BTUV9LnNwZWN8OwoKICAgIG15ICRkYl9j
b3VudCA9IHF4fGdyZXAgLWMgJ3B1YmxpY2FuIHVwZGF0ZV9kYicgJHNwZWN8OwogICAgbXkgJHBt
X2NvdW50ID0gcXh8Z3JlcCAtYyAndXNlIFB1YmxpY2FuJyAkc3BlY3w7CgogICAgY2hvbXAoJHJl
cV92ZXJzaW9uKTsKICAgIGlmICgoICRkYl9jb3VudCA+IDAgb3IgJHBtX2NvdW50ID4gMCApCiAg
ICAgICAgYW5kICggISRyZXFfdmVyc2lvbgogICAgICAgICAgICB8fCAkcmVxX3ZlcnNpb24gZXEg
IiIKICAgICAgICAgICAgfHwgJHJlcV92ZXJzaW9uICE9ICRQdWJsaWNhbjo6U1BFQ19WRVJTSU9O
ICkKICAgICAgICApCiAgICB7CiAgICAgICAgY3JvYWsoCiAgICAgICAgICAgICJcblxuXG5FUlJP
UjogVGhlIHZlcnNpb24gb2YgcHVibGljYW4gdXNlZCB0byBjcmVhdGUgdGhlIFNSUE0gaXMgbm90
IGNvbXBhdGlibGUgd2l0aCB0aGlzIHZlcnNpb24gb2YgcHVibGljYW4uIFVwZ3JhZGUgb3IgZG93
bmdyYWRlIHB1YmxpY2FuIG9uIHlvdXIgbG9jYWwgbWFjaGluZSB0byBhIHZlcnNpb24gdGhhdCBz
dXBwbGllcyBBUEkgdmVyc2lvbiAkUHVibGljYW46OlNQRUNfVkVSU0lPTiBhbmQgdHJ5IGFnYWlu
LlxuXG5cbiIKICAgICAgICApOwogICAgfQp9CgojIyMgQ29kZSBnb2VzIGhlcmUKbXkgJG1hbiAg
ICAgICAgICA9IDA7Cm15ICRoZWxwICAgICAgICAgPSAwOwpteSAkYWN0aW9uICAgICAgID0gIiI7
Cm15ICRoZWxwX2FjdGlvbnMgPSAwOwpteSAkc2hvd192ZXJzaW9uID0gMDsKbXkgJGJhc2hfY29t
cCAgICA9IHVuZGVmOwoKI0dldG9wdDo6TG9uZzo6Q29uZmlndXJlKCJkZWJ1ZyIpOwoKbXkgJHZl
ciA9ICRWRVJTSU9OOwokdmVyID1+IHMvdi8vZzsKbXkgQHBvZF9wYXRocwogICAgPSAoICcuL3Bv
ZDEnLCBQdWJsaWNhbjo6Q29uZmlnRGF0YS0+Y29uZmlnKCdkb2NkaXInKSAuICIvcHVibGljYW4t
JHZlciIsIFB1YmxpY2FuOjpDb25maWdEYXRhLT5jb25maWcoJ2RvY2RpcicpIC4gIi9wdWJsaWNh
biIgKTsKCiMgR2xvYmFsIG9wdGlvbnMKbXkgJW9wdHMgPSAoCiAgICBoZWxwICAgICAgICAgPT4g
XCRoZWxwLAogICAgbWFuICAgICAgICAgID0+IFwkbWFuLAogICAgdiAgICAgICAgICAgID0+IFwk
c2hvd192ZXJzaW9uLAogICAgaGVscF9hY3Rpb25zID0+IFwkaGVscF9hY3Rpb25zLAogICAgYmFz
aCAgICAgICAgID0+IFwkYmFzaF9jb21wLAopOwoKI0FjdGlvbiBvcHRpb25zCm15ICVvcHRpb25z
ID0gKAogICAgaGVscCAgICAgICAgICAgICAgPT4gbWFrZXRleHQoJ0Rpc3BsYXkgaGVscCBtZXNz
YWdlJyksCiAgICBtYW4gICAgICAgICAgICAgICA9PiBtYWtldGV4dCgnRGlzcGxheSBmdWxsIG1h
biBwYWdlJyksCiAgICB2ICAgICAgICAgICAgICAgICA9PiBtYWtldGV4dCgnRGlzcGxheSB0aGUg
dmVyc2lvbiBvZiBQdWJsaWNhbicpLAogICAgJ2NvbmZpZz1zJyAgICAgICAgPT4gbWFrZXRleHQo
J1VzZSBhIG5vbnN0YW5kYXJkIGNvbmZpZyBmaWxlJyksCiAgICBiaW5hcnkgICAgICAgICAgICA9
PiBtYWtldGV4dCgnQnVpbGQgYmluYXJ5IHJwbSB3aGVuIHJ1bm5pbmcgcGFja2FnZScpLAogICAg
YnJldyAgICAgICAgICAgICAgPT4gbWFrZXRleHQoJ1B1c2ggU1JQTSB0byBicmV3JyksCiAgICBz
Y3JhdGNoICAgICAgICAgICA9PiBtYWtldGV4dCgnVXNlIHNjcmF0Y2ggaW5zdGVhZCBvZiB0YWcg
YnVpbGQnKSwKICAgIHdhaXQgICAgICAgICAgICAgID0+IG1ha2V0ZXh0KCdXYWl0IGZvciBicmV3
IHRvIGZpbmlzaCBidWlsZGluZycpLAogICAgJ2NvbW1vbl9jb25maWc9cycgPT4gbWFrZXRleHQo
J092ZXJyaWRlIHBhdGggdG8gQ29tbW9uX0NvbmZpZyBkaXJlY3RvcnknKSwKICAgICdjb21tb25f
Y29udGVudD1zJyA9PgogICAgICAgIG1ha2V0ZXh0KCdPdmVycmlkZSBwYXRoIHRvIENvbW1vbl9D
b250ZW50IGRpcmVjdG9yeScpLAogICAgJ2Zvcm1hdHM9cycgPT4gbWFrZXRleHQoCiAgICAgICAg
J0NvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZvcm1hdHMsIGZvciBleGFtcGxlOiBodG1sLHBkZixo
dG1sLXNpbmdsZSxodG1sLWRlc2t0b3AsdHh0LGVwdWInCiAgICApLAogICAgJ2xhbmdzPXMnID0+
IG1ha2V0ZXh0KAogICAgICAgICdDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMsIGZv
ciBleGFtcGxlOiBlbi1VUyxkZS1ERSxhbGwnKSwKICAgICdlbWJlZHRvYycgPT4KICAgICAgICBt
YWtldGV4dCgnRW1iZWQgdGhlIHdlYiBzaXRlIFRPQyBvYmplY3QgaW4gdGhlIGdlbmVyYXRlZCBI
VE1MJyksCiAgICAnbmFtZT1zJyAgICA9PiBtYWtldGV4dCgnVGhlIG5hbWUgb2YgdGhlIGJvb2ss
IGFydGljbGUsIHNldCwgb3IgYnJhbmQnKSwKICAgICd2ZXJzaW9uPXMnID0+IG1ha2V0ZXh0KCdU
aGUgdmVyc2lvbiBvZiB0aGUgcHJvZHVjdCcpLAogICAgJ2VkaXRpb249cycgPT4gbWFrZXRleHQo
J1RoZSBlZGl0aW9uIG9mIHRoZSBib29rLCBhcnRpY2xlLCBvciBzZXQnKSwKICAgICdwcm9kdWN0
PXMnID0+IG1ha2V0ZXh0KCdUaGUgbmFtZSBvZiB0aGUgcHJvZHVjdCcpLAogICAgJ2JyYW5kPXMn
ICAgPT4gbWFrZXRleHQoJ1RoZSBicmFuZCB0byB1c2UnKSwKICAgICdsYW5nPXMnICAgID0+IG1h
a2V0ZXh0KCdUaGUgbGFuZ3VhZ2UgdGhlIFhNTCB3aWxsIGJlIHdyaXR0ZW4gaW4nKSwKICAgICd0
eXBlPXMnICAgID0+IG1ha2V0ZXh0KCdUaGUgdHlwZSAoYm9vaywgYXJ0aWNsZSwgb3Igc2V0KScp
LAogICAgcHVibGlzaCAgICAgPT4gbWFrZXRleHQoJ1NldCB1cCBidWlsdCBjb250ZW50IGZvciBw
dWJsaXNoaW5nJyksCiAgICBkZXNrdG9wICAgICA9PiBtYWtldGV4dCgnQ3JlYXRlIGRlc2t0b3Ag
aW5zdGVhZCBvZiB3ZWIgcGFja2FnZScpLAogICAgc2hvcnRfc2lnaHRlZCA9PgogICAgICAgIG1h
a2V0ZXh0KCdDcmVhdGUgcGFja2FnZSB3aXRob3V0IHVzaW5nIHZlcnNpb24gaW4gcGFja2FnZSBu
YW1lJyksCiAgICAncGF0aD1zJyAgICAgICAgPT4gbWFrZXRleHQoJy9wYXRoL3RvL2luc3RhbGwv
dG8nKSwKICAgIGRpc3RyaWJ1dGVkX3NldCA9PiBtYWtldGV4dCgKICAgICAgICBxcXxUaGlzIGZs
YWcgdGVsbHMgcHVibGljYW4gdGhlIGRhdGEgYmVpbmcgcHJvY2Vzc2VkIGlzIGEgZGlzdHJpYnV0
ZWQgc2V0LiBOb3RlOiBkbyBub3QgdXNlIGRpc3RyaWJ1dGVkX3NldCBvbiB0aGUgY29tbWFuZCBs
aW5lLiBQdWJsaWNhbiB1c2VzIHRoaXMgZmxhZyB3aGVuIGNhbGxpbmcgaXRzZWxmIHRvIHByb2Nl
c3MgZGlzdHJpYnV0ZWQgc2V0cy4gVGhpcyBpcyB0aGUgb25seSBzYWZlIHdheSB0aGlzIGZsYWcg
Y2FuIGJlIHVzZWQufAogICAgKSwKICAgIG5vY29sb3VycyA9PiBtYWtldGV4dCgnRGlzYWJsZSBB
TlNJIGNvbG91cmlzYXRpb24gb2YgbG9nZ2luZy4nKSwKICAgIHF1aWV0ICAgICA9PiBtYWtldGV4
dCgnRGlzYWJsZSBhbGwgbG9nZ2luZy4nKSwKIyMgV2ViU2l0ZSBvcHRpb25zCiAgICAnZGJfZmls
ZT1zJyAgID0+IG1ha2V0ZXh0KCdPdmVycmlkZSBkZWZhdWx0IGRhdGFiYXNlIGZpbGUuJyksCiAg
ICAndG9jX3BhdGg9cycgID0+IG1ha2V0ZXh0KCdPdmVycmlkZSB0aGUgZGVmYXVsdCBUT0MgcGF0
aC4nKSwKICAgICd0bXBsX3BhdGg9cycgPT4gbWFrZXRleHQoJ092ZXJyaWRlIHRoZSBkZWZhdWx0
IHRlbXBsYXRlIHBhdGguJyksCiAgICAnc2l0ZV9jb25maWc9cycgPT4KICAgICAgICBtYWtldGV4
dCgnV2ViU2l0ZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gdXNlIG9yIGNyZWF0ZS4nKSwKICAgIG5v
dmFsaWQgICAgICAgICAgID0+IG1ha2V0ZXh0KCdEbyBub3QgcnVuIHRoZSBEVEQgdmFsaWRhdGlv
bicpLAogICAgYWRkICAgICAgICAgICAgICAgPT4gbWFrZXRleHQoJ0FkZCBhIGRhdGFiYXNlIGVu
dHJ5JyksCiAgICBkZWwgICAgICAgICAgICAgICA9PiBtYWtldGV4dCgnRGVsZXRlIGEgZGF0YWJh
c2UgZW50cnknKSwKICAgICdzdWJ0aXRsZT1zJyAgICAgID0+IG1ha2V0ZXh0KCdTdWIgdGl0bGUg
Zm9yIGEgYm9vaycpLAogICAgJ2Fic3RyYWN0PXMnICAgICAgPT4gbWFrZXRleHQoJ0Fic3RyYWN0
IGZvciBhIGJvb2snKSwKICAgICdwcm9kdWN0X2xhYmVsPXMnID0+IG1ha2V0ZXh0KCdwcm9kdWN0
IGxhYmVsIGZvciBhIGJvb2snKSwKICAgICd2ZXJzaW9uX2xhYmVsPXMnID0+IG1ha2V0ZXh0KCd2
ZXJzaW9uIGxhYmVsIGZvciBhIGJvb2snKSwKICAgICduYW1lX2xhYmVsPXMnICAgID0+IG1ha2V0
ZXh0KCduYW1lIGxhYmVsIGZvciBhIGJvb2snKSwKIyMgUmV2aXNpb25zCiAgICAncmV2bnVtYmVy
PXMnID0+IG1ha2V0ZXh0KCdSZXZpc2lvbiBudW1iZXIgdG8gdXNlIGZvciBhIHJldmlzaW9uLicp
LAogICAgJ2RhdGU9cycgICAgICA9PiBtYWtldGV4dCgnRGF0ZSB0byB1c2UgZm9yIGEgcmV2aXNp
b24uJyksCiAgICAnbWVtYmVyPXNAJyAgID0+IG1ha2V0ZXh0KAogICAgICAgICdBbiBlbnRyeSB0
byBiZSBhZGRlZCB0byB0aGUgcmV2aXNpb24uIENhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGlt
ZXMuJwogICAgKSwKICAgICdmaXJzdG5hbWU9cycgID0+IG1ha2V0ZXh0KCdmaXJzdG5hbWUgdG8g
dXNlIGZvciBhIHJldmlzaW9uLicpLAogICAgJ3N1cm5hbWU9cycgICAgPT4gbWFrZXRleHQoJ3N1
cm5hbWUgdG8gdXNlIGZvciBhIHJldmlzaW9uLicpLAogICAgJ2VtYWlsPXMnICAgICAgPT4gbWFr
ZXRleHQoJ2VtYWlsIHRvIHVzZSBmb3IgYSByZXZpc2lvbi4nKSwKICAgIG1zZ21lcmdlICAgICAg
ID0+IG1ha2V0ZXh0KHF8VXNlIGdldHRleHQncyBtc2dtZXJnZSBmb3IgUE9UL1BPIG1lcmdpbmcu
fCksCiAgICB3ZWIgICAgICAgICAgICA9PiBtYWtldGV4dChxfEluc3RhbGwgdGhlIHdlYiBjb250
ZW50IGZvciBhIGJyYW5kLnwpLAogICAgJ3NyY19kaXI9cycgICAgPT4gbWFrZXRleHQocXxEaXJl
Y3RvcnkgdG8gc291cmNlIHB1YmxpY2FuIGZpbGVzIGZyb20ufCksCiAgICAnYnJhbmRfZGlyPXMn
ICA9PiBtYWtldGV4dChxfERpcmVjdG9yeSB0byBzb3VyY2UgYnJhbmQgZmlsZXMgZnJvbS58KSwK
ICAgICdzb3J0X29yZGVyPXMnID0+IG1ha2V0ZXh0KCdPcmRlciB0byBzb3J0IGEgYm9vaycpLAog
ICAgJ3BkZnRvb2w9cycgICAgPT4gbWFrZXRleHQoCiAgICAgICAgJ092ZXJyaWRlIHRoZSB0b29s
IHRvIHVzZSB3aGVuIGNyZWF0aW5nIFBERnMuIFZhbGlkIG9wdGlvbnMgYXJlIHdraHRtbHRvcGRm
IGFuZCBmb3AuJwogICAgKSwKICAgICdwdWJfZGlyPXMnID0+CiAgICAgICAgbWFrZXRleHQocXxE
aXJlY3RvcnkgdG8gcHVibGlzaCBmaWxlcyB0by4gRGVmYXVsdHMgdG8gcHVibGlzaC58KSwKICAg
ICdkdGR2ZXI9cycgPT4gbWFrZXRleHQoJ1RoZSB2ZXJzaW9uIG9mIHRoZSBEb2NCb29rIERURCB0
byB1c2UnKSwKICAgICdib29rX3ZlcnNpb249cycgPT4KICAgICAgICBtYWtldGV4dCgnVGhlIHZl
cnNpb24gbnVtYmVyIG9mIHRoZSBib29rIGJlaW5nIGluc3RhbGxlZC4nKSwKICAgICdib29rX3Ny
Y19sYW5nPXMnID0+CiAgICAgICAgbWFrZXRleHQoJ1RoZSBsYW5ndWFnZSB0aGlzIHRyYW5zbGF0
aW9uIGlzIGJhc2VkIG9uLicpLAogICAgJ29sZF9zaXRlX2NvbmZpZz1zJyA9PiBtYWtldGV4dCgK
ICAgICAgICAnV2ViU2l0ZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gdXNlIHdoZW4gY29weWluZyBj
b250ZW50IGJldHdlZW4gc2l0ZXMuJwogICAgKSwKICAgICdwcmV2aW91cycgPT4gbWFrZXRleHQo
CiAgICAgICAgJ0tlZXAgcHJldmlvdXMgbXNnaWQgd2hlbiBmdXp6eSBtYXRjaGVzIGFyZSBkZXRl
Y3RlZCBpbiBQTyB1cGRhdGVzLicpLAogICAgc2hvd2Z1enp5ICAgICA9PiBtYWtldGV4dCgnU2hv
dyBmdXp6eSB0cmFuc2xhdGlvbiBlbnRyaWVzIGluIG91dHB1dC4gRGVmYXVsdHMgb2ZmLicpLAog
ICAgJ2FsbG93X25ldHdvcmsnID0+IG1ha2V0ZXh0KHF8QWxsb3cgdGhlIFhNTCBhbmQgWFNMVCBw
cm9jZXNzaW5nIHRvIGFjY2VzcyB0aGUgbmV0d29yay4gRGVmYXVsdHMgb2ZmLnwpLAogICAgbm9f
Y2xlYW4gPT4gbWFrZXRleHQocXxEbyBub3QgdXNlIHRoZSBYTUwgY2xlYW5lciwgdXNlIHRoZSBY
TUwgYXMgcHJvdmlkZWQuIFdBUk5JTkc6IFdpbGwgYmUgaWdub3JlZCBmb3IgdHJhbnNsYXRpb25z
IXwpLAopOwoKIyBPcHRpb25zIGFsbCBhY3Rpb25zIHVzZQpteSBAdXRpbGl0eV9vcHRzID0gKAog
ICAgJ2hlbHAnLCAgICAgICAgICAgICdjb25maWc9cycsCiAgICAnY29tbW9uX2NvbmZpZz1zJywg
J2NvbW1vbl9jb250ZW50PXMnLAogICAgJ25vY29sb3VycycsICAgICAgICdxdWlldCcsCiAgICAn
YnJhbmRfZGlyPXMnLCAnYWxsb3dfbmV0d29yaycKKTsKCiMgQWN0aW9ucwpteSAlYWN0aW9ucyA9
ICgKICAgICdidWlsZCcgPT4gewogICAgICAgICdicmllZicgPT4gbWFrZXRleHQoCiAgICAgICAg
ICAgICdUcmFuc2Zvcm0gWE1MIHRvIG90aGVyIGZvcm1hdHMgKHBkZiwgaHRtbCwgaHRtbC1zaW5n
bGUsIGRydXBhbC1ib29rLCBldGMpJwogICAgICAgICksCiAgICAgICAgJ29wdGlvbnMnID0+IFsK
ICAgICAgICAgICAgJ2Zvcm1hdHMnLCAgICAgICAgICdsYW5ncycsICAgJ3B1Ymxpc2gnLCAnZW1i
ZWR0b2MnLAogICAgICAgICAgICAnZGlzdHJpYnV0ZWRfc2V0JywgJ25vdmFsaWQnLCAnc3JjX2Rp
cicsICdwZGZ0b29sJywKICAgICAgICAgICAgJ3B1Yl9kaXInLCAnc2hvd2Z1enp5JywgJ25vX2Ns
ZWFuJwogICAgICAgIF0sCiAgICB9LAogICAgJ2NsZWFuJyA9PiB7CiAgICAgICAgJ2JyaWVmJyAg
ID0+IG1ha2V0ZXh0KCdSZW1vdmUgYWxsIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMn
KSwKICAgICAgICAnb3B0aW9ucycgPT4gWydwdWJfZGlyJ10sCiAgICB9LAoKICAgICdjbGVhbl9z
ZXQnID0+IHsKICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRleHQoJ1JlbW92ZSBsb2NhbCBjb3Bp
ZXMgb2YgcmVtb3RlIHNldCBib29rcycpLAogICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0s
CgogICAgJ2NsZWFuX2lkcycgPT4gewogICAgICAgICdicmllZicgICA9PiBtYWtldGV4dCgnUnVu
IGNsZWFuIGlkcyBmb3Igc291cmNlIFhNTCcpLAogICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAg
IH0sCiAgICAncHJpbnRfdHJlZScgPT4gewogICAgICAgICdicmllZicgICA9PiBtYWtldGV4dCgn
UHJpbnQgYSB0cmVlIG9mIHRoZSB4aTppbmNsdWRlcycpLAogICAgICAgICdvcHRpb25zJyA9PiBb
XSwKICAgIH0sCiAgICAncHJpbnRfYmFubmVkJyA9PiB7CiAgICAgICAgJ2JyaWVmJyAgID0+IG1h
a2V0ZXh0KCdQcmludCBhIGxpc3Qgb2YgYmFubmVkIERvY0Jvb2sgdGFncycpLAogICAgICAgICdv
cHRpb25zJyA9PiBbXSwKICAgIH0sCiAgICAncHJpbnRfa25vd24nID0+IHsKICAgICAgICAnYnJp
ZWYnICAgPT4gbWFrZXRleHQoIlByaW50IGEgbGlzdCBvZiBRQSdkIERvY0Jvb2sgdGFncyIpLAog
ICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0sCiAgICAncHJpbnRfdW51c2VkJyA9PiB7CiAg
ICAgICAgJ2JyaWVmJyAgID0+IG1ha2V0ZXh0KCdQcmludCBhIGxpc3Qgb2YgdW51c2VkIFhNTCBm
aWxlcycpLAogICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0sCiAgICAncHJpbnRfdW51c2Vk
X2ltYWdlcycgPT4gewogICAgICAgICdicmllZicgICA9PiBtYWtldGV4dCgnUHJpbnQgYSBsaXN0
IG9mIHVudXNlZCBJbWFnZSBmaWxlcycpLAogICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0s
CiAgICAnY3JlYXRlJyA9PiB7CiAgICAgICAgJ2JyaWVmJyAgID0+IG1ha2V0ZXh0KCdDcmVhdGUg
YSBuZXcgYm9vaywgc2V0LCBvciBhcnRpY2xlJyksCiAgICAgICAgJ29wdGlvbnMnID0+IFsKICAg
ICAgICAgICAgJ25hbWUnLCAgJ3ZlcnNpb24nLCAnZWRpdGlvbicsICdwcm9kdWN0JywKICAgICAg
ICAgICAgJ2JyYW5kJywgJ2xhbmcnLCAgICAndHlwZScsICAgICdkdGR2ZXInCiAgICAgICAgXSwK
ICAgIH0sCiAgICAnY3JlYXRlX2JyYW5kJyA9PiB7CiAgICAgICAgJ2JyaWVmJyAgID0+IG1ha2V0
ZXh0KCdDcmVhdGUgYSBuZXcgYnJhbmQnKSwKICAgICAgICAnb3B0aW9ucycgPT4gWyAnbmFtZScs
ICdsYW5nJyBdLAogICAgfSwKICAgICdwYWNrYWdlJyA9PiB7CiAgICAgICAgJ2JyaWVmJyAgID0+
IG1ha2V0ZXh0KCdQYWNrYWdlIGEgbGFuZ3VhZ2UgZm9yIHNoaXBwaW5nJyksCiAgICAgICAgJ29w
dGlvbnMnID0+IFsKICAgICAgICAgICAgJ2xhbmcnLCAgICAgICAgICAnZGVza3RvcCcsICdicmV3
JywgJ3NjcmF0Y2gnLAogICAgICAgICAgICAnc2hvcnRfc2lnaHRlZCcsICdiaW5hcnknLCAgJ3dh
aXQnLCAncHViX2RpcicKICAgICAgICBdLAogICAgfSwKICAgICd1cGRhdGVfcG90JyA9PiB7CiAg
ICAgICAgJ2JyaWVmJyAgID0+IG1ha2V0ZXh0KCdVcGRhdGUgdGhlIFBPVCBmaWxlcycpLAogICAg
ICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0sCiAgICAndXBkYXRlX3BvJyA9PiB7CiAgICAgICAg
J2JyaWVmJyAgID0+IG1ha2V0ZXh0KCdVcGRhdGUgdGhlIFBPIGZpbGVzJyksCiAgICAgICAgJ29w
dGlvbnMnID0+IFsKICAgICAgICAgICAgJ2xhbmdzJywgJ21zZ21lcmdlJywgJ2ZpcnN0bmFtZScs
ICdzdXJuYW1lJywKICAgICAgICAgICAgJ2VtYWlsJywgJ3ByZXZpb3VzJwogICAgICAgIF0sCiAg
ICB9LAogICAgJ2luc3RhbGxfYnJhbmQnID0+IHsKICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRl
eHQoJ0luc3RhbGwgYSBicmFuZCB0byB0aGUgc3VwcGxpZWQgbG9jYXRpb24nKSwKICAgICAgICAn
b3B0aW9ucycgPT4gWyAncGF0aCcsICd3ZWInLCAncHViX2RpcicgXSwKICAgIH0sCiAgICAnY29w
eV93ZWJfYnJhbmQnID0+IHsKICAgICAgICAnYnJpZWYnID0+CiAgICAgICAgICAgIG1ha2V0ZXh0
KCJDb3B5IGEgYnJhbmQncyBpbnN0YWxsZWQgd2ViIGNvbnRlbnQgdG8gYW5vdGhlciBzaXRlIiks
CiAgICAgICAgJ29wdGlvbnMnID0+IFsgJ2JyYW5kJywgJ3NpdGVfY29uZmlnJywgJ29sZF9zaXRl
X2NvbmZpZycgXSwKICAgIH0sCiAgICAnaGVscF9jb25maWcnID0+IHsKICAgICAgICAnYnJpZWYn
ICAgPT4gbWFrZXRleHQoJ0Rpc3BsYXkgaGVscCB0ZXh0IGZvciB0aGUgY29uZmlndXJhdGlvbiBm
aWxlJyksCiAgICAgICAgJ29wdGlvbnMnID0+IFtdLAogICAgfSwKICAgICdsYW5nX3N0YXRzJyA9
PiB7CiAgICAgICAgJ2JyaWVmJyAgID0+IG1ha2V0ZXh0KCdyZXBvcnQgUE8gc3RhdGlzdGljcycp
LAogICAgICAgICdvcHRpb25zJyA9PiBbJ2xhbmcnXSwKICAgIH0sCiMjIFdlYlNpdGUgYWN0aW9u
cwogICAgJ2NyZWF0ZV9zaXRlJyA9PiB7CiAgICAgICAgJ2JyaWVmJyA9PiBtYWtldGV4dCgnQ3Jl
YXRlIGEgbmV3IFdlYlNpdGUgaW4gdGhlIHN1cHBsaWVkIGxvY2F0aW9uLicpLAogICAgICAgICdv
cHRpb25zJyA9PgogICAgICAgICAgICBbICdzaXRlX2NvbmZpZycsICdkYl9maWxlJywgJ3RvY19w
YXRoJywgJ3RtcGxfcGF0aCcsICdsYW5nJyBdLAogICAgfSwKICAgICd1cGRhdGVfc2l0ZScgPT4g
ewogICAgICAgICdicmllZicgICA9PiBtYWtldGV4dCgnVXBkYXRlIGFuIGV4aXN0aW5nIHNpdGVz
IHRlbXBsYXRlcy4nKSwKICAgICAgICAnb3B0aW9ucycgPT4gWydzaXRlX2NvbmZpZyddLAogICAg
fSwKICAgICdpbnN0YWxsX2Jvb2snID0+IHsKICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRleHQo
J0luc3RhbGwgYSBib29rIGluIHRvIGEgV2ViU2l0ZS4nKSwKICAgICAgICAnb3B0aW9ucycgPT4g
WyAnc2l0ZV9jb25maWcnLCAnbGFuZycgXSwKICAgIH0sCiAgICAncmVtb3ZlX2Jvb2snID0+IHsK
ICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRleHQoJ1JlbW92ZSBhIGJvb2sgZnJvbSBhIFdlYlNp
dGUuJyksCiAgICAgICAgJ29wdGlvbnMnID0+IFsgJ3NpdGVfY29uZmlnJywgJ2xhbmcnIF0sCiAg
ICB9LAogICAgJ3NpdGVfc3RhdHMnID0+IHsKICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRleHQo
J1JlcG9ydCBvbiB0aGUgY29udGVudHMgb2YgYSBXZWJTaXRlJyksCiAgICAgICAgJ29wdGlvbnMn
ID0+IFsnc2l0ZV9jb25maWcnXSwKICAgIH0sCiAgICAndXBkYXRlX2RiJyA9PiB7CiAgICAgICAg
J2JyaWVmJyA9PiBtYWtldGV4dCgKICAgICAgICAgICAgJ0FkZCBvciByZW1vdmUgZGF0YWJhc2Ug
ZW50cmllcy4gVXNlZCBmb3IgcHJvY2Vzc2luZyBwcmUtYnVpbGQgYm9va3MsIHN1Y2ggYXMgd2hl
biBidWlsZGluZyBwYWNrYWdlcy4nCiAgICAgICAgKSwKICAgICAgICAnb3B0aW9ucycgPT4gWwog
ICAgICAgICAgICAnc2l0ZV9jb25maWcnLCAgICdhZGQnLAogICAgICAgICAgICAnZGVsJywgICAg
ICAgICAgICdsYW5nJywKICAgICAgICAgICAgJ3Byb2R1Y3QnLCAgICAgICAndmVyc2lvbicsCiAg
ICAgICAgICAgICduYW1lJywgICAgICAgICAgJ2Zvcm1hdHMnLAogICAgICAgICAgICAnc3VidGl0
bGUnLCAgICAgICdhYnN0cmFjdCcsCiAgICAgICAgICAgICdwcm9kdWN0X2xhYmVsJywgJ3ZlcnNp
b25fbGFiZWwnLAogICAgICAgICAgICAnbmFtZV9sYWJlbCcsICAgICdzb3J0X29yZGVyJywKICAg
ICAgICAgICAgJ2Jvb2tfdmVyc2lvbicsICAnYm9va19zcmNfbGFuZycKICAgICAgICBdLAogICAg
fSwKICAgICdhZGRfcmV2aXNpb24nID0+IHsKICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRleHQo
J0FkZCBhbiBlbnRyeSB0byB0aGUgcmV2aXNpb24gaGlzdG9yeScpLAogICAgICAgICdvcHRpb25z
JyA9PiBbCiAgICAgICAgICAgICdsYW5nJywgICAgICAncmV2bnVtYmVyJywgJ2RhdGUnLCAnbWVt
YmVyJywKICAgICAgICAgICAgJ2ZpcnN0bmFtZScsICdzdXJuYW1lJywgICAnZW1haWwnCiAgICAg
ICAgXSwKICAgIH0sCiAgICAncmVuYW1lJyA9PiB7CiAgICAgICAgJ2JyaWVmJyAgID0+IG1ha2V0
ZXh0KCdSZW5hbWUgYSBwdWJsaWNhbiBib29rJyksCiAgICAgICAgJ29wdGlvbnMnID0+IFsgJ25h
bWUnLCAncHJvZHVjdCcsICd2ZXJzaW9uJyBdLAogICAgfSwKICAgICdtaWdyYXRlX3NpdGUnID0+
IHsKICAgICAgICAnYnJpZWYnID0+IG1ha2V0ZXh0KAogICAgICAgICAgICAnTWlncmF0ZSBhIHdl
YnNpdGUgRGF0YUJhc2UgZnJvbSBQdWJsaWNhbiA8IDMgdG8gUHVibGljYW4gMy4nKSwKICAgICAg
ICAnb3B0aW9ucycgPT4gWydzaXRlX2NvbmZpZyddLAogICAgfSwKICAgICd0cmFuc19kcm9wJyA9
PiB7CiAgICAgICAgJ2JyaWVmJyA9PgogICAgICAgICAgICBtYWtldGV4dCgnU25hcHNob3QgdGhl
IHNvdXJjZSBsYW5ndWFnZSBmb3IgdXNlIGluIHRyYW5zbGF0aW9uLicpLAogICAgICAgICdvcHRp
b25zJyA9PiBbXSwKICAgIH0sCiAgICAncmVwb3J0JyA9PiB7CiAgICAgICAgJ2JyaWVmJyA9Pgog
ICAgICAgICAgICBtYWtldGV4dCgnUHJpbnQgYSByZWFkYWJpbGl0eSByZXBvcnQgZm9yIHRoZSBz
b3VyY2UgdGV4dC4nKSwKICAgICAgICAnb3B0aW9ucycgPT4gW10sCiAgICB9LAogICAgJ3p0X3B1
bGwnID0+IHsKICAgICAgICAnYnJpZWYnICAgPT4gbWFrZXRleHQoJ1B1bGwgdHJhbnNsYXRpb25z
IGZyb20gWmFuYXRhLicpLAogICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0sCiAgICAnenRf
cHVzaCcgPT4gewogICAgICAgICdicmllZicgICA9PiBtYWtldGV4dCgnUHVzaCB0cmFuc2xhdGlv
bnMgdG8gWmFuYXRhLicpLAogICAgICAgICdvcHRpb25zJyA9PiBbXSwKICAgIH0sCik7CgojIEdy
YWIgdG8gbGltaXQgb3B0aW9ucyB0byB0aGUgdmFsaWQgb25lcyBmb3IgdGhpcyBhY3Rpb24KIyBU
T0RPIHNob3VsZCB3ZSBjcm9hayBvbiBtb3JlIHRoYW4gb25lIGFjdGlvbj8gSGFuZGxlIG1vcmUg
dGhhbiBvbmU/CiRhY3Rpb24gPSAoICRBUkdWWzBdIHx8ICIiICk7CgojIEdldG9wdDogc3RhbmRh
cmQgKyB0aGUgb3B0aW9ucyBmb3IgdGhlIHN1cHBsaWVkIGFjdGlvbgpteSBAb3B0bnMgPSAoIGtl
eXMoJW9wdHMpLCBAdXRpbGl0eV9vcHRzICk7CgppZiAoIGRlZmluZWQgJGFjdGlvbnN7JGFjdGlv
bn0gKSB7CiAgICBmb3JlYWNoIG15ICRvcHQgKCBAeyAkYWN0aW9uc3skYWN0aW9ufS0+e29wdGlv
bnN9IH0gKSB7CiAgICAgICAgaWYgKCAkb3B0aW9uc3skb3B0fSApIHsKICAgICAgICAgICAgcHVz
aCggQG9wdG5zLCAkb3B0ICk7CiAgICAgICAgfQoKICAgICAgICAjIG1hdGNoIG9wdGlvbnMgdGhh
dCB0YWtlIGEgU3RyaW5nCiAgICAgICAgIyB0aGlzIHdpbGwgbmVlZCB0byBiZSBleGFwbmRlZCBp
ZiBvdGhlciB0eXBlcyBhcmUgdXNlZAogICAgICAgIGVsc2lmICggJG9wdGlvbnN7IiRvcHQ9cyJ9
ICkgewogICAgICAgICAgICBwdXNoKCBAb3B0bnMsICIkb3B0PXMiICk7CiAgICAgICAgfQogICAg
ICAgIGVsc2lmICggJG9wdGlvbnN7IiRvcHQ9c0AifSApIHsKICAgICAgICAgICAgcHVzaCggQG9w
dG5zLCAiJG9wdD1zQCIgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAj
IFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAgICBjcm9haygKICAgICAgICAgICAg
ICAgIG1ha2V0ZXh0KAogICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIG9wdGlvbiAnW18xXScg
aW4gXCRhY3Rpb25ze1wkYWN0aW9ufS0+e29wdGlvbnN9IiwKICAgICAgICAgICAgICAgICAgICAk
b3B0CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CgoJ
dXNlIERhdGE6OkR1bXBlcjsKCSREYXRhOjpEdW1wZXI6OlNvcnRrZXlzPTE7CgpHZXRPcHRpb25z
KCBcJW9wdHMsIEBvcHRucywgKQogICAgb3IgcG9kMnVzYWdlKAogICAgLXZlcmJvc2UgID0+IDEs
CiAgICAtZXhpdCAgICAgPT4gMSwKICAgIC1pbnB1dCAgICA9PiAncHVibGljYW4nLAogICAgLXBh
dGhsaXN0ID0+IFxAcG9kX3BhdGhzCiAgICApOwoKICAgICN3YXJuIER1bXBlciBcJUlOQzsKCXdh
cm4gRHVtcGVyIFwlb3B0cywgXEBvcHRuczsKCiMgY2F0Y2ggbXVsdGlwbGUgYWN0aW9ucwppZiAo
IHNjYWxhciBAQVJHViA+IDEgKSB7CiAgICBjcm9haygKICAgICAgICBtYWtldGV4dCgKICAgICAg
ICAgICAgInB1YmxpY2FuIG9ubHkgYWNjZXB0cyBvbmUgYWN0aW9uIHlvdSBzdXBwbGllZCAnW18x
XSc6IFtfMl1cbiIsCiAgICAgICAgICAgIHNjYWxhciBAQVJHViwgam9pbiggJyAmICcsIEBBUkdW
ICkKICAgICAgICApCiAgICApOwp9CgojIEdldG9wdCB3aWxsIHJlbW92ZSB0aGUgb3B0aW9ucyBs
ZWF2aW5nIG9ubHkgdGhlIGFjdGlvbgokYWN0aW9uID0gKCAkQVJHVlswXSB8fCAiIiApOwoKaWYg
KCRzaG93X3ZlcnNpb24pIHsKICAgIHByaW50KCJ2ZXJzaW9uPSRWRVJTSU9OXG4iKTsKICAgIGV4
aXQoMCkgaWYgKCAkYWN0aW9uIGVxICIiICk7Cn0KCiMgVW5kb2N1bWVudGVkIHdheSBvZiBnZXR0
aW5nIGhlbHAgZm9yIGFsbCBhY3Rpb25zCmlmICggJGhlbHAgYW5kICggJGFjdGlvbiBlcSAiYWxs
IiApICkgewogICAgZm9yZWFjaCBteSAkY21kICggc29ydCgga2V5cyglYWN0aW9ucykgKSApIHsK
ICAgICAgICBfaGVscF9hY3Rpb24oJGNtZCk7CiAgICAgICAgcHJpbnQoIlxuIik7CiAgICB9CiAg
ICBleGl0KDApOwp9CgpzdWIgX2hlbHBfYWN0aW9ucyB7CiAgICBwcmludCggIlxuIiwgbWFrZXRl
eHQoIlZhbGlkIGFjdGlvbnMgYXJlOiIpLCAiXG5cbiIgKTsKICAgIGZvcmVhY2ggbXkgJGNtZCAo
IHNvcnQoIGtleXMoJWFjdGlvbnMpICkgKSB7CiAgICAgICAgcHJpbnRmKCAiICAgICUtMTJzICAl
c1xuIiwgJGNtZCwgJGFjdGlvbnN7JGNtZH0tPnticmllZn0gKTsKICAgIH0KICAgIHByaW50KCJc
blxuIik7CiAgICBwcmludCgKICAgICAgICBtYWtldGV4dCgKICAgICAgICAgICAgIlJ1bjogJ1tf
MV0gPGFjdGlvbj4gLS1oZWxwJyBmb3IgZGV0YWlscyBvbiBhY3Rpb24gdXNhZ2UiLCAkMAogICAg
ICAgICksCiAgICAgICAgIlxuXG4iCiAgICApOwoKICAgIHJldHVybjsKfQoKaWYgKCRiYXNoX2Nv
bXApIHsKICAgIF9iYXNoX2NvbXBsZXRpb24oKTsKICAgIGV4aXQoMCk7Cn0KCiMgVW5kb2N1bWVu
dGVkIHdheSBvZiBnZXR0aW5nIGhlbHAgZm9yIGFsbCBhY3Rpb25zIGFzIERvY0Jvb2sgNS4wIFhN
TAojIFRPRE8gc2hvdWxkIHNwaXQgb3V0IHRoZSBkb2NzIGluIGV2ZXJ5IGxhbmd1YWdlIC4uLgpp
ZiAoICRoZWxwIGFuZCAoICRhY3Rpb24gZXEgImRvY2Jvb2siICkgKSB7CgogICAgbXkgJHhtbF9k
b2MgPSBYTUw6OkVsZW1lbnQtPm5ld19mcm9tX2xvbCgKICAgICAgICBbICdhcHBlbmRpeCcsIHtp
ZD0+J0NvbW1hbmRfc3VtbWFyeSd9LCBbICdpbmZvJywgWyAndGl0bGUnLCBtYWtldGV4dCgnQ29t
bWFuZCBzdW1tYXJ5JykgXSwgXSBdICk7CgogICAgbXkgJHNlY3Rpb24gPSBYTUw6OkVsZW1lbnQt
Pm5ld19mcm9tX2xvbCgKICAgICAgICBbICAgJ3NlY3Rpb24nLAogICAgICAgICAgICB7IGlkID0+
ICdBdXRvX0RvY3MtQ29tbWFuZF9vcHRpb25zJyB9LAogICAgICAgICAgICBbICdpbmZvJywgWyAn
dGl0bGUnLCBtYWtldGV4dCgnQ29tbWFuZCBvcHRpb25zJykgXSwgXSwKICAgICAgICBdCiAgICAp
OwoKICAgIG15ICR2YXJfbGlzdCA9IFhNTDo6RWxlbWVudC0+bmV3X2Zyb21fbG9sKAogICAgICAg
IFsgICAndmFyaWFibGVsaXN0JyBdCiAgICApOwoKICAgICRzZWN0aW9uLT5wdXNoX2NvbnRlbnQo
JHZhcl9saXN0KTsKICAgICR4bWxfZG9jLT5wdXNoX2NvbnRlbnQoJHNlY3Rpb24pOwoKICAgIGZv
cmVhY2ggbXkgJG9wdGlvbiAoIHNvcnQoQHV0aWxpdHlfb3B0cykgKSB7CiAgICAgICAgbXkgJGVu
dHJ5ID0gWE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2woCiAgICAgICAgICAgIFsgICAndmFybGlz
dGVudHJ5JywKICAgICAgICAgICAgICAgIFsgJ3Rlcm0nLCAiLS0kb3B0aW9uIiBdLAogICAgICAg
ICAgICAgICAgWyAnbGlzdGl0ZW0nLCBbICdwYXJhJywgJG9wdGlvbnN7JG9wdGlvbn0gXSBdCiAg
ICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAkdmFyX2xpc3QtPnB1c2hfY29udGVudCgk
ZW50cnkpOwogICAgfQoKICAgICRzZWN0aW9uID0gWE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2wo
CiAgICAgICAgWyAgICdzZWN0aW9uJywKICAgICAgICAgICAgeyBpZCA9PiAnQXV0b19Eb2NzLUNv
bW1hbmRfYWN0aW9ucycgfSwKICAgICAgICAgICAgWyAnaW5mbycsIFsgJ3RpdGxlJywgbWFrZXRl
eHQoJ0NvbW1hbmQgYWN0aW9ucycpIF0sIF0sCiAgICAgICAgXQogICAgKTsKCiAgICAkdmFyX2xp
c3QgPSBYTUw6OkVsZW1lbnQtPm5ld19mcm9tX2xvbCgKICAgICAgICBbICAgJ3ZhcmlhYmxlbGlz
dCcgXQogICAgKTsKCiAgICAkc2VjdGlvbi0+cHVzaF9jb250ZW50KCR2YXJfbGlzdCk7CiAgICAk
eG1sX2RvYy0+cHVzaF9jb250ZW50KCRzZWN0aW9uKTsKCiAgICBmb3JlYWNoIG15ICRjbWQgKCBz
b3J0KCBrZXlzKCVhY3Rpb25zKSApICkgewogICAgICAgICR2YXJfbGlzdC0+cHVzaF9jb250ZW50
KCBfaGVscF9hY3Rpb25fYXNkYigkY21kKSApOwoKICAgIH0KCiAgICBteSAkT1VURE9DOwogICAg
bXkgJG91dF9maWxlID0gJ2VuLVVTL0F1dG9fRG9jcy54bWwnOwogICAgb3BlbiggJE9VVERPQywg
Ij46ZW5jb2RpbmcoVVRGLTgpIiwgJG91dF9maWxlICkKICAgICAgICB8fCBjcm9hayggbWFrZXRl
eHQoICJDb3VsZCBub3Qgb3BlbiBbXzFdIGZvciBvdXRwdXQhIiwgJG91dF9maWxlICkgKTsKCiAg
ICBwcmludCggJE9VVERPQyBQdWJsaWNhbjo6QnVpbGRlcjo6ZHRkX3N0cmluZygKICAgICAgICAg
ICAgeyB0YWcgPT4gJ2FwcGVuZGl4JywgZHRkdmVyID0+ICc1LjAnLCBjbGVhbmluZyA9PiAxIH0K
ICAgICAgICApCiAgICApOwogICAgcHJpbnQoICRPVVRET0MgJHhtbF9kb2MtPmFzX1hNTCgpICk7
CiAgICBjbG9zZSgkT1VURE9DKTsKCiAgICAkeG1sX2RvYy0+cm9vdCgpLT5kZWxldGUoKTsKCiAg
ICBteSAkY2xlYW5lciA9IFB1YmxpY2FuOjpYbWxDbGVhbi0+bmV3KCB7IGV4Y2x1ZGVfZW50ID0+
IDEgfSApOwogICAgJGNsZWFuZXItPnByb2Nlc3NfZmlsZSggeyBmaWxlID0+ICRvdXRfZmlsZSwg
b3V0X2ZpbGUgPT4gJG91dF9maWxlIH0gKTsKCiAgICAjIGFsbCB0aGUgcGFyYW1ldGVycwoKICAg
ICR4bWxfZG9jID0gWE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2woCiAgICAgICAgWyAnYXBwZW5k
aXgnLCB7aWQgPT4gJ0NvbmZpZ3VyYXRpb25fc3VtbWFyeSd9LCBbICdpbmZvJywgWyAndGl0bGUn
LCBtYWtldGV4dCgnQ29uZmlndXJhdGlvbiBzdW1tYXJ5JykgXSwgXSBdICk7CgogICAgJHNlY3Rp
b24gPSBYTUw6OkVsZW1lbnQtPm5ld19mcm9tX2xvbCgKICAgICAgICBbICAgJ3NlY3Rpb24nLAog
ICAgICAgICAgICB7IGlkID0+ICdBdXRvX0RvY3NfQ29uZmlncy1HZW5lcmFsX29wdGlvbnMnIH0s
CiAgICAgICAgICAgIFsgJ2luZm8nLCBbICd0aXRsZScsIG1ha2V0ZXh0KCdHZW5lcmFsIG9wdGlv
bnMnKSBdLCBdLAoJICAgIFsncGFyYScsIG1ha2V0ZXh0KCJUaGVzZSBhcmUgc2V0IGluIHRoZSBi
b29rcyBvciBicmFuZHMgY29uZmlndXJhdGlvbiBmaWxlcy4iKSBdLAogICAgICAgIF0KICAgICk7
CgogICAgbXkgJGdlbl9saXN0ID0gWE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2woCiAgICAgICAg
WyAgICd2YXJpYWJsZWxpc3QnXQogICAgKTsKICAgICRzZWN0aW9uLT5wdXNoX2NvbnRlbnQoJGdl
bl9saXN0KTsKICAgICR4bWxfZG9jLT5wdXNoX2NvbnRlbnQoJHNlY3Rpb24pOwoKICAgIG15ICRi
cmFuZF9saXN0ID0gWE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2woCiAgICAgICAgWyAgICd2YXJp
YWJsZWxpc3QnXSwKICk7CgogICAgJHNlY3Rpb24gPSBYTUw6OkVsZW1lbnQtPm5ld19mcm9tX2xv
bCgKICAgICAgICBbICAgJ3NlY3Rpb24nLAogICAgICAgICAgICB7IGlkID0+ICdBdXRvX0RvY3Nf
Q29uZmlncy1CcmFuZF9vcHRpb25zJyB9LAogICAgICAgICAgICBbICdpbmZvJywgWyAndGl0bGUn
LCBtYWtldGV4dCgnQnJhbmQgb3B0aW9ucycpIF0sIF0sCgkgICAgWydwYXJhJywgbWFrZXRleHQo
IlRoZXNlIGFyZSBzZXQgaW4gdGhlIGJyYW5kcyBjb25maWd1cmF0aW9uIGZpbGVzLiIpIF0sCiAg
ICAgICAgXQogICAgKTsKICAgICRzZWN0aW9uLT5wdXNoX2NvbnRlbnQoJGJyYW5kX2xpc3QpOwog
ICAgJHhtbF9kb2MtPnB1c2hfY29udGVudCgkc2VjdGlvbik7CgogICAgbXkgJHdlYl9saXN0ID0g
WE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2woCiAgICAgICAgWyAgICd2YXJpYWJsZWxpc3QnXSwK
ICk7CgogICAgJHNlY3Rpb24gPSBYTUw6OkVsZW1lbnQtPm5ld19mcm9tX2xvbCgKICAgICAgICBb
ICAgJ3NlY3Rpb24nLAogICAgICAgICAgICB7IGlkID0+ICdBdXRvX0RvY3NfQ29uZmlncy1TaXRl
X29wdGlvbicgfSwKICAgICAgICAgICAgWyAnaW5mbycsIFsgJ3RpdGxlJywgbWFrZXRleHQoJ1Np
dGUgb3B0aW9ucycpIF0sIF0sCgkgICAgWydwYXJhJywgbWFrZXRleHQoIlRoZXNlIGFyZSBzZXQg
aW4gdGhlIHNpdGVzIGNvbmZpZ3VyYXRpb24gZmlsZS4iKSBdLAogICAgICAgIF0KICAgICk7CiAg
ICAkc2VjdGlvbi0+cHVzaF9jb250ZW50KCR3ZWJfbGlzdCk7CiAgICAkeG1sX2RvYy0+cHVzaF9j
b250ZW50KCRzZWN0aW9uKTsKCiAgICAkeG1sX2RvYy0+cHVzaF9jb250ZW50KFB1YmxpY2FuOjpw
YXJhbXNfYXNfZG9jYm9vaygkZ2VuX2xpc3QsJGJyYW5kX2xpc3QsJHdlYl9saXN0KSk7CiAgICAk
eG1sX2RvYy0+cHVzaF9jb250ZW50KFB1YmxpY2FuOjpXZWJTaXRlOjpzaXRlX3BhcmFtc19hc19k
b2Nib29rKCR3ZWJfbGlzdCkpOwoKICAgICRvdXRfZmlsZSA9ICdlbi1VUy9BdXRvX0RvY3NfQ29u
Zmlncy54bWwnOwogICAgb3BlbiggJE9VVERPQywgIj46ZW5jb2RpbmcoVVRGLTgpIiwgJG91dF9m
aWxlICkKICAgICAgICB8fCBjcm9hayggbWFrZXRleHQoICJDb3VsZCBub3Qgb3BlbiBbXzFdIGZv
ciBvdXRwdXQhIiwgJG91dF9maWxlICkgKTsKCiAgICBwcmludCggJE9VVERPQyBQdWJsaWNhbjo6
QnVpbGRlcjo6ZHRkX3N0cmluZygKICAgICAgICAgICAgeyB0YWcgPT4gJ2FwcGVuZGl4JywgZHRk
dmVyID0+ICc1LjAnLCBjbGVhbmluZyA9PiAxIH0KICAgICAgICApCiAgICApOwogICAgcHJpbnQo
ICRPVVRET0MgJHhtbF9kb2MtPmFzX1hNTCgpICk7CiAgICBjbG9zZSgkT1VURE9DKTsKCiAgICAk
eG1sX2RvYy0+cm9vdCgpLT5kZWxldGUoKTsKICAgICRjbGVhbmVyLT5wcm9jZXNzX2ZpbGUoIHsg
ZmlsZSA9PiAkb3V0X2ZpbGUsIG91dF9maWxlID0+ICRvdXRfZmlsZSB9ICk7CgogICAgZXhpdCgw
KTsKfQoKc3ViIF9oZWxwX2FjdGlvbl9hc2RiIHsKICAgIG15ICRjbWQgPSBzaGlmdCB8fCBjcm9h
ayBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1bWVudCIsICdjbWQnICk7CiAgICBt
eSAkYnJpZWYgPSAkYWN0aW9uc3skY21kfS0+e2JyaWVmfTsKCiAgICBteSAkdmFyZW50cnkgPSBY
TUw6OkVsZW1lbnQtPm5ld19mcm9tX2xvbCgKICAgICAgICBbICAgJ3Zhcmxpc3RlbnRyeScsIHtp
ZCA9PiAkY21kfSwKICAgICAgICAgICAgWyAgICd0ZXJtJywgWyAncHJvbXB0JywgJyQnIF0sIFsg
J2NvbW1hbmQnLCAnIHB1YmxpY2FuJyBdLAogICAgICAgICAgICAgICAgIiAkY21kIgogICAgICAg
ICAgICBdLAogICAgICAgIF0KICAgICk7CgogICAgbXkgJGl0ZW0KICAgICAgICA9IFhNTDo6RWxl
bWVudC0+bmV3X2Zyb21fbG9sKCBbICdsaXN0aXRlbScsIFsgJ3BhcmEnLCAkYnJpZWYgXSBdLCAp
OwoKICAgICR2YXJlbnRyeS0+cHVzaF9jb250ZW50KCRpdGVtKTsKICAgIG15ICR2YXJsaXN0ID0g
WE1MOjpFbGVtZW50LT5uZXdfZnJvbV9sb2woIFsgJ3ZhcmlhYmxlbGlzdCcsIF0gKTsKCiAgICBm
b3JlYWNoIG15ICRvcHRpb24gKCBzb3J0KCBAeyAkYWN0aW9uc3skY21kfS0+e29wdGlvbnN9IH0g
KSApIHsKICAgICAgICBteSAkZW50cnk7CgogICAgICAgIGlmICggJG9wdGlvbnN7JG9wdGlvbn0g
KSB7CiAgICAgICAgICAgICRlbnRyeSA9IFhNTDo6RWxlbWVudC0+bmV3X2Zyb21fbG9sKAogICAg
ICAgICAgICAgICAgWyAgICd2YXJsaXN0ZW50cnknLAogICAgICAgICAgICAgICAgICAgIFsgJ3Rl
cm0nLCAiLS0kb3B0aW9uIiBdLAogICAgICAgICAgICAgICAgICAgIFsgJ2xpc3RpdGVtJywgWyAn
cGFyYScsICRvcHRpb25zeyRvcHRpb259IF0gXQogICAgICAgICAgICAgICAgXQogICAgICAgICAg
ICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJHRleHQKICAgICAg
ICAgICAgICAgID0gbWFrZXRleHQoICRvcHRpb25zeyIkb3B0aW9uPXMifSB8fCAkb3B0aW9uc3si
JG9wdGlvbj1zQCJ9ICk7CiAgICAgICAgICAgICRlbnRyeSA9IFhNTDo6RWxlbWVudC0+bmV3X2Zy
b21fbG9sKAogICAgICAgICAgICAgICAgWyAgICd2YXJsaXN0ZW50cnknLAogICAgICAgICAgICAg
ICAgICAgIFsgJ3Rlcm0nLCAiLS0kb3B0aW9uPSIsIFsgJ3JlcGxhY2VhYmxlJywgdWMoJG9wdGlv
bikgXSBdLAogICAgICAgICAgICAgICAgICAgIFsgJ2xpc3RpdGVtJywgWyAncGFyYScsICR0ZXh0
IF0gXQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAg
JHZhcmxpc3QtPnB1c2hfY29udGVudCgkZW50cnkpOwogICAgfQogICAgJGl0ZW0tPnB1c2hfY29u
dGVudCgkdmFybGlzdCkgaWYoISR2YXJsaXN0LT5pc19lbXB0eSgpKTsKCiAgICByZXR1cm4gKCR2
YXJlbnRyeSk7Cn0KCiMgY2F0Y2ggbm8gYWN0aW9uIHNldAppZiAoICRhY3Rpb24gZXEgIiIgKSB7
CiAgICBwb2QydXNhZ2UoCiAgICAgICAgLXZlcmJvc2UgID0+IDEsCiAgICAgICAgLWV4aXQgICAg
ID0+IDAsCiAgICAgICAgLWlucHV0ICAgID0+ICdwdWJsaWNhbicsCiAgICAgICAgLXBhdGhsaXN0
ID0+IFxAcG9kX3BhdGhzCiAgICApIGlmICRoZWxwOwogICAgcG9kMnVzYWdlKAogICAgICAgIC12
ZXJib3NlICA9PiAyLAogICAgICAgIC1leGl0ICAgICA9PiAwLAogICAgICAgIC1pbnB1dCAgICA9
PiAncHVibGljYW4nLAogICAgICAgIC1wYXRobGlzdCA9PiBcQHBvZF9wYXRocwogICAgKSBpZiAk
bWFuOwoKICAgIGlmICgkaGVscF9hY3Rpb25zKSB7CiAgICAgICAgX2hlbHBfYWN0aW9ucygpOwog
ICAgICAgIGV4aXQoMCk7CiAgICB9CgogICAgcG9kMnVzYWdlKAogICAgICAgIC1tc2cgICAgICA9
PiAiXG4iIC4gbWFrZXRleHQoIkFjdGlvbiByZXF1aXJlZCEiKSAuICJcbiIsCiAgICAgICAgLXZl
cmJvc2UgID0+IDEsCiAgICAgICAgLWV4aXQgICAgID0+IDEsCiAgICAgICAgLWlucHV0ICAgID0+
ICdwdWJsaWNhbicsCiAgICAgICAgLXBhdGhsaXN0ID0+IFxAcG9kX3BhdGhzCiAgICApOwoKICAg
IGV4aXQoMSk7Cn0KCiMgQ2F0Y2ggYm9ndXMgYWN0aW9uCmlmICggbm90IGRlZmluZWQoICRhY3Rp
b25zeyRhY3Rpb259ICkgKSB7CiAgICBwcmludCggbWFrZXRleHQoICInW18xXScgaXMgYW4gdW5r
bm93biBhY3Rpb24hIiwgJGFjdGlvbiApLCAiXG5cbiIgKTsKICAgIF9oZWxwX2FjdGlvbnMoKTsK
CiAgICBleGl0KDEpOwoKfQoKc3ViIF9oZWxwX2FjdGlvbiB7CiAgICBteSAkY21kID0gc2hpZnQg
fHwgY3JvYWsgbWFrZXRleHQoICJbXzFdIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQiLCAnY21kJyAp
OwoKICAgIHByaW50KCAiJGNtZFxuICAgICIgLiAkYWN0aW9uc3skY21kfS0+e2JyaWVmfSApOwog
ICAgcHJpbnQoICJcblxuXHQiLCBtYWtldGV4dCgiT3B0aW9uczoiKSwgIlxuIiApOwogICAgZm9y
ZWFjaCBteSAkb3B0aW9uICggQHV0aWxpdHlfb3B0cywgQHsgJGFjdGlvbnN7JGNtZH0tPntvcHRp
b25zfSB9ICkgewogICAgICAgIGRlYnVnX21zZygiVE9ETzogZG9lcyBwcmludGYgd29yayBmb3Ig
cmlnaHQgdG8gbGVmdCBsYW5ndWFnZXM/XG4iKTsKICAgICAgICBpZiAoICRvcHRpb25zeyRvcHRp
b259ICkgewogICAgICAgICAgICBwcmludGYoICIgICAgICAgIC0tJS0yMHMgICAgJXNcbiIsCiAg
ICAgICAgICAgICAgICAkb3B0aW9uLCBtYWtldGV4dCggJG9wdGlvbnN7JG9wdGlvbn0gKSApOwog
ICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHJpbnRmKAogICAgICAgICAgICAg
ICAgIiAgICAgICAgLS0lLTIwcyAgICAlc1xuIiwKICAgICAgICAgICAgICAgICIkb3B0aW9uPTwi
IC4gdWMoJG9wdGlvbikgLiAiPiIsCiAgICAgICAgICAgICAgICBtYWtldGV4dCggJG9wdGlvbnN7
IiRvcHRpb249cyJ9IHx8ICRvcHRpb25zeyIkb3B0aW9uPXNAIn0gKQogICAgICAgICAgICApOwog
ICAgICAgIH0KICAgIH0KICAgIHByaW50KCJcbiIpOwoKICAgIHJldHVybjsKfQoKIyAkYWN0aW9u
IG11c3QgIGJlIHNldCB0byBnZXQgaGVyZQppZiAoJGhlbHApIHsKICAgIF9oZWxwX2FjdGlvbigk
YWN0aW9uKTsKICAgIGV4aXQoMCk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBTdGFydCBwcm9jZXNz
aW5nIGFjdGlvbnMKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKI3BvZDJ1c2FnZSgxKSBpZiAoICEkbmFtZSB8
fCAkdHlwZSAhfiAvW0Jvb2t8U2V0fEFydGljbGVdLyk7CmlmICggJGFjdGlvbiBlcSAnY3JlYXRl
JyApIHsKCiAgICBteSAkZG9jbmFtZSA9ICRvcHRze25hbWV9CiAgICAgICAgfHwgY3JvYWsoIG1h
a2V0ZXh0KCJuYW1lIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIikgKTsKICAgICRkb2NuYW1lID1+
IHMvXHMvXy9nOwoKICAgIG15ICRjcmVhdG9yID0gUHVibGljYW46OkNyZWF0ZUJvb2stPm5ldygK
ICAgICAgICB7ICAgbmFtZSAgICA9PiAkZG9jbmFtZSwKICAgICAgICAgICAgdmVyc2lvbiA9PiAk
b3B0c3t2ZXJzaW9ufSwKICAgICAgICAgICAgZWRpdGlvbiA9PiAkb3B0c3tlZGl0aW9ufSwKICAg
ICAgICAgICAgcHJvZHVjdCA9PiAkb3B0c3twcm9kdWN0fSwKICAgICAgICAgICAgYnJhbmQgICA9
PiAkb3B0c3ticmFuZH0sCiAgICAgICAgICAgIGxhbmcgICAgPT4gJG9wdHN7bGFuZ30sCiAgICAg
ICAgICAgIHR5cGUgICAgPT4gJG9wdHN7dHlwZX0sCiAgICAgICAgICAgIGR0ZHZlciAgPT4gJG9w
dHN7ZHRkdmVyfSwKICAgICAgICB9CiAgICApOwogICAgJGNyZWF0b3ItPmNyZWF0ZSgpOwoKICAg
IG15ICRkaXIgPSBwdXNoZCgkZG9jbmFtZSk7CgogICAgbXkgJHB1YmxpY2FuID0gUHVibGljYW4t
Pm5ldygKICAgICAgICB7ICAgY29uZmlnZmlsZSAgICAgPT4gJG9wdHN7Y29uZmlnfSwKICAgICAg
ICAgICAgY29tbW9uX2NvbmZpZyAgPT4gJG9wdHN7Y29tbW9uX2NvbmZpZ30sCiAgICAgICAgICAg
IGNvbW1vbl9jb250ZW50ID0+ICRvcHRze2NvbW1vbl9jb250ZW50fSwKICAgICAgICAgICAgUVVJ
RVQgICAgICAgICAgPT4gJG9wdHN7cXVpZXR9LAogICAgICAgICAgICBOT0NPTE9VUlMgICAgICA9
PiAkb3B0c3tub2NvbG91cnN9LAogICAgICAgIH0KICAgICk7CgogICAgbXkgJGJ1aWxkZXI7CiAg
ICBpZiAoICRvcHRze2R0ZHZlcn0gJiYgJG9wdHN7ZHRkdmVyfSA9fiAvXjUvICkgewogICAgICAg
ICRidWlsZGVyID0gUHVibGljYW46OkJ1aWxkZXI6OkRvY0Jvb2s1LT5uZXcoKTsKICAgIH0KICAg
IGVsc2UgewogICAgICAgICRidWlsZGVyID0gUHVibGljYW46OkJ1aWxkZXI6OkRvY0Jvb2s0LT5u
ZXcoKTsKICAgIH0KCiAgICAkYnVpbGRlci0+Y2xlYW5faWRzKCk7CgogICAgJGRpciA9IHVuZGVm
OwoKICAgIGV4aXQoMCk7Cn0KCmlmICggJGFjdGlvbiBlcSAnY3JlYXRlX2JyYW5kJyApIHsKICAg
IG15ICRjcmVhdG9yID0gUHVibGljYW46OkNyZWF0ZUJyYW5kLT5uZXcoCiAgICAgICAgeyAgIG5h
bWUgPT4gJG9wdHN7bmFtZX0sCiAgICAgICAgICAgIGxhbmcgPT4gJG9wdHN7bGFuZ30sCiAgICAg
ICAgfQogICAgKTsKICAgICRjcmVhdG9yLT5jcmVhdGUoKTsKCiAgICBleGl0KDApOwp9CgppZiAo
ICRhY3Rpb24gZXEgJ2NyZWF0ZV9zaXRlJyApIHsKICAgIG15ICRzaXRlX2NvbmZpZyA9ICRvcHRz
e3NpdGVfY29uZmlnfQogICAgICAgIHx8IGNyb2FrKCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1
aXJlZCBhcmd1bWVudCIsICdzaXRlX2NvbmZpZycgKSApOwogICAgbXkgJGRiX2ZpbGUgPSAkb3B0
c3tkYl9maWxlfQogICAgICAgIHx8IGNyb2FrKCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJl
ZCBhcmd1bWVudCIsICdkYl9maWxlJyApICk7CiAgICBteSAkdG9jX3BhdGggPSAkb3B0c3t0b2Nf
cGF0aH0KICAgICAgICB8fCBjcm9hayggbWFrZXRleHQoICJbXzFdIGlzIGEgcmVxdWlyZWQgYXJn
dW1lbnQiLCAndG9jX3BhdGgnICkgKTsKICAgIG15ICR0bXBsX3BhdGggPSAkb3B0c3t0bXBsX3Bh
dGh9IHx8IHVuZGVmOwogICAgbXkgJGRlZl9sYW5nICA9ICRvcHRze2xhbmd9ICAgICAgfHwgdW5k
ZWY7CgogICAgaWYgKCAtZiAkc2l0ZV9jb25maWcgKSB7CiAgICAgICAgY3JvYWsoCiAgICAgICAg
ICAgIG1ha2V0ZXh0KAogICAgICAgICAgICAgICAgIkNvbmZpZyBmaWxlIGV4aXN0cywgeW91IG11
c3Qgc3VwcGx5IGEgbm9uLWV4aXN0ZW50IGZpbGVuYW1lLiIKICAgICAgICAgICAgKQogICAgICAg
ICk7CiAgICB9CgogICAgbXkgJGNvbmZpZyA9IG5ldyBDb25maWc6OlNpbXBsZSgpOwogICAgJGNv
bmZpZy0+c3ludGF4KCdodHRwJyk7CgogICAgbXkgKCAkZmlsZW5hbWUsICRkaXJlY3Rvcmllcywg
JHN1ZmZpeCApID0gZmlsZXBhcnNlKCRkYl9maWxlKTsKICAgIG1rcGF0aCgkZGlyZWN0b3JpZXMp
IHVubGVzcyAtZCAkZGlyZWN0b3JpZXM7CiAgICAkY29uZmlnLT5wYXJhbSggJ2RiX2ZpbGUnLCBh
YnNfcGF0aCgkZGJfZmlsZSkgKSBpZiAoJGRiX2ZpbGUpOwoKICAgIGlmICgkdG9jX3BhdGgpIHsK
ICAgICAgICBta3BhdGgoJHRvY19wYXRoKSB1bmxlc3MgLWQgJHRvY19wYXRoOwogICAgICAgICRj
b25maWctPnBhcmFtKCAndG9jX3BhdGgnLCBhYnNfcGF0aCgkdG9jX3BhdGgpICk7CiAgICAgICAg
cmNvcHkoICIkV0VCX1RFTVBMQVRFX1BBVEgvKiIsICIkdG9jX3BhdGgvLiIgKTsKICAgIH0KCiAg
ICAkY29uZmlnLT5wYXJhbSggJ3RtcGxfcGF0aCcsIGFic19wYXRoKCR0bXBsX3BhdGgpICkgaWYg
KCR0bXBsX3BhdGgpOwogICAgJGNvbmZpZy0+cGFyYW0oICdkZWZfbGFuZycsICAkZGVmX2xhbmcg
KSAgICAgICAgICAgIGlmICgkZGVmX2xhbmcpOwogICAgJGNvbmZpZy0+d3JpdGUoJHNpdGVfY29u
ZmlnKTsKCiAgICBteSAkd3MgPSBQdWJsaWNhbjo6V2ViU2l0ZS0+bmV3KAogICAgICAgIHsgY3Jl
YXRlID0+IDEsIHNpdGVfY29uZmlnID0+ICRzaXRlX2NvbmZpZyB9ICk7CiAgICAkd3MtPnJlZ2Vu
X2FsbF90b2MoKTsKCiAgICBleGl0KDApOwp9CgppZiAoICRhY3Rpb24gZXEgJ3VwZGF0ZV9zaXRl
JyApIHsKICAgIG15ICRzaXRlX2NvbmZpZyA9ICRvcHRze3NpdGVfY29uZmlnfSB8fCB1bmRlZjsK
ICAgIGxvY2FsICRGaWxlOjpDb3B5OjpSZWN1cnNpdmU6OlJNVHJnRmlsID0gMTsKICAgIG15ICR3
cyA9IFB1YmxpY2FuOjpXZWJTaXRlLT5uZXcoIHsgc2l0ZV9jb25maWcgPT4gJHNpdGVfY29uZmln
IH0gKTsKICAgIHJjb3B5KCAiJFdFQl9URU1QTEFURV9QQVRILyoiLCAkd3MtPnRvY19wYXRoKCkg
LiAiLy4iICk7CiAgICAkd3MtPnJlZ2VuX2FsbF90b2MoIHsgZm9yY2UgPT4gMSB9ICk7CgogICAg
ZXhpdCgwKTsKfQoKaWYgKCAkYWN0aW9uIGVxICdtaWdyYXRlX3NpdGUnICkgewogICAgbXkgJHNp
dGVfY29uZmlnID0gJG9wdHN7c2l0ZV9jb25maWd9IHx8IHVuZGVmOwogICAgbG9jYWwgJEZpbGU6
OkNvcHk6OlJlY3Vyc2l2ZTo6Uk1UcmdGaWwgPSAxOwogICAgbXkgJHdzID0gUHVibGljYW46Oldl
YlNpdGUtPm5ldyggeyBzaXRlX2NvbmZpZyA9PiAkc2l0ZV9jb25maWcgfSApOwoKICAgICR3cy0+
TWlncmF0ZURCKCk7CiAgICAkd3MtPnJlZ2VuX2FsbF90b2MoIHsgZm9yY2UgPT4gMSB9ICk7Cgog
ICAgcHJpbnQoCiAgICAgICAgbWFrZXRleHQoCiAgICAgICAgICAgICJOb3cgdGhhdCB5b3VyIHNp
dGUgaXMgbWlncmF0ZWQgeW91IHdpbGwgbmVlZCB0byByZWJ1aWxkIHlvdXIgYnJhbmRzIGFuZCBp
bnN0YWxsIHRoZSBicmFuZHMgd2ViIHBheWxvYWQgb24geW91ciBzaXRlLlxuXG5JdCBpcyBhbHNv
IHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYnVpbGQgYW5kIHJlaW5zdGFsbCBhbGwgYm9va3MgdG8g
ZW5zdXJlIHRoZSBsYXlvdXQgaXMgcHJvcGVybHkgbWlncmF0ZWQuIgogICAgICAgICkKICAgICk7
CiAgICBwcmludCggbWFrZXRleHQoJyQgY2QgcGF0aC90by9icmFuZCcpLCAiXG4iICk7CiAgICBw
cmludCggbWFrZXRleHQoJyQgcHVibGljYW4gYnVpbGQgLS1mb3JtYXRzPXhtbCAtLWxhbmdzPWFs
bCAtLXB1Ymxpc2gnKSwKICAgICAgICAiXG4iICk7CiMjIEJVR0JVRyBzaG91bGQgdGhpcyB1c2Ug
c2l0ZWNvbmZpZz8KICAgIHByaW50KAogICAgICAgIG1ha2V0ZXh0KAogICAgICAgICAgICAnJCBw
dWJsaWNhbiBpbnN0YWxsX2JyYW5kIC0td2ViIC0tcGF0aD0vcGF0aC90by9zaXRlLyV7YnJhbmR9
JyksCiAgICAgICAgIlxuIgogICAgKTsKICAgIHByaW50KAogICAgICAgIG1ha2V0ZXh0KCckIHB1
YmxpY2FuIHVwZGF0ZV9zaXRlIC0tc2l0ZV9jb25maWcgL3BhdGgvdG8vc2l0ZS9jb25maWcnKSwK
ICAgICAgICAiXG4iCiAgICApOwoKICAgIGV4aXQoMCk7Cn0KCmlmICggJGFjdGlvbiBlcSAnc2l0
ZV9zdGF0cycgKSB7CiAgICBteSAkc2l0ZV9jb25maWcgPSAkb3B0c3tzaXRlX2NvbmZpZ30gfHwg
dW5kZWY7CiAgICBteSAkd3MgPSBQdWJsaWNhbjo6V2ViU2l0ZS0+bmV3KCB7IHNpdGVfY29uZmln
ID0+ICRzaXRlX2NvbmZpZyB9ICk7CiAgICBwcmludCggJHdzLT5yZXBvcnQoKSApOwoKICAgIGV4
aXQoMCk7Cn0KCiMgaW5zdGFsbC9yZW1vdmUgYm9vayBmb3IgcHJlLWJ1aWxkIGNvbnRlbnQgKFJQ
TSwgREVCLCBldGMpCiMgQlVHQlVHIGZvcm1hdHMgaXNuJ3QgcmVxdWlyZWQgZm9yIGRlbAppZiAo
ICRhY3Rpb24gZXEgJ3VwZGF0ZV9kYicgKSB7CiAgICBteSAkc2l0ZV9jb25maWcgPSAkb3B0c3tz
aXRlX2NvbmZpZ30gfHwgdW5kZWY7CiAgICBteSAkd3MgPSBQdWJsaWNhbjo6V2ViU2l0ZS0+bmV3
KCB7IHNpdGVfY29uZmlnID0+ICRzaXRlX2NvbmZpZyB9ICk7CgogICAgbXkgJGFkZCA9ICRvcHRz
e2FkZH0gfHwgdW5kZWY7CiAgICBteSAkZGVsID0gJG9wdHN7ZGVsfSB8fCB1bmRlZjsKCiAgICBj
cm9haygKICAgICAgICBtYWtldGV4dCgiT25lIG9mIGFkZCBvciBkZWwgaXMgcmVxdWlyZWQgd2hl
biB1cGRhdGluZyB0aGUgZGF0YWJhc2UiKSApCiAgICAgICAgdW5sZXNzICggJGFkZCB8fCAkZGVs
ICk7CgogICAgbXkgJGxhbmcgPSAkb3B0c3tsYW5nfQogICAgICAgIHx8IGNyb2FrKCBtYWtldGV4
dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1bWVudCIsICdsYW5nJyApICk7CiAgICBteSAkcHJv
ZHVjdCA9ICRvcHRze3Byb2R1Y3R9CiAgICAgICAgfHwgY3JvYWsoIG1ha2V0ZXh0KCAiW18xXSBp
cyBhIHJlcXVpcmVkIGFyZ3VtZW50IiwgJ3Byb2R1Y3QnICkgKTsKCiAgICBteSAkdmVyc2lvbgog
ICAgICAgID0gZGVmaW5lZCAkb3B0c3t2ZXJzaW9ufQogICAgICAgID8gJG9wdHN7dmVyc2lvbn0K
ICAgICAgICA6IGNyb2FrKCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1bWVudCIs
ICd2ZXJzaW9uJyApICk7CgogICAgbXkgJG5hbWUgPSAkb3B0c3tuYW1lfQogICAgICAgIHx8IGNy
b2FrKCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1bWVudCIsICduYW1lJyApICk7
CiAgICBteSAkZm9ybWF0cyA9ICRvcHRze2Zvcm1hdHN9CiAgICAgICAgfHwgY3JvYWsoIG1ha2V0
ZXh0KCAiW18xXSBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50IiwgJ2Zvcm1hdHMnICkgKTsKCiAgICAj
IHJlcXVpcmVkIGZvciBhZGQKICAgIG15ICRzdWJ0aXRsZSA9ICRvcHRze3N1YnRpdGxlfSB8fCB1
bmRlZjsKICAgIG15ICRhYnN0cmFjdCA9ICRvcHRze2Fic3RyYWN0fSB8fCB1bmRlZjsKCiAgICBt
eSAkYm9va192ZXJzaW9uICA9ICRvcHRze2Jvb2tfdmVyc2lvbn0gIHx8IHVuZGVmOwogICAgbXkg
JGJvb2tfc3JjX2xhbmcgPSAkb3B0c3tib29rX3NyY19sYW5nfSB8fCB1bmRlZjsKCiAgICBpZiAo
JGFkZCkgewogICAgICAgIGNyb2FrKCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1
bWVudCIsICdzdWJ0aXRsZScgKSApCiAgICAgICAgICAgIHVubGVzcyAoJHN1YnRpdGxlKTsKICAg
ICAgICBjcm9hayggbWFrZXRleHQoICJbXzFdIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQiLCAnYWJz
dHJhY3QnICkgKQogICAgICAgICAgICB1bmxlc3MgKCRhYnN0cmFjdCk7CgogICAgICAgIGNyb2Fr
KCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1bWVudCIsICdib29rX3ZlcnNpb24n
ICkgKQogICAgICAgICAgICB1bmxlc3MgKCRib29rX3ZlcnNpb24pOwogICAgfQoKICAgICMgb3B0
aW9uYWwgZm9yIGFkZAogICAgbXkgJHByb2R1Y3RfbGFiZWwgPSAkb3B0c3twcm9kdWN0X2xhYmVs
fSB8fCB1bmRlZjsKICAgIG15ICR2ZXJzaW9uX2xhYmVsID0gJG9wdHN7dmVyc2lvbl9sYWJlbH0g
fHwgdW5kZWY7CiAgICBteSAkbmFtZV9sYWJlbCAgICA9ICRvcHRze25hbWVfbGFiZWx9ICAgIHx8
IHVuZGVmOwogICAgbXkgJHNvcnRfb3JkZXIgICAgPSAkb3B0c3tzb3J0X29yZGVyfSAgICB8fCB1
bmRlZjsKCiAgICBpZiAoJGFkZCkgewogICAgICAgICR3cy0+dXBkYXRlX29yX2FkZF9lbnRyeSgK
ICAgICAgICAgICAgeyAgIGxhbmd1YWdlICAgICAgPT4gJGxhbmcsCiAgICAgICAgICAgICAgICBw
cm9kdWN0ICAgICAgID0+ICRwcm9kdWN0LAogICAgICAgICAgICAgICAgdmVyc2lvbiAgICAgICA9
PiAkdmVyc2lvbiwKICAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgPT4gJG5hbWUsCiAgICAg
ICAgICAgICAgICBmb3JtYXRzICAgICAgID0+ICRmb3JtYXRzLAogICAgICAgICAgICAgICAgcHJv
ZHVjdF9sYWJlbCA9PiAkcHJvZHVjdF9sYWJlbCwKICAgICAgICAgICAgICAgIHZlcnNpb25fbGFi
ZWwgPT4gJHZlcnNpb25fbGFiZWwsCiAgICAgICAgICAgICAgICBuYW1lX2xhYmVsICAgID0+ICRu
YW1lX2xhYmVsLAogICAgICAgICAgICAgICAgc3VidGl0bGUgICAgICA9PiAkc3VidGl0bGUsCiAg
ICAgICAgICAgICAgICBhYnN0cmFjdCAgICAgID0+ICRhYnN0cmFjdCwKICAgICAgICAgICAgICAg
IHNvcnRfb3JkZXIgICAgPT4gJHNvcnRfb3JkZXIsCiAgICAgICAgICAgICAgICBib29rX3ZlcnNp
b24gID0+ICRib29rX3ZlcnNpb24sCiAgICAgICAgICAgICAgICBib29rX3NyY19sYW5nID0+ICRi
b29rX3NyY19sYW5nLAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KICAgIGVsc2Ugewog
ICAgICAgICR3cy0+ZGVsX2VudHJ5KAogICAgICAgICAgICB7ICAgbGFuZ3VhZ2UgPT4gJGxhbmcs
CiAgICAgICAgICAgICAgICBwcm9kdWN0ICA9PiAkcHJvZHVjdCwKICAgICAgICAgICAgICAgIHZl
cnNpb24gID0+ICR2ZXJzaW9uLAogICAgICAgICAgICAgICAgbmFtZSAgICAgPT4gJG5hbWUsCiAg
ICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKIyMgQlVHQlVHIFRPRE8gb25seSB1cGRhdGUg
bGFuZ2F1Z2VzIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQKICAgICMgbWFrZSBzdXJlIE9QRFMgaXMg
Y29ycmVjdC4uLgogICAgJHdzLT5yZWdlbl9hbGxfdG9jKCk7CgogICAgZXhpdCgwKTsKfQoKaWYg
KCAkYWN0aW9uIGVxICdjb3B5X3dlYl9icmFuZCcgKSB7CiAgICBteSAkYnJhbmQgPSAkb3B0c3ti
cmFuZH0KICAgICAgICB8fCBjcm9hayggbWFrZXRleHQoICJbXzFdIGlzIGEgcmVxdWlyZWQgYXJn
dW1lbnQiLCAnYnJhbmQnICkgKTsKICAgIG15ICRzaXRlX2NvbmZpZyA9ICRvcHRze3NpdGVfY29u
ZmlnfQogICAgICAgIHx8IGNyb2FrKCBtYWtldGV4dCggIltfMV0gaXMgYSByZXF1aXJlZCBhcmd1
bWVudCIsICdzaXRlX2NvbmZpZycgKSApOwogICAgbXkgJG9sZF9zaXRlX2NvbmZpZyA9ICRvcHRz
e29sZF9zaXRlX2NvbmZpZ30KICAgICAgICB8fCBjcm9haygKICAgICAgICBtYWtldGV4dCggIltf
MV0gaXMgYSByZXF1aXJlZCBhcmd1bWVudCIsICdvbGRfc2l0ZV9jb25maWcnICkgKTsKCiAgICBt
eSAkb2xkX2NvbmZpZyA9IG5ldyBDb25maWc6OlNpbXBsZSgpOwogICAgJG9sZF9jb25maWctPnN5
bnRheCgnaHR0cCcpOwogICAgJG9sZF9jb25maWctPnJlYWQoJG9sZF9zaXRlX2NvbmZpZykKICAg
ICAgICB8fCBjcm9haygiRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICRvbGRfc2l0ZV9jb25m
aWciKTsKCiAgICBteSAkb2xkX3BhdGggPSAkb2xkX2NvbmZpZy0+cGFyYW0oJ3RvY19wYXRoJykK
ICAgICAgICB8fCBjcm9haygKICAgICAgICBtYWtldGV4dCgKICAgICAgICAgICAgIltfMV0gaXMg
YSBtYW5kYXRvcnkgZmllbGQgaW4gYSBzaXRlIGNvbmZpZ3VyYXRpb24gZmlsZSIsCiAgICAgICAg
ICAgICd0b2NfcGF0aCcKICAgICAgICApCiAgICAgICAgKTsKCiAgICBteSAkbmV3X2NvbmZpZyA9
IG5ldyBDb25maWc6OlNpbXBsZSgpOwogICAgJG5ld19jb25maWctPnN5bnRheCgnaHR0cCcpOwog
ICAgJG5ld19jb25maWctPnJlYWQoJHNpdGVfY29uZmlnKQogICAgICAgIHx8IGNyb2FrKCJGYWls
ZWQgdG8gbG9hZCBjb25maWcgZmlsZTogJHNpdGVfY29uZmlnIik7CgogICAgbXkgJG5ld19wYXRo
ID0gJG5ld19jb25maWctPnBhcmFtKCd0b2NfcGF0aCcpCiAgICAgICAgfHwgY3JvYWsoCiAgICAg
ICAgbWFrZXRleHQoCiAgICAgICAgICAgICJbXzFdIGlzIGEgbWFuZGF0b3J5IGZpZWxkIGluIGEg
c2l0ZSBjb25maWd1cmF0aW9uIGZpbGUiLAogICAgICAgICAgICAndG9jX3BhdGgnCiAgICAgICAg
KQogICAgICAgICk7CgogICAgcmNvcHkoICIkb2xkX3BhdGgvJGJyYW5kIiwgIiRuZXdfcGF0aC8k
YnJhbmQiICk7CgogICAgZXhpdCgwKTsKfQoKIyMgTk9URTogQWxsIHRhcmdldHMgaGVyZSBNVVNU
IGhhdmUgYSB2YWxpZCBwdWJsaWNhbi5jZmcgZmlsZQppZiAoICRhY3Rpb24gZXEgJ3ByaW50X2tu
b3duJyApIHsKICAgIFB1YmxpY2FuOjpYbWxDbGVhbjo6cHJpbnRfa25vd25fdGFncygpOwogICAg
ZXhpdCgwKTsKfQpteSAlYXJncyA9ICggJ2NvbmZpZ2ZpbGUnID0+ICRvcHRze2NvbmZpZ30gKTsK
bXkgJHNyY19kaXI7Cm15ICRjd2QgPSBjd2QoKTsKCmlmICggZGVmaW5lZCggJG9wdHN7c3JjX2Rp
cn0gKSApIHsKICAgICRzcmNfZGlyID0gcHVzaGQoICRvcHRze3NyY19kaXJ9ICk7Cn0KCmlmICgg
IWRlZmluZWQoICRvcHRze3B1Yl9kaXJ9ICkgKSB7CiAgICAkb3B0c3twdWJfZGlyfSA9ICdwdWJs
aXNoJzsKfQoKbXkgJHB1YmxpY2FuID0gUHVibGljYW4tPm5ldygKICAgIHsgICAnY29uZmlnZmls
ZScgICA9PiAkb3B0c3tjb25maWd9LAogICAgICAgIGNvbW1vbl9jb25maWcgID0+ICRvcHRze2Nv
bW1vbl9jb25maWd9LAogICAgICAgIGNvbW1vbl9jb250ZW50ID0+ICRvcHRze2NvbW1vbl9jb250
ZW50fSwKICAgICAgICBRVUlFVCAgICAgICAgICA9PiAkb3B0c3txdWlldH0sCiAgICAgICAgTk9D
T0xPVVJTICAgICAgPT4gJG9wdHN7bm9jb2xvdXJzfSwKICAgICAgICBicmFuZF9kaXIgICAgICA9
PiAkb3B0c3ticmFuZF9kaXJ9LAogICAgICAgIGFsbG93X25ldHdvcmsgID0+ICRvcHRze2FsbG93
X25ldHdvcmt9LAogICAgICAgIG5vX2NsZWFuICAgICAgICA9PiAkb3B0c3tub19jbGVhbn0sCiAg
ICB9Cik7CgpteSAkY29uZmlnZmlsZSA9IEZpbGU6OkhvbWVEaXItPmhvbWUoKSAuICIvLnB1Ymxp
Y2FuLmNmZyI7CmlmICggLWYgJGNvbmZpZ2ZpbGUgKSB7CiAgICBteSAkdXNlcl9jZmcgPSBuZXcg
Q29uZmlnOjpTaW1wbGUoKTsKICAgICR1c2VyX2NmZy0+c3ludGF4KCdodHRwJyk7CiAgICAkdXNl
cl9jZmctPnJlYWQoJGNvbmZpZ2ZpbGUpCiAgICAgICAgfHwgY3JvYWsoCiAgICAgICAgbWFrZXRl
eHQoICJGYWlsZWQgdG8gbG9hZCB1c2VyIGNvbmZpZyBmaWxlOiBbXzFdIiwgJGNvbmZpZ2ZpbGUg
KSApOwoKICAgICRvcHRze2ZpcnN0bmFtZX0gPSBkZWNvZGVfdXRmOCggJHVzZXJfY2ZnLT5wYXJh
bSgnZmlyc3RuYW1lJykgKQogICAgICAgIHVubGVzcyAoICRvcHRze2ZpcnN0bmFtZX0gKTsKICAg
ICRvcHRze3N1cm5hbWV9ID0gZGVjb2RlX3V0ZjgoICR1c2VyX2NmZy0+cGFyYW0oJ3N1cm5hbWUn
KSApCiAgICAgICAgdW5sZXNzICggJG9wdHN7c3VybmFtZX0gKTsKICAgICRvcHRze2VtYWlsfSA9
IGRlY29kZV91dGY4KCAkdXNlcl9jZmctPnBhcmFtKCdlbWFpbCcpICkKICAgICAgICB1bmxlc3Mg
KCAkb3B0c3tlbWFpbH0gKTsKICAgICRvcHRze2xhbmd9ID0gZGVjb2RlX3V0ZjgoICR1c2VyX2Nm
Zy0+cGFyYW0oJ2xhbmcnKSApCiAgICAgICAgdW5sZXNzICggJG9wdHN7bGFuZ30gKTsKICAgICRv
cHRze2Zvcm1hdHN9ID0gZGVjb2RlX3V0ZjgoICR1c2VyX2NmZy0+cGFyYW0oJ2Zvcm1hdHMnKSAp
CiAgICAgICAgdW5sZXNzICggJG9wdHN7Zm9ybWF0c30gKTsKICAgICRvcHRze2xhbmdzfSA9IGRl
Y29kZV91dGY4KCAkdXNlcl9jZmctPnBhcmFtKCdsYW5ncycpICkKICAgICAgICB1bmxlc3MgKCAk
b3B0c3tsYW5nc30gKTsKfQoKaWYgKCBkZWZpbmVkKCAkb3B0c3tzcmNfZGlyfSApICkgewogICAg
JHB1YmxpY2FuLT57Y29uZmlnfS0+cGFyYW0oICd0bXBfZGlyJywKICAgICAgICBhYnNfcGF0aCgg
IiRjd2QvIiAuICRwdWJsaWNhbi0+cGFyYW0oJ3RtcF9kaXInKSApICk7Cn0KCmlmICggJGFjdGlv
biBlcSAncHJpbnRfYmFubmVkJyApIHsKICAgICRwdWJsaWNhbi0+cHJpbnRfYmFubmVkX3RhZ3Mo
KTsKICAgIGV4aXQoMCk7Cn0KCmlmICggJGFjdGlvbiBlcSAnaW5zdGFsbF9icmFuZCcgKSB7CiAg
ICBteSAkYnJhbmQgPSAkcHVibGljYW4tPnBhcmFtKCdicmFuZCcpCiAgICAgICAgfHwgY3JvYWso
IkNhbid0IGZpbmQgYnJhbmQgbmFtZSIpOwoKICAgIG15ICR4bWxfbGFuZyA9ICRwdWJsaWNhbi0+
cGFyYW0oJ3htbF9sYW5nJyk7CgogICAgY3JvYWsoIG1ha2V0ZXh0KCAiW18xXSBpcyBhIHJlcXVp
cmVkIGFyZ3VtZW50IiwgJ3BhdGgnICkgKQogICAgICAgIHVubGVzcyAoICRvcHRze3BhdGh9ICk7
CiAgICBjcm9hayggbWFrZXRleHQoInlvdSBuZWVkIHRvIHB1Ymxpc2ggdGhlIGJyYW5kIGZpcnN0
IikgKQogICAgICAgIHVubGVzcyAoIC1kICRvcHRze3B1Yl9kaXJ9ICk7CiAgICBjcm9hayggbWFr
ZXRleHQoImRlc3RpbmF0aW9uIG11c3QgZXhpc3QiKSApIHVubGVzcyAoIC1kICRvcHRze3BhdGh9
ICk7CgogICAgaWYgKCAkb3B0c3t3ZWJ9ICkgewogICAgICAgIGZvcmVhY2ggbXkgJGxuICggc3Bs
aXQoICcsJywgZ2V0X2FsbF9sYW5ncygpICkgKSB7CiAgICAgICAgICAgIG1rcGF0aCgiJG9wdHN7
cGF0aH0vJGxuL2NzcyIpIHVubGVzcyAoIC1mICIkb3B0c3twYXRofS8kbG4vY3NzIiApOwoKICAg
ICAgICAgICAgcmNvcHkoICIkeG1sX2xhbmcvY3NzL2JyYW5kLmNzcyIsICIkb3B0c3twYXRofS8k
bG4vY3NzL2JyYW5kLmNzcyIgKQogICAgICAgICAgICAgICAgaWYgKCAtZiAiJHhtbF9sYW5nL2Nz
cy9icmFuZC5jc3MiICk7CiAgICAgICAgICAgIHJjb3B5KCAiJGxuL2Nzcy9sYW5nLmNzcyIsICIk
b3B0c3twYXRofS8kbG4vY3NzL2xhbmcuY3NzIiApCiAgICAgICAgICAgICAgICBpZiAoIC1mICIk
bG4vY3NzL2xhbmcuY3NzIiApOwoKICAgICAgICAgICAgbXkgJGltYWdlcyA9ICRwdWJsaWNhbi0+
cGFyYW0oJ2ltZ19kaXInKTsKICAgICAgICAgICAgbWtwYXRoKCIkb3B0c3twYXRofS8kbG4vJGlt
YWdlcyIpCiAgICAgICAgICAgICAgICB1bmxlc3MgKCAtZiAiJG9wdHN7cGF0aH0vJGxuLyRpbWFn
ZXMiICk7CiAgICAgICAgICAgIHJjb3B5KCAiJHhtbF9sYW5nLyRpbWFnZXMvKiIsICIkb3B0c3tw
YXRofS8kbG4vJGltYWdlcy8uIiApCiAgICAgICAgICAgICAgICBpZiAoIC1kICIkeG1sX2xhbmcv
JGltYWdlcyIgKTsKICAgICAgICAgICAgcmNvcHkoICIkbG4vJGltYWdlcy8qIiwgIiRvcHRze3Bh
dGh9LyRsbi8kaW1hZ2VzLy4iICkKICAgICAgICAgICAgICAgIGlmICggLWQgIiRsbi8kaW1hZ2Vz
IiApOwoKICAgICAgICAgICAgaWYgKCAtZCAiJHhtbF9sYW5nL3NjcmlwdHMiICkgewogICAgICAg
ICAgICAgICAgbWtwYXRoKCIkb3B0c3twYXRofS8kbG4vc2NyaXB0cyIpCiAgICAgICAgICAgICAg
ICAgICAgdW5sZXNzICggLWYgIiRvcHRze3BhdGh9LyRsbi9zY3JpcHRzIiApOwogICAgICAgICAg
ICAgICAgcmNvcHkoICIkeG1sX2xhbmcvc2NyaXB0cy8qIiwgIiRvcHRze3BhdGh9LyRsbi9zY3Jp
cHRzLy4iICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggLWQgIiRsbi9zY3JpcHRz
IiApIHsKICAgICAgICAgICAgICAgIG1rcGF0aCgiJG9wdHN7cGF0aH0vJGxuL3NjcmlwdHMiKQog
ICAgICAgICAgICAgICAgICAgIHVubGVzcyAoIC1mICIkb3B0c3twYXRofS8kbG4vc2NyaXB0cyIg
KTsKICAgICAgICAgICAgICAgIHJjb3B5KCAiJGxuL3NjcmlwdHMvKiIsICIkb3B0c3twYXRofS8k
bG4vc2NyaXB0cy8uIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgcmNvcHkoICIkb3B0c3twdWJfZGlyfS8qIiwgIiRvcHRze3BhdGh9Ly4iICk7CiAg
ICAgICAgcmNvcHkoICJwdWJsaWNhbi5jZmciLCAgICAgIiRvcHRze3BhdGh9LyRicmFuZC8uIiAp
OwogICAgICAgIHJjb3B5KCAiZGVmYXVsdHMuY2ZnIiwgICAgICIkb3B0c3twYXRofS8kYnJhbmQv
LiIgKQogICAgICAgICAgICBpZiAoIC1mICJkZWZhdWx0cy5jZmciICk7CiAgICAgICAgcmNvcHko
ICJvdmVycmlkZXMuY2ZnIiwgIiRvcHRze3BhdGh9LyRicmFuZC8uIiApCiAgICAgICAgICAgIGlm
ICggLWYgIm92ZXJyaWRlcy5jZmciICk7CiAgICB9CgogICAgZXhpdCgwKTsKfQoKaWYgKCAkYWN0
aW9uIGVxICdoZWxwX2NvbmZpZycgKSB7CiAgICAkcHVibGljYW4tPmhlbHBfY29uZmlnKCk7Cgog
ICAgZXhpdCgwKTsKfQoKaWYgKCAkYWN0aW9uIGVxICdwcmludF90cmVlJyApIHsKICAgIG15ICR0
cmVldmlldyA9IFB1YmxpY2FuOjpUcmVlVmlldy0+bmV3KCk7CiAgICAkdHJlZXZpZXctPnByaW50
X3RyZWUoKTsKICAgIGV4aXQoMCk7Cn0KCmlmICggJGFjdGlvbiBlcSAncHJpbnRfdW51c2VkJyAp
IHsKICAgIG15ICR0cmVldmlldyA9IFB1YmxpY2FuOjpUcmVlVmlldy0+bmV3KCk7CiAgICAkdHJl
ZXZpZXctPnByaW50X3VudXNlZCgpOwogICAgZXhpdCgwKTsKfQoKaWYgKCAkYWN0aW9uIGVxICdw
cmludF91bnVzZWRfaW1hZ2VzJyApIHsKICAgIG15ICR0cmVldmlldyA9IFB1YmxpY2FuOjpUcmVl
Vmlldy0+bmV3KCk7CiAgICAkdHJlZXZpZXctPnByaW50X3VudXNlZF9pbWFnZXMoKTsKICAgIGV4
aXQoMCk7Cn0KCmlmICggJGFjdGlvbiBlcSAnY2xlYW4nIHx8ICRhY3Rpb24gZXEgJ3BhY2thZ2Un
ICkgewogICAgaWYgKCAkYWN0aW9uIGVxICdwYWNrYWdlJyApIHsKICAgICAgICBsb2dnZXIoCiAg
ICAgICAgICAgIG1ha2V0ZXh0KAogICAgICAgICAgICAgICAgIlJ1bm5pbmcgY2xlYW4gcHJvY2Vz
cyB0byBlbnN1cmUgc3RhbGUgY29udGVudCBpcyBub3QgYnVuZGxlZCBpbiBwYWNrYWdlcy4iCiAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuICJcbiIsCiAgICAgICAgICAgIFJFRAog
ICAgICAgICk7CiAgICB9CiAgICBsb2dnZXIoCiAgICAgICAgbWFrZXRleHQoICJDbGVhbjogUmVt
b3ZpbmcgW18xXSBhbmQgcHVibGlzaCBkaXJlY3Rvcmllcy4iLAogICAgICAgICAgICAkcHVibGlj
YW4tPnBhcmFtKCd0bXBfZGlyJykgKQogICAgICAgICAgICAuICJcbiIsCiAgICApOwoKICAgIG15
ICRlcnJvcjsKCiAgICBybXRyZWUoICRwdWJsaWNhbi0+cGFyYW0oJ3RtcF9kaXInKSApOwogICAg
cm10cmVlKCAkb3B0c3twdWJfZGlyfSApOwoKICAgIG15ICRib29rcyA9ICRwdWJsaWNhbi0+cGFy
YW0oJ2Jvb2tzJykgfHwgIiI7CiAgICBmb3JlYWNoIG15ICRib29rICggc3BsaXQoICIgIiwgJGJv
b2tzICkgKSB7CiAgICAgICAgcm10cmVlKCIkYm9vay90bXAiKTsKICAgICAgICBybXRyZWUoIiRi
b29rLyRvcHRze3B1Yl9kaXJ9Iik7CiAgICB9Cn0KCmlmICggJGFjdGlvbiBlcSAnY2xlYW5fc2V0
JyApIHsKICAgIG15ICRib29rcyA9ICRwdWJsaWNhbi0+cGFyYW0oJ2Jvb2tzJykgfHwgIiI7CiAg
ICBmb3JlYWNoIG15ICRib29rICggc3BsaXQoICIgIiwgJGJvb2tzICkgKSB7CiAgICAgICAgcm10
cmVlKCIkYm9vayIpOwogICAgfQp9CgppZiAoICRhY3Rpb24gZXEgJ2NsZWFuX2lkcycgKSB7CiAg
ICBteSAkZHRkdmVyID0gJHB1YmxpY2FuLT5wYXJhbSgnZHRkdmVyJyk7CiAgICBteSAkYnVpbGRl
cjsKICAgIGlmICggJGR0ZHZlciA9fiAvXjUvICkgewogICAgICAgICRidWlsZGVyID0gUHVibGlj
YW46OkJ1aWxkZXI6OkRvY0Jvb2s1LT5uZXcoKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRi
dWlsZGVyID0gUHVibGljYW46OkJ1aWxkZXI6OkRvY0Jvb2s0LT5uZXcoKTsKICAgIH0KICAgICRi
dWlsZGVyLT5jbGVhbl9pZHMoKTsKfQoKaWYgKCAkYWN0aW9uIGVxICd0cmFuc19kcm9wJyApIHsK
ICAgIG15ICR0cmFuc2xhdGVyID0gUHVibGljYW46OlRyYW5zbGF0ZS0+bmV3KCk7CiAgICAkdHJh
bnNsYXRlci0+dHJhbnNfZHJvcCgpOwp9CgppZiAoICRhY3Rpb24gZXEgJ3VwZGF0ZV9wb3QnICkg
ewogICAgbXkgJHRyYW5zbGF0ZXIgPSBQdWJsaWNhbjo6VHJhbnNsYXRlLT5uZXcoKTsKICAgICR0
cmFuc2xhdGVyLT51cGRhdGVfcG90KCk7Cn0KCmlmICggJGFjdGlvbiBlcSAndXBkYXRlX3BvJyAp
IHsKICAgIG15ICR0cmFuc2xhdGVyID0gUHVibGljYW46OlRyYW5zbGF0ZS0+bmV3KCk7CiAgICBp
ZiAoICFkZWZpbmVkICRvcHRze2xhbmdzfSB8fCAkb3B0c3tsYW5nc30gZXEgJ2FsbCcgKSB7CiAg
ICAgICAgJHRyYW5zbGF0ZXItPnVwZGF0ZV9wb19hbGwoCiAgICAgICAgICAgIHsgICBtc2dtZXJn
ZSAgPT4gJG9wdHN7bXNnbWVyZ2V9LAogICAgICAgICAgICAgICAgZW1haWwgICAgID0+ICRvcHRz
e2VtYWlsfSwKICAgICAgICAgICAgICAgIGZpcnN0bmFtZSA9PiAkb3B0c3tmaXJzdG5hbWV9LAog
ICAgICAgICAgICAgICAgc3VybmFtZSAgID0+ICRvcHRze3N1cm5hbWV9LAogICAgICAgICAgICAg
ICAgcHJldmlvdXMgID0+ICRvcHRze3ByZXZpb3VzfSwKICAgICAgICAgICAgfQogICAgICAgICk7
CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkdHJhbnNsYXRlci0+dXBkYXRlX3BvKAogICAgICAg
ICAgICB7ICAgbGFuZ3MgICAgID0+ICRvcHRze2xhbmdzfSwKICAgICAgICAgICAgICAgIG1zZ21l
cmdlICA9PiAkb3B0c3ttc2dtZXJnZX0sCiAgICAgICAgICAgICAgICBlbWFpbCAgICAgPT4gJG9w
dHN7ZW1haWx9LAogICAgICAgICAgICAgICAgZmlyc3RuYW1lID0+ICRvcHRze2ZpcnN0bmFtZX0s
CiAgICAgICAgICAgICAgICBzdXJuYW1lICAgPT4gJG9wdHN7c3VybmFtZX0sCiAgICAgICAgICAg
ICAgICBwcmV2aW91cyAgPT4gJG9wdHN7cHJldmlvdXN9LAogICAgICAgICAgICB9CiAgICAgICAg
KTsKICAgIH0KfQoKaWYgKCAkYWN0aW9uIGVxICdsYW5nX3N0YXRzJyApIHsKICAgIG15ICR0cmFu
c2xhdGVyID0gUHVibGljYW46OlRyYW5zbGF0ZS0+bmV3KCk7CiAgICBpZiAoICRvcHRze2xhbmd9
IGVxICdhbGwnICkgewogICAgICAgIGZvcmVhY2ggbXkgJGxhbmcgKCBzcGxpdCggLywvLCBnZXRf
YWxsX2xhbmdzKDEpICkgKSB7CiAgICAgICAgICAgICR0cmFuc2xhdGVyLT5wb19yZXBvcnQoIHsg
bGFuZyA9PiAkbGFuZyB9ICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHRy
YW5zbGF0ZXItPnBvX3JlcG9ydCggeyBsYW5nID0+ICRvcHRze2xhbmd9IH0gKTsKICAgIH0KfQoK
aWYgKCAkYWN0aW9uIGVxICdidWlsZCcgKSB7CgogICAgbXkgJGR0ZHZlciA9ICRwdWJsaWNhbi0+
cGFyYW0oJ2R0ZHZlcicpOwogICAgbXkgJGJ1aWxkZXI7CgogICAgaWYgKCAkZHRkdmVyID1+IG0v
XjUvICkgewogICAgICAgICRidWlsZGVyID0gUHVibGljYW46OkJ1aWxkZXI6OkRvY0Jvb2s1LT5u
ZXcoCiAgICAgICAgICAgIHsgbm92YWxpZCA9PiAkb3B0c3tub3ZhbGlkfSwgc2hvd2Z1enp5ID0+
ICRvcHRze3Nob3dmdXp6eX0gfSApOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRidWlsZGVy
ID0gUHVibGljYW46OkJ1aWxkZXI6OkRvY0Jvb2s0LT5uZXcoCiAgICAgICAgICAgIHsgbm92YWxp
ZCA9PiAkb3B0c3tub3ZhbGlkfSwgc2hvd2Z1enp5ID0+ICRvcHRze3Nob3dmdXp6eX0gfSApOwog
ICAgfQoKICAgICRidWlsZGVyLT5idWlsZCgKICAgICAgICB7ICAgZm9ybWF0cyAgICAgICAgID0+
ICRvcHRze2Zvcm1hdHN9LAogICAgICAgICAgICBsYW5ncyAgICAgICAgICAgPT4gJG9wdHN7bGFu
Z3N9LAogICAgICAgICAgICBwdWJsaXNoICAgICAgICAgPT4gJG9wdHN7cHVibGlzaH0sCiAgICAg
ICAgICAgIGVtYmVkdG9jICAgICAgICA9PiAkb3B0c3tlbWJlZHRvY30sCiAgICAgICAgICAgIGRp
c3RyaWJ1dGVkX3NldCA9PiAkb3B0c3tkaXN0cmlidXRlZF9zZXR9LAogICAgICAgICAgICBwZGZ0
b29sICAgICAgICAgPT4gJG9wdHN7cGRmdG9vbH0sCiAgICAgICAgICAgIHB1Yl9kaXIgICAgICAg
ICA9PiAkb3B0c3twdWJfZGlyfSwKICAgICAgICB9CiAgICApOwp9CgppZiAoICRhY3Rpb24gZXEg
J2FkZF9yZXZpc2lvbicgKSB7CgogICAgaWYgKCAkcHVibGljYW4tPnBhcmFtKCd0eXBlJykgZXEg
J2JyYW5kJyApIHsKICAgICAgICBjcm9hayggbWFrZXRleHQoImFkZF9yZXZpc2lvbiBkb2VzIG5v
dCB3b3JrIGZvciBicmFuZHMuIikgKTsKICAgIH0KCiAgICAkcHVibGljYW4tPmFkZF9yZXZpc2lv
bigKICAgICAgICB7ICAgbGFuZyAgICAgID0+ICRvcHRze2xhbmd9LAogICAgICAgICAgICByZXZu
dW1iZXIgPT4gJG9wdHN7cmV2bnVtYmVyfSwKICAgICAgICAgICAgZGF0ZSAgICAgID0+ICRvcHRz
e2RhdGV9LAogICAgICAgICAgICBtZW1iZXJzICAgPT4gJG9wdHN7bWVtYmVyfSwKICAgICAgICAg
ICAgZW1haWwgICAgID0+ICRvcHRze2VtYWlsfSwKICAgICAgICAgICAgZmlyc3RuYW1lID0+ICRv
cHRze2ZpcnN0bmFtZX0sCiAgICAgICAgICAgIHN1cm5hbWUgICA9PiAkb3B0c3tzdXJuYW1lfSwK
ICAgICAgICB9CiAgICApOwp9CgppZiAoICRhY3Rpb24gZXEgJ3BhY2thZ2UnICkgewogICAgbXkg
JGJ1aWxkZXIgPSBQdWJsaWNhbjo6QnVpbGRlcjo6RG9jQm9vazQtPm5ldygpOwogICAgaWYgKCAk
cHVibGljYW4tPnBhcmFtKCd0eXBlJykgZXEgJ2JyYW5kJyApIHsKICAgICAgICAkYnVpbGRlci0+
cGFja2FnZV9icmFuZCggeyBiaW5hcnkgPT4gJG9wdHN7YmluYXJ5fSB9ICk7CiAgICB9CiAgICBl
bHNpZiAoICRwdWJsaWNhbi0+cGFyYW0oJ3dlYl9ob21lJykgfHwgJHB1YmxpY2FuLT5wYXJhbSgn
d2ViX3R5cGUnKSApIHsKICAgICAgICAkYnVpbGRlci0+cGFja2FnZV9ob21lKCB7IGJpbmFyeSA9
PiAkb3B0c3tiaW5hcnl9IH0gKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRidWlsZGVyLT5w
YWNrYWdlKAogICAgICAgICAgICB7ICAgbGFuZyAgICAgICAgICA9PiAkb3B0c3tsYW5nfSwKICAg
ICAgICAgICAgICAgIGRlc2t0b3AgICAgICAgPT4gJG9wdHN7ZGVza3RvcH0sCiAgICAgICAgICAg
ICAgICBzaG9ydF9zaWdodGVkID0+ICRvcHRze3Nob3J0X3NpZ2h0ZWR9LAogICAgICAgICAgICAg
ICAgYmluYXJ5ICAgICAgICA9PiAkb3B0c3tiaW5hcnl9CiAgICAgICAgICAgIH0KICAgICAgICAp
OwogICAgfQoKICAgIGlmICggJG9wdHN7YnJld30gKSB7CgogICAgICAgIG15IEBmaWxlbGlzdCA9
IEZpbGU6OkZpbmQ6OlJ1bGUtPmZpbGUtPm5hbWUoJyouc3JjLnJwbScpCiAgICAgICAgICAgIC0+
aW4oICRwdWJsaWNhbi0+cGFyYW0oJ3RtcF9kaXInKSApOwoKICAgICAgICBteSAkc3JwbSA9IHBv
cChAZmlsZWxpc3QpOwoKICAgICAgICBteSBAYnJld19hcmdzID0gKCAiYnJldyIsICJidWlsZCIg
KTsKICAgICAgICBwdXNoKCBAYnJld19hcmdzLCAiLS1zY3JhdGNoIiApIGlmICggJG9wdHN7c2Ny
YXRjaH0gKTsKICAgICAgICBpZiAoICRvcHRzeyd3YWl0J30gKSB7CiAgICAgICAgICAgIHB1c2go
IEBicmV3X2FyZ3MsICItLXdhaXQiICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAg
ICAgICBwdXNoKCBAYnJld19hcmdzLCAiLS1ub3dhaXQiICk7CiAgICAgICAgfQoKICAgICAgICBw
dXNoKCBAYnJld19hcmdzLCAkcHVibGljYW4tPnBhcmFtKCdicmV3X2Rpc3QnKSApOwoKICAgICAg
ICBpZiAoIC1mICIkc3JwbSIgKSB7CiAgICAgICAgICAgIG15ICRyZXN1bHQgPSBzeXN0ZW0oIEBi
cmV3X2FyZ3MsICIkc3JwbSIgKTsKICAgICAgICAgICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICAg
ICAgICAgIGNyb2FrKCBtYWtldGV4dCgiQnJldyBkaWVkLCBlcnJvciAkcmVzdWx0OiAnJCEnIikg
KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY3Jv
YWsoIG1ha2V0ZXh0KCJDYW4ndCBsb2NhdGUgc3JwbSwgcGFja2FnaW5nIGFib3J0ZWQiKSApOwog
ICAgICAgIH0KICAgIH0KfQoKaWYgKCAkYWN0aW9uIGVxICdpbnN0YWxsX2Jvb2snICkgewogICAg
bXkgJHNpdGVfY29uZmlnID0gJG9wdHN7c2l0ZV9jb25maWd9IHx8IHVuZGVmOwogICAgbXkgJHdz
ID0gUHVibGljYW46OldlYlNpdGUtPm5ldyggeyBzaXRlX2NvbmZpZyA9PiAkc2l0ZV9jb25maWcg
fSApOwoKICAgIGlmICggJHB1YmxpY2FuLT5wYXJhbSgnd2ViX2hvbWUnKSB8fCAkcHVibGljYW4t
PnBhcmFtKCd3ZWJfdHlwZScpICkgewogICAgICAgIGNyb2FrKCBtYWtldGV4dCgiY2FuJ3QgZmlu
ZCAncHVibGlzaCcgZGlyZWN0b3J5IikgKQogICAgICAgICAgICB1bmxlc3MgKCAtZCAiJG9wdHN7
cHViX2Rpcn0vaG9tZSIgKTsKICAgICAgICByY29weSggIiRvcHRze3B1Yl9kaXJ9L2hvbWUvKiIs
ICR3cy0+dG9jX3BhdGgoKSAuICIvLiIgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRs
YW5nID0gJG9wdHN7bGFuZ30KICAgICAgICAgICAgfHwgY3JvYWsoIG1ha2V0ZXh0KCAiW18xXSBp
cyBhIHJlcXVpcmVkIGFyZ3VtZW50IiwgJ2xhbmcnICkgKTsKICAgICAgICBteSAkcHJvZHVjdCAg
ICAgICA9ICRwdWJsaWNhbi0+cGFyYW0oJ3Byb2R1Y3QnKTsKICAgICAgICBteSAkdmVyc2lvbiAg
ICAgICA9ICRwdWJsaWNhbi0+cGFyYW0oJ3ZlcnNpb24nKTsKICAgICAgICBteSAkbmFtZSAgICAg
ICAgICA9ICRwdWJsaWNhbi0+cGFyYW0oJ2RvY25hbWUnKTsKICAgICAgICBteSAkcHJvZHVjdF9s
YWJlbCA9ICRwdWJsaWNhbi0+cGFyYW0oJ3dlYl9wcm9kdWN0X2xhYmVsJyk7CiAgICAgICAgbXkg
JHZlcnNpb25fbGFiZWwgPSAkcHVibGljYW4tPnBhcmFtKCd3ZWJfdmVyc2lvbl9sYWJlbCcpOwog
ICAgICAgIG15ICRuYW1lX2xhYmVsICAgID0gJHB1YmxpY2FuLT5wYXJhbSgnd2ViX25hbWVfbGFi
ZWwnKTsKICAgICAgICBteSAkc29ydF9vcmRlciAgICA9ICRwdWJsaWNhbi0+cGFyYW0oJ3NvcnRf
b3JkZXInKTsKCiAgICAgICAgbXkgJGJ1aWxkZXI7CiAgICAgICAgaWYgKCAkb3B0c3tkdGR2ZXJ9
ICYmICRvcHRze2R0ZHZlcn0gPX4gL141LyApIHsKICAgICAgICAgICAgJGJ1aWxkZXIgPSBQdWJs
aWNhbjo6QnVpbGRlcjo6RG9jQm9vazUtPm5ldygpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgJGJ1aWxkZXIgPSBQdWJsaWNhbjo6QnVpbGRlcjo6RG9jQm9vazQtPm5ldygp
OwogICAgICAgIH0KCiAgICAgICAgbXkgJHN1YnRpdGxlID0gJGJ1aWxkZXItPmdldF9zdWJ0aXRs
ZSggeyBsYW5nID0+ICRsYW5nIH0gKTsKICAgICAgICBteSAkYWJzdHJhY3QgPSAkYnVpbGRlci0+
Z2V0X2Fic3RyYWN0KCB7IGxhbmcgPT4gJGxhbmcgfSApOwoKICAgICAgICBjcm9haygKICAgICAg
ICAgICAgbWFrZXRleHQoCiAgICAgICAgICAgICAgICAiY2FuJ3QgZmluZCBwdWJsaXNoIGRpcmVj
dG9yeSAnW18xXS9bXzJdJyIsICRvcHRze3B1Yl9kaXJ9LAogICAgICAgICAgICAgICAgJGxhbmcK
ICAgICAgICAgICAgKQogICAgICAgICkgdW5sZXNzICggLWQgIiRvcHRze3B1Yl9kaXJ9LyRsYW5n
IiApOwoKICAgICAgICBteSAkdHlwZSAgICAgPSAkcHVibGljYW4tPnBhcmFtKCd0eXBlJyk7CiAg
ICAgICAgbXkgJHhtbF9sYW5nID0gJHB1YmxpY2FuLT5wYXJhbSgneG1sX2xhbmcnKTsKICAgICAg
ICBteSAkdG1wX2RpciAgPSAkcHVibGljYW4tPnBhcmFtKCd0bXBfZGlyJyk7CgogICAgICAgICMg
Z2V0IHRyYW5zbGF0ZWQgbGFiZWxzCiMjIEJVR0JVRyB0aGlzIGlzIGNvcGllZCBmcm9tIFB1Ymxp
Y2FuLnBtLCBtYXliZSBhIHN1YiBmb3IgdGhlc2U/CiAgICAgICAgaWYgKCAkbGFuZyBuZSAkeG1s
X2xhbmcgKSB7CiAgICAgICAgICAgIG15ICR4bWxfZmlsZSA9ICIkdG1wX2Rpci8kbGFuZy94bWwv
JHR5cGUiIC4gJ19JbmZvLnhtbCc7CiAgICAgICAgICAgICR4bWxfZmlsZSA9ICIkdG1wX2Rpci8k
bGFuZy94bWwvIiAuICRwdWJsaWNhbi0+cGFyYW0oJ2luZm9fZmlsZScpCiAgICAgICAgICAgICAg
ICBpZiAoICRwdWJsaWNhbi0+cGFyYW0oJ2luZm9fZmlsZScpICk7CgogICAgICAgICAgICBjcm9h
ayggbWFrZXRleHQoICJDYW4ndCBsb2NhdGUgcmVxdWlyZWQgZmlsZTogW18xXSIsICR4bWxfZmls
ZSApICkKICAgICAgICAgICAgICAgIGlmICggIS1mICR4bWxfZmlsZSApOwoKICAgICAgICAgICAg
bXkgJHhtbF9kb2MgPSBYTUw6OlRyZWVCdWlsZGVyLT5uZXcoKTsKICAgICAgICAgICAgJHhtbF9k
b2MtPnBhcnNlX2ZpbGUoJHhtbF9maWxlKTsKCiAgICAgICAgICAgICMgQlVHQlVHIGNhbid0IHRy
YW5zbGF0ZSBvdmVycmlkZGVuIGxhYmVscyA6KAogICAgICAgICAgICB1bmxlc3MgKCRwcm9kdWN0
X2xhYmVsKSB7CiAgICAgICAgICAgICAgICAkcHJvZHVjdF9sYWJlbCA9IGV2YWwgewogICAgICAg
ICAgICAgICAgICAgICR4bWxfZG9jLT5yb290KCktPmxvb2tfZG93biggIl90YWciLCAicHJvZHVj
dG5hbWUiICkKICAgICAgICAgICAgICAgICAgICAgICAgLT5hc190ZXh0KCk7CiAgICAgICAgICAg
ICAgICB9OwogICAgICAgICAgICAgICAgaWYgKCRAKSB7CgogICAgIyAgICAgICAgICAgICAgICAg
ICAgY3JvYWsgbWFrZXRleHQoInByb2R1Y3RuYW1lIG5vdCBmb3VuZCBpbiBJbmZvIGZpbGUiKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICRwcm9kdWN0X2xhYmVsID1+IHMvXHMvXy9nOwoKICAgICAgICAgICAgICAgICAgICAkcHJv
ZHVjdF9sYWJlbCA9IHVuZGVmIGlmICggJHByb2R1Y3RfbGFiZWwgZXEgJHByb2R1Y3QgKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdW5sZXNzICgkbmFtZV9s
YWJlbCkgewogICAgICAgICAgICAgICAgJG5hbWVfbGFiZWwgPSBldmFsIHsKICAgICAgICAgICAg
ICAgICAgICAkeG1sX2RvYy0+cm9vdCgpLT5sb29rX2Rvd24oICJfdGFnIiwgInRpdGxlIiApLT5h
c190ZXh0KCk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgaWYgKCRAKSB7Cgog
ICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgY3JvYWsgbWFrZXRleHQoInRpdGxlIG5vdCBm
b3VuZCBpbiBJbmZvIGZpbGUiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICRuYW1lX2xhYmVsID1+IHMvXHMvXy9nOwogICAgICAg
ICAgICAgICAgICAgICRuYW1lX2xhYmVsID0gdW5kZWYgaWYgKCAkbmFtZV9sYWJlbCBlcSAkbmFt
ZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBt
a3BhdGgoICR3cy0+dG9jX3BhdGgoKSAuICIvJGxhbmciICkKICAgICAgICAgICAgdW5sZXNzICgg
LWQgJHdzLT50b2NfcGF0aCgpIC4gIi8kbGFuZyIgKTsKICAgICAgICByY29weSggIiRvcHRze3B1
Yl9kaXJ9LyRsYW5nLyoiLCAkd3MtPnRvY19wYXRoKCkgLiAiLyRsYW5nLy4iICk7CgogICAgICAg
IG15IEBmb3JtYXRzOwogICAgICAgIGZvcmVhY2ggbXkgJGZvcm1hdCAoZ2xvYigicHVibGlzaC8k
bGFuZy8kcHJvZHVjdC8kdmVyc2lvbi8qIikpIHsKICAgICAgICAgICAgJGZvcm1hdCA9fiBze3B1
Ymxpc2gvJGxhbmcvJHByb2R1Y3QvJHZlcnNpb24vfXt9ZzsKICAgICAgICAgICAgcHVzaChAZm9y
bWF0cywgJGZvcm1hdCk7CiAgICAgICAgfQoKICAgICAgICAkd3MtPnVwZGF0ZV9vcl9hZGRfZW50
cnkoCiAgICAgICAgICAgIHsgICBsYW5ndWFnZSAgICAgID0+ICRsYW5nLAogICAgICAgICAgICAg
ICAgcHJvZHVjdCAgICAgICA9PiAkcHJvZHVjdCwKICAgICAgICAgICAgICAgIHZlcnNpb24gICAg
ICAgPT4gJHZlcnNpb24sCiAgICAgICAgICAgICAgICBuYW1lICAgICAgICAgID0+ICRuYW1lLAog
ICAgICAgICAgICAgICAgZm9ybWF0cyAgICAgICA9PiBqb2luKCcsJyxAZm9ybWF0cyksCiAgICAg
ICAgICAgICAgICBwcm9kdWN0X2xhYmVsID0+ICRwcm9kdWN0X2xhYmVsLAogICAgICAgICAgICAg
ICAgdmVyc2lvbl9sYWJlbCA9PiAkdmVyc2lvbl9sYWJlbCwKICAgICAgICAgICAgICAgIG5hbWVf
bGFiZWwgICAgPT4gJG5hbWVfbGFiZWwsCiAgICAgICAgICAgICAgICBzdWJ0aXRsZSAgICAgID0+
ICRzdWJ0aXRsZSwKICAgICAgICAgICAgICAgIGFic3RyYWN0ICAgICAgPT4gJGFic3RyYWN0LAog
ICAgICAgICAgICAgICAgc29ydF9vcmRlciAgICA9PiAkc29ydF9vcmRlciwKICAgICAgICAgICAg
fQogICAgICAgICk7CiAgICB9CgogICAgJHdzLT5yZWdlbl9hbGxfdG9jKCk7Cn0KCmlmICggJGFj
dGlvbiBlcSAncmVtb3ZlX2Jvb2snICkgewogICAgbXkgJHNpdGVfY29uZmlnID0gJG9wdHN7c2l0
ZV9jb25maWd9IHx8IHVuZGVmOwogICAgbXkgJHdzID0gUHVibGljYW46OldlYlNpdGUtPm5ldygg
eyBzaXRlX2NvbmZpZyA9PiAkc2l0ZV9jb25maWcgfSApOwoKICAgIG15ICRsYW5nID0gJG9wdHN7
bGFuZ30KICAgICAgICB8fCBjcm9hayggbWFrZXRleHQoICJbXzFdIGlzIGEgcmVxdWlyZWQgYXJn
dW1lbnQiLCAnbGFuZycgKSApOwogICAgbXkgJHByb2R1Y3QgPSAkcHVibGljYW4tPnBhcmFtKCdw
cm9kdWN0Jyk7CiAgICBteSAkdmVyc2lvbiA9ICRwdWJsaWNhbi0+cGFyYW0oJ3ZlcnNpb24nKTsK
ICAgIG15ICRuYW1lICAgID0gJHB1YmxpY2FuLT5wYXJhbSgnZG9jbmFtZScpOwoKICAgICR3cy0+
ZGVsX2VudHJ5KAogICAgICAgIHsgICBsYW5ndWFnZSA9PiAkbGFuZywKICAgICAgICAgICAgcHJv
ZHVjdCAgPT4gJHByb2R1Y3QsCiAgICAgICAgICAgIHZlcnNpb24gID0+ICR2ZXJzaW9uLAogICAg
ICAgICAgICBuYW1lICAgICA9PiAkbmFtZSwKICAgICAgICB9CiAgICApOwoKICAgICMgU2luY2Ug
ZXZlcnkgZm9ybWF0IHVzZXMgdGhlIG5hbWUsIHRoaXMgZmluZHMgYWxsIHRoZSBmb3JtYXRzIGV2
ZW4gaWYgdGhleSBhcmVuJ3QgaW4gdGhlIERCLgogICAgZm9yZWFjaCBteSAkZmRpciAoRmlsZTo6
RmluZDo6UnVsZS0+bmFtZSgkbmFtZSktPmluKCIkd3MtPnt0b2NfcGF0aH0vJGxhbmcvJHByb2R1
Y3QvJHZlcnNpb24iKSkgewogICAgICAgIHJtdHJlZSgkZmRpcik7CiAgICAgICAgbXkgJGZvcm1h
dCA9ICRmZGlyOwogICAgICAgICRmb3JtYXQgPX4gc3skd3MtPnt0b2NfcGF0aH0vJGxhbmcvJHBy
b2R1Y3QvJHZlcnNpb24vfXt9OwogICAgICAgICRmb3JtYXQgPX4gc3svJG5hbWV9e307CiAgICAg
ICAgbmV4dCBpZigkZm9ybWF0IGVxICIiKTsKCiAgICAgICAgIyBpZiB3ZSBkZWxldGUgdGhlIGxh
c3Qgb2YgdGhpcyBmb3JtYXQsIHRoZW4gZGVsZXRlIHRoZSBmb3JtYXQgZGlyLgogICAgICAgICMg
QlVHQlVHIG1pZ2h0IG5lZWQgdG8gY2hlY2sgZm9yIG5vbi10ZW1wbGF0ZSBjcmVhdGVkIGZpbGVz
PyBlLmcuIGluZGV4Lmh0bWwKICAgICAgICBteSAkZGlyID0gIiR3cy0+e3RvY19wYXRofS8kbGFu
Zy8kcHJvZHVjdC8kdmVyc2lvbi8kZm9ybWF0IjsKICAgICAgICB1bmxlc3MgKCBGaWxlOjpGaW5k
OjpSdWxlLT5ub3RfbmFtZShxci8oXC58XC5cLikvKS0+aW4oJGRpcikgKSB7CiAgICAgICAgICAg
IHJtdHJlZSgkZGlyKTsKICAgICAgICAgICAgJGRpciA9ICIkd3MtPnt0b2NfcGF0aH0vJGxhbmcv
JHByb2R1Y3QvJHZlcnNpb24iOwogICAgICAgICAgICAjIGlmIHdlIGRlbGV0ZSB0aGUgbGFzdCBm
b3JtYXQgZm9yIHRoaXMgdnJlcmlzb24uLCBkZWxldGUgdGhlIHZlcnNpb24gZGlyLgogICAgICAg
ICAgICB1bmxlc3MgKCBGaWxlOjpGaW5kOjpSdWxlLT5ub3RfbmFtZShxci8oXC58XC5cLikvKS0+
aW4oJGRpcikgKSB7CiAgICAgICAgICAgICAgICBybXRyZWUoJGRpcik7CiAgICAgICAgICAgICAg
ICAkZGlyID0gIiR3cy0+e3RvY19wYXRofS8kbGFuZy8kcHJvZHVjdCI7CiAgICAgICAgICAgICAg
ICAjIGlmIHdlIGRlbGV0ZSB0aGUgbGFzdCB2ZXJzaW9uIGZvciB0aGlzIHByb2R1Y3QsIGRlbGV0
ZSB0aGUgcHJvZHVjdCBkaXIuCiAgICAgICAgICAgICAgICB1bmxlc3MgKCBGaWxlOjpGaW5kOjpS
dWxlLT5ub3RfbmFtZShxci8oXC58XC5cLikvKS0+aW4oJGRpcikgKQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgIHJtdHJlZSgkZGlyKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIEhhdmUgdG8gcmVnZW5lcmF0ZSBhbGwg
bGFuZ3VhZ2VzIGFzIHRyYW5zbGF0aW9ucyBoYXZlIHVudHJhbnNsYXRlZCBhbmQgc291cmNlIG5l
d2VyIHRhZ3MuCiAgICAkd3MtPnJlZ2VuX2FsbF90b2MoKTsKfQoKaWYgKCAkYWN0aW9uIGVxICdy
ZW5hbWUnICkgewoKICAgIG15ICRjb25mX2ZpbGUgPSAoICRvcHRze2NvbmZpZ30gfHwgJ3B1Ymxp
Y2FuLmNmZycgKTsKICAgIG15ICRjb25maWcgPSBuZXcgQ29uZmlnOjpTaW1wbGUoJGNvbmZfZmls
ZSk7CgogICAgJGNvbmZpZy0+c3ludGF4KCdodHRwJyk7CgogICAgIyBsb2FkIGluICR0eXBlX0lu
Zm8ueG1sCiAgICBteSAkZmlsZQogICAgICAgID0gJGNvbmZpZy0+cGFyYW0oJ3htbF9sYW5nJykg
LiAnLycKICAgICAgICAuICggJGNvbmZpZy0+cGFyYW0oJ3R5cGUnKSB8fCAnQm9vaycgKQogICAg
ICAgIC4gJ19JbmZvLnhtbCc7CiAgICAkZmlsZSA9ICRjb25maWctPnBhcmFtKCd4bWxfbGFuZycp
IC4gIi8iIC4gJGNvbmZpZy0+cGFyYW0oJ2luZm9fZmlsZScpCiAgICAgICAgaWYgKCAkY29uZmln
LT5wYXJhbSgnaW5mb19maWxlJykgKTsKCiAgICBteSAkY2xlYW5lciA9IFB1YmxpY2FuOjpYbWxD
bGVhbi0+bmV3KCB7IGNsZWFuX2lkID0+IDEgfSApOwoKICAgIG15ICR4bWxfZG9jID0gWE1MOjpU
cmVlQnVpbGRlci0+bmV3KAogICAgICAgIHsgJ05vRXhwYW5kJyA9PiAiMSIsICdFcnJvckNvbnRl
eHQnID0+ICIyIiB9ICk7CiAgICAkeG1sX2RvYy0+c3RvcmVfY29tbWVudHMoMSk7CiAgICAkeG1s
X2RvYy0+cGFyc2VfZmlsZSgkZmlsZSkKICAgICAgICB8fCBjcm9hayggbWFrZXRleHQoICJDYW4n
dCBvcGVuIGZpbGUgJ1tfMV0nIFtfMl0iLCAkZmlsZSwgJEAgKSApOwoKICAgIGlmICggJG9wdHN7
bmFtZX0gKSB7CgogICAgICAgICMgc2V0IG1haW5maWxlIGluIHB1YmxpY2FuLmNmZyBpZiBpdCdz
IG5vdCBzZXQKICAgICAgICB1bmxlc3MgKCAkY29uZmlnLT5wYXJhbSgnbWFpbmZpbGUnKSApIHsK
ICAgICAgICAgICAgJGNvbmZpZy0+cGFyYW0oICdtYWluZmlsZScsCiAgICAgICAgICAgICAgICAk
cHVibGljYW4tPntjb25maWd9LT5wYXJhbSgnZG9jbmFtZScpICk7CiAgICAgICAgfQoKICAgICAg
ICAjIGRlbGV0ZSBkb2NuYW1lCiAgICAgICAgJGNvbmZpZy0+ZGVsZXRlKCdkb2NuYW1lJyk7Cgog
ICAgICAgICMgQ2hhbmdlIFRpdGxlCiAgICAgICAgbXkgJHRpdGxlID0gJHhtbF9kb2MtPnJvb3Qo
KS0+bG9va19kb3duKCAiX3RhZyIsICJ0aXRsZSIgKQogICAgICAgICAgICB8fCBjcm9hayggbWFr
ZXRleHQoJ0Nhbm5vdCBsb2NhdGUgdGl0bGUgdGFnIGluIEluZm8gZmlsZSEnKSApOwogICAgICAg
ICR0aXRsZS0+ZGVsZXRlX2NvbnRlbnQoKTsKICAgICAgICAkdGl0bGUtPnB1c2hfY29udGVudCgg
JG9wdHN7bmFtZX0gKTsKICAgIH0KCiAgICAjIENoYW5nZSBQcm9kdWN0IE5hbWUKICAgIGlmICgg
JG9wdHN7cHJvZHVjdH0gKSB7CiAgICAgICAgbXkgJHByb2QgPSAkeG1sX2RvYy0+cm9vdCgpLT5s
b29rX2Rvd24oICJfdGFnIiwgInByb2R1Y3RuYW1lIiApCiAgICAgICAgICAgIHx8IGNyb2FrKAog
ICAgICAgICAgICBtYWtldGV4dCgnQ2Fubm90IGxvY2F0ZSBwcm9kdWN0bmFtZSB0YWcgaW4gSW5m
byBmaWxlIScpICk7CiAgICAgICAgJHByb2QtPmRlbGV0ZV9jb250ZW50KCk7CiAgICAgICAgJHBy
b2QtPnB1c2hfY29udGVudCggJG9wdHN7cHJvZHVjdH0gKTsKICAgIH0KCiAgICAjIENoYW5nZSBQ
cm9kdWN0IE51bWJlcgogICAgaWYgKCAkb3B0c3t2ZXJzaW9ufSApIHsKICAgICAgICBteSAkcHJv
ZF9udW0gPSAkeG1sX2RvYy0+cm9vdCgpLT5sb29rX2Rvd24oICJfdGFnIiwgInByb2R1Y3RudW1i
ZXIiICkKICAgICAgICAgICAgfHwgY3JvYWsoCiAgICAgICAgICAgIG1ha2V0ZXh0KCdDYW5ub3Qg
bG9jYXRlIHByb2R1Y3RudW1iZXIgdGFnIGluIEluZm8gZmlsZSEnKSApOwogICAgICAgICRwcm9k
X251bS0+ZGVsZXRlX2NvbnRlbnQoKTsKICAgICAgICAkcHJvZF9udW0tPnB1c2hfY29udGVudCgg
JG9wdHN7dmVyc2lvbn0gKTsKICAgIH0KCiAgICAjIHdyaXRlIG91dCBuZXcgZmlsZXMKICAgICRj
b25maWctPndyaXRlKCRjb25mX2ZpbGUpOwogICAgJGNsZWFuZXItPnByaW50X3htbCggeyB4bWxf
ZG9jID0+ICR4bWxfZG9jLCBvdXRfZmlsZSA9PiAkZmlsZSB9ICk7CgogICAgIyBjbGVhbiB1cCBt
ZW1vcnkKICAgICR4bWxfZG9jLT5yb290KCktPmRlbGV0ZSgpOwp9CgppZiAoICRhY3Rpb24gZXEg
J3JlcG9ydCcgKSB7CiAgICBteSAkZHRkdmVyID0gJHB1YmxpY2FuLT5wYXJhbSgnZHRkdmVyJyk7
CiAgICBteSAkYnVpbGRlcjsKICAgIG15ICRsYW5nICAgID0gJHB1YmxpY2FuLT5wYXJhbSgneG1s
X2xhbmcnKTsKICAgIG15ICR0bXBfZGlyID0gJHB1YmxpY2FuLT5wYXJhbSgndG1wX2RpcicpOwog
ICAgbXkgJGRvY25hbWUgPSAkcHVibGljYW4tPnBhcmFtKCdkb2NuYW1lJyk7CgogICAgaWYgKCAk
ZHRkdmVyID1+IG0vXjUvICkgewogICAgICAgICRidWlsZGVyID0gUHVibGljYW46OkJ1aWxkZXI6
OkRvY0Jvb2s1LT5uZXcoCiAgICAgICAgICAgIHsgbm92YWxpZCA9PiAkb3B0c3tub3ZhbGlkfSB9
ICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGJ1aWxkZXIgPSBQdWJsaWNhbjo6QnVpbGRl
cjo6RG9jQm9vazQtPm5ldygKICAgICAgICAgICAgeyBub3ZhbGlkID0+ICRvcHRze25vdmFsaWR9
IH0gKTsKICAgIH0KCiAgICAkYnVpbGRlci0+YnVpbGQoCiAgICAgICAgeyAgIGZvcm1hdHMgPT4g
J3R4dCcsCiAgICAgICAgICAgIGxhbmdzICAgPT4gJHB1YmxpY2FuLT5wYXJhbSgneG1sX2xhbmcn
KSwKICAgICAgICAgICAgcHViX2RpciA9PiAkb3B0c3twdWJfZGlyfSwKICAgICAgICB9CiAgICAp
OwoKICAgIG15ICRmaWxlID0gIiR0bXBfZGlyLyRsYW5nL3R4dC8kZG9jbmFtZS50eHQiOwoKICAg
IG15ICR0ZXh0ID0gbmV3IExpbmd1YTo6RU46OkZhdGhvbTsKICAgICR0ZXh0LT5hbmFseXNlX2Zp
bGUoJGZpbGUpOwogICAgcHJpbnQoICR0ZXh0LT5yZXBvcnQgKTsKfQoKaWYgKCAkYWN0aW9uIGVx
ICd6dF9wdWxsJyApIHsKICAgIG15IEB6YW5hdGFfY21kCiAgICAgICAgPSBxdyh6YW5hdGEtY2xp
IHB1bGwgLS1zcmMtZGlyIHBvdCAtLXRyYW5zLWRpciAuIC0taW5jbHVkZS1mdXp6eSAtLWxvY2Fs
ZXMpOwogICAgcHVzaCggQHphbmF0YV9jbWQsIGdldF9hbGxfbGFuZ3MoMSkgKTsKICAgIG15ICRy
ZXN1bHQgPSBzeXN0ZW0oQHphbmF0YV9jbWQpOwogICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICBj
cm9haygKICAgICAgICAgICAgbWFrZXRleHQoICJaYW5hdGEgY2FsbCBmYWlsZWQsIGVycm9yIFtf
MV06ICdbMl0nIiwgJHJlc3VsdCwgJCEgKQogICAgICAgICk7CiAgICB9Cn0KCmlmICggJGFjdGlv
biBlcSAnenRfcHVzaCcgKSB7CiAgICBteSBAemFuYXRhX2NtZAogICAgICAgID0gcXcoemFuYXRh
LWNsaSBwdXNoIC0tc3JjLWRpciBwb3QgLS10cmFucy1kaXIgLiAtLXB1c2gtdHlwZSBib3RoIC0t
Y29weS10cmFucyAwIC0tbG9jYWxlcyApOwogICAgcHVzaCggQHphbmF0YV9jbWQsIGdldF9hbGxf
bGFuZ3MoMSkgKTsKICAgIG15ICRyZXN1bHQgPSBzeXN0ZW0oQHphbmF0YV9jbWQpOwogICAgaWYg
KCRyZXN1bHQpIHsKICAgICAgICBjcm9haygKICAgICAgICAgICAgbWFrZXRleHQoICJaYW5hdGEg
Y2FsbCBmYWlsZWQsIGVycm9yIFtfMV06ICdbMl0nIiwgJHJlc3VsdCwgJCEgKQogICAgICAgICk7
CiAgICB9Cn0KCmV4aXQoMCk7CgojIFNlY3JldCBhY3Rpb24gdG8gY3JlYXRlIGJhc2ggY29tcGxl
dGlvbiBmaWxlLgojIE5vdGhpbmcgc3BlY2lhbCBqdXN0IGRvbid0IHdhbnQgdG8gY29uZnVzZSBw
ZW9wbGUgYnkgZGlzY3Vzc2luZwojIGl0IGluIHRoZSBnZW5lcmFsIGhlbHAKCnN1YiBfYmFzaF9j
b21wbGV0aW9uIHsKCiAgICBteSAkYWN0aW9ucyA9IGpvaW4oICIgIiwgc29ydCgga2V5cyglYWN0
aW9ucykgKSApOwogICAgbXkgJHV0aWxfb3B0cyA9ICIiOwogICAgZm9yZWFjaCBteSAkb3B0byAo
IHNvcnQoQHV0aWxpdHlfb3B0cykgKSB7CiAgICAgICAgJG9wdG8gPX4gcy89LiokLy9nOwogICAg
ICAgICR1dGlsX29wdHMgLj0gIi0tJG9wdG8gIjsKICAgIH0KCiAgICBteSAkdG9wID0gPDxUT1A7
CiMgcHVibGljYW4gY29tcGxldGlvbgoKX3B1YmxpY2FuKCkKewoJbG9jYWwgY3VyIHByZXYgY29t
bWFuZHMgb3B0aW9ucyBjb21tYW5kCgoJQ09NUFJFUExZPSgpCgljdXI9YF9nZXRfY3dvcmRgCiAg
ICAgICAgYnJhbmRzPWBscyAkREFUQV9ESVIvQ29tbW9uX0NvbnRlbnRgCgoJY29tbWFuZHM9JyRh
Y3Rpb25zJwoKCWlmIFtbIFwkQ09NUF9DV09SRCAtZXEgMSBdXSA7IHRoZW4KCQlpZiBbWyAiXCRj
dXIiID09IC0qIF1dOyB0aGVuCgkJCUNPTVBSRVBMWT0oIFwkKCBjb21wZ2VuIC1XICctLWhlbHAn
IC0tIFwkY3VyICkgKQoJCWVsc2UKCQkJQ09NUFJFUExZPSggXCQoIGNvbXBnZW4gLVcgIlwkY29t
bWFuZHMiIC0tIFwkY3VyICkgKQoJCWZpCgllbHNlCgkJcHJldj1cJHtDT01QX1dPUkRTW0NPTVBf
Q1dPUkQtMV19CgkJY2FzZSBcJHByZXYgaW4KCQkJQCgtLXNpdGVfY29uZmlnfC0tY29uZmlnKSkK
CQkJCV9maWxlZGlyICdjZmcnCgkJCQlyZXR1cm4gMDsKCQkJCTs7CgkJCUAoLS1sYW5nfC0tbGFu
Z3MpKQoJCQkJQ09NUFJFUExZPSggXCQoIGNvbXBnZW4gLWQgLS0gIlwkY3VyIiApICkKCQkJCXJl
dHVybiAwOwoJCQkJOzsKCQkJLS1mb3JtYXRzKQoJCQkJQ09NUFJFUExZPSggXCQoIGNvbXBnZW4g
LVcgImVjbGlwc2UgZXB1YiBkcnVwYWwtYm9vayBodG1sIGh0bWwtc2luZ2xlIGh0bWwtZGVza3Rv
cCBtYW4gcGRmIHR4dCB4bWwiIC0tIFwkY3VyICkgKQoJCQkJcmV0dXJuIDA7CgkJCQk7OwoJCQkt
LXR5cGUpCgkJCQlDT01QUkVQTFk9KCBcJCggY29tcGdlbiAtVyAiQXJ0aWNsZSBCb29rIFNldCIg
LS0gXCRjdXIgKSApCgkJCQlyZXR1cm4gMDsKCQkJCTs7CgkJCS0tYnJhbmQpCgkJCQlDT01QUkVQ
TFk9KCBcJCggY29tcGdlbiAtVyAiXCRicmFuZHMiIC0tIFwkY3VyICkgKQoJCQkJcmV0dXJuIDA7
CgkJCQk7OwoJCWVzYWMKCgkJY29tbWFuZD1cJHtDT01QX1dPUkRTWzFdfQoKCQlpZiBbWyAiXCRj
dXIiID09IC0qIF1dOyB0aGVuCgkJCSMgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIGNvbW1hbmQK
CQkJY2FzZSBcJGNvbW1hbmQgaW4KVE9QCgogICAgbXkgJG9wdGlvbnMgPSAiIjsKCiAgICBmb3Jl
YWNoIG15ICRhY3Rpb24gKCBzb3J0KCBrZXlzKCVhY3Rpb25zKSApICkgewogICAgICAgIG15ICRv
cHQgPSAiIjsKICAgICAgICBmb3JlYWNoIG15ICRvcHRpb24gKCBzb3J0KCBAeyAkYWN0aW9uc3sk
YWN0aW9ufXsnb3B0aW9ucyd9IH0gKSApIHsKICAgICAgICAgICAgJG9wdCAuPSAiLS0kb3B0aW9u
ICI7CiAgICAgICAgfQoKICAgICAgICAkb3B0aW9ucyAuPSA8PEVPTzsKCQkJCSRhY3Rpb24pCgkJ
CQkJb3B0aW9ucz0nJG9wdCcKCQkJCQk7OwpFT08KCiAgICB9CgogICAgbXkgJGJvdHRvbSA9IDw8
Qk9UVE9NOwoJCQllc2FjCgkJCW9wdGlvbnM9Ilwkb3B0aW9ucyAkdXRpbF9vcHRzIgoJCQlDT01Q
UkVQTFk9KCBcJCggY29tcGdlbiAtVyAiXCRvcHRpb25zIiAtLSBcJGN1ciApICkKCQllbHNlCgkJ
CWlmIFtbICJcJGNvbW1hbmQiID09IEAoLS1oZWxwKSBdXTsgdGhlbgoJCQkJQ09NUFJFUExZPSgg
XCQoIGNvbXBnZW4gLVcgIlwkY29tbWFuZHMiIC0tIFwkY3VyICkgKQoJCQllbHNlCgkJCQlfZmls
ZWRpcgoJCQlmaQoJCWZpCglmaQoKCXJldHVybiAwCn0KY29tcGxldGUgLUYgX3B1YmxpY2FuIHB1
YmxpY2FuCkJPVFRPTQoKICAgIG15ICRDT01QX0ZJTEU7CiAgICBvcGVuKCAkQ09NUF9GSUxFLCAi
PiIsICJjb21wbGV0aW9uL19wdWJsaWNhbiIgKQogICAgICAgIHx8IGNyb2FrKCJmaWxlIG9wZW4g
ZmFpbDogQF8iKTsKICAgIHByaW50KCAkQ09NUF9GSUxFICR0b3AgKTsKICAgIHByaW50KCAkQ09N
UF9GSUxFICRvcHRpb25zICk7CiAgICBwcmludCggJENPTVBfRklMRSAkYm90dG9tICk7CiAgICBj
bG9zZSgkQ09NUF9GSUxFKTsKICAgIHJldHVybjsKfQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7924</attachid>
            <date>2018-12-28 21:19:46 +0300</date>
            <delta_ts>2018-12-28 21:19:46 +0300</delta_ts>
            <desc>Long.pm.diff &quot;как есть&quot;</desc>
            <filename>Long.pm.diff</filename>
            <type>text/plain</type>
            <size>815</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">LS0tIC90bXAvLnByaXZhdGUvbWlrZS9oYXNoZXIvY2hyb290L3Vzci9zaGFyZS9wZXJsNS9HZXRv
cHQvTG9uZy5wbS5vcmlnCTIwMTgtMTItMDQgMjA6MjU6MTQuMDAwMDAwMDAwICswMDAwCisrKyAv
dG1wLy5wcml2YXRlL21pa2UvaGFzaGVyL2Nocm9vdC91c3Ivc2hhcmUvcGVybDUvR2V0b3B0L0xv
bmcucG0tCTIwMTgtMTItMjggMTc6NDE6NDQuMDAwMDAwMDAwICswMDAwCkBAIC05MjIsNiArOTIy
LDggQEAKICMgT3B0aW9uIGxvb2t1cC4KIHN1YiBGaW5kT3B0aW9uICgkJCQkJCkgewogCisJd2Fy
biAiRk86W0BfXSI7CisKICAgICAjIHJldHVybnMgKDEsICRvcHQsICRjdGwsICRhcmcsICRrZXkp
IGlmIG9rYXksCiAgICAgIyByZXR1cm5zICgxLCB1bmRlZikgaWYgb3B0aW9uIGluIGVycm9yLAog
ICAgICMgcmV0dXJucyAoMCkgb3RoZXJ3aXNlLgpAQCAtOTMwLDYgKzkzMiwxMCBAQAogCiAgICAg
cHJpbnQgU1RERVJSICgiPT4gZmluZCBcIiRvcHRcIlxuIikgaWYgJGRlYnVnOwogCisgICAgI3dh
cm4gJG9wdCA9fiAvXigkcHJlZml4KSguKikkL3M7CisgICAgI3dhcm4gIlpaIi5bMCwxXS0+WyRv
cHQgPX4gL14oJHByZWZpeCkoLiopJC9zXTsgCisgICAge3VzZSByZSAnZGVidWcnO3dhcm4gIlpa
Ii5bMCwxXS0+WyRvcHQgPX4gL14oJHByZWZpeCkoLiopJC9zXTt9CisKICAgICByZXR1cm4gKDAp
IHVubGVzcyBkZWZpbmVkKCRvcHQpOwogICAgIHJldHVybiAoMCkgdW5sZXNzICRvcHQgPX4gL14o
JHByZWZpeCkoLiopJC9zOwogICAgIHJldHVybiAoMCkgaWYgJG9wdCBlcSAiLSIgJiYgIWRlZmlu
ZWQgJG9wY3RsLT57Jyd9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7925</attachid>
            <date>2018-12-28 21:21:35 +0300</date>
            <delta_ts>2018-12-28 21:21:35 +0300</delta_ts>
            <desc>модифицированный /usr/share/perl5/Getopt/Long.pm (изначально из perl-base-5.26.2-alt3)</desc>
            <filename>Long.pm</filename>
            <type>text/plain</type>
            <size>82847</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">IyEgcGVybAoKIyBHZXRvcHQ6OkxvbmcucG0gLS0gVW5pdmVyc2FsIG9wdGlvbnMgcGFyc2luZwoj
IEF1dGhvciAgICAgICAgICA6IEpvaGFuIFZyb21hbnMKIyBDcmVhdGVkIE9uICAgICAgOiBUdWUg
U2VwIDExIDE1OjAwOjEyIDE5OTAKIyBMYXN0IE1vZGlmaWVkIEJ5OiBKb2hhbiBWcm9tYW5zCiMg
TGFzdCBNb2RpZmllZCBPbjogVGh1IEp1biAgOSAxNDo1MDozNyAyMDE2CiMgVXBkYXRlIENvdW50
ICAgIDogMTY5OQojIFN0YXR1cyAgICAgICAgICA6IFJlbGVhc2VkCgojIyMjIyMjIyMjIyMjIyMj
IE1vZHVsZSBQcmVhbWJsZSAjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIEdldG9wdDo6TG9uZzsK
CnVzZSA1LjAwNDsKCnVzZSBzdHJpY3Q7Cgp1c2UgdmFycyBxdygkVkVSU0lPTik7CiRWRVJTSU9O
ICAgICAgICA9ICAyLjQ5OwojIEZvciB0ZXN0aW5nIHZlcnNpb25zIG9ubHkuCnVzZSB2YXJzIHF3
KCRWRVJTSU9OX1NUUklORyk7CiRWRVJTSU9OX1NUUklORyA9ICIyLjQ5IjsKCnVzZSBFeHBvcnRl
cjsKdXNlIHZhcnMgcXcoQElTQSBARVhQT1JUIEBFWFBPUlRfT0spOwpASVNBID0gcXcoRXhwb3J0
ZXIpOwoKIyBFeHBvcnRlZCBzdWJyb3V0aW5lcy4Kc3ViIEdldE9wdGlvbnMoQCk7CQkjIGFsd2F5
cwpzdWIgR2V0T3B0aW9uc0Zyb21BcnJheShAKTsJIyBvbiBkZW1hbmQKc3ViIEdldE9wdGlvbnNG
cm9tU3RyaW5nKEApOwkjIG9uIGRlbWFuZApzdWIgQ29uZmlndXJlKEApOwkJIyBvbiBkZW1hbmQK
c3ViIEhlbHBNZXNzYWdlKEApOwkJIyBvbiBkZW1hbmQKc3ViIFZlcnNpb25NZXNzYWdlKEApOwkJ
IyBpbiBkZW1hbmQKCkJFR0lOIHsKICAgICMgSW5pdCBpbW1lZGlhdGVseSBzbyB0aGVpciBjb250
ZW50cyBjYW4gYmUgdXNlZCBpbiB0aGUgJ3VzZSB2YXJzJyBiZWxvdy4KICAgIEBFWFBPUlQgICAg
PSBxdygmR2V0T3B0aW9ucyAkUkVRVUlSRV9PUkRFUiAkUEVSTVVURSAkUkVUVVJOX0lOX09SREVS
KTsKICAgIEBFWFBPUlRfT0sgPSBxdygmSGVscE1lc3NhZ2UgJlZlcnNpb25NZXNzYWdlICZDb25m
aWd1cmUKCQkgICAgJkdldE9wdGlvbnNGcm9tQXJyYXkgJkdldE9wdGlvbnNGcm9tU3RyaW5nKTsK
fQoKIyBVc2VyIHZpc2libGUgdmFyaWFibGVzLgp1c2UgdmFycyBARVhQT1JULCBARVhQT1JUX09L
Owp1c2UgdmFycyBxdygkZXJyb3IgJGRlYnVnICRtYWpvcl92ZXJzaW9uICRtaW5vcl92ZXJzaW9u
KTsKIyBEZXByZWNhdGVkIHZpc2libGUgdmFyaWFibGVzLgp1c2UgdmFycyBxdygkYXV0b2FiYnJl
diAkZ2V0b3B0X2NvbXBhdCAkaWdub3JlY2FzZSAkYnVuZGxpbmcgJG9yZGVyCgkgICAgJHBhc3N0
aHJvdWdoKTsKIyBPZmZpY2lhbCBpbnZpc2libGUgdmFyaWFibGVzLgp1c2UgdmFycyBxdygkZ2Vu
cHJlZml4ICRjYWxsZXIgJGdudV9jb21wYXQgJGF1dG9faGVscCAkYXV0b192ZXJzaW9uICRsb25n
cHJlZml4KTsKCiMgUmVhbGx5IGludmlzaWJsZSB2YXJpYWJsZXMuCm15ICRidW5kbGluZ192YWx1
ZXM7CgojIFB1YmxpYyBzdWJyb3V0aW5lcy4Kc3ViIGNvbmZpZyhAKTsJCQkjIGRlcHJlY2F0ZWQg
bmFtZQoKIyBQcml2YXRlIHN1YnJvdXRpbmVzLgpzdWIgQ29uZmlnRGVmYXVsdHMoKTsKc3ViIFBh
cnNlT3B0aW9uU3BlYygkJCk7CnN1YiBPcHRDdGwoJCk7CnN1YiBGaW5kT3B0aW9uKCQkJCQkKTsK
c3ViIFZhbGlkVmFsdWUgKCQkJCQkKTsKCiMjIyMjIyMjIyMjIyMjIyMgTG9jYWwgVmFyaWFibGVz
ICMjIyMjIyMjIyMjIyMjIyMKCiMgJHJlcXVlc3RlZF92ZXJzaW9uIGhvbGRzIHRoZSB2ZXJzaW9u
IHRoYXQgd2FzIG1lbnRpb25lZCBpbiB0aGUgJ3VzZScKIyBvciAncmVxdWlyZScsIGlmIGFueS4g
SXQgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMKIyBmZWF0dXJlcy4K
bXkgJHJlcXVlc3RlZF92ZXJzaW9uID0gMDsKCiMjIyMjIyMjIyMjIyMjIyMgUmVzaWRlbnQgc3Vi
cm91dGluZXMgIyMjIyMjIyMjIyMjIyMjIwoKc3ViIENvbmZpZ0RlZmF1bHRzKCkgewogICAgIyBI
YW5kbGUgUE9TSVggY29tcGxpYW5jeS4KICAgIGlmICggZGVmaW5lZCAkRU5WeyJQT1NJWExZX0NP
UlJFQ1QifSApIHsKCSRnZW5wcmVmaXggPSAiKC0tfC0pIjsKCSRhdXRvYWJicmV2ID0gMDsJCSMg
bm8gYXV0b21hdGljIGFiYnJldiBvZiBvcHRpb25zCgkkYnVuZGxpbmcgPSAwOwkJCSMgbm8gYnVu
ZGxpbmcgb2Ygc2luZ2xlIGxldHRlciBzd2l0Y2hlcwoJJGdldG9wdF9jb21wYXQgPSAwOwkJIyBk
aXNhbGxvdyAnKycgdG8gc3RhcnQgb3B0aW9ucwoJJG9yZGVyID0gJFJFUVVJUkVfT1JERVI7CiAg
ICB9CiAgICBlbHNlIHsKCSRnZW5wcmVmaXggPSAiKC0tfC18XFwrKSI7CgkkYXV0b2FiYnJldiA9
IDE7CQkjIGF1dG9tYXRpYyBhYmJyZXYgb2Ygb3B0aW9ucwoJJGJ1bmRsaW5nID0gMDsJCQkjIGJ1
bmRsaW5nIG9mZiBieSBkZWZhdWx0CgkkZ2V0b3B0X2NvbXBhdCA9IDE7CQkjIGFsbG93ICcrJyB0
byBzdGFydCBvcHRpb25zCgkkb3JkZXIgPSAkUEVSTVVURTsKICAgIH0KICAgICMgT3RoZXIgY29u
ZmlndXJhYmxlIHNldHRpbmdzLgogICAgJGRlYnVnID0gMDsJCQkjIGZvciBkZWJ1Z2dpbmcKICAg
ICRlcnJvciA9IDA7CQkJIyBlcnJvciB0YWxseQogICAgJGlnbm9yZWNhc2UgPSAxOwkJIyBpZ25v
cmUgY2FzZSB3aGVuIG1hdGNoaW5nIG9wdGlvbnMKICAgICRwYXNzdGhyb3VnaCA9IDA7CQkjIGxl
YXZlIHVucmVjb2duaXplZCBvcHRpb25zIGFsb25lCiAgICAkZ251X2NvbXBhdCA9IDA7CQkjIHJl
cXVpcmUgLS1vcHQ9dmFsIGlmIHZhbHVlIGlzIG9wdGlvbmFsCiAgICAkbG9uZ3ByZWZpeCA9ICIo
LS0pIjsgICAgICAgIyB3aGF0IGRvZXMgYSBsb25nIHByZWZpeCBsb29rIGxpa2UKICAgICRidW5k
bGluZ192YWx1ZXMgPSAwOwkjIG5vIGJ1bmRsaW5nIG9mIHZhbHVlcwp9CgojIE92ZXJyaWRlIGlt
cG9ydC4Kc3ViIGltcG9ydCB7CiAgICBteSAkcGtnID0gc2hpZnQ7CQkjIHBhY2thZ2UKICAgIG15
IEBzeW1zID0gKCk7CQkjIHN5bWJvbHMgdG8gaW1wb3J0CiAgICBteSBAY29uZmlnID0gKCk7CQkj
IGNvbmZpZ3VyYXRpb24KICAgIG15ICRkZXN0ID0gXEBzeW1zOwkJIyBzeW1ib2xzIGZpcnN0CiAg
ICBmb3IgKCBAXyApIHsKCWlmICggJF8gZXEgJzpjb25maWcnICkgewoJICAgICRkZXN0ID0gXEBj
b25maWc7CSMgY29uZmlnIG5leHQKCSAgICBuZXh0OwoJfQoJcHVzaChAJGRlc3QsICRfKTsJIyBw
dXNoCiAgICB9CiAgICAjIEhpZGUgb25lIGxldmVsIGFuZCBjYWxsIHN1cGVyLgogICAgbG9jYWwg
JEV4cG9ydGVyOjpFeHBvcnRMZXZlbCA9IDE7CiAgICBwdXNoKEBzeW1zLCBxdygmR2V0T3B0aW9u
cykpIGlmIEBzeW1zOyAjIGFsd2F5cyBleHBvcnQgR2V0T3B0aW9ucwogICAgJHJlcXVlc3RlZF92
ZXJzaW9uID0gMDsKICAgICRwa2ctPlNVUEVSOjppbXBvcnQoQHN5bXMpOwogICAgIyBBbmQgY29u
ZmlndXJlLgogICAgQ29uZmlndXJlKEBjb25maWcpIGlmIEBjb25maWc7Cn0KCiMjIyMjIyMjIyMj
IyMjIyMgSW5pdGlhbGl6YXRpb24gIyMjIyMjIyMjIyMjIyMjIwoKIyBWYWx1ZXMgZm9yICRvcmRl
ci4gU2VlIEdOVSBnZXRvcHQuYyBmb3IgZGV0YWlscy4KKCRSRVFVSVJFX09SREVSLCAkUEVSTVVU
RSwgJFJFVFVSTl9JTl9PUkRFUikgPSAoMC4uMik7CiMgVmVyc2lvbiBtYWpvci9taW5vciBudW1i
ZXJzLgooJG1ham9yX3ZlcnNpb24sICRtaW5vcl92ZXJzaW9uKSA9ICRWRVJTSU9OID1+IC9eKFxk
KylcLihcZCspLzsKCkNvbmZpZ0RlZmF1bHRzKCk7CgojIyMjIyMjIyMjIyMjIyMjIE9PIEludGVy
ZmFjZSAjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIEdldG9wdDo6TG9uZzo6UGFyc2VyOwoKIyBT
dG9yZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4gU2luY2UgQ29uZmlnRGVm
YXVsdHMgaGFzCiMganVzdCBiZWVuIGNhbGxlZCwgd2hhdCB3ZSBnZXQgZnJvbSBDb25maWd1cmUg
aXMgdGhlIGRlZmF1bHQuCm15ICRkZWZhdWx0X2NvbmZpZyA9IGRvIHsKICAgIEdldG9wdDo6TG9u
Zzo6Q29uZmlndXJlICgpCn07CgpzdWIgbmV3IHsKICAgIG15ICR0aGF0ID0gc2hpZnQ7CiAgICBt
eSAkY2xhc3MgPSByZWYoJHRoYXQpIHx8ICR0aGF0OwogICAgbXkgJWF0dHMgPSBAXzsKCiAgICAj
IFJlZ2lzdGVyIHRoZSBjYWxsZXJzIHBhY2thZ2UuCiAgICBteSAkc2VsZiA9IHsgY2FsbGVyX3Br
ZyA9PiAoY2FsbGVyKVswXSB9OwoKICAgIGJsZXNzICgkc2VsZiwgJGNsYXNzKTsKCiAgICAjIFBy
b2Nlc3MgY29uZmlnIGF0dHJpYnV0ZXMuCiAgICBpZiAoIGRlZmluZWQgJGF0dHN7Y29uZmlnfSAp
IHsKCW15ICRzYXZlID0gR2V0b3B0OjpMb25nOjpDb25maWd1cmUgKCRkZWZhdWx0X2NvbmZpZywg
QHskYXR0c3tjb25maWd9fSk7Cgkkc2VsZi0+e3NldHRpbmdzfSA9IEdldG9wdDo6TG9uZzo6Q29u
ZmlndXJlICgkc2F2ZSk7CglkZWxldGUgKCRhdHRze2NvbmZpZ30pOwogICAgfQogICAgIyBFbHNl
IHVzZSBkZWZhdWx0IGNvbmZpZy4KICAgIGVsc2UgewoJJHNlbGYtPntzZXR0aW5nc30gPSAkZGVm
YXVsdF9jb25maWc7CiAgICB9CgogICAgaWYgKCAlYXR0cyApIHsJCSMgT29wcwoJZGllKF9fUEFD
S0FHRV9fLiI6IHVuaGFuZGxlZCBhdHRyaWJ1dGVzOiAiLgoJICAgIGpvaW4oIiAiLCBzb3J0KGtl
eXMoJWF0dHMpKSkuIlxuIik7CiAgICB9CgogICAgJHNlbGY7Cn0KCnN1YiBjb25maWd1cmUgewog
ICAgbXkgKCRzZWxmKSA9IHNoaWZ0OwoKICAgICMgUmVzdG9yZSBzZXR0aW5ncywgbWVyZ2UgbmV3
IHNldHRpbmdzIGluLgogICAgbXkgJHNhdmUgPSBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSAoJHNl
bGYtPntzZXR0aW5nc30sIEBfKTsKCiAgICAjIFJlc3RvcmUgb3JpZyBjb25maWcgYW5kIHNhdmUg
dGhlIG5ldyBjb25maWcuCiAgICAkc2VsZi0+e3NldHRpbmdzfSA9IEdldG9wdDo6TG9uZzo6Q29u
ZmlndXJlICgkc2F2ZSk7Cn0KCnN1YiBnZXRvcHRpb25zIHsKICAgIG15ICgkc2VsZikgPSBzaGlm
dDsKCiAgICByZXR1cm4gJHNlbGYtPmdldG9wdGlvbnNmcm9tYXJyYXkoXEBBUkdWLCBAXyk7Cn0K
CnN1YiBnZXRvcHRpb25zZnJvbWFycmF5IHsKICAgIG15ICgkc2VsZikgPSBzaGlmdDsKCiAgICAj
IFJlc3RvcmUgY29uZmlnIHNldHRpbmdzLgogICAgbXkgJHNhdmUgPSBHZXRvcHQ6Okxvbmc6OkNv
bmZpZ3VyZSAoJHNlbGYtPntzZXR0aW5nc30pOwoKICAgICMgQ2FsbCBtYWluIHJvdXRpbmUuCiAg
ICBteSAkcmV0ID0gMDsKICAgICRHZXRvcHQ6Okxvbmc6OmNhbGxlciA9ICRzZWxmLT57Y2FsbGVy
X3BrZ307CgogICAgZXZhbCB7CgkjIExvY2FsbHkgc2V0IGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGRl
ZmF1bHQsIG90aGVyd2lzZSBpdCB3aWxsCgkjIGJlIGNhbGxlZCBpbXBsaWNpdGx5IGhlcmUsIGFu
ZCBhZ2FpbiBleHBsaWNpdGx5IHdoZW4gd2UgdHJ5CgkjIHRvIGRlbGl2ZXIgdGhlIG1lc3NhZ2Vz
LgoJbG9jYWwgKCRTSUd7X19ESUVfX30pID0gJ0RFRkFVTFQnOwoJJHJldCA9IEdldG9wdDo6TG9u
Zzo6R2V0T3B0aW9uc0Zyb21BcnJheSAoQF8pOwogICAgfTsKCiAgICAjIFJlc3RvcmUgc2F2ZWQg
c2V0dGluZ3MuCiAgICBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSAoJHNhdmUpOwoKICAgICMgSGFu
ZGxlIGVycm9ycyBhbmQgcmV0dXJuIHZhbHVlLgogICAgZGllICgkQCkgaWYgJEA7CiAgICByZXR1
cm4gJHJldDsKfQoKcGFja2FnZSBHZXRvcHQ6Okxvbmc7CgojIyMjIyMjIyMjIyMjIyMjIEJhY2sg
dG8gTm9ybWFsICMjIyMjIyMjIyMjIyMjIyMKCiMgSW5kaWNlcyBpbiBvcHRpb24gY29udHJvbCBp
bmZvLgojIE5vdGUgdGhhdCBQYXJzZU9wdGlvbnMgdXNlcyB0aGUgZmllbGRzIGRpcmVjdGx5LiBT
ZWFyY2ggZm9yICdoYXJkLXdpcmVkJy4KdXNlIGNvbnN0YW50IENUTF9UWVBFICAgID0+IDA7CiN1
c2UgY29uc3RhbnQgICBDVExfVFlQRV9GTEFHICAgPT4gJyc7CiN1c2UgY29uc3RhbnQgICBDVExf
VFlQRV9ORUcgICAgPT4gJyEnOwojdXNlIGNvbnN0YW50ICAgQ1RMX1RZUEVfSU5DUiAgID0+ICcr
JzsKI3VzZSBjb25zdGFudCAgIENUTF9UWVBFX0lOVCAgICA9PiAnaSc7CiN1c2UgY29uc3RhbnQg
ICBDVExfVFlQRV9JTlRJTkMgPT4gJ0knOwojdXNlIGNvbnN0YW50ICAgQ1RMX1RZUEVfWElOVCAg
ID0+ICdvJzsKI3VzZSBjb25zdGFudCAgIENUTF9UWVBFX0ZMT0FUICA9PiAnZic7CiN1c2UgY29u
c3RhbnQgICBDVExfVFlQRV9TVFJJTkcgPT4gJ3MnOwoKdXNlIGNvbnN0YW50IENUTF9DTkFNRSAg
ID0+IDE7Cgp1c2UgY29uc3RhbnQgQ1RMX0RFRkFVTFQgPT4gMjsKCnVzZSBjb25zdGFudCBDVExf
REVTVCAgICA9PiAzOwogdXNlIGNvbnN0YW50ICAgQ1RMX0RFU1RfU0NBTEFSID0+IDA7CiB1c2Ug
Y29uc3RhbnQgICBDVExfREVTVF9BUlJBWSAgPT4gMTsKIHVzZSBjb25zdGFudCAgIENUTF9ERVNU
X0hBU0ggICA9PiAyOwogdXNlIGNvbnN0YW50ICAgQ1RMX0RFU1RfQ09ERSAgID0+IDM7Cgp1c2Ug
Y29uc3RhbnQgQ1RMX0FNSU4gICAgPT4gNDsKdXNlIGNvbnN0YW50IENUTF9BTUFYICAgID0+IDU7
CgojIEZGVS4KI3VzZSBjb25zdGFudCBDVExfUkFOR0UgICA9PiA7CiN1c2UgY29uc3RhbnQgQ1RM
X1JFUEVBVCAgPT4gOwoKIyBSYXRoZXIgbGliZXJhbCBwYXR0ZXJucyB0byBtYXRjaCBudW1iZXJz
Lgp1c2UgY29uc3RhbnQgUEFUX0lOVCAgID0+ICJbLStdP18qWzAtOV1bMC05X10qIjsKdXNlIGNv
bnN0YW50IFBBVF9YSU5UICA9PgogICIoPzoiLgoJICAiWy0rXT9fKlsxLTldWzAtOV9dKiIuCiAg
InwiLgoJICAiMHhfKlswLTlhLWZdWzAtOWEtZl9dKiIuCiAgInwiLgoJICAiMGJfKlswMV1bMDFf
XSoiLgogICJ8Ii4KCSAgIjBbMC03X10qIi4KICAiKSI7CnVzZSBjb25zdGFudCBQQVRfRkxPQVQg
PT4KICAiWy0rXT8iLgkJCSMgb3B0aW9uYWwgc2lnbgogICIoPz1bMC05Ll0pIi4JCQkjIG11c3Qg
c3RhcnQgd2l0aCBkaWdpdCBvciBkZWMucG9pbnQKICAiWzAtOV9dKiIuCQkJIyBkaWdpdHMgYmVm
b3JlIHRoZSBkZWMucG9pbnQKICAiKFwuWzAtOV9dKyk/Ii4JCSMgb3B0aW9uYWwgZnJhY3Rpb24K
ICAiKFtlRV1bLStdP1swLTlfXSspPyI7CSMgb3B0aW9uYWwgZXhwb25lbnQKCnN1YiBHZXRPcHRp
b25zKEApIHsKICAgICMgU2hpZnQgaW4gZGVmYXVsdCBhcnJheS4KICAgIHVuc2hpZnQoQF8sIFxA
QVJHVik7CiAgICAjIFRyeSB0byBrZWVwIGNhbGxlcigpIGFuZCBDYXJwIGNvbnNpc3RlbnQuCiAg
ICBnb3RvICZHZXRPcHRpb25zRnJvbUFycmF5Owp9CgpzdWIgR2V0T3B0aW9uc0Zyb21TdHJpbmco
QCkgewogICAgbXkgKCRzdHJpbmcpID0gc2hpZnQ7CiAgICByZXF1aXJlIFRleHQ6OlBhcnNlV29y
ZHM7CiAgICBteSAkYXJncyA9IFsgVGV4dDo6UGFyc2VXb3Jkczo6c2hlbGx3b3Jkcygkc3RyaW5n
KSBdOwogICAgJGNhbGxlciB8fD0gKGNhbGxlcilbMF07CSMgY3VycmVudCBjb250ZXh0CiAgICBt
eSAkcmV0ID0gR2V0T3B0aW9uc0Zyb21BcnJheSgkYXJncywgQF8pOwogICAgcmV0dXJuICggJHJl
dCwgJGFyZ3MgKSBpZiB3YW50YXJyYXk7CiAgICBpZiAoIEAkYXJncyApIHsKCSRyZXQgPSAwOwoJ
d2FybigiR2V0T3B0aW9uc0Zyb21TdHJpbmc6IEV4Y2VzcyBkYXRhIFwiQCRhcmdzXCIgaW4gc3Ry
aW5nIFwiJHN0cmluZ1wiXG4iKTsKICAgIH0KICAgICRyZXQ7Cn0KCnN1YiBHZXRPcHRpb25zRnJv
bUFycmF5KEApIHsKCiAgICBteSAoJGFyZ3YsIEBvcHRpb25saXN0KSA9IEBfOwkjIGxvY2FsIGNv
cHkgb2YgdGhlIG9wdGlvbiBkZXNjcmlwdGlvbnMKICAgIG15ICRhcmdlbmQgPSAnLS0nOwkJIyBv
cHRpb24gbGlzdCB0ZXJtaW5hdG9yCiAgICBteSAlb3BjdGwgPSAoKTsJCSMgdGFibGUgb2Ygb3B0
aW9uIHNwZWNzCiAgICBteSAkcGtnID0gJGNhbGxlciB8fCAoY2FsbGVyKVswXTsJIyBjdXJyZW50
IGNvbnRleHQKCQkJCSMgTmVlZGVkIGlmIGxpbmthZ2UgaXMgb21pdHRlZC4KICAgIG15IEByZXQg
PSAoKTsJCSMgYWNjdW0gZm9yIG5vbi1vcHRpb25zCiAgICBteSAlbGlua2FnZTsJCSMgbGlua2Fn
ZQogICAgbXkgJHVzZXJsaW5rYWdlOwkJIyB1c2VyIHN1cHBsaWVkIEhBU0gKICAgIG15ICRvcHQ7
CQkJIyBjdXJyZW50IG9wdGlvbgogICAgbXkgJHByZWZpeCA9ICRnZW5wcmVmaXg7CSMgY3VycmVu
dCBwcmVmaXgKCiAgICAkZXJyb3IgPSAnJzsKCiAgICBpZiAoICRkZWJ1ZyApIHsKCSMgQXZvaWQg
c29tZSB3YXJuaW5ncyBpZiBkZWJ1Z2dpbmcuCglsb2NhbCAoJF5XKSA9IDA7CglwcmludCBTVERF
UlIKCSAgKCJHZXRvcHQ6OkxvbmcgJEdldG9wdDo6TG9uZzo6VkVSU0lPTiAiLAoJICAgImNhbGxl
ZCBmcm9tIHBhY2thZ2UgXCIkcGtnXCIuIiwKCSAgICJcbiAgIiwKCSAgICJhcmd2OiAiLAoJICAg
ZGVmaW5lZCgkYXJndikKCSAgID8gVU5JVkVSU0FMOjppc2EoICRhcmd2LCAnQVJSQVknICkgPyAi
KEAkYXJndikiIDogJGFyZ3YKCSAgIDogIjx1bmRlZj4iLAoJICAgIlxuICAiLAoJICAgImF1dG9h
YmJyZXY9JGF1dG9hYmJyZXYsIi4KCSAgICJidW5kbGluZz0kYnVuZGxpbmcsIiwKCSAgICJidW5k
bGluZ192YWx1ZXM9JGJ1bmRsaW5nX3ZhbHVlcywiLAoJICAgImdldG9wdF9jb21wYXQ9JGdldG9w
dF9jb21wYXQsIiwKCSAgICJnbnVfY29tcGF0PSRnbnVfY29tcGF0LCIsCgkgICAib3JkZXI9JG9y
ZGVyLCIsCgkgICAiXG4gICIsCgkgICAiaWdub3JlY2FzZT0kaWdub3JlY2FzZSwiLAoJICAgInJl
cXVlc3RlZF92ZXJzaW9uPSRyZXF1ZXN0ZWRfdmVyc2lvbiwiLAoJICAgInBhc3N0aHJvdWdoPSRw
YXNzdGhyb3VnaCwiLAoJICAgImdlbnByZWZpeD1cIiRnZW5wcmVmaXhcIiwiLAoJICAgImxvbmdw
cmVmaXg9XCIkbG9uZ3ByZWZpeFwiLiIsCgkgICAiXG4iKTsKICAgIH0KCiAgICAjIENoZWNrIGZv
ciByZWYgSEFTSCBhcyBmaXJzdCBhcmd1bWVudC4KICAgICMgRmlyc3QgYXJndW1lbnQgbWF5IGJl
IGFuIG9iamVjdC4gSXQncyBPSyB0byB1c2UgdGhpcyBhcyBsb25nCiAgICAjIGFzIGl0IGlzIHJl
YWxseSBhIGhhc2ggdW5kZXJuZWF0aC4KICAgICR1c2VybGlua2FnZSA9IHVuZGVmOwogICAgaWYg
KCBAb3B0aW9ubGlzdCAmJiByZWYoJG9wdGlvbmxpc3RbMF0pIGFuZAoJIFVOSVZFUlNBTDo6aXNh
KCRvcHRpb25saXN0WzBdLCdIQVNIJykgKSB7CgkkdXNlcmxpbmthZ2UgPSBzaGlmdCAoQG9wdGlv
bmxpc3QpOwoJcHJpbnQgU1RERVJSICgiPT4gdXNlciBsaW5rYWdlOiAkdXNlcmxpbmthZ2VcbiIp
IGlmICRkZWJ1ZzsKICAgIH0KCiAgICAjIFNlZSBpZiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUg
b3B0aW9ubGlzdCBjb250YWlucyBvcHRpb24KICAgICMgc3RhcnRlciBjaGFyYWN0ZXJzLgogICAg
IyBCZSBjYXJlZnVsIG5vdCB0byBpbnRlcnByZXQgJzw+JyBhcyBvcHRpb24gc3RhcnRlcnMuCiAg
ICBpZiAoIEBvcHRpb25saXN0ICYmICRvcHRpb25saXN0WzBdID1+IC9eXFcrJC8KCSAmJiAhKCRv
cHRpb25saXN0WzBdIGVxICc8PicKCSAgICAgICYmIEBvcHRpb25saXN0ID4gMAoJICAgICAgJiYg
cmVmKCRvcHRpb25saXN0WzFdKSkgKSB7CgkkcHJlZml4ID0gc2hpZnQgKEBvcHRpb25saXN0KTsK
CSMgVHVybiBpbnRvIHJlZ2V4cC4gTmVlZHMgdG8gYmUgcGFyZW50aGVzaXplZCEKCSRwcmVmaXgg
PX4gcy8oXFcpL1xcJDEvZzsKCSRwcmVmaXggPSAiKFsiIC4gJHByZWZpeCAuICJdKSI7Cglwcmlu
dCBTVERFUlIgKCI9PiBwcmVmaXg9XCIkcHJlZml4XCJcbiIpIGlmICRkZWJ1ZzsKICAgIH0KCiAg
ICAjIFZlcmlmeSBjb3JyZWN0bmVzcyBvZiBvcHRpb25saXN0LgogICAgJW9wY3RsID0gKCk7CiAg
ICB3aGlsZSAoIEBvcHRpb25saXN0ICkgewoJbXkgJG9wdCA9IHNoaWZ0IChAb3B0aW9ubGlzdCk7
CgoJdW5sZXNzICggZGVmaW5lZCgkb3B0KSApIHsKCSAgICAkZXJyb3IgLj0gIlVuZGVmaW5lZCBh
cmd1bWVudCBpbiBvcHRpb24gc3BlY1xuIjsKCSAgICBuZXh0OwoJfQoKCSMgU3RyaXAgbGVhZGlu
ZyBwcmVmaXggc28gcGVvcGxlIGNhbiBzcGVjaWZ5ICItLWZvbz1pIiBpZiB0aGV5IGxpa2UuCgkk
b3B0ID0gJCsgaWYgJG9wdCA9fiAvXiRwcmVmaXgrKC4qKSQvczsKCglpZiAoICRvcHQgZXEgJzw+
JyApIHsKCSAgICBpZiAoIChkZWZpbmVkICR1c2VybGlua2FnZSkKCQkmJiAhKEBvcHRpb25saXN0
ID4gMCAmJiByZWYoJG9wdGlvbmxpc3RbMF0pKQoJCSYmIChleGlzdHMgJHVzZXJsaW5rYWdlLT57
JG9wdH0pCgkJJiYgcmVmKCR1c2VybGlua2FnZS0+eyRvcHR9KSApIHsKCQl1bnNoaWZ0IChAb3B0
aW9ubGlzdCwgJHVzZXJsaW5rYWdlLT57JG9wdH0pOwoJICAgIH0KCSAgICB1bmxlc3MgKCBAb3B0
aW9ubGlzdCA+IDAKCQkgICAgJiYgcmVmKCRvcHRpb25saXN0WzBdKSAmJiByZWYoJG9wdGlvbmxp
c3RbMF0pIGVxICdDT0RFJyApIHsKCQkkZXJyb3IgLj0gIk9wdGlvbiBzcGVjIDw+IHJlcXVpcmVz
IGEgcmVmZXJlbmNlIHRvIGEgc3Vicm91dGluZVxuIjsKCQkjIEtpbGwgdGhlIGxpbmthZ2UgKHRv
IGF2b2lkIGFub3RoZXIgZXJyb3IpLgoJCXNoaWZ0IChAb3B0aW9ubGlzdCkKCQkgIGlmIEBvcHRp
b25saXN0ICYmIHJlZigkb3B0aW9ubGlzdFswXSk7CgkJbmV4dDsKCSAgICB9CgkgICAgJGxpbmth
Z2V7Jzw+J30gPSBzaGlmdCAoQG9wdGlvbmxpc3QpOwoJICAgIG5leHQ7Cgl9CgoJIyBQYXJzZSBv
cHRpb24gc3BlYy4KCW15ICgkbmFtZSwgJG9yaWcpID0gUGFyc2VPcHRpb25TcGVjICgkb3B0LCBc
JW9wY3RsKTsKCXVubGVzcyAoIGRlZmluZWQgJG5hbWUgKSB7CgkgICAgIyBGYWlsZWQuICRvcmln
IGNvbnRhaW5zIHRoZSBlcnJvciBtZXNzYWdlLiBTb3JyeSBmb3IgdGhlIGFidXNlLgoJICAgICRl
cnJvciAuPSAkb3JpZzsKCSAgICAjIEtpbGwgdGhlIGxpbmthZ2UgKHRvIGF2b2lkIGFub3RoZXIg
ZXJyb3IpLgoJICAgIHNoaWZ0IChAb3B0aW9ubGlzdCkKCSAgICAgIGlmIEBvcHRpb25saXN0ICYm
IHJlZigkb3B0aW9ubGlzdFswXSk7CgkgICAgbmV4dDsKCX0KCgkjIElmIG5vIGxpbmthZ2UgaXMg
c3VwcGxpZWQgaW4gdGhlIEBvcHRpb25saXN0LCBjb3B5IGl0IGZyb20KCSMgdGhlIHVzZXJsaW5r
YWdlIGlmIGF2YWlsYWJsZS4KCWlmICggZGVmaW5lZCAkdXNlcmxpbmthZ2UgKSB7CgkgICAgdW5s
ZXNzICggQG9wdGlvbmxpc3QgPiAwICYmIHJlZigkb3B0aW9ubGlzdFswXSkgKSB7CgkJaWYgKCBl
eGlzdHMgJHVzZXJsaW5rYWdlLT57JG9yaWd9ICYmCgkJICAgICByZWYoJHVzZXJsaW5rYWdlLT57
JG9yaWd9KSApIHsKCQkgICAgcHJpbnQgU1RERVJSICgiPT4gZm91bmQgdXNlcmxpbmthZ2UgZm9y
IFwiJG9yaWdcIjogIiwKCQkJCSAgIiR1c2VybGlua2FnZS0+eyRvcmlnfVxuIikKCQkJaWYgJGRl
YnVnOwoJCSAgICB1bnNoaWZ0IChAb3B0aW9ubGlzdCwgJHVzZXJsaW5rYWdlLT57JG9yaWd9KTsK
CQl9CgkJZWxzZSB7CgkJICAgICMgRG8gbm90aGluZy4gQmVpbmcgdW5kZWZpbmVkIHdpbGwgYmUg
aGFuZGxlZCBsYXRlci4KCQkgICAgbmV4dDsKCQl9CgkgICAgfQoJfQoKCSMgQ29weSB0aGUgbGlu
a2FnZS4gSWYgb21pdHRlZCwgbGluayB0byBnbG9iYWwgdmFyaWFibGUuCglpZiAoIEBvcHRpb25s
aXN0ID4gMCAmJiByZWYoJG9wdGlvbmxpc3RbMF0pICkgewoJICAgIHByaW50IFNUREVSUiAoIj0+
IGxpbmsgXCIkb3JpZ1wiIHRvICRvcHRpb25saXN0WzBdXG4iKQoJCWlmICRkZWJ1ZzsKCSAgICBt
eSAkcmwgPSByZWYoJGxpbmthZ2V7JG9yaWd9ID0gc2hpZnQgKEBvcHRpb25saXN0KSk7CgoJICAg
IGlmICggJHJsIGVxICJBUlJBWSIgKSB7CgkJJG9wY3RseyRuYW1lfVtDVExfREVTVF0gPSBDVExf
REVTVF9BUlJBWTsKCSAgICB9CgkgICAgZWxzaWYgKCAkcmwgZXEgIkhBU0giICkgewoJCSRvcGN0
bHskbmFtZX1bQ1RMX0RFU1RdID0gQ1RMX0RFU1RfSEFTSDsKCSAgICB9CgkgICAgZWxzaWYgKCAk
cmwgZXEgIlNDQUxBUiIgfHwgJHJsIGVxICJSRUYiICkgewojCQlpZiAoICRvcGN0bHskbmFtZX1b
Q1RMX0RFU1RdID09IENUTF9ERVNUX0FSUkFZICkgewojCQkgICAgbXkgJHQgPSAkbGlua2FnZXsk
b3JpZ307CiMJCSAgICAkJHQgPSAkbGlua2FnZXskb3JpZ30gPSBbXTsKIwkJfQojCQllbHNpZiAo
ICRvcGN0bHskbmFtZX1bQ1RMX0RFU1RdID09IENUTF9ERVNUX0hBU0ggKSB7CiMJCX0KIwkJZWxz
ZSB7CgkJICAgICMgT2suCiMJCX0KCSAgICB9CgkgICAgZWxzaWYgKCAkcmwgZXEgIkNPREUiICkg
ewoJCSMgT2suCgkgICAgfQoJICAgIGVsc2UgewoJCSRlcnJvciAuPSAiSW52YWxpZCBvcHRpb24g
bGlua2FnZSBmb3IgXCIkb3B0XCJcbiI7CgkgICAgfQoJfQoJZWxzZSB7CgkgICAgIyBMaW5rIHRv
IGdsb2JhbCAkb3B0X1hYWCB2YXJpYWJsZS4KCSAgICAjIE1ha2Ugc3VyZSBhIHZhbGlkIHBlcmwg
aWRlbnRpZmllciByZXN1bHRzLgoJICAgIG15ICRvdiA9ICRvcmlnOwoJICAgICRvdiA9fiBzL1xX
L18vZzsKCSAgICBpZiAoICRvcGN0bHskbmFtZX1bQ1RMX0RFU1RdID09IENUTF9ERVNUX0FSUkFZ
ICkgewoJCXByaW50IFNUREVSUiAoIj0+IGxpbmsgXCIkb3JpZ1wiIHRvIFxAJHBrZyIsIjo6b3B0
XyRvdlxuIikKCQkgICAgaWYgJGRlYnVnOwoJCWV2YWwgKCJcJGxpbmthZ2V7XCRvcmlnfSA9IFxc
XEAiLiRwa2cuIjo6b3B0XyRvdjsiKTsKCSAgICB9CgkgICAgZWxzaWYgKCAkb3BjdGx7JG5hbWV9
W0NUTF9ERVNUXSA9PSBDVExfREVTVF9IQVNIICkgewoJCXByaW50IFNUREVSUiAoIj0+IGxpbmsg
XCIkb3JpZ1wiIHRvIFwlJHBrZyIsIjo6b3B0XyRvdlxuIikKCQkgICAgaWYgJGRlYnVnOwoJCWV2
YWwgKCJcJGxpbmthZ2V7XCRvcmlnfSA9IFxcXCUiLiRwa2cuIjo6b3B0XyRvdjsiKTsKCSAgICB9
CgkgICAgZWxzZSB7CgkJcHJpbnQgU1RERVJSICgiPT4gbGluayBcIiRvcmlnXCIgdG8gXCQkcGtn
IiwiOjpvcHRfJG92XG4iKQoJCSAgICBpZiAkZGVidWc7CgkJZXZhbCAoIlwkbGlua2FnZXtcJG9y
aWd9ID0gXFxcJCIuJHBrZy4iOjpvcHRfJG92OyIpOwoJICAgIH0KCX0KCglpZiAoICRvcGN0bHsk
bmFtZX1bQ1RMX1RZUEVdIGVxICdJJwoJICAgICAmJiAoICRvcGN0bHskbmFtZX1bQ1RMX0RFU1Rd
ID09IENUTF9ERVNUX0FSUkFZCgkJICB8fCAkb3BjdGx7JG5hbWV9W0NUTF9ERVNUXSA9PSBDVExf
REVTVF9IQVNIICkKCSAgICkgewoJICAgICRlcnJvciAuPSAiSW52YWxpZCBvcHRpb24gbGlua2Fn
ZSBmb3IgXCIkb3B0XCJcbiI7Cgl9CgogICAgfQoKICAgICRlcnJvciAuPSAiR2V0T3B0aW9uc0Zy
b21BcnJheTogMXN0IHBhcmFtZXRlciBpcyBub3QgYW4gYXJyYXkgcmVmZXJlbmNlXG4iCiAgICAg
IHVubGVzcyAkYXJndiAmJiBVTklWRVJTQUw6OmlzYSggJGFyZ3YsICdBUlJBWScgKTsKCiAgICAj
IEJhaWwgb3V0IGlmIGVycm9ycyBmb3VuZC4KICAgIGRpZSAoJGVycm9yKSBpZiAkZXJyb3I7CiAg
ICAkZXJyb3IgPSAwOwoKICAgICMgU3VwcGx5IC0tdmVyc2lvbiBhbmQgLS1oZWxwIHN1cHBvcnQs
IGlmIG5lZWRlZCBhbmQgYWxsb3dlZC4KICAgIGlmICggZGVmaW5lZCgkYXV0b192ZXJzaW9uKSA/
ICRhdXRvX3ZlcnNpb24gOiAoJHJlcXVlc3RlZF92ZXJzaW9uID49IDIuMzIwMykgKSB7CglpZiAo
ICFkZWZpbmVkKCRvcGN0bHt2ZXJzaW9ufSkgKSB7CgkgICAgJG9wY3Rse3ZlcnNpb259ID0gWycn
LCd2ZXJzaW9uJywwLENUTF9ERVNUX0NPREUsdW5kZWZdOwoJICAgICRsaW5rYWdle3ZlcnNpb259
ID0gXCZWZXJzaW9uTWVzc2FnZTsKCX0KCSRhdXRvX3ZlcnNpb24gPSAxOwogICAgfQogICAgaWYg
KCBkZWZpbmVkKCRhdXRvX2hlbHApID8gJGF1dG9faGVscCA6ICgkcmVxdWVzdGVkX3ZlcnNpb24g
Pj0gMi4zMjAzKSApIHsKCWlmICggIWRlZmluZWQoJG9wY3Rse2hlbHB9KSAmJiAhZGVmaW5lZCgk
b3BjdGx7Jz8nfSkgKSB7CgkgICAgJG9wY3Rse2hlbHB9ID0gJG9wY3Rseyc/J30gPSBbJycsJ2hl
bHAnLDAsQ1RMX0RFU1RfQ09ERSx1bmRlZl07CgkgICAgJGxpbmthZ2V7aGVscH0gPSBcJkhlbHBN
ZXNzYWdlOwoJfQoJJGF1dG9faGVscCA9IDE7CiAgICB9CgogICAgIyBTaG93IHRoZSBvcHRpb25z
IHRhYmxlcyBpZiBkZWJ1Z2dpbmcuCiAgICBpZiAoICRkZWJ1ZyApIHsKCW15ICgkYXJyb3csICRr
LCAkdik7CgkkYXJyb3cgPSAiPT4gIjsKCXdoaWxlICggKCRrLCR2KSA9IGVhY2goJW9wY3RsKSAp
IHsKCSAgICBwcmludCBTVERFUlIgKCRhcnJvdywgIlwkb3BjdGx7JGt9ID0gJHYgIiwgT3B0Q3Rs
KCR2KSwgIlxuIik7CgkgICAgJGFycm93ID0gIiAgICI7Cgl9CiAgICB9CgogICAgIyBQcm9jZXNz
IGFyZ3VtZW50IGxpc3QKICAgIG15ICRnb29uID0gMTsKICAgIHdoaWxlICggJGdvb24gJiYgQCRh
cmd2ID4gMCApIHsKCgkjIEdldCBuZXh0IGFyZ3VtZW50LgoJJG9wdCA9IHNoaWZ0IChAJGFyZ3Yp
OwoJcHJpbnQgU1RERVJSICgiPT4gYXJnIFwiIiwgJG9wdCwgIlwiXG4iKSBpZiAkZGVidWc7CgoJ
IyBEb3VibGUgZGFzaCBpcyBvcHRpb24gbGlzdCB0ZXJtaW5hdG9yLgoJaWYgKCBkZWZpbmVkKCRv
cHQpICYmICRvcHQgZXEgJGFyZ2VuZCApIHsKCSAgcHVzaCAoQHJldCwgJGFyZ2VuZCkgaWYgJHBh
c3N0aHJvdWdoOwoJICBsYXN0OwoJfQoKCSMgTG9vayBpdCB1cC4KCW15ICR0cnlvcHQgPSAkb3B0
OwoJbXkgJGZvdW5kOwkJIyBzdWNjZXNzIHN0YXR1cwoJbXkgJGtleTsJCSMga2V5IChpZiBoYXNo
IHR5cGUpCglteSAkYXJnOwkJIyBvcHRpb24gYXJndW1lbnQKCW15ICRjdGw7CQkjIHRoZSBvcGN0
bCBlbnRyeQoKCSgkZm91bmQsICRvcHQsICRjdGwsICRhcmcsICRrZXkpID0KCSAgRmluZE9wdGlv
biAoJGFyZ3YsICRwcmVmaXgsICRhcmdlbmQsICRvcHQsIFwlb3BjdGwpOwoKCWlmICggJGZvdW5k
ICkgewoKCSAgICAjIEZpbmRPcHRpb24gdW5kZWZpbmVzICRvcHQgaW4gY2FzZSBvZiBlcnJvcnMu
CgkgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCAkb3B0OwoKCSAgICBteSAkYXJnY250ID0gMDsKCSAg
ICB3aGlsZSAoIGRlZmluZWQgJGFyZyApIHsKCgkJIyBHZXQgdGhlIGNhbm9uaWNhbCBuYW1lLgoJ
CXByaW50IFNUREVSUiAoIj0+IGNuYW1lIGZvciBcIiRvcHRcIiBpcyAiKSBpZiAkZGVidWc7CgkJ
JG9wdCA9ICRjdGwtPltDVExfQ05BTUVdOwoJCXByaW50IFNUREVSUiAoIlwiJGN0bC0+W0NUTF9D
TkFNRV1cIlxuIikgaWYgJGRlYnVnOwoKCQlpZiAoIGRlZmluZWQgJGxpbmthZ2V7JG9wdH0gKSB7
CgkJICAgIHByaW50IFNUREVSUiAoIj0+IHJlZihcJEx7JG9wdH0pIC0+ICIsCgkJCQkgIHJlZigk
bGlua2FnZXskb3B0fSksICJcbiIpIGlmICRkZWJ1ZzsKCgkJICAgIGlmICggcmVmKCRsaW5rYWdl
eyRvcHR9KSBlcSAnU0NBTEFSJwoJCQkgfHwgcmVmKCRsaW5rYWdleyRvcHR9KSBlcSAnUkVGJyAp
IHsKCQkJaWYgKCAkY3RsLT5bQ1RMX1RZUEVdIGVxICcrJyApIHsKCQkJICAgIHByaW50IFNUREVS
UiAoIj0+IFwkXCRMeyRvcHR9ICs9IFwiJGFyZ1wiXG4iKQoJCQkgICAgICBpZiAkZGVidWc7CgkJ
CSAgICBpZiAoIGRlZmluZWQgJHskbGlua2FnZXskb3B0fX0gKSB7CgkJCSAgICAgICAgJHskbGlu
a2FnZXskb3B0fX0gKz0gJGFyZzsKCQkJICAgIH0KCQkgICAgICAgICAgICBlbHNlIHsKCQkJICAg
ICAgICAkeyRsaW5rYWdleyRvcHR9fSA9ICRhcmc7CgkJCSAgICB9CgkJCX0KCQkJZWxzaWYgKCAk
Y3RsLT5bQ1RMX0RFU1RdID09IENUTF9ERVNUX0FSUkFZICkgewoJCQkgICAgcHJpbnQgU1RERVJS
ICgiPT4gcmVmKFwkTHskb3B0fSkgYXV0by12aXZpZmllZCIsCgkJCQkJICAiIHRvIEFSUkFZXG4i
KQoJCQkgICAgICBpZiAkZGVidWc7CgkJCSAgICBteSAkdCA9ICRsaW5rYWdleyRvcHR9OwoJCQkg
ICAgJCR0ID0gJGxpbmthZ2V7JG9wdH0gPSBbXTsKCQkJICAgIHByaW50IFNUREVSUiAoIj0+IHB1
c2goXEB7XCRMeyRvcHR9LCBcIiRhcmdcIilcbiIpCgkJCSAgICAgIGlmICRkZWJ1ZzsKCQkJICAg
IHB1c2ggKEB7JGxpbmthZ2V7JG9wdH19LCAkYXJnKTsKCQkJfQoJCQllbHNpZiAoICRjdGwtPltD
VExfREVTVF0gPT0gQ1RMX0RFU1RfSEFTSCApIHsKCQkJICAgIHByaW50IFNUREVSUiAoIj0+IHJl
ZihcJEx7JG9wdH0pIGF1dG8tdml2aWZpZWQiLAoJCQkJCSAgIiB0byBIQVNIXG4iKQoJCQkgICAg
ICBpZiAkZGVidWc7CgkJCSAgICBteSAkdCA9ICRsaW5rYWdleyRvcHR9OwoJCQkgICAgJCR0ID0g
JGxpbmthZ2V7JG9wdH0gPSB7fTsKCQkJICAgIHByaW50IFNUREVSUiAoIj0+IFwkXCRMeyRvcHR9
LT57JGtleX0gPSBcIiRhcmdcIlxuIikKCQkJICAgICAgaWYgJGRlYnVnOwoJCQkgICAgJGxpbmth
Z2V7JG9wdH0tPnska2V5fSA9ICRhcmc7CgkJCX0KCQkJZWxzZSB7CgkJCSAgICBwcmludCBTVERF
UlIgKCI9PiBcJFwkTHskb3B0fSA9IFwiJGFyZ1wiXG4iKQoJCQkgICAgICBpZiAkZGVidWc7CgkJ
CSAgICAkeyRsaW5rYWdleyRvcHR9fSA9ICRhcmc7CgkJICAgICAgICB9CgkJICAgIH0KCQkgICAg
ZWxzaWYgKCByZWYoJGxpbmthZ2V7JG9wdH0pIGVxICdBUlJBWScgKSB7CgkJCXByaW50IFNUREVS
UiAoIj0+IHB1c2goXEB7XCRMeyRvcHR9LCBcIiRhcmdcIilcbiIpCgkJCSAgICBpZiAkZGVidWc7
CgkJCXB1c2ggKEB7JGxpbmthZ2V7JG9wdH19LCAkYXJnKTsKCQkgICAgfQoJCSAgICBlbHNpZiAo
IHJlZigkbGlua2FnZXskb3B0fSkgZXEgJ0hBU0gnICkgewoJCQlwcmludCBTVERFUlIgKCI9PiBc
JFwkTHskb3B0fS0+eyRrZXl9ID0gXCIkYXJnXCJcbiIpCgkJCSAgICBpZiAkZGVidWc7CgkJCSRs
aW5rYWdleyRvcHR9LT57JGtleX0gPSAkYXJnOwoJCSAgICB9CgkJICAgIGVsc2lmICggcmVmKCRs
aW5rYWdleyRvcHR9KSBlcSAnQ09ERScgKSB7CgkJCXByaW50IFNUREVSUiAoIj0+ICZMeyRvcHR9
KFwiJG9wdFwiIiwKCQkJCSAgICAgICRjdGwtPltDVExfREVTVF0gPT0gQ1RMX0RFU1RfSEFTSCA/
ICIsIFwiJGtleVwiIiA6ICIiLAoJCQkJICAgICAgIiwgXCIkYXJnXCIpXG4iKQoJCQkgICAgaWYg
JGRlYnVnOwoJCQlteSAkZXZhbF9lcnJvciA9IGRvIHsKCQkJICAgIGxvY2FsICRAOwoJCQkgICAg
bG9jYWwgJFNJR3tfX0RJRV9ffSAgPSAnREVGQVVMVCc7CgkJCSAgICBldmFsIHsKCQkJCSZ7JGxp
bmthZ2V7JG9wdH19CgkJCQkgIChHZXRvcHQ6Okxvbmc6OkNhbGxCYWNrLT5uZXcKCQkJCSAgIChu
YW1lICAgID0+ICRvcHQsCgkJCQkgICAgY3RsICAgICA9PiAkY3RsLAoJCQkJICAgIG9wY3RsICAg
PT4gXCVvcGN0bCwKCQkJCSAgICBsaW5rYWdlID0+IFwlbGlua2FnZSwKCQkJCSAgICBwcmVmaXgg
ID0+ICRwcmVmaXgsCgkJCQkgICApLAoJCQkJICAgJGN0bC0+W0NUTF9ERVNUXSA9PSBDVExfREVT
VF9IQVNIID8gKCRrZXkpIDogKCksCgkJCQkgICAkYXJnKTsKCQkJICAgIH07CgkJCSAgICAkQDsK
CQkJfTsKCQkJcHJpbnQgU1RERVJSICgiPT4gZGllKCRldmFsX2Vycm9yKVxuIikKCQkJICBpZiAk
ZGVidWcgJiYgJGV2YWxfZXJyb3IgbmUgJyc7CgkJCWlmICggJGV2YWxfZXJyb3IgPX4gL14hLyAp
IHsKCQkJICAgIGlmICggJGV2YWxfZXJyb3IgPX4gL14hRklOSVNIXGIvICkgewoJCQkJJGdvb24g
PSAwOwoJCQkgICAgfQoJCQl9CgkJCWVsc2lmICggJGV2YWxfZXJyb3IgbmUgJycgKSB7CgkJCSAg
ICB3YXJuICgkZXZhbF9lcnJvcik7CgkJCSAgICAkZXJyb3IrKzsKCQkJfQoJCSAgICB9CgkJICAg
IGVsc2UgewoJCQlwcmludCBTVERFUlIgKCJJbnZhbGlkIFJFRiB0eXBlIFwiIiwgcmVmKCRsaW5r
YWdleyRvcHR9KSwKCQkJCSAgICAgICJcIiBpbiBsaW5rYWdlXG4iKTsKCQkJZGllKCJHZXRvcHQ6
OkxvbmcgLS0gaW50ZXJuYWwgZXJyb3IhXG4iKTsKCQkgICAgfQoJCX0KCQkjIE5vIGVudHJ5IGlu
IGxpbmthZ2UgbWVhbnMgZW50cnkgaW4gdXNlcmxpbmthZ2UuCgkJZWxzaWYgKCAkY3RsLT5bQ1RM
X0RFU1RdID09IENUTF9ERVNUX0FSUkFZICkgewoJCSAgICBpZiAoIGRlZmluZWQgJHVzZXJsaW5r
YWdlLT57JG9wdH0gKSB7CgkJCXByaW50IFNUREVSUiAoIj0+IHB1c2goXEB7XCRMeyRvcHR9fSwg
XCIkYXJnXCIpXG4iKQoJCQkgICAgaWYgJGRlYnVnOwoJCQlwdXNoIChAeyR1c2VybGlua2FnZS0+
eyRvcHR9fSwgJGFyZyk7CgkJICAgIH0KCQkgICAgZWxzZSB7CgkJCXByaW50IFNUREVSUiAoIj0+
XCRMeyRvcHR9ID0gW1wiJGFyZ1wiXVxuIikKCQkJICAgIGlmICRkZWJ1ZzsKCQkJJHVzZXJsaW5r
YWdlLT57JG9wdH0gPSBbJGFyZ107CgkJICAgIH0KCQl9CgkJZWxzaWYgKCAkY3RsLT5bQ1RMX0RF
U1RdID09IENUTF9ERVNUX0hBU0ggKSB7CgkJICAgIGlmICggZGVmaW5lZCAkdXNlcmxpbmthZ2Ut
Pnskb3B0fSApIHsKCQkJcHJpbnQgU1RERVJSICgiPT4gXCRMeyRvcHR9LT57JGtleX0gPSBcIiRh
cmdcIlxuIikKCQkJICAgIGlmICRkZWJ1ZzsKCQkJJHVzZXJsaW5rYWdlLT57JG9wdH0tPnska2V5
fSA9ICRhcmc7CgkJICAgIH0KCQkgICAgZWxzZSB7CgkJCXByaW50IFNUREVSUiAoIj0+XCRMeyRv
cHR9ID0geyRrZXkgPT4gXCIkYXJnXCJ9XG4iKQoJCQkgICAgaWYgJGRlYnVnOwoJCQkkdXNlcmxp
bmthZ2UtPnskb3B0fSA9IHska2V5ID0+ICRhcmd9OwoJCSAgICB9CgkJfQoJCWVsc2UgewoJCSAg
ICBpZiAoICRjdGwtPltDVExfVFlQRV0gZXEgJysnICkgewoJCQlwcmludCBTVERFUlIgKCI9PiBc
JEx7JG9wdH0gKz0gXCIkYXJnXCJcbiIpCgkJCSAgaWYgJGRlYnVnOwoJCQlpZiAoIGRlZmluZWQg
JHVzZXJsaW5rYWdlLT57JG9wdH0gKSB7CgkJCSAgICAkdXNlcmxpbmthZ2UtPnskb3B0fSArPSAk
YXJnOwoJCQl9CgkJCWVsc2UgewoJCQkgICAgJHVzZXJsaW5rYWdlLT57JG9wdH0gPSAkYXJnOwoJ
CQl9CgkJICAgIH0KCQkgICAgZWxzZSB7CgkJCXByaW50IFNUREVSUiAoIj0+XCRMeyRvcHR9ID0g
XCIkYXJnXCJcbiIpIGlmICRkZWJ1ZzsKCQkJJHVzZXJsaW5rYWdlLT57JG9wdH0gPSAkYXJnOwoJ
CSAgICB9CgkJfQoKCQkkYXJnY250Kys7CgkJbGFzdCBpZiAkYXJnY250ID49ICRjdGwtPltDVExf
QU1BWF0gJiYgJGN0bC0+W0NUTF9BTUFYXSAhPSAtMTsKCQl1bmRlZigkYXJnKTsKCgkJIyBOZWVk
IG1vcmUgYXJncz8KCQlpZiAoICRhcmdjbnQgPCAkY3RsLT5bQ1RMX0FNSU5dICkgewoJCSAgICBp
ZiAoIEAkYXJndiApIHsKCQkJaWYgKCBWYWxpZFZhbHVlKCRjdGwsICRhcmd2LT5bMF0sIDEsICRh
cmdlbmQsICRwcmVmaXgpICkgewoJCQkgICAgJGFyZyA9IHNoaWZ0KEAkYXJndik7CgkJCSAgICBp
ZiAoICRjdGwtPltDVExfVFlQRV0gPX4gL15baUlvXSQvICkgewoJCQkJJGFyZyA9fiB0ci9fLy9k
OwoJCQkJJGFyZyA9ICRjdGwtPltDVExfVFlQRV0gZXEgJ28nICYmICRhcmcgPX4gL14wLwoJCQkJ
ICA/IG9jdCgkYXJnKQoJCQkJICA6IDArJGFyZwoJCQkgICAgfQoJCQkgICAgKCRrZXksJGFyZykg
PSAkYXJnID1+IC9eKFtePV0rKT0oLiopLwoJCQkgICAgICBpZiAkY3RsLT5bQ1RMX0RFU1RdID09
IENUTF9ERVNUX0hBU0g7CgkJCSAgICBuZXh0OwoJCQl9CgkJCXdhcm4oIlZhbHVlIFwiJCRhcmd2
WzBdXCIgaW52YWxpZCBmb3Igb3B0aW9uICRvcHRcbiIpOwoJCQkkZXJyb3IrKzsKCQkgICAgfQoJ
CSAgICBlbHNlIHsKCQkJd2FybigiSW5zdWZmaWNpZW50IGFyZ3VtZW50cyBmb3Igb3B0aW9uICRv
cHRcbiIpOwoJCQkkZXJyb3IrKzsKCQkgICAgfQoJCX0KCgkJIyBBbnkgbW9yZSBhcmdzPwoJCWlm
ICggQCRhcmd2ICYmIFZhbGlkVmFsdWUoJGN0bCwgJGFyZ3YtPlswXSwgMCwgJGFyZ2VuZCwgJHBy
ZWZpeCkgKSB7CgkJICAgICRhcmcgPSBzaGlmdChAJGFyZ3YpOwoJCSAgICBpZiAoICRjdGwtPltD
VExfVFlQRV0gPX4gL15baUlvXSQvICkgewoJCQkkYXJnID1+IHRyL18vL2Q7CgkJCSRhcmcgPSAk
Y3RsLT5bQ1RMX1RZUEVdIGVxICdvJyAmJiAkYXJnID1+IC9eMC8KCQkJICA/IG9jdCgkYXJnKQoJ
CQkgIDogMCskYXJnCgkJICAgIH0KCQkgICAgKCRrZXksJGFyZykgPSAkYXJnID1+IC9eKFtePV0r
KT0oLiopLwoJCSAgICAgIGlmICRjdGwtPltDVExfREVTVF0gPT0gQ1RMX0RFU1RfSEFTSDsKCQkg
ICAgbmV4dDsKCQl9CgkgICAgfQoJfQoKCSMgTm90IGFuIG9wdGlvbi4gU2F2ZSBpdCBpZiB3ZSAk
UEVSTVVURSBhbmQgZG9uJ3QgaGF2ZSBhIDw+LgoJZWxzaWYgKCAkb3JkZXIgPT0gJFBFUk1VVEUg
KSB7CgkgICAgIyBUcnkgbm9uLW9wdGlvbnMgY2FsbC1iYWNrLgoJICAgIG15ICRjYjsKCSAgICBp
ZiAoIGRlZmluZWQgKCRjYiA9ICRsaW5rYWdleyc8Pid9KSApIHsKCQlwcmludCBTVERFUlIgKCI9
PiAmTHskdHJ5b3B0fShcIiR0cnlvcHRcIilcbiIpCgkJICBpZiAkZGVidWc7CgkJbXkgJGV2YWxf
ZXJyb3IgPSBkbyB7CgkJICAgIGxvY2FsICRAOwoJCSAgICBsb2NhbCAkU0lHe19fRElFX199ICA9
ICdERUZBVUxUJzsKCQkgICAgZXZhbCB7CgkJCSMgVGhlIGFyZyB0byA8PiBjYW5ub3QgYmUgdGhl
IENhbGxCYWNrIG9iamVjdAoJCQkjIHNpbmNlIGl0IG1heSBiZSBwYXNzZWQgdG8gb3RoZXIgbW9k
dWxlcyB0aGF0CgkJCSMgZ2V0IGNvbmZ1c2VkIChlLmcuLCBBcmNoaXZlOjpUYXIpLiBXZWxsLAoJ
CQkjIGl0J3Mgbm90IHJlbGV2YW50IGZvciB0aGlzIGNhbGxiYWNrIGFueXdheS4KCQkJJiRjYigk
dHJ5b3B0KTsKCQkgICAgfTsKCQkgICAgJEA7CgkJfTsKCQlwcmludCBTVERFUlIgKCI9PiBkaWUo
JGV2YWxfZXJyb3IpXG4iKQoJCSAgaWYgJGRlYnVnICYmICRldmFsX2Vycm9yIG5lICcnOwoJCWlm
ICggJGV2YWxfZXJyb3IgPX4gL14hLyApIHsKCQkgICAgaWYgKCAkZXZhbF9lcnJvciA9fiAvXiFG
SU5JU0hcYi8gKSB7CgkJCSRnb29uID0gMDsKCQkgICAgfQoJCX0KCQllbHNpZiAoICRldmFsX2Vy
cm9yIG5lICcnICkgewoJCSAgICB3YXJuICgkZXZhbF9lcnJvcik7CgkJICAgICRlcnJvcisrOwoJ
CX0KCSAgICB9CgkgICAgZWxzZSB7CgkJcHJpbnQgU1RERVJSICgiPT4gc2F2aW5nIFwiJHRyeW9w
dFwiICIsCgkJCSAgICAgICIobm90IGFuIG9wdGlvbiwgbWF5IHBlcm11dGUpXG4iKSBpZiAkZGVi
dWc7CgkJcHVzaCAoQHJldCwgJHRyeW9wdCk7CgkgICAgfQoJICAgIG5leHQ7Cgl9CgoJIyAuLi5v
dGhlcndpc2UsIHRlcm1pbmF0ZS4KCWVsc2UgewoJICAgICMgUHVzaCB0aGlzIG9uZSBiYWNrIGFu
ZCBleGl0LgoJICAgIHVuc2hpZnQgKEAkYXJndiwgJHRyeW9wdCk7CgkgICAgcmV0dXJuICgkZXJy
b3IgPT0gMCk7Cgl9CgogICAgfQoKICAgICMgRmluaXNoLgogICAgaWYgKCBAcmV0ICYmICRvcmRl
ciA9PSAkUEVSTVVURSApIHsKCSMgIFB1c2ggYmFjayBhY2N1bXVsYXRlZCBhcmd1bWVudHMKCXBy
aW50IFNUREVSUiAoIj0+IHJlc3RvcmluZyBcIiIsIGpvaW4oJyIgIicsIEByZXQpLCAiXCJcbiIp
CgkgICAgaWYgJGRlYnVnOwoJdW5zaGlmdCAoQCRhcmd2LCBAcmV0KTsKICAgIH0KCiAgICByZXR1
cm4gKCRlcnJvciA9PSAwKTsKfQoKIyBBIHJlYWRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHdoYXQn
cyBpbiBhbiBvcHRibC4Kc3ViIE9wdEN0bCAoJCkgewogICAgbXkgKCR2KSA9IEBfOwogICAgbXkg
QHYgPSBtYXAgeyBkZWZpbmVkKCRfKSA/ICgkXykgOiAoIjx1bmRlZj4iKSB9IEAkdjsKICAgICJb
Ii4KICAgICAgam9pbigiLCIsCgkgICAiXCIkdltDVExfVFlQRV1cIiIsCgkgICAiXCIkdltDVExf
Q05BTUVdXCIiLAoJICAgIlwiJHZbQ1RMX0RFRkFVTFRdXCIiLAoJICAgKCJcJCIsIlxAIiwiXCUi
LCJcJiIpWyR2W0NUTF9ERVNUXSB8fCAwXSwKCSAgICR2W0NUTF9BTUlOXSB8fCAnJywKCSAgICR2
W0NUTF9BTUFYXSB8fCAnJywKIwkgICAkdltDVExfUkFOR0VdIHx8ICcnLAojCSAgICR2W0NUTF9S
RVBFQVRdIHx8ICcnLAoJICApLiAiXSI7Cn0KCiMgUGFyc2UgYW4gb3B0aW9uIHNwZWNpZmljYXRp
b24gYW5kIGZpbGwgdGhlIHRhYmxlcy4Kc3ViIFBhcnNlT3B0aW9uU3BlYyAoJCQpIHsKICAgIG15
ICgkb3B0LCAkb3BjdGwpID0gQF87CgogICAgIyBNYXRjaCBvcHRpb24gc3BlYy4KICAgIGlmICgg
JG9wdCAhfiBtO14KCQkgICAoCgkJICAgICAjIE9wdGlvbiBuYW1lCgkJICAgICAoPzogXHcrWy1c
d10qICkKCQkgICAgICMgQWxpYXMgbmFtZXMsIG9yICI/IgoJCSAgICAgKD86IFx8ICg/OiBcPyB8
IFx3Wy1cd10qICkgKSoKCQkgICAgICMgQWxpYXNlcwoJCSAgICAgKD86IFx8ICg/OiBbXi18ISs9
Ol1bXnwhKz06XSogKT8gKSoKCQkgICApPwoJCSAgICgKCQkgICAgICMgRWl0aGVyIG1vZGlmaWVy
cyAuLi4KCQkgICAgIFshK10KCQkgICAgIHwKCQkgICAgICMgLi4uIG9yIGEgdmFsdWUvZGVzdC9y
ZXBlYXQgc3BlY2lmaWNhdGlvbgoJCSAgICAgWz06XSBbaW9uZnNdIFtAJV0/ICg/OiBce1xkKiw/
XGQqXH0gKT8KCQkgICAgIHwKCQkgICAgICMgLi4uIG9yIGFuIG9wdGlvbmFsLXdpdGgtZGVmYXVs
dCBzcGVjCgkJICAgICA6ICg/OiAtP1xkKyB8IFwrICkgW0AlXT8KCQkgICApPwoJCSAgICQ7eCAp
IHsKCXJldHVybiAodW5kZWYsICJFcnJvciBpbiBvcHRpb24gc3BlYzogXCIkb3B0XCJcbiIpOwog
ICAgfQoKICAgIG15ICgkbmFtZXMsICRzcGVjKSA9ICgkMSwgJDIpOwogICAgJHNwZWMgPSAnJyB1
bmxlc3MgZGVmaW5lZCAkc3BlYzsKCiAgICAjICRvcmlnIGtlZXBzIHRyYWNrIG9mIHRoZSBwcmlt
YXJ5IG5hbWUgdGhlIHVzZXIgc3BlY2lmaWVkLgogICAgIyBUaGlzIG5hbWUgd2lsbCBiZSB1c2Vk
IGZvciB0aGUgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgbGlua2FnZS4KICAgICMgSW4gb3RoZXIgd29y
ZHMsIGlmIHRoZSB1c2VyIHNwZWNpZmllcyAiRm9PfEJhUiIsIGl0IHdpbGwKICAgICMgbWF0Y2gg
YW55IGNhc2UgY29tYmluYXRpb25zIG9mICdmb28nIGFuZCAnYmFyJywgYnV0IGlmIGEgZ2xvYmFs
CiAgICAjIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCwgaXQgd2lsbCBiZSAkb3B0X0ZvTyBpbiB0
aGUgZXhhY3QgY2FzZQogICAgIyBhcyBzcGVjaWZpZWQuCiAgICBteSAkb3JpZzsKCiAgICBteSBA
bmFtZXM7CiAgICBpZiAoIGRlZmluZWQgJG5hbWVzICkgewoJQG5hbWVzID0gIHNwbGl0ICgvXHwv
LCAkbmFtZXMpOwoJJG9yaWcgPSAkbmFtZXNbMF07CiAgICB9CiAgICBlbHNlIHsKCUBuYW1lcyA9
ICgnJyk7Cgkkb3JpZyA9ICcnOwogICAgfQoKICAgICMgQ29uc3RydWN0IHRoZSBvcGN0bCBlbnRy
aWVzLgogICAgbXkgJGVudHJ5OwogICAgaWYgKCAkc3BlYyBlcSAnJyB8fCAkc3BlYyBlcSAnKycg
fHwgJHNwZWMgZXEgJyEnICkgewoJIyBGaWVsZHMgYXJlIGhhcmQtd2lyZWQgaGVyZS4KCSRlbnRy
eSA9IFskc3BlYywkb3JpZyx1bmRlZixDVExfREVTVF9TQ0FMQVIsMCwwXTsKICAgIH0KICAgIGVs
c2lmICggJHNwZWMgPX4gL146KC0/XGQrfFwrKShbQCVdKT8kLyApIHsKCW15ICRkZWYgPSAkMTsK
CW15ICRkZXN0ID0gJDI7CglteSAkdHlwZSA9ICRkZWYgZXEgJysnID8gJ0knIDogJ2knOwoJJGRl
c3QgfHw9ICckJzsKCSRkZXN0ID0gJGRlc3QgZXEgJ0AnID8gQ1RMX0RFU1RfQVJSQVkKCSAgOiAk
ZGVzdCBlcSAnJScgPyBDVExfREVTVF9IQVNIIDogQ1RMX0RFU1RfU0NBTEFSOwoJIyBGaWVsZHMg
YXJlIGhhcmQtd2lyZWQgaGVyZS4KCSRlbnRyeSA9IFskdHlwZSwkb3JpZywkZGVmIGVxICcrJyA/
IHVuZGVmIDogJGRlZiwKCQkgICRkZXN0LDAsMV07CiAgICB9CiAgICBlbHNlIHsKCW15ICgkbWFu
ZCwgJHR5cGUsICRkZXN0KSA9CgkgICRzcGVjID1+IC9eKFs9Ol0pKFtpb25mc10pKFtAJV0pPyhc
eyhcZCspPygsKT8oXGQrKT9cfSk/JC87CglyZXR1cm4gKHVuZGVmLCAiQ2Fubm90IHJlcGVhdCB3
aGlsZSBidW5kbGluZzogXCIkb3B0XCJcbiIpCgkgIGlmICRidW5kbGluZyAmJiBkZWZpbmVkKCQ0
KTsKCW15ICgkbWksICRjbSwgJG1hKSA9ICgkNSwgJDYsICQ3KTsKCXJldHVybiAodW5kZWYsICJ7
MH0gaXMgdXNlbGVzcyBpbiBvcHRpb24gc3BlYzogXCIkb3B0XCJcbiIpCgkgIGlmIGRlZmluZWQo
JG1pKSAmJiAhJG1pICYmICFkZWZpbmVkKCRtYSkgJiYgIWRlZmluZWQoJGNtKTsKCgkkdHlwZSA9
ICdpJyBpZiAkdHlwZSBlcSAnbic7CgkkZGVzdCB8fD0gJyQnOwoJJGRlc3QgPSAkZGVzdCBlcSAn
QCcgPyBDVExfREVTVF9BUlJBWQoJICA6ICRkZXN0IGVxICclJyA/IENUTF9ERVNUX0hBU0ggOiBD
VExfREVTVF9TQ0FMQVI7CgkjIERlZmF1bHQgbWluYXJncyB0byAxLzAgZGVwZW5kaW5nIG9uIG1h
bmQgc3RhdHVzLgoJJG1pID0gJG1hbmQgZXEgJz0nID8gMSA6IDAgdW5sZXNzIGRlZmluZWQgJG1p
OwoJIyBBZGp1c3QgbWFuZCBzdGF0dXMgYWNjb3JkaW5nIHRvIG1pbmFyZ3MuCgkkbWFuZCA9ICRt
aSA/ICc9JyA6ICc6JzsKCSMgQWRqdXN0IG1heGFyZ3MuCgkkbWEgPSAkbWkgPyAkbWkgOiAxIHVu
bGVzcyBkZWZpbmVkICRtYSB8fCBkZWZpbmVkICRjbTsKCXJldHVybiAodW5kZWYsICJNYXggbXVz
dCBiZSBncmVhdGVyIHRoYW4gemVybyBpbiBvcHRpb24gc3BlYzogXCIkb3B0XCJcbiIpCgkgIGlm
IGRlZmluZWQoJG1hKSAmJiAhJG1hOwoJcmV0dXJuICh1bmRlZiwgIk1heCBsZXNzIHRoYW4gbWlu
IGluIG9wdGlvbiBzcGVjOiBcIiRvcHRcIlxuIikKCSAgaWYgZGVmaW5lZCgkbWEpICYmICRtYSA8
ICRtaTsKCgkjIEZpZWxkcyBhcmUgaGFyZC13aXJlZCBoZXJlLgoJJGVudHJ5ID0gWyR0eXBlLCRv
cmlnLHVuZGVmLCRkZXN0LCRtaSwkbWF8fC0xXTsKICAgIH0KCiAgICAjIFByb2Nlc3MgYWxsIG5h
bWVzLiBGaXJzdCBpcyBjYW5vbmljYWwsIHRoZSByZXN0IGFyZSBhbGlhc2VzLgogICAgbXkgJGR1
cHMgPSAnJzsKICAgIGZvcmVhY2ggKCBAbmFtZXMgKSB7CgoJJF8gPSBsYyAoJF8pCgkgIGlmICRp
Z25vcmVjYXNlID4gKCgkYnVuZGxpbmcgJiYgbGVuZ3RoKCRfKSA9PSAxKSA/IDEgOiAwKTsKCglp
ZiAoIGV4aXN0cyAkb3BjdGwtPnskX30gKSB7CgkgICAgJGR1cHMgLj0gIkR1cGxpY2F0ZSBzcGVj
aWZpY2F0aW9uIFwiJG9wdFwiIGZvciBvcHRpb24gXCIkX1wiXG4iOwoJfQoKCWlmICggJHNwZWMg
ZXEgJyEnICkgewoJICAgICRvcGN0bC0+eyJubyRfIn0gPSAkZW50cnk7CgkgICAgJG9wY3RsLT57
Im5vLSRfIn0gPSAkZW50cnk7CgkgICAgJG9wY3RsLT57JF99ID0gW0AkZW50cnldOwoJICAgICRv
cGN0bC0+eyRffS0+W0NUTF9UWVBFXSA9ICcnOwoJfQoJZWxzZSB7CgkgICAgJG9wY3RsLT57JF99
ID0gJGVudHJ5OwoJfQogICAgfQoKICAgIGlmICggJGR1cHMgJiYgJF5XICkgewoJZm9yZWFjaCAo
IHNwbGl0KC9cbisvLCAkZHVwcykgKSB7CgkgICAgd2FybigkXy4iXG4iKTsKCX0KICAgIH0KICAg
ICgkbmFtZXNbMF0sICRvcmlnKTsKfQoKIyBPcHRpb24gbG9va3VwLgpzdWIgRmluZE9wdGlvbiAo
JCQkJCQpIHsKCgl3YXJuICJGTzpbQF9dIjsKCiAgICAjIHJldHVybnMgKDEsICRvcHQsICRjdGws
ICRhcmcsICRrZXkpIGlmIG9rYXksCiAgICAjIHJldHVybnMgKDEsIHVuZGVmKSBpZiBvcHRpb24g
aW4gZXJyb3IsCiAgICAjIHJldHVybnMgKDApIG90aGVyd2lzZS4KCiAgICBteSAoJGFyZ3YsICRw
cmVmaXgsICRhcmdlbmQsICRvcHQsICRvcGN0bCkgPSBAXzsKCiAgICBwcmludCBTVERFUlIgKCI9
PiBmaW5kIFwiJG9wdFwiXG4iKSBpZiAkZGVidWc7CgogICAgI3dhcm4gJG9wdCA9fiAvXigkcHJl
Zml4KSguKikkL3M7CiAgICAjd2FybiAiWloiLlswLDFdLT5bJG9wdCA9fiAvXigkcHJlZml4KSgu
KikkL3NdOyAKICAgIHt1c2UgcmUgJ2RlYnVnJzt3YXJuICJaWiIuWzAsMV0tPlskb3B0ID1+IC9e
KCRwcmVmaXgpKC4qKSQvc107fQoKICAgIHJldHVybiAoMCkgdW5sZXNzIGRlZmluZWQoJG9wdCk7
CiAgICByZXR1cm4gKDApIHVubGVzcyAkb3B0ID1+IC9eKCRwcmVmaXgpKC4qKSQvczsKICAgIHJl
dHVybiAoMCkgaWYgJG9wdCBlcSAiLSIgJiYgIWRlZmluZWQgJG9wY3RsLT57Jyd9OwoKICAgICRv
cHQgPSBzdWJzdHIoICRvcHQsIGxlbmd0aCgkMSkgKTsgIyByZXRhaW4gdGFpbnRlZG5lc3MKICAg
IG15ICRzdGFydGVyID0gJDE7CgogICAgcHJpbnQgU1RERVJSICgiPT4gc3BsaXQgXCIkc3RhcnRl
clwiK1wiJG9wdFwiXG4iKSBpZiAkZGVidWc7CgogICAgbXkgJG9wdGFyZzsJCQkjIHZhbHVlIHN1
cHBsaWVkIHdpdGggLS1vcHQ9dmFsdWUKICAgIG15ICRyZXN0OwkJCSMgcmVtYWluZGVyIGZyb20g
dW5idW5kbGluZwoKICAgICMgSWYgaXQgaXMgYSBsb25nIG9wdGlvbiwgaXQgbWF5IGluY2x1ZGUg
dGhlIHZhbHVlLgogICAgIyBXaXRoIGdldG9wdF9jb21wYXQsIG9ubHkgaWYgbm90IGJ1bmRsaW5n
LgogICAgaWYgKCAoJHN0YXJ0ZXI9fi9eJGxvbmdwcmVmaXgkLwoJICB8fCAoJGdldG9wdF9jb21w
YXQgJiYgKCRidW5kbGluZyA9PSAwIHx8ICRidW5kbGluZyA9PSAyKSkpCgkgJiYgKG15ICRvcHBv
cyA9IGluZGV4KCRvcHQsICc9JywgMSkpID4gMCkgewoJbXkgJG9wdG9yZyA9ICRvcHQ7Cgkkb3B0
ID0gc3Vic3RyKCRvcHRvcmcsIDAsICRvcHBvcyk7Cgkkb3B0YXJnID0gc3Vic3RyKCRvcHRvcmcs
ICRvcHBvcyArIDEpOyAjIHJldGFpbiB0YWluZWRuZXNzCglwcmludCBTVERFUlIgKCI9PiBvcHRp
b24gXCIiLCAkb3B0LAoJCSAgICAgICJcIiwgb3B0YXJnID0gXCIkb3B0YXJnXCJcbiIpIGlmICRk
ZWJ1ZzsKICAgIH0KCiAgICAjIyMjIExvb2sgaXQgdXAgIyMjCgogICAgbXkgJHRyeW9wdCA9ICRv
cHQ7CQkjIG9wdGlvbiB0byB0cnkKCiAgICBpZiAoICggJGJ1bmRsaW5nIHx8ICRidW5kbGluZ192
YWx1ZXMgKSAmJiAkc3RhcnRlciBlcSAnLScgKSB7CgoJIyBUbyB0cnkgb3ZlcnJpZGVzLCBvYmV5
IGNhc2UgaWdub3JlLgoJJHRyeW9wdCA9ICRpZ25vcmVjYXNlID8gbGMoJG9wdCkgOiAkb3B0OwoK
CSMgSWYgYnVuZGxpbmcgPT0gMiwgbG9uZyBvcHRpb25zIGNhbiBvdmVycmlkZSBidW5kbGVzLgoJ
aWYgKCAkYnVuZGxpbmcgPT0gMiAmJiBsZW5ndGgoJHRyeW9wdCkgPiAxCgkgICAgICYmIGRlZmlu
ZWQgKCRvcGN0bC0+eyR0cnlvcHR9KSApIHsKCSAgICBwcmludCBTVERFUlIgKCI9PiAkc3RhcnRl
ciR0cnlvcHQgb3ZlcnJpZGVzIHVuYnVuZGxpbmdcbiIpCgkgICAgICBpZiAkZGVidWc7Cgl9CgoJ
IyBJZiBidW5kbGluZ192YWx1ZXMsIG9wdGlvbiBtYXkgYmUgZm9sbG93ZWQgYnkgdGhlIHZhbHVl
LgoJZWxzaWYgKCAkYnVuZGxpbmdfdmFsdWVzICkgewoJICAgICR0cnlvcHQgPSAkb3B0OwoJICAg
ICMgVW5idW5kbGUgc2luZ2xlIGxldHRlciBvcHRpb24uCgkgICAgJHJlc3QgPSBsZW5ndGggKCR0
cnlvcHQpID4gMCA/IHN1YnN0ciAoJHRyeW9wdCwgMSkgOiAnJzsKCSAgICAkdHJ5b3B0ID0gc3Vi
c3RyICgkdHJ5b3B0LCAwLCAxKTsKCSAgICAkdHJ5b3B0ID0gbGMgKCR0cnlvcHQpIGlmICRpZ25v
cmVjYXNlID4gMTsKCSAgICBwcmludCBTVERFUlIgKCI9PiAkc3RhcnRlciR0cnlvcHQgdW5idW5k
bGVkIGZyb20gIiwKCQkJICAiJHN0YXJ0ZXIkdHJ5b3B0JHJlc3RcbiIpIGlmICRkZWJ1ZzsKCSAg
ICAjIFdoYXRldmVyIHJlbWFpbnMgbWF5IG5vdCBiZSBjb25zaWRlcmVkIGFuIG9wdGlvbi4KCSAg
ICAkb3B0YXJnID0gJHJlc3QgZXEgJycgPyB1bmRlZiA6ICRyZXN0OwoJICAgICRyZXN0ID0gdW5k
ZWY7Cgl9CgoJIyBTcGxpdCBvZmYgYSBzaW5nbGUgbGV0dGVyIGFuZCBsZWF2ZSB0aGUgcmVzdCBm
b3IKCSMgZnVydGhlciBwcm9jZXNzaW5nLgoJZWxzZSB7CgkgICAgJHRyeW9wdCA9ICRvcHQ7Cgkg
ICAgIyBVbmJ1bmRsZSBzaW5nbGUgbGV0dGVyIG9wdGlvbi4KCSAgICAkcmVzdCA9IGxlbmd0aCAo
JHRyeW9wdCkgPiAwID8gc3Vic3RyICgkdHJ5b3B0LCAxKSA6ICcnOwoJICAgICR0cnlvcHQgPSBz
dWJzdHIgKCR0cnlvcHQsIDAsIDEpOwoJICAgICR0cnlvcHQgPSBsYyAoJHRyeW9wdCkgaWYgJGln
bm9yZWNhc2UgPiAxOwoJICAgIHByaW50IFNUREVSUiAoIj0+ICRzdGFydGVyJHRyeW9wdCB1bmJ1
bmRsZWQgZnJvbSAiLAoJCQkgICIkc3RhcnRlciR0cnlvcHQkcmVzdFxuIikgaWYgJGRlYnVnOwoJ
ICAgICRyZXN0ID0gdW5kZWYgdW5sZXNzICRyZXN0IG5lICcnOwoJfQogICAgfQoKICAgICMgVHJ5
IGF1dG8tYWJicmV2aWF0aW9uLgogICAgZWxzaWYgKCAkYXV0b2FiYnJldiAmJiAkb3B0IG5lICIi
ICkgewoJIyBTb3J0IHRoZSBwb3NzaWJsZSBsb25nIG9wdGlvbiBuYW1lcy4KCW15IEBuYW1lcyA9
IHNvcnQoa2V5cyAoJSRvcGN0bCkpOwoJIyBEb3duY2FzZSBpZiBhbGxvd2VkLgoJJG9wdCA9IGxj
ICgkb3B0KSBpZiAkaWdub3JlY2FzZTsKCSR0cnlvcHQgPSAkb3B0OwoJIyBUdXJuIG9wdGlvbiBu
YW1lIGludG8gcGF0dGVybi4KCW15ICRwYXQgPSBxdW90ZW1ldGEgKCRvcHQpOwoJIyBMb29rIHVw
IGluIG9wdGlvbiBuYW1lcy4KCW15IEBoaXRzID0gZ3JlcCAoL14kcGF0LywgQG5hbWVzKTsKCXBy
aW50IFNUREVSUiAoIj0+ICIsIHNjYWxhcihAaGl0cyksICIgaGl0cyAoQGhpdHMpIHdpdGggXCIk
cGF0XCIgIiwKCQkgICAgICAib3V0IG9mICIsIHNjYWxhcihAbmFtZXMpLCAiXG4iKSBpZiAkZGVi
dWc7CgoJIyBDaGVjayBmb3IgYW1iaWd1b3VzIHJlc3VsdHMuCgl1bmxlc3MgKCAoQGhpdHMgPD0g
MSkgfHwgKGdyZXAgKCRfIGVxICRvcHQsIEBoaXRzKSA9PSAxKSApIHsKCSAgICAjIFNlZSBpZiBh
bGwgbWF0Y2hlcyBhcmUgZm9yIHRoZSBzYW1lIG9wdGlvbi4KCSAgICBteSAlaGl0OwoJICAgIGZv
cmVhY2ggKCBAaGl0cyApIHsKCQlteSAkaGl0ID0gJG9wY3RsLT57JF99LT5bQ1RMX0NOQU1FXQoJ
CSAgaWYgZGVmaW5lZCAkb3BjdGwtPnskX30tPltDVExfQ05BTUVdOwoJCSRoaXQgPSAibm8iIC4g
JGhpdCBpZiAkb3BjdGwtPnskX30tPltDVExfVFlQRV0gZXEgJyEnOwoJCSRoaXR7JGhpdH0gPSAx
OwoJICAgIH0KCSAgICAjIFJlbW92ZSBhdXRvLXN1cHBsaWVkIG9wdGlvbnMgKHZlcnNpb24sIGhl
bHApLgoJICAgIGlmICgga2V5cyglaGl0KSA9PSAyICkgewoJCWlmICggJGF1dG9fdmVyc2lvbiAm
JiBleGlzdHMoJGhpdHt2ZXJzaW9ufSkgKSB7CgkJICAgIGRlbGV0ZSAkaGl0e3ZlcnNpb259OwoJ
CX0KCQllbHNpZiAoICRhdXRvX2hlbHAgJiYgZXhpc3RzKCRoaXR7aGVscH0pICkgewoJCSAgICBk
ZWxldGUgJGhpdHtoZWxwfTsKCQl9CgkgICAgfQoJICAgICMgTm93IHNlZSBpZiBpdCByZWFsbHkg
aXMgYW1iaWd1b3VzLgoJICAgIHVubGVzcyAoIGtleXMoJWhpdCkgPT0gMSApIHsKCQlyZXR1cm4g
KDApIGlmICRwYXNzdGhyb3VnaDsKCQl3YXJuICgiT3B0aW9uICIsICRvcHQsICIgaXMgYW1iaWd1
b3VzICgiLAoJCSAgICAgIGpvaW4oIiwgIiwgQGhpdHMpLCAiKVxuIik7CgkJJGVycm9yKys7CgkJ
cmV0dXJuICgxLCB1bmRlZik7CgkgICAgfQoJICAgIEBoaXRzID0ga2V5cyglaGl0KTsKCX0KCgkj
IENvbXBsZXRlIHRoZSBvcHRpb24gbmFtZSwgaWYgYXBwcm9wcmlhdGUuCglpZiAoIEBoaXRzID09
IDEgJiYgJGhpdHNbMF0gbmUgJG9wdCApIHsKCSAgICAkdHJ5b3B0ID0gJGhpdHNbMF07CgkgICAg
JHRyeW9wdCA9IGxjICgkdHJ5b3B0KSBpZiAkaWdub3JlY2FzZTsKCSAgICBwcmludCBTVERFUlIg
KCI9PiBvcHRpb24gXCIkb3B0XCIgLT4gXCIkdHJ5b3B0XCJcbiIpCgkJaWYgJGRlYnVnOwoJfQog
ICAgfQoKICAgICMgTWFwIHRvIGFsbCBsb3dlcmNhc2UgaWYgaWdub3JpbmcgY2FzZS4KICAgIGVs
c2lmICggJGlnbm9yZWNhc2UgKSB7CgkkdHJ5b3B0ID0gbGMgKCRvcHQpOwogICAgfQoKICAgICMg
Q2hlY2sgdmFsaWRpdHkgYnkgZmV0Y2hpbmcgdGhlIGluZm8uCiAgICBteSAkY3RsID0gJG9wY3Rs
LT57JHRyeW9wdH07CiAgICB1bmxlc3MgICggZGVmaW5lZCAkY3RsICkgewoJcmV0dXJuICgwKSBp
ZiAkcGFzc3Rocm91Z2g7CgkjIFByZXRlbmQgb25lIGNoYXIgd2hlbiBidW5kbGluZy4KCWlmICgg
JGJ1bmRsaW5nID09IDEgJiYgbGVuZ3RoKCRzdGFydGVyKSA9PSAxICkgewoJICAgICRvcHQgPSBz
dWJzdHIoJG9wdCwwLDEpOwogICAgICAgICAgICB1bnNoaWZ0IChAJGFyZ3YsICRzdGFydGVyLiRy
ZXN0KSBpZiBkZWZpbmVkICRyZXN0OwoJfQoJaWYgKCAkb3B0IGVxICIiICkgewoJICAgIHdhcm4g
KCJNaXNzaW5nIG9wdGlvbiBhZnRlciAiLCAkc3RhcnRlciwgIlxuIik7Cgl9CgllbHNlIHsKCSAg
ICB3YXJuICgiVW5rbm93biBvcHRpb246ICIsICRvcHQsICJcbiIpOwoJfQoJJGVycm9yKys7Cgly
ZXR1cm4gKDEsIHVuZGVmKTsKICAgIH0KICAgICMgQXBwYXJlbnRseSB2YWxpZC4KICAgICRvcHQg
PSAkdHJ5b3B0OwogICAgcHJpbnQgU1RERVJSICgiPT4gZm91bmQgIiwgT3B0Q3RsKCRjdGwpLAoJ
CSAgIiBmb3IgXCIiLCAkb3B0LCAiXCJcbiIpIGlmICRkZWJ1ZzsKCiAgICAjIyMjIERldGVybWlu
ZSBhcmd1bWVudCBzdGF0dXMgIyMjIwoKICAgICMgSWYgaXQgaXMgYW4gb3B0aW9uIHcvbyBhcmd1
bWVudCwgd2UncmUgYWxtb3N0IGZpbmlzaGVkIHdpdGggaXQuCiAgICBteSAkdHlwZSA9ICRjdGwt
PltDVExfVFlQRV07CiAgICBteSAkYXJnOwoKICAgIGlmICggJHR5cGUgZXEgJycgfHwgJHR5cGUg
ZXEgJyEnIHx8ICR0eXBlIGVxICcrJyApIHsKCWlmICggZGVmaW5lZCAkb3B0YXJnICkgewoJICAg
IHJldHVybiAoMCkgaWYgJHBhc3N0aHJvdWdoOwoJICAgIHdhcm4gKCJPcHRpb24gIiwgJG9wdCwg
IiBkb2VzIG5vdCB0YWtlIGFuIGFyZ3VtZW50XG4iKTsKCSAgICAkZXJyb3IrKzsKCSAgICB1bmRl
ZiAkb3B0OwoJICAgIHVuZGVmICRvcHRhcmcgaWYgJGJ1bmRsaW5nX3ZhbHVlczsKCX0KCWVsc2lm
ICggJHR5cGUgZXEgJycgfHwgJHR5cGUgZXEgJysnICkgewoJICAgICMgU3VwcGx5IGV4cGxpY2l0
IHZhbHVlLgoJICAgICRhcmcgPSAxOwoJfQoJZWxzZSB7CgkgICAgJG9wdCA9fiBzL15uby0/Ly9p
OwkjIHN0cmlwIE5PIHByZWZpeAoJICAgICRhcmcgPSAwOwkJIyBzdXBwbHkgZXhwbGljaXQgdmFs
dWUKCX0KCXVuc2hpZnQgKEAkYXJndiwgJHN0YXJ0ZXIuJHJlc3QpIGlmIGRlZmluZWQgJHJlc3Q7
CglyZXR1cm4gKDEsICRvcHQsICRjdGwsICRhcmcpOwogICAgfQoKICAgICMgR2V0IG1hbmRhdG9y
eSBzdGF0dXMgYW5kIHR5cGUgaW5mby4KICAgIG15ICRtYW5kID0gJGN0bC0+W0NUTF9BTUlOXTsK
CiAgICAjIENoZWNrIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBhcmd1bWVudCBhdmFpbGFibGUuCiAg
ICBpZiAoICRnbnVfY29tcGF0ICkgewoJbXkgJG9wdGFyZ3R5cGUgPSAwOyAjIDAgPSBub25lLCAx
ID0gZW1wdHksIDIgPSBub25lbXB0eQoJJG9wdGFyZ3R5cGUgPSAoICFkZWZpbmVkKCRvcHRhcmcp
ID8gMCA6ICggKGxlbmd0aCgkb3B0YXJnKSA9PSAwKSA/IDEgOiAyICkgKTsKICAgIHJldHVybiAo
MSwgJG9wdCwgJGN0bCwgZGVmaW5lZCgkY3RsLT5bQ1RMX0RFRkFVTFRdKSA/ICRjdGwtPltDVExf
REVGQVVMVF0gOiB1bmRlZikKCSAgaWYgKCgkb3B0YXJndHlwZSA9PSAwKSAmJiAhJG1hbmQpOwoJ
cmV0dXJuICgxLCAkb3B0LCAkY3RsLCAkdHlwZSBlcSAncycgPyAnJyA6IDApCgkgIGlmICRvcHRh
cmd0eXBlID09IDE7ICAjIC0tZm9vPSAgLT4gcmV0dXJuIG5vdGhpbmcKICAgIH0KCiAgICAjIENo
ZWNrIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBhcmd1bWVudCBhdmFpbGFibGUuCiAgICBpZiAoIGRl
ZmluZWQgJG9wdGFyZwoJID8gKCRvcHRhcmcgZXEgJycpCgkgOiAhKGRlZmluZWQgJHJlc3QgfHwg
QCRhcmd2ID4gMCkgKSB7CgkjIENvbXBsYWluIGlmIHRoaXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3Vt
ZW50LgojCWlmICggJG1hbmQgJiYgISgkdHlwZSBlcSAncycgPyBkZWZpbmVkKCRvcHRhcmcpIDog
MCkgKSB7CglpZiAoICRtYW5kICkgewoJICAgIHJldHVybiAoMCkgaWYgJHBhc3N0aHJvdWdoOwoJ
ICAgIHdhcm4gKCJPcHRpb24gIiwgJG9wdCwgIiByZXF1aXJlcyBhbiBhcmd1bWVudFxuIik7Cgkg
ICAgJGVycm9yKys7CgkgICAgcmV0dXJuICgxLCB1bmRlZik7Cgl9CglpZiAoICR0eXBlIGVxICdJ
JyApIHsKCSAgICAjIEZha2UgaW5jcmVtZW50YWwgdHlwZS4KCSAgICBteSBAYyA9IEAkY3RsOwoJ
ICAgICRjW0NUTF9UWVBFXSA9ICcrJzsKCSAgICByZXR1cm4gKDEsICRvcHQsIFxAYywgMSk7Cgl9
CglyZXR1cm4gKDEsICRvcHQsICRjdGwsCgkJZGVmaW5lZCgkY3RsLT5bQ1RMX0RFRkFVTFRdKSA/
ICRjdGwtPltDVExfREVGQVVMVF0gOgoJCSR0eXBlIGVxICdzJyA/ICcnIDogMCk7CiAgICB9Cgog
ICAgIyBHZXQgKHBvc3NpYmx5IG9wdGlvbmFsKSBhcmd1bWVudC4KICAgICRhcmcgPSAoZGVmaW5l
ZCAkcmVzdCA/ICRyZXN0CgkgICAgOiAoZGVmaW5lZCAkb3B0YXJnID8gJG9wdGFyZyA6IHNoaWZ0
IChAJGFyZ3YpKSk7CgogICAgIyBHZXQga2V5IGlmIHRoaXMgaXMgYSAibmFtZT12YWx1ZSIgcGFp
ciBmb3IgYSBoYXNoIG9wdGlvbi4KICAgIG15ICRrZXk7CiAgICBpZiAoJGN0bC0+W0NUTF9ERVNU
XSA9PSBDVExfREVTVF9IQVNIICYmIGRlZmluZWQgJGFyZykgewoJKCRrZXksICRhcmcpID0gKCRh
cmcgPX4gL14oW149XSopPSguKikkL3MpID8gKCQxLCAkMikKCSAgOiAoJGFyZywgZGVmaW5lZCgk
Y3RsLT5bQ1RMX0RFRkFVTFRdKSA/ICRjdGwtPltDVExfREVGQVVMVF0gOgoJICAgICAoJG1hbmQg
PyB1bmRlZiA6ICgkdHlwZSBlcSAncycgPyAiIiA6IDEpKSk7CglpZiAoISBkZWZpbmVkICRhcmcp
IHsKCSAgICB3YXJuICgiT3B0aW9uICRvcHQsIGtleSBcIiRrZXlcIiwgcmVxdWlyZXMgYSB2YWx1
ZVxuIik7CgkgICAgJGVycm9yKys7CgkgICAgIyBQdXNoIGJhY2suCgkgICAgdW5zaGlmdCAoQCRh
cmd2LCAkc3RhcnRlci4kcmVzdCkgaWYgZGVmaW5lZCAkcmVzdDsKCSAgICByZXR1cm4gKDEsIHVu
ZGVmKTsKCX0KICAgIH0KCiAgICAjIyMjIENoZWNrIGlmIHRoZSBhcmd1bWVudCBpcyB2YWxpZCBm
b3IgdGhpcyBvcHRpb24gIyMjIwoKICAgIG15ICRrZXlfdmFsaWQgPSAkY3RsLT5bQ1RMX0RFU1Rd
ID09IENUTF9ERVNUX0hBU0ggPyAiW149XSs9IiA6ICIiOwoKICAgIGlmICggJHR5cGUgZXEgJ3Mn
ICkgewkjIHN0cmluZwoJIyBBIG1hbmRhdG9yeSBzdHJpbmcgdGFrZXMgYW55dGhpbmcuCglyZXR1
cm4gKDEsICRvcHQsICRjdGwsICRhcmcsICRrZXkpIGlmICRtYW5kOwoKCSMgU2FtZSBmb3Igb3B0
aW9uYWwgc3RyaW5nIGFzIGEgaGFzaCB2YWx1ZQoJcmV0dXJuICgxLCAkb3B0LCAkY3RsLCAkYXJn
LCAka2V5KQoJICBpZiAkY3RsLT5bQ1RMX0RFU1RdID09IENUTF9ERVNUX0hBU0g7CgoJIyBBbiBv
cHRpb25hbCBzdHJpbmcgdGFrZXMgYWxtb3N0IGFueXRoaW5nLgoJcmV0dXJuICgxLCAkb3B0LCAk
Y3RsLCAkYXJnLCAka2V5KQoJICBpZiBkZWZpbmVkICRvcHRhcmcgfHwgZGVmaW5lZCAkcmVzdDsK
CXJldHVybiAoMSwgJG9wdCwgJGN0bCwgJGFyZywgJGtleSkgaWYgJGFyZyBlcSAiLSI7ICMgPz8K
CgkjIENoZWNrIGZvciBvcHRpb24gb3Igb3B0aW9uIGxpc3QgdGVybWluYXRvci4KCWlmICgkYXJn
IGVxICRhcmdlbmQgfHwKCSAgICAkYXJnID1+IC9eJHByZWZpeC4rLykgewoJICAgICMgUHVzaCBi
YWNrLgoJICAgIHVuc2hpZnQgKEAkYXJndiwgJGFyZyk7CgkgICAgIyBTdXBwbHkgZW1wdHkgdmFs
dWUuCgkgICAgJGFyZyA9ICcnOwoJfQogICAgfQoKICAgIGVsc2lmICggJHR5cGUgZXEgJ2knCSMg
bnVtZXJpYy9pbnRlZ2VyCiAgICAgICAgICAgIHx8ICR0eXBlIGVxICdJJwkjIG51bWVyaWMvaW50
ZWdlciB3LyBpbmNyIGRlZmF1bHQKCSAgICB8fCAkdHlwZSBlcSAnbycgKSB7ICMgZGVjL29jdC9o
ZXgvYmluIHZhbHVlCgoJbXkgJG9fdmFsaWQgPSAkdHlwZSBlcSAnbycgPyBQQVRfWElOVCA6IFBB
VF9JTlQ7CgoJaWYgKCAkYnVuZGxpbmcgJiYgZGVmaW5lZCAkcmVzdAoJICAgICAmJiAkcmVzdCA9
fiAvXigka2V5X3ZhbGlkKSgkb192YWxpZCkoLiopJC9zaSApIHsKCSAgICAoJGtleSwgJGFyZywg
JHJlc3QpID0gKCQxLCAkMiwgJCspOwoJICAgIGNob3AoJGtleSkgaWYgJGtleTsKCSAgICAkYXJn
ID0gKCR0eXBlIGVxICdvJyAmJiAkYXJnID1+IC9eMC8pID8gb2N0KCRhcmcpIDogMCskYXJnOwoJ
ICAgIHVuc2hpZnQgKEAkYXJndiwgJHN0YXJ0ZXIuJHJlc3QpIGlmIGRlZmluZWQgJHJlc3QgJiYg
JHJlc3QgbmUgJyc7Cgl9CgllbHNpZiAoICRhcmcgPX4gL14kb192YWxpZCQvc2kgKSB7CgkgICAg
JGFyZyA9fiB0ci9fLy9kOwoJICAgICRhcmcgPSAoJHR5cGUgZXEgJ28nICYmICRhcmcgPX4gL14w
LykgPyBvY3QoJGFyZykgOiAwKyRhcmc7Cgl9CgllbHNlIHsKCSAgICBpZiAoIGRlZmluZWQgJG9w
dGFyZyB8fCAkbWFuZCApIHsKCQlpZiAoICRwYXNzdGhyb3VnaCApIHsKCQkgICAgdW5zaGlmdCAo
QCRhcmd2LCBkZWZpbmVkICRyZXN0ID8gJHN0YXJ0ZXIuJHJlc3QgOiAkYXJnKQoJCSAgICAgIHVu
bGVzcyBkZWZpbmVkICRvcHRhcmc7CgkJICAgIHJldHVybiAoMCk7CgkJfQoJCXdhcm4gKCJWYWx1
ZSBcIiIsICRhcmcsICJcIiBpbnZhbGlkIGZvciBvcHRpb24gIiwKCQkgICAgICAkb3B0LCAiICgi
LAoJCSAgICAgICR0eXBlIGVxICdvJyA/ICJleHRlbmRlZCAiIDogJycsCgkJICAgICAgIm51bWJl
ciBleHBlY3RlZClcbiIpOwoJCSRlcnJvcisrOwoJCSMgUHVzaCBiYWNrLgoJCXVuc2hpZnQgKEAk
YXJndiwgJHN0YXJ0ZXIuJHJlc3QpIGlmIGRlZmluZWQgJHJlc3Q7CgkJcmV0dXJuICgxLCB1bmRl
Zik7CgkgICAgfQoJICAgIGVsc2UgewoJCSMgUHVzaCBiYWNrLgoJCXVuc2hpZnQgKEAkYXJndiwg
ZGVmaW5lZCAkcmVzdCA/ICRzdGFydGVyLiRyZXN0IDogJGFyZyk7CgkJaWYgKCAkdHlwZSBlcSAn
SScgKSB7CgkJICAgICMgRmFrZSBpbmNyZW1lbnRhbCB0eXBlLgoJCSAgICBteSBAYyA9IEAkY3Rs
OwoJCSAgICAkY1tDVExfVFlQRV0gPSAnKyc7CgkJICAgIHJldHVybiAoMSwgJG9wdCwgXEBjLCAx
KTsKCQl9CgkJIyBTdXBwbHkgZGVmYXVsdCB2YWx1ZS4KCQkkYXJnID0gZGVmaW5lZCgkY3RsLT5b
Q1RMX0RFRkFVTFRdKSA/ICRjdGwtPltDVExfREVGQVVMVF0gOiAwOwoJICAgIH0KCX0KICAgIH0K
CiAgICBlbHNpZiAoICR0eXBlIGVxICdmJyApIHsgIyByZWFsIG51bWJlciwgaW50IGlzIGFsc28g
b2sKCW15ICRvX3ZhbGlkID0gUEFUX0ZMT0FUOwoJaWYgKCAkYnVuZGxpbmcgJiYgZGVmaW5lZCAk
cmVzdCAmJgoJICAgICAkcmVzdCA9fiAvXigka2V5X3ZhbGlkKSgkb192YWxpZCkoLiopJC9zICkg
ewoJICAgICRhcmcgPX4gdHIvXy8vZDsKCSAgICAoJGtleSwgJGFyZywgJHJlc3QpID0gKCQxLCAk
MiwgJCspOwoJICAgIGNob3AoJGtleSkgaWYgJGtleTsKCSAgICB1bnNoaWZ0IChAJGFyZ3YsICRz
dGFydGVyLiRyZXN0KSBpZiBkZWZpbmVkICRyZXN0ICYmICRyZXN0IG5lICcnOwoJfQoJZWxzaWYg
KCAkYXJnID1+IC9eJG9fdmFsaWQkLyApIHsKCSAgICAkYXJnID1+IHRyL18vL2Q7Cgl9CgllbHNl
IHsKCSAgICBpZiAoIGRlZmluZWQgJG9wdGFyZyB8fCAkbWFuZCApIHsKCQlpZiAoICRwYXNzdGhy
b3VnaCApIHsKCQkgICAgdW5zaGlmdCAoQCRhcmd2LCBkZWZpbmVkICRyZXN0ID8gJHN0YXJ0ZXIu
JHJlc3QgOiAkYXJnKQoJCSAgICAgIHVubGVzcyBkZWZpbmVkICRvcHRhcmc7CgkJICAgIHJldHVy
biAoMCk7CgkJfQoJCXdhcm4gKCJWYWx1ZSBcIiIsICRhcmcsICJcIiBpbnZhbGlkIGZvciBvcHRp
b24gIiwKCQkgICAgICAkb3B0LCAiIChyZWFsIG51bWJlciBleHBlY3RlZClcbiIpOwoJCSRlcnJv
cisrOwoJCSMgUHVzaCBiYWNrLgoJCXVuc2hpZnQgKEAkYXJndiwgJHN0YXJ0ZXIuJHJlc3QpIGlm
IGRlZmluZWQgJHJlc3Q7CgkJcmV0dXJuICgxLCB1bmRlZik7CgkgICAgfQoJICAgIGVsc2UgewoJ
CSMgUHVzaCBiYWNrLgoJCXVuc2hpZnQgKEAkYXJndiwgZGVmaW5lZCAkcmVzdCA/ICRzdGFydGVy
LiRyZXN0IDogJGFyZyk7CgkJIyBTdXBwbHkgZGVmYXVsdCB2YWx1ZS4KCQkkYXJnID0gMC4wOwoJ
ICAgIH0KCX0KICAgIH0KICAgIGVsc2UgewoJZGllKCJHZXRvcHQ6OkxvbmcgaW50ZXJuYWwgZXJy
b3IgKENhbid0IGhhcHBlbilcbiIpOwogICAgfQogICAgcmV0dXJuICgxLCAkb3B0LCAkY3RsLCAk
YXJnLCAka2V5KTsKfQoKc3ViIFZhbGlkVmFsdWUgKCQkJCQkKSB7CiAgICBteSAoJGN0bCwgJGFy
ZywgJG1hbmQsICRhcmdlbmQsICRwcmVmaXgpID0gQF87CgogICAgaWYgKCAkY3RsLT5bQ1RMX0RF
U1RdID09IENUTF9ERVNUX0hBU0ggKSB7CglyZXR1cm4gMCB1bmxlc3MgJGFyZyA9fiAvW149XSs9
KC4qKS87CgkkYXJnID0gJDE7CiAgICB9CgogICAgbXkgJHR5cGUgPSAkY3RsLT5bQ1RMX1RZUEVd
OwoKICAgIGlmICggJHR5cGUgZXEgJ3MnICkgewkjIHN0cmluZwoJIyBBIG1hbmRhdG9yeSBzdHJp
bmcgdGFrZXMgYW55dGhpbmcuCglyZXR1cm4gKDEpIGlmICRtYW5kOwoKCXJldHVybiAoMSkgaWYg
JGFyZyBlcSAiLSI7CgoJIyBDaGVjayBmb3Igb3B0aW9uIG9yIG9wdGlvbiBsaXN0IHRlcm1pbmF0
b3IuCglyZXR1cm4gMCBpZiAkYXJnIGVxICRhcmdlbmQgfHwgJGFyZyA9fiAvXiRwcmVmaXguKy87
CglyZXR1cm4gMTsKICAgIH0KCiAgICBlbHNpZiAoICR0eXBlIGVxICdpJwkjIG51bWVyaWMvaW50
ZWdlcgogICAgICAgICAgICB8fCAkdHlwZSBlcSAnSScJIyBudW1lcmljL2ludGVnZXIgdy8gaW5j
ciBkZWZhdWx0CgkgICAgfHwgJHR5cGUgZXEgJ28nICkgeyAjIGRlYy9vY3QvaGV4L2JpbiB2YWx1
ZQoKCW15ICRvX3ZhbGlkID0gJHR5cGUgZXEgJ28nID8gUEFUX1hJTlQgOiBQQVRfSU5UOwoJcmV0
dXJuICRhcmcgPX4gL14kb192YWxpZCQvc2k7CiAgICB9CgogICAgZWxzaWYgKCAkdHlwZSBlcSAn
ZicgKSB7ICMgcmVhbCBudW1iZXIsIGludCBpcyBhbHNvIG9rCglteSAkb192YWxpZCA9IFBBVF9G
TE9BVDsKCXJldHVybiAkYXJnID1+IC9eJG9fdmFsaWQkLzsKICAgIH0KICAgIGRpZSgiVmFsaWRW
YWx1ZTogQ2Fubm90IGhhcHBlblxuIik7Cn0KCiMgR2V0b3B0OjpMb25nIENvbmZpZ3VyYXRpb24u
CnN1YiBDb25maWd1cmUgKEApIHsKICAgIG15IChAb3B0aW9ucykgPSBAXzsKCiAgICBteSAkcHJl
dmNvbmZpZyA9CiAgICAgIFsgJGVycm9yLCAkZGVidWcsICRtYWpvcl92ZXJzaW9uLCAkbWlub3Jf
dmVyc2lvbiwgJGNhbGxlciwKCSRhdXRvYWJicmV2LCAkZ2V0b3B0X2NvbXBhdCwgJGlnbm9yZWNh
c2UsICRidW5kbGluZywgJG9yZGVyLAoJJGdudV9jb21wYXQsICRwYXNzdGhyb3VnaCwgJGdlbnBy
ZWZpeCwgJGF1dG9fdmVyc2lvbiwgJGF1dG9faGVscCwKCSRsb25ncHJlZml4LCAkYnVuZGxpbmdf
dmFsdWVzIF07CgogICAgaWYgKCByZWYoJG9wdGlvbnNbMF0pIGVxICdBUlJBWScgKSB7CgkoICRl
cnJvciwgJGRlYnVnLCAkbWFqb3JfdmVyc2lvbiwgJG1pbm9yX3ZlcnNpb24sICRjYWxsZXIsCgkg
ICRhdXRvYWJicmV2LCAkZ2V0b3B0X2NvbXBhdCwgJGlnbm9yZWNhc2UsICRidW5kbGluZywgJG9y
ZGVyLAoJICAkZ251X2NvbXBhdCwgJHBhc3N0aHJvdWdoLCAkZ2VucHJlZml4LCAkYXV0b192ZXJz
aW9uLCAkYXV0b19oZWxwLAoJICAkbG9uZ3ByZWZpeCwgJGJ1bmRsaW5nX3ZhbHVlcyApID0gQHtz
aGlmdChAb3B0aW9ucyl9OwogICAgfQoKICAgIG15ICRvcHQ7CiAgICBmb3JlYWNoICRvcHQgKCBA
b3B0aW9ucyApIHsKCW15ICR0cnkgPSBsYyAoJG9wdCk7CglteSAkYWN0aW9uID0gMTsKCWlmICgg
JHRyeSA9fiAvXm5vXz8oLiopJC9zICkgewoJICAgICRhY3Rpb24gPSAwOwoJICAgICR0cnkgPSAk
KzsKCX0KCWlmICggKCR0cnkgZXEgJ2RlZmF1bHQnIG9yICR0cnkgZXEgJ2RlZmF1bHRzJykgJiYg
JGFjdGlvbiApIHsKCSAgICBDb25maWdEZWZhdWx0cyAoKTsKCX0KCWVsc2lmICggKCR0cnkgZXEg
J3Bvc2l4X2RlZmF1bHQnIG9yICR0cnkgZXEgJ3Bvc2l4X2RlZmF1bHRzJykgKSB7CgkgICAgbG9j
YWwgJEVOVntQT1NJWExZX0NPUlJFQ1R9OwoJICAgICRFTlZ7UE9TSVhMWV9DT1JSRUNUfSA9IDEg
aWYgJGFjdGlvbjsKCSAgICBDb25maWdEZWZhdWx0cyAoKTsKCX0KCWVsc2lmICggJHRyeSBlcSAn
YXV0b19hYmJyZXYnIG9yICR0cnkgZXEgJ2F1dG9hYmJyZXYnICkgewoJICAgICRhdXRvYWJicmV2
ID0gJGFjdGlvbjsKCX0KCWVsc2lmICggJHRyeSBlcSAnZ2V0b3B0X2NvbXBhdCcgKSB7CgkgICAg
JGdldG9wdF9jb21wYXQgPSAkYWN0aW9uOwogICAgICAgICAgICAkZ2VucHJlZml4ID0gJGFjdGlv
biA/ICIoLS18LXxcXCspIiA6ICIoLS18LSkiOwoJfQoJZWxzaWYgKCAkdHJ5IGVxICdnbnVfZ2V0
b3B0JyApIHsKCSAgICBpZiAoICRhY3Rpb24gKSB7CgkJJGdudV9jb21wYXQgPSAxOwoJCSRidW5k
bGluZyA9IDE7CgkJJGdldG9wdF9jb21wYXQgPSAwOwogICAgICAgICAgICAgICAgJGdlbnByZWZp
eCA9ICIoLS18LSkiOwoJCSRvcmRlciA9ICRQRVJNVVRFOwoJCSRidW5kbGluZ192YWx1ZXMgPSAw
OwoJICAgIH0KCX0KCWVsc2lmICggJHRyeSBlcSAnZ251X2NvbXBhdCcgKSB7CgkgICAgJGdudV9j
b21wYXQgPSAkYWN0aW9uOwoJICAgICRidW5kbGluZyA9IDA7CgkgICAgJGJ1bmRsaW5nX3ZhbHVl
cyA9IDE7Cgl9CgllbHNpZiAoICR0cnkgPX4gL14oYXV0b18/KT92ZXJzaW9uJC8gKSB7CgkgICAg
JGF1dG9fdmVyc2lvbiA9ICRhY3Rpb247Cgl9CgllbHNpZiAoICR0cnkgPX4gL14oYXV0b18/KT9o
ZWxwJC8gKSB7CgkgICAgJGF1dG9faGVscCA9ICRhY3Rpb247Cgl9CgllbHNpZiAoICR0cnkgZXEg
J2lnbm9yZWNhc2UnIG9yICR0cnkgZXEgJ2lnbm9yZV9jYXNlJyApIHsKCSAgICAkaWdub3JlY2Fz
ZSA9ICRhY3Rpb247Cgl9CgllbHNpZiAoICR0cnkgZXEgJ2lnbm9yZWNhc2VfYWx3YXlzJyBvciAk
dHJ5IGVxICdpZ25vcmVfY2FzZV9hbHdheXMnICkgewoJICAgICRpZ25vcmVjYXNlID0gJGFjdGlv
biA/IDIgOiAwOwoJfQoJZWxzaWYgKCAkdHJ5IGVxICdidW5kbGluZycgKSB7CgkgICAgJGJ1bmRs
aW5nID0gJGFjdGlvbjsKCSAgICAkYnVuZGxpbmdfdmFsdWVzID0gMCBpZiAkYWN0aW9uOwoJfQoJ
ZWxzaWYgKCAkdHJ5IGVxICdidW5kbGluZ19vdmVycmlkZScgKSB7CgkgICAgJGJ1bmRsaW5nID0g
JGFjdGlvbiA/IDIgOiAwOwoJICAgICRidW5kbGluZ192YWx1ZXMgPSAwIGlmICRhY3Rpb247Cgl9
CgllbHNpZiAoICR0cnkgZXEgJ2J1bmRsaW5nX3ZhbHVlcycgKSB7CgkgICAgJGJ1bmRsaW5nX3Zh
bHVlcyA9ICRhY3Rpb247CgkgICAgJGJ1bmRsaW5nID0gMCBpZiAkYWN0aW9uOwoJfQoJZWxzaWYg
KCAkdHJ5IGVxICdyZXF1aXJlX29yZGVyJyApIHsKCSAgICAkb3JkZXIgPSAkYWN0aW9uID8gJFJF
UVVJUkVfT1JERVIgOiAkUEVSTVVURTsKCX0KCWVsc2lmICggJHRyeSBlcSAncGVybXV0ZScgKSB7
CgkgICAgJG9yZGVyID0gJGFjdGlvbiA/ICRQRVJNVVRFIDogJFJFUVVJUkVfT1JERVI7Cgl9Cgll
bHNpZiAoICR0cnkgZXEgJ3Bhc3NfdGhyb3VnaCcgb3IgJHRyeSBlcSAncGFzc3Rocm91Z2gnICkg
ewoJICAgICRwYXNzdGhyb3VnaCA9ICRhY3Rpb247Cgl9CgllbHNpZiAoICR0cnkgPX4gL15wcmVm
aXg9KC4rKSQvICYmICRhY3Rpb24gKSB7CgkgICAgJGdlbnByZWZpeCA9ICQxOwoJICAgICMgVHVy
biBpbnRvIHJlZ2V4cC4gTmVlZHMgdG8gYmUgcGFyZW50aGVzaXplZCEKCSAgICAkZ2VucHJlZml4
ID0gIigiIC4gcXVvdGVtZXRhKCRnZW5wcmVmaXgpIC4gIikiOwoJICAgIGV2YWwgeyAnJyA9fiAv
JGdlbnByZWZpeC87IH07CgkgICAgZGllKCJHZXRvcHQ6Okxvbmc6IGludmFsaWQgcGF0dGVybiBc
IiRnZW5wcmVmaXhcIlxuIikgaWYgJEA7Cgl9CgllbHNpZiAoICR0cnkgPX4gL15wcmVmaXhfcGF0
dGVybj0oLispJC8gJiYgJGFjdGlvbiApIHsKCSAgICAkZ2VucHJlZml4ID0gJDE7CgkgICAgIyBQ
YXJlbnRoZXNpemUgaWYgbmVlZGVkLgoJICAgICRnZW5wcmVmaXggPSAiKCIgLiAkZ2VucHJlZml4
IC4gIikiCgkgICAgICB1bmxlc3MgJGdlbnByZWZpeCA9fiAvXlwoLipcKSQvOwoJICAgIGV2YWwg
eyAnJyA9fiBtIiRnZW5wcmVmaXgiOyB9OwoJICAgIGRpZSgiR2V0b3B0OjpMb25nOiBpbnZhbGlk
IHBhdHRlcm4gXCIkZ2VucHJlZml4XCJcbiIpIGlmICRAOwoJfQoJZWxzaWYgKCAkdHJ5ID1+IC9e
bG9uZ19wcmVmaXhfcGF0dGVybj0oLispJC8gJiYgJGFjdGlvbiApIHsKCSAgICAkbG9uZ3ByZWZp
eCA9ICQxOwoJICAgICMgUGFyZW50aGVzaXplIGlmIG5lZWRlZC4KCSAgICAkbG9uZ3ByZWZpeCA9
ICIoIiAuICRsb25ncHJlZml4IC4gIikiCgkgICAgICB1bmxlc3MgJGxvbmdwcmVmaXggPX4gL15c
KC4qXCkkLzsKCSAgICBldmFsIHsgJycgPX4gbSIkbG9uZ3ByZWZpeCI7IH07CgkgICAgZGllKCJH
ZXRvcHQ6Okxvbmc6IGludmFsaWQgbG9uZyBwcmVmaXggcGF0dGVybiBcIiRsb25ncHJlZml4XCJc
biIpIGlmICRAOwoJfQoJZWxzaWYgKCAkdHJ5IGVxICdkZWJ1ZycgKSB7CgkgICAgJGRlYnVnID0g
JGFjdGlvbjsKCX0KCWVsc2UgewoJICAgIGRpZSgiR2V0b3B0OjpMb25nOiB1bmtub3duIG9yIGVy
cm9uZW91cyBjb25maWcgcGFyYW1ldGVyIFwiJG9wdFwiXG4iKQoJfQogICAgfQogICAgJHByZXZj
b25maWc7Cn0KCiMgRGVwcmVjYXRlZCBuYW1lLgpzdWIgY29uZmlnIChAKSB7CiAgICBDb25maWd1
cmUgKEBfKTsKfQoKIyBJc3N1ZSBhIHN0YW5kYXJkIG1lc3NhZ2UgZm9yIC0tdmVyc2lvbi4KIwoj
IFRoZSBhcmd1bWVudHMgYXJlIG1vc3RseSB0aGUgc2FtZSBhcyBmb3IgUG9kOjpVc2FnZTo6cG9k
MnVzYWdlOgojCiMgIC0gYSBudW1iZXIgKGV4aXQgdmFsdWUpCiMgIC0gYSBzdHJpbmcgKGxlYWQg
aW4gbWVzc2FnZSkKIyAgLSBhIGhhc2ggd2l0aCBvcHRpb25zLiBTZWUgUG9kOjpVc2FnZSBmb3Ig
ZGV0YWlscy4KIwpzdWIgVmVyc2lvbk1lc3NhZ2UoQCkgewogICAgIyBNYXNzYWdlIGFyZ3MuCiAg
ICBteSAkcGEgPSBzZXR1cF9wYV9hcmdzKCJ2ZXJzaW9uIiwgQF8pOwoKICAgIG15ICR2ID0gJG1h
aW46OlZFUlNJT047CiAgICBteSAkZmggPSAkcGEtPnstb3V0cHV0fSB8fAogICAgICAoICgkcGEt
PnstZXhpdHZhbH0gZXEgIk5PRVhJVCIgfHwgJHBhLT57LWV4aXR2YWx9IDwgMikgPyBcKlNURE9V
VCA6IFwqU1RERVJSICk7CgogICAgcHJpbnQgJGZoIChkZWZpbmVkKCRwYS0+ey1tZXNzYWdlfSkg
PyAkcGEtPnstbWVzc2FnZX0gOiAoKSwKCSAgICAgICAkMCwgZGVmaW5lZCAkdiA/ICIgdmVyc2lv
biAkdiIgOiAoKSwKCSAgICAgICAiXG4iLAoJICAgICAgICIoIiwgX19QQUNLQUdFX18sICI6OiIs
ICJHZXRPcHRpb25zIiwKCSAgICAgICAiIHZlcnNpb24gIiwKCSAgICAgICBkZWZpbmVkKCRHZXRv
cHQ6Okxvbmc6OlZFUlNJT05fU1RSSU5HKQoJICAgICAgICAgPyAkR2V0b3B0OjpMb25nOjpWRVJT
SU9OX1NUUklORyA6ICRWRVJTSU9OLCAiOyIsCgkgICAgICAgIiBQZXJsIHZlcnNpb24gIiwKCSAg
ICAgICAkXSA+PSA1LjAwNiA/IHNwcmludGYoIiV2ZCIsICReVikgOiAkXSwKCSAgICAgICAiKVxu
Iik7CiAgICBleGl0KCRwYS0+ey1leGl0dmFsfSkgdW5sZXNzICRwYS0+ey1leGl0dmFsfSBlcSAi
Tk9FWElUIjsKfQoKIyBJc3N1ZSBhIHN0YW5kYXJkIG1lc3NhZ2UgZm9yIC0taGVscC4KIwojIFRo
ZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBQb2Q6OlVzYWdlOjpwb2QydXNhZ2U6CiMK
IyAgLSBhIG51bWJlciAoZXhpdCB2YWx1ZSkKIyAgLSBhIHN0cmluZyAobGVhZCBpbiBtZXNzYWdl
KQojICAtIGEgaGFzaCB3aXRoIG9wdGlvbnMuIFNlZSBQb2Q6OlVzYWdlIGZvciBkZXRhaWxzLgoj
CnN1YiBIZWxwTWVzc2FnZShAKSB7CiAgICBldmFsIHsKCXJlcXVpcmUgUG9kOjpVc2FnZTsKCWlt
cG9ydCBQb2Q6OlVzYWdlOwoJMTsKICAgIH0gfHwgZGllKCJDYW5ub3QgcHJvdmlkZSBoZWxwOiBj
YW5ub3QgbG9hZCBQb2Q6OlVzYWdlXG4iKTsKCiAgICAjIE5vdGUgdGhhdCBwb2QydXNhZ2Ugd2ls
bCBpc3N1ZSBhIHdhcm5pbmcgaWYgLWV4aXR2YWwgPT4gTk9FWElULgogICAgcG9kMnVzYWdlKHNl
dHVwX3BhX2FyZ3MoImhlbHAiLCBAXykpOwoKfQoKIyBIZWxwZXIgcm91dGluZSB0byBzZXQgdXAg
YSBub3JtYWxpemVkIGhhc2ggcmVmIHRvIGJlIHVzZWQgYXMKIyBhcmd1bWVudCB0byBwb2QydXNh
Z2UuCnN1YiBzZXR1cF9wYV9hcmdzKCRAKSB7CiAgICBteSAkdGFnID0gc2hpZnQ7CQkjIHdobydz
IGNhbGxpbmcKCiAgICAjIElmIGNhbGxlZCBieSBkaXJlY3QgYmluZGluZyB0byBhbiBvcHRpb24s
IGl0IHdpbGwgZ2V0IHRoZSBvcHRpb24KICAgICMgbmFtZSBhbmQgdmFsdWUgYXMgYXJndW1lbnRz
LiBSZW1vdmUgdGhlc2UsIGlmIHNvLgogICAgQF8gPSAoKSBpZiBAXyA9PSAyICYmICRfWzBdIGVx
ICR0YWc7CgogICAgbXkgJHBhOwogICAgaWYgKCBAXyA+IDEgKSB7CgkkcGEgPSB7IEBfIH07CiAg
ICB9CiAgICBlbHNlIHsKCSRwYSA9IHNoaWZ0IHx8IHt9OwogICAgfQoKICAgICMgQXQgdGhpcyBw
b2ludCwgJHBhIGNhbiBiZSBhIG51bWJlciAoZXhpdCB2YWx1ZSksIHN0cmluZwogICAgIyAobWVz
c2FnZSkgb3IgaGFzaCB3aXRoIG9wdGlvbnMuCgogICAgaWYgKCBVTklWRVJTQUw6OmlzYSgkcGEs
ICdIQVNIJykgKSB7CgkjIEdldCByaWQgb2YgLW1zZyB2cy4gLW1lc3NhZ2UgYW1iaWd1aXR5LgoJ
JHBhLT57LW1lc3NhZ2V9ID0gJHBhLT57LW1zZ307CglkZWxldGUoJHBhLT57LW1zZ30pOwogICAg
fQogICAgZWxzaWYgKCAkcGEgPX4gL14tP1xkKyQvICkgewoJJHBhID0geyAtZXhpdHZhbCA9PiAk
cGEgfTsKICAgIH0KICAgIGVsc2UgewoJJHBhID0geyAtbWVzc2FnZSA9PiAkcGEgfTsKICAgIH0K
CiAgICAjIFRoZXNlIGFyZSBfb3VyXyBkZWZhdWx0cy4KICAgICRwYS0+ey12ZXJib3NlfSA9IDAg
dW5sZXNzIGV4aXN0cygkcGEtPnstdmVyYm9zZX0pOwogICAgJHBhLT57LWV4aXR2YWx9ID0gMCB1
bmxlc3MgZXhpc3RzKCRwYS0+ey1leGl0dmFsfSk7CiAgICAkcGE7Cn0KCiMgU25lYWsgd2F5IHRv
IGtub3cgd2hhdCB2ZXJzaW9uIHRoZSB1c2VyIHJlcXVlc3RlZC4Kc3ViIFZFUlNJT04gewogICAg
JHJlcXVlc3RlZF92ZXJzaW9uID0gJF9bMV07CiAgICBzaGlmdC0+U1VQRVI6OlZFUlNJT04oQF8p
Owp9CgpwYWNrYWdlIEdldG9wdDo6TG9uZzo6Q2FsbEJhY2s7CgpzdWIgbmV3IHsKICAgIG15ICgk
cGtnLCAlYXR0cykgPSBAXzsKICAgIGJsZXNzIHsgJWF0dHMgfSwgJHBrZzsKfQoKc3ViIG5hbWUg
ewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICcnLiRzZWxmLT57bmFtZX07Cn0KCnVzZSBvdmVy
bG9hZAogICMgVHJlYXQgdGhpcyBvYmplY3QgYXMgYW4gb3JkaW5hcnkgc3RyaW5nIGZvciBsZWdh
Y3kgQVBJLgogICciIicJICAgPT4gXCZuYW1lLAogIGZhbGxiYWNrID0+IDE7CgoxOwoKIyMjIyMj
IyMjIyMjIyMjIyBEb2N1bWVudGF0aW9uICMjIyMjIyMjIyMjIyMjIyMKCj1oZWFkMSBOQU1FCgpH
ZXRvcHQ6OkxvbmcgLSBFeHRlbmRlZCBwcm9jZXNzaW5nIG9mIGNvbW1hbmQgbGluZSBvcHRpb25z
Cgo9aGVhZDEgU1lOT1BTSVMKCiAgdXNlIEdldG9wdDo6TG9uZzsKICBteSAkZGF0YSAgID0gImZp
bGUuZGF0IjsKICBteSAkbGVuZ3RoID0gMjQ7CiAgbXkgJHZlcmJvc2U7CiAgR2V0T3B0aW9ucyAo
Imxlbmd0aD1pIiA9PiBcJGxlbmd0aCwgICAgIyBudW1lcmljCiAgICAgICAgICAgICAgImZpbGU9
cyIgICA9PiBcJGRhdGEsICAgICAgIyBzdHJpbmcKICAgICAgICAgICAgICAidmVyYm9zZSIgID0+
IFwkdmVyYm9zZSkgICAjIGZsYWcKICBvciBkaWUoIkVycm9yIGluIGNvbW1hbmQgbGluZSBhcmd1
bWVudHNcbiIpOwoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGUgR2V0b3B0OjpMb25nIG1vZHVsZSBp
bXBsZW1lbnRzIGFuIGV4dGVuZGVkIGdldG9wdCBmdW5jdGlvbiBjYWxsZWQKR2V0T3B0aW9ucygp
LiBJdCBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmcm9tIEM8QEFSR1Y+LCByZWNvZ25pemluZwph
bmQgcmVtb3Zpbmcgc3BlY2lmaWVkIG9wdGlvbnMgYW5kIHRoZWlyIHBvc3NpYmxlIHZhbHVlcy4K
ClRoaXMgZnVuY3Rpb24gYWRoZXJlcyB0byB0aGUgUE9TSVggc3ludGF4IGZvciBjb21tYW5kCmxp
bmUgb3B0aW9ucywgd2l0aCBHTlUgZXh0ZW5zaW9ucy4gSW4gZ2VuZXJhbCwgdGhpcyBtZWFucyB0
aGF0IG9wdGlvbnMKaGF2ZSBsb25nIG5hbWVzIGluc3RlYWQgb2Ygc2luZ2xlIGxldHRlcnMsIGFu
ZCBhcmUgaW50cm9kdWNlZCB3aXRoIGEKZG91YmxlIGRhc2ggIi0tIi4gU3VwcG9ydCBmb3IgYnVu
ZGxpbmcgb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMsIGFzIHdhcwp0aGUgY2FzZSB3aXRoIHRoZSBt
b3JlIHRyYWRpdGlvbmFsIHNpbmdsZS1sZXR0ZXIgYXBwcm9hY2gsIGlzIHByb3ZpZGVkCmJ1dCBu
b3QgZW5hYmxlZCBieSBkZWZhdWx0LgoKPWhlYWQxIENvbW1hbmQgTGluZSBPcHRpb25zLCBhbiBJ
bnRyb2R1Y3Rpb24KCkNvbW1hbmQgbGluZSBvcGVyYXRlZCBwcm9ncmFtcyB0cmFkaXRpb25hbGx5
IHRha2UgdGhlaXIgYXJndW1lbnRzIGZyb20KdGhlIGNvbW1hbmQgbGluZSwgZm9yIGV4YW1wbGUg
ZmlsZW5hbWVzIG9yIG90aGVyIGluZm9ybWF0aW9uIHRoYXQgdGhlCnByb2dyYW0gbmVlZHMgdG8g
a25vdy4gQmVzaWRlcyBhcmd1bWVudHMsIHRoZXNlIHByb2dyYW1zIG9mdGVuIHRha2UKY29tbWFu
ZCBsaW5lIEk8b3B0aW9ucz4gYXMgd2VsbC4gT3B0aW9ucyBhcmUgbm90IG5lY2Vzc2FyeSBmb3Ig
dGhlCnByb2dyYW0gdG8gd29yaywgaGVuY2UgdGhlIG5hbWUgJ29wdGlvbicsIGJ1dCBhcmUgdXNl
ZCB0byBtb2RpZnkgaXRzCmRlZmF1bHQgYmVoYXZpb3VyLiBGb3IgZXhhbXBsZSwgYSBwcm9ncmFt
IGNvdWxkIGRvIGl0cyBqb2IgcXVpZXRseSwKYnV0IHdpdGggYSBzdWl0YWJsZSBvcHRpb24gaXQg
Y291bGQgcHJvdmlkZSB2ZXJib3NlIGluZm9ybWF0aW9uIGFib3V0CndoYXQgaXQgZGlkLgoKQ29t
bWFuZCBsaW5lIG9wdGlvbnMgY29tZSBpbiBzZXZlcmFsIGZsYXZvdXJzLiBIaXN0b3JpY2FsbHks
IHRoZXkgYXJlCnByZWNlZGVkIGJ5IGEgc2luZ2xlIGRhc2ggQzwtPiwgYW5kIGNvbnNpc3Qgb2Yg
YSBzaW5nbGUgbGV0dGVyLgoKICAgIC1sIC1hIC1jCgpVc3VhbGx5LCB0aGVzZSBzaW5nbGUtY2hh
cmFjdGVyIG9wdGlvbnMgY2FuIGJlIGJ1bmRsZWQ6CgogICAgLWxhYwoKT3B0aW9ucyBjYW4gaGF2
ZSB2YWx1ZXMsIHRoZSB2YWx1ZSBpcyBwbGFjZWQgYWZ0ZXIgdGhlIG9wdGlvbgpjaGFyYWN0ZXIu
IFNvbWV0aW1lcyB3aXRoIHdoaXRlc3BhY2UgaW4gYmV0d2Vlbiwgc29tZXRpbWVzIG5vdDoKCiAg
ICAtcyAyNCAtczI0CgpEdWUgdG8gdGhlIHZlcnkgY3J5cHRpYyBuYXR1cmUgb2YgdGhlc2Ugb3B0
aW9ucywgYW5vdGhlciBzdHlsZSB3YXMKZGV2ZWxvcGVkIHRoYXQgdXNlZCBsb25nIG5hbWVzLiBT
byBpbnN0ZWFkIG9mIGEgY3J5cHRpYyBDPC1sPiBvbmUKY291bGQgdXNlIHRoZSBtb3JlIGRlc2Ny
aXB0aXZlIEM8LS1sb25nPi4gVG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhCmJ1bmRsZSBvZiBzaW5n
bGUtY2hhcmFjdGVyIG9wdGlvbnMgYW5kIGEgbG9uZyBvbmUsIHR3byBkYXNoZXMgYXJlIHVzZWQK
dG8gcHJlY2VkZSB0aGUgb3B0aW9uIG5hbWUuIEVhcmx5IGltcGxlbWVudGF0aW9ucyBvZiBsb25n
IG9wdGlvbnMgdXNlZAphIHBsdXMgQzwrPiBpbnN0ZWFkLiBBbHNvLCBvcHRpb24gdmFsdWVzIGNv
dWxkIGJlIHNwZWNpZmllZCBlaXRoZXIKbGlrZQoKICAgIC0tc2l6ZT0yNAoKb3IKCiAgICAtLXNp
emUgMjQKClRoZSBDPCs+IGZvcm0gaXMgbm93IG9ic29sZXRlIGFuZCBzdHJvbmdseSBkZXByZWNh
dGVkLgoKPWhlYWQxIEdldHRpbmcgU3RhcnRlZCB3aXRoIEdldG9wdDo6TG9uZwoKR2V0b3B0OjpM
b25nIGlzIHRoZSBQZXJsNSBzdWNjZXNzb3Igb2YgQzxuZXdnZXRvcHQucGw+LiBUaGlzIHdhcyB0
aGUKZmlyc3QgUGVybCBtb2R1bGUgdGhhdCBwcm92aWRlZCBzdXBwb3J0IGZvciBoYW5kbGluZyB0
aGUgbmV3IHN0eWxlIG9mCmNvbW1hbmQgbGluZSBvcHRpb25zLCBpbiBwYXJ0aWN1bGFyIGxvbmcg
b3B0aW9uIG5hbWVzLCBoZW5jZSB0aGUgUGVybDUKbmFtZSBHZXRvcHQ6OkxvbmcuIFRoaXMgbW9k
dWxlIGFsc28gc3VwcG9ydHMgc2luZ2xlLWNoYXJhY3RlciBvcHRpb25zCmFuZCBidW5kbGluZy4K
ClRvIHVzZSBHZXRvcHQ6OkxvbmcgZnJvbSBhIFBlcmwgcHJvZ3JhbSwgeW91IG11c3QgaW5jbHVk
ZSB0aGUKZm9sbG93aW5nIGxpbmUgaW4geW91ciBQZXJsIHByb2dyYW06CgogICAgdXNlIEdldG9w
dDo6TG9uZzsKClRoaXMgd2lsbCBsb2FkIHRoZSBjb3JlIG9mIHRoZSBHZXRvcHQ6OkxvbmcgbW9k
dWxlIGFuZCBwcmVwYXJlIHlvdXIKcHJvZ3JhbSBmb3IgdXNpbmcgaXQuIE1vc3Qgb2YgdGhlIGFj
dHVhbCBHZXRvcHQ6OkxvbmcgY29kZSBpcyBub3QKbG9hZGVkIHVudGlsIHlvdSByZWFsbHkgY2Fs
bCBvbmUgb2YgaXRzIGZ1bmN0aW9ucy4KCkluIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIG9w
dGlvbnMgbmFtZXMgbWF5IGJlIGFiYnJldmlhdGVkIHRvCnVuaXF1ZW5lc3MsIGNhc2UgZG9lcyBu
b3QgbWF0dGVyLCBhbmQgYSBzaW5nbGUgZGFzaCBpcyBzdWZmaWNpZW50LApldmVuIGZvciBsb25n
IG9wdGlvbiBuYW1lcy4gQWxzbywgb3B0aW9ucyBtYXkgYmUgcGxhY2VkIGJldHdlZW4Kbm9uLW9w
dGlvbiBhcmd1bWVudHMuIFNlZSBMPENvbmZpZ3VyaW5nIEdldG9wdDo6TG9uZz4gZm9yIG1vcmUK
ZGV0YWlscyBvbiBob3cgdG8gY29uZmlndXJlIEdldG9wdDo6TG9uZy4KCj1oZWFkMiBTaW1wbGUg
b3B0aW9ucwoKVGhlIG1vc3Qgc2ltcGxlIG9wdGlvbnMgYXJlIHRoZSBvbmVzIHRoYXQgdGFrZSBu
byB2YWx1ZXMuIFRoZWlyIG1lcmUKcHJlc2VuY2Ugb24gdGhlIGNvbW1hbmQgbGluZSBlbmFibGVz
IHRoZSBvcHRpb24uIFBvcHVsYXIgZXhhbXBsZXMgYXJlOgoKICAgIC0tYWxsIC0tdmVyYm9zZSAt
LXF1aWV0IC0tZGVidWcKCkhhbmRsaW5nIHNpbXBsZSBvcHRpb25zIGlzIHN0cmFpZ2h0Zm9yd2Fy
ZDoKCiAgICBteSAkdmVyYm9zZSA9ICcnOwkjIG9wdGlvbiB2YXJpYWJsZSB3aXRoIGRlZmF1bHQg
dmFsdWUgKGZhbHNlKQogICAgbXkgJGFsbCA9ICcnOwkjIG9wdGlvbiB2YXJpYWJsZSB3aXRoIGRl
ZmF1bHQgdmFsdWUgKGZhbHNlKQogICAgR2V0T3B0aW9ucyAoJ3ZlcmJvc2UnID0+IFwkdmVyYm9z
ZSwgJ2FsbCcgPT4gXCRhbGwpOwoKVGhlIGNhbGwgdG8gR2V0T3B0aW9ucygpIHBhcnNlcyB0aGUg
Y29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0aGF0IGFyZQpwcmVzZW50IGluIEM8QEFSR1Y+IGFuZCBz
ZXRzIHRoZSBvcHRpb24gdmFyaWFibGUgdG8gdGhlIHZhbHVlIEM8MT4gaWYKdGhlIG9wdGlvbiBk
aWQgb2NjdXIgb24gdGhlIGNvbW1hbmQgbGluZS4gT3RoZXJ3aXNlLCB0aGUgb3B0aW9uCnZhcmlh
YmxlIGlzIG5vdCB0b3VjaGVkLiBTZXR0aW5nIHRoZSBvcHRpb24gdmFsdWUgdG8gdHJ1ZSBpcyBv
ZnRlbgpjYWxsZWQgSTxlbmFibGluZz4gdGhlIG9wdGlvbi4KClRoZSBvcHRpb24gbmFtZSBhcyBz
cGVjaWZpZWQgdG8gdGhlIEdldE9wdGlvbnMoKSBmdW5jdGlvbiBpcyBjYWxsZWQKdGhlIG9wdGlv
biBJPHNwZWNpZmljYXRpb24+LiBMYXRlciB3ZSdsbCBzZWUgdGhhdCB0aGlzIHNwZWNpZmljYXRp
b24KY2FuIGNvbnRhaW4gbW9yZSB0aGFuIGp1c3QgdGhlIG9wdGlvbiBuYW1lLiBUaGUgcmVmZXJl
bmNlIHRvIHRoZQp2YXJpYWJsZSBpcyBjYWxsZWQgdGhlIG9wdGlvbiBJPGRlc3RpbmF0aW9uPi4K
CkdldE9wdGlvbnMoKSB3aWxsIHJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIGNvbW1hbmQgbGlu
ZSBjb3VsZCBiZQpwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIGl0IHdpbGwgd3Jp
dGUgZXJyb3IgbWVzc2FnZXMgdXNpbmcKZGllKCkgYW5kIHdhcm4oKSwgYW5kIHJldHVybiBhIGZh
bHNlIHJlc3VsdC4KCj1oZWFkMiBBIGxpdHRsZSBiaXQgbGVzcyBzaW1wbGUgb3B0aW9ucwoKR2V0
b3B0OjpMb25nIHN1cHBvcnRzIHR3byB1c2VmdWwgdmFyaWFudHMgb2Ygc2ltcGxlIG9wdGlvbnM6
Ckk8bmVnYXRhYmxlPiBvcHRpb25zIGFuZCBJPGluY3JlbWVudGFsPiBvcHRpb25zLgoKQSBuZWdh
dGFibGUgb3B0aW9uIGlzIHNwZWNpZmllZCB3aXRoIGFuIGV4Y2xhbWF0aW9uIG1hcmsgQzwhPiBh
ZnRlciB0aGUKb3B0aW9uIG5hbWU6CgogICAgbXkgJHZlcmJvc2UgPSAnJzsJIyBvcHRpb24gdmFy
aWFibGUgd2l0aCBkZWZhdWx0IHZhbHVlIChmYWxzZSkKICAgIEdldE9wdGlvbnMgKCd2ZXJib3Nl
IScgPT4gXCR2ZXJib3NlKTsKCk5vdywgdXNpbmcgQzwtLXZlcmJvc2U+IG9uIHRoZSBjb21tYW5k
IGxpbmUgd2lsbCBlbmFibGUgQzwkdmVyYm9zZT4sCmFzIGV4cGVjdGVkLiBCdXQgaXQgaXMgYWxz
byBhbGxvd2VkIHRvIHVzZSBDPC0tbm92ZXJib3NlPiwgd2hpY2ggd2lsbApkaXNhYmxlIEM8JHZl
cmJvc2U+IGJ5IHNldHRpbmcgaXRzIHZhbHVlIHRvIEM8MD4uIFVzaW5nIGEgc3VpdGFibGUKZGVm
YXVsdCB2YWx1ZSwgdGhlIHByb2dyYW0gY2FuIGZpbmQgb3V0IHdoZXRoZXIgQzwkdmVyYm9zZT4g
aXMgZmFsc2UKYnkgZGVmYXVsdCwgb3IgZGlzYWJsZWQgYnkgdXNpbmcgQzwtLW5vdmVyYm9zZT4u
CgpBbiBpbmNyZW1lbnRhbCBvcHRpb24gaXMgc3BlY2lmaWVkIHdpdGggYSBwbHVzIEM8Kz4gYWZ0
ZXIgdGhlCm9wdGlvbiBuYW1lOgoKICAgIG15ICR2ZXJib3NlID0gJyc7CSMgb3B0aW9uIHZhcmlh
YmxlIHdpdGggZGVmYXVsdCB2YWx1ZSAoZmFsc2UpCiAgICBHZXRPcHRpb25zICgndmVyYm9zZSsn
ID0+IFwkdmVyYm9zZSk7CgpVc2luZyBDPC0tdmVyYm9zZT4gb24gdGhlIGNvbW1hbmQgbGluZSB3
aWxsIGluY3JlbWVudCB0aGUgdmFsdWUgb2YKQzwkdmVyYm9zZT4uIFRoaXMgd2F5IHRoZSBwcm9n
cmFtIGNhbiBrZWVwIHRyYWNrIG9mIGhvdyBtYW55IHRpbWVzIHRoZQpvcHRpb24gb2NjdXJyZWQg
b24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGUsIGVhY2ggb2NjdXJyZW5jZSBvZgpDPC0t
dmVyYm9zZT4gY291bGQgaW5jcmVhc2UgdGhlIHZlcmJvc2l0eSBsZXZlbCBvZiB0aGUgcHJvZ3Jh
bS4KCj1oZWFkMiBNaXhpbmcgY29tbWFuZCBsaW5lIG9wdGlvbiB3aXRoIG90aGVyIGFyZ3VtZW50
cwoKVXN1YWxseSBwcm9ncmFtcyB0YWtlIGNvbW1hbmQgbGluZSBvcHRpb25zIGFzIHdlbGwgYXMg
b3RoZXIgYXJndW1lbnRzLApmb3IgZXhhbXBsZSwgZmlsZSBuYW1lcy4gSXQgaXMgZ29vZCBwcmFj
dGljZSB0byBhbHdheXMgc3BlY2lmeSB0aGUKb3B0aW9ucyBmaXJzdCwgYW5kIHRoZSBvdGhlciBh
cmd1bWVudHMgbGFzdC4gR2V0b3B0OjpMb25nIHdpbGwsCmhvd2V2ZXIsIGFsbG93IHRoZSBvcHRp
b25zIGFuZCBhcmd1bWVudHMgdG8gYmUgbWl4ZWQgYW5kICdmaWx0ZXIgb3V0JwphbGwgdGhlIG9w
dGlvbnMgYmVmb3JlIHBhc3NpbmcgdGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50cyB0byB0aGUKcHJv
Z3JhbS4gVG8gc3RvcCBHZXRvcHQ6OkxvbmcgZnJvbSBwcm9jZXNzaW5nIGZ1cnRoZXIgYXJndW1l
bnRzLAppbnNlcnQgYSBkb3VibGUgZGFzaCBDPC0tPiBvbiB0aGUgY29tbWFuZCBsaW5lOgoKICAg
IC0tc2l6ZSAyNCAtLSAtLWFsbAoKSW4gdGhpcyBleGFtcGxlLCBDPC0tYWxsPiB3aWxsIEk8bm90
PiBiZSB0cmVhdGVkIGFzIGFuIG9wdGlvbiwgYnV0CnBhc3NlZCB0byB0aGUgcHJvZ3JhbSB1bmhh
cm1lZCwgaW4gQzxAQVJHVj4uCgo9aGVhZDIgT3B0aW9ucyB3aXRoIHZhbHVlcwoKRm9yIG9wdGlv
bnMgdGhhdCB0YWtlIHZhbHVlcyBpdCBtdXN0IGJlIHNwZWNpZmllZCB3aGV0aGVyIHRoZSBvcHRp
b24KdmFsdWUgaXMgcmVxdWlyZWQgb3Igbm90LCBhbmQgd2hhdCBraW5kIG9mIHZhbHVlIHRoZSBv
cHRpb24gZXhwZWN0cy4KClRocmVlIGtpbmRzIG9mIHZhbHVlcyBhcmUgc3VwcG9ydGVkOiBpbnRl
Z2VyIG51bWJlcnMsIGZsb2F0aW5nIHBvaW50Cm51bWJlcnMsIGFuZCBzdHJpbmdzLgoKSWYgdGhl
IG9wdGlvbiB2YWx1ZSBpcyByZXF1aXJlZCwgR2V0b3B0OjpMb25nIHdpbGwgdGFrZSB0aGUKY29t
bWFuZCBsaW5lIGFyZ3VtZW50IHRoYXQgZm9sbG93cyB0aGUgb3B0aW9uIGFuZCBhc3NpZ24gdGhp
cyB0byB0aGUKb3B0aW9uIHZhcmlhYmxlLiBJZiwgaG93ZXZlciwgdGhlIG9wdGlvbiB2YWx1ZSBp
cyBzcGVjaWZpZWQgYXMKb3B0aW9uYWwsIHRoaXMgd2lsbCBvbmx5IGJlIGRvbmUgaWYgdGhhdCB2
YWx1ZSBkb2VzIG5vdCBsb29rIGxpa2UgYQp2YWxpZCBjb21tYW5kIGxpbmUgb3B0aW9uIGl0c2Vs
Zi4KCiAgICBteSAkdGFnID0gJyc7CSMgb3B0aW9uIHZhcmlhYmxlIHdpdGggZGVmYXVsdCB2YWx1
ZQogICAgR2V0T3B0aW9ucyAoJ3RhZz1zJyA9PiBcJHRhZyk7CgpJbiB0aGUgb3B0aW9uIHNwZWNp
ZmljYXRpb24sIHRoZSBvcHRpb24gbmFtZSBpcyBmb2xsb3dlZCBieSBhbiBlcXVhbHMKc2lnbiBD
PD0+IGFuZCB0aGUgbGV0dGVyIEM8cz4uIFRoZSBlcXVhbHMgc2lnbiBpbmRpY2F0ZXMgdGhhdCB0
aGlzCm9wdGlvbiByZXF1aXJlcyBhIHZhbHVlLiBUaGUgbGV0dGVyIEM8cz4gaW5kaWNhdGVzIHRo
YXQgdGhpcyB2YWx1ZSBpcwphbiBhcmJpdHJhcnkgc3RyaW5nLiBPdGhlciBwb3NzaWJsZSB2YWx1
ZSB0eXBlcyBhcmUgQzxpPiBmb3IgaW50ZWdlcgp2YWx1ZXMsIGFuZCBDPGY+IGZvciBmbG9hdGlu
ZyBwb2ludCB2YWx1ZXMuIFVzaW5nIGEgY29sb24gQzw6PiBpbnN0ZWFkCm9mIHRoZSBlcXVhbHMg
c2lnbiBpbmRpY2F0ZXMgdGhhdCB0aGUgb3B0aW9uIHZhbHVlIGlzIG9wdGlvbmFsLiBJbgp0aGlz
IGNhc2UsIGlmIG5vIHN1aXRhYmxlIHZhbHVlIGlzIHN1cHBsaWVkLCBzdHJpbmcgdmFsdWVkIG9w
dGlvbnMgZ2V0CmFuIGVtcHR5IHN0cmluZyBDPCcnPiBhc3NpZ25lZCwgd2hpbGUgbnVtZXJpYyBv
cHRpb25zIGFyZSBzZXQgdG8gQzwwPi4KCj1oZWFkMiBPcHRpb25zIHdpdGggbXVsdGlwbGUgdmFs
dWVzCgpPcHRpb25zIHNvbWV0aW1lcyB0YWtlIHNldmVyYWwgdmFsdWVzLiBGb3IgZXhhbXBsZSwg
YSBwcm9ncmFtIGNvdWxkCnVzZSBtdWx0aXBsZSBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIGxp
YnJhcnkgZmlsZXM6CgogICAgLS1saWJyYXJ5IGxpYi9zdGRsaWIgLS1saWJyYXJ5IGxpYi9leHRs
aWIKClRvIGFjY29tcGxpc2ggdGhpcyBiZWhhdmlvdXIsIHNpbXBseSBzcGVjaWZ5IGFuIGFycmF5
IHJlZmVyZW5jZSBhcyB0aGUKZGVzdGluYXRpb24gZm9yIHRoZSBvcHRpb246CgogICAgR2V0T3B0
aW9ucyAoImxpYnJhcnk9cyIgPT4gXEBsaWJmaWxlcyk7CgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2Fu
IHNwZWNpZnkgdGhhdCB0aGUgb3B0aW9uIGNhbiBoYXZlIG11bHRpcGxlCnZhbHVlcyBieSBhZGRp
bmcgYSAiQCIsIGFuZCBwYXNzIGEgc2NhbGFyIHJlZmVyZW5jZSBhcyB0aGUKZGVzdGluYXRpb246
CgogICAgR2V0T3B0aW9ucyAoImxpYnJhcnk9c0AiID0+IFwkbGliZmlsZXMpOwoKVXNlZCB3aXRo
IHRoZSBleGFtcGxlIGFib3ZlLCBDPEBsaWJmaWxlcz4gKG9yIEM8QCRsaWJmaWxlcz4pIHdvdWxk
CmNvbnRhaW4gdHdvIHN0cmluZ3MgdXBvbiBjb21wbGV0aW9uOiBDPCJsaWIvc3RkbGliIj4gYW5k
CkM8ImxpYi9leHRsaWIiPiwgaW4gdGhhdCBvcmRlci4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBz
cGVjaWZ5IHRoYXQKb25seSBpbnRlZ2VyIG9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIGFj
Y2VwdGFibGUgdmFsdWVzLgoKT2Z0ZW4gaXQgaXMgdXNlZnVsIHRvIGFsbG93IGNvbW1hLXNlcGFy
YXRlZCBsaXN0cyBvZiB2YWx1ZXMgYXMgd2VsbCBhcwptdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0
aGUgb3B0aW9ucy4gVGhpcyBpcyBlYXN5IHVzaW5nIFBlcmwncyBzcGxpdCgpCmFuZCBqb2luKCkg
b3BlcmF0b3JzOgoKICAgIEdldE9wdGlvbnMgKCJsaWJyYXJ5PXMiID0+IFxAbGliZmlsZXMpOwog
ICAgQGxpYmZpbGVzID0gc3BsaXQoLywvLGpvaW4oJywnLEBsaWJmaWxlcykpOwoKT2YgY291cnNl
LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2hvb3NlIHRoZSByaWdodCBzZXBhcmF0b3Igc3RyaW5nIGZv
cgplYWNoIHB1cnBvc2UuCgpXYXJuaW5nOiBXaGF0IGZvbGxvd3MgaXMgYW4gZXhwZXJpbWVudGFs
IGZlYXR1cmUuCgpPcHRpb25zIGNhbiB0YWtlIG11bHRpcGxlIHZhbHVlcyBhdCBvbmNlLCBmb3Ig
ZXhhbXBsZQoKICAgIC0tY29vcmRpbmF0ZXMgNTIuMiAxNi40IC0tcmdiY29sb3IgMjU1IDI1NSAx
NDkKClRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZCBieSBhZGRpbmcgYSByZXBlYXQgc3BlY2lmaWVy
IHRvIHRoZSBvcHRpb24Kc3BlY2lmaWNhdGlvbi4gUmVwZWF0IHNwZWNpZmllcnMgYXJlIHZlcnkg
c2ltaWxhciB0byB0aGUgQzx7Li4ufT4KcmVwZWF0IHNwZWNpZmllcnMgdGhhdCBjYW4gYmUgdXNl
ZCB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJucy4KRm9yIGV4YW1wbGUsIHRoZSBhYm92
ZSBjb21tYW5kIGxpbmUgd291bGQgYmUgaGFuZGxlZCBhcyBmb2xsb3dzOgoKICAgIEdldE9wdGlv
bnMoJ2Nvb3JkaW5hdGVzPWZ7Mn0nID0+IFxAY29vciwgJ3JnYmNvbG9yPWl7M30nID0+IFxAY29s
b3IpOwoKVGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgb3Ig
YXJyYXkgcmVmZXJlbmNlLgoKSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZSBtaW5p
bWFsIGFuZCBtYXhpbWFsIG51bWJlciBvZgphcmd1bWVudHMgYW4gb3B0aW9uIHRha2VzLiBDPGZv
bz1zezIsNH0+IGluZGljYXRlcyBhbiBvcHRpb24gdGhhdAp0YWtlcyBhdCBsZWFzdCB0d28gYW5k
IGF0IG1vc3QgNCBhcmd1bWVudHMuIEM8Zm9vPXN7MSx9PiBpbmRpY2F0ZXMgb25lCm9yIG1vcmUg
dmFsdWVzOyBDPGZvbzpzeyx9PiBpbmRpY2F0ZXMgemVybyBvciBtb3JlIG9wdGlvbiB2YWx1ZXMu
Cgo9aGVhZDIgT3B0aW9ucyB3aXRoIGhhc2ggdmFsdWVzCgpJZiB0aGUgb3B0aW9uIGRlc3RpbmF0
aW9uIGlzIGEgcmVmZXJlbmNlIHRvIGEgaGFzaCwgdGhlIG9wdGlvbiB3aWxsCnRha2UsIGFzIHZh
bHVlLCBzdHJpbmdzIG9mIHRoZSBmb3JtIEk8a2V5PkM8PT5JPHZhbHVlPi4gVGhlIHZhbHVlIHdp
bGwKYmUgc3RvcmVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhlIGhhc2guCgogICAgR2V0
T3B0aW9ucyAoImRlZmluZT1zIiA9PiBcJWRlZmluZXMpOwoKQWx0ZXJuYXRpdmVseSB5b3UgY2Fu
IHVzZToKCiAgICBHZXRPcHRpb25zICgiZGVmaW5lPXMlIiA9PiBcJGRlZmluZXMpOwoKV2hlbiB1
c2VkIHdpdGggY29tbWFuZCBsaW5lIG9wdGlvbnM6CgogICAgLS1kZWZpbmUgb3M9bGludXggLS1k
ZWZpbmUgdmVuZG9yPXJlZGhhdAoKdGhlIGhhc2ggQzwlZGVmaW5lcz4gKG9yIEM8JSRkZWZpbmVz
Pikgd2lsbCBjb250YWluIHR3byBrZXlzLCBDPCJvcyI+CndpdGggdmFsdWUgQzwibGludXgiPiBh
bmQgQzwidmVuZG9yIj4gd2l0aCB2YWx1ZSBDPCJyZWRoYXQiPi4gSXQgaXMKYWxzbyBwb3NzaWJs
ZSB0byBzcGVjaWZ5IHRoYXQgb25seSBpbnRlZ2VyIG9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMK
YXJlIGFjY2VwdGFibGUgdmFsdWVzLiBUaGUga2V5cyBhcmUgYWx3YXlzIHRha2VuIHRvIGJlIHN0
cmluZ3MuCgo9aGVhZDIgVXNlci1kZWZpbmVkIHN1YnJvdXRpbmVzIHRvIGhhbmRsZSBvcHRpb25z
CgpVbHRpbWF0ZSBjb250cm9sIG92ZXIgd2hhdCBzaG91bGQgYmUgZG9uZSB3aGVuIChhY3R1YWxs
eTogZWFjaCB0aW1lKQphbiBvcHRpb24gaXMgZW5jb3VudGVyZWQgb24gdGhlIGNvbW1hbmQgbGlu
ZSBjYW4gYmUgYWNoaWV2ZWQgYnkKZGVzaWduYXRpbmcgYSByZWZlcmVuY2UgdG8gYSBzdWJyb3V0
aW5lIChvciBhbiBhbm9ueW1vdXMgc3Vicm91dGluZSkKYXMgdGhlIG9wdGlvbiBkZXN0aW5hdGlv
bi4gV2hlbiBHZXRPcHRpb25zKCkgZW5jb3VudGVycyB0aGUgb3B0aW9uLCBpdAp3aWxsIGNhbGwg
dGhlIHN1YnJvdXRpbmUgd2l0aCB0d28gb3IgdGhyZWUgYXJndW1lbnRzLiBUaGUgZmlyc3QKYXJn
dW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIG9wdGlvbi4gKEFjdHVhbGx5LCBpdCBpcyBhbiBvYmpl
Y3QgdGhhdApzdHJpbmdpZmllcyB0byB0aGUgbmFtZSBvZiB0aGUgb3B0aW9uLikgRm9yIGEgc2Nh
bGFyIG9yIGFycmF5IGRlc3RpbmF0aW9uLAp0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSB2YWx1
ZSB0byBiZSBzdG9yZWQuIEZvciBhIGhhc2ggZGVzdGluYXRpb24sCnRoZSBzZWNvbmQgYXJndW1l
bnQgaXMgdGhlIGtleSB0byB0aGUgaGFzaCwgYW5kIHRoZSB0aGlyZCBhcmd1bWVudAp0aGUgdmFs
dWUgdG8gYmUgc3RvcmVkLiBJdCBpcyB1cCB0byB0aGUgc3Vicm91dGluZSB0byBzdG9yZSB0aGUg
dmFsdWUsCm9yIGRvIHdoYXRldmVyIGl0IHRoaW5rcyBpcyBhcHByb3ByaWF0ZS4KCkEgdHJpdmlh
bCBhcHBsaWNhdGlvbiBvZiB0aGlzIG1lY2hhbmlzbSBpcyB0byBpbXBsZW1lbnQgb3B0aW9ucyB0
aGF0CmFyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuIEZvciBleGFtcGxlOgoKICAgIG15ICR2ZXJi
b3NlID0gJyc7CSMgb3B0aW9uIHZhcmlhYmxlIHdpdGggZGVmYXVsdCB2YWx1ZSAoZmFsc2UpCiAg
ICBHZXRPcHRpb25zICgndmVyYm9zZScgPT4gXCR2ZXJib3NlLAoJICAgICAgICAncXVpZXQnICAg
PT4gc3ViIHsgJHZlcmJvc2UgPSAwIH0pOwoKSGVyZSBDPC0tdmVyYm9zZT4gYW5kIEM8LS1xdWll
dD4gY29udHJvbCB0aGUgc2FtZSB2YXJpYWJsZQpDPCR2ZXJib3NlPiwgYnV0IHdpdGggb3Bwb3Np
dGUgdmFsdWVzLgoKSWYgdGhlIHN1YnJvdXRpbmUgbmVlZHMgdG8gc2lnbmFsIGFuIGVycm9yLCBp
dCBzaG91bGQgY2FsbCBkaWUoKSB3aXRoCnRoZSBkZXNpcmVkIGVycm9yIG1lc3NhZ2UgYXMgaXRz
IGFyZ3VtZW50LiBHZXRPcHRpb25zKCkgd2lsbCBjYXRjaCB0aGUKZGllKCksIGlzc3VlIHRoZSBl
cnJvciBtZXNzYWdlLCBhbmQgcmVjb3JkIHRoYXQgYW4gZXJyb3IgcmVzdWx0IG11c3QKYmUgcmV0
dXJuZWQgdXBvbiBjb21wbGV0aW9uLgoKSWYgdGhlIHRleHQgb2YgdGhlIGVycm9yIG1lc3NhZ2Ug
c3RhcnRzIHdpdGggYW4gZXhjbGFtYXRpb24gbWFyayBDPCE+Cml0IGlzIGludGVycHJldGVkIHNw
ZWNpYWxseSBieSBHZXRPcHRpb25zKCkuIFRoZXJlIGlzIGN1cnJlbnRseSBvbmUKc3BlY2lhbCBj
b21tYW5kIGltcGxlbWVudGVkOiBDPGRpZSgiIUZJTklTSCIpPiB3aWxsIGNhdXNlIEdldE9wdGlv
bnMoKQp0byBzdG9wIHByb2Nlc3Npbmcgb3B0aW9ucywgYXMgaWYgaXQgZW5jb3VudGVyZWQgYSBk
b3VibGUgZGFzaCBDPC0tPi4KCkluIHZlcnNpb24gMi4zNyB0aGUgZmlyc3QgYXJndW1lbnQgdG8g
dGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdhcwpjaGFuZ2VkIGZyb20gc3RyaW5nIHRvIG9iamVjdC4g
VGhpcyB3YXMgZG9uZSB0byBtYWtlIHJvb20gZm9yCmV4dGVuc2lvbnMgYW5kIG1vcmUgZGV0YWls
ZWQgY29udHJvbC4gVGhlIG9iamVjdCBzdHJpbmdpZmllcyB0byB0aGUKb3B0aW9uIG5hbWUgc28g
dGhpcyBjaGFuZ2Ugc2hvdWxkIG5vdCBpbnRyb2R1Y2UgY29tcGF0aWJpbGl0eQpwcm9ibGVtcy4K
CkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gYWNjZXNzIHRoZSBvcHRpb24gbmFtZSBhbmQg
dmFsdWUgZnJvbSB3aXRoaW4KYSBzdWJyb3V0aW5lOgoKICAgIEdldE9wdGlvbnMgKCdvcHQ9aScg
PT4gXCZoYW5kbGVyKTsKICAgIHN1YiBoYW5kbGVyIHsKICAgICAgICBteSAoJG9wdF9uYW1lLCAk
b3B0X3ZhbHVlKSA9IEBfOwogICAgICAgIHByaW50KCJPcHRpb24gbmFtZSBpcyAkb3B0X25hbWUg
YW5kIHZhbHVlIGlzICRvcHRfdmFsdWVcbiIpOwogICAgfQoKPWhlYWQyIE9wdGlvbnMgd2l0aCBt
dWx0aXBsZSBuYW1lcwoKT2Z0ZW4gaXQgaXMgdXNlciBmcmllbmRseSB0byBzdXBwbHkgYWx0ZXJu
YXRlIG1uZW1vbmljIG5hbWVzIGZvcgpvcHRpb25zLiBGb3IgZXhhbXBsZSBDPC0taGVpZ2h0PiBj
b3VsZCBiZSBhbiBhbHRlcm5hdGUgbmFtZSBmb3IKQzwtLWxlbmd0aD4uIEFsdGVybmF0ZSBuYW1l
cyBjYW4gYmUgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbgpzcGVjaWZpY2F0aW9uLCBzZXBhcmF0ZWQg
YnkgdmVydGljYWwgYmFyIEM8fD4gY2hhcmFjdGVycy4gVG8gaW1wbGVtZW50CnRoZSBhYm92ZSBl
eGFtcGxlOgoKICAgIEdldE9wdGlvbnMgKCdsZW5ndGh8aGVpZ2h0PWYnID0+IFwkbGVuZ3RoKTsK
ClRoZSBmaXJzdCBuYW1lIGlzIGNhbGxlZCB0aGUgSTxwcmltYXJ5PiBuYW1lLCB0aGUgb3RoZXIg
bmFtZXMgYXJlCmNhbGxlZCBJPGFsaWFzZXM+LiBXaGVuIHVzaW5nIGEgaGFzaCB0byBzdG9yZSBv
cHRpb25zLCB0aGUga2V5IHdpbGwKYWx3YXlzIGJlIHRoZSBwcmltYXJ5IG5hbWUuCgpNdWx0aXBs
ZSBhbHRlcm5hdGUgbmFtZXMgYXJlIHBvc3NpYmxlLgoKPWhlYWQyIENhc2UgYW5kIGFiYnJldmlh
dGlvbnMKCldpdGhvdXQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLCBHZXRPcHRpb25zKCkgd2ls
bCBpZ25vcmUgdGhlIGNhc2Ugb2YKb3B0aW9uIG5hbWVzLCBhbmQgYWxsb3cgdGhlIG9wdGlvbnMg
dG8gYmUgYWJicmV2aWF0ZWQgdG8gdW5pcXVlbmVzcy4KCiAgICBHZXRPcHRpb25zICgnbGVuZ3Ro
fGhlaWdodD1mJyA9PiBcJGxlbmd0aCwgImhlYWQiID0+IFwkaGVhZCk7CgpUaGlzIGNhbGwgd2ls
bCBhbGxvdyBDPC0tbD4gYW5kIEM8LS1MPiBmb3IgdGhlIGxlbmd0aCBvcHRpb24sIGJ1dApyZXF1
aXJlcyBhIGxlYXN0IEM8LS1oZWE+IGFuZCBDPC0taGVpPiBmb3IgdGhlIGhlYWQgYW5kIGhlaWdo
dCBvcHRpb25zLgoKPWhlYWQyIFN1bW1hcnkgb2YgT3B0aW9uIFNwZWNpZmljYXRpb25zCgpFYWNo
IG9wdGlvbiBzcGVjaWZpZXIgY29uc2lzdHMgb2YgdHdvIHBhcnRzOiB0aGUgbmFtZSBzcGVjaWZp
Y2F0aW9uCmFuZCB0aGUgYXJndW1lbnQgc3BlY2lmaWNhdGlvbi4KClRoZSBuYW1lIHNwZWNpZmlj
YXRpb24gY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIG9wdGlvbiwgb3B0aW9uYWxseQpmb2xsb3dl
ZCBieSBhIGxpc3Qgb2YgYWx0ZXJuYXRpdmUgbmFtZXMgc2VwYXJhdGVkIGJ5IHZlcnRpY2FsIGJh
cgpjaGFyYWN0ZXJzLgoKICAgIGxlbmd0aAkgICAgICBvcHRpb24gbmFtZSBpcyAibGVuZ3RoIgog
ICAgbGVuZ3RofHNpemV8bCAgICAgbmFtZSBpcyAibGVuZ3RoIiwgYWxpYXNlcyBhcmUgInNpemUi
IGFuZCAibCIKClRoZSBhcmd1bWVudCBzcGVjaWZpY2F0aW9uIGlzIG9wdGlvbmFsLiBJZiBvbWl0
dGVkLCB0aGUgb3B0aW9uIGlzCmNvbnNpZGVyZWQgYm9vbGVhbiwgYSB2YWx1ZSBvZiAxIHdpbGwg
YmUgYXNzaWduZWQgd2hlbiB0aGUgb3B0aW9uIGlzCnVzZWQgb24gdGhlIGNvbW1hbmQgbGluZS4K
ClRoZSBhcmd1bWVudCBzcGVjaWZpY2F0aW9uIGNhbiBiZQoKPW92ZXIgNAoKPWl0ZW0gIQoKVGhl
IG9wdGlvbiBkb2VzIG5vdCB0YWtlIGFuIGFyZ3VtZW50IGFuZCBtYXkgYmUgbmVnYXRlZCBieSBw
cmVmaXhpbmcKaXQgd2l0aCAibm8iIG9yICJuby0iLiBFLmcuIEM8ImZvbyEiPiB3aWxsIGFsbG93
IEM8LS1mb28+IChhIHZhbHVlIG9mCjEgd2lsbCBiZSBhc3NpZ25lZCkgYXMgd2VsbCBhcyBDPC0t
bm9mb28+IGFuZCBDPC0tbm8tZm9vPiAoYSB2YWx1ZSBvZgowIHdpbGwgYmUgYXNzaWduZWQpLiBJ
ZiB0aGUgb3B0aW9uIGhhcyBhbGlhc2VzLCB0aGlzIGFwcGxpZXMgdG8gdGhlCmFsaWFzZXMgYXMg
d2VsbC4KClVzaW5nIG5lZ2F0aW9uIG9uIGEgc2luZ2xlIGxldHRlciBvcHRpb24gd2hlbiBidW5k
bGluZyBpcyBpbiBlZmZlY3QgaXMKcG9pbnRsZXNzIGFuZCB3aWxsIHJlc3VsdCBpbiBhIHdhcm5p
bmcuCgo9aXRlbSArCgpUaGUgb3B0aW9uIGRvZXMgbm90IHRha2UgYW4gYXJndW1lbnQgYW5kIHdp
bGwgYmUgaW5jcmVtZW50ZWQgYnkgMQpldmVyeSB0aW1lIGl0IGFwcGVhcnMgb24gdGhlIGNvbW1h
bmQgbGluZS4gRS5nLiBDPCJtb3JlKyI+LCB3aGVuIHVzZWQKd2l0aCBDPC0tbW9yZSAtLW1vcmUg
LS1tb3JlPiwgd2lsbCBpbmNyZW1lbnQgdGhlIHZhbHVlIHRocmVlIHRpbWVzLApyZXN1bHRpbmcg
aW4gYSB2YWx1ZSBvZiAzIChwcm92aWRlZCBpdCB3YXMgMCBvciB1bmRlZmluZWQgYXQgZmlyc3Qp
LgoKVGhlIEM8Kz4gc3BlY2lmaWVyIGlzIGlnbm9yZWQgaWYgdGhlIG9wdGlvbiBkZXN0aW5hdGlv
biBpcyBub3QgYSBzY2FsYXIuCgo9aXRlbSA9IEk8dHlwZT4gWyBJPGRlc3R0eXBlPiBdIFsgSTxy
ZXBlYXQ+IF0KClRoZSBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQgb2YgdGhlIGdpdmVuIHR5
cGUuIFN1cHBvcnRlZCB0eXBlcwphcmU6Cgo9b3ZlciA0Cgo9aXRlbSBzCgpTdHJpbmcuIEFuIGFy
Yml0cmFyeSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLiBJdCBpcyB2YWxpZCBmb3IgdGhlCmFyZ3Vt
ZW50IHRvIHN0YXJ0IHdpdGggQzwtPiBvciBDPC0tPi4KCj1pdGVtIGkKCkludGVnZXIuIEFuIG9w
dGlvbmFsIGxlYWRpbmcgcGx1cyBvciBtaW51cyBzaWduLCBmb2xsb3dlZCBieSBhCnNlcXVlbmNl
IG9mIGRpZ2l0cy4KCj1pdGVtIG8KCkV4dGVuZGVkIGludGVnZXIsIFBlcmwgc3R5bGUuIFRoaXMg
Y2FuIGJlIGVpdGhlciBhbiBvcHRpb25hbCBsZWFkaW5nCnBsdXMgb3IgbWludXMgc2lnbiwgZm9s
bG93ZWQgYnkgYSBzZXF1ZW5jZSBvZiBkaWdpdHMsIG9yIGFuIG9jdGFsCnN0cmluZyAoYSB6ZXJv
LCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5ICcwJywgJzEnLCAuLiAnNycpLCBvciBhCmhleGFkZWNp
bWFsIHN0cmluZyAoQzwweD4gZm9sbG93ZWQgYnkgJzAnIC4uICc5JywgJ2EnIC4uICdmJywgY2Fz
ZQppbnNlbnNpdGl2ZSksIG9yIGEgYmluYXJ5IHN0cmluZyAoQzwwYj4gZm9sbG93ZWQgYnkgYSBz
ZXJpZXMgb2YgJzAnCmFuZCAnMScpLgoKPWl0ZW0gZgoKUmVhbCBudW1iZXIuIEZvciBleGFtcGxl
IEM8My4xND4sIEM8LTYuMjNFMjQ+IGFuZCBzbyBvbi4KCj1iYWNrCgpUaGUgSTxkZXN0dHlwZT4g
Y2FuIGJlIEM8QD4gb3IgQzwlPiB0byBzcGVjaWZ5IHRoYXQgdGhlIG9wdGlvbiBpcwpsaXN0IG9y
IGEgaGFzaCB2YWx1ZWQuIFRoaXMgaXMgb25seSBuZWVkZWQgd2hlbiB0aGUgZGVzdGluYXRpb24g
Zm9yCnRoZSBvcHRpb24gdmFsdWUgaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQuIEl0IHNob3Vs
ZCBiZSBvbWl0dGVkIHdoZW4Kbm90IG5lZWRlZC4KClRoZSBJPHJlcGVhdD4gc3BlY2lmaWVzIHRo
ZSBudW1iZXIgb2YgdmFsdWVzIHRoaXMgb3B0aW9uIHRha2VzIHBlcgpvY2N1cnJlbmNlIG9uIHRo
ZSBjb21tYW5kIGxpbmUuIEl0IGhhcyB0aGUgZm9ybWF0IEM8ez4gWyBJPG1pbj4gXSBbIEM8LD4g
WyBJPG1heD4gXSBdIEM8fT4uCgpJPG1pbj4gZGVub3RlcyB0aGUgbWluaW1hbCBudW1iZXIgb2Yg
YXJndW1lbnRzLiBJdCBkZWZhdWx0cyB0byAxIGZvcgpvcHRpb25zIHdpdGggQzw9PiBhbmQgdG8g
MCBmb3Igb3B0aW9ucyB3aXRoIEM8Oj4sIHNlZSBiZWxvdy4gTm90ZSB0aGF0Ckk8bWluPiBvdmVy
cnVsZXMgdGhlIEM8PT4gLyBDPDo+IHNlbWFudGljcy4KCkk8bWF4PiBkZW5vdGVzIHRoZSBtYXhp
bXVtIG51bWJlciBvZiBhcmd1bWVudHMuIEl0IG11c3QgYmUgYXQgbGVhc3QKSTxtaW4+LiBJZiBJ
PG1heD4gaXMgb21pdHRlZCwgSTxidXQgdGhlIGNvbW1hIGlzIG5vdD4sIHRoZXJlIGlzIG5vCnVw
cGVyIGJvdW5kIHRvIHRoZSBudW1iZXIgb2YgYXJndW1lbnQgdmFsdWVzIHRha2VuLgoKPWl0ZW0g
OiBJPHR5cGU+IFsgSTxkZXN0dHlwZT4gXQoKTGlrZSBDPD0+LCBidXQgZGVzaWduYXRlcyB0aGUg
YXJndW1lbnQgYXMgb3B0aW9uYWwuCklmIG9taXR0ZWQsIGFuIGVtcHR5IHN0cmluZyB3aWxsIGJl
IGFzc2lnbmVkIHRvIHN0cmluZyB2YWx1ZXMgb3B0aW9ucywKYW5kIHRoZSB2YWx1ZSB6ZXJvIHRv
IG51bWVyaWMgb3B0aW9ucy4KCk5vdGUgdGhhdCBpZiBhIHN0cmluZyBhcmd1bWVudCBzdGFydHMg
d2l0aCBDPC0+IG9yIEM8LS0+LCBpdCB3aWxsIGJlCmNvbnNpZGVyZWQgYW4gb3B0aW9uIG9uIGl0
c2VsZi4KCj1pdGVtIDogSTxudW1iZXI+IFsgSTxkZXN0dHlwZT4gXQoKTGlrZSBDPDppPiwgYnV0
IGlmIHRoZSB2YWx1ZSBpcyBvbWl0dGVkLCB0aGUgSTxudW1iZXI+IHdpbGwgYmUgYXNzaWduZWQu
Cgo9aXRlbSA6ICsgWyBJPGRlc3R0eXBlPiBdCgpMaWtlIEM8Omk+LCBidXQgaWYgdGhlIHZhbHVl
IGlzIG9taXR0ZWQsIHRoZSBjdXJyZW50IHZhbHVlIGZvciB0aGUKb3B0aW9uIHdpbGwgYmUgaW5j
cmVtZW50ZWQuCgo9YmFjawoKPWhlYWQxIEFkdmFuY2VkIFBvc3NpYmlsaXRpZXMKCj1oZWFkMiBP
YmplY3Qgb3JpZW50ZWQgaW50ZXJmYWNlCgpHZXRvcHQ6OkxvbmcgY2FuIGJlIHVzZWQgaW4gYW4g
b2JqZWN0IG9yaWVudGVkIHdheSBhcyB3ZWxsOgoKICAgIHVzZSBHZXRvcHQ6Okxvbmc7CiAgICAk
cCA9IEdldG9wdDo6TG9uZzo6UGFyc2VyLT5uZXc7CiAgICAkcC0+Y29uZmlndXJlKC4uLmNvbmZp
Z3VyYXRpb24gb3B0aW9ucy4uLik7CiAgICBpZiAoJHAtPmdldG9wdGlvbnMoLi4ub3B0aW9ucyBk
ZXNjcmlwdGlvbnMuLi4pKSAuLi4KICAgIGlmICgkcC0+Z2V0b3B0aW9uc2Zyb21hcnJheSggXEBh
cnJheSwgLi4ub3B0aW9ucyBkZXNjcmlwdGlvbnMuLi4pKSAuLi4KCkNvbmZpZ3VyYXRpb24gb3B0
aW9ucyBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvcjoKCiAgICAkcCA9IG5ldyBHZXRv
cHQ6Okxvbmc6OlBhcnNlcgogICAgICAgICAgICAgY29uZmlnID0+IFsuLi5jb25maWd1cmF0aW9u
IG9wdGlvbnMuLi5dOwoKPWhlYWQyIFRocmVhZCBTYWZldHkKCkdldG9wdDo6TG9uZyBpcyB0aHJl
YWQgc2FmZSB3aGVuIHVzaW5nIGl0aHJlYWRzIGFzIG9mIFBlcmwgNS44LiAgSXQgaXMKSTxub3Q+
IHRocmVhZCBzYWZlIHdoZW4gdXNpbmcgdGhlIG9sZGVyIChleHBlcmltZW50YWwgYW5kIG5vdwpv
YnNvbGV0ZSkgdGhyZWFkcyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBhZGRlZCB0byBQZXJsIDUu
MDA1LgoKPWhlYWQyIERvY3VtZW50YXRpb24gYW5kIGhlbHAgdGV4dHMKCkdldG9wdDo6TG9uZyBl
bmNvdXJhZ2VzIHRoZSB1c2Ugb2YgUG9kOjpVc2FnZSB0byBwcm9kdWNlIGhlbHAKbWVzc2FnZXMu
IEZvciBleGFtcGxlOgoKICAgIHVzZSBHZXRvcHQ6Okxvbmc7CiAgICB1c2UgUG9kOjpVc2FnZTsK
CiAgICBteSAkbWFuID0gMDsKICAgIG15ICRoZWxwID0gMDsKCiAgICBHZXRPcHRpb25zKCdoZWxw
fD8nID0+IFwkaGVscCwgbWFuID0+IFwkbWFuKSBvciBwb2QydXNhZ2UoMik7CiAgICBwb2QydXNh
Z2UoMSkgaWYgJGhlbHA7CiAgICBwb2QydXNhZ2UoLWV4aXR2YWwgPT4gMCwgLXZlcmJvc2UgPT4g
MikgaWYgJG1hbjsKCiAgICBfX0VORF9fCgogICAgPWhlYWQxIE5BTUUKCiAgICBzYW1wbGUgLSBV
c2luZyBHZXRvcHQ6OkxvbmcgYW5kIFBvZDo6VXNhZ2UKCiAgICA9aGVhZDEgU1lOT1BTSVMKCiAg
ICBzYW1wbGUgW29wdGlvbnNdIFtmaWxlIC4uLl0KCiAgICAgT3B0aW9uczoKICAgICAgIC1oZWxw
ICAgICAgICAgICAgYnJpZWYgaGVscCBtZXNzYWdlCiAgICAgICAtbWFuICAgICAgICAgICAgIGZ1
bGwgZG9jdW1lbnRhdGlvbgoKICAgID1oZWFkMSBPUFRJT05TCgogICAgPW92ZXIgOAoKICAgID1p
dGVtIEI8LWhlbHA+CgogICAgUHJpbnQgYSBicmllZiBoZWxwIG1lc3NhZ2UgYW5kIGV4aXRzLgoK
ICAgID1pdGVtIEI8LW1hbj4KCiAgICBQcmludHMgdGhlIG1hbnVhbCBwYWdlIGFuZCBleGl0cy4K
CiAgICA9YmFjawoKICAgID1oZWFkMSBERVNDUklQVElPTgoKICAgIEI8VGhpcyBwcm9ncmFtPiB3
aWxsIHJlYWQgdGhlIGdpdmVuIGlucHV0IGZpbGUocykgYW5kIGRvIHNvbWV0aGluZwogICAgdXNl
ZnVsIHdpdGggdGhlIGNvbnRlbnRzIHRoZXJlb2YuCgogICAgPWN1dAoKU2VlIEw8UG9kOjpVc2Fn
ZT4gZm9yIGRldGFpbHMuCgo9aGVhZDIgUGFyc2luZyBvcHRpb25zIGZyb20gYW4gYXJiaXRyYXJ5
IGFycmF5CgpCeSBkZWZhdWx0LCBHZXRPcHRpb25zIHBhcnNlcyB0aGUgb3B0aW9ucyB0aGF0IGFy
ZSBwcmVzZW50IGluIHRoZQpnbG9iYWwgYXJyYXkgQzxAQVJHVj4uIEEgc3BlY2lhbCBlbnRyeSBD
PEdldE9wdGlvbnNGcm9tQXJyYXk+IGNhbiBiZQp1c2VkIHRvIHBhcnNlIG9wdGlvbnMgZnJvbSBh
biBhcmJpdHJhcnkgYXJyYXkuCgogICAgdXNlIEdldG9wdDo6TG9uZyBxdyhHZXRPcHRpb25zRnJv
bUFycmF5KTsKICAgICRyZXQgPSBHZXRPcHRpb25zRnJvbUFycmF5KFxAbXlvcHRzLCAuLi4pOwoK
V2hlbiB1c2VkIGxpa2UgdGhpcywgb3B0aW9ucyBhbmQgdGhlaXIgcG9zc2libGUgdmFsdWVzIGFy
ZSByZW1vdmVkCmZyb20gQzxAbXlvcHRzPiwgdGhlIGdsb2JhbCBDPEBBUkdWPiBpcyBub3QgdG91
Y2hlZCBhdCBhbGwuCgpUaGUgZm9sbG93aW5nIHR3byBjYWxscyBiZWhhdmUgaWRlbnRpY2FsbHk6
CgogICAgJHJldCA9IEdldE9wdGlvbnMoIC4uLiApOwogICAgJHJldCA9IEdldE9wdGlvbnNGcm9t
QXJyYXkoXEBBUkdWLCAuLi4gKTsKClRoaXMgYWxzbyBtZWFucyB0aGF0IGEgZmlyc3QgYXJndW1l
bnQgaGFzaCByZWZlcmVuY2Ugbm93IGJlY29tZXMgdGhlCnNlY29uZCBhcmd1bWVudDoKCiAgICAk
cmV0ID0gR2V0T3B0aW9ucyhcJW9wdHMsIC4uLiApOwogICAgJHJldCA9IEdldE9wdGlvbnNGcm9t
QXJyYXkoXEBBUkdWLCBcJW9wdHMsIC4uLiApOwoKPWhlYWQyIFBhcnNpbmcgb3B0aW9ucyBmcm9t
IGFuIGFyYml0cmFyeSBzdHJpbmcKCkEgc3BlY2lhbCBlbnRyeSBDPEdldE9wdGlvbnNGcm9tU3Ry
aW5nPiBjYW4gYmUgdXNlZCB0byBwYXJzZSBvcHRpb25zCmZyb20gYW4gYXJiaXRyYXJ5IHN0cmlu
Zy4KCiAgICB1c2UgR2V0b3B0OjpMb25nIHF3KEdldE9wdGlvbnNGcm9tU3RyaW5nKTsKICAgICRy
ZXQgPSBHZXRPcHRpb25zRnJvbVN0cmluZygkc3RyaW5nLCAuLi4pOwoKVGhlIGNvbnRlbnRzIG9m
IHRoZSBzdHJpbmcgYXJlIHNwbGl0IGludG8gYXJndW1lbnRzIHVzaW5nIGEgY2FsbCB0bwpDPFRl
eHQ6OlBhcnNlV29yZHM6OnNoZWxsd29yZHM+LiBBcyB3aXRoIEM8R2V0T3B0aW9uc0Zyb21BcnJh
eT4sIHRoZQpnbG9iYWwgQzxAQVJHVj4gaXMgbm90IHRvdWNoZWQuCgpJdCBpcyBwb3NzaWJsZSB0
aGF0LCB1cG9uIGNvbXBsZXRpb24sIG5vdCBhbGwgYXJndW1lbnRzIGluIHRoZSBzdHJpbmcKaGF2
ZSBiZWVuIHByb2Nlc3NlZC4gQzxHZXRPcHRpb25zRnJvbVN0cmluZz4gd2lsbCwgd2hlbiBjYWxs
ZWQgaW4gbGlzdApjb250ZXh0LCByZXR1cm4gYm90aCB0aGUgcmV0dXJuIHN0YXR1cyBhbmQgYW4g
YXJyYXkgcmVmZXJlbmNlIHRvIGFueQpyZW1haW5pbmcgYXJndW1lbnRzOgoKICAgICgkcmV0LCAk
YXJncykgPSBHZXRPcHRpb25zRnJvbVN0cmluZygkc3RyaW5nLCAuLi4gKTsKCklmIGFueSBhcmd1
bWVudHMgcmVtYWluLCBhbmQgQzxHZXRPcHRpb25zRnJvbVN0cmluZz4gd2FzIG5vdCBjYWxsZWQg
aW4KbGlzdCBjb250ZXh0LCBhIG1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBhbmQgQzxHZXRPcHRpb25z
RnJvbVN0cmluZz4gd2lsbApyZXR1cm4gZmFpbHVyZS4KCkFzIHdpdGggR2V0T3B0aW9uc0Zyb21B
cnJheSwgYSBmaXJzdCBhcmd1bWVudCBoYXNoIHJlZmVyZW5jZSBub3cKYmVjb21lcyB0aGUgc2Vj
b25kIGFyZ3VtZW50LgoKPWhlYWQyIFN0b3Jpbmcgb3B0aW9ucyB2YWx1ZXMgaW4gYSBoYXNoCgpT
b21ldGltZXMsIGZvciBleGFtcGxlIHdoZW4gdGhlcmUgYXJlIGEgbG90IG9mIG9wdGlvbnMsIGhh
dmluZyBhCnNlcGFyYXRlIHZhcmlhYmxlIGZvciBlYWNoIG9mIHRoZW0gY2FuIGJlIGN1bWJlcnNv
bWUuIEdldE9wdGlvbnMoKQpzdXBwb3J0cywgYXMgYW4gYWx0ZXJuYXRpdmUgbWVjaGFuaXNtLCBz
dG9yaW5nIG9wdGlvbnMgdmFsdWVzIGluIGEKaGFzaC4KClRvIG9idGFpbiB0aGlzLCBhIHJlZmVy
ZW5jZSB0byBhIGhhc2ggbXVzdCBiZSBwYXNzZWQgSTxhcyB0aGUgZmlyc3QKYXJndW1lbnQ+IHRv
IEdldE9wdGlvbnMoKS4gRm9yIGVhY2ggb3B0aW9uIHRoYXQgaXMgc3BlY2lmaWVkIG9uIHRoZQpj
b21tYW5kIGxpbmUsIHRoZSBvcHRpb24gdmFsdWUgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGhhc2gg
d2l0aCB0aGUKb3B0aW9uIG5hbWUgYXMga2V5LiBPcHRpb25zIHRoYXQgYXJlIG5vdCBhY3R1YWxs
eSB1c2VkIG9uIHRoZSBjb21tYW5kCmxpbmUgd2lsbCBub3QgYmUgcHV0IGluIHRoZSBoYXNoLCBv
biBvdGhlciB3b3JkcywKQzxleGlzdHMoJGh7b3B0aW9ufSk+IChvciBkZWZpbmVkKCkpIGNhbiBi
ZSB1c2VkIHRvIHRlc3QgaWYgYW4gb3B0aW9uCndhcyB1c2VkLiBUaGUgZHJhd2JhY2sgaXMgdGhh
dCB3YXJuaW5ncyB3aWxsIGJlIGlzc3VlZCBpZiB0aGUgcHJvZ3JhbQpydW5zIHVuZGVyIEM8dXNl
IHN0cmljdD4gYW5kIHVzZXMgQzwkaHtvcHRpb259PiB3aXRob3V0IHRlc3Rpbmcgd2l0aApleGlz
dHMoKSBvciBkZWZpbmVkKCkgZmlyc3QuCgogICAgbXkgJWggPSAoKTsKICAgIEdldE9wdGlvbnMg
KFwlaCwgJ2xlbmd0aD1pJyk7CSMgd2lsbCBzdG9yZSBpbiAkaHtsZW5ndGh9CgpGb3Igb3B0aW9u
cyB0aGF0IHRha2UgbGlzdCBvciBoYXNoIHZhbHVlcywgaXQgaXMgbmVjZXNzYXJ5IHRvIGluZGlj
YXRlCnRoaXMgYnkgYXBwZW5kaW5nIGFuIEM8QD4gb3IgQzwlPiBzaWduIGFmdGVyIHRoZSB0eXBl
OgoKICAgIEdldE9wdGlvbnMgKFwlaCwgJ2NvbG91cnM9c0AnKTsJIyB3aWxsIHB1c2ggdG8gQHsk
aHtjb2xvdXJzfX0KClRvIG1ha2UgdGhpbmdzIG1vcmUgY29tcGxpY2F0ZWQsIHRoZSBoYXNoIG1h
eSBjb250YWluIHJlZmVyZW5jZXMgdG8KdGhlIGFjdHVhbCBkZXN0aW5hdGlvbnMsIGZvciBleGFt
cGxlOgoKICAgIG15ICRsZW4gPSAwOwogICAgbXkgJWggPSAoJ2xlbmd0aCcgPT4gXCRsZW4pOwog
ICAgR2V0T3B0aW9ucyAoXCVoLCAnbGVuZ3RoPWknKTsJIyB3aWxsIHN0b3JlIGluICRsZW4KClRo
aXMgZXhhbXBsZSBpcyBmdWxseSBlcXVpdmFsZW50IHdpdGg6CgogICAgbXkgJGxlbiA9IDA7CiAg
ICBHZXRPcHRpb25zICgnbGVuZ3RoPWknID0+IFwkbGVuKTsJIyB3aWxsIHN0b3JlIGluICRsZW4K
CkFueSBtaXh0dXJlIGlzIHBvc3NpYmxlLiBGb3IgZXhhbXBsZSwgdGhlIG1vc3QgZnJlcXVlbnRs
eSB1c2VkIG9wdGlvbnMKY291bGQgYmUgc3RvcmVkIGluIHZhcmlhYmxlcyB3aGlsZSBhbGwgb3Ro
ZXIgb3B0aW9ucyBnZXQgc3RvcmVkIGluIHRoZQpoYXNoOgoKICAgIG15ICR2ZXJib3NlID0gMDsJ
CQkjIGZyZXF1ZW50bHkgcmVmZXJyZWQKICAgIG15ICRkZWJ1ZyA9IDA7CQkJIyBmcmVxdWVudGx5
IHJlZmVycmVkCiAgICBteSAlaCA9ICgndmVyYm9zZScgPT4gXCR2ZXJib3NlLCAnZGVidWcnID0+
IFwkZGVidWcpOwogICAgR2V0T3B0aW9ucyAoXCVoLCAndmVyYm9zZScsICdkZWJ1ZycsICdmaWx0
ZXInLCAnc2l6ZT1pJyk7CiAgICBpZiAoICR2ZXJib3NlICkgeyAuLi4gfQogICAgaWYgKCBleGlz
dHMgJGh7ZmlsdGVyfSApIHsgLi4uIG9wdGlvbiAnZmlsdGVyJyB3YXMgc3BlY2lmaWVkIC4uLiB9
Cgo9aGVhZDIgQnVuZGxpbmcKCldpdGggYnVuZGxpbmcgaXQgaXMgcG9zc2libGUgdG8gc2V0IHNl
dmVyYWwgc2luZ2xlLWNoYXJhY3RlciBvcHRpb25zCmF0IG9uY2UuIEZvciBleGFtcGxlIGlmIEM8
YT4sIEM8dj4gYW5kIEM8eD4gYXJlIGFsbCB2YWxpZCBvcHRpb25zLAoKICAgIC12YXgKCndpbGwg
c2V0IGFsbCB0aHJlZS4KCkdldG9wdDo6TG9uZyBzdXBwb3J0cyB0aHJlZSBzdHlsZXMgb2YgYnVu
ZGxpbmcuIFRvIGVuYWJsZSBidW5kbGluZywgYQpjYWxsIHRvIEdldG9wdDo6TG9uZzo6Q29uZmln
dXJlIGlzIHJlcXVpcmVkLgoKVGhlIHNpbXBsZXN0IHN0eWxlIG9mIGJ1bmRsaW5nIGNhbiBiZSBl
bmFibGVkIHdpdGg6CgogICAgR2V0b3B0OjpMb25nOjpDb25maWd1cmUgKCJidW5kbGluZyIpOwoK
Q29uZmlndXJlZCB0aGlzIHdheSwgc2luZ2xlLWNoYXJhY3RlciBvcHRpb25zIGNhbiBiZSBidW5k
bGVkIGJ1dCBsb25nCm9wdGlvbnMgQjxtdXN0PiBhbHdheXMgc3RhcnQgd2l0aCBhIGRvdWJsZSBk
YXNoIEM8LS0+IHRvIGF2b2lkCmFtYmlndWl0eS4gRm9yIGV4YW1wbGUsIHdoZW4gQzx2YXg+LCBD
PGE+LCBDPHY+IGFuZCBDPHg+IGFyZSBhbGwgdmFsaWQKb3B0aW9ucywKCiAgICAtdmF4Cgp3aWxs
IHNldCBDPGE+LCBDPHY+IGFuZCBDPHg+LCBidXQKCiAgICAtLXZheAoKd2lsbCBzZXQgQzx2YXg+
LgoKVGhlIHNlY29uZCBzdHlsZSBvZiBidW5kbGluZyBsaWZ0cyB0aGlzIHJlc3RyaWN0aW9uLiBJ
dCBjYW4gYmUgZW5hYmxlZAp3aXRoOgoKICAgIEdldG9wdDo6TG9uZzo6Q29uZmlndXJlICgiYnVu
ZGxpbmdfb3ZlcnJpZGUiKTsKCk5vdywgQzwtdmF4PiB3aWxsIHNldCB0aGUgb3B0aW9uIEM8dmF4
Pi4KCkluIGFsbCBvZiB0aGUgYWJvdmUgY2FzZXMsIG9wdGlvbiB2YWx1ZXMgbWF5IGJlIGluc2Vy
dGVkIGluIHRoZQpidW5kbGUuIEZvciBleGFtcGxlOgoKICAgIC1oMjR3ODAKCmlzIGVxdWl2YWxl
bnQgdG8KCiAgICAtaCAyNCAtdyA4MAoKQSB0aGlyZCBzdHlsZSBvZiBidW5kbGluZyBhbGxvd3Mg
b25seSB2YWx1ZXMgdG8gYmUgYnVuZGxlZCB3aXRoCm9wdGlvbnMuIEl0IGNhbiBiZSBlbmFibGVk
IHdpdGg6CgogICAgR2V0b3B0OjpMb25nOjpDb25maWd1cmUgKCJidW5kbGluZ192YWx1ZXMiKTsK
Ck5vdywgQzwtaDI0PiB3aWxsIHNldCB0aGUgb3B0aW9uIEM8aD4gdG8gQzwyND4sIGJ1dCBvcHRp
b24gYnVuZGxlcwpsaWtlIEM8LXZ4YT4gYW5kIEM8LWgyNHc4MD4gYXJlIGZsYWdnZWQgYXMgZXJy
b3JzLgoKRW5hYmxpbmcgQzxidW5kbGluZ192YWx1ZXM+IHdpbGwgZGlzYWJsZSB0aGUgb3RoZXIg
dHdvIHN0eWxlcyBvZgpidW5kbGluZy4KCldoZW4gY29uZmlndXJlZCBmb3IgYnVuZGxpbmcsIHNp
bmdsZS1jaGFyYWN0ZXIgb3B0aW9ucyBhcmUgbWF0Y2hlZApjYXNlIHNlbnNpdGl2ZSB3aGlsZSBs
b25nIG9wdGlvbnMgYXJlIG1hdGNoZWQgY2FzZSBpbnNlbnNpdGl2ZS4gVG8KaGF2ZSB0aGUgc2lu
Z2xlLWNoYXJhY3RlciBvcHRpb25zIG1hdGNoZWQgY2FzZSBpbnNlbnNpdGl2ZSBhcyB3ZWxsLAp1
c2U6CgogICAgR2V0b3B0OjpMb25nOjpDb25maWd1cmUgKCJidW5kbGluZyIsICJpZ25vcmVjYXNl
X2Fsd2F5cyIpOwoKSXQgZ29lcyB3aXRob3V0IHNheWluZyB0aGF0IGJ1bmRsaW5nIGNhbiBiZSBx
dWl0ZSBjb25mdXNpbmcuCgo9aGVhZDIgVGhlIGxvbmVzb21lIGRhc2gKCk5vcm1hbGx5LCBhIGxv
bmUgZGFzaCBDPC0+IG9uIHRoZSBjb21tYW5kIGxpbmUgd2lsbCBub3QgYmUgY29uc2lkZXJlZAph
biBvcHRpb24uIE9wdGlvbiBwcm9jZXNzaW5nIHdpbGwgdGVybWluYXRlICh1bmxlc3MgInBlcm11
dGUiIGlzCmNvbmZpZ3VyZWQpIGFuZCB0aGUgZGFzaCB3aWxsIGJlIGxlZnQgaW4gQzxAQVJHVj4u
CgpJdCBpcyBwb3NzaWJsZSB0byBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIGEgbG9uZSBkYXNo
LiBUaGlzIGNhbiBiZQphY2hpZXZlZCBieSBhZGRpbmcgYW4gb3B0aW9uIHNwZWNpZmljYXRpb24g
d2l0aCBhbiBlbXB0eSBuYW1lLCBmb3IKZXhhbXBsZToKCiAgICBHZXRPcHRpb25zICgnJyA9PiBc
JHN0ZGlvKTsKCkEgbG9uZSBkYXNoIG9uIHRoZSBjb21tYW5kIGxpbmUgd2lsbCBub3cgYmUgYSBs
ZWdhbCBvcHRpb24sIGFuZCB1c2luZwppdCB3aWxsIHNldCB2YXJpYWJsZSBDPCRzdGRpbz4uCgo9
aGVhZDIgQXJndW1lbnQgY2FsbGJhY2sKCkEgc3BlY2lhbCBvcHRpb24gJ25hbWUnIEM8PCA8PiA+
PiBjYW4gYmUgdXNlZCB0byBkZXNpZ25hdGUgYSBzdWJyb3V0aW5lCnRvIGhhbmRsZSBub24tb3B0
aW9uIGFyZ3VtZW50cy4gV2hlbiBHZXRPcHRpb25zKCkgZW5jb3VudGVycyBhbgphcmd1bWVudCB0
aGF0IGRvZXMgbm90IGxvb2sgbGlrZSBhbiBvcHRpb24sIGl0IHdpbGwgaW1tZWRpYXRlbHkgY2Fs
bCB0aGlzCnN1YnJvdXRpbmUgYW5kIHBhc3NlcyBpdCBvbmUgcGFyYW1ldGVyOiB0aGUgYXJndW1l
bnQgbmFtZS4gV2VsbCwgYWN0dWFsbHkKaXQgaXMgYW4gb2JqZWN0IHRoYXQgc3RyaW5naWZpZXMg
dG8gdGhlIGFyZ3VtZW50IG5hbWUuCgpGb3IgZXhhbXBsZToKCiAgICBteSAkd2lkdGggPSA4MDsK
ICAgIHN1YiBwcm9jZXNzIHsgLi4uIH0KICAgIEdldE9wdGlvbnMgKCd3aWR0aD1pJyA9PiBcJHdp
ZHRoLCAnPD4nID0+IFwmcHJvY2Vzcyk7CgpXaGVuIGFwcGxpZWQgdG8gdGhlIGZvbGxvd2luZyBj
b21tYW5kIGxpbmU6CgogICAgYXJnMSAtLXdpZHRoPTcyIGFyZzIgLS13aWR0aD02MCBhcmczCgpU
aGlzIHdpbGwgY2FsbApDPHByb2Nlc3MoImFyZzEiKT4gd2hpbGUgQzwkd2lkdGg+IGlzIEM8ODA+
LApDPHByb2Nlc3MoImFyZzIiKT4gd2hpbGUgQzwkd2lkdGg+IGlzIEM8NzI+LCBhbmQKQzxwcm9j
ZXNzKCJhcmczIik+IHdoaWxlIEM8JHdpZHRoPiBpcyBDPDYwPi4KClRoaXMgZmVhdHVyZSByZXF1
aXJlcyBjb25maWd1cmF0aW9uIG9wdGlvbiBCPHBlcm11dGU+LCBzZWUgc2VjdGlvbgpMPENvbmZp
Z3VyaW5nIEdldG9wdDo6TG9uZz4uCgo9aGVhZDEgQ29uZmlndXJpbmcgR2V0b3B0OjpMb25nCgpH
ZXRvcHQ6OkxvbmcgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgY2FsbGluZyBzdWJyb3V0aW5lCkdldG9w
dDo6TG9uZzo6Q29uZmlndXJlKCkuIFRoaXMgc3Vicm91dGluZSB0YWtlcyBhIGxpc3Qgb2YgcXVv
dGVkCnN0cmluZ3MsIGVhY2ggc3BlY2lmeWluZyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGJl
IGVuYWJsZWQsIGUuZy4KQzxpZ25vcmVfY2FzZT4sIG9yIGRpc2FibGVkLCBlLmcuIEM8bm9faWdu
b3JlX2Nhc2U+LiBDYXNlIGRvZXMgbm90Cm1hdHRlci4gTXVsdGlwbGUgY2FsbHMgdG8gQ29uZmln
dXJlKCkgYXJlIHBvc3NpYmxlLgoKQWx0ZXJuYXRpdmVseSwgYXMgb2YgdmVyc2lvbiAyLjI0LCB0
aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBiZQpwYXNzZWQgdG9nZXRoZXIgd2l0aCB0aGUg
Qzx1c2U+IHN0YXRlbWVudDoKCiAgICB1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgbm9faWdu
b3JlX2Nhc2UgYnVuZGxpbmcpOwoKVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6
Cgo9b3ZlciAxMgoKPWl0ZW0gZGVmYXVsdAoKVGhpcyBvcHRpb24gY2F1c2VzIGFsbCBjb25maWd1
cmF0aW9uIG9wdGlvbnMgdG8gYmUgcmVzZXQgdG8gdGhlaXIKZGVmYXVsdCB2YWx1ZXMuCgo9aXRl
bSBwb3NpeF9kZWZhdWx0CgpUaGlzIG9wdGlvbiBjYXVzZXMgYWxsIGNvbmZpZ3VyYXRpb24gb3B0
aW9ucyB0byBiZSByZXNldCB0byB0aGVpcgpkZWZhdWx0IHZhbHVlcyBhcyBpZiB0aGUgZW52aXJv
bm1lbnQgdmFyaWFibGUgUE9TSVhMWV9DT1JSRUNUIGhhZApiZWVuIHNldC4KCj1pdGVtIGF1dG9f
YWJicmV2CgpBbGxvdyBvcHRpb24gbmFtZXMgdG8gYmUgYWJicmV2aWF0ZWQgdG8gdW5pcXVlbmVz
cy4KRGVmYXVsdCBpcyBlbmFibGVkIHVubGVzcyBlbnZpcm9ubWVudCB2YXJpYWJsZQpQT1NJWExZ
X0NPUlJFQ1QgaGFzIGJlZW4gc2V0LCBpbiB3aGljaCBjYXNlIEM8YXV0b19hYmJyZXY+IGlzIGRp
c2FibGVkLgoKPWl0ZW0gZ2V0b3B0X2NvbXBhdAoKQWxsb3cgQzwrPiB0byBzdGFydCBvcHRpb25z
LgpEZWZhdWx0IGlzIGVuYWJsZWQgdW5sZXNzIGVudmlyb25tZW50IHZhcmlhYmxlClBPU0lYTFlf
Q09SUkVDVCBoYXMgYmVlbiBzZXQsIGluIHdoaWNoIGNhc2UgQzxnZXRvcHRfY29tcGF0PiBpcyBk
aXNhYmxlZC4KCj1pdGVtIGdudV9jb21wYXQKCkM8Z251X2NvbXBhdD4gY29udHJvbHMgd2hldGhl
ciBDPC0tb3B0PT4gaXMgYWxsb3dlZCwgYW5kIHdoYXQgaXQgc2hvdWxkCmRvLiBXaXRob3V0IEM8
Z251X2NvbXBhdD4sIEM8LS1vcHQ9PiBnaXZlcyBhbiBlcnJvci4gV2l0aCBDPGdudV9jb21wYXQ+
LApDPC0tb3B0PT4gd2lsbCBnaXZlIG9wdGlvbiBDPG9wdD4gYW5kIGVtcHR5IHZhbHVlLgpUaGlz
IGlzIHRoZSB3YXkgR05VIGdldG9wdF9sb25nKCkgZG9lcyBpdC4KCj1pdGVtIGdudV9nZXRvcHQK
ClRoaXMgaXMgYSBzaG9ydCB3YXkgb2Ygc2V0dGluZyBDPGdudV9jb21wYXQ+IEM8YnVuZGxpbmc+
IEM8cGVybXV0ZT4KQzxub19nZXRvcHRfY29tcGF0Pi4gV2l0aCBDPGdudV9nZXRvcHQ+LCBjb21t
YW5kIGxpbmUgaGFuZGxpbmcgc2hvdWxkIGJlCmZ1bGx5IGNvbXBhdGlibGUgd2l0aCBHTlUgZ2V0
b3B0X2xvbmcoKS4KCj1pdGVtIHJlcXVpcmVfb3JkZXIKCldoZXRoZXIgY29tbWFuZCBsaW5lIGFy
Z3VtZW50cyBhcmUgYWxsb3dlZCB0byBiZSBtaXhlZCB3aXRoIG9wdGlvbnMuCkRlZmF1bHQgaXMg
ZGlzYWJsZWQgdW5sZXNzIGVudmlyb25tZW50IHZhcmlhYmxlClBPU0lYTFlfQ09SUkVDVCBoYXMg
YmVlbiBzZXQsIGluIHdoaWNoIGNhc2UgQzxyZXF1aXJlX29yZGVyPiBpcyBlbmFibGVkLgoKU2Vl
IGFsc28gQzxwZXJtdXRlPiwgd2hpY2ggaXMgdGhlIG9wcG9zaXRlIG9mIEM8cmVxdWlyZV9vcmRl
cj4uCgo9aXRlbSBwZXJtdXRlCgpXaGV0aGVyIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYXJlIGFs
bG93ZWQgdG8gYmUgbWl4ZWQgd2l0aCBvcHRpb25zLgpEZWZhdWx0IGlzIGVuYWJsZWQgdW5sZXNz
IGVudmlyb25tZW50IHZhcmlhYmxlClBPU0lYTFlfQ09SUkVDVCBoYXMgYmVlbiBzZXQsIGluIHdo
aWNoIGNhc2UgQzxwZXJtdXRlPiBpcyBkaXNhYmxlZC4KTm90ZSB0aGF0IEM8cGVybXV0ZT4gaXMg
dGhlIG9wcG9zaXRlIG9mIEM8cmVxdWlyZV9vcmRlcj4uCgpJZiBDPHBlcm11dGU+IGlzIGVuYWJs
ZWQsIHRoaXMgbWVhbnMgdGhhdAoKICAgIC0tZm9vIGFyZzEgLS1iYXIgYXJnMiBhcmczCgppcyBl
cXVpdmFsZW50IHRvCgogICAgLS1mb28gLS1iYXIgYXJnMSBhcmcyIGFyZzMKCklmIGFuIGFyZ3Vt
ZW50IGNhbGxiYWNrIHJvdXRpbmUgaXMgc3BlY2lmaWVkLCBDPEBBUkdWPiB3aWxsIGFsd2F5cyBi
ZQplbXB0eSB1cG9uIHN1Y2Nlc3NmdWwgcmV0dXJuIG9mIEdldE9wdGlvbnMoKSBzaW5jZSBhbGwg
b3B0aW9ucyBoYXZlIGJlZW4KcHJvY2Vzc2VkLiBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbiBD
PC0tPiBpcyB1c2VkOgoKICAgIC0tZm9vIGFyZzEgLS1iYXIgYXJnMiAtLSBhcmczCgpUaGlzIHdp
bGwgY2FsbCB0aGUgY2FsbGJhY2sgcm91dGluZSBmb3IgYXJnMSBhbmQgYXJnMiwgYW5kIHRoZW4K
dGVybWluYXRlIEdldE9wdGlvbnMoKSBsZWF2aW5nIEM8ImFyZzMiPiBpbiBDPEBBUkdWPi4KCklm
IEM8cmVxdWlyZV9vcmRlcj4gaXMgZW5hYmxlZCwgb3B0aW9ucyBwcm9jZXNzaW5nCnRlcm1pbmF0
ZXMgd2hlbiB0aGUgZmlyc3Qgbm9uLW9wdGlvbiBpcyBlbmNvdW50ZXJlZC4KCiAgICAtLWZvbyBh
cmcxIC0tYmFyIGFyZzIgYXJnMwoKaXMgZXF1aXZhbGVudCB0bwoKICAgIC0tZm9vIC0tIGFyZzEg
LS1iYXIgYXJnMiBhcmczCgpJZiBDPHBhc3NfdGhyb3VnaD4gaXMgYWxzbyBlbmFibGVkLCBvcHRp
b25zIHByb2Nlc3Npbmcgd2lsbCB0ZXJtaW5hdGUKYXQgdGhlIGZpcnN0IHVucmVjb2duaXplZCBv
cHRpb24sIG9yIG5vbi1vcHRpb24sIHdoaWNoZXZlciBjb21lcwpmaXJzdC4KCj1pdGVtIGJ1bmRs
aW5nIChkZWZhdWx0OiBkaXNhYmxlZCkKCkVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgYWxsb3cg
c2luZ2xlLWNoYXJhY3RlciBvcHRpb25zIHRvIGJlCmJ1bmRsZWQuIFRvIGRpc3Rpbmd1aXNoIGJ1
bmRsZXMgZnJvbSBsb25nIG9wdGlvbiBuYW1lcywgbG9uZyBvcHRpb25zCkk8bXVzdD4gYmUgaW50
cm9kdWNlZCB3aXRoIEM8LS0+IGFuZCBidW5kbGVzIHdpdGggQzwtPi4KCk5vdGUgdGhhdCwgaWYg
eW91IGhhdmUgb3B0aW9ucyBDPGE+LCBDPGw+IGFuZCBDPGFsbD4sIGFuZAphdXRvX2FiYnJldiBl
bmFibGVkLCBwb3NzaWJsZSBhcmd1bWVudHMgYW5kIG9wdGlvbiBzZXR0aW5ncyBhcmU6CgogICAg
dXNpbmcgYXJndW1lbnQgICAgICAgICAgICAgICBzZXRzIG9wdGlvbihzKQogICAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtYSwgLS1hICAgICAgICAgICAg
ICAgICAgICAgIGEKICAgIC1sLCAtLWwgICAgICAgICAgICAgICAgICAgICAgbAogICAgLWFsLCAt
bGEsIC1hbGEsIC1hbGwsLi4uICAgICBhLCBsCiAgICAtLWFsLCAtLWFsbCAgICAgICAgICAgICAg
ICAgIGFsbAoKVGhlIHN1cnByaXNpbmcgcGFydCBpcyB0aGF0IEM8LS1hPiBzZXRzIG9wdGlvbiBD
PGE+IChkdWUgdG8gYXV0bwpjb21wbGV0aW9uKSwgbm90IEM8YWxsPi4KCk5vdGU6IGRpc2FibGlu
ZyBDPGJ1bmRsaW5nPiBhbHNvIGRpc2FibGVzIEM8YnVuZGxpbmdfb3ZlcnJpZGU+LgoKPWl0ZW0g
YnVuZGxpbmdfb3ZlcnJpZGUgKGRlZmF1bHQ6IGRpc2FibGVkKQoKSWYgQzxidW5kbGluZ19vdmVy
cmlkZT4gaXMgZW5hYmxlZCwgYnVuZGxpbmcgaXMgZW5hYmxlZCBhcyB3aXRoCkM8YnVuZGxpbmc+
IGJ1dCBub3cgbG9uZyBvcHRpb24gbmFtZXMgb3ZlcnJpZGUgb3B0aW9uIGJ1bmRsZXMuCgpOb3Rl
OiBkaXNhYmxpbmcgQzxidW5kbGluZ19vdmVycmlkZT4gYWxzbyBkaXNhYmxlcyBDPGJ1bmRsaW5n
Pi4KCkI8Tm90ZTo+IFVzaW5nIG9wdGlvbiBidW5kbGluZyBjYW4gZWFzaWx5IGxlYWQgdG8gdW5l
eHBlY3RlZCByZXN1bHRzLAplc3BlY2lhbGx5IHdoZW4gbWl4aW5nIGxvbmcgb3B0aW9ucyBhbmQg
YnVuZGxlcy4gQ2F2ZWF0IGVtcHRvci4KCj1pdGVtIGlnbm9yZV9jYXNlICAoZGVmYXVsdDogZW5h
YmxlZCkKCklmIGVuYWJsZWQsIGNhc2UgaXMgaWdub3JlZCB3aGVuIG1hdGNoaW5nIG9wdGlvbiBu
YW1lcy4gSWYsIGhvd2V2ZXIsCmJ1bmRsaW5nIGlzIGVuYWJsZWQgYXMgd2VsbCwgc2luZ2xlIGNo
YXJhY3RlciBvcHRpb25zIHdpbGwgYmUgdHJlYXRlZApjYXNlLXNlbnNpdGl2ZS4KCldpdGggQzxp
Z25vcmVfY2FzZT4sIG9wdGlvbiBzcGVjaWZpY2F0aW9ucyBmb3Igb3B0aW9ucyB0aGF0IG9ubHkK
ZGlmZmVyIGluIGNhc2UsIGUuZy4sIEM8ImZvbyI+IGFuZCBDPCJGb28iPiwgd2lsbCBiZSBmbGFn
Z2VkIGFzCmR1cGxpY2F0ZXMuCgpOb3RlOiBkaXNhYmxpbmcgQzxpZ25vcmVfY2FzZT4gYWxzbyBk
aXNhYmxlcyBDPGlnbm9yZV9jYXNlX2Fsd2F5cz4uCgo9aXRlbSBpZ25vcmVfY2FzZV9hbHdheXMg
KGRlZmF1bHQ6IGRpc2FibGVkKQoKV2hlbiBidW5kbGluZyBpcyBpbiBlZmZlY3QsIGNhc2UgaXMg
aWdub3JlZCBvbiBzaW5nbGUtY2hhcmFjdGVyCm9wdGlvbnMgYWxzby4KCk5vdGU6IGRpc2FibGlu
ZyBDPGlnbm9yZV9jYXNlX2Fsd2F5cz4gYWxzbyBkaXNhYmxlcyBDPGlnbm9yZV9jYXNlPi4KCj1p
dGVtIGF1dG9fdmVyc2lvbiAoZGVmYXVsdDpkaXNhYmxlZCkKCkF1dG9tYXRpY2FsbHkgcHJvdmlk
ZSBzdXBwb3J0IGZvciB0aGUgQjwtLXZlcnNpb24+IG9wdGlvbiBpZgp0aGUgYXBwbGljYXRpb24g
ZGlkIG5vdCBzcGVjaWZ5IGEgaGFuZGxlciBmb3IgdGhpcyBvcHRpb24gaXRzZWxmLgoKR2V0b3B0
OjpMb25nIHdpbGwgcHJvdmlkZSBhIHN0YW5kYXJkIHZlcnNpb24gbWVzc2FnZSB0aGF0IGluY2x1
ZGVzIHRoZQpwcm9ncmFtIG5hbWUsIGl0cyB2ZXJzaW9uIChpZiAkbWFpbjo6VkVSU0lPTiBpcyBk
ZWZpbmVkKSwgYW5kIHRoZQp2ZXJzaW9ucyBvZiBHZXRvcHQ6OkxvbmcgYW5kIFBlcmwuIFRoZSBt
ZXNzYWdlIHdpbGwgYmUgd3JpdHRlbiB0bwpzdGFuZGFyZCBvdXRwdXQgYW5kIHByb2Nlc3Npbmcg
d2lsbCB0ZXJtaW5hdGUuCgpDPGF1dG9fdmVyc2lvbj4gd2lsbCBiZSBlbmFibGVkIGlmIHRoZSBj
YWxsaW5nIHByb2dyYW0gZXhwbGljaXRseQpzcGVjaWZpZWQgYSB2ZXJzaW9uIG51bWJlciBoaWdo
ZXIgdGhhbiAyLjMyIGluIHRoZSBDPHVzZT4gb3IKQzxyZXF1aXJlPiBzdGF0ZW1lbnQuCgo9aXRl
bSBhdXRvX2hlbHAgKGRlZmF1bHQ6ZGlzYWJsZWQpCgpBdXRvbWF0aWNhbGx5IHByb3ZpZGUgc3Vw
cG9ydCBmb3IgdGhlIEI8LS1oZWxwPiBhbmQgQjwtPz4gb3B0aW9ucyBpZgp0aGUgYXBwbGljYXRp
b24gZGlkIG5vdCBzcGVjaWZ5IGEgaGFuZGxlciBmb3IgdGhpcyBvcHRpb24gaXRzZWxmLgoKR2V0
b3B0OjpMb25nIHdpbGwgcHJvdmlkZSBhIGhlbHAgbWVzc2FnZSB1c2luZyBtb2R1bGUgTDxQb2Q6
OlVzYWdlPi4gVGhlCm1lc3NhZ2UsIGRlcml2ZWQgZnJvbSB0aGUgU1lOT1BTSVMgUE9EIHNlY3Rp
b24sIHdpbGwgYmUgd3JpdHRlbiB0bwpzdGFuZGFyZCBvdXRwdXQgYW5kIHByb2Nlc3Npbmcgd2ls
bCB0ZXJtaW5hdGUuCgpDPGF1dG9faGVscD4gd2lsbCBiZSBlbmFibGVkIGlmIHRoZSBjYWxsaW5n
IHByb2dyYW0gZXhwbGljaXRseQpzcGVjaWZpZWQgYSB2ZXJzaW9uIG51bWJlciBoaWdoZXIgdGhh
biAyLjMyIGluIHRoZSBDPHVzZT4gb3IKQzxyZXF1aXJlPiBzdGF0ZW1lbnQuCgo9aXRlbSBwYXNz
X3Rocm91Z2ggKGRlZmF1bHQ6IGRpc2FibGVkKQoKV2l0aCBDPHBhc3NfdGhyb3VnaD4gYW55dGhp
bmcgdGhhdCBpcyB1bmtub3duLCBhbWJpZ3VvdXMgb3Igc3VwcGxpZWQgd2l0aAphbiBpbnZhbGlk
IG9wdGlvbiB3aWxsIG5vdCBiZSBmbGFnZ2VkIGFzIGFuIGVycm9yLiBJbnN0ZWFkIHRoZSB1bmtu
b3duCm9wdGlvbihzKSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2F0Y2hhbGwgQzw8IDw+ID4+IGlm
IHByZXNlbnQsIG90aGVyd2lzZQp0aHJvdWdoIHRvIEM8QEFSR1Y+LiBUaGlzIG1ha2VzIGl0IHBv
c3NpYmxlIHRvIHdyaXRlIHdyYXBwZXIgc2NyaXB0cyB0aGF0CnByb2Nlc3Mgb25seSBwYXJ0IG9m
IHRoZSB1c2VyIHN1cHBsaWVkIGNvbW1hbmQgbGluZSBhcmd1bWVudHMsIGFuZCBwYXNzIHRoZQpy
ZW1haW5pbmcgb3B0aW9ucyB0byBzb21lIG90aGVyIHByb2dyYW0uCgpJZiBDPHJlcXVpcmVfb3Jk
ZXI+IGlzIGVuYWJsZWQsIG9wdGlvbnMgcHJvY2Vzc2luZyB3aWxsIHRlcm1pbmF0ZSBhdCB0aGUK
Zmlyc3QgdW5yZWNvZ25pemVkIG9wdGlvbiwgb3Igbm9uLW9wdGlvbiwgd2hpY2hldmVyIGNvbWVz
IGZpcnN0IGFuZCBhbGwKcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIEM8QEFSR1Y+
IGluc3RlYWQgb2YgdGhlIGNhdGNoYWxsCkM8PCA8PiA+PiBpZiBwcmVzZW50LiAgSG93ZXZlciwg
aWYgQzxwZXJtdXRlPiBpcyBlbmFibGVkIGluc3RlYWQsIHJlc3VsdHMKY2FuIGJlY29tZSBjb25m
dXNpbmcuCgpOb3RlIHRoYXQgdGhlIG9wdGlvbnMgdGVybWluYXRvciAoZGVmYXVsdCBDPC0tPiks
IGlmIHByZXNlbnQsIHdpbGwKYWxzbyBiZSBwYXNzZWQgdGhyb3VnaCBpbiBDPEBBUkdWPi4KCj1p
dGVtIHByZWZpeAoKVGhlIHN0cmluZyB0aGF0IHN0YXJ0cyBvcHRpb25zLiBJZiBhIGNvbnN0YW50
IHN0cmluZyBpcyBub3QKc3VmZmljaWVudCwgc2VlIEM8cHJlZml4X3BhdHRlcm4+LgoKPWl0ZW0g
cHJlZml4X3BhdHRlcm4KCkEgUGVybCBwYXR0ZXJuIHRoYXQgaWRlbnRpZmllcyB0aGUgc3RyaW5n
cyB0aGF0IGludHJvZHVjZSBvcHRpb25zLgpEZWZhdWx0IGlzIEM8LS18LXxcKz4gdW5sZXNzIGVu
dmlyb25tZW50IHZhcmlhYmxlClBPU0lYTFlfQ09SUkVDVCBoYXMgYmVlbiBzZXQsIGluIHdoaWNo
IGNhc2UgaXQgaXMgQzwtLXwtPi4KCj1pdGVtIGxvbmdfcHJlZml4X3BhdHRlcm4KCkEgUGVybCBw
YXR0ZXJuIHRoYXQgYWxsb3dzIHRoZSBkaXNhbWJpZ3VhdGlvbiBvZiBsb25nIGFuZCBzaG9ydApw
cmVmaXhlcy4gRGVmYXVsdCBpcyBDPC0tPi4KClR5cGljYWxseSB5b3Ugb25seSBuZWVkIHRvIHNl
dCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgbm9uc3RhbmRhcmQKcHJlZml4ZXMgYW5kIHdhbnQgc29t
ZSBvciBhbGwgb2YgdGhlbSB0byBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcwonLS0nIGRvZXMg
dW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMuCgpGb3IgZXhhbXBsZSwgc2V0dGluZyBwcmVmaXhf
cGF0dGVybiB0byBDPC0tfC18XCt8XC8+IGFuZApsb25nX3ByZWZpeF9wYXR0ZXJuIHRvIEM8LS18
XC8+IHdvdWxkIGFkZCBXaW4zMiBzdHlsZSBhcmd1bWVudApoYW5kbGluZy4KCj1pdGVtIGRlYnVn
IChkZWZhdWx0OiBkaXNhYmxlZCkKCkVuYWJsZSBkZWJ1Z2dpbmcgb3V0cHV0LgoKPWJhY2sKCj1o
ZWFkMSBFeHBvcnRhYmxlIE1ldGhvZHMKCj1vdmVyCgo9aXRlbSBWZXJzaW9uTWVzc2FnZQoKVGhp
cyBzdWJyb3V0aW5lIHByb3ZpZGVzIGEgc3RhbmRhcmQgdmVyc2lvbiBtZXNzYWdlLiBJdHMgYXJn
dW1lbnQgY2FuIGJlOgoKPW92ZXIgNAoKPWl0ZW0gKgoKQSBzdHJpbmcgY29udGFpbmluZyB0aGUg
dGV4dCBvZiBhIG1lc3NhZ2UgdG8gcHJpbnQgSTxiZWZvcmU+IHByaW50aW5nCnRoZSBzdGFuZGFy
ZCBtZXNzYWdlLgoKPWl0ZW0gKgoKQSBudW1lcmljIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGRlc2lyZWQgZXhpdCBzdGF0dXMuCgo9aXRlbSAqCgpBIHJlZmVyZW5jZSB0byBhIGhhc2guCgo9
YmFjawoKSWYgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBpcyBnaXZlbiB0aGVuIHRoZSBlbnRpcmUg
YXJndW1lbnQgbGlzdCBpcwphc3N1bWVkIHRvIGJlIGEgaGFzaC4gIElmIGEgaGFzaCBpcyBzdXBw
bGllZCAoZWl0aGVyIGFzIGEgcmVmZXJlbmNlIG9yCmFzIGEgbGlzdCkgaXQgc2hvdWxkIGNvbnRh
aW4gb25lIG9yIG1vcmUgZWxlbWVudHMgd2l0aCB0aGUgZm9sbG93aW5nCmtleXM6Cgo9b3ZlciA0
Cgo9aXRlbSBDPC1tZXNzYWdlPgoKPWl0ZW0gQzwtbXNnPgoKVGhlIHRleHQgb2YgYSBtZXNzYWdl
IHRvIHByaW50IGltbWVkaWF0ZWx5IHByaW9yIHRvIHByaW50aW5nIHRoZQpwcm9ncmFtJ3MgdXNh
Z2UgbWVzc2FnZS4KCj1pdGVtIEM8LWV4aXR2YWw+CgpUaGUgZGVzaXJlZCBleGl0IHN0YXR1cyB0
byBwYXNzIHRvIHRoZSBCPGV4aXQoKT4gZnVuY3Rpb24uClRoaXMgc2hvdWxkIGJlIGFuIGludGVn
ZXIsIG9yIGVsc2UgdGhlIHN0cmluZyAiTk9FWElUIiB0bwppbmRpY2F0ZSB0aGF0IGNvbnRyb2wg
c2hvdWxkIHNpbXBseSBiZSByZXR1cm5lZCB3aXRob3V0CnRlcm1pbmF0aW5nIHRoZSBpbnZva2lu
ZyBwcm9jZXNzLgoKPWl0ZW0gQzwtb3V0cHV0PgoKQSByZWZlcmVuY2UgdG8gYSBmaWxlaGFuZGxl
LCBvciB0aGUgcGF0aG5hbWUgb2YgYSBmaWxlIHRvIHdoaWNoIHRoZQp1c2FnZSBtZXNzYWdlIHNo
b3VsZCBiZSB3cml0dGVuLiBUaGUgZGVmYXVsdCBpcyBDPFwqU1RERVJSPiB1bmxlc3MgdGhlCmV4
aXQgdmFsdWUgaXMgbGVzcyB0aGFuIDIgKGluIHdoaWNoIGNhc2UgdGhlIGRlZmF1bHQgaXMgQzxc
KlNURE9VVD4pLgoKPWJhY2sKCllvdSBjYW5ub3QgdGllIHRoaXMgcm91dGluZSBkaXJlY3RseSB0
byBhbiBvcHRpb24sIGUuZy46CgogICAgR2V0T3B0aW9ucygidmVyc2lvbiIgPT4gXCZWZXJzaW9u
TWVzc2FnZSk7CgpVc2UgdGhpcyBpbnN0ZWFkOgoKICAgIEdldE9wdGlvbnMoInZlcnNpb24iID0+
IHN1YiB7IFZlcnNpb25NZXNzYWdlKCkgfSk7Cgo9aXRlbSBIZWxwTWVzc2FnZQoKVGhpcyBzdWJy
b3V0aW5lIHByb2R1Y2VzIGEgc3RhbmRhcmQgaGVscCBtZXNzYWdlLCBkZXJpdmVkIGZyb20gdGhl
CnByb2dyYW0ncyBQT0Qgc2VjdGlvbiBTWU5PUFNJUyB1c2luZyBMPFBvZDo6VXNhZ2U+LiBJdCB0
YWtlcyB0aGUgc2FtZQphcmd1bWVudHMgYXMgVmVyc2lvbk1lc3NhZ2UoKS4gSW4gcGFydGljdWxh
ciwgeW91IGNhbm5vdCB0aWUgaXQKZGlyZWN0bHkgdG8gYW4gb3B0aW9uLCBlLmcuOgoKICAgIEdl
dE9wdGlvbnMoImhlbHAiID0+IFwmSGVscE1lc3NhZ2UpOwoKVXNlIHRoaXMgaW5zdGVhZDoKCiAg
ICBHZXRPcHRpb25zKCJoZWxwIiA9PiBzdWIgeyBIZWxwTWVzc2FnZSgpIH0pOwoKPWJhY2sKCj1o
ZWFkMSBSZXR1cm4gdmFsdWVzIGFuZCBFcnJvcnMKCkNvbmZpZ3VyYXRpb24gZXJyb3JzIGFuZCBl
cnJvcnMgaW4gdGhlIG9wdGlvbiBkZWZpbml0aW9ucyBhcmUKc2lnbmFsbGVkIHVzaW5nIGRpZSgp
IGFuZCB3aWxsIHRlcm1pbmF0ZSB0aGUgY2FsbGluZyBwcm9ncmFtIHVubGVzcwp0aGUgY2FsbCB0
byBHZXRvcHQ6Okxvbmc6OkdldE9wdGlvbnMoKSB3YXMgZW1iZWRkZWQgaW4gQzxldmFsIHsgLi4u
Cn0+LCBvciBkaWUoKSB3YXMgdHJhcHBlZCB1c2luZyBDPCRTSUd7X19ESUVfX30+LgoKR2V0T3B0
aW9ucyByZXR1cm5zIHRydWUgdG8gaW5kaWNhdGUgc3VjY2Vzcy4KSXQgcmV0dXJucyBmYWxzZSB3
aGVuIHRoZSBmdW5jdGlvbiBkZXRlY3RlZCBvbmUgb3IgbW9yZSBlcnJvcnMgZHVyaW5nCm9wdGlv
biBwYXJzaW5nLiBUaGVzZSBlcnJvcnMgYXJlIHNpZ25hbGxlZCB1c2luZyB3YXJuKCkgYW5kIGNh
biBiZQp0cmFwcGVkIHdpdGggQzwkU0lHe19fV0FSTl9ffT4uCgo9aGVhZDEgTGVnYWN5CgpUaGUg
ZWFybGllc3QgZGV2ZWxvcG1lbnQgb2YgQzxuZXdnZXRvcHQucGw+IHN0YXJ0ZWQgaW4gMTk5MCwg
d2l0aCBQZXJsCnZlcnNpb24gNC4gQXMgYSByZXN1bHQsIGl0cyBkZXZlbG9wbWVudCwgYW5kIHRo
ZSBkZXZlbG9wbWVudCBvZgpHZXRvcHQ6OkxvbmcsIGhhcyBnb25lIHRocm91Z2ggc2V2ZXJhbCBz
dGFnZXMuIFNpbmNlIGJhY2t3YXJkCmNvbXBhdGliaWxpdHkgaGFzIGFsd2F5cyBiZWVuIGV4dHJl
bWVseSBpbXBvcnRhbnQsIHRoZSBjdXJyZW50IHZlcnNpb24Kb2YgR2V0b3B0OjpMb25nIHN0aWxs
IHN1cHBvcnRzIGEgbG90IG9mIGNvbnN0cnVjdHMgdGhhdCBub3dhZGF5cyBhcmUKbm8gbG9uZ2Vy
IG5lY2Vzc2FyeSBvciBvdGhlcndpc2UgdW53YW50ZWQuIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMK
YnJpZWZseSBzb21lIG9mIHRoZXNlICdmZWF0dXJlcycuCgo9aGVhZDIgRGVmYXVsdCBkZXN0aW5h
dGlvbnMKCldoZW4gbm8gZGVzdGluYXRpb24gaXMgc3BlY2lmaWVkIGZvciBhbiBvcHRpb24sIEdl
dE9wdGlvbnMgd2lsbCBzdG9yZQp0aGUgcmVzdWx0YW50IHZhbHVlIGluIGEgZ2xvYmFsIHZhcmlh
YmxlIG5hbWVkIEM8b3B0Xz5JPFhYWD4sIHdoZXJlCkk8WFhYPiBpcyB0aGUgcHJpbWFyeSBuYW1l
IG9mIHRoaXMgb3B0aW9uLiBXaGVuIGEgcHJvZ3JhbSBleGVjdXRlcwp1bmRlciBDPHVzZSBzdHJp
Y3Q+IChyZWNvbW1lbmRlZCksIHRoZXNlIHZhcmlhYmxlcyBtdXN0IGJlCnByZS1kZWNsYXJlZCB3
aXRoIG91cigpIG9yIEM8dXNlIHZhcnM+LgoKICAgIG91ciAkb3B0X2xlbmd0aCA9IDA7CiAgICBH
ZXRPcHRpb25zICgnbGVuZ3RoPWknKTsJIyB3aWxsIHN0b3JlIGluICRvcHRfbGVuZ3RoCgpUbyB5
aWVsZCBhIHVzYWJsZSBQZXJsIHZhcmlhYmxlLCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBwYXJ0
IG9mIHRoZQpzeW50YXggZm9yIHZhcmlhYmxlcyBhcmUgdHJhbnNsYXRlZCB0byB1bmRlcnNjb3Jl
cy4gRm9yIGV4YW1wbGUsCkM8LS1mcHAtc3RydWN0LXJldHVybj4gd2lsbCBzZXQgdGhlIHZhcmlh
YmxlCkM8JG9wdF9mcHBfc3RydWN0X3JldHVybj4uIE5vdGUgdGhhdCB0aGlzIHZhcmlhYmxlIHJl
c2lkZXMgaW4gdGhlCm5hbWVzcGFjZSBvZiB0aGUgY2FsbGluZyBwcm9ncmFtLCBub3QgbmVjZXNz
YXJpbHkgQzxtYWluPi4gRm9yCmV4YW1wbGU6CgogICAgR2V0T3B0aW9ucyAoInNpemU9aSIsICJz
aXplcz1pQCIpOwoKd2l0aCBjb21tYW5kIGxpbmUgIi1zaXplIDEwIC1zaXplcyAyNCAtc2l6ZXMg
NDgiIHdpbGwgcGVyZm9ybSB0aGUKZXF1aXZhbGVudCBvZiB0aGUgYXNzaWdubWVudHMKCiAgICAk
b3B0X3NpemUgPSAxMDsKICAgIEBvcHRfc2l6ZXMgPSAoMjQsIDQ4KTsKCj1oZWFkMiBBbHRlcm5h
dGl2ZSBvcHRpb24gc3RhcnRlcnMKCkEgc3RyaW5nIG9mIGFsdGVybmF0aXZlIG9wdGlvbiBzdGFy
dGVyIGNoYXJhY3RlcnMgbWF5IGJlIHBhc3NlZCBhcyB0aGUKZmlyc3QgYXJndW1lbnQgKG9yIHRo
ZSBmaXJzdCBhcmd1bWVudCBhZnRlciBhIGxlYWRpbmcgaGFzaCByZWZlcmVuY2UKYXJndW1lbnQp
LgoKICAgIG15ICRsZW4gPSAwOwogICAgR2V0T3B0aW9ucyAoJy8nLCAnbGVuZ3RoPWknID0+ICRs
ZW4pOwoKTm93IHRoZSBjb21tYW5kIGxpbmUgbWF5IGxvb2sgbGlrZToKCiAgICAvbGVuZ3RoIDI0
IC0tIGFyZwoKTm90ZSB0aGF0IHRvIHRlcm1pbmF0ZSBvcHRpb25zIHByb2Nlc3Npbmcgc3RpbGwg
cmVxdWlyZXMgYSBkb3VibGUgZGFzaApDPC0tPi4KCkdldE9wdGlvbnMoKSB3aWxsIG5vdCBpbnRl
cnByZXQgYSBsZWFkaW5nIEM8PCAiPD4iID4+IGFzIG9wdGlvbiBzdGFydGVycwppZiB0aGUgbmV4
dCBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZS4gVG8gZm9yY2UgQzw8ICI8IiA+PiBhbmQgQzw8ICI+
IiA+PiBhcwpvcHRpb24gc3RhcnRlcnMsIHVzZSBDPDwgIj48IiA+Pi4gQ29uZnVzaW5nPyBXZWxs
LCBCPHVzaW5nIGEgc3RhcnRlcgphcmd1bWVudCBpcyBzdHJvbmdseSBkZXByZWNhdGVkPiBhbnl3
YXkuCgo9aGVhZDIgQ29uZmlndXJhdGlvbiB2YXJpYWJsZXMKClByZXZpb3VzIHZlcnNpb25zIG9m
IEdldG9wdDo6TG9uZyB1c2VkIHZhcmlhYmxlcyBmb3IgdGhlIHB1cnBvc2Ugb2YKY29uZmlndXJp
bmcuIEFsdGhvdWdoIG1hbmlwdWxhdGluZyB0aGVzZSB2YXJpYWJsZXMgc3RpbGwgd29yaywgaXQg
aXMKc3Ryb25nbHkgZW5jb3VyYWdlZCB0byB1c2UgdGhlIEM8Q29uZmlndXJlPiByb3V0aW5lIHRo
YXQgd2FzIGludHJvZHVjZWQKaW4gdmVyc2lvbiAyLjE3LiBCZXNpZGVzLCBpdCBpcyBtdWNoIGVh
c2llci4KCj1oZWFkMSBUaXBzIGFuZCBUZWNobmlxdWVzCgo9aGVhZDIgUHVzaGluZyBtdWx0aXBs
ZSB2YWx1ZXMgaW4gYSBoYXNoIG9wdGlvbgoKU29tZXRpbWVzIHlvdSB3YW50IHRvIGNvbWJpbmUg
dGhlIGJlc3Qgb2YgaGFzaGVzIGFuZCBhcnJheXMuIEZvcgpleGFtcGxlLCB0aGUgY29tbWFuZCBs
aW5lOgoKICAtLWxpc3QgYWRkPWZpcnN0IC0tbGlzdCBhZGQ9c2Vjb25kIC0tbGlzdCBhZGQ9dGhp
cmQKCndoZXJlIGVhY2ggc3VjY2Vzc2l2ZSAnbGlzdCBhZGQnIG9wdGlvbiB3aWxsIHB1c2ggdGhl
IHZhbHVlIG9mIGFkZAppbnRvIGFycmF5IHJlZiAkbGlzdC0+eydhZGQnfS4gVGhlIHJlc3VsdCB3
b3VsZCBiZSBsaWtlCgogICRsaXN0LT57YWRkfSA9IFtxdyhmaXJzdCBzZWNvbmQgdGhpcmQpXTsK
ClRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZCB3aXRoIGEgZGVzdGluYXRpb24gcm91dGluZToKCiAg
R2V0T3B0aW9ucygnbGlzdD1zJScgPT4KICAgICAgICAgICAgICAgc3ViIHsgcHVzaChAeyRsaXN0
eyRfWzFdfX0sICRfWzJdKSB9KTsKCj1oZWFkMSBUcm91Ymxlc2hvb3RpbmcKCj1oZWFkMiBHZXRP
cHRpb25zIGRvZXMgbm90IHJldHVybiBhIGZhbHNlIHJlc3VsdCB3aGVuIGFuIG9wdGlvbiBpcyBu
b3Qgc3VwcGxpZWQKClRoYXQncyB3aHkgdGhleSdyZSBjYWxsZWQgJ29wdGlvbnMnLgoKPWhlYWQy
IEdldE9wdGlvbnMgZG9lcyBub3Qgc3BsaXQgdGhlIGNvbW1hbmQgbGluZSBjb3JyZWN0bHkKClRo
ZSBjb21tYW5kIGxpbmUgaXMgbm90IHNwbGl0IGJ5IEdldE9wdGlvbnMsIGJ1dCBieSB0aGUgY29t
bWFuZCBsaW5lCmludGVycHJldGVyIChDTEkpLiBPbiBVbml4LCB0aGlzIGlzIHRoZSBzaGVsbC4g
T24gV2luZG93cywgaXQgaXMKQ09NTUFORC5DT00gb3IgQ01ELkVYRS4gT3RoZXIgb3BlcmF0aW5n
IHN5c3RlbXMgaGF2ZSBvdGhlciBDTElzLgoKSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgdGhhdCB0
aGVzZSBDTElzIG1heSBiZWhhdmUgZGlmZmVyZW50IHdoZW4gdGhlCmNvbW1hbmQgbGluZSBjb250
YWlucyBzcGVjaWFsIGNoYXJhY3RlcnMsIGluIHBhcnRpY3VsYXIgcXVvdGVzIG9yCmJhY2tzbGFz
aGVzLiBGb3IgZXhhbXBsZSwgd2l0aCBVbml4IHNoZWxscyB5b3UgY2FuIHVzZSBzaW5nbGUgcXVv
dGVzCihDPCc+KSBhbmQgZG91YmxlIHF1b3RlcyAoQzwiPikgdG8gZ3JvdXAgd29yZHMgdG9nZXRo
ZXIuIFRoZSBmb2xsb3dpbmcKYWx0ZXJuYXRpdmVzIGFyZSBlcXVpdmFsZW50IG9uIFVuaXg6Cgog
ICAgInR3byB3b3JkcyIKICAgICd0d28gd29yZHMnCiAgICB0d29cIHdvcmRzCgpJbiBjYXNlIG9m
IGRvdWJ0LCBpbnNlcnQgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgaW4gZnJvbnQgb2YgeW91ciBQ
ZXJsCnByb2dyYW06CgogICAgcHJpbnQgU1RERVJSIChqb2luKCJ8IixAQVJHViksIlxuIik7Cgp0
byB2ZXJpZnkgaG93IHlvdXIgQ0xJIHBhc3NlcyB0aGUgYXJndW1lbnRzIHRvIHRoZSBwcm9ncmFt
LgoKPWhlYWQyIFVuZGVmaW5lZCBzdWJyb3V0aW5lICZtYWluOjpHZXRPcHRpb25zIGNhbGxlZAoK
QXJlIHlvdSBydW5uaW5nIFdpbmRvd3MsIGFuZCBkaWQgeW91IHdyaXRlCgogICAgdXNlIEdldE9w
dDo6TG9uZzsKCihub3RlIHRoZSBjYXBpdGFsICdPJyk/Cgo9aGVhZDIgSG93IGRvIEkgcHV0IGEg
Ii0/IiBvcHRpb24gaW50byBhIEdldG9wdDo6TG9uZz8KCllvdSBjYW4gb25seSBvYnRhaW4gdGhp
cyB1c2luZyBhbiBhbGlhcywgYW5kIEdldG9wdDo6TG9uZyBvZiBhdCBsZWFzdAp2ZXJzaW9uIDIu
MTMuCgogICAgdXNlIEdldG9wdDo6TG9uZzsKICAgIEdldE9wdGlvbnMgKCJoZWxwfD8iKTsgICAg
IyAtaGVscCBhbmQgLT8gd2lsbCBib3RoIHNldCAkb3B0X2hlbHAKCk90aGVyIGNoYXJhY3RlcnMg
dGhhdCBjYW4ndCBhcHBlYXIgaW4gUGVybCBpZGVudGlmaWVycyBhcmUgYWxzbyBzdXBwb3J0ZWQK
YXMgYWxpYXNlcyB3aXRoIEdldG9wdDo6TG9uZyBvZiBhdCBsZWFzdCB2ZXJzaW9uIDIuMzkuCgpB
cyBvZiB2ZXJzaW9uIDIuMzIgR2V0b3B0OjpMb25nIHByb3ZpZGVzIGF1dG8taGVscCwgYSBxdWlj
ayBhbmQgZWFzeSB3YXkKdG8gYWRkIHRoZSBvcHRpb25zIC0taGVscCBhbmQgLT8gdG8geW91ciBw
cm9ncmFtLCBhbmQgaGFuZGxlIHRoZW0uCgpTZWUgQzxhdXRvX2hlbHA+IGluIHNlY3Rpb24gTDxD
b25maWd1cmluZyBHZXRvcHQ6Okxvbmc+LgoKPWhlYWQxIEFVVEhPUgoKSm9oYW4gVnJvbWFucyA8
anZyb21hbnNAc3F1aXJyZWwubmw+Cgo9aGVhZDEgQ09QWVJJR0hUIEFORCBESVNDTEFJTUVSCgpU
aGlzIHByb2dyYW0gaXMgQ29weXJpZ2h0IDE5OTAsMjAxNSBieSBKb2hhbiBWcm9tYW5zLgpUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Cm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFBlcmwgQXJ0aXN0aWMgTGljZW5zZSBv
ciB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlCkZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55CmxhdGVyIHZlcnNpb24uCgpUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKSWYgeW91IGRvIG5v
dCBoYXZlIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd3JpdGUgdG8K
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlk
Z2UsCk1BIDAyMTM5LCBVU0EuCgo9Y3V0Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8165</attachid>
            <date>2019-06-12 17:41:42 +0300</date>
            <delta_ts>2019-06-12 17:41:42 +0300</delta_ts>
            <desc>воспроизводилка проблемы</desc>
            <filename>repro.pl</filename>
            <type>text/plain</type>
            <size>442</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">ICAgICMhL3Vzci9iaW4vcGVybAogICAgdXNlIEdldG9wdDo6TG9uZzsKICAgIHVzZSBEYXRhOjpE
dW1wZXI7CiAgICB1c2Ugc3RyaWN0OwogICAgJERhdGE6OkR1bXBlcjo6U29ydGtleXM9MTsKICAg
ICREYXRhOjpEdW1wZXI6OlVzZXFxPTE7CgogICAgbXkgJW9wdHM7CiAgICBteUBvcHRucz0oCiAg
ICAgICAgICAgICAnY29uZmlnPXMnLAogICAgKTsKCiMgICAgdXRmODo6dXBncmFkZSAkXyBmb3Ig
QEFSR1Y7CiAgICB1dGY4Ojp1cGdyYWRlICgkQVJHVlswXSk7CiAgICAKICAgIHByaW50IER1bXBl
ciBcQEFSR1Y7CiAgICBwcmludCAiXG4kXzogIi4oKHV0Zjg6OmlzX3V0ZjggJF8pPzE6MCkgZm9y
IEBBUkdWOwogICAgcHJpbnQgIlxuXG4iOwogICAgR2V0T3B0aW9ucyggXCVvcHRzLCBAb3B0bnMs
ICk7CiAgICAKICAgIHByaW50IER1bXBlciBcJW9wdHMsXEBvcHRuczsKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8166</attachid>
            <date>2019-06-12 18:16:18 +0300</date>
            <delta_ts>2019-06-12 18:16:18 +0300</delta_ts>
            <desc>суженная воспроизводилка</desc>
            <filename>repro2.pl</filename>
            <type>text/plain</type>
            <size>221</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsCnVzZSBzdHJpY3Q7CiN1c2UgcmUgJ2RlYnVnJzsKdXNlIERhdGE6OkR1
bXBlcjsKJFw9JC87CiREYXRhOjpEdW1wZXI6OlVzZXFxPTE7CgpwcmludCArKCRBUkdWWzBdPX4v
XiguKikkL3MpPzE6MDsKCnV0Zjg6OnVwZ3JhZGUgJEFSR1ZbMF07CnByaW50ICsoJEFSR1ZbMF09
fi9eKC4qKSQvKT8xOjA7CnByaW50ICsoJEFSR1ZbMF09fi9eKC4qKSQvcyk/MTowOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8167</attachid>
            <date>2019-06-14 17:12:35 +0300</date>
            <delta_ts>2019-06-14 17:12:35 +0300</delta_ts>
            <desc>perl.spec: ALT #35523 workaround (-O1 for regexec, re_exec)</desc>
            <filename>0001-1-5.28.2-alt2.patch</filename>
            <type>text/plain</type>
            <size>2720</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">RnJvbSA4OGVjNmI4NTMzOWI3ODgyNzFmNjcwNDgwMjdmZTA3Yjc4YzQ4NGU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFNoaWdvcmluIDxtaWtlQGFsdGxpbnV4Lm9yZz4K
RGF0ZTogRnJpLCAxNCBKdW4gMjAxOSAxNToyMTozOCArMDMwMApTdWJqZWN0OiBbUEFUQ0hdIDE6
NS4yOC4yLWFsdDIKCi0gRTJLOgogICsgQUxUICMzNTUyMyB3b3JrYXJvdW5kICgtTzEgZm9yIHJl
Z2V4ZWMsIHJlX2V4ZWMpCiAgKyBkcm9wIG9ic29sZXRlIGtsdWRnZXMgaW5zdGVhZAotIGFkZGVk
IG5vdGUgcmVnYXJkaW5nICJTTVAtaW5jb21wYXRpYmxlIiBidWlsZAotLS0KIHBlcmwuc3BlYyB8
IDMzICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5
IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Blcmwuc3BlYyBi
L3Blcmwuc3BlYwppbmRleCA0NzY5N2IxZmFkLi5iOTMzNTRjOTZlIDEwMDY0NAotLS0gYS9wZXJs
LnNwZWMKKysrIGIvcGVybC5zcGVjCkBAIC0xLDE0ICsxLDE0IEBACiBOYW1lOiBwZXJsCiBWZXJz
aW9uOiA1LjI4LjIKLVJlbGVhc2U6IGFsdDEKK1JlbGVhc2U6IGFsdDIKIEVwb2NoOiAxCiAKIFN1
bW1hcnk6IFByYWN0aWNhbCBFeHRyYWN0aW9uIGFuZCBSZXBvcnQgTGFuZ3VhZ2UKIExpY2Vuc2U6
IEdQTCBvciBBcnRpc3RpYwogR3JvdXA6IERldmVsb3BtZW50L1BlcmwKLVVSTDogaHR0cDovL3d3
dy5wZXJsLm9yZwotUGFja2FnZXI6IFBlcmwgTWFpbnRhaW5lcnMgVGVhbSA8Y3BhbkBwYWNrYWdl
cy5hbHRsaW51eC5vcmc+CiAKK1VybDogaHR0cDovL3d3dy5wZXJsLm9yZworUGFja2FnZXI6IFBl
cmwgTWFpbnRhaW5lcnMgVGVhbSA8Y3BhbkBwYWNrYWdlcy5hbHRsaW51eC5vcmc+CiBTb3VyY2U6
IHBlcmwtJXZlcnNpb24udGFyCiAKIFBhdGNoMDE6IHBlcmwtNS4yOC4wLWFsdC02NDQtYXQtRXh0
VXRpbHMtSW5zdGFsbC5wYXRjaApAQCAtNDE0LDExICs0MTQsNiBAQCBmaW5kIC1uYW1lICcqLm9y
aWcnIC1kZWxldGUKICVkZWZpbmUgc2l0ZV9wcml2bGliICVzaXRlX3ByZWZpeC9zaGFyZS9wZXJs
LyV2ZXIKICVkZWZpbmUgc2l0ZV9hcmNobGliICVzaXRlX3ByZWZpeC8lX2xpYi9wZXJsLyV2ZXIK
IAotJWlmYXJjaCAlZTJrCi0jIG1jc3QjMjI3OQotJWFkZF9vcHRmbGFncyAtRF9GT1JUSUZZX1NP
VVJDRT0wCi0lZW5kaWYKLQogc2ggQ29uZmlndXJlIC1kZXJzIFwKIAktRHVzZTY0Yml0aW50IFwK
IAktRHVzZXRocmVhZHMgLUR1c2VpdGhyZWFkcyAtRHVzZWxhcmdlZmlsZXMgXApAQCAtNDM0LDEx
ICs0MjksNiBAQCBzaCBDb25maWd1cmUgLWRlcnMgXAogCS1EY2ZfYnk9JyV2ZW5kb3InIC1EY2Zf
ZW1haWw9JyVwYWNrYWdlcicgXAogCS1EbXlob3N0bmFtZT1sb2NhbGhvc3QgLURwZXJsYWRtaW49
cm9vdEBsb2NhbGhvc3QKIAotJWlmYXJjaCAlZTJrCi0jIGJlZm9yZSBsY2MtMS4yMwotY2MgLS12
ZXJzaW9uIHwgZ3JlcCAtcSAnXmxjYzoxLjIxJyAmJiBlY2hvICctbGN4YScgPj4gLi9leHQubGli
cwotJWVuZGlmCi0KICMga2lsbCBycGF0aAogc2VkIC1pICdzQCAtV2wsLXJwYXRoLCVhcmNobGli
L0NPUkVAQGcnIGNvbmZpZy5zaCBbTW1dYWtlZmlsZSBteWNvbmZpZwogCkBAIC00NDksOSArNDM5
LDE4IEBAIHNlZCAtaSAnL21hbjNleHQve3MvMC8zcG0vfScgY29uZmlnLnNoIFtNbV1ha2VmaWxl
CiAjIG1ha2UgLWxwZXJsIHN5bWxpbmsKIGxuIC1zbmYgbGlicGVybC0ldmVyLnNvIGxpYnBlcmwu
c28KIAotIyBidWlsZCB0aGUgcmVzdCAoU01QIGluY29tcGF0aWJsZSkKKyMgYnVpbGQgdGhlIHJl
c3QgKFNNUCBpbmNvbXBhdGlibGUgb246IHNwYXJjNjQgJSVhcm0sIGFjY29yZGluZyB0byBmZWRv
cmEpCiBtYWtlCiAKKyVpZmFyY2ggJWUyaworIyBodHRwOi8vYnVnemlsbGEuYWx0bGludXgub3Jn
LzM1NTIzIHdvcmthcm91bmQKK3JtIC1mIHJlZ2V4ZWMubyBsaWJwZXJsLSV2ZXIuc28gZXh0L3Jl
L3JlX2V4ZWMubworbWFrZSBPUFRJTUlaRSs9JyVvcHRmbGFncyAtTzEnIHJlZ2V4ZWMubworbWFr
ZSBsaWJwZXJsLSV2ZXIuc28KK21ha2UgLUMgZXh0L3JlIE9QVElNSVpFKz0nJW9wdGZsYWdzIC1P
MScgcmVfZXhlYy5vCittYWtlIC1DIGV4dC9yZSBhbGwKKyVlbmRpZgorCiAlY2hlY2sKIGV4cG9y
dCBMRF9MSUJSQVJZX1BBVEg9JFBXRCBMRF9CSU5EX05PVz0xIFBFUkxfRExfTk9OTEFaWT0xCiAj
IGZvciBwZXJsIDUuMjYuMjsgaGFjayBhcm91bmQgdC9wb3J0aW5nL3JlZ2VuLnQKQEAgLTEwNjks
NiArMTA2OCwxMiBAQCBlY2hvIHBlcmwgPiVidWlsZHJvb3QlX3N5c2NvbmZkaXIvYnVpbGRyZXFz
L3BhY2thZ2VzL3N1YnN0aXR1dGUuZC9wZXJsLWJhc2UKIAklYXV0b2xpYi9Vbmljb2RlCiAKICVj
aGFuZ2Vsb2cKKyogRnJpIEp1biAxNCAyMDE5IE1pY2hhZWwgU2hpZ29yaW4gPG1pa2VAYWx0bGlu
dXgub3JnPiAxOjUuMjguMi1hbHQyCistIEUySzoKKyAgKyBBTFQgIzM1NTIzIHdvcmthcm91bmQg
KC1PMSBmb3IgcmVnZXhlYywgcmVfZXhlYykKKyAgKyBkcm9wIG9ic29sZXRlIGtsdWRnZXMgaW5z
dGVhZAorLSBhZGRlZCBub3RlIHJlZ2FyZGluZyAiU01QLWluY29tcGF0aWJsZSIgYnVpbGQKKwog
KiBTYXQgTWF5IDI1IDIwMTkgSWdvciBWbGFzZW5rbyA8dml5QGFsdGxpbnV4LnJ1PiAxOjUuMjgu
Mi1hbHQxCiAtIDUuMjguMSAtPiA1LjI4LjIKIAotLSAKMi4yMS4wCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>