<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>167617</bug_id>
          
          <creation_ts>2007-02-19 13:54 0000</creation_ts>
          <short_desc>&gt;=app-doc/doxygen-1.4.7 has problems with russian in UTF-8</short_desc>
          <delta_ts>2007-03-12 05:24:47 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Applications</component>
          <version>2006.0</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>Sergey.Belyashov@gmail.com</reporter>
          <assigned_to>nerdboy@gentoo.org</assigned_to>
          <cc>dev-tools@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-19 13:54:13 0000</bug_when>
            <thetext>my sources contains russian comments. I process them by doxygen-1.4.7 (and 1.5.0) as result I receive html files with broken comments (as utf-8 in koi8-r).
I previously post same bug (which is fixed) about doxygen-1.4.2: http://bugs.gentoo.org/show_bug.cgi?id=112076

Reproducible: Always

Steps to Reproduce:</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>nerdboy@gentoo.org</who>
            <bug_when>2007-02-23 04:36:19 0000</bug_when>
            <thetext>Looks like upstream changes in 1.4.7 broke your patch.  Can you supply an updated patch for recent versions of doxygen?  The ones currently in portage are 1.4.7 and 1.5.1, and I don&apos;t have your source files or the utf-8 fu...  Thanks.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-23 10:13:35 0000</bug_when>
            <thetext>Created an attachment (id=111027)
files/doxygen-1.4.7-utf8-ru.patch

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-23 10:14:28 0000</bug_when>
            <thetext>Created an attachment (id=111029)
app-doc/doxygen-1.4.7.ebuild

Added new USE flag &quot;unicode&quot;</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-23 10:25:37 0000</bug_when>
            <thetext>Created an attachment (id=111033)
app-doc/doxygen-1.5.1.ebuild

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-23 10:26:07 0000</bug_when>
            <thetext>Created an attachment (id=111034)
files/doxygen-1.5.1-utf8-ru.patch

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>nerdboy@gentoo.org</who>
            <bug_when>2007-02-28 05:05:57 0000</bug_when>
            <thetext>Do you think this bug has anything to do with your issue?

http://bugzilla.gnome.org/show_bug.cgi?id=159291

It&apos;s the only bug that mentions utf8 in the summary; if the recent updates don&apos;t help, then we should push your patches upstream.  You could try the latest CVS code if you want, otherwise I would think there should be a new release fairly soon.

Also, did you test with USE=doc ?  The 1.4.7 patch cause a failure, however, 1.5.1 creates the PDF file successfully:

gmake[1]: Entering directory `/var/tmp/portage/app-doc/doxygen-1.4.7/work/doxygen-1.4.7/doc&apos;
python translator.py
Unexpected token &apos;lpar&apos; on the line 70 in &apos;/var/tmp/portage/app-doc/doxygen-1.4.7/work/doxygen-1.4.7/src/translator_ru.h&apos;.
status = 4 in __collectPublicMethodPrototypes()
gmake[1]: *** [language.doc] Error 1
gmake[1]: Leaving directory `/var/tmp/portage/app-doc/doxygen-1.4.7/work/doxygen-1.4.7/doc&apos;
make: *** [docs] Error 2
 * &quot;make pdf docs&quot; failed.
&gt;&gt;&gt; Source compiled.
&gt;&gt;&gt; Test phase [not enabled]: app-doc/doxygen-1.4.7
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-28 13:38:40 0000</bug_when>
            <thetext>(In reply to comment #6)
&gt; Do you think this bug has anything to do with your issue?
&gt; 
&gt; http://bugzilla.gnome.org/show_bug.cgi?id=159291
&gt; 

Yes. But these changes will be in next versions.

&gt; It&apos;s the only bug that mentions utf8 in the summary; if the recent updates
&gt; don&apos;t help, then we should push your patches upstream.  You could try the
&gt; latest CVS code if you want, otherwise I would think there should be a new
&gt; release fairly soon.
&gt; 
&gt; Also, did you test with USE=doc ?  The 1.4.7 patch cause a failure, however,
&gt; 1.5.1 creates the PDF file successfully:
&gt; 
&gt; gmake[1]: Entering directory
&gt; `/var/tmp/portage/app-doc/doxygen-1.4.7/work/doxygen-1.4.7/doc&apos;
&gt; python translator.py
&gt; Unexpected token &apos;lpar&apos; on the line 70 in
&gt; &apos;/var/tmp/portage/app-doc/doxygen-1.4.7/work/doxygen-1.4.7/src/translator_ru.h&apos;.
&gt; status = 4 in __collectPublicMethodPrototypes()
&gt; gmake[1]: *** [language.doc] Error 1
&gt; gmake[1]: Leaving directory
&gt; `/var/tmp/portage/app-doc/doxygen-1.4.7/work/doxygen-1.4.7/doc&apos;
&gt; make: *** [docs] Error 2
&gt;  * &quot;make pdf docs&quot; failed.
&gt; &gt;&gt;&gt; Source compiled.
&gt; &gt;&gt;&gt; Test phase [not enabled]: app-doc/doxygen-1.4.7
&gt; 

Sorry. I do not try it. I will fix it few hours later.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sergey.Belyashov@gmail.com</who>
            <bug_when>2007-02-28 14:11:58 0000</bug_when>
            <thetext>Created an attachment (id=111544)
files/doxygen-1.4.7-utf8-ru.patch

Fixed patch</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>nerdboy@gentoo.org</who>
            <bug_when>2007-03-12 05:24:47 0000</bug_when>
            <thetext>Cool, patching and PDF generation is good on both of them.  Finally in the tree...</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111027</attachid>
            <date>2007-02-23 10:13 0000</date>
            <desc>files/doxygen-1.4.7-utf8-ru.patch</desc>
            <filename>doxygen-1.4.7-utf8-ru.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtcnVOIGRveHlnZW4tMS40Ljcub3JpZy9zcmMvdHJhbnNsYXRvcl9ydS5oIGRveHlnZW4t
MS40Ljcvc3JjL3RyYW5zbGF0b3JfcnUuaAotLS0gZG94eWdlbi0xLjQuNy5vcmlnL3NyYy90cmFu
c2xhdG9yX3J1LmgJMjAwNi0wNS0wNyAyMjowMjozMi4wMDAwMDAwMDAgKzA0MDAKKysrIGRveHln
ZW4tMS40Ljcvc3JjL3RyYW5zbGF0b3JfcnUuaAkyMDA3LTAyLTIzIDEzOjA0OjUxLjAwMDAwMDAw
MCArMDMwMApAQCAtMjAsNTQgKzIwLDU5IEBACiAgKiBBbmRyZXkgVi4gU3RvbHlhcm92IHJlbGVh
c2VkIEZlYiAxNCwgMjAwMQogICogQWxleGFuZHIgVi4gQ2hlbHBhbm92IDxjYXZAY3J5cHRvcHJv
LnJ1PiByZWxlYXNlZCBTZXAgMjUsIDIwMDQKICAqCi0gKiDw0skg0MXSxdfPxMUg2sHHz8zP18vP
1yDTzM/XwSBsaXN0IMkgZG9jdW1lbnRhdGlvbiDVwtLBztkuCisgKiDQn9GA0Lgg0L/QtdGA0LXQ
stC+0LTQtSDQt9Cw0LPQvtC70L7QstC60L7QsiDRgdC70L7QstCwIGxpc3Qg0LggZG9jdW1lbnRh
dGlvbiDRg9Cx0YDQsNC90YsuCiAgKgotICogTW9kdWxlcyDQxdLF18XExc7PIMvByyDH0tXQ0Nks
INTByyDLwcsgzc/E1czJIN7B3cUg19PFx88g1yDS1dPTy8/NIAotICogINDF0sXXz8TFINfT1NLF
3sHF1NPRINcgy8/O1MXL09TFIM3PxNXM0SDLwcsgxcTJzsnD2SDU0sHO08zRw8nJLCDGwcrMwQot
ICogIMkgxNIuLCDe1M8g1yDEwc7Oz80g08zV3sHFIM7FINPP19PFzSDQz8TIz8TJ1Cwg1MXNIMLP
zMXFIN7UzyAKLSAqICDTz8/U18XU09TX1cDdwdEgy8/Nwc7EwSDXIGRveHlnZW4gyc3FztXF1NPR
IFxncm91cC4KKyAqIE1vZHVsZXMg0L/QtdGA0LXQstC10LTQtdC90L4g0LrQsNC6INCz0YDRg9C/
0L/Riywg0YLQsNC6INC60LDQuiDQvNC+0LTRg9C70Lgg0YfQsNGJ0LUg0LLRgdC10LPQviDQsiDR
gNGD0YHRgdC60L7QvCAKKyAqICDQv9C10YDQtdCy0L7QtNC1INCy0YHRgtGA0LXRh9Cw0LXRgtGB
0Y8g0LIg0LrQvtC90YLQtdC60YHRgtC1INC80L7QtNGD0LvRjyDQutCw0Log0LXQtNC40L3QuNGG
0Ysg0YLRgNCw0L3RgdC70Y/RhtC40LgsINGE0LDQudC70LAKKyAqICDQuCDQtNGALiwg0YfRgtC+
INCyINC00LDQvdC90L7QvCDRgdC70YPRh9Cw0LUg0L3QtSDRgdC+0LLRgdC10Lwg0L/QvtC00YXQ
vtC00LjRgiwg0YLQtdC8INCx0L7Qu9C10LUg0YfRgtC+IAorICogINGB0L7QvtGC0LLQtdGC0YHR
gtCy0YPRjtGJ0LDRjyDQutC+0LzQsNC90LTQsCDQsiBkb3h5Z2VuINC40LzQtdC90YPQtdGC0YHR
jyBcZ3JvdXAuCiAgKiAKLSAqIPDSz9PYwsEgzsUgz9DUyc3J2snSz9fB1NggZGVjb2RlIM/C0sHN
zNHRINLF2tXM2NTB1Cwg3NTPIM3P1sXUINDSydfF09TJCi0gKiAgyyDQxdLFy8/EydLP18vFINfI
z8TBINcg1M/NIN7J08zFINLV09PLycggyc3FziDGwcrMz9cuCisgKiDQn9GA0L7RgdGM0LHQsCDQ
vdC1INC+0L/RgtC40LzQuNC30LjRgNC+0LLQsNGC0YwgZGVjb2RlINC+0LHRgNCw0LzQu9GP0Y8g
0YDQtdC30YPQu9GM0YLQsNGCLCDRjdGC0L4g0LzQvtC20LXRgiDQv9GA0LjQstC10YHRgtC4Cisg
KiAg0Log0L/QtdGA0LXQutC+0LTQuNGA0L7QstC60LUg0LLRhdC+0LTQsCDQsiDRgtC+0Lwg0YfQ
uNGB0LvQtSDRgNGD0YHRgdC60LjRhSDQuNC80LXQvSDRhNCw0LnQu9C+0LIuCiAgKgotICog79TE
wc7PINDSxcTQz97Uxc7JxSDQ0skg0MXSxdfPxMUgcmVsYXRlZCBmdW5jdGlvbnMgLSAiz9TOz9PR
3cnF09EgyyDLzMHT09UKLSAqICDG1c7Lw8nJIiwgwSDOxSAi09fR2sHOztnFIMbVzsvDyckiLCDe
1M8g18XSzs8gxM8g1MXIINDP0iDQz8vBIMXT1Ngg1M/M2MvPCi0gKiAgcmVsYXRlZCB0byBjbGFz
cywgySDOxdQgcmVsYXRlZCB0byB0ZW1wbGF0ZSwgcGFja2FnZSDJINQuxC4g8M/TzMXEzsXFCi0g
KiAg2sHNxd7BzsnFIMvB08HF1NPRIMLPzNjbyc7T1NfBIG1lbWJlci4KKyAqINCe0YLQtNCw0L3Q
viDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40LUg0L/RgNC4INC/0LXRgNC10LLQvtC00LUgcmVsYXRl
ZCBmdW5jdGlvbnMgLSAi0L7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDQutC70LDRgdGB0YMKKyAq
ICDRhNGD0L3QutGG0LjQuCIsINCwINC90LUgItGB0LLRj9C30LDQvdC90YvQtSDRhNGD0L3QutGG
0LjQuCIsINGH0YLQviDQstC10YDQvdC+INC00L4g0YLQtdGFINC/0L7RgCDQv9C+0LrQsCDQtdGB
0YLRjCDRgtC+0LvRjNC60L4KKyAqICByZWxhdGVkIHRvIGNsYXNzLCDQuCDQvdC10YIgcmVsYXRl
ZCB0byB0ZW1wbGF0ZSwgcGFja2FnZSDQuCDRgi7QtC4g0J/QvtGB0LvQtdC00L3QtdC1CisgKiAg
0LfQsNC80LXRh9Cw0L3QuNC1INC60LDRgdCw0LXRgtGB0Y8g0LHQvtC70YzRiNC40L3RgdGC0LLQ
sCBtZW1iZXIuCiAgKgotICog8M8g18/azc/Wzs/T1Mkg0NLJINDF0sXXz8TFIG1lbWJlcnMg1cvB
2tnXwcXU09Eg3szFzs/NIN7Fx88g3NTP1CBtZW1iZXIKLSAqICDR18zRxdTT0S4gCisgKiDQn9C+
INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/RgNC4INC/0LXRgNC10LLQvtC00LUgbWVtYmVycyDR
g9C60LDQt9GL0LLQsNC10YLRgdGPINGH0LvQtdC90L7QvCDRh9C10LPQviDRjdGC0L7RgiBtZW1i
ZXIKKyAqICDRj9Cy0LvRj9C10YLRgdGPLiAKICAqCi0gKiBDb21wb3VuZHMg0MXSxdfFxMXOzyDL
wcsgy8zB09PZLCDTzSDz1NLP1dPU0sHQLgorICogQ29tcG91bmRzINC/0LXRgNC10LLQtdC00LXQ
vdC+INC60LDQuiDQutC70LDRgdGB0YssINGB0Lwg0KHRgtGA0L7Rg9GB0YLRgNCw0L8uCiAgKgot
ICog79DSxcTFzMXOydEg0M/Nxd7Fzs7ZxSA/PyDR18zRwNTT0SDT0M/SztnNyS4KKyAqINCe0L/R
gNC10LTQtdC70LXQvdC40Y8g0L/QvtC80LXRh9C10L3QvdGL0LUgPz8g0Y/QstC70Y/RjtGC0YHR
jyDRgdC/0L7RgNC90YvQvNC4LgogICoKLSAqIOLMwcfPxMHSzs/T1Mk6IFZpdGFseSBBLiBSZXBp
biA8dml0YWx5QHJhZGlvLmhvcC5zdHUubmV2YS5ydT4sCi0gKiAgICDtycjBycwg58zV28XOy8/X
IDxiYm1hbkBtYWlsLnJ1PgorICog0JHQu9Cw0LPQvtC00LDRgNC90L7RgdGC0Lg6IFZpdGFseSBB
LiBSZXBpbiA8dml0YWx5QHJhZGlvLmhvcC5zdHUubmV2YS5ydT4sCisgKiAgICDQnNC40YXQsNC4
0Lsg0JPQu9GD0YjQtdC90LrQvtCyIDxiYm1hbkBtYWlsLnJ1PgogICovCiAKICNpZm5kZWYgVFJB
TlNMQVRPUl9SVV9ICiAjZGVmaW5lIFRSQU5TTEFUT1JfUlVfSAogCi1jbGFzcyBUcmFuc2xhdG9y
UnVzc2lhbiA6IHB1YmxpYyBUcmFuc2xhdG9yQWRhcHRlcl8xXzRfNgorI2luY2x1ZGUgPHF0ZXh0
Y29kZWMuaD4KKworY2xhc3MgVHJhbnNsYXRvclJ1c3NpYW4gOiBwdWJsaWMgVHJhbnNsYXRvcgkv
L0FkYXB0ZXJfMV80XzYKIHsKICAgcHJpdmF0ZToKKyAgCVFUZXh0Q29kZWMgKmNvZGVjOwogICAg
IC8qISBUaGUgZGVjb2RlKCkgaW5saW5lIGFzc3VtZXMgdGhlIHNvdXJjZSB3cml0dGVuIGluIHRo
ZSAKLSAgICAgICAgS29pOC1SIGVuY29kaW5nIChtYWludGFpbmVyIGRlcGVuZGVudCkuIAorICAg
ICAgICBjdXJyZW50IGVuY29kaW5nIChtYWludGFpbmVyIGRlcGVuZGVudCkuIAogICAgICAqLwog
ICAgIGlubGluZSBRQ1N0cmluZyBkZWNvZGUoY29uc3QgUUNTdHJpbmcgJiBzSW5wdXQpCiAgICAg
eyAKLSAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiVVNFX1dJTkRPV1NfRU5DT0RJTkciKSkKLSAg
ICAgIHsKLSAgICAgICAgcmV0dXJuIEtvaThSVG9XaW5kb3dzMTI1MShzSW5wdXQpOwotICAgICAg
fQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXR1cm4gc0lucHV0OwotICAgICAgfQor
CQlpZiAoY29kZWMpCisJICAgICAgICByZXR1cm4gY29kZWMtPmZyb21Vbmljb2RlKHNJbnB1dCk7
CisJCWVsc2UKKwkJCXJldHVybiBzSW5wdXQ7CiAgICAgfQogCiAgIHB1YmxpYzoKKyAgICBUcmFu
c2xhdG9yUnVzc2lhbigpICA6IGNvZGVjKC8qUVRleHRDb2RlYzo6Y29kZWNGb3JMb2NhbGUoKSov
IDApCisJe30KKwl+VHJhbnNsYXRvclJ1c3NpYW4oKQorCXsKKwkJZGVsZXRlIGNvZGVjOworCX0K
ICAgICAvKiEgVXNlZCBmb3IgaWRlbnRpZmljYXRpb24gb2YgdGhlIGxhbmd1YWdlLiAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgaWRMYW5ndWFnZSgpCiAgICAgeyByZXR1cm4gInJ1c3NpYW4iOyB9
CkBAIC03NSwxMTcgKzgwLDEwNiBAQAogICAgIC8qIFVzZWQgdG8gZ2V0IHRoZSBjb21tYW5kKHMp
IGZvciB0aGUgbGFuZ3VhZ2Ugc3VwcG9ydC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIGxhdGV4
TGFuZ3VhZ2VTdXBwb3J0Q29tbWFuZCgpCiAgICAgewotICAgICAgaWYgKENvbmZpZ19nZXRCb29s
KCJVU0VfV0lORE9XU19FTkNPRElORyIpKQotICAgICAgeyAKLSAgICAgICAgcmV0dXJuICJcXHVz
ZXBhY2thZ2VbY3AxMjUxXXtpbnB1dGVuY31cblxcdXNlcGFja2FnZVtydXNzaWFuXXtiYWJlbH1c
biI7IAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgeyAKLSAgICAgICAgcmV0dXJuICJcXHVz
ZXBhY2thZ2Vba29pOC1yXXtpbnB1dGVuY31cblxcdXNlcGFja2FnZVtydXNzaWFuXXtiYWJlbH1c
biI7IAotICAgICAgfQorICAgICAgICByZXR1cm4gIlxcdXNlcGFja2FnZVsiICsgUUNTdHJpbmco
Y29kZWMgPyBjb2RlYy0+bmFtZSgpIDogIlVURi04IikgKyAiXXtpbnB1dGVuY31cblxcdXNlcGFj
a2FnZVtydXNzaWFuXXtiYWJlbH1cbiI7CiAgICAgfQogCiAgICAgLyohIHJldHVybiB0aGUgbGFu
Z3VhZ2UgY2hhcnNldC4gVGhpcyB3aWxsIGJlIHVzZWQgZm9yIHRoZSBIVE1MIG91dHB1dCAqLwog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgaWRMYW5ndWFnZUNoYXJzZXQoKQogICAgIHsKLSAgICAgIGlm
IChDb25maWdfZ2V0Qm9vbCgiVVNFX1dJTkRPV1NfRU5DT0RJTkciKSkKLSAgICAgIHsgCi0gICAg
ICAgIHJldHVybiAiV2luZG93cy0xMjUxIjsgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7
IAotICAgICAgICByZXR1cm4gImtvaTgtciI7IAotICAgICAgfQorCQlpZiAoY29kZWMpCisgICAg
ICAgIAlyZXR1cm4gY29kZWMtPm5hbWUoKTsKKwkJZWxzZQorCQkJcmV0dXJuICJVVEYtOCI7CiAg
ICAgfQogCiAgICAgLy8gLS0tIExhbmd1YWdlIHRyYW5zbGF0aW9uIG1ldGhvZHMgLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAgICAgLyohIHVzZWQgaW4gdGhlIGNvbXBvdW5kIGRvY3VtZW50YXRpb24g
YmVmb3JlIGEgbGlzdCBvZiByZWxhdGVkIGZ1bmN0aW9ucy4gKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyUmVsYXRlZEZ1bmN0aW9ucygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLv1M7P09HdycXT
0SDLIMvMwdPT1SDG1c7Lw8nJIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCe0YLQvdC+0YHR
j9GJ0LjQtdGB0Y8g0Log0LrQu9Cw0YHRgdGDINGE0YPQvdC60YbQuNC4Iik7IH0KIAogICAgIC8q
ISBzdWJzY3JpcHQgZm9yIHRoZSByZWxhdGVkIGZ1bmN0aW9ucy4gKi8KICAgICB2aXJ0dWFsIFFD
U3RyaW5nIHRyUmVsYXRlZFN1YnNjcmlwdCgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCIozsUg3szF
ztkgy8zB09PBKSIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCIo0L3QtSDRh9C70LXQvdGLINC6
0LvQsNGB0YHQsCkiKTsgfQogCiAgICAgLyohIGhlYWRlciB0aGF0IGlzIHB1dCBiZWZvcmUgdGhl
IGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGZpbGVzLCBjbGFzc2VzIGFuZCBuYW1lc3BhY2VzLiAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEZXRhaWxlZERlc2NyaXB0aW9uKCkKLSAgICB7IHJl
dHVybiBkZWNvZGUoIvDPxNLPws7PxSDP0MnTwc7JxSIpOyB9CisgICAgeyByZXR1cm4gZGVjb2Rl
KCLQn9C+0LTRgNC+0LHQvdC+0LUg0L7Qv9C40YHQsNC90LjQtSIpOyB9CiAKICAgICAvKiEgaGVh
ZGVyIHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgbGlzdCBvZiB0eXBlZGVmcy4gKi8KICAgICB2aXJ0
dWFsIFFDU3RyaW5nIHRyTWVtYmVyVHlwZWRlZkRvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi79DSxcTFzMXOydEg1MnQz9ciKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J7Q
v9GA0LXQtNC10LvQtdC90LjRjyDRgtC40L/QvtCyIik7IH0KIAogICAgIC8qISBoZWFkZXIgdGhh
dCBpcyBwdXQgYmVmb3JlIHRoZSBsaXN0IG9mIGVudW1lcmF0aW9ucy4gKi8KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyTWVtYmVyRW51bWVyYXRpb25Eb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVy
biBkZWNvZGUoIvDF0sXeydPMxc7J0SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9C10YDQ
tdGH0LjRgdC70LXQvdC40Y8iKTsgfQogCiAgICAgLyohIGhlYWRlciB0aGF0IGlzIHB1dCBiZWZv
cmUgdGhlIGxpc3Qgb2YgbWVtYmVyIGZ1bmN0aW9ucy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyTWVtYmVyRnVuY3Rpb25Eb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIu3F
1M/E2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQnNC10YLQvtC00YsiKTsgfQogCiAgICAg
LyohIGhlYWRlciB0aGF0IGlzIHB1dCBiZWZvcmUgdGhlIGxpc3Qgb2YgbWVtYmVyIGF0dHJpYnV0
ZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck1lbWJlckRhdGFEb2N1bWVudGF0aW9uKCkK
ICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIp
KQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi8M/M0SIgKTsKKyAgICAgICAgcmV0
dXJuIGRlY29kZSggItCf0L7Qu9GPIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewot
ICAgICAgICByZXR1cm4gZGVjb2RlKCAi5MHOztnFIMvMwdPTwSIgKTsKKyAgICAgICAgcmV0dXJu
IGRlY29kZSggItCU0LDQvdC90YvQtSDQutC70LDRgdGB0LAiICk7CiAgICAgICB9CiAgICAgfQog
CiAgICAgLyohIHRoaXMgaXMgdGhlIHRleHQgb2YgYSBsaW5rIHB1dCBhZnRlciBicmllZiBkZXNj
cmlwdGlvbnMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck1vcmUoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi8M/E0s/CzsXFLi4uIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7QtNGA
0L7QsdC90LXQtS4uLiIpOyB9CiAKICAgICAvKiEgcHV0IGluIHRoZSBjbGFzcyBkb2N1bWVudGF0
aW9uICovCiAgICAgLyogRG9zbid0IHVzZSB3aGVuIG9wdGltaXphdGlvbiBmb3IgQyBpcyBvbi4g
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTGlzdE9mQWxsTWVtYmVycygpCiAgICAgewotICAg
ICAgcmV0dXJuIGRlY29kZSggIvDPzM7ZyiDT0MnTz8sg3szFzs/XIMvMwdPTwSIgKTsKKyAgICAg
IHJldHVybiBkZWNvZGUoICLQn9C+0LvQvdGL0Lkg0YHQv9C40YHQvtC6INGH0LvQtdC90L7QsiDQ
utC70LDRgdGB0LAiICk7CiAgICAgfQogCiAgICAgLyohIHVzZWQgYXMgdGhlIHRpdGxlIG9mIHRo
ZSAibGlzdCBvZiBhbGwgbWVtYmVycyIgcGFnZSBvZiBhIGNsYXNzICovCiAgICAgLyogRG9zbid0
IHVzZSB3aGVuIG9wdGltaXphdGlvbiBmb3IgQyBpcyBvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyTWVtYmVyTGlzdCgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIkPQydPPyyDe
zMXOz9cgy8zB09PBIiApOworICAgICAgcmV0dXJuIGRlY29kZSggIkPQv9C40YHQvtC6INGH0LvQ
tdC90L7QsiDQutC70LDRgdGB0LAiICk7CiAgICAgfQogCiAgICAgLyohIHRoaXMgaXMgdGhlIGZp
cnN0IHBhcnQgb2YgYSBzZW50ZW5jZSB0aGF0IGlzIGZvbGxvd2VkIGJ5IGEgY2xhc3MgbmFtZSAq
LwogICAgIC8qIERvc24ndCB1c2Ugd2hlbiBvcHRpbWl6YXRpb24gZm9yIEMgaXMgb24uICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0clRoaXNJc1RoZUxpc3RPZkFsbE1lbWJlcnMoKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi8M/MztnKINPQydPPyyDezMXOz9cgy8zB09PBICIpOyB9CisgICAgeyBy
ZXR1cm4gZGVjb2RlKCLQn9C+0LvQvdGL0Lkg0YHQv9C40YHQvtC6INGH0LvQtdC90L7QsiDQutC7
0LDRgdGB0LAgIik7IH0KIAogICAgIC8qISB0aGlzIGlzIHRoZSByZW1haW5kZXIgb2YgdGhlIHNl
bnRlbmNlIGFmdGVyIHRoZSBjbGFzcyBuYW1lICovCiAgICAgLyogRG9zbid0IHVzZSB3aGVuIG9w
dGltaXphdGlvbiBmb3IgQyBpcyBvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRySW5jbHVk
aW5nSW5oZXJpdGVkTWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCIsINfLzMDewdEgzsHT
zMXE1cXN2cUgydogwsHaz9fPx88gy8zB09PBIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoIiwg
0LLQutC70Y7Rh9Cw0Y8g0L3QsNGB0LvQtdC00YPQtdC80YvQtSDQuNC3INCx0LDQt9C+0LLQvtCz
0L4g0LrQu9Cw0YHRgdCwIik7IH0KIAogICAgIC8qISB0aGlzIGlzIHB1dCBhdCB0aGUgYXV0aG9y
IHNlY3Rpb25zIGF0IHRoZSBib3R0b20gb2YgbWFuIHBhZ2VzLgogICAgICAqICBwYXJhbWV0ZXIg
cyBpcyBuYW1lIG9mIHRoZSBwcm9qZWN0IG5hbWUuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0ckdlbmVyYXRlZEF1dG9tYXRpY2FsbHkoY29uc3QgY2hhciAqcykKLSAgICB7IFFDU3Ry
aW5nIHJlc3VsdD1kZWNvZGUoIuHX1M/NwdTJ3sXTy8kg08/axMHOzyBEb3h5Z2VuIik7Ci0gICAg
ICBpZiAocykgcmVzdWx0Kz1kZWNvZGUoIiDEzNEgIikrczsKLSAgICAgIHJlc3VsdCs9ZGVjb2Rl
KCIgydogydPIz8TOz8fPINTFy9PUwS4iKTsgCisgICAgeyBRQ1N0cmluZyByZXN1bHQ9ZGVjb2Rl
KCLQkNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDRgdC+0LfQtNCw0L3QviBEb3h5Z2VuIik7Cisg
ICAgICBpZiAocykgcmVzdWx0Kz1kZWNvZGUoIiDQtNC70Y8gIikrczsKKyAgICAgIHJlc3VsdCs9
ZGVjb2RlKCIg0LjQtyDQuNGB0YXQvtC00L3QvtCz0L4g0YLQtdC60YHRgtCwLiIpOyAKICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgLyohIHB1dCBhZnRlciBhbiBlbnVtIG5hbWUg
aW4gdGhlIGxpc3Qgb2YgYWxsIG1lbWJlcnMgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRW51
bU5hbWUoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi0MXSxd7J08zFzsnFIik7IH0KKyAgICB7IHJl
dHVybiBkZWNvZGUoItC/0LXRgNC10YfQuNGB0LvQtdC90LjQtSIpOyB9CiAKICAgICAvKiEgcHV0
IGFmdGVyIGFuIGVudW0gdmFsdWUgaW4gdGhlIGxpc3Qgb2YgYWxsIG1lbWJlcnMgKi8KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyRW51bVZhbHVlKCkKLSAgICB7IHJldHVybiBkZWNvZGUoItzMxc3F
ztTZINDF0sXeydPMxc7J0SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLRjdC70LXQvNC10L3R
gtGLINC/0LXRgNC10YfQuNGB0LvQtdC90LjRjyIpOyB9CiAKICAgICAvKiEgcHV0IGFmdGVyIGFu
IHVuZG9jdW1lbnRlZCBtZW1iZXIgaW4gdGhlIGxpc3Qgb2YgYWxsIG1lbWJlcnMgKi8KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyRGVmaW5lZEluKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIs/Q0sXE
xczFzs8g1yIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQvtC/0YDQtdC00LXQu9C10L3QviDQ
siIpOyB9CiAKICAgICAvLyBxdWljayByZWZlcmVuY2Ugc2VjdGlvbnMKIApAQCAtMTkzLDM5ICsx
ODcsMzkgQEAKICAgICAgKiAgY29tcG91bmRzIG9yIGZpbGVzIChzZWUgdGhlIFxcZ3JvdXAgY29t
bWFuZCkuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck1vZHVsZXMoKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi59LV0NDZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCT0YDRg9C/
0L/RiyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdlIGFzIGEgbGlu
ayB0byB0aGUgY2xhc3MgaGllcmFyY2h5ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNsYXNz
SGllcmFyY2h5KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIunF0sHSyMnRIMvMwdPTz9ciKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0JjQtdGA0LDRgNGF0LjRjyDQutC70LDRgdGB0L7QsiIpOyB9
CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdlIGFzIGEgbGluayB0byB0aGUg
bGlzdCBvZiBhbm5vdGF0ZWQgY2xhc3NlcyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJDb21w
b3VuZExpc3QoKQogICAgIHsKICAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VU
UFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLz1NLVy9TV0tkg
xMHOztnIIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0KHRgtGA0YPQutGC0YPRgNGLINC0
0LDQvdC90YvRhSIgKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgcmV0
dXJuIGRlY29kZSggIuvMwdPT2SIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZSggItCa0LvQsNGB
0YHRiyIgKTsKICAgICAgIH0KICAgICB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFj
aCBwYWdlIGFzIGEgbGluayB0byB0aGUgbGlzdCBvZiBkb2N1bWVudGVkIGZpbGVzICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckZpbGVMaXN0KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIubByszZ
Iik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCk0LDQudC70YsiKTsgfQogCiAgICAgLyohIFRo
aXMgaXMgcHV0IGFib3ZlIGVhY2ggcGFnZSBhcyBhIGxpbmsgdG8gYWxsIG1lbWJlcnMgb2YgY29t
cG91bmRzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJDb21wb3VuZE1lbWJlcnMoKQogICAg
IHsKICAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAg
ICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLwz8zRINPU0tXL1NXSIiApOworICAgICAg
ICByZXR1cm4gZGVjb2RlKCAi0J/QvtC70Y8g0YHRgtGA0YPQutGC0YPRgCIgKTsKICAgICAgIH0K
ICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIv7Mxc7ZIMvMwdPT
z9ciICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQp9C70LXQvdGLINC60LvQsNGB0YHQvtCy
IiApOwogICAgICAgfQogICAgIH0KIApAQCAtMjMzLDMzICsyMjcsMzMgQEAKICAgICAvKj8/Ki8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRmlsZU1lbWJlcnMoKQogICAgIHsKLSAgICAgIHJldHVy
biBkZWNvZGUoICLz0MnTz8sg3szFzs/XINfTxcggxsHKzM/XIiApOworICAgICAgcmV0dXJuIGRl
Y29kZSggItCh0L/QuNGB0L7QuiDRh9C70LXQvdC+0LIg0LLRgdC10YUg0YTQsNC50LvQvtCyIiAp
OwogICAgIH0KIAogICAgIC8qISBUaGlzIGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5r
IHRvIGFsbCByZWxhdGVkIHBhZ2VzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWxhdGVk
UGFnZXMoKQotICAgIC8qID8/IPfB0snBztQg0MXSxdfPxMEgIvPNLiDUwcvWxTogIiDCz8zFxSDV
xMHeztnKLCDOzyDOxSDXINrBx8/Mz9fLxSwKLSAgICAgy8HLINcgxMHOzs/NINPM1d7BxS4gKi8K
LSAgICB7IHJldHVybiBkZWNvZGUoIu/QydPBzsnRIik7IH0KKyAgICAvKiA/PyDQktCw0YDQuNCw
0L3RgiDQv9C10YDQtdCy0L7QtNCwICLQodC8LiDRgtCw0LrQttC1OiAiINCx0L7Qu9C10LUg0YPQ
tNCw0YfQvdGL0LksINC90L4g0L3QtSDQsiDQt9Cw0LPQvtC70L7QstC60LUsCisgICAgINC60LDQ
uiDQsiDQtNCw0L3QvdC+0Lwg0YHQu9GD0YfQsNC1LiAqLworICAgIHsgcmV0dXJuIGRlY29kZSgi
0J7Qv9C40YHQsNC90LjRjyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBw
YWdlIGFzIGEgbGluayB0byBhbGwgZXhhbXBsZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
ckV4YW1wbGVzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDSyc3F0tkiKTsgfQorICAgIHsgcmV0
dXJuIGRlY29kZSgi0J/RgNC40LzQtdGA0YsiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgcHV0IGFi
b3ZlIGVhY2ggcGFnZSBhcyBhIGxpbmsgdG8gdGhlIHNlYXJjaCBlbmdpbmUuICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0clNlYXJjaCgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLwz8nTyyIpOyB9
CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9C+0LjRgdC6Iik7IH0KIAogICAgIC8qISBUaGlzIGlz
IGFuIGludHJvZHVjdGlvbiB0byB0aGUgY2xhc3MgaGllcmFyY2h5LiAqLwogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJDbGFzc0hpZXJhcmNoeURlc2NyaXB0aW9uKCkKLSAgICB7IHJldHVybiBkZWNv
ZGUoIunF0sHSyMnRIMvMwdPTz9cuIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCY0LXRgNCw
0YDRhdC40Y8g0LrQu9Cw0YHRgdC+0LIuIik7IH0KIAogICAgIC8qISBUaGlzIGlzIGFuIGludHJv
ZHVjdGlvbiB0byB0aGUgbGlzdCB3aXRoIGFsbCBmaWxlcy4gKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyRmlsZUxpc3REZXNjcmlwdGlvbihib29sIGV4dHJhY3RBbGwpCiAgICAgewotICAgICAg
UUNTdHJpbmcgcmVzdWx0PSLwz8zO2cog09DJ08/LICI7Ci0gICAgICBpZiAoIWV4dHJhY3RBbGwp
IHJlc3VsdCs9IsTPy9XNxc7UydLP18HOztnIICI7Ci0gICAgICByZXN1bHQrPSLGwcrMz9cuIjsK
KyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiAiOworICAg
ICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC9
0L3Ri9GFICI7CisgICAgICByZXN1bHQrPSLRhNCw0LnQu9C+0LIuIjsKICAgICAgIHJldHVybiBk
ZWNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTI2OCwzNyArMjYyLDM3IEBACiAgICAgewogICAg
ICAgaWYgKENvbmZpZ19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsK
LSAgICAgICAgcmV0dXJuIGRlY29kZSggIvPU0tXL1NXS2SDEwc7O2cgg0yDJyCDL0sHUy8nNIM/Q
ydPBzsnFzS4iICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQodGC0YDRg9C60YLRg9GA0Ysg
0LTQsNC90L3Ri9GFINGBINC40YUg0LrRgNCw0YLQutC40Lwg0L7Qv9C40YHQsNC90LjQtdC8LiIg
KTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSgg
IuvMwdPT2SDTIMnIIMvSwdTLyc0gz9DJ08HOycXNLiIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29k
ZSggItCa0LvQsNGB0YHRiyDRgSDQuNGFINC60YDQsNGC0LrQuNC8INC+0L/QuNGB0LDQvdC40LXQ
vC4iICk7CiAgICAgICB9CiAgICAgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9u
IHRvIHRoZSBwYWdlIHdpdGggYWxsIGNsYXNzIG1lbWJlcnMuICovCiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0ckNvbXBvdW5kTWVtYmVyc0Rlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAgICB7
Ci0gICAgICAgIFFDU3RyaW5nIHJlc3VsdD0i89DJ08/LINfTxcggIjsKLSAgICAgICAgaWYoIWV4
dHJhY3RBbGwpIHJlc3VsdCs9IsTPy9XNxc7UydLP18HOztnIICI7CisgICAgICAgIFFDU3RyaW5n
IHJlc3VsdD0i0KHQv9C40YHQvtC6INCy0YHQtdGFICI7CisgICAgICAgIGlmKCFleHRyYWN0QWxs
KSByZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC90L3Ri9GFICI7CiAgICAgICAg
IGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCi0gICAgICAgICAg
cmVzdWx0Kz0i3szFzs/XINPU0tXL1NXSIMTBzs7ZyCDTzyDT09nMy8HNySDOwSAiOworICAgICAg
ICAgIHJlc3VsdCs9ItGH0LvQtdC90L7QsiDRgdGC0YDRg9C60YLRg9GAINC00LDQvdC90YvRhSDR
gdC+INGB0YHRi9C70LrQsNC80Lgg0L3QsCAiOwogICAgICAgICBlbHNlCi0gICAgICAgICAgcmVz
dWx0Kz0i3szFzs/XIMvMwdPTz9cg088g09PZzMvBzckgzsEgIjsKKyAgICAgICAgICByZXN1bHQr
PSLRh9C70LXQvdC+0LIg0LrQu9Cw0YHRgdC+0LIg0YHQviDRgdGB0YvQu9C60LDQvNC4INC90LAg
IjsKICAgICAgICAgaWYoIWV4dHJhY3RBbGwpCiAgICAgICAgIHsKICAgICAgICAgICBpZiAoQ29u
ZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIpKQotICAgICAgICAgICAgcmVzdWx0
Kz0ixM/L1c3FztTBw8nAINDPINPU0tXL1NXSxSDEzNEgy8HWxM/HzyDezMXOwS4iOworICAgICAg
ICAgICAgcmVzdWx0Kz0i0LTQvtC60YPQvNC10L3RgtCw0YbQuNGOINC/0L4g0YHRgtGA0YPQutGC
0YPRgNC1INC00LvRjyDQutCw0LbQtNC+0LPQviDRh9C70LXQvdCwLiI7CiAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVzdWx0Kz0ixM/L1c3FztTBw8nAINDPIMvMwdPT1SDEzNEgy8HWxM/H
zyDezMXOwS4iOworICAgICAgICAgICAgcmVzdWx0Kz0i0LTQvtC60YPQvNC10L3RgtCw0YbQuNGO
INC/0L4g0LrQu9Cw0YHRgdGDINC00LvRjyDQutCw0LbQtNC+0LPQviDRh9C70LXQvdCwLiI7CiAg
ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgaWYgKENvbmZpZ19n
ZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKLSAgICAgICAgICAgIHJlc3VsdCArPSAi
09TS1cvU1dLZIjsKKyAgICAgICAgICAgIHJlc3VsdCArPSAi0YHRgtGA0YPQutGC0YPRgNGLIjsK
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgKz0gIsvMwdPT2SI7Ci0gICAgICAg
ICAgcmVzdWx0Kz0iLCDLIMvP1M/S2c0gz87JINDSyc7BxMzF1sHULiI7CisgICAgICAgICAgICBy
ZXN1bHQgKz0gItC60LvQsNGB0YHRiyI7CisgICAgICAgICAgcmVzdWx0Kz0iLCDQuiDQutC+0YLQ
vtGA0YvQvCDQvtC90Lgg0L/RgNC40L3QsNC00LvQtdC20LDRgi4iOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBkZWNvZGUoIHJlc3VsdCApOwogICAgIH0KQEAgLTMwNiw1NiArMzAwLDU2IEBA
CiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBwYWdlIHdpdGggYWxsIGZp
bGUgbWVtYmVycy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRmlsZU1lbWJlcnNEZXNjcmlw
dGlvbihib29sIGV4dHJhY3RBbGwpCiAgICAgewotICAgICAgUUNTdHJpbmcgcmVzdWx0PSLz0MnT
z8sg19PFyCAiOwotICAgICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQrPSLEz8vVzcXO1MnSz9fB
zs7ZyCAiOworICAgICAgUUNTdHJpbmcgcmVzdWx0PSLQodC/0LjRgdC+0Log0LLRgdC10YUgIjsK
KyAgICAgIGlmICghZXh0cmFjdEFsbCkgcmVzdWx0Kz0i0LTQvtC60YPQvNC10L3RgtC40YDQvtCy
0LDQvdC90YvRhSAiOwogCiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBV
VF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXN1bHQrPSLG1c7Lw8nKLCDQxdLFzcXOztnI
LCDNwcvSz8/Q0sXExczFzsnKLCAiCi0gICAgICAgICAgICAgICAgItDF0sXeydPMxc7JyiDJIM/Q
0sXExczFzsnKINTJ0M/XIjsKKyAgICAgICAgcmVzdWx0Kz0i0YTRg9C90LrRhtC40LksINC/0LXR
gNC10LzQtdC90L3Ri9GFLCDQvNCw0LrRgNC+0L7Qv9GA0LXQtNC10LvQtdC90LjQuSwgIgorICAg
ICAgICAgICAgICAgICLQv9C10YDQtdGH0LjRgdC70LXQvdC40Lkg0Lgg0L7Qv9GA0LXQtNC10LvQ
tdC90LjQuSDRgtC40L/QvtCyIjsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAg
ICAgcmVzdWx0Kz0i3szFzs/XIMbByszP1yAiOworICAgICAgICByZXN1bHQrPSLRh9C70LXQvdC+
0LIg0YTQsNC50LvQvtCyICI7CiAgICAgICB9Ci0gICAgICByZXN1bHQrPSIg088g09PZzMvBzckg
zsEgIjsKKyAgICAgIHJlc3VsdCs9IiDRgdC+INGB0YHRi9C70LrQsNC80Lgg0L3QsCAiOwogICAg
ICAgaWYgKGV4dHJhY3RBbGwpCi0gICAgICAgIHJlc3VsdCs9IsbByszZLCDLIMvP1M/S2c0gz87J
INDSyc7BxMzF1sHULiI7CisgICAgICAgIHJlc3VsdCs9ItGE0LDQudC70YssINC6INC60L7RgtC+
0YDRi9C8INC+0L3QuCDQv9GA0LjQvdCw0LTQu9C10LbQsNGCLiI7CiAgICAgICBlbHNlCi0gICAg
ICAgIHJlc3VsdCs9IsTPy9XNxc7UwcPJwC4iOworICAgICAgICByZXN1bHQrPSLQtNC+0LrRg9C8
0LXQvdGC0LDRhtC40Y4uIjsKICAgICAgIHJldHVybiBkZWNvZGUoIHJlc3VsdCApOwogICAgIH0K
IAogICAgIC8qISBUaGlzIGlzIGFuIGludHJvZHVjdGlvbiB0byB0aGUgcGFnZSB3aXRoIHRoZSBs
aXN0IG9mIGFsbCBleGFtcGxlcyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFeGFtcGxlc0Rl
c2NyaXB0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDPzM7ZyiDT0MnTz8sg0NLJzcXSz9cu
Iik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0L/R
gNC40LzQtdGA0L7Qsi4iKTsgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRv
IHRoZSBwYWdlIHdpdGggdGhlIGxpc3Qgb2YgcmVsYXRlZCBwYWdlcyAqLwogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJSZWxhdGVkUGFnZXNEZXNjcmlwdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2Rl
KCLwz8zO2cog09DJ08/LIMTP0M/MzsnUxczYztnIIM/QydPBzsnKLiIpOyB9CisgICAgeyByZXR1
cm4gZGVjb2RlKCLQn9C+0LvQvdGL0Lkg0YHQv9C40YHQvtC6INC00L7Qv9C+0LvQvdC40YLQtdC7
0YzQvdGL0YUg0L7Qv9C40YHQsNC90LjQuS4iKTsgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50
cm9kdWN0aW9uIHRvIHRoZSBwYWdlIHdpdGggdGhlIGxpc3Qgb2YgY2xhc3MvZmlsZSBncm91cHMg
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTW9kdWxlc0Rlc2NyaXB0aW9uKCkKLSAgICB7IHJl
dHVybiBkZWNvZGUoIvDPzM7ZyiDT0MnTz8sgx9LV0NAuIik7IH0KKyAgICB7IHJldHVybiBkZWNv
ZGUoItCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0LPRgNGD0L/Qvy4iKTsgfQogCiAgICAgLy8g
aW5kZXggdGl0bGVzICh0aGUgcHJvamVjdCBuYW1lIGlzIHByZXBlbmRlZCBmb3IgdGhlc2UpIAog
CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIEhUTUwgYXMgdGhlIHRpdGxlIG9mIGluZGV4Lmh0
bWwuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRvY3VtZW50YXRpb24oKQotICAgIHsgcmV0
dXJuIGRlY29kZSgi5M/L1c3FztTBw8nRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCU0L7Q
utGD0LzQtdC90YLQsNGG0LjRjyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIExhVGVY
IGFzIHRoZSB0aXRsZSBvZiB0aGUgY2hhcHRlciB3aXRoIHRoZSAKICAgICAgKiBpbmRleCBvZiBh
bGwgZ3JvdXBzLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNb2R1bGVJbmRleCgp
Ci0gICAgeyByZXR1cm4gZGVjb2RlKCLhzMbB18nUztnKINXLwdrB1MXM2CDH0tXQ0CIpOyB9Cisg
ICAgeyByZXR1cm4gZGVjb2RlKCLQkNC70YTQsNCy0LjRgtC90YvQuSDRg9C60LDQt9Cw0YLQtdC7
0Ywg0LPRgNGD0L/QvyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIExhVGVYIGFzIHRo
ZSB0aXRsZSBvZiB0aGUgY2hhcHRlciB3aXRoIHRoZSAKICAgICAgKiBjbGFzcyBoaWVyYXJjaHku
CiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckhpZXJhcmNoaWNhbEluZGV4KCkKLSAg
ICB7IHJldHVybiBkZWNvZGUoIunF0sHSyMnexdPLycog09DJ08/LIMvMwdPTz9ciKTsgfQorICAg
IHsgcmV0dXJuIGRlY29kZSgi0JjQtdGA0LDRgNGF0LjRh9C10YHQutC40Lkg0YHQv9C40YHQvtC6
INC60LvQsNGB0YHQvtCyIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMg
dGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIHdpdGggdGhlIAogICAgICAqIGFubm90YXRlZCBjb21w
b3VuZCBpbmRleC4KQEAgLTM2NCwxMSArMzU4LDExIEBACiAgICAgewogICAgICAgaWYgKENvbmZp
Z19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAgICAgICAgcmV0
dXJuIGRlY29kZSggIuHMxsHXydTO2cog1cvB2sHUxczYINPU0tXL1NXSIMTBzs7ZyCIgKTsKKyAg
ICAgICAgcmV0dXJuIGRlY29kZSggItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC1
0LvRjCDRgdGC0YDRg9C60YLRg9GAINC00LDQvdC90YvRhSIgKTsKICAgICAgIH0KICAgICAgIGVs
c2UKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIuHMxsHXydTO2cog1cvB2sHUxczY
IMvMwdPTz9ciICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQkNC70YTQsNCy0LjRgtC90YvQ
uSDRg9C60LDQt9Cw0YLQtdC70Ywg0LrQu9Cw0YHRgdC+0LIiICk7CiAgICAgICB9CiAgICAgfQog
CkBAIC0zNzYsMTMgKzM3MCwxMyBAQAogICAgICAqIGxpc3Qgb2YgYWxsIGZpbGVzLgogICAgICAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlSW5kZXgoKQotICAgIHsgcmV0dXJuIGRlY29k
ZSggIvPQydPPyyDGwcrMz9ciICk7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoICLQodC/0LjRgdC+
0Log0YTQsNC50LvQvtCyIiApOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIExhVGVYIGFz
IHRoZSB0aXRsZSBvZiB0aGUgY2hhcHRlciBjb250YWluaW5nCiAgICAgICogIHRoZSBkb2N1bWVu
dGF0aW9uIG9mIGFsbCBncm91cHMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck1v
ZHVsZURvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi59LV0NDZIik7IH0KKyAg
ICB7IHJldHVybiBkZWNvZGUoItCT0YDRg9C/0L/RiyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1
c2VkIGluIExhVGVYIGFzIHRoZSB0aXRsZSBvZiB0aGUgY2hhcHRlciBjb250YWluaW5nCiAgICAg
ICogIHRoZSBkb2N1bWVudGF0aW9uIG9mIGFsbCBjbGFzc2VzLCBzdHJ1Y3RzIGFuZCB1bmlvbnMu
CkBAIC0zOTEsMTEgKzM4NSwxMSBAQAogICAgIHsKICAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgi
T1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUo
ICLz1NLVy9TV0tkgxMHOztnIIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0KHRgtGA0YPQ
utGC0YPRgNGLINC00LDQvdC90YvRhSIgKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsK
LSAgICAgICAgcmV0dXJuIGRlY29kZSggIuvMwdPT2SIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29k
ZSggItCa0LvQsNGB0YHRiyIgKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTQwMywxMDEgKzM5Nywx
MDEgQEAKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIGZpbGVzLgogICAgICAqLwog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4g
ZGVjb2RlKCLmwcrM2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQpNCw0LnQu9GLIik7IH0K
IAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFw
dGVyIGNvbnRhaW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIGV4YW1wbGVz
LgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFeGFtcGxlRG9jdW1lbnRhdGlvbigp
Ci0gICAgeyByZXR1cm4gZGVjb2RlKCLw0snNxdLZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUo
ItCf0YDQuNC80LXRgNGLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMg
dGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIGNvbnRhaW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50
YXRpb24gb2YgYWxsIHJlbGF0ZWQgcGFnZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0clBhZ2VEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvTFzcHUyd7F08vJ
xSDP0MnTwc7J0SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQotC10LzQsNGC0LjRh9C10YHQ
utC40LUg0L7Qv9C40YHQsNC90LjRjyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIExh
VGVYIGFzIHRoZSB0aXRsZSBvZiB0aGUgZG9jdW1lbnQgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyUmVmZXJlbmNlTWFudWFsKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIu/HzMHXzMXOycUiKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J7Qs9C70LDQstC70LXQvdC40LUiKTsgfQogCiAgICAg
LyohIFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUgYXMgYSBoZWFk
ZXIgYmVmb3JlIHRoZSAKICAgICAgKiAgbGlzdCBvZiBkZWZpbmVzCiAgICAgICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckRlZmluZXMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi7cHL0s/T2SIp
OyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQnNCw0LrRgNC+0YHRiyIpOyB9CiAKICAgICAvKiEg
VGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBi
ZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAgICAgKi8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRnVuY1Byb3RvcygpCi0gICAgeyByZXR1cm4gZGVjb2Rl
KCLw0s/Uz9TJ0NkgxtXOy8PJyiIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9GA0L7RgtC+
0YLQuNC/0Ysg0YTRg9C90LrRhtC40LkiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUgYXMgYSBoZWFkZXIgYmVmb3JlIHRoZSAKICAgICAg
KiAgbGlzdCBvZiB0eXBlZGVmcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJUeXBl
ZGVmcygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLv0NLFxMXMxc7J0SDUydDP1yIpOyB9CisgICAg
eyByZXR1cm4gZGVjb2RlKCLQntC/0YDQtdC00LXQu9C10L3QuNGPINGC0LjQv9C+0LIiKTsgfQog
CiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUgYXMg
YSBoZWFkZXIgYmVmb3JlIHRoZSAKICAgICAgKiAgbGlzdCBvZiBlbnVtZXJhdGlvbnMKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRW51bWVyYXRpb25zKCkKLSAgICB7IHJldHVybiBk
ZWNvZGUoIvDF0sXeydPMxc7J0SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9C10YDQtdGH
0LjRgdC70LXQvdC40Y8iKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBvZiBhIGZpbGUgYXMgYSBoZWFkZXIgYmVmb3JlIHRoZSAKICAgICAgKiAgbGlzdCBv
ZiAoZ2xvYmFsKSBmdW5jdGlvbnMKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRnVu
Y3Rpb25zKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIubVzsvDyckiKTsgfQorICAgIHsgcmV0dXJu
IGRlY29kZSgi0KTRg9C90LrRhtC40LgiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUgYXMgYSBoZWFkZXIgYmVmb3JlIHRoZSAKICAgICAg
KiAgbGlzdCBvZiAoZ2xvYmFsKSB2YXJpYWJsZXMKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyVmFyaWFibGVzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDF0sXNxc7O2cUiKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0J/QtdGA0LXQvNC10L3QvdGL0LUiKTsgfQogCiAgICAgLyoh
IFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUgYXMgYSBoZWFkZXIg
YmVmb3JlIHRoZSAKICAgICAgKiAgbGlzdCBvZiAoZ2xvYmFsKSB2YXJpYWJsZXMKICAgICAgKi8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRW51bWVyYXRpb25WYWx1ZXMoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi/MzFzcXO1Nkg0MXSxd7J08zFzsnKIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUo
ItCt0LvQtdC80LXQvdGC0Ysg0L/QtdGA0LXRh9C40YHQu9C10L3QuNC5Iik7IH0KIAogICAgIC8q
ISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBmaWxlIGJlZm9yZSB0aGUg
bGlzdCBvZgogICAgICAqICBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3IgZGVmaW5lcwogICAgICAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEZWZpbmVEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJl
dHVybiBkZWNvZGUoIu3By9LP09kiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JzQsNC60YDQ
vtGB0YsiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBv
ZiBhIGZpbGUvbmFtZXNwYWNlIGJlZm9yZSB0aGUgbGlzdCAKICAgICAgKiAgb2YgZG9jdW1lbnRh
dGlvbiBibG9ja3MgZm9yIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAgICAgKi8KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyRnVuY3Rpb25Qcm90b3R5cGVEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVy
biBkZWNvZGUoIvDSz9TP1MnQ2SDG1c7Lw8nKIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf
0YDQvtGC0L7RgtC40L/RiyDRhNGD0L3QutGG0LjQuSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1
c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1lc3BhY2UgYmVmb3JlIHRoZSBs
aXN0IAogICAgICAqICBvZiBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3IgdHlwZWRlZnMKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVHlwZWRlZkRvY3VtZW50YXRpb24oKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi9MnQ2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQotC40L/RiyIp
OyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmls
ZS9uYW1lc3BhY2UgYmVmb3JlIHRoZSBsaXN0IAogICAgICAqICBvZiBkb2N1bWVudGF0aW9uIGJs
b2NrcyBmb3IgZW51bWVyYXRpb24gdHlwZXMKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyRW51bWVyYXRpb25UeXBlRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLw
xdLF3snTzMXOydEiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/QtdGA0LXRh9C40YHQu9C1
0L3QuNGPIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24g
b2YgYSBmaWxlL25hbWVzcGFjZSBiZWZvcmUgdGhlIGxpc3QgCiAgICAgICogIG9mIGRvY3VtZW50
YXRpb24gYmxvY2tzIGZvciBmdW5jdGlvbnMKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyRnVuY3Rpb25Eb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIubVzsvDycki
KTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0KTRg9C90LrRhtC40LgiKTsgfQogCiAgICAgLyoh
IFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUvbmFtZXNwYWNlIGJl
Zm9yZSB0aGUgbGlzdCAKICAgICAgKiAgb2YgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm9yIHZhcmlh
YmxlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJWYXJpYWJsZURvY3VtZW50YXRp
b24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8MXSxc3Fzs7ZxSIpOyB9CisgICAgeyByZXR1cm4g
ZGVjb2RlKCLQn9C10YDQtdC80LXQvdC90YvQtSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2Vk
IGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1lc3BhY2UvZ3JvdXAgYmVmb3JlIAog
ICAgICAqICB0aGUgbGlzdCBvZiBsaW5rcyB0byBkb2N1bWVudGVkIGNvbXBvdW5kcwpAQCAtNTA2
LDExICs1MDAsMTEgQEAKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpF
X09VVFBVVF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi89TS1cvU
1dLZIMTBzs7ZyCIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZSggItCh0YLRgNGD0LrRgtGD0YDR
iyDQtNCw0L3QvdGL0YUiICk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7IAotICAgICAg
ICByZXR1cm4gZGVjb2RlKCAi68zB09PZIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JrQ
u9Cw0YHRgdGLIiApOwogICAgICAgfQogCiAgICAgfQpAQCAtNTIzLDYwICs1MTcsNjAgQEAKICAg
ICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyR2VuZXJhdGVkQXQoY29uc3QgY2hhciAqZGF0
ZSxjb25zdCBjaGFyICpwcm9qTmFtZSkKICAgICB7IAotICAgICAgUUNTdHJpbmcgcmVzdWx0PWRl
Y29kZSgi5M/L1c3FztTBw8nRICIpOwotICAgICAgaWYgKHByb2pOYW1lKSByZXN1bHQrPWRlY29k
ZSgi0M8gIikrcHJvak5hbWU7Ci0gICAgICByZXN1bHQrPWRlY29kZSgiLiDwz9PMxcTOycUgydrN
xc7FzsnROiAiKStkYXRlOwotICAgICAgcmVzdWx0Kz1kZWNvZGUoIi4g88/axMHOzyDTydPUxc3P
yiIpOworICAgICAgUUNTdHJpbmcgcmVzdWx0PWRlY29kZSgi0JTQvtC60YPQvNC10L3RgtCw0YbQ
uNGPICIpOworICAgICAgaWYgKHByb2pOYW1lKSByZXN1bHQrPWRlY29kZSgi0L/QviAiKStwcm9q
TmFtZTsKKyAgICAgIHJlc3VsdCs9ZGVjb2RlKCIuINCf0L7RgdC70LXQtNC90LjQtSDQuNC30LzQ
tdC90LXQvdC40Y86ICIpK2RhdGU7CisgICAgICByZXN1bHQrPWRlY29kZSgiLiDQodC+0LfQtNCw
0L3QviDRgdC40YHRgtC10LzQvtC5Iik7CiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAvKiEgVGhpcyBpcyBwYXJ0IG9mIHRoZSBzZW50ZW5jZSB1c2VkIGluIHRoZSBzdGFuZGFyZCBm
b290ZXIgb2YgZWFjaCBwYWdlLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJXcml0
dGVuQnkoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIuHX1M/SOiIpOworICAgICAgcmV0
dXJuIGRlY29kZSgi0JDQstGC0L7RgDoiKTsKICAgICB9CiAKICAgICAvKiEgdGhpcyB0ZXh0IGlz
IHB1dCBiZWZvcmUgYSBjbGFzcyBkaWFncmFtICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNs
YXNzRGlhZ3JhbShjb25zdCBjaGFyICpjbE5hbWUpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29k
ZSgi59LBxiDOwdPMxcTP18HOydE6IikrY2xOYW1lKyI6IjsKKyAgICAgIHJldHVybiBkZWNvZGUo
ItCT0YDQsNGEINC90LDRgdC70LXQtNC+0LLQsNC90LjRjzoiKStjbE5hbWUrIjoiOwogICAgIH0K
IAogICAgIC8qISB0aGlzIHRleHQgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFxcaW50ZXJuYWwgY29t
bWFuZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGb3JJbnRlcm5hbFVzZU9u
bHkoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi9M/M2MvPIMTM0SDXztXU0sXOzsXHzyDJ09DPzNja
z9fBzsnRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCi0L7Qu9GM0LrQviDQtNC70Y8g0LLQ
vdGD0YLRgNC10L3QvdC10LPQviDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyIpOyB9CiAKICAg
ICAvKiEgdGhpcyB0ZXh0IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBcXHdhcm5pbmcgY29tbWFuZCBp
cyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJXYXJuaW5nKCkKLSAgICB7IHJldHVy
biBkZWNvZGUoIvDSxcTV0NLF1sTFzsnRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0YDQ
tdC00YPQv9GA0LXQttC00LXQvdC40Y8iKTsgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBnZW5l
cmF0ZWQgd2hlbiB0aGUgXFx2ZXJzaW9uIGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyVmVyc2lvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL3xdLTydEiKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0JLQtdGA0YHQuNGPIik7IH0KIAogICAgIC8qISB0aGlzIHRl
eHQgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFxcZGF0ZSBjb21tYW5kIGlzIHVzZWQuICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckRhdGUoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi5MHUwSIpOyB9
CisgICAgeyByZXR1cm4gZGVjb2RlKCLQlNCw0YLQsCIpOyB9CiAKICAgICAvKiEgdGhpcyB0ZXh0
IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBcXHJldHVybiBjb21tYW5kIGlzIHVzZWQuICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0clJldHVybnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi98/a19LB
3cHF1CIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQktC+0LfQstGA0LDRidCw0LXRgiIpOyB9
CiAKICAgICAvKiEgdGhpcyB0ZXh0IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBcXHNhIGNvbW1hbmQg
aXMgdXNlZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2VlQWxzbygpCi0gICAgeyByZXR1
cm4gZGVjb2RlKCLzzS4g1MHL1sUiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0KHQvC4g0YLQ
sNC60LbQtSIpOyB9CiAKICAgICAvKiEgdGhpcyB0ZXh0IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBc
XHBhcmFtIGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFyYW1l
dGVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLh0sfVzcXO1NkiKTsgfQorICAgIHsgcmV0dXJu
IGRlY29kZSgi0JDRgNCz0YPQvNC10L3RgtGLIik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMg
Z2VuZXJhdGVkIHdoZW4gdGhlIFxcZXhjZXB0aW9uIGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyRXhjZXB0aW9ucygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLp08vM
wN7FzsnRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCY0YHQutC70Y7Rh9C10L3QuNGPIik7
IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgdXNlZCBpbiB0aGUgdGl0bGUgcGFnZSBvZiBhIExh
VGVYIGRvY3VtZW50LiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJHZW5lcmF0ZWRCeSgpCi0g
ICAgeyByZXR1cm4gZGVjb2RlKCLzz9rEwc7PINPJ09TFzc/KIik7IH0KKyAgICB7IHJldHVybiBk
ZWNvZGUoItCh0L7Qt9C00LDQvdC+INGB0LjRgdGC0LXQvNC+0LkiKTsgfQogICAgIAogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KIC8vIG5ldyBzaW5jZSAwLjQ5LTk5MDMwNyAKQEAgLTU4NCwxNCArNTc4LDE0
IEBACiAgICAgCiAgICAgLyohIHVzZWQgYXMgdGhlIHRpdGxlIG9mIHBhZ2UgY29udGFpbmluZyBh
bGwgdGhlIGluZGV4IG9mIGFsbCBuYW1lc3BhY2VzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcg
dHJOYW1lc3BhY2VMaXN0KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDSz9PU0sHO09TXwSDJzcXO
Iik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0YDQvtGB0YLRgNCw0L3RgdGC0LLQsCDQuNC8
0LXQvSIpOyB9CiAKICAgICAvKiEgdXNlZCBhcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIG5hbWVz
cGFjZSBsaXN0ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZUxpc3REZXNjcmlw
dGlvbihib29sIGV4dHJhY3RBbGwpCiAgICAgewotICAgICAgUUNTdHJpbmcgcmVzdWx0PSLwz8zO
2cog09DJ08/LICI7Ci0gICAgICBpZiAoIWV4dHJhY3RBbGwpIHJlc3VsdCs9IsTPy9XNxc7UydLP
18HOztnIICI7Ci0gICAgICByZXN1bHQrPSLQ0s/T1NLBztPU1yDJzcXOLiI7CisgICAgICBRQ1N0
cmluZyByZXN1bHQ9ItCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0LogIjsKKyAgICAgIGlmICghZXh0
cmFjdEFsbCkgcmVzdWx0Kz0i0LTQvtC60YPQvNC10L3RgtC40YDQvtCy0LDQvdC90YvRhSAiOwor
ICAgICAgcmVzdWx0Kz0i0L/RgNC+0YHRgtGA0LDQvdGB0YLQsiDQuNC80LXQvS4iOwogICAgICAg
cmV0dXJuIGRlY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtNTk5LDcgKzU5Myw3IEBACiAgICAg
ICogIGZyaWVuZHMgb2YgYSBjbGFzcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJG
cmllbmRzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIuTS1drY0SIpOyB9CisgICAgeyByZXR1cm4g
ZGVjb2RlKCLQlNGA0YPQt9GM0Y8iKTsgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gbmV3IHNp
bmNlIDAuNDktOTkwNDA1CkBAIC02MDksOCArNjAzLDggQEAKICAgICAgKiByZWxhdGVkIGNsYXNz
ZXMgCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlbGF0ZWRGdW5jdGlvbkRvY3Vt
ZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi5M/L1c3FztTBw8nRINDPIMTS1drY0c0g
y8zB09PBIMkgxtXOy8PJ0c0sIM/Uzs/Oz9PR3cnN09EiCi0gICAgICAgICIgyyDLzMHT09UiKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JTQvtC60YPQvNC10L3RgtCw0YbQuNGPINC/0L4g0LTR
gNGD0LfRjNGP0Lwg0LrQu9Cw0YHRgdCwINC4INGE0YPQvdC60YbQuNGP0LwsINC+0YLQvdC+0L3Q
vtGB0Y/RidC40LzRgdGPIgorICAgICAgICAiINC6INC60LvQsNGB0YHRgyIpOyB9CiAgICAgCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogLy8gbmV3IHNpbmNlIDAuNDktOTkwNDI1CkBAIC02MjQsMjkgKzYx
OCwyOSBAQAogICAgICAgUUNTdHJpbmcgcmVzdWx0OwogICAgICAgaWYgKGlzVGVtcGxhdGUpIAog
ICAgICAgewotICAgICAgICByZXN1bHQ9IvvBwszPziAiOworICAgICAgICByZXN1bHQ9ItCo0LDQ
sdC70L7QvSAiOwogICAgICAgICBzd2l0Y2goY29tcFR5cGUpCiAgICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIENsYXNzRGVmOjpDbGFzczogIHJlc3VsdCs9IsvMwdPTwSI7IGJyZWFrOwotICAgICAg
ICAgIGNhc2UgQ2xhc3NEZWY6OlN0cnVjdDogcmVzdWx0Kz0i09TS1cvU1dLZIjsgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBDbGFzc0RlZjo6VW5pb246ICByZXN1bHQrPSLPwt/FxMnOxc7J0SI7IGJy
ZWFrOwotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkludGVyZmFjZTogIHJlc3VsdCs9IsnO1MXS
xsXK08EiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpQcm90b2NvbDogICByZXN1
bHQrPSJwcm90b2NvbCI7IGJyZWFrOyAvLyB0cmFuc2xhdGUgbWUhCi0gICAgICAgICAgY2FzZSBD
bGFzc0RlZjo6Q2F0ZWdvcnk6ICAgcmVzdWx0Kz0iY2F0ZWdvcnkiOyBicmVhazsgLy8gdHJhbnNs
YXRlIG1lIQotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4Y2VwdGlvbjogIHJlc3VsdCs9IsnT
y8zA3sXOydEiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpDbGFzczogIHJlc3Vs
dCs9ItC60LvQsNGB0YHQsCI7IGJyZWFrOworICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlN0cnVj
dDogcmVzdWx0Kz0i0YHRgtGA0YPQutGC0YPRgNGLIjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBD
bGFzc0RlZjo6VW5pb246ICByZXN1bHQrPSLQvtCx0YrQtdC00LjQvdC10L3QuNGPIjsgYnJlYWs7
CisgICAgICAgICAgY2FzZSBDbGFzc0RlZjo6SW50ZXJmYWNlOiAgcmVzdWx0Kz0i0LjQvdGC0LXR
gNGE0LXQudGB0LAiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpQcm90b2NvbDog
ICByZXN1bHQrPSLQv9GA0L7RgtC+0LrQvtC7IjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBDbGFz
c0RlZjo6Q2F0ZWdvcnk6ICAgcmVzdWx0Kz0i0LrQsNGC0LXQs9C+0YDQuNGPIjsgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBDbGFzc0RlZjo6RXhjZXB0aW9uOiAgcmVzdWx0Kz0i0LjRgdC60LvRjtGH
0LXQvdC40Y8iOyBicmVhazsKICAgICAgICAgfQogICAgICAgfQogICAgICAgZWxzZQogICAgICAg
ewogICAgICAgICBzd2l0Y2goY29tcFR5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIENs
YXNzRGVmOjpDbGFzczogIHJlc3VsdCs9IuvMwdPTIjsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBD
bGFzc0RlZjo6U3RydWN0OiByZXN1bHQrPSLz1NLVy9TV0sEiOyBicmVhazsKLSAgICAgICAgICBj
YXNlIENsYXNzRGVmOjpVbmlvbjogIHJlc3VsdCs9Iu/C38XEyc7FzsnFIjsgYnJlYWs7Ci0gICAg
ICAgICAgY2FzZSBDbGFzc0RlZjo6SW50ZXJmYWNlOiAgcmVzdWx0Kz0i6c7UxdLGxcrTIjsgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBDbGFzc0RlZjo6UHJvdG9jb2w6ICAgcmVzdWx0Kz0icHJvdG9j
b2wiOyBicmVhazsgLy8gdHJhbnNsYXRlIG1lIQotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkNh
dGVnb3J5OiAgIHJlc3VsdCs9ImNhdGVnb3J5IjsgYnJlYWs7IC8vIHRyYW5zbGF0ZSBtZSEKLSAg
ICAgICAgICBjYXNlIENsYXNzRGVmOjpFeGNlcHRpb246ICByZXN1bHQrPSLp08vMwN7FzsnFIjsg
YnJlYWs7CisgICAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2xhc3M6ICByZXN1bHQrPSLQmtC70LDR
gdGBIjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiByZXN1bHQrPSLQ
odGC0YDRg9C60YLRg9GA0LAiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpVbmlv
bjogIHJlc3VsdCs9ItCe0LHRitC10LTQuNC90LXQvdC40LUiOyBicmVhazsKKyAgICAgICAgICBj
YXNlIENsYXNzRGVmOjpJbnRlcmZhY2U6ICByZXN1bHQrPSLQmNC90YLQtdGA0YTQtdC50YEiOyBi
cmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpQcm90b2NvbDogICByZXN1bHQrPSLQn9GA
0L7RgtC+0LrQvtC7IjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2F0ZWdvcnk6
ICAgcmVzdWx0Kz0i0JrQsNGC0LXQs9C+0YDQuNGPIjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBD
bGFzc0RlZjo6RXhjZXB0aW9uOiAgcmVzdWx0Kz0i0JjRgdC60LvRjtGH0LXQvdC40LUiOyBicmVh
azsKICAgICAgICAgfQogICAgICAgfQogICAgICAgcmVzdWx0Kz0iICI7CkBAIC02NTYsMzUgKzY1
MCwzNSBAQAogICAgIC8qISB1c2VkIGFzIHRoZSB0aXRsZSBvZiB0aGUgSFRNTCBwYWdlIG9mIGEg
ZmlsZSAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlUmVmZXJlbmNlKGNvbnN0IGNoYXIg
KmZpbGVOYW1lKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIubByswgIikrZmlsZU5hbWU7
CisgICAgICByZXR1cm4gZGVjb2RlKCLQpNCw0LnQuyAiKStmaWxlTmFtZTsKICAgICB9CiAKICAg
ICAvKiEgdXNlZCBhcyB0aGUgdGl0bGUgb2YgdGhlIEhUTUwgcGFnZSBvZiBhIG5hbWVzcGFjZSAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJOYW1lc3BhY2VSZWZlcmVuY2UoY29uc3QgY2hhciAq
bmFtZXNwYWNlTmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLw0s/T1NLBztPU188g
yc3FziAiKStuYW1lc3BhY2VOYW1lOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/RgNC+0YHRgtGA
0LDQvdGB0YLQstC+INC40LzQtdC9ICIpK25hbWVzcGFjZU5hbWU7CiAgICAgfQogICAgIAogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJQdWJsaWNNZW1iZXJzKCkKLSAgICB7IHJldHVybiBkZWNvZGUo
Iu/Uy9LZ1NnFIN7Mxc7ZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCe0YLQutGA0YvRgtGL
0LUg0YfQu9C10L3RiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clB1YmxpY1Nsb3RzKCkK
LSAgICB7IHJldHVybiBkZWNvZGUoIu/Uy9LZ1NnFINPMz9TZIik7IH0KKyAgICB7IHJldHVybiBk
ZWNvZGUoItCe0YLQutGA0YvRgtGL0LUg0YHQu9C+0YLRiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0clNpZ25hbHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi88nHzsHM2SIpOyB9CisgICAg
eyByZXR1cm4gZGVjb2RlKCLQodC40LPQvdCw0LvRiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0clN0YXRpY1B1YmxpY01lbWJlcnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi79TL0tnU2cUg
09TB1MnexdPLycUg3szFztkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J7RgtC60YDRi9GC
0YvQtSDRgdGC0LDRgtC40YfQtdGB0LrQuNC1INGH0LvQtdC90YsiKTsgfQogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJQcm90ZWN0ZWRNZW1iZXJzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvrB3cnd
xc7O2cUg3szFztkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JfQsNGJ0LjRidC10L3QvdGL
0LUg0YfQu9C10L3RiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByb3RlY3RlZFNsb3Rz
KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvrB3cndxc7O2cUg08zP1NkiKTsgfQorICAgIHsgcmV0
dXJuIGRlY29kZSgi0JfQsNGJ0LjRidC10L3QvdGL0LUg0YHQu9C+0YLRiyIpOyB9CiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0clN0YXRpY1Byb3RlY3RlZE1lbWJlcnMoKQotICAgIHsgcmV0dXJuIGRl
Y29kZSgi+sHdyd3Fzs7ZxSDT1MHUyd7F08vJxSDezMXO2SIpOyB9CisgICAgeyByZXR1cm4gZGVj
b2RlKCLQl9Cw0YnQuNGJ0LXQvdC90YvQtSDRgdGC0LDRgtC40YfQtdGB0LrQuNC1INGH0LvQtdC9
0YsiKTsgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQcml2YXRlTWVtYmVycygpCi0gICAgeyBy
ZXR1cm4gZGVjb2RlKCL6wcvS2dTZxSDezMXO2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQ
l9Cw0LrRgNGL0YLRi9C1INGH0LvQtdC90YsiKTsgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQ
cml2YXRlU2xvdHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi+sHL0tnU2cUg08zP1NkiKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0JfQsNC60YDRi9GC0YvQtSDRgdC70L7RgtGLIik7IH0KICAg
ICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGljUHJpdmF0ZU1lbWJlcnMoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi+sHL0tnU2cUg09TB1MnexdPLycUg3szFztkiKTsgfQorICAgIHsgcmV0dXJuIGRl
Y29kZSgi0JfQsNC60YDRi9GC0YvQtSDRgdGC0LDRgtC40YfQtdGB0LrQuNC1INGH0LvQtdC90Ysi
KTsgfQogICAgIAogICAgIC8qISB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJvZHVjZSBhIGNv
bW1hLXNlcGFyYXRlZCBsaXN0IG9mIGl0ZW1zLgogICAgICAqICB1c2UgZ2VuZXJhdGVNYXJrZXIo
aSkgdG8gaW5kaWNhdGUgd2hlcmUgaXRlbSBpIHNob3VsZCBiZSBwdXQuCkBAIC03MDUsNyArNjk5
LDcgQEAKICAgICAgICAgICBpZiAoaTxudW1FbnRyaWVzLTIpIC8vIG5vdCB0aGUgZm9yZSBsYXN0
IGVudHJ5IAogICAgICAgICAgICAgcmVzdWx0Kz0iLCAiOwogICAgICAgICAgIGVsc2UgICAgICAg
ICAgICAgICAgLy8gdGhlIGZvcmUgbGFzdCBlbnRyeQotICAgICAgICAgICAgcmVzdWx0Kz1kZWNv
ZGUoICIgySAiICk7CisgICAgICAgICAgICByZXN1bHQrPWRlY29kZSggIiDQuCAiICk7CiAgICAg
ICAgIH0KICAgICAgIH0KICAgICAgIHJldHVybiByZXN1bHQ7IApAQCAtNzE2LDcgKzcxMCw3IEBA
CiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckluaGVyaXRzTGlzdChpbnQgbnVtRW50
cmllcykKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLiwdrP19nFIMvMwdPT2ToiKSt0cldy
aXRlTGlzdChudW1FbnRyaWVzKSsiLiI7CisgICAgICByZXR1cm4gZGVjb2RlKCLQkdCw0LfQvtCy
0YvQtSDQutC70LDRgdGB0Ys6IikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAgIH0K
IAogICAgIC8qISB1c2VkIGluIGNsYXNzIGRvY3VtZW50YXRpb24gdG8gcHJvZHVjZSBhIGxpc3Qg
b2Ygc3VwZXIgY2xhc3NlcywKQEAgLTcyNCw3ICs3MTgsNyBAQAogICAgICAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJJbmhlcml0ZWRCeUxpc3QoaW50IG51bUVudHJpZXMpCiAgICAgewotICAg
ICAgcmV0dXJuIGRlY29kZSgi8NLPydrXz8TO2cUgy8zB09PZOiIpK3RyV3JpdGVMaXN0KG51bUVu
dHJpZXMpKyIuIjsKKyAgICAgIHJldHVybiBkZWNvZGUoItCf0YDQvtC40LfQstC+0LTQvdGL0LUg
0LrQu9Cw0YHRgdGLOiIpK3RyV3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsKICAgICB9CiAKICAg
ICAvKiEgdXNlZCBpbiBtZW1iZXIgZG9jdW1lbnRhdGlvbiBibG9ja3MgdG8gcHJvZHVjZSBhIGxp
c3Qgb2YgCkBAIC03MzIsMTEgKzcyNiwxMSBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJSZWltcGxlbWVudGVkRnJvbUxpc3QoaW50IG51bUVudHJpZXMpCiAgICAgewotICAgICAg
UUNTdHJpbmcgcmVzdWx0PSLwxdLFz9DSxcTFzNHF1CDNxdTPxCI7CisgICAgICBRQ1N0cmluZyBy
ZXN1bHQ9ItCf0LXRgNC10L7Qv9GA0LXQtNC10LvRj9C10YIg0LzQtdGC0L7QtCI7CiAgICAgICBp
ZihudW1FbnRyaWVzPjEpCi0JcmVzdWx0Kz0i2SDQ0sXEy8/XIjsKKwlyZXN1bHQrPSLRiyDQv9GA
0LXQtNC60L7QsiI7CiAgICAgICBlbHNlCi0JcmVzdWx0Kz0iINDSxcTLwSI7CisJcmVzdWx0Kz0i
INC/0YDQtdC00LrQsCI7CiAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCsiICIpK3RyV3JpdGVM
aXN0KG51bUVudHJpZXMpKyIuIjsKICAgICB9CiAKQEAgLTc0NSwxOSArNzM5LDE5IEBACiAgICAg
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlaW1wbGVtZW50ZWRJbkxpc3QoaW50IG51bUVu
dHJpZXMpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi8MXSxc/Q0sXExczRxdTT0SDXICIp
K3RyV3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsKKyAgICAgIHJldHVybiBkZWNvZGUoItCf0LXR
gNC10L7Qv9GA0LXQtNC10LvRj9C10YLRgdGPINCyICIpK3RyV3JpdGVMaXN0KG51bUVudHJpZXMp
KyIuIjsKICAgICB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdlIGFzIGEg
bGluayB0byBhbGwgbWVtYmVycyBvZiBuYW1lc3BhY2VzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJOYW1lc3BhY2VNZW1iZXJzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIv7Mxc7ZINDSz9PU
0sHO09TXIMnNxc4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0KfQu9C10L3RiyDQv9GA0L7R
gdGC0YDQsNC90YHRgtCyINC40LzQtdC9Iik7IH0KIAogICAgIC8qISBUaGlzIGlzIGFuIGludHJv
ZHVjdGlvbiB0byB0aGUgcGFnZSB3aXRoIGFsbCBuYW1lc3BhY2UgbWVtYmVycyAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJOYW1lc3BhY2VNZW1iZXJEZXNjcmlwdGlvbihib29sIGV4dHJhY3RB
bGwpCiAgICAgewotICAgICAgUUNTdHJpbmcgcmVzdWx0PSLwz8zO2cog09DJ08/LICI7Ci0gICAg
ICBpZiAoIWV4dHJhY3RBbGwpIHJlc3VsdCs9IsTPy9XNxc7UydLP18HOztnIICI7Ci0gICAgICBy
ZXN1bHQrPSLezMXOz9cg0NLP09TBztPU1yDJzcXOLiI7CisgICAgICBRQ1N0cmluZyByZXN1bHQ9
ItCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0LogIjsKKyAgICAgIGlmICghZXh0cmFjdEFsbCkgcmVz
dWx0Kz0i0LTQvtC60YPQvNC10L3RgtC40YDQvtCy0LDQvdC90YvRhSAiOworICAgICAgcmVzdWx0
Kz0i0YfQu9C10L3QvtCyINC/0YDQvtGB0YLQsNC90YHRgtCyINC40LzQtdC9LiI7CiAgICAgICBy
ZXR1cm4gZGVjb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC03NjUsMTMgKzc1OSwxMyBAQAogICAg
ICAqICBpbmRleCBvZiBhbGwgbmFtZXNwYWNlcy4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyTmFtZXNwYWNlSW5kZXgoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi4czGwdfJ1M7ZyiDV
y8HawdTFzNgg0NLP09TSwc7T1Ncgyc3FziIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQkNC7
0YTQsNCy0LjRgtC90YvQuSDRg9C60LDQt9Cw0YLQtdC70Ywg0L/RgNC+0YHRgtGA0LDQvdGB0YLQ
siDQuNC80LXQvSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIExhVGVYIGFzIHRoZSB0
aXRsZSBvZiB0aGUgY2hhcHRlciBjb250YWluaW5nCiAgICAgICogIHRoZSBkb2N1bWVudGF0aW9u
IG9mIGFsbCBuYW1lc3BhY2VzLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJOYW1l
c3BhY2VEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDSz9PU0sHO09TXwSDJ
zcXOIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0YDQvtGB0YLRgNCw0L3RgdGC0LLQsCDQ
uNC80LXQvSIpOyB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2UgMC40OS05OTA1
MjIKQEAgLTc4MSw3ICs3NzUsNyBAQAogICAgICAqICBuYW1lc3BhY2VzIGluIGEgZmlsZS4KICAg
ICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTmFtZXNwYWNlcygpCi0gICAgeyByZXR1cm4g
ZGVjb2RlKCAi8NLP09TSwc7T1NfBIMnNxc4iICk7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoICLQ
n9GA0L7RgdGC0YDQsNC90YHRgtCy0LAg0LjQvNC10L0iICk7IH0KIAogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KIC8vIG5ldyBzaW5jZSAwLjQ5LTk5MDcyOApAQCAtNzk0LDMxICs3ODgsMzMgQEAKICAgICAg
ICAgYm9vbCBzaW5nbGUpCiAgICAgeyAvLyBoZXJlIHMgaXMgb25lIG9mICIgQ2xhc3MiLCAiIFN0
cnVjdCIgb3IgIiBVbmlvbiIKICAgICAgIC8vIHNpbmdsZSBpcyB0cnVlIGltcGxpZXMgYSBzaW5n
bGUgZmlsZQotICAgICAgUUNTdHJpbmcgcmVzdWx0PShRQ1N0cmluZyki78Lf0dfMxc7J0SDJIM/Q
ydPBzsnRIN7Mxc7P1yAiOworICAgICAgUUNTdHJpbmcgcmVzdWx0PShRQ1N0cmluZyki0J7QsdGK
0Y/QstC70LXQvdC40Y8g0Lgg0L7Qv9C40YHQsNC90LjRjyDRh9C70LXQvdC+0LIgIjsKICAgICAg
IHN3aXRjaChjb21wVHlwZSkKICAgICAgIHsKLSAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2xhc3M6
ICAgICAgcmVzdWx0Kz0iy8zB09MiOyAKLSAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSfB
JzsgZWxzZSByZXN1bHQrPSLP1yI7CisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkNsYXNzOiAgICAg
IHJlc3VsdCs9ItC60LvQsNGB0YEiOyAKKyAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSLQ
sCI7IGVsc2UgcmVzdWx0Kz0i0L7QsiI7CiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q2xhc3NEZWY6OlN0cnVjdDogICAgIHJlc3VsdCs9ItPU0tXL1NXSIjsgCi0gICAgICAgICAgaWYg
KHNpbmdsZSkgcmVzdWx0Kz0n2Sc7CisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlN0cnVjdDogICAg
IHJlc3VsdCs9ItGB0YLRgNGD0LrRgtGD0YAiOyAKKyAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1
bHQrPSLRiyI7CiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9u
OiAgICAgIHJlc3VsdCs9Is/C38XEyc7FzskiOwotICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3Vs
dCs9J9EnOyBlbHNlIHJlc3VsdCs9J8onOworICAgICAgICBjYXNlIENsYXNzRGVmOjpVbmlvbjog
ICAgICByZXN1bHQrPSLQvtCx0YrQtdC00LjQvdC10L3QuCI7CisgICAgICAgICAgaWYgKHNpbmds
ZSkgcmVzdWx0Kz0i0Y8iOyBlbHNlIHJlc3VsdCs9ItC5IjsKICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDbGFzc0RlZjo6SW50ZXJmYWNlOiAgcmVzdWx0Kz0iyc7UxdLGxcrTIjsKLSAg
ICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSfBJzsgZWxzZSByZXN1bHQrPSLP1yI7CisgICAg
ICAgIGNhc2UgQ2xhc3NEZWY6OkludGVyZmFjZTogIHJlc3VsdCs9ItC40L3RgtC10YDRhNC10LnR
gSI7CisgICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0i0LAiOyBlbHNlIHJlc3VsdCs9ItC+
0LIiOwogICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENsYXNzRGVmOjpQcm90b2NvbDog
IHJlc3VsdCs9IlByb3RvY29sIjsgLy8gdHJhbnNsYXRlIG1lIQorICAgICAgICBjYXNlIENsYXNz
RGVmOjpQcm90b2NvbDogIHJlc3VsdCs9ItC/0YDQvtGC0L7QutC+0LsiOworCQkgIGlmIChzaW5n
bGUpIHJlc3VsdCs9ItCwIjsgZWxzZSByZXN1bHQrPSLQvtCyIjsKICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2F0ZWdvcnk6ICByZXN1bHQrPSJDYXRlZ29yeSI7IC8v
IHRyYW5zbGF0ZSBtZSEKKyAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2F0ZWdvcnk6ICByZXN1bHQr
PSLQutCw0YLQtdCz0L7RgNC4IjsKKyAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSLRjyI7
IGVsc2UgcmVzdWx0Kz0i0LkiOwogICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENsYXNz
RGVmOjpFeGNlcHRpb246ICByZXN1bHQrPSLJ08vMwN7FzskiOwotICAgICAgICAgIGlmIChzaW5n
bGUpIHJlc3VsdCs9J9EnOyBlbHNlIHJlc3VsdCs9J8onOworICAgICAgICBjYXNlIENsYXNzRGVm
OjpFeGNlcHRpb246ICByZXN1bHQrPSLQuNGB0LrQu9GO0YfQtdC90LgiOworICAgICAgICAgIGlm
IChzaW5nbGUpIHJlc3VsdCs9ItGPIjsgZWxzZSByZXN1bHQrPSLQuSI7CiAgICAgICAgICAgYnJl
YWs7CiAgICAgICB9Ci0gICAgICByZXN1bHQrPSIgzsHIz8TR1NPRINcgxsHKzCI7Ci0gICAgICBp
ZiAoc2luZ2xlKSByZXN1bHQrPSLFOiI7IGVsc2UgcmVzdWx0Kz0iwcg6IjsKKyAgICAgIHJlc3Vs
dCs9IiDQvdCw0YXQvtC00Y/RgtGB0Y8g0LIg0YTQsNC50LsiOworICAgICAgaWYgKHNpbmdsZSkg
cmVzdWx0Kz0i0LU6IjsgZWxzZSByZXN1bHQrPSLQsNGFOiI7CiAgICAgICByZXR1cm4gZGVjb2Rl
KHJlc3VsdCk7CiAgICAgfQogCkBAIC04MjYsNyArODIyLDcgQEAKICAgICAgKiBsaXN0LgogICAg
ICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJBbHBoYWJldGljYWxMaXN0KCkKLSAgICB7IHJl
dHVybiBkZWNvZGUoIuHMxsHXydTO2cog1cvB2sHUxczYIik7IH0KKyAgICB7IHJldHVybiBkZWNv
ZGUoItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCIpOyB9CiAKIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2UgMC40OS05OTA5MDEKQEAgLTgzNCwxOCArODMwLDE4
IEBACiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGFzIHRoZSBoZWFkaW5nIHRleHQgZm9yIHRoZSBy
ZXR2YWwgY29tbWFuZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUmV0dXJuVmFsdWVzKCkK
LSAgICB7IHJldHVybiBkZWNvZGUoIvfP2tfSwd3Bxc3ZxSDazsHexc7J0SIpOyB9CisgICAgeyBy
ZXR1cm4gZGVjb2RlKCLQktC+0LfQstGA0LDRidCw0LXQvNGL0LUg0LfQvdCw0YfQtdC90LjRjyIp
OyB9CiAKICAgICAvKiEgVGhpcyBpcyBpbiB0aGUgKHF1aWNrKSBpbmRleCBhcyBhIGxpbmsgdG8g
dGhlIG1haW4gcGFnZSAoaW5kZXguaHRtbCkKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyTWFpblBhZ2UoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi9MnU1czYzsHRINPU0sHOycPBIik7
IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCi0LjRgtGD0LvRjNC90LDRjyDRgdGC0YDQsNC90LjR
htCwIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gcmVmZXJlbmNlcyB0byBwYWdlIHRo
YXQgYXJlIHB1dCBpbiB0aGUgTGFUZVggCiAgICAgICogIGRvY3VtZW50YXRpb24uIEl0IHNob3Vs
ZCBiZSBhbiBhYmJyZXZpYXRpb24gb2YgdGhlIHdvcmQgcGFnZS4KICAgICAgKi8KICAgICB2aXJ0
dWFsIFFDU3RyaW5nIHRyUGFnZUFiYnJldmlhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLT
1NIuIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItGB0YLRgC4iKTsgfQogCiAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogLy8gbmV3IHNpbmNlIDAuNDktOTkxMTA2CkBAIC04NTMsMTEgKzg0OSwxMSBAQAog
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRlZmluZWRBdExpbmVJblNvdXJjZUZpbGUoKQogICAg
IHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvPNLiDP0NLFxMXMxc7JxSDXIMbByszFIEAxINPU0s/L
wSBAMCIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0KHQvC4g0L7Qv9GA0LXQtNC10LvQtdC90LjQ
tSDQsiDRhNCw0LnQu9C1IEAxINGB0YLRgNC+0LrQsCBAMCIpOwogICAgIH0KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyRGVmaW5lZEluU291cmNlRmlsZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi880uIM/Q0sXExczFzsnFINcgxsHKzMUgQDAiKTsKKyAgICAgIHJldHVybiBkZWNvZGUo
ItCh0LwuINC+0L/RgNC10LTQtdC70LXQvdC40LUg0LIg0YTQsNC50LvQtSBAMCIpOwogICAgIH0K
IAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTg2Niw3ICs4NjIsNyBAQAogCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckRlcHJlY2F0ZWQoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvXT1C4i
KTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCj0YHRgi4iKTsKICAgICB9CiAKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCkBAIC04NzYsNjggKzg3Miw2OCBAQAogICAgIC8qISB0aGlzIHRleHQgaXMgcHV0IGJl
Zm9yZSBhIGNvbGxhYm9yYXRpb24gZGlhZ3JhbSAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJD
b2xsYWJvcmF0aW9uRGlhZ3JhbShjb25zdCBjaGFyICpjbE5hbWUpCiAgICAgewotICAgICAgcmV0
dXJuIChRQ1N0cmluZylkZWNvZGUoIufSwcYg09fR2sXKIMvMwdPTwSAiKStjbE5hbWUrIjoiOwor
ICAgICAgcmV0dXJuIChRQ1N0cmluZylkZWNvZGUoItCT0YDQsNGEINGB0LLRj9C30LXQuSDQutC7
0LDRgdGB0LAgIikrY2xOYW1lKyI6IjsKICAgICB9CiAgICAgLyohIHRoaXMgdGV4dCBpcyBwdXQg
YmVmb3JlIGFuIGluY2x1ZGUgZGVwZW5kZW5jeSBncmFwaCAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJJbmNsRGVwR3JhcGgoY29uc3QgY2hhciAqZk5hbWUpCiAgICAgewotICAgICAgcmV0dXJu
IGRlY29kZSgi59LBxiDXy8zA3sHFzdnIINrBx8/Mz9fP3s7ZyCDGwcrMz9cgxMzRICIpK2ZOYW1l
KyI6IjsKKyAgICAgIHJldHVybiBkZWNvZGUoItCT0YDQsNGEINCy0LrQu9GO0YfQsNC10LzRi9GF
INC30LDQs9C+0LvQvtCy0L7Rh9C90YvRhSDRhNCw0LnQu9C+0LIg0LTQu9GPICIpK2ZOYW1lKyI6
IjsKICAgICB9CiAgICAgLyohIGhlYWRlciB0aGF0IGlzIHB1dCBiZWZvcmUgdGhlIGxpc3Qgb2Yg
Y29uc3RydWN0b3IvZGVzdHJ1Y3RvcnMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNvbnN0
cnVjdG9yRG9jdW1lbnRhdGlvbigpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi68/O09TS
1cvUz9Io2SkiKTsgCisgICAgICByZXR1cm4gZGVjb2RlKCLQmtC+0L3RgdGC0YDRg9C60YLQvtGA
KNGLKSIpOyAKICAgICB9CiAgICAgLyohIFVzZWQgaW4gdGhlIGZpbGUgZG9jdW1lbnRhdGlvbiB0
byBwb2ludCB0byB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2VzLiAqLwogICAgIHZpcnR1YWwgUUNT
dHJpbmcgdHJHb3RvU291cmNlQ29kZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi880u
IMnTyM/EztnFINTFy9PU2S4iKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCh0LwuINC40YHRhdC+
0LTQvdGL0LUg0YLQtdC60YHRgtGLLiIpOwogICAgIH0KICAgICAvKiEgVXNlZCBpbiB0aGUgZmls
ZSBzb3VyY2VzIHRvIHBvaW50IHRvIHRoZSBjb3JyZXNwb25kaW5nIGRvY3VtZW50YXRpb24uICov
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdvdG9Eb2N1bWVudGF0aW9uKCkKICAgICB7Ci0gICAg
ICByZXR1cm4gZGVjb2RlKCLzzS4gxM/L1c3FztTBw8nALiIpOworICAgICAgcmV0dXJuIGRlY29k
ZSgi0KHQvC4g0LTQvtC60YPQvNC10L3RgtCw0YbQuNGOLiIpOwogICAgIH0KICAgICAvKiEgVGV4
dCBmb3IgdGhlIFxccHJlIGNvbW1hbmQgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJlY29u
ZGl0aW9uKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLw0sXE1dPMz9fJxSIpOworICAg
ICAgcmV0dXJuIGRlY29kZSgi0J/RgNC10LTRg9GB0LvQvtCy0LjQtSIpOwogICAgIH0KICAgICAv
KiEgVGV4dCBmb3IgdGhlIFxccG9zdCBjb21tYW5kICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
clBvc3Rjb25kaXRpb24oKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvDP09TV08zP18nF
Iik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9C+0YHRgtGD0YHQu9C+0LLQuNC1Iik7CiAgICAg
fQogICAgIC8qISBUZXh0IGZvciB0aGUgXFxpbnZhcmlhbnQgY29tbWFuZCAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJJbnZhcmlhbnQoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIunO
18HSycHO1CIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JjQvdCy0LDRgNC40LDQvdGCIik7CiAg
ICAgfQogICAgIC8qISBUZXh0IHNob3duIGJlZm9yZSBhIG11bHRpLWxpbmUgdmFyaWFibGUvZW51
bSBpbml0aWFsaXphdGlvbiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJJbml0aWFsVmFsdWUo
KQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIunOycPJwczJ2sHUz9IiKTsKKyAgICAgIHJl
dHVybiBkZWNvZGUoItCY0L3QuNGG0LjQsNC70LjQt9Cw0YLQvtGAIik7CiAgICAgfQogICAgIC8q
ISBUZXh0IHVzZWQgdGhlIHNvdXJjZSBjb2RlIGluIHRoZSBmaWxlIGluZGV4ICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckNvZGUoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIunTyM/E
ztnFINTFy9PU2SIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JjRgdGF0L7QtNC90YvQtSDRgtC1
0LrRgdGC0YsiKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdyYXBoaWNhbEhpZXJh
cmNoeSgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi6cXSwdLIydEgy8zB09PP1y4g59LB
xsnexdPLycog18nELiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JjQtdGA0LDRgNGF0LjRjyDQ
utC70LDRgdGB0L7Qsi4g0JPRgNCw0YTQuNGH0LXRgdC60LjQuSDQstC40LQuIik7CiAgICAgfQog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJHb3RvR3JhcGhpY2FsSGllcmFyY2h5KCkKICAgICB7Ci0g
ICAgICByZXR1cm4gZGVjb2RlKCLTzS4gx9LBxsnexdPLycog18nELiIpOworICAgICAgcmV0dXJu
IGRlY29kZSgi0YHQvC4g0LPRgNCw0YTQuNGH0LXRgdC60LjQuSDQstC40LQuIik7CiAgICAgfQog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJHb3RvVGV4dHVhbEhpZXJhcmNoeSgpCiAgICAgewotICAg
ICAgcmV0dXJuIGRlY29kZSgi080uINTFy9PUz9fZyiDXycQuIik7CisgICAgICByZXR1cm4gZGVj
b2RlKCLRgdC8LiDRgtC10LrRgdGC0L7QstGL0Lkg0LLQuNC0LiIpOwogICAgIH0KICAgICB2aXJ0
dWFsIFFDU3RyaW5nIHRyUGFnZUluZGV4KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLh
zMbB18nUztnKINXLwdrB1MXM2CDUxc3B1MnexdPLycggz9DJ08HOycoiKTsKKyAgICAgIHJldHVy
biBkZWNvZGUoItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCDRgtC10LzQ
sNGC0LjRh9C10YHQutC40YUg0L7Qv9C40YHQsNC90LjQuSIpOwogICAgIH0KIAogLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KQEAgLTk0Niw1MCArOTQyLDUwIEBACiAgICAgCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ck5vdGUoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrBzcXUy8kiKTsKKyAgICAg
IHJldHVybiBkZWNvZGUoItCX0LDQvNC10YLQutC4Iik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNT
dHJpbmcgdHJQdWJsaWNUeXBlcygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi79TL0tnU
2cUg1MnQ2SIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J7RgtC60YDRi9GC0YvQtSDRgtC40L/R
iyIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHVibGljQXR0cmlicygpCiAgICAg
ewogICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAg
ICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIvDPzNEgxMHOztnIIiApOworICAgICAgICBy
ZXR1cm4gZGVjb2RlKCAi0J/QvtC70Y8g0LTQsNC90L3Ri9GFIiApOwogICAgICAgfQogICAgICAg
ZWxzZQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi79TL0tnU2cUgwdTSycLV1Nki
ICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQntGC0LrRgNGL0YLRi9C1INCw0YLRgNC40LHR
g9GC0YsiICk7CiAgICAgICB9CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTdGF0aWNQ
dWJsaWNBdHRyaWJzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLz1MHUyd7F08vJxSDP
1MvS2dTZxSDEwc7O2cUiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCh0YLQsNGC0LjRh9C10YHQ
utC40LUg0L7RgtC60YDRi9GC0YvQtSDQtNCw0L3QvdGL0LUiKTsKICAgICB9CiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0clByb3RlY3RlZFR5cGVzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2Rl
KCL6wd3J3cXOztnFINTJ0NkiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCX0LDRidC40YnQtdC9
0L3Ri9C1INGC0LjQv9GLIik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQcm90ZWN0
ZWRBdHRyaWJzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCL6wd3J3cXOztnFIMTBzs7Z
xSIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNGJ0LjRidC10L3QvdGL0LUg0LTQsNC90L3R
i9C1Iik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTdGF0aWNQcm90ZWN0ZWRBdHRy
aWJzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLz1MHUyd7F08vJxSDawd3J3cXOztnF
IMTBzs7ZxSIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0KHRgtCw0YLQuNGH0LXRgdC60LjQtSDQ
t9Cw0YnQuNGJ0LXQvdC90YvQtSDQtNCw0L3QvdGL0LUiKTsKICAgICB9CiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0clByaXZhdGVUeXBlcygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi+sHL
0tnU2cUg1MnQ2SIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNC60YDRi9GC0YvQtSDRgtC4
0L/RiyIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJpdmF0ZUF0dHJpYnMoKQog
ICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrBy9LZ1NnFIMTBzs7ZxSIpOworICAgICAgcmV0
dXJuIGRlY29kZSgi0JfQsNC60YDRi9GC0YvQtSDQtNCw0L3QvdGL0LUiKTsKICAgICB9CiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0clN0YXRpY1ByaXZhdGVBdHRyaWJzKCkKICAgICB7Ci0gICAgICBy
ZXR1cm4gZGVjb2RlKCL6wcvS2dTZxSDT1MHUyd7F08vJxSDEwc7O2cUiKTsKKyAgICAgIHJldHVy
biBkZWNvZGUoItCX0LDQutGA0YvRgtGL0LUg0YHRgtCw0YLQuNGH0LXRgdC60LjQtSDQtNCw0L3Q
vdGL0LUiKTsKICAgICB9CiAKIApAQCAtMTAwMSwxMyArOTk3LDEzIEBACiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0clRvZG8oKQogICAgIC8qPz8qLwogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUo
Iu7Fz8LIz8TJzc8g08TFzMHU2CIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J3QtdC+0LHRhdC+
0LTQuNC80L4g0YHQtNC10LvQsNGC0YwiKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMgdGhlIGhl
YWRlciBvZiB0aGUgdG9kbyBsaXN0ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clRvZG9MaXN0
KCkKICAgICAvKj8/Ki8KICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLz0MnTz8sg2sHEwd4i
KTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCh0L/QuNGB0L7QuiDQt9Cw0LTQsNGHIik7CiAgICAg
fQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTAxNiwyNCArMTAxMiwyNCBAQAogCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0clJlZmVyZW5jZWRCeSgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29k
ZSgi6dPQz8zY2tXF1NPRINciKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCY0YHQv9C+0LvRjNC3
0YPQtdGC0YHRjyDQsiIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUmVtYXJrcygp
CiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi8NLJzS4iKTsKKyAgICAgIHJldHVybiBkZWNv
ZGUoItCf0YDQuNC8LiIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQXR0ZW50aW9u
KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCL3zsnNwc7JxSIpOworICAgICAgcmV0dXJu
IGRlY29kZSgi0JLQvdC40LzQsNC90LjQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRySW5jbEJ5RGVwR3JhcGgoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIufSwcYgxsHK
zM/XLCDXIMvP1M/S2cUg18vMwN7BxdTT0SDc1M/UIMbBysw6Iik7CisgICAgICByZXR1cm4gZGVj
b2RlKCLQk9GA0LDRhCDRhNCw0LnQu9C+0LIsINCyINC60L7RgtC+0YDRi9C1INCy0LrQu9GO0YfQ
sNC10YLRgdGPINGN0YLQvtGCINGE0LDQudC7OiIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyU2luY2UoKQogICAgIC8qPz8qLwogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIu7B
3snOwdEg0yIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J3QsNGH0LjQvdCw0Y8g0YEiKTsKICAg
ICB9CiAgICAgCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTA0MywzMiArMTAzOSwzMiBAQAogICAg
IC8qISB0aXRsZSBvZiB0aGUgZ3JhcGggbGVnZW5kIHBhZ2UgKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyTGVnZW5kVGl0bGUoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIuzFx8XOxMEi
KTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCb0LXQs9C10L3QtNCwIik7CiAgICAgfQogICAgIC8q
ISBwYWdlIGV4cGxhaW5pbmcgaG93IHRoZSBkb3QgZ3JhcGgncyBzaG91bGQgYmUgaW50ZXJwcmV0
ZWQgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTGVnZW5kRG9jcygpCiAgICAgewogICAgICAg
cmV0dXJuIGRlY29kZSggCi0gICAgICAgICLvws/azsHexc7J0SwgydPQz8zY2tXFzdnFINcgx9LB
xsHILjxwPlxuIgotICAgICAgICAi8sHT083P1NLJzSDTzMXE1cDdycog0NLJzcXSOlxuIgorICAg
ICAgICAi0J7QsdC+0LfQvdCw0YfQtdC90LjRjywg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCy
INCz0YDQsNGE0LDRhS48cD5cbiIKKyAgICAgICAgItCg0LDRgdGB0LzQvtGC0YDQuNC8INGB0LvQ
tdC00YPRjtGJ0LjQuSDQv9GA0LjQvNC10YA6XG4iCiAgICAgICAgICJcXGNvZGVcbiIKLSAgICAg
ICAgIi8qISDuxdfJxMnN2cogy8zB09Mgydot2sEg1dPF3sXOydEgKi9cbiIKKyAgICAgICAgIi8q
ISDQndC10LLQuNC00LjQvNGL0Lkg0LrQu9Cw0YHRgSDQuNC3LdC30LAg0YPRgdC10YfQtdC90LjR
jyAqL1xuIgogICAgICAgICAiY2xhc3MgSW52aXNpYmxlIHsgfTtcblxuIgotICAgICAgICAiLyoh
IPXTxd7Fzs7ZyiDLzMHT0ywgz9TOz9vFzsnFIM7B08zFxM/Xwc7J0SDTy9LZ1M8gKi9cbiIKKyAg
ICAgICAgIi8qISDQo9GB0LXRh9C10L3QvdGL0Lkg0LrQu9Cw0YHRgSwg0L7RgtC90L7RiNC10L3Q
uNC1INC90LDRgdC70LXQtNC+0LLQsNC90LjRjyDRgdC60YDRi9GC0L4gKi9cbiIKICAgICAgICAg
ImNsYXNzIFRydW5jYXRlZCA6IHB1YmxpYyBJbnZpc2libGUgeyB9O1xuXG4iCi0gICAgICAgICIv
KiDuxcTPy9XNxc7UydLP18HOztnKIMvMwdPTICovXG4iCisgICAgICAgICIvKiDQndC10LTQvtC6
0YPQvNC10L3RgtC40YDQvtCy0LDQvdC90YvQuSDQutC70LDRgdGBICovXG4iCiAgICAgICAgICJj
bGFzcyBVbmRvY3VtZW50ZWQgeyB9O1xuXG4iCi0gICAgICAgICIvKiEg79TL0tnUz8UgzsHTzMXE
z9fBzsnFICovXG4iCisgICAgICAgICIvKiEg0J7RgtC60YDRi9GC0L7QtSDQvdCw0YHQu9C10LTQ
vtCy0LDQvdC40LUgKi9cbiIKICAgICAgICAgImNsYXNzIFB1YmxpY0Jhc2UgOiBwdWJsaWMgVHJ1
bmNhdGVkIHsgfTtcblxuIgotICAgICAgICAiLyohIPvBwszPziDLzMHT08EgKi9cbiIKKyAgICAg
ICAgIi8qISDQqNCw0LHQu9C+0L0g0LrQu9Cw0YHRgdCwICovXG4iCiAgICAgICAgICJ0ZW1wbGF0
ZTxjbGFzcyBUPiBjbGFzcyBUZW1wbCB7fTtcblxuIgotICAgICAgICAiLyohIPrB3cndxc7Oz8Ug
zsHTzMXEz9fBzsnFICovXG4iCisgICAgICAgICIvKiEg0JfQsNGJ0LjRidC10L3QvdC+0LUg0L3Q
sNGB0LvQtdC00L7QstCw0L3QuNC1ICovXG4iCiAgICAgICAgICJjbGFzcyBQcm90ZWN0ZWRCYXNl
IHsgfTtcblxuIgotICAgICAgICAiLyohIPrBy9LZ1M/FIM7B08zFxM/Xwc7JxSAqL1xuIgorICAg
ICAgICAiLyohINCX0LDQutGA0YvRgtC+0LUg0L3QsNGB0LvQtdC00L7QstCw0L3QuNC1ICovXG4i
CiAgICAgICAgICJjbGFzcyBQcml2YXRlQmFzZSB7IH07XG5cbiIKLSAgICAgICAgIi8qISDrzMHT
0ywgydPQz8zY2tXFzdnKIMvMwdPTz80gSW5oZXJpdGVkICovXG4iCisgICAgICAgICIvKiEg0JrQ
u9Cw0YHRgSwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C5INC60LvQsNGB0YHQvtC8IEluaGVyaXRl
ZCAqL1xuIgogICAgICAgICAiY2xhc3MgVXNlZCB7IH07XG5cbiIKLSAgICAgICAgIi8qISDrzMHT
0ywg0M/Sz9bExc7O2cogz9QgxNLVx8nIIMvMwdPTz9cgKi9cbiIKKyAgICAgICAgIi8qISDQmtC7
0LDRgdGBLCDQv9C+0YDQvtC20LTQtdC90L3Ri9C5INC+0YIg0LTRgNGD0LPQuNGFINC60LvQsNGB
0YHQvtCyICovXG4iCiAgICAgICAgICJjbGFzcyBJbmhlcml0ZWQgOiBwdWJsaWMgUHVibGljQmFz
ZSxcbiIKICAgICAgICAgIiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBQcm90ZWN0ZWRCYXNl
LFxuIgogICAgICAgICAiICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBQcml2YXRlQmFzZSxcbiIK
QEAgLTEwNzksMzkgKzEwNzUsMzkgQEAKICAgICAgICAgIiAgICBVc2VkICptX3VzZWRDbGFzcztc
biIKICAgICAgICAgIn07XG4iCiAgICAgICAgICJcXGVuZGNvZGVcbiIKLSAgICAgICAgIuXTzMkg
XFxjIE1BWF9ET1RfR1JBUEhfSEVJR0hUINcgy8/OxsnH1dLBw8nPzs7PzSDGwcrMxSAiCi0gICAg
ICAgICLV09TBzs/XzMXOINcgMjQwLCDQz8zV3snU09Eg08zFxNXA3cnKIMfSwcY6IgorICAgICAg
ICAi0JXRgdC70LggXFxjIE1BWF9ET1RfR1JBUEhfSEVJR0hUINCyINC60L7QvdGE0LjQs9GD0YDQ
sNGG0LjQvtC90L3QvtC8INGE0LDQudC70LUgIgorICAgICAgICAi0YPRgdGC0LDQvdC+0LLQu9C1
0L0g0LIgMjQwLCDQv9C+0LvRg9GH0LjRgtGB0Y8g0YHQu9C10LTRg9GO0YnQuNC5INCz0YDQsNGE
OiIKICAgICAgICAgIjxwPjxjZW50ZXI+PGltZyBzcmM9XCJncmFwaF9sZWdlbmQuIitDb25maWdf
Z2V0RW51bSgiRE9UX0lNQUdFX0ZPUk1BVCIpKyJcIj48L2NlbnRlcj5cbiIKICAgICAgICAgIjxw
PlxuIgotICAgICAgICAi8NLRzc/Vx8/M2M7Jy8kg1yDc1M/NIMfSwcbFIMnNxcDUINPMxcTVwN3F
xSDazsHexc7JxTpcbiIKKyAgICAgICAgItCf0YDRj9C80L7Rg9Cz0L7Qu9GM0L3QuNC60Lgg0LIg
0Y3RgtC+0Lwg0LPRgNCw0YTQtSDQuNC80LXRjtGCINGB0LvQtdC00YPRjtGJ0LXQtSDQt9C90LDR
h9C10L3QuNC1OlxuIgogICAgICAgICAiPHVsPlxuIgotICAgICAgICAiPGxpPvrB0M/MzsXOztnK
IN7F0s7ZyiDQ0tHNz9XHz8zYzsnLINDSxcTT1MHXzNHF1CDT1NLVy9TV0tUgyczJIMvMwdPTLCAi
Ci0gICAgICAgICLEzNEgy8/Uz9LPx88g08/axMHOIMfSwcYuXG4iCi0gICAgICAgICI8bGk+8NLR
zc/Vx8/M2M7JyyDTIN7F0s7PyiDH0sHOycPFyiDPws/azsHewcXUIMTPy9XNxc7UydLP18HOztXA
INPU0tXL1NXS1SDJzMkgy8zB09MuXG4iCi0gICAgICAgICI8bGk+8NLRzc/Vx8/M2M7JyyDTINPF
0s/KIMfSwc7Jw8XKIM/Cz9rOwd7BxdQgzsXEz8vVzcXO1MnSz9fBzs7VwCDT1NLVy9TV0tUgyczJ
IMvMwdPTLlxuIgotICAgICAgICAiPGxpPvDS0c3P1cfPzNjOycsg0yDL0sHTzs/KIMfSwc7Jw8XK
IM/Cz9rOwd7BxdQgxM/L1c3FztTJ0s/Xwc7O1cAg09TS1cvU1dLVIMnMySDLzMHT0ywgxMzRIMvP
1M/Sz8fPXG4iCi0gICAgICAgICIgzsUg19PFIM/Uzs/bxc7J0SDOwdPMxcTP18HOydEv08/ExdLW
wc7J0SDQz8vB2sHO2S4g59LBxiDV08Xexc4sICIKLSAgICAgICAgIsXTzMkgz84gzsUg0M/NxdPU
yczT0SDXINXLwdrBzs7ZyCDH0sHOycPByC5cbiIKKyAgICAgICAgIjxsaT7Ql9Cw0L/QvtC70L3Q
tdC90L3Ri9C5INGH0LXRgNC90YvQuSDQv9GA0Y/QvNC+0YPQs9C+0LvRjNC90LjQuiDQv9GA0LXQ
tNGB0YLQsNCy0LvRj9C10YIg0YHRgtGA0YPQutGC0YPRgNGDINC40LvQuCDQutC70LDRgdGBLCAi
CisgICAgICAgICLQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDRgdC+0LfQtNCw0L0g0LPRgNCw0YQu
XG4iCisgICAgICAgICI8bGk+0J/RgNGP0LzQvtGD0LPQvtC70YzQvdC40Log0YEg0YfQtdGA0L3Q
vtC5INCz0YDQsNC90LjRhtC10Lkg0L7QsdC+0LfQvdCw0YfQsNC10YIg0LTQvtC60YPQvNC10L3R
gtC40YDQvtCy0LDQvdC90YPRjiDRgdGC0YDRg9C60YLRg9GA0YMg0LjQu9C4INC60LvQsNGB0YEu
XG4iCisgICAgICAgICI8bGk+0J/RgNGP0LzQvtGD0LPQvtC70YzQvdC40Log0YEg0YHQtdGA0L7Q
uSDQs9GA0LDQvdC40YbQtdC5INC+0LHQvtC30L3QsNGH0LDQtdGCINC90LXQtNC+0LrRg9C80LXQ
vdGC0LjRgNC+0LLQsNC90L3Rg9GOINGB0YLRgNGD0LrRgtGD0YDRgyDQuNC70Lgg0LrQu9Cw0YHR
gS5cbiIKKyAgICAgICAgIjxsaT7Qn9GA0Y/QvNC+0YPQs9C+0LvRjNC90LjQuiDRgSDQutGA0LDR
gdC90L7QuSDQs9GA0LDQvdC40YbQtdC5INC+0LHQvtC30L3QsNGH0LDQtdGCINC00L7QutGD0LzQ
tdC90YLQuNGA0L7QstCw0L3QvdGD0Y4g0YHRgtGA0YPQutGC0YPRgNGDINC40LvQuCDQutC70LDR
gdGBLCDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQvlxuIgorICAgICAgICAiINC90LUg0LLRgdC1INC+
0YLQvdC+0YjQtdC90LjRjyDQvdCw0YHQu9C10LTQvtCy0LDQvdC40Y8v0YHQvtC00LXRgNC20LDQ
vdC40Y8g0L/QvtC60LDQt9Cw0L3Riy4g0JPRgNCw0YQg0YPRgdC10YfQtdC9LCAiCisgICAgICAg
ICLQtdGB0LvQuCDQvtC9INC90LUg0L/QvtC80LXRgdGC0LjQu9GB0Y8g0LIg0YPQutCw0LfQsNC9
0L3Ri9GFINCz0YDQsNC90LjRhtCw0YUuXG4iCiAgICAgICAgICI8L3VsPlxuIgotICAgICAgICAi
89TSxczLySDJzcXA1CDTzMXE1cDdxcUg2s7B3sXOycU6XG4iCisgICAgICAgICLQodGC0YDQtdC7
0LrQuCDQuNC80LXRjtGCINGB0LvQtdC00YPRjtGJ0LXQtSDQt9C90LDRh9C10L3QuNC1OlxuIgog
ICAgICAgICAiPHVsPlxuIgotICAgICAgICAiPGxpPvTFzc7PLdPJztHRINPU0sXMy8EgydPQz8zY
2tXF1NPRIMTM0SDJ2s/C0sHWxc7J0SDP1M7P28XOydEgz9TL0tnUz8fPIM7B08zFxM/Xwc7J0SAi
Ci0gICAgICAgICLNxdbE1SDE19XN0SDLzMHT08HNyS5cbiIKLSAgICAgICAgIjxsaT70xc3Ozy3a
xczFzsHRINPU0sXMy8EgydPQz8zY2tXF1NPRINDSySDawd3J3cXOzs/NIM7B08zFxM/Xwc7JyS5c
biIKLSAgICAgICAgIjxsaT70xc3Ozy3L0sHTzsHRINPU0sXMy8EgydPQz8zY2tXF1NPRINDSySDa
wcvS2dTPzSDOwdPMxcTP18HOyckuXG4iCi0gICAgICAgICI8bGk+5snPzMXUz9fB0SDT1NLFzMvB
IMnT0M/M2NrVxdTT0SwgxdPMySDLzMHT0yDTz8TF0tbJ1NPRINciCi0gICAgICAgICLE0tXHz80g
y8zB08UgyczJIMnT0M/M2NrVxdTT0SDE0tXHyc0gy8zB09PPzS4iCi0gICAgICAgICLzzyDT1NLF
zMvPyiDVy8Ha2dfBxdTT0SDQxdLFzcXOzsHRLCAiCi0gICAgICAgICLexdLF2iDLz9TP0tXAIMTP
09TV0MXOINXLwdrZ18HFzdnKIMvMwdPTIMnMySDT1NLVy9TV0sEuIFxuIgotICAgICAgICAiPGxp
PvbFzNTB0SDT1NLFzMvBIMnT0M/M2NrVxdTT0SDEzNEg09fR2skg0M/E09TBzs/Xy8kg28HCzM/O
wSDJICIKLSAgICAgICAgItvBwszPzsEsIM7BIM/Tzs/XxSDLz9TP0s/HzyDc1MEg0M/E09TBzs/X
y8Eg19nQz8zOxc7BLiDzINvBwszPzs/NIgotICAgICAgICAi1cvB2tnXwcXU09Eg0MHSwc3F1NIg
0M/E09TBzs/Xy8kuXG4iCisgICAgICAgICI8bGk+0KLQtdC80L3Qvi3RgdC40L3Rj9GPINGB0YLR
gNC10LvQutCwINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0LjQt9C+0LHRgNCw0LbQ
tdC90LjRjyDQvtGC0L3QvtGI0LXQvdC40Y8g0L7RgtC60YDRi9GC0L7Qs9C+INC90LDRgdC70LXQ
tNC+0LLQsNC90LjRjyAiCisgICAgICAgICLQvNC10LbQtNGDINC00LLRg9C80Y8g0LrQu9Cw0YHR
gdCw0LzQuC5cbiIKKyAgICAgICAgIjxsaT7QotC10LzQvdC+LdC30LXQu9C10L3QsNGPINGB0YLR
gNC10LvQutCwINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQv9GA0Lgg0LfQsNGJ0LjRidC10L3Q
vdC+0Lwg0L3QsNGB0LvQtdC00L7QstCw0L3QuNC4LlxuIgorICAgICAgICAiPGxpPtCi0LXQvNC9
0L4t0LrRgNCw0YHQvdCw0Y8g0YHRgtGA0LXQu9C60LAg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGP
INC/0YDQuCDQt9Cw0LrRgNGL0YLQvtC8INC90LDRgdC70LXQtNC+0LLQsNC90LjQuC5cbiIKKyAg
ICAgICAgIjxsaT7QpNC40L7Qu9C10YLQvtCy0LDRjyDRgdGC0YDQtdC70LrQsCDQuNGB0L/QvtC7
0YzQt9GD0LXRgtGB0Y8sINC10YHQu9C4INC60LvQsNGB0YEg0YHQvtC00LXRgNC20LjRgtGB0Y8g
0LIiCisgICAgICAgICLQtNGA0YPQs9C+0Lwg0LrQu9Cw0YHQtSDQuNC70Lgg0LjRgdC/0L7Qu9GM
0LfRg9C10YLRgdGPINC00YDRg9Cz0LjQvCDQutC70LDRgdGB0L7QvC4iCisgICAgICAgICLQodC+
INGB0YLRgNC10LvQutC+0Lkg0YPQutCw0LfRi9Cy0LDQtdGC0YHRjyDQv9C10YDQtdC80LXQvdC9
0LDRjywgIgorICAgICAgICAi0YfQtdGA0LXQtyDQutC+0YLQvtGA0YPRjiDQtNC+0YHRgtGD0L/Q
tdC9INGD0LrQsNC30YvQstCw0LXQvNGL0Lkg0LrQu9Cw0YHRgSDQuNC70Lgg0YHRgtGA0YPQutGC
0YPRgNCwLiBcbiIKKyAgICAgICAgIjxsaT7QltC10LvRgtCw0Y8g0YHRgtGA0LXQu9C60LAg0LjR
gdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDRgdCy0Y/Qt9C4INC/0L7QtNGB0YLQsNC90L7Q
stC60Lgg0YjQsNCx0LvQvtC90LAg0LggIgorICAgICAgICAi0YjQsNCx0LvQvtC90LAsINC90LAg
0L7RgdC90L7QstC1INC60L7RgtC+0YDQvtCz0L4g0Y3RgtCwINC/0L7QtNGB0YLQsNC90L7QstC6
0LAg0LLRi9C/0L7Qu9C90LXQvdCwLiDQoSDRiNCw0LHQu9C+0L3QvtC8IgorICAgICAgICAi0YPQ
utCw0LfRi9Cy0LDQtdGC0YHRjyDQv9Cw0YDQsNC80LXRgtGAINC/0L7QtNGB0YLQsNC90L7QstC6
0LguXG4iCiAgICAgICAgICI8L3VsPlxuIik7CiAgICAgfQogICAgIC8qISB0ZXh0IGZvciB0aGUg
bGluayB0byB0aGUgbGVnZW5kIHBhZ2UgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTGVnZW5k
KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLTzS4gzMXHxc7E1SIpOworICAgICAgcmV0
dXJuIGRlY29kZSgi0YHQvC4g0LvQtdCz0LXQvdC00YMiKTsKICAgICB9CiAKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCkBAIC0xMTIxLDEyICsxMTE3LDEyIEBACiAgICAgLyohIFVzZWQgYXMgYSBtYXJrZXIg
dGhhdCBpcyBwdXQgYmVmb3JlIGEgdGVzdCBpdGVtICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
clRlc3QoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvTF09QiKTsKKyAgICAgIHJldHVy
biBkZWNvZGUoItCi0LXRgdGCIik7CiAgICAgfQogICAgIC8qISBVc2VkIGFzIHRoZSBoZWFkZXIg
b2YgdGhlIHRlc3QgbGlzdCAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJUZXN0TGlzdCgpCiAg
ICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi89DJ08/LINTF09TP1yIpOworICAgICAgcmV0dXJu
IGRlY29kZSgi0KHQv9C40YHQvtC6INGC0LXRgdGC0L7QsiIpOwogICAgIH0KIAogLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KQEAgLTExMzYsNyArMTEzMiw3IEBACiAgICAgLyohIFVzZWQgYXMgYSBzZWN0aW9u
IGhlYWRlciBmb3IgS0RFLTIgSURMIG1ldGhvZHMgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
RENPUE1ldGhvZHMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIkRDT1Ag7cXUz8TZIik7
CisgICAgICByZXR1cm4gZGVjb2RlKCJEQ09QINCc0LXRgtC+0LTRiyIpOwogICAgIH0KIAogLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KQEAgLTExNDYsMTIgKzExNDIsMTIgQEAKICAgICAvKiEgVXNlZCBhcyBh
IHNlY3Rpb24gaGVhZGVyIGZvciBJREwgcHJvcGVydGllcyAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJQcm9wZXJ0aWVzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLz18/K09TXwSIp
OworICAgICAgcmV0dXJuIGRlY29kZSgi0KHQstC+0LnRgdGC0LLQsCIpOwogICAgIH0KICAgICAv
KiEgVXNlZCBhcyBhIHNlY3Rpb24gaGVhZGVyIGZvciBJREwgcHJvcGVydHkgZG9jdW1lbnRhdGlv
biAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQcm9wZXJ0eURvY3VtZW50YXRpb24oKQogICAg
IHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvDPzM7ZyiDT0MnTz8sg09fPytPU1yIpOworICAgICAg
cmV0dXJuIGRlY29kZSgi0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiDRgdCy0L7QudGB0YLQsiIp
OwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTExNjMsMzcgKzExNTksMzcgQEAKICAg
ICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIpKQog
ICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi89TS1cvU1dLZIMTBzs7ZyCIgKTsKKyAg
ICAgICAgcmV0dXJuIGRlY29kZSggItCh0YLRgNGD0LrRgtGD0YDRiyDQtNCw0L3QvdGL0YUiICk7
CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLr
zMHT09kiICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQmtC70LDRgdGB0YsiICk7CiAgICAg
ICB9CiAgICAgfQogICAgIC8qISBVc2VkIGFzIHRoZSB0aXRsZSBvZiBhIEphdmEgcGFja2FnZSAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAg
ewotICAgICAgcmV0dXJuIGRlY29kZSgi8MHLxdQgIikrbmFtZTsKKyAgICAgIHJldHVybiBkZWNv
ZGUoItCf0LDQutC10YIgIikrbmFtZTsKICAgICB9CiAgICAgLyohIFRpdGxlIG9mIHRoZSBwYWNr
YWdlIGluZGV4IHBhZ2UgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFja2FnZUxpc3QoKQog
ICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvDPzM7ZyiDT0MnTz8sg0MHLxdTP1yAiKTsKKyAg
ICAgIHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0L/QsNC60LXRgtC+
0LIgIik7CiAgICAgfQogICAgIC8qISBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhY2thZ2UgaW5k
ZXggcGFnZSAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdlTGlzdERlc2NyaXB0aW9u
KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLwz8zO2cog09DJ08/LIMTPy9XNxc7UydLP
18HOztnIINDBy8XUz9cuIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9C+0LvQvdGL0Lkg0YHQ
v9C40YHQvtC6INC00L7QutGD0LzQtdC90YLQuNGA0L7QstCw0L3QvdGL0YUg0L/QsNC60LXRgtC+
0LIuIik7CiAgICAgfQogICAgIC8qISBUaGUgbGluayBuYW1lIGluIHRoZSBRdWljayBsaW5rcyBo
ZWFkZXIgZm9yIGVhY2ggcGFnZSAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdlcygp
CiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi8MHLxdTZIik7CisgICAgICByZXR1cm4gZGVj
b2RlKCLQn9Cw0LrQtdGC0YsiKTsKICAgICB9CiAgICAgLyohIFRleHQgc2hvd24gYmVmb3JlIGEg
bXVsdGktbGluZSBkZWZpbmUgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGVmaW5lVmFsdWUo
KQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIu3By9LPz9DSxcTFzMXOycU6Iik7CisgICAg
ICByZXR1cm4gZGVjb2RlKCLQnNCw0LrRgNC+0L7Qv9GA0LXQtNC10LvQtdC90LjQtToiKTsKICAg
ICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMjAzLDEyICsxMTk5LDEyIEBACiAgICAgLyoh
IFVzZWQgYXMgYSBtYXJrZXIgdGhhdCBpcyBwdXQgYmVmb3JlIGEgXFxidWcgaXRlbSAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJCdWcoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIu/b
ycLLwSIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J7RiNC40LHQutCwIik7CiAgICAgfQogICAg
IC8qISBVc2VkIGFzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1ZyBsaXN0ICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckJ1Z0xpc3QoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIu/bycLLySIp
OworICAgICAgcmV0dXJuIGRlY29kZSgi0J7RiNC40LHQutC4Iik7CiAgICAgfQogCiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwpAQCAtMTIyNyw3ICsxMjIzLDcgQEAKICAgICAvKiEgVXNlZCBhcyBoZWFkZXIg
UlRGIGdlbmVyYWwgaW5kZXggKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUlRGR2VuZXJhbElu
ZGV4KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLhzMbB18nUztnKINXLwdrB1MXM2CIp
OworICAgICAgcmV0dXJuIGRlY29kZSgi0JDQu9GE0LDQstC40YLQvdGL0Lkg0YPQutCw0LfQsNGC
0LXQu9GMIik7CiAgICAgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBmb3IgdHJhbnNsYXRpb24g
b2YgdGhlIHdvcmQgdGhhdCB3aWxsIHBvc3NpYmx5CkBAIC0xMjM4LDEzICsxMjM0LDEzIEBACiAg
ICAgeyAKICAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikp
CiAgICAgICB7Ci0gICAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLz1NLV
y9TV0tkgxMHOztnIIiA6ICLT1NLVy9TV0tkgxMHOztnIIikpOworICAgICAgICBRQ1N0cmluZyBy
ZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi0KHRgtGA0YPQutGC0YPRgNGLINC00LDQvdC90YvRhSIg
OiAi0YHRgtGA0YPQutGC0YPRgNGLINC00LDQvdC90YvRhSIpKTsKICAgICAgICAgcmV0dXJuIGRl
Y29kZShyZXN1bHQpOyAKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgUUNT
dHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIuvMwdPTIiA6ICLLzMHT0yIpKTsKLSAgICAg
ICAgaWYoIXNpbmd1bGFyKSByZXN1bHQrPSLZIjsKKyAgICAgICAgUUNTdHJpbmcgcmVzdWx0KChm
aXJzdF9jYXBpdGFsID8gItCa0LvQsNGB0YEiIDogItC60LvQsNGB0YEiKSk7CisgICAgICAgIGlm
KCFzaW5ndWxhcikgcmVzdWx0Kz0i0YsiOwogICAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7
IAogICAgICAgfQogICAgIH0KQEAgLTEyNTUsOCArMTI1MSw4IEBACiAgICAgICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckZpbGUoYm9vbCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1bGFyKQog
ICAgIHsgCi0gICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi5sHKzCIgOiAi
xsHKzCIpKTsKLSAgICAgIGlmICghc2luZ3VsYXIpICByZXN1bHQrPSLZIjsKKyAgICAgIFFDU3Ry
aW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQpNCw0LnQuyIgOiAi0YTQsNC50LsiKSk7Cisg
ICAgICBpZiAoIXNpbmd1bGFyKSAgcmVzdWx0Kz0i0YsiOwogICAgICAgcmV0dXJuIGRlY29kZShy
ZXN1bHQpOyAKICAgICB9CiAKQEAgLTEyNjYsOCArMTI2Miw4IEBACiAgICAgICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZShib29sIGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3Vs
YXIpCiAgICAgeyAKLSAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLw0s/T
1NLBztPU1yIgOiAi0NLP09TSwc7T1NciKSk7Ci0gICAgICByZXN1bHQrPShzaW5ndWxhcj8izyDJ
zcXOIjoiwSDJzcXOIik7CisgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi
0J/RgNC+0YHRgtGA0LDQvdGB0YLQsiIgOiAi0L/RgNC+0YHRgtGA0LDQvdGB0YLQsiIpKTsKKyAg
ICAgIHJlc3VsdCs9KHNpbmd1bGFyPyLQviDQuNC80LXQvSI6ItCwINC40LzQtdC9Iik7CiAgICAg
ICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7IAogICAgIH0KIApAQCAtMTI3Nyw4ICsxMjczLDggQEAK
ICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyR3JvdXAoYm9vbCBmaXJzdF9jYXBpdGFs
LCBib29sIHNpbmd1bGFyKQogICAgIHsgCi0gICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2Nh
cGl0YWwgPyAi59LV0NAiIDogIsfS1dDQIikpOwotICAgICAgcmVzdWx0Kz0oc2luZ3VsYXIgPyAi
wSIgOiAi2SIpOworICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gItCT0YDR
g9C/0L8iIDogItCz0YDRg9C/0L8iKSk7CisgICAgICByZXN1bHQrPShzaW5ndWxhciA/ICLQsCIg
OiAi0YsiKTsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAgfQogCkBAIC0xMjg4
LDggKzEyODQsOCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWdlKGJvb2wg
Zmlyc3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikKICAgICB7IAotICAgICAgUUNTdHJpbmcgcmVz
dWx0KChmaXJzdF9jYXBpdGFsID8gIvPU0sHOycMiIDogItPU0sHOycMiKSk7Ci0gICAgICByZXN1
bHQrPShzaW5ndWxhciA/ICLBIiA6ICLZIik7CisgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0
X2NhcGl0YWwgPyAi0KHRgtGA0LDQvdC40YYiIDogItGB0YLRgNCw0L3QuNGGIikpOworICAgICAg
cmVzdWx0Kz0oc2luZ3VsYXIgPyAi0LAiIDogItGLIik7CiAgICAgICByZXR1cm4gZGVjb2RlKHJl
c3VsdCk7IAogICAgIH0KIApAQCAtMTI5OSw4ICsxMjk1LDggQEAKICAgICAgKi8KICAgICB2aXJ0
dWFsIFFDU3RyaW5nIHRyTWVtYmVyKGJvb2wgZmlyc3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikK
ICAgICB7IAotICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIv7Mxc4iIDog
It7Mxc4iKSk7Ci0gICAgICBpZiAoIXNpbmd1bGFyKSAgcmVzdWx0Kz0i2SI7CisgICAgICBRQ1N0
cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi0KfQu9C10L0iIDogItGH0LvQtdC9IikpOwor
ICAgICAgaWYgKCFzaW5ndWxhcikgIHJlc3VsdCs9ItGLIjsKICAgICAgIHJldHVybiBkZWNvZGUo
cmVzdWx0KTsgCiAgICAgfQogICAgCkBAIC0xMzEwLDggKzEzMDYsOCBAQAogICAgICAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJHbG9iYWwoYm9vbCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1
bGFyKQogICAgIHsgCi0gICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi58zP
wsHM2M7ZIiA6ICLHzM/CwczYztkiKSk7Ci0gICAgICByZXN1bHQrPShzaW5ndWxhciA/ICLKIiA6
ICLFIik7CisgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi0JPQu9C+0LHQ
sNC70YzQvdGLIiA6ICLQs9C70L7QsdCw0LvRjNC90YsiKSk7CisgICAgICByZXN1bHQrPShzaW5n
dWxhciA/ICLQuSIgOiAi0LUiKTsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAg
fQogCkBAIC0xMzIzLDggKzEzMTksOCBAQAogICAgICAqICBmb3IgdGhlIGF1dGhvciBzZWN0aW9u
IGluIG1hbiBwYWdlcy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQXV0aG9yKGJvb2wgZmly
c3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikKICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
UUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIuHX1M/SIiA6ICLB19TP0iIpKTsKLSAg
ICAgIGlmICghc2luZ3VsYXIpIHJlc3VsdCs9ItkiOworICAgICAgUUNTdHJpbmcgcmVzdWx0KChm
aXJzdF9jYXBpdGFsID8gItCQ0LLRgtC+0YAiIDogItCw0LLRgtC+0YAiKSk7CisgICAgICBpZiAo
IXNpbmd1bGFyKSByZXN1bHQrPSLRiyI7CiAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7IAog
ICAgIH0KIApAQCAtMTMzNiw3ICsxMzMyLDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyUmVmZXJlbmNlcygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi8MXSxcvSxdPU
ztnFINPT2czLySIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/QtdGA0LXQutGA0LXRgdGC0L3R
i9C1INGB0YHRi9C70LrQuCIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTEzNDgs
NyArMTM0NCw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckltcGxlbWVudGVk
RnJvbUxpc3QoaW50IG51bUVudHJpZXMpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi+sHN
xd3BxdQgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOworICAgICAgcmV0dXJuIGRlY29k
ZSgi0JfQsNC80LXRidCw0LXRgiAiKSt0cldyaXRlTGlzdChudW1FbnRyaWVzKSsiLiI7CiAgICAg
fQogCiAgICAgLyohIHVzZWQgaW4gbWVtYmVyIGRvY3VtZW50YXRpb24gYmxvY2tzIHRvIHByb2R1
Y2UgYSBsaXN0IG9mCkBAIC0xMzU2LDcgKzEzNTIsNyBAQAogICAgICAqLwogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJJbXBsZW1lbnRlZEluTGlzdChpbnQgbnVtRW50cmllcykKICAgICB7Ci0gICAg
ICByZXR1cm4gZGVjb2RlKCL6wc3F3cHF1NPRINcgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykr
Ii4iOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNC80LXRidCw0LXRgtGB0Y8g0LIgIikrdHJX
cml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAg
LTEzNjgsNyArMTM2NCw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJURlRh
YmxlT2ZDb250ZW50cygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi78fMwdfMxc7JxSIp
OworICAgICAgcmV0dXJuIGRlY29kZSgi0J7Qs9C70LDQstC70LXQvdC40LUiKTsKICAgICB9CiAK
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMzgwLDcgKzEzNzYsNyBAQAogICAgICAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJEZXByZWNhdGVkTGlzdCgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSggIvPQydPPyyDV09TB0sXX28nIIM/Q0sXExczFzsnKIMkgz9DJ08HOycoiICk7CisgICAg
ICByZXR1cm4gZGVjb2RlKCAi0KHQv9C40YHQvtC6INGD0YHRgtCw0YDQtdCy0YjQuNGFINC+0L/R
gNC10LTQtdC70LXQvdC40Lkg0Lgg0L7Qv9C40YHQsNC90LjQuSIgKTsKICAgICB9CiAKIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCkBAIC0xMzkyLDEyICsxMzg4LDEyIEBACiAgICAgICovCiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0ckV2ZW50cygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIvPPwtnU
ydEiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KHQvtCx0YvRgtC40Y8iICk7CiAgICAgfQog
ICAgIC8qISBIZWFkZXIgdXNlZCBmb3IgdGhlIGRvY3VtZW50YXRpb24gc2VjdGlvbiBvZiBhIGNs
YXNzJyBldmVudHMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckV2ZW50RG9jdW1lbnRhdGlv
bigpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIkPPwtnUydEiICk7CisgICAgICByZXR1
cm4gZGVjb2RlKCAiQ9C+0LHRi9GC0LjRjyIgKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CkBAIC0xNDA4LDM1ICsxNDA0LDM1IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
clBhY2thZ2VUeXBlcygpCiAgICAgeyAKLSAgICAgIHJldHVybiBkZWNvZGUoICL0ydDZINMgz8LM
wdPU2MAg18nEyc3P09TJINDBy8XUwSIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQotC40L/R
iyDRgSDQvtCx0LvQsNGB0YLRjNGOINCy0LjQtNC40LzQvtGB0YLQuCDQv9Cw0LrQtdGC0LAiICk7
CiAgICAgfQogICAgIC8qISBVc2VkIGFzIGEgaGVhZGluZyBmb3IgYSBsaXN0IG9mIEphdmEgY2xh
c3MgZnVuY3Rpb25zIHdpdGggcGFja2FnZSAKICAgICAgKiBzY29wZS4gCiAgICAgICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0clBhY2thZ2VNZW1iZXJzKCkKICAgICB7IAotICAgICAgcmV0dXJu
IGRlY29kZSggIubVzsvDyckg0yDPwszB09TYwCDXycTJzc/T1Mkg0MHLxdTBIiApOworICAgICAg
cmV0dXJuIGRlY29kZSggItCk0YPQvdC60YbQuNC4INGBINC+0LHQu9Cw0YHRgtGM0Y4g0LLQuNC0
0LjQvNC+0YHRgtC4INC/0LDQutC10YLQsCIgKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMgYSBo
ZWFkaW5nIGZvciBhIGxpc3Qgb2Ygc3RhdGljIEphdmEgY2xhc3MgZnVuY3Rpb25zIHdpdGggCiAg
ICAgICogIHBhY2thZ2Ugc2NvcGUuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clN0
YXRpY1BhY2thZ2VNZW1iZXJzKCkKICAgICB7IAotICAgICAgcmV0dXJuIGRlY29kZSggIvPUwdTJ
3sXTy8nFIMbVzsvDyckg0yDPwszB09TYwCDXycTJzc/T1Mkg0MHLxdTBIiApOworICAgICAgcmV0
dXJuIGRlY29kZSggItCh0YLQsNGC0LjRh9C10YHQutC40LUg0YTRg9C90LrRhtC40Lgg0YEg0L7Q
sdC70LDRgdGC0YzRjiDQstC40LTQuNC80L7RgdGC0Lgg0L/QsNC60LXRgtCwIiApOwogICAgIH0K
ICAgICAvKiEgVXNlZCBhcyBhIGhlYWRpbmcgZm9yIGEgbGlzdCBvZiBKYXZhIGNsYXNzIHZhcmlh
YmxlcyB3aXRoIHBhY2thZ2UgCiAgICAgICogc2NvcGUuCiAgICAgICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0clBhY2thZ2VBdHRyaWJzKCkKICAgICB7IAotICAgICAgcmV0dXJuIGRlY29kZSgg
IvDF0sXNxc7O2cUg0yDPwszB09TYwCDXycTJzc/T1Mkg0MHLxdTBIiApOworICAgICAgcmV0dXJu
IGRlY29kZSggItCf0LXRgNC10LzQtdC90L3Ri9C1INGBINC+0LHQu9Cw0YHRgtGM0Y4g0LLQuNC0
0LjQvNC+0YHRgtC4INC/0LDQutC10YLQsCIgKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMgYSBo
ZWFkaW5nIGZvciBhIGxpc3Qgb2Ygc3RhdGljIEphdmEgY2xhc3MgdmFyaWFibGVzIHdpdGggCiAg
ICAgICogcGFja2FnZSBzY29wZS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3Rh
dGljUGFja2FnZUF0dHJpYnMoKQogICAgIHsgCi0gICAgICByZXR1cm4gZGVjb2RlKCAi89TB1Mne
xdPLycUg0MXSxc3Fzs7ZxSDTIM/CzMHT1NjAINfJxMnNz9PUySDQwcvF1MEiICk7CisgICAgICBy
ZXR1cm4gZGVjb2RlKCAi0KHRgtCw0YLQuNGH0LXRgdC60LjQtSDQv9C10YDQtdC80LXQvdC90YvQ
tSDRgSDQvtCx0LvQsNGB0YLRjNGOINCy0LjQtNC40LzQvtGB0YLQuCDQv9Cw0LrQtdGC0LAiICk7
CiAgICAgfQogICAgIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTE0NDgsMTIgKzE0NDQsMTIgQEAK
ICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQWxsKCkKICAgICB7Ci0gICAgICByZXR1
cm4gZGVjb2RlKCAi9cvB2sHUxczYIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCj0LrQsNC3
0LDRgtC10LvRjCIgKTsKICAgICB9CiAgICAgLyohIFB1dCBpbiBmcm9udCBvZiB0aGUgY2FsbCBn
cmFwaCBmb3IgYSBmdW5jdGlvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ2FsbEdyYXBo
KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi59LBxiDX2drP18/XOiIgKTsKKyAgICAg
IHJldHVybiBkZWNvZGUoICLQk9GA0LDRhCDQstGL0LfQvtCy0L7QsjoiICk7CiAgICAgfQogCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwpAQCAtMTQ2NiwxNCArMTQ2MiwxNCBAQAogICAgICAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJTZWFyY2hGb3JJbmRleCgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSggIvDPydPLIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCf0L7QuNGB0LoiICk7CiAg
ICAgfQogICAgIC8qISBUaGlzIHN0cmluZyBpcyB1c2VkIGFzIHRoZSB0aXRsZSBmb3IgdGhlIHBh
Z2UgbGlzdGluZyB0aGUgc2VhcmNoCiAgICAgICogIHJlc3VsdHMuCiAgICAgICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0clNlYXJjaFJlc3VsdHNUaXRsZSgpCiAgICAgewotICAgICAgcmV0dXJu
IGRlY29kZSggIvLF2tXM2NTB1Nkg0M/J08vBIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCg
0LXQt9GD0LvRjNGC0LDRgtGLINC/0L7QuNGB0LrQsCIgKTsKICAgICB9CiAgICAgLyohIFRoaXMg
c3RyaW5nIGlzIHB1dCBqdXN0IGJlZm9yZSBsaXN0aW5nIHRoZSBzZWFyY2ggcmVzdWx0cy4gVGhl
CiAgICAgICogIHRleHQgY2FuIGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBv
ZiBkb2N1bWVudHMgZm91bmQuCkBAIC0xNDg3LDE2ICsxNDgzLDE2IEBACiAgICAgewogICAgICAg
aWYgKG51bURvY3VtZW50cz09MCkKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIusg
08/WwczFzsnALCDQzyD3wdvFzdUg2sHQ0s/T1SDOyd7Fx88gzsUgzsHKxMXOzy4iICk7CisgICAg
ICAgIHJldHVybiBkZWNvZGUoICLQmiDRgdC+0LbQsNC70LXQvdC40Y4sINC/0L4g0JLQsNGI0LXQ
vNGDINC30LDQv9GA0L7RgdGDINC90LjRh9C10LPQviDQvdC1INC90LDQudC00LXQvdC+LiIgKTsK
ICAgICAgIH0KICAgICAgIGVsc2UgaWYoIG51bURvY3VtZW50cyA9PSAxICkKICAgICAgIHsKLSAg
ICAgICAgcmV0dXJuIGRlY29kZSggIu7BysTFziAxIMTPy9XNxc7ULiIgKTsKKyAgICAgICAgcmV0
dXJuIGRlY29kZSggItCd0LDQudC00LXQvSAxINC00L7QutGD0LzQtdC90YIuIiApOwogICAgICAg
fQogICAgICAgZWxzZSAKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIu7BysTFzijP
KSA8Yj4kbnVtPC9iPiDEz8vVzcXO1CjP1ykuICIKLSAgICAgICAgICAi5M/L1c3FztTZIM/U08/S
1MnSz9fBztkg0M8g0sXMxdfBztTOz9PUyS4iICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQ
ndCw0LnQtNC10L0o0L4pIDxiPiRudW08L2I+INC00L7QutGD0LzQtdC90YIo0L7QsikuICIKKyAg
ICAgICAgICAi0JTQvtC60YPQvNC10L3RgtGLINC+0YLRgdC+0YDRgtC40YDQvtCy0LDQvdGLINC/
0L4g0YDQtdC70LXQstCw0L3RgtC90L7RgdGC0LguIiApOwogICAgICAgfQogICAgIH0KICAgICAv
KiEgVGhpcyBzdHJpbmcgaXMgcHV0IGJlZm9yZSB0aGUgbGlzdCBvZiBtYXRjaGVkIHdvcmRzLCBm
b3IgZWFjaCBzZWFyY2ggCkBAIC0xNTA0LDcgKzE1MDAsNyBAQAogICAgICAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJTZWFyY2hNYXRjaGVzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2Rl
KCAi7sHKxMXOzzoiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0J3QsNC50LTQtdC90L46IiAp
OwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTE1MTUsNyArMTUxMSw3IEBACiAgICAg
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clNvdXJjZUZpbGUoUUNTdHJpbmcmIGZpbGVuYW1l
KQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoICLp08jPxM7ZyiDGwcrMICIgKyBmaWxlbmFt
ZSApOworICAgICAgcmV0dXJuIGRlY29kZSggItCY0YHRhdC+0LTQvdGL0Lkg0YTQsNC50LsgIiAr
IGZpbGVuYW1lICk7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTUyNiwzOSArMTUy
MiwzOSBAQAogICAgICAqICBoaWVyYXJjaHkuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ckRpckluZGV4KCkKLSAgICB7IHJldHVybiBkZWNvZGUoICLkxdLF188gxMnSxcvUz9LJyiIg
KTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSggItCU0LXRgNC10LLQviDQtNC40YDQtdC60YLQvtGA
0LjQuSIgKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgY2hh
cHRlciBjb250YWluaW5nIHRoZSBkb2N1bWVudGF0aW9uCiAgICAgICogIG9mIHRoZSBkaXJlY3Rv
cmllcy4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGlyRG9jdW1lbnRhdGlvbigp
Ci0gICAgeyByZXR1cm4gZGVjb2RlKCAi5MnSxcvUz9LJySIgKTsgfQorICAgIHsgcmV0dXJuIGRl
Y29kZSggItCU0LjRgNC10LrRgtC+0YDQuNC4IiApOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2Vk
IGFzIHRoZSB0aXRsZSBvZiB0aGUgZGlyZWN0b3J5IGluZGV4IGFuZCBhbHNvIGluIHRoZQogICAg
ICAqICBRdWljayBsaW5rcyBvZiBhIEhUTUwgcGFnZSwgdG8gbGluayB0byB0aGUgZGlyZWN0b3J5
IGhpZXJhcmNoeS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGlyZWN0b3JpZXMo
KQotICAgIHsgcmV0dXJuIGRlY29kZSggIuHMxsHXydTO2cog1cvB2sHUxczYIMTJ0sXL1M/Sycoi
ICk7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoICLQkNC70YTQsNCy0LjRgtC90YvQuSDRg9C60LDQ
t9Cw0YLQtdC70Ywg0LTQuNGA0LXQutGC0L7RgNC40LkiICk7IH0KIAogICAgIC8qISBUaGlzIHJl
dHVybnMgYSBzZW50ZW5jZXMgdGhhdCBpbnRyb2R1Y2VzIHRoZSBkaXJlY3RvcnkgaGllcmFyY2h5
LiAKICAgICAgKiAgYW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgc29ydGVkIGFscGhhYmV0aWNhbGx5
IHBlciBsZXZlbAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEaXJEZXNjcmlwdGlv
bigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCAi5MXSxdfPIMTJ0sXL1M/SycoiICk7IH0KKyAgICB7
IHJldHVybiBkZWNvZGUoICLQlNC10YDQtdCy0L4g0LTQuNGA0LXQutGC0L7RgNC40LkiICk7IH0K
IAogICAgIC8qISBUaGlzIHJldHVybnMgdGhlIHRpdGxlIG9mIGEgZGlyZWN0b3J5IHBhZ2UuIFRo
ZSBuYW1lIG9mIHRoZQogICAgICAqICBkaXJlY3RvcnkgaXMgcGFzc2VkIHZpYSBcYSBkaXJOYW1l
LgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEaXJSZWZlcmVuY2UoY29uc3QgY2hh
ciAqZGlyTmFtZSkKLSAgICB7IFFDU3RyaW5nIHJlc3VsdD1RQ1N0cmluZygi88/ExdLWwc7JxSDE
ydLFy9TP0snJICIpKyBkaXJOYW1lOyByZXR1cm4gZGVjb2RlKCByZXN1bHQgKTsgfQorICAgIHsg
UUNTdHJpbmcgcmVzdWx0PVFDU3RyaW5nKCLQodC+0LTQtdGA0LbQsNC90LjQtSDQtNC40YDQtdC6
0YLQvtGA0LjQuCAiKSsgZGlyTmFtZTsgcmV0dXJuIGRlY29kZSggcmVzdWx0ICk7IH0KIAogICAg
IC8qISBUaGlzIHJldHVybnMgdGhlIHdvcmQgZGlyZWN0b3J5IHdpdGggb3Igd2l0aG91dCBzdGFy
dGluZyBjYXBpdGFsCiAgICAgICogIChcYSBmaXJzdF9jYXBpdGFsKSBhbmQgaW4gc2lndWxhciBv
ciBwbHVyYWwgZm9ybSAoXGEgc2luZ3VsYXIpLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJEaXIoYm9vbCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1bGFyKQogICAgIHsgCi0gICAg
ICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi5MnSxcvUz9LJIiA6ICLEydLFy9TP
0skiKSk7Ci0gICAgICBpZiAoc2luZ3VsYXIpIHJlc3VsdCs9ItEiOyBlbHNlIHJlc3VsdCs9Iski
OworICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gItCU0LjRgNC10LrRgtC+
0YDQuCIgOiAi0LTQuNGA0LXQutGC0L7RgNC4IikpOworICAgICAgaWYgKHNpbmd1bGFyKSByZXN1
bHQrPSLRjyI7IGVsc2UgcmVzdWx0Kz0i0LgiOwogICAgICAgcmV0dXJuIGRlY29kZSggcmVzdWx0
ICk7IAogICAgIH0KIApAQCAtMTU3MSwxMCArMTU2NywyOCBAQAogICAgICAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJPdmVybG9hZFRleHQoKQogICAgIHsKLSAgICAgICByZXR1cm4gZGVjb2Rl
KCAi/NTBIMbVzsvDydEg0MXSxcfS1dbFzsEgySDQ0sXEz9PUwdfM0cXU09EgydPLzMDeydTFzNjO
zyAiCi0gICAgICAgICAgICAgICLEzNEg1cTPwtPU18EgydPQz8zY2s/Xwc7J0S4g787BIM/UzMne
wcXU09Egz9Qg19nbxdXQz83RztXUz8ogIgotICAgICAgICAgICAgICAi1M/M2MvPIMbBy9TJ3sXT
y8nNySDB0sfVzcXO1MHNyS4iICk7CisgICAgICAgcmV0dXJuIGRlY29kZSggItCt0YLQsCDRhNGD
0L3QutGG0LjRjyDQv9C10YDQtdCz0YDRg9C20LXQvdCwINC4INC/0YDQtdC00L7RgdGC0LDQstC7
0Y/QtdGC0YHRjyDQuNGB0LrQu9GO0YfQuNGC0LXQu9GM0L3QviAiCisgICAgICAgICAgICAgICLQ
tNC70Y8g0YPQtNC+0LHRgdGC0LLQsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy4g0J7QvdCw
INC+0YLQu9C40YfQsNC10YLRgdGPINC+0YIg0LLRi9GI0LXRg9C/0L7QvNGP0L3Rg9GC0L7QuSAi
CisgICAgICAgICAgICAgICLRgtC+0LvRjNC60L4g0YTQsNC60YLQuNGH0LXRgdC60LjQvNC4INCw
0YDQs9GD0LzQtdC90YLQsNC80LguIiApOwogICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v
IG5ldyBzaW5jZSAxLjQuNgorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIC8qISBUaGlzIGlzIHVz
ZWQgdG8gaW50cm9kdWNlIGEgY2FsbGVyIChvciBjYWxsZWQtYnkpIGdyYXBoICovCisgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckNhbGxlckdyYXBoKCkKKyAgICB7CisgICAgICByZXR1cm4gZGVjb2Rl
KCLQk9GA0LDRhCDQstGL0LfQvtCy0LAg0YTRg9C90LrRhtC40Lk6Iik7CisgICAgfQorICAgICAK
KyAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1l
c3BhY2UgYmVmb3JlIHRoZSBsaXN0CisgICAgICogIG9mIGRvY3VtZW50YXRpb24gYmxvY2tzIGZv
ciBlbnVtZXJhdGlvbiB2YWx1ZXMKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRW51
bWVyYXRpb25WYWx1ZURvY3VtZW50YXRpb24oKQorICAgIHsgcmV0dXJuIGRlY29kZSgi0K3Qu9C1
0LzQtdC90YLRiyDQv9C10YDQtdGH0LjRgdC70LXQvdC40LkiKTsgfQorICAgICAKKyAgICAgCiB9
OwogCiAjZW5kaWYK
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>111029</attachid>
            <date>2007-02-23 10:14 0000</date>
            <desc>app-doc/doxygen-1.4.7.ebuild</desc>
            <filename>doxygen-1.4.7.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2FwcC1kb2MvZG94eWdlbi9kb3h5Z2VuLTEuNC43
LmVidWlsZCx2IDEuMTcgMjAwNy8wMS8yMyAxNjowMDoxNiBnZW5vbmUgRXhwICQKCmluaGVyaXQg
ZXV0aWxzIGZsYWctby1tYXRpYyB0b29sY2hhaW4tZnVuY3MgcXQzCgpERVNDUklQVElPTj0iZG9j
dW1lbnRhdGlvbiBzeXN0ZW0gZm9yIEMrKywgQywgSmF2YSwgT2JqZWN0aXZlLUMsIFB5dGhvbiwg
SURMLCBhbmQgb3RoZXIgbGFuZ3VhZ2VzIgpIT01FUEFHRT0iaHR0cDovL3d3dy5kb3h5Z2VuLm9y
Zy8iClNSQ19VUkk9ImZ0cDovL2Z0cC5zdGFjay5ubC9wdWIvdXNlcnMvZGltaXRyaS8ke1B9LnNy
Yy50YXIuZ3oiCiMJdW5pY29kZT8gKCBtaXJyb3I6Ly9nZW50b28vJHtQTn0tdXRmOC1ydS5wYXRj
aC5neiApIgoKTElDRU5TRT0iR1BMLTIiClNMT1Q9IjAiCktFWVdPUkRTPSJhbHBoYSBhbWQ2NCBh
cm0gaHBwYSBpYTY0IG02OGsgcHBjIHBwYy1tYWNvcyBwcGM2NCBzMzkwIHNoIHNwYXJjIHg4NiB+
eDg2LWZic2QiCklVU0U9ImRvYyBxdDMgdGV0ZXggdW5pY29kZSIKClJERVBFTkQ9Ij49bWVkaWEt
Z2Z4L2dyYXBodml6LTIuNgoJcXQzPyAoICQocXRfbWluX3ZlcnNpb24gMy4zKSApCgl0ZXRleD8g
KCB2aXJ0dWFsL3RldGV4ICkKCXZpcnR1YWwvZ2hvc3RzY3JpcHQiCkRFUEVORD0iPj1zeXMtYXBw
cy9zZWQtNAoJJHtSREVQRU5EfSIKCkVQQVRDSF9TVUZGSVg9InBhdGNoIgoKc3JjX3VucGFjaygp
IHsKCXVucGFjayAke0F9CgljZCAke1N9CgkjIHVzZSBDRkxBR1MsIENYWEZMQUdTLCBMREZMQUdT
CglzZWQgLWkub3JpZyAtZSAnczpeXChUTUFLRV9DRkxBR1NfUkVMRUFTRVx0KlwpPSAuKiQ6XDE9
ICQoRUNGTEFHUyk6JyBcCgkJLWUgJ3M6XlwoVE1BS0VfQ1hYRkxBR1NfUkVMRUFTRVx0KlwpPSAu
KiQ6XDE9ICQoRUNYWEZMQUdTKTonIFwKCQktZSAnczpeXChUTUFLRV9MRkxBR1NfUkVMRUFTRVxz
KlwpPS4qJDpcMT0gJChFTERGTEFHUyk6JyBcCgkJdG1ha2UvbGliL3t7bGludXgsZnJlZWJzZCxu
ZXRic2Qsb3BlbmJzZCxzb2xhcmlzfS1nKyssbWFjb3N4LWMrK30vdG1ha2UuY29uZgoKCSMgQ29u
c29saWRhdGUgcGF0Y2hlcywgYXBwbHkgRnJlZUJTRCBjb25maWd1cmUgcGF0Y2gsIGNvZGVwYWdl
IHBhdGNoLAoJIyBxdG9vbHMgc3R1ZmYsIGFuZCBwYXRjaGVzIGZvciBidWdzIDEyOTE0MiwgMTIx
NzcwLCBhbmQgMTI5NTYwLgoJZXBhdGNoICR7RklMRVNESVJ9LyR7UFZ9Cgl1c2UgdW5pY29kZSAm
JiBlcGF0Y2ggIiR7RklMRVNESVJ9Ii8ke1B9LXV0ZjgtcnUucGF0Y2gKCglpZiBpcy1mbGFncSAi
LU8zIiA7IHRoZW4KCSAgICBlY2hvCgkgICAgZXdhcm4gIkNvbXBpbGluZyB3aXRoIC1PMyBpcyBr
bm93biB0byBwcm9kdWNlIGluY29ycmVjdGx5IgoJICAgIGV3YXJuICJvcHRpbWl6ZWQgY29kZSB3
aGljaCBicmVha3MgZG94eWdlbi4iCgkgICAgZWNobwoJICAgIGVwYXVzZSA2CgkgICAgZWxvZyAi
Q29udGludWluZyB3aXRoIC1PMiBpbnN0ZWFkIC4uLiIKCSAgICBlY2hvCgkgICAgcmVwbGFjZS1m
bGFncyAiLU8zIiAiLU8yIgoJZmkKfQoKc3JjX2NvbXBpbGUoKSB7CglleHBvcnQgRUNGTEFHUz0i
JHtDRkxBR1N9IiBFQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IiBFTERGTEFHUz0iJHtMREZMQUdTfSIK
CSMgc2V0IC4vY29uZmlndXJlIG9wdGlvbnMgKHByZWZpeCwgUXQgYmFzZWQgd2l6YXJkLCBkb2Nk
aXIpCglsb2NhbCBteV9jb25mPSItLXByZWZpeCAke0R9dXNyIgoJaWYgdXNlIHF0MzsgdGhlbgoJ
ICAgIGVpbmZvICJ1c2luZyBRVERJUjogJyRRVERJUicuIgoJICAgIGV4cG9ydCBMRF9MSUJSQVJZ
X1BBVEg9JHtRVERJUn0vJChnZXRfbGliZGlyKToke0xEX0xJQlJBUllfUEFUSH0KCSAgICBleHBv
cnQgTElCUkFSWV9QQVRIPSR7UVRESVJ9LyQoZ2V0X2xpYmRpcik6JHtMSUJSQVJZX1BBVEh9Cgkg
ICAgZWluZm8gInVzaW5nIFFUIExJQlJBUllfUEFUSDogJyRMSUJSQVJZX1BBVEgnLiIKCSAgICBl
aW5mbyAidXNpbmcgUVQgTERfTElCUkFSWV9QQVRIOiAnJExEX0xJQlJBUllfUEFUSCcuIgoJICAg
IC4vY29uZmlndXJlICR7bXlfY29uZn0gJCh1c2Vfd2l0aCBxdDMgZG94eXdpemFyZCkgfHwgZGll
ICdjb25maWd1cmUgZmFpbGVkJwoJZWxzZQoJICAgIC4vY29uZmlndXJlICR7bXlfY29uZn0gfHwg
ZGllICdjb25maWd1cmUgZmFpbGVkJwoJZmkKCgkjIGFuZCBjb21waWxlCgllbWFrZSBDQz0iJCh0
Yy1nZXRDQykiIENYWD0iJCh0Yy1nZXRDWFgpIiBMSU5LPSIkKHRjLWdldENYWCkiIFwKCSAgICBM
SU5LX1NITElCPSIkKHRjLWdldENYWCkiIGFsbCB8fCBkaWUgJ2VtYWtlIGZhaWxlZCcKCgkjIGdl
bmVyYXRlIGh0bWwgYW5kIHBkZiAoaWYgdGV0ZXggaW4gdXNlKSBkb2N1bWVudHMuCgkjIGVycm9y
cyBoZXJlIGFyZSBub3QgY29uc2lkZXJlZCBmYXRhbCwgaGVuY2UgdGhlIGV3YXJuIG1lc3NhZ2UK
CSMgVGVYJ3MgZm9udCBjYWNoaW5nIGluIC92YXIvY2FjaGUvZm9udHMgY2F1c2VzIHNhbmRib3gg
d2FybmluZ3MsCgkjIHNvIHdlIGFsbG93IGl0LgoJaWYgdXNlIGRvYzsgdGhlbgoJCWlmIHVzZSB0
ZXRleDsgdGhlbgoJCQlhZGR3cml0ZSAvdmFyL2NhY2hlL2ZvbnRzCgkJCWFkZHdyaXRlIC91c3Iv
c2hhcmUvdGV4bWYvZm9udHMvcGsKCQkJYWRkd3JpdGUgL3Vzci9zaGFyZS90ZXhtZi9scy1SCgkJ
CW1ha2UgcGRmIHx8IGV3YXJuICcibWFrZSBwZGYgZG9jcyIgZmFpbGVkLicKCQllbHNlCgkJCWNw
IGRvYy9Eb3h5ZmlsZSBkb2MvRG94eWZpbGUub3JpZwoJCQljcCBkb2MvTWFrZWZpbGUgZG9jL01h
a2VmaWxlLm9yaWcKCQkJc2VkIC1pLm9yaWcgLWUgInMvR0VORVJBVEVfTEFURVggICAgPSBZRVMv
R0VORVJBVEVfTEFURVggICAgPSBOTy8iIGRvYy9Eb3h5ZmlsZQoJCQlzZWQgLWkub3JpZyAtZSAi
cy9AZXBzdG9wZGYvIyBAZXBzdG9wZGYvIiBcCgkJCQktZSAicy9AY3AgTWFrZWZpbGUubGF0ZXgv
IyBAY3AgTWFrZWZpbGUubGF0ZXgvIiBcCgkJCQktZSAicy9Ac2VkLyMgQHNlZC8iIGRvYy9NYWtl
ZmlsZQoJCQltYWtlIGRvY3MgfHwgZXdhcm4gJyJtYWtlIGh0bWwgZG9jcyIgZmFpbGVkLicKCQlm
aQoJZmkKfQoKc3JjX2luc3RhbGwoKSB7CgltYWtlIERFU1RESVI9JHtEfSBNQU4xRElSPXNoYXJl
L21hbi9tYW4xIFwKCQlpbnN0YWxsIHx8IGRpZSAnIm1ha2UgaW5zdGFsbCIgZmFpbGVkLicKCglk
b2RvYyBJTlNUQUxMIExBTkdVQUdFLkhPV1RPIFJFQURNRQoKCSMgcGRmIGFuZCBodG1sIG1hbnVh
bHMKCWlmIHVzZSBkb2M7IHRoZW4KCQlpbnNpbnRvIC91c3Ivc2hhcmUvZG9jLyR7UEZ9CgkJaWYg
dXNlIHRldGV4OyB0aGVuCgkJCWRvaW5zIGxhdGV4L2RveHlnZW5fbWFudWFsLnBkZgoJCWZpCgkJ
ZG9odG1sIC1yIGh0bWwvKgoJZmkKfQoKcGtnX3Bvc3RpbnN0KCkgewoJZWxvZwoJZWxvZyAiVGhl
IFVTRSBmbGFncyBxdCwgZG9jLCBhbmQgdGV0ZXggd2lsbCBlbmFibGUgZG94eXdpemFyZCwgb3Ii
CgllbG9nICJ0aGUgaHRtbCBhbmQgcGRmIGRvY3VtZW50YXRpb24sIHJlc3BlY3RpdmVseS4gIEZv
ciBleGFtcGxlcyIKCWVsb2cgImFuZCBvdGhlciBnb29kaWVzLCBzZWUgdGhlIHNvdXJjZSB0YXJi
YWxsLiAgRm9yIHNvbWUgZXhhbXBsZSIKCWVsb2cgIm91dHB1dCwgcnVuIGRveHlnZW4gb24gdGhl
IGRveHlnZW4gc291cmNlIHVzaW5nIHRoZSBEb3h5ZmlsZSIKCWVsb2cgInByb3ZpZGVkIGluIHRo
ZSB0b3AtbGV2ZWwgc291cmNlIGRpci4iCgllbG9nCgllbG9nICJTZWUgdGhlIERveHlnZW4gaG9t
ZXBhZ2UgZm9yIGFkZGl0aW9uYWwgbGFuZ3VhZ2Ugc3VwcG9ydCB0b29scy4iCgllbG9nCn0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>111033</attachid>
            <date>2007-02-23 10:25 0000</date>
            <desc>app-doc/doxygen-1.5.1.ebuild</desc>
            <filename>doxygen-1.5.1.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2FwcC1kb2MvZG94eWdlbi9kb3h5Z2VuLTEuNS4x
LmVidWlsZCx2IDEuMiAyMDA3LzAxLzIzIDE2OjAwOjE2IGdlbm9uZSBFeHAgJAoKaW5oZXJpdCBl
dXRpbHMgZmxhZy1vLW1hdGljIHRvb2xjaGFpbi1mdW5jcyBxdDMKCkRFU0NSSVBUSU9OPSJkb2N1
bWVudGF0aW9uIHN5c3RlbSBmb3IgQysrLCBDLCBKYXZhLCBPYmplY3RpdmUtQywgUHl0aG9uLCBJ
REwsIGFuZCBvdGhlciBsYW5ndWFnZXMiCkhPTUVQQUdFPSJodHRwOi8vd3d3LmRveHlnZW4ub3Jn
LyIKU1JDX1VSST0iZnRwOi8vZnRwLnN0YWNrLm5sL3B1Yi91c2Vycy9kaW1pdHJpLyR7UH0uc3Jj
LnRhci5neiIKCkxJQ0VOU0U9IkdQTC0yIgpTTE9UPSIwIgpLRVlXT1JEUz0ifmFscGhhIH5hbWQ2
NCB+YXJtIH5ocHBhIH5pYTY0IH5wcGMgfnBwYy1tYWNvcyB+cHBjNjQgfnMzOTAgfnNoIH5zcGFy
YyB+eDg2IH54ODYtZmJzZCIKSVVTRT0iZG9jIHF0MyB0ZXRleCB1bmljb2RlIgoKUkRFUEVORD0i
Pj1tZWRpYS1nZngvZ3JhcGh2aXotMi42CglxdDM/ICggJChxdF9taW5fdmVyc2lvbiAzLjMpICkK
CXRldGV4PyAoIHZpcnR1YWwvdGV0ZXggKQoJdmlydHVhbC9naG9zdHNjcmlwdCIKREVQRU5EPSI+
PXN5cy1hcHBzL3NlZC00Cgkke1JERVBFTkR9IgoKRVBBVENIX1NVRkZJWD0icGF0Y2giCgpzcmNf
dW5wYWNrKCkgewoJdW5wYWNrICR7QX0KCWNkICR7U30KCSMgdXNlIENGTEFHUywgQ1hYRkxBR1Ms
IExERkxBR1MKCXNlZCAtaS5vcmlnIC1lICdzOl5cKFRNQUtFX0NGTEFHU19SRUxFQVNFXHQqXCk9
IC4qJDpcMT0gJChFQ0ZMQUdTKTonIFwKCQktZSAnczpeXChUTUFLRV9DWFhGTEFHU19SRUxFQVNF
XHQqXCk9IC4qJDpcMT0gJChFQ1hYRkxBR1MpOicgXAoJCS1lICdzOl5cKFRNQUtFX0xGTEFHU19S
RUxFQVNFXHMqXCk9LiokOlwxPSAkKEVMREZMQUdTKTonIFwKCQl0bWFrZS9saWIve3tsaW51eCxm
cmVlYnNkLG5ldGJzZCxvcGVuYnNkLHNvbGFyaXN9LWcrKyxtYWNvc3gtYysrfS90bWFrZS5jb25m
CgoJIyBDb25zb2xpZGF0ZSBwYXRjaGVzLCBhcHBseSBGcmVlQlNEIGNvbmZpZ3VyZSBwYXRjaCwg
Y29kZXBhZ2UgcGF0Y2gsCgkjIHF0b29scyBzdHVmZiwgYW5kIHBhdGNoZXMgZm9yIGJ1Z3MgMTI5
MTQyLCAxMjE3NzAsIGFuZCAxMjk1NjAuCgllcGF0Y2ggJHtGSUxFU0RJUn0vJHtQTn0tMS41LWxl
Z2FjeS1wYXRjaGVzLmRpZmYKCXVzZSB1bmljb2RlICYmIGVwYXRjaCAiJHtGSUxFU0RJUn0iLyR7
UH0tdXRmOC1ydS5wYXRjaAoKCWlmIGlzLWZsYWdxICItTzMiIDsgdGhlbgoJICAgIGVjaG8KCSAg
ICBld2FybiAiQ29tcGlsaW5nIHdpdGggLU8zIGlzIGtub3duIHRvIHByb2R1Y2UgaW5jb3JyZWN0
bHkiCgkgICAgZXdhcm4gIm9wdGltaXplZCBjb2RlIHdoaWNoIGJyZWFrcyBkb3h5Z2VuLiIKCSAg
ICBlY2hvCgkgICAgZXBhdXNlIDYKCSAgICBlbG9nICJDb250aW51aW5nIHdpdGggLU8yIGluc3Rl
YWQgLi4uIgoJICAgIGVjaG8KCSAgICByZXBsYWNlLWZsYWdzICItTzMiICItTzIiCglmaQp9Cgpz
cmNfY29tcGlsZSgpIHsKCWV4cG9ydCBFQ0ZMQUdTPSIke0NGTEFHU30iIEVDWFhGTEFHUz0iJHtD
WFhGTEFHU30iIEVMREZMQUdTPSIke0xERkxBR1N9IgoJIyBzZXQgLi9jb25maWd1cmUgb3B0aW9u
cyAocHJlZml4LCBRdCBiYXNlZCB3aXphcmQsIGRvY2RpcikKCWxvY2FsIG15X2NvbmY9Ii0tcHJl
Zml4ICR7RH11c3IiCglpZiB1c2UgcXQzOyB0aGVuCgkgICAgZWluZm8gInVzaW5nIFFURElSOiAn
JFFURElSJy4iCgkgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0ke1FURElSfS8kKGdldF9saWJk
aXIpOiR7TERfTElCUkFSWV9QQVRIfQoJICAgIGV4cG9ydCBMSUJSQVJZX1BBVEg9JHtRVERJUn0v
JChnZXRfbGliZGlyKToke0xJQlJBUllfUEFUSH0KCSAgICBlaW5mbyAidXNpbmcgUVQgTElCUkFS
WV9QQVRIOiAnJExJQlJBUllfUEFUSCcuIgoJICAgIGVpbmZvICJ1c2luZyBRVCBMRF9MSUJSQVJZ
X1BBVEg6ICckTERfTElCUkFSWV9QQVRIJy4iCgkgICAgLi9jb25maWd1cmUgJHtteV9jb25mfSAk
KHVzZV93aXRoIHF0MyBkb3h5d2l6YXJkKSB8fCBkaWUgJ2NvbmZpZ3VyZSBmYWlsZWQnCgllbHNl
CgkgICAgLi9jb25maWd1cmUgJHtteV9jb25mfSB8fCBkaWUgJ2NvbmZpZ3VyZSBmYWlsZWQnCglm
aQoKCSMgYW5kIGNvbXBpbGUKCWVtYWtlIENDPSIkKHRjLWdldENDKSIgQ1hYPSIkKHRjLWdldENY
WCkiIExJTks9IiQodGMtZ2V0Q1hYKSIgXAoJICAgIExJTktfU0hMSUI9IiQodGMtZ2V0Q1hYKSIg
YWxsIHx8IGRpZSAnZW1ha2UgZmFpbGVkJwoKCSMgZ2VuZXJhdGUgaHRtbCBhbmQgcGRmIChpZiB0
ZXRleCBpbiB1c2UpIGRvY3VtZW50cy4KCSMgZXJyb3JzIGhlcmUgYXJlIG5vdCBjb25zaWRlcmVk
IGZhdGFsLCBoZW5jZSB0aGUgZXdhcm4gbWVzc2FnZQoJIyBUZVgncyBmb250IGNhY2hpbmcgaW4g
L3Zhci9jYWNoZS9mb250cyBjYXVzZXMgc2FuZGJveCB3YXJuaW5ncywKCSMgc28gd2UgYWxsb3cg
aXQuCglpZiB1c2UgZG9jOyB0aGVuCgkJaWYgdXNlIHRldGV4OyB0aGVuCgkJCWFkZHdyaXRlIC92
YXIvY2FjaGUvZm9udHMKCQkJYWRkd3JpdGUgL3Vzci9zaGFyZS90ZXhtZi9mb250cy9wawoJCQlh
ZGR3cml0ZSAvdXNyL3NoYXJlL3RleG1mL2xzLVIKCQkJbWFrZSBwZGYgfHwgZXdhcm4gJyJtYWtl
IHBkZiBkb2NzIiBmYWlsZWQuJwoJCWVsc2UKCQkJY3AgZG9jL0RveHlmaWxlIGRvYy9Eb3h5Zmls
ZS5vcmlnCgkJCWNwIGRvYy9NYWtlZmlsZSBkb2MvTWFrZWZpbGUub3JpZwoJCQlzZWQgLWkub3Jp
ZyAtZSAicy9HRU5FUkFURV9MQVRFWCAgICA9IFlFUy9HRU5FUkFURV9MQVRFWCAgICA9IE5PLyIg
ZG9jL0RveHlmaWxlCgkJCXNlZCAtaS5vcmlnIC1lICJzL0BlcHN0b3BkZi8jIEBlcHN0b3BkZi8i
IFwKCQkJCS1lICJzL0BjcCBNYWtlZmlsZS5sYXRleC8jIEBjcCBNYWtlZmlsZS5sYXRleC8iIFwK
CQkJCS1lICJzL0BzZWQvIyBAc2VkLyIgZG9jL01ha2VmaWxlCgkJCW1ha2UgZG9jcyB8fCBld2Fy
biAnIm1ha2UgaHRtbCBkb2NzIiBmYWlsZWQuJwoJCWZpCglmaQp9CgpzcmNfaW5zdGFsbCgpIHsK
CW1ha2UgREVTVERJUj0ke0R9IE1BTjFESVI9c2hhcmUvbWFuL21hbjEgXAoJCWluc3RhbGwgfHwg
ZGllICcibWFrZSBpbnN0YWxsIiBmYWlsZWQuJwoKCWRvZG9jIElOU1RBTEwgTEFOR1VBR0UuSE9X
VE8gUkVBRE1FCgoJIyBwZGYgYW5kIGh0bWwgbWFudWFscwoJaWYgdXNlIGRvYzsgdGhlbgoJCWlu
c2ludG8gL3Vzci9zaGFyZS9kb2MvJHtQRn0KCQlpZiB1c2UgdGV0ZXg7IHRoZW4KCQkJZG9pbnMg
bGF0ZXgvZG94eWdlbl9tYW51YWwucGRmCgkJZmkKCQlkb2h0bWwgLXIgaHRtbC8qCglmaQp9Cgpw
a2dfcG9zdGluc3QoKSB7CgllbG9nCgllbG9nICJUaGUgVVNFIGZsYWdzIHF0LCBkb2MsIGFuZCB0
ZXRleCB3aWxsIGVuYWJsZSBkb3h5d2l6YXJkLCBvciIKCWVsb2cgInRoZSBodG1sIGFuZCBwZGYg
ZG9jdW1lbnRhdGlvbiwgcmVzcGVjdGl2ZWx5LiAgRm9yIGV4YW1wbGVzIgoJZWxvZyAiYW5kIG90
aGVyIGdvb2RpZXMsIHNlZSB0aGUgc291cmNlIHRhcmJhbGwuICBGb3Igc29tZSBleGFtcGxlIgoJ
ZWxvZyAib3V0cHV0LCBydW4gZG94eWdlbiBvbiB0aGUgZG94eWdlbiBzb3VyY2UgdXNpbmcgdGhl
IERveHlmaWxlIgoJZWxvZyAicHJvdmlkZWQgaW4gdGhlIHRvcC1sZXZlbCBzb3VyY2UgZGlyLiIK
CWVsb2cKCWVsb2cgIlNlZSB0aGUgRG94eWdlbiBob21lcGFnZSBmb3IgYWRkaXRpb25hbCBsYW5n
dWFnZSBzdXBwb3J0IHRvb2xzLiIKCWVsb2cKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111034</attachid>
            <date>2007-02-23 10:26 0000</date>
            <desc>files/doxygen-1.5.1-utf8-ru.patch</desc>
            <filename>doxygen-1.5.1-utf8-ru.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtcnVOIGRveHlnZW4tMS41LjEub3JpZy9zcmMvdHJhbnNsYXRvcl9ydS5oIGRveHlnZW4t
MS41LjEvc3JjL3RyYW5zbGF0b3JfcnUuaAotLS0gZG94eWdlbi0xLjUuMS5vcmlnL3NyYy90cmFu
c2xhdG9yX3J1LmgJMjAwNi0wOC0wNyAxODoyMzo0OC4wMDAwMDAwMDAgKzA0MDAKKysrIGRveHln
ZW4tMS41LjEvc3JjL3RyYW5zbGF0b3JfcnUuaAkyMDA3LTAyLTIzIDEzOjIxOjIzLjAwMDAwMDAw
MCArMDMwMApAQCAtMjAsMzAgKzIwLDMwIEBACiAgKiBBbmRyZXkgVi4gU3RvbHlhcm92IHJlbGVh
c2VkIEZlYiAxNCwgMjAwMQogICogQWxleGFuZHIgVi4gQ2hlbHBhbm92IDxjYXZAY3J5cHRvcHJv
LnJ1PiByZWxlYXNlZCBTZXAgMjUsIDIwMDQKICAqCi0gKiDw0skg0MXSxdfPxMUg2sHHz8zP18vP
1yDTzM/XwSBsaXN0IMkgZG9jdW1lbnRhdGlvbiDVwtLBztkuCisgKiDQn9GA0Lgg0L/QtdGA0LXQ
stC+0LTQtSDQt9Cw0LPQvtC70L7QstC60L7QsiDRgdC70L7QstCwIGxpc3Qg0LggZG9jdW1lbnRh
dGlvbiDRg9Cx0YDQsNC90YsuCiAgKgotICogTW9kdWxlcyDQxdLF18XExc7PIMvByyDH0tXQ0Nks
INTByyDLwcsgzc/E1czJIN7B3cUg19PFx88g1yDS1dPTy8/NIAotICogINDF0sXXz8TFINfT1NLF
3sHF1NPRINcgy8/O1MXL09TFIM3PxNXM0SDLwcsgxcTJzsnD2SDU0sHO08zRw8nJLCDGwcrMwQot
ICogIMkgxNIuLCDe1M8g1yDEwc7Oz80g08zV3sHFIM7FINPP19PFzSDQz8TIz8TJ1Cwg1MXNIMLP
zMXFIN7UzyAKLSAqICDTz8/U18XU09TX1cDdwdEgy8/Nwc7EwSDXIGRveHlnZW4gyc3FztXF1NPR
IFxncm91cC4KKyAqIE1vZHVsZXMg0L/QtdGA0LXQstC10LTQtdC90L4g0LrQsNC6INCz0YDRg9C/
0L/Riywg0YLQsNC6INC60LDQuiDQvNC+0LTRg9C70Lgg0YfQsNGJ0LUg0LLRgdC10LPQviDQsiDR
gNGD0YHRgdC60L7QvCAKKyAqICDQv9C10YDQtdCy0L7QtNC1INCy0YHRgtGA0LXRh9Cw0LXRgtGB
0Y8g0LIg0LrQvtC90YLQtdC60YHRgtC1INC80L7QtNGD0LvRjyDQutCw0Log0LXQtNC40L3QuNGG
0Ysg0YLRgNCw0L3RgdC70Y/RhtC40LgsINGE0LDQudC70LAKKyAqICDQuCDQtNGALiwg0YfRgtC+
INCyINC00LDQvdC90L7QvCDRgdC70YPRh9Cw0LUg0L3QtSDRgdC+0LLRgdC10Lwg0L/QvtC00YXQ
vtC00LjRgiwg0YLQtdC8INCx0L7Qu9C10LUg0YfRgtC+IAorICogINGB0L7QvtGC0LLQtdGC0YHR
gtCy0YPRjtGJ0LDRjyDQutC+0LzQsNC90LTQsCDQsiBkb3h5Z2VuINC40LzQtdC90YPQtdGC0YHR
jyBcZ3JvdXAuCiAgKiAKLSAqIPDSz9PYwsEgzsUgz9DUyc3J2snSz9fB1NggZGVjb2RlIM/C0sHN
zNHRINLF2tXM2NTB1Cwg3NTPIM3P1sXUINDSydfF09TJCi0gKiAgyyDQxdLFy8/EydLP18vFINfI
z8TBINcg1M/NIN7J08zFINLV09PLycggyc3FziDGwcrMz9cuCisgKiDQn9GA0L7RgdGM0LHQsCDQ
vdC1INC+0L/RgtC40LzQuNC30LjRgNC+0LLQsNGC0YwgZGVjb2RlINC+0LHRgNCw0LzQu9GP0Y8g
0YDQtdC30YPQu9GM0YLQsNGCLCDRjdGC0L4g0LzQvtC20LXRgiDQv9GA0LjQstC10YHRgtC4Cisg
KiAg0Log0L/QtdGA0LXQutC+0LTQuNGA0L7QstC60LUg0LLRhdC+0LTQsCDQsiDRgtC+0Lwg0YfQ
uNGB0LvQtSDRgNGD0YHRgdC60LjRhSDQuNC80LXQvSDRhNCw0LnQu9C+0LIuCiAgKgotICog79TE
wc7PINDSxcTQz97Uxc7JxSDQ0skg0MXSxdfPxMUgcmVsYXRlZCBmdW5jdGlvbnMgLSAiz9TOz9PR
3cnF09EgyyDLzMHT09UKLSAqICDG1c7Lw8nJIiwgwSDOxSAi09fR2sHOztnFIMbVzsvDyckiLCDe
1M8g18XSzs8gxM8g1MXIINDP0iDQz8vBIMXT1Ngg1M/M2MvPCi0gKiAgcmVsYXRlZCB0byBjbGFz
cywgySDOxdQgcmVsYXRlZCB0byB0ZW1wbGF0ZSwgcGFja2FnZSDJINQuxC4g8M/TzMXEzsXFCi0g
KiAg2sHNxd7BzsnFIMvB08HF1NPRIMLPzNjbyc7T1NfBIG1lbWJlci4KKyAqINCe0YLQtNCw0L3Q
viDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40LUg0L/RgNC4INC/0LXRgNC10LLQvtC00LUgcmVsYXRl
ZCBmdW5jdGlvbnMgLSAi0L7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDQutC70LDRgdGB0YMKKyAq
ICDRhNGD0L3QutGG0LjQuCIsINCwINC90LUgItGB0LLRj9C30LDQvdC90YvQtSDRhNGD0L3QutGG
0LjQuCIsINGH0YLQviDQstC10YDQvdC+INC00L4g0YLQtdGFINC/0L7RgCDQv9C+0LrQsCDQtdGB
0YLRjCDRgtC+0LvRjNC60L4KKyAqICByZWxhdGVkIHRvIGNsYXNzLCDQuCDQvdC10YIgcmVsYXRl
ZCB0byB0ZW1wbGF0ZSwgcGFja2FnZSDQuCDRgi7QtC4g0J/QvtGB0LvQtdC00L3QtdC1CisgKiAg
0LfQsNC80LXRh9Cw0L3QuNC1INC60LDRgdCw0LXRgtGB0Y8g0LHQvtC70YzRiNC40L3RgdGC0LLQ
sCBtZW1iZXIuCiAgKgotICog8M8g18/azc/Wzs/T1Mkg0NLJINDF0sXXz8TFIG1lbWJlcnMg1cvB
2tnXwcXU09Eg3szFzs/NIN7Fx88g3NTP1CBtZW1iZXIKLSAqICDR18zRxdTT0S4gCisgKiDQn9C+
INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/RgNC4INC/0LXRgNC10LLQvtC00LUgbWVtYmVycyDR
g9C60LDQt9GL0LLQsNC10YLRgdGPINGH0LvQtdC90L7QvCDRh9C10LPQviDRjdGC0L7RgiBtZW1i
ZXIKKyAqICDRj9Cy0LvRj9C10YLRgdGPLiAKICAqCi0gKiBDb21wb3VuZHMg0MXSxdfFxMXOzyDL
wcsgy8zB09PZLCDTzSDz1NLP1dPU0sHQLgorICogQ29tcG91bmRzINC/0LXRgNC10LLQtdC00LXQ
vdC+INC60LDQuiDQutC70LDRgdGB0YssINGB0Lwg0KHRgtGA0L7Rg9GB0YLRgNCw0L8uCiAgKgot
ICog79DSxcTFzMXOydEg0M/Nxd7Fzs7ZxSA/PyDR18zRwNTT0SDT0M/SztnNyS4KKyAqINCe0L/R
gNC10LTQtdC70LXQvdC40Y8g0L/QvtC80LXRh9C10L3QvdGL0LUgPz8g0Y/QstC70Y/RjtGC0YHR
jyDRgdC/0L7RgNC90YvQvNC4LgogICoKLSAqIOLMwcfPxMHSzs/T1Mk6IFZpdGFseSBBLiBSZXBp
biA8dml0YWx5QHJhZGlvLmhvcC5zdHUubmV2YS5ydT4sCi0gKiAgICDtycjBycwg58zV28XOy8/X
IDxiYm1hbkBtYWlsLnJ1PgorICog0JHQu9Cw0LPQvtC00LDRgNC90L7RgdGC0Lg6IFZpdGFseSBB
LiBSZXBpbiA8dml0YWx5QHJhZGlvLmhvcC5zdHUubmV2YS5ydT4sCisgKiAgICDQnNC40YXQsNC4
0Lsg0JPQu9GD0YjQtdC90LrQvtCyIDxiYm1hbkBtYWlsLnJ1PgogICovCiAKICNpZm5kZWYgVFJB
TlNMQVRPUl9SVV9ICkBAIC01NywxNCArNTcsNyBAQAogICAgICAqLwogICAgIGlubGluZSBRQ1N0
cmluZyBkZWNvZGUoY29uc3QgUUNTdHJpbmcgJiBzSW5wdXQpCiAgICAgeyAKLSAgICAgIGlmIChD
b25maWdfZ2V0Qm9vbCgiVVNFX1dJTkRPV1NfRU5DT0RJTkciKSkKLSAgICAgIHsKLSAgICAgICAg
cmV0dXJuIEtvaThSVG9XaW5kb3dzMTI1MShzSW5wdXQpOwotICAgICAgfQotICAgICAgZWxzZQot
ICAgICAgewogICAgICAgICByZXR1cm4gc0lucHV0OwotICAgICAgfQogICAgIH0KIAogICBwdWJs
aWM6CkBAIC03NSwxMTcgKzY4LDEwMyBAQAogICAgIC8qIFVzZWQgdG8gZ2V0IHRoZSBjb21tYW5k
KHMpIGZvciB0aGUgbGFuZ3VhZ2Ugc3VwcG9ydC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIGxh
dGV4TGFuZ3VhZ2VTdXBwb3J0Q29tbWFuZCgpCiAgICAgewotICAgICAgaWYgKENvbmZpZ19nZXRC
b29sKCJVU0VfV0lORE9XU19FTkNPRElORyIpKQotICAgICAgeyAKLSAgICAgICAgcmV0dXJuICJc
XHVzZXBhY2thZ2VbY3AxMjUxXXtpbnB1dGVuY31cblxcdXNlcGFja2FnZVtydXNzaWFuXXtiYWJl
bH1cbiI7IAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgeyAKLSAgICAgICAgcmV0dXJuICJc
XHVzZXBhY2thZ2Vba29pOC1yXXtpbnB1dGVuY31cblxcdXNlcGFja2FnZVtydXNzaWFuXXtiYWJl
bH1cbiI7IAotICAgICAgfQorICAgICAgICByZXR1cm4gIlxcdXNlcGFja2FnZVtVVEYtOF17aW5w
dXRlbmN9XG5cXHVzZXBhY2thZ2VbcnVzc2lhbl17YmFiZWx9XG4iOyAKICAgICB9CiAKICAgICAv
KiEgcmV0dXJuIHRoZSBsYW5ndWFnZSBjaGFyc2V0LiBUaGlzIHdpbGwgYmUgdXNlZCBmb3IgdGhl
IEhUTUwgb3V0cHV0ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyBpZExhbmd1YWdlQ2hhcnNldCgp
CiAgICAgewotICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJVU0VfV0lORE9XU19FTkNPRElORyIp
KQotICAgICAgeyAKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzLTEyNTEiOyAKLSAgICAgIH0KLSAg
ICAgIGVsc2UKLSAgICAgIHsgCi0gICAgICAgIHJldHVybiAia29pOC1yIjsgCi0gICAgICB9Cisg
ICAgICAgIHJldHVybiAiVVRGLTgiOyAKICAgICB9CiAKICAgICAvLyAtLS0gTGFuZ3VhZ2UgdHJh
bnNsYXRpb24gbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvKiEgdXNlZCBpbiB0
aGUgY29tcG91bmQgZG9jdW1lbnRhdGlvbiBiZWZvcmUgYSBsaXN0IG9mIHJlbGF0ZWQgZnVuY3Rp
b25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWxhdGVkRnVuY3Rpb25zKCkKLSAgICB7
IHJldHVybiBkZWNvZGUoIu/Uzs/T0d3JxdPRIMsgy8zB09PVIMbVzsvDyckiKTsgfQorICAgIHsg
cmV0dXJuIGRlY29kZSgi0J7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDQutC70LDRgdGB0YMg0YTR
g9C90LrRhtC40LgiKTsgfQogCiAgICAgLyohIHN1YnNjcmlwdCBmb3IgdGhlIHJlbGF0ZWQgZnVu
Y3Rpb25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWxhdGVkU3Vic2NyaXB0KCkKLSAg
ICB7IHJldHVybiBkZWNvZGUoIijOxSDezMXO2SDLzMHT08EpIik7IH0KKyAgICB7IHJldHVybiBk
ZWNvZGUoIijQvdC1INGH0LvQtdC90Ysg0LrQu9Cw0YHRgdCwKSIpOyB9CiAKICAgICAvKiEgaGVh
ZGVyIHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgZmlsZXMs
IGNsYXNzZXMgYW5kIG5hbWVzcGFjZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRldGFp
bGVkRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8M/E0s/Czs/FIM/QydPBzsnF
Iik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7QtNGA0L7QsdC90L7QtSDQvtC/0LjRgdCw
0L3QuNC1Iik7IH0KIAogICAgIC8qISBoZWFkZXIgdGhhdCBpcyBwdXQgYmVmb3JlIHRoZSBsaXN0
IG9mIHR5cGVkZWZzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJUeXBlZGVmRG9j
dW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLv0NLFxMXMxc7J0SDUydDP1yIpOyB9
CisgICAgeyByZXR1cm4gZGVjb2RlKCLQntC/0YDQtdC00LXQu9C10L3QuNGPINGC0LjQv9C+0LIi
KTsgfQogCiAgICAgLyohIGhlYWRlciB0aGF0IGlzIHB1dCBiZWZvcmUgdGhlIGxpc3Qgb2YgZW51
bWVyYXRpb25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJFbnVtZXJhdGlvbkRv
Y3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8MXSxd7J08zFzsnRIik7IH0KKyAg
ICB7IHJldHVybiBkZWNvZGUoItCf0LXRgNC10YfQuNGB0LvQtdC90LjRjyIpOyB9CiAKICAgICAv
KiEgaGVhZGVyIHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgbGlzdCBvZiBtZW1iZXIgZnVuY3Rpb25z
LiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJGdW5jdGlvbkRvY3VtZW50YXRpb24o
KQotICAgIHsgcmV0dXJuIGRlY29kZSgi7cXUz8TZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUo
ItCc0LXRgtC+0LTRiyIpOyB9CiAKICAgICAvKiEgaGVhZGVyIHRoYXQgaXMgcHV0IGJlZm9yZSB0
aGUgbGlzdCBvZiBtZW1iZXIgYXR0cmlidXRlcy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
TWVtYmVyRGF0YURvY3VtZW50YXRpb24oKQogICAgIHsKICAgICAgIGlmIChDb25maWdfZ2V0Qm9v
bCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNv
ZGUoICLwz8zRIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0J/QvtC70Y8iICk7CiAgICAg
ICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLkwc7O2cUg
y8zB09PBIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JTQsNC90L3Ri9C1INC60LvQsNGB
0YHQsCIgKTsKICAgICAgIH0KICAgICB9CiAKICAgICAvKiEgdGhpcyBpcyB0aGUgdGV4dCBvZiBh
IGxpbmsgcHV0IGFmdGVyIGJyaWVmIGRlc2NyaXB0aW9ucy4gKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyTW9yZSgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLwz8TSz8LOxcUuLi4iKTsgfQorICAg
IHsgcmV0dXJuIGRlY29kZSgi0J/QvtC00YDQvtCx0L3QtdC1Li4uIik7IH0KIAogICAgIC8qISBw
dXQgaW4gdGhlIGNsYXNzIGRvY3VtZW50YXRpb24gKi8KICAgICAvKiBEb3NuJ3QgdXNlIHdoZW4g
b3B0aW1pemF0aW9uIGZvciBDIGlzIG9uLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJMaXN0
T2ZBbGxNZW1iZXJzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi8M/MztnKINPQydPP
yyDezMXOz9cgy8zB09PBIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCf0L7Qu9C90YvQuSDR
gdC/0LjRgdC+0Log0YfQu9C10L3QvtCyINC60LvQsNGB0YHQsCIgKTsKICAgICB9CiAKICAgICAv
KiEgdXNlZCBhcyB0aGUgdGl0bGUgb2YgdGhlICJsaXN0IG9mIGFsbCBtZW1iZXJzIiBwYWdlIG9m
IGEgY2xhc3MgKi8KICAgICAvKiBEb3NuJ3QgdXNlIHdoZW4gb3B0aW1pemF0aW9uIGZvciBDIGlz
IG9uLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJMaXN0KCkKICAgICB7Ci0gICAg
ICByZXR1cm4gZGVjb2RlKCAiQ9DJ08/LIN7Mxc7P1yDLzMHT08EiICk7CisgICAgICByZXR1cm4g
ZGVjb2RlKCAiQ9C/0LjRgdC+0Log0YfQu9C10L3QvtCyINC60LvQsNGB0YHQsCIgKTsKICAgICB9
CiAKICAgICAvKiEgdGhpcyBpcyB0aGUgZmlyc3QgcGFydCBvZiBhIHNlbnRlbmNlIHRoYXQgaXMg
Zm9sbG93ZWQgYnkgYSBjbGFzcyBuYW1lICovCiAgICAgLyogRG9zbid0IHVzZSB3aGVuIG9wdGlt
aXphdGlvbiBmb3IgQyBpcyBvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVGhpc0lzVGhl
TGlzdE9mQWxsTWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLwz8zO2cog09DJ08/LIN7M
xc7P1yDLzMHT08EgIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQuSDRgdC/
0LjRgdC+0Log0YfQu9C10L3QvtCyINC60LvQsNGB0YHQsCAiKTsgfQogCiAgICAgLyohIHRoaXMg
aXMgdGhlIHJlbWFpbmRlciBvZiB0aGUgc2VudGVuY2UgYWZ0ZXIgdGhlIGNsYXNzIG5hbWUgKi8K
ICAgICAvKiBEb3NuJ3QgdXNlIHdoZW4gb3B0aW1pemF0aW9uIGZvciBDIGlzIG9uLiAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJJbmNsdWRpbmdJbmhlcml0ZWRNZW1iZXJzKCkKLSAgICB7IHJl
dHVybiBkZWNvZGUoIiwg18vMwN7B0SDOwdPMxcTVxc3ZxSDJ2iDCwdrP18/HzyDLzMHT08EiKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgiLCDQstC60LvRjtGH0LDRjyDQvdCw0YHQu9C10LTRg9C1
0LzRi9C1INC40Lcg0LHQsNC30L7QstC+0LPQviDQutC70LDRgdGB0LAiKTsgfQogCiAgICAgLyoh
IHRoaXMgaXMgcHV0IGF0IHRoZSBhdXRob3Igc2VjdGlvbnMgYXQgdGhlIGJvdHRvbSBvZiBtYW4g
cGFnZXMuCiAgICAgICogIHBhcmFtZXRlciBzIGlzIG5hbWUgb2YgdGhlIHByb2plY3QgbmFtZS4K
ICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyR2VuZXJhdGVkQXV0b21hdGljYWxseShj
b25zdCBjaGFyICpzKQotICAgIHsgUUNTdHJpbmcgcmVzdWx0PWRlY29kZSgi4dfUz83B1MnexdPL
ySDTz9rEwc7PIERveHlnZW4iKTsKLSAgICAgIGlmIChzKSByZXN1bHQrPWRlY29kZSgiIMTM0SAi
KStzOwotICAgICAgcmVzdWx0Kz1kZWNvZGUoIiDJ2iDJ08jPxM7Px88g1MXL09TBLiIpOyAKKyAg
ICB7IFFDU3RyaW5nIHJlc3VsdD1kZWNvZGUoItCQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INGB
0L7Qt9C00LDQvdC+IERveHlnZW4iKTsKKyAgICAgIGlmIChzKSByZXN1bHQrPWRlY29kZSgiINC0
0LvRjyAiKStzOworICAgICAgcmVzdWx0Kz1kZWNvZGUoIiDQuNC3INC40YHRhdC+0LTQvdC+0LPQ
viDRgtC10LrRgdGC0LAuIik7IAogICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICAv
KiEgcHV0IGFmdGVyIGFuIGVudW0gbmFtZSBpbiB0aGUgbGlzdCBvZiBhbGwgbWVtYmVycyAqLwog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtTmFtZSgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLQ
xdLF3snTzMXOycUiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0L/QtdGA0LXRh9C40YHQu9C1
0L3QuNC1Iik7IH0KIAogICAgIC8qISBwdXQgYWZ0ZXIgYW4gZW51bSB2YWx1ZSBpbiB0aGUgbGlz
dCBvZiBhbGwgbWVtYmVycyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtVmFsdWUoKQot
ICAgIHsgcmV0dXJuIGRlY29kZSgi3MzFzcXO1Nkg0MXSxd7J08zFzsnRIik7IH0KKyAgICB7IHJl
dHVybiBkZWNvZGUoItGN0LvQtdC80LXQvdGC0Ysg0L/QtdGA0LXRh9C40YHQu9C10L3QuNGPIik7
IH0KIAogICAgIC8qISBwdXQgYWZ0ZXIgYW4gdW5kb2N1bWVudGVkIG1lbWJlciBpbiB0aGUgbGlz
dCBvZiBhbGwgbWVtYmVycyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEZWZpbmVkSW4oKQot
ICAgIHsgcmV0dXJuIGRlY29kZSgiz9DSxcTFzMXOzyDXIik7IH0KKyAgICB7IHJldHVybiBkZWNv
ZGUoItC+0L/RgNC10LTQtdC70LXQvdC+INCyIik7IH0KIAogICAgIC8vIHF1aWNrIHJlZmVyZW5j
ZSBzZWN0aW9ucwogCkBAIC0xOTMsMzkgKzE3MiwzOSBAQAogICAgICAqICBjb21wb3VuZHMgb3Ig
ZmlsZXMgKHNlZSB0aGUgXFxncm91cCBjb21tYW5kKS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFD
U3RyaW5nIHRyTW9kdWxlcygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLn0tXQ0NkiKTsgfQorICAg
IHsgcmV0dXJuIGRlY29kZSgi0JPRgNGD0L/Qv9GLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHB1
dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIHRoZSBjbGFzcyBoaWVyYXJjaHkgKi8KICAg
ICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ2xhc3NIaWVyYXJjaHkoKQotICAgIHsgcmV0dXJuIGRlY29k
ZSgi6cXSwdLIydEgy8zB09PP1yIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQmNC10YDQsNGA
0YXQuNGPINC60LvQsNGB0YHQvtCyIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHB1dCBhYm92ZSBl
YWNoIHBhZ2UgYXMgYSBsaW5rIHRvIHRoZSBsaXN0IG9mIGFubm90YXRlZCBjbGFzc2VzICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0ckNvbXBvdW5kTGlzdCgpCiAgICAgewogICAgICAgaWYgKENv
bmZpZ19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAgICAgICAg
cmV0dXJuIGRlY29kZSggIvPU0tXL1NXS2SDEwc7O2cgiICk7CisgICAgICAgIHJldHVybiBkZWNv
ZGUoICLQodGC0YDRg9C60YLRg9GA0Ysg0LTQsNC90L3Ri9GFIiApOwogICAgICAgfQogICAgICAg
ZWxzZQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi68zB09PZIiApOworICAgICAg
ICByZXR1cm4gZGVjb2RlKCAi0JrQu9Cw0YHRgdGLIiApOwogICAgICAgfQogICAgIH0KIAogICAg
IC8qISBUaGlzIGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIHRoZSBsaXN0IG9m
IGRvY3VtZW50ZWQgZmlsZXMgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRmlsZUxpc3QoKQot
ICAgIHsgcmV0dXJuIGRlY29kZSgi5sHKzNkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0KTQ
sNC50LvRiyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdlIGFzIGEg
bGluayB0byBhbGwgbWVtYmVycyBvZiBjb21wb3VuZHMuICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ckNvbXBvdW5kTWVtYmVycygpCiAgICAgewogICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJP
UFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSgg
IvDPzNEg09TS1cvU1dIiICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQn9C+0LvRjyDRgdGC
0YDRg9C60YLRg9GAIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICBy
ZXR1cm4gZGVjb2RlKCAi/szFztkgy8zB09PP1yIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZSgg
ItCn0LvQtdC90Ysg0LrQu9Cw0YHRgdC+0LIiICk7CiAgICAgICB9CiAgICAgfQogCkBAIC0yMzMs
MzMgKzIxMiwzMyBAQAogICAgIC8qPz8qLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlTWVt
YmVycygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIvPQydPPyyDezMXOz9cg19PFyCDG
wcrMz9ciICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KHQv9C40YHQvtC6INGH0LvQtdC90L7Q
siDQstGB0LXRhSDRhNCw0LnQu9C+0LIiICk7CiAgICAgfQogCiAgICAgLyohIFRoaXMgaXMgcHV0
IGFib3ZlIGVhY2ggcGFnZSBhcyBhIGxpbmsgdG8gYWxsIHJlbGF0ZWQgcGFnZXMuICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0clJlbGF0ZWRQYWdlcygpCi0gICAgLyogPz8g98HSycHO1CDQxdLF
18/EwSAi880uINTBy9bFOiAiIMLPzMXFINXEwd7O2cosIM7PIM7FINcg2sHHz8zP18vFLAotICAg
ICDLwcsg1yDEwc7Oz80g08zV3sHFLiAqLwotICAgIHsgcmV0dXJuIGRlY29kZSgi79DJ08HOydEi
KTsgfQorICAgIC8qID8/INCS0LDRgNC40LDQvdGCINC/0LXRgNC10LLQvtC00LAgItCh0LwuINGC
0LDQutC20LU6ICIg0LHQvtC70LXQtSDRg9C00LDRh9C90YvQuSwg0L3QviDQvdC1INCyINC30LDQ
s9C+0LvQvtCy0LrQtSwKKyAgICAg0LrQsNC6INCyINC00LDQvdC90L7QvCDRgdC70YPRh9Cw0LUu
ICovCisgICAgeyByZXR1cm4gZGVjb2RlKCLQntC/0LjRgdCw0L3QuNGPIik7IH0KIAogICAgIC8q
ISBUaGlzIGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIGFsbCBleGFtcGxlcy4g
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRXhhbXBsZXMoKQotICAgIHsgcmV0dXJuIGRlY29k
ZSgi8NLJzcXS2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9GA0LjQvNC10YDRiyIpOyB9
CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdlIGFzIGEgbGluayB0byB0aGUg
c2VhcmNoIGVuZ2luZS4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2VhcmNoKCkKLSAgICB7
IHJldHVybiBkZWNvZGUoIvDPydPLIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7QuNGB
0LoiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjbGFzcyBo
aWVyYXJjaHkuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNsYXNzSGllcmFyY2h5RGVzY3Jp
cHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi6cXSwdLIydEgy8zB09PP1y4iKTsgfQorICAg
IHsgcmV0dXJuIGRlY29kZSgi0JjQtdGA0LDRgNGF0LjRjyDQutC70LDRgdGB0L7Qsi4iKTsgfQog
CiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBsaXN0IHdpdGggYWxsIGZp
bGVzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlTGlzdERlc2NyaXB0aW9uKGJvb2wg
ZXh0cmFjdEFsbCkKICAgICB7Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9IvDPzM7ZyiDT0MnTz8sg
IjsKLSAgICAgIGlmICghZXh0cmFjdEFsbCkgcmVzdWx0Kz0ixM/L1c3FztTJ0s/Xwc7O2cggIjsK
LSAgICAgIHJlc3VsdCs9IsbByszP1y4iOworICAgICAgUUNTdHJpbmcgcmVzdWx0PSLQn9C+0LvQ
vdGL0Lkg0YHQv9C40YHQvtC6ICI7CisgICAgICBpZiAoIWV4dHJhY3RBbGwpIHJlc3VsdCs9ItC0
0L7QutGD0LzQtdC90YLQuNGA0L7QstCw0L3QvdGL0YUgIjsKKyAgICAgIHJlc3VsdCs9ItGE0LDQ
udC70L7Qsi4iOwogICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjY4
LDM3ICsyNDcsMzcgQEAKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpF
X09VVFBVVF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi89TS1cvU
1dLZIMTBzs7ZyCDTIMnIIMvSwdTLyc0gz9DJ08HOycXNLiIgKTsKKyAgICAgICAgcmV0dXJuIGRl
Y29kZSggItCh0YLRgNGD0LrRgtGD0YDRiyDQtNCw0L3QvdGL0YUg0YEg0LjRhSDQutGA0LDRgtC6
0LjQvCDQvtC/0LjRgdCw0L3QuNC10LwuIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAg
ewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi68zB09PZINMgycggy9LB1MvJzSDP0MnTwc7Jxc0u
IiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JrQu9Cw0YHRgdGLINGBINC40YUg0LrRgNCw
0YLQutC40Lwg0L7Qv9C40YHQsNC90LjQtdC8LiIgKTsKICAgICAgIH0KICAgICB9CiAKICAgICAv
KiEgVGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0aCBhbGwgY2xhc3MgbWVt
YmVycy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ29tcG91bmRNZW1iZXJzRGVzY3JpcHRp
b24oYm9vbCBleHRyYWN0QWxsKQogICAgIHsKLSAgICAgICAgUUNTdHJpbmcgcmVzdWx0PSLz0MnT
z8sg19PFyCAiOwotICAgICAgICBpZighZXh0cmFjdEFsbCkgcmVzdWx0Kz0ixM/L1c3FztTJ0s/X
wc7O2cggIjsKKyAgICAgICAgUUNTdHJpbmcgcmVzdWx0PSLQodC/0LjRgdC+0Log0LLRgdC10YUg
IjsKKyAgICAgICAgaWYoIWV4dHJhY3RBbGwpIHJlc3VsdCs9ItC00L7QutGD0LzQtdC90YLQuNGA
0L7QstCw0L3QvdGL0YUgIjsKICAgICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJPUFRJTUlaRV9P
VVRQVVRfRk9SX0MiKSkKLSAgICAgICAgICByZXN1bHQrPSLezMXOz9cg09TS1cvU1dIgxMHOztnI
INPPINPT2czLwc3JIM7BICI7CisgICAgICAgICAgcmVzdWx0Kz0i0YfQu9C10L3QvtCyINGB0YLR
gNGD0LrRgtGD0YAg0LTQsNC90L3Ri9GFINGB0L4g0YHRgdGL0LvQutCw0LzQuCDQvdCwICI7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICByZXN1bHQrPSLezMXOz9cgy8zB09PP1yDTzyDT09nMy8HN
ySDOwSAiOworICAgICAgICAgIHJlc3VsdCs9ItGH0LvQtdC90L7QsiDQutC70LDRgdGB0L7QsiDR
gdC+INGB0YHRi9C70LrQsNC80Lgg0L3QsCAiOwogICAgICAgICBpZighZXh0cmFjdEFsbCkKICAg
ICAgICAgewogICAgICAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZP
Ul9DIikpCi0gICAgICAgICAgICByZXN1bHQrPSLEz8vVzcXO1MHDycAg0M8g09TS1cvU1dLFIMTM
0SDLwdbEz8fPIN7Mxc7BLiI7CisgICAgICAgICAgICByZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC
0LDRhtC40Y4g0L/QviDRgdGC0YDRg9C60YLRg9GA0LUg0LTQu9GPINC60LDQttC00L7Qs9C+INGH
0LvQtdC90LAuIjsKICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQrPSLEz8vVzcXO
1MHDycAg0M8gy8zB09PVIMTM0SDLwdbEz8fPIN7Mxc7BLiI7CisgICAgICAgICAgICByZXN1bHQr
PSLQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y4g0L/QviDQutC70LDRgdGB0YMg0LTQu9GPINC60LDQ
ttC00L7Qs9C+INGH0LvQtdC90LAuIjsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg
IHsKICAgICAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIp
KQotICAgICAgICAgICAgcmVzdWx0ICs9ICLT1NLVy9TV0tkiOworICAgICAgICAgICAgcmVzdWx0
ICs9ICLRgdGC0YDRg9C60YLRg9GA0YsiOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
c3VsdCArPSAiy8zB09PZIjsKLSAgICAgICAgICByZXN1bHQrPSIsIMsgy8/Uz9LZzSDPzskg0NLJ
zsHEzMXWwdQuIjsKKyAgICAgICAgICAgIHJlc3VsdCArPSAi0LrQu9Cw0YHRgdGLIjsKKyAgICAg
ICAgICByZXN1bHQrPSIsINC6INC60L7RgtC+0YDRi9C8INC+0L3QuCDQv9GA0LjQvdCw0LTQu9C1
0LbQsNGCLiI7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRlY29kZSggcmVzdWx0ICk7CiAg
ICAgfQpAQCAtMzA2LDU2ICsyODUsNTYgQEAKICAgICAvKiEgVGhpcyBpcyBhbiBpbnRyb2R1Y3Rp
b24gdG8gdGhlIHBhZ2Ugd2l0aCBhbGwgZmlsZSBtZW1iZXJzLiAqLwogICAgIHZpcnR1YWwgUUNT
dHJpbmcgdHJGaWxlTWVtYmVyc0Rlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAgICB7Ci0g
ICAgICBRQ1N0cmluZyByZXN1bHQ9IvPQydPPyyDX08XIICI7Ci0gICAgICBpZiAoIWV4dHJhY3RB
bGwpIHJlc3VsdCs9IsTPy9XNxc7UydLP18HOztnIICI7CisgICAgICBRQ1N0cmluZyByZXN1bHQ9
ItCh0L/QuNGB0L7QuiDQstGB0LXRhSAiOworICAgICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQr
PSLQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC90L3Ri9GFICI7CiAKICAgICAgIGlmIChDb25m
aWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAgICAgIHJl
c3VsdCs9IsbVzsvDycosINDF0sXNxc7O2cgsIM3By9LPz9DSxcTFzMXOycosICIKLSAgICAgICAg
ICAgICAgICAi0MXSxd7J08zFzsnKIMkgz9DSxcTFzMXOycog1MnQz9ciOworICAgICAgICByZXN1
bHQrPSLRhNGD0L3QutGG0LjQuSwg0L/QtdGA0LXQvNC10L3QvdGL0YUsINC80LDQutGA0L7QvtC/
0YDQtdC00LXQu9C10L3QuNC5LCAiCisgICAgICAgICAgICAgICAgItC/0LXRgNC10YfQuNGB0LvQ
tdC90LjQuSDQuCDQvtC/0YDQtdC00LXQu9C10L3QuNC5INGC0LjQv9C+0LIiOwogICAgICAgfQog
ICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXN1bHQrPSLezMXOz9cgxsHKzM/XICI7Cisg
ICAgICAgIHJlc3VsdCs9ItGH0LvQtdC90L7QsiDRhNCw0LnQu9C+0LIgIjsKICAgICAgIH0KLSAg
ICAgIHJlc3VsdCs9IiDTzyDT09nMy8HNySDOwSAiOworICAgICAgcmVzdWx0Kz0iINGB0L4g0YHR
gdGL0LvQutCw0LzQuCDQvdCwICI7CiAgICAgICBpZiAoZXh0cmFjdEFsbCkKLSAgICAgICAgcmVz
dWx0Kz0ixsHKzNksIMsgy8/Uz9LZzSDPzskg0NLJzsHEzMXWwdQuIjsKKyAgICAgICAgcmVzdWx0
Kz0i0YTQsNC50LvRiywg0Log0LrQvtGC0L7RgNGL0Lwg0L7QvdC4INC/0YDQuNC90LDQtNC70LXQ
ttCw0YIuIjsKICAgICAgIGVsc2UKLSAgICAgICAgcmVzdWx0Kz0ixM/L1c3FztTBw8nALiI7Cisg
ICAgICAgIHJlc3VsdCs9ItC00L7QutGD0LzQtdC90YLQsNGG0LjRji4iOwogICAgICAgcmV0dXJu
IGRlY29kZSggcmVzdWx0ICk7CiAgICAgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0
aW9uIHRvIHRoZSBwYWdlIHdpdGggdGhlIGxpc3Qgb2YgYWxsIGV4YW1wbGVzICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckV4YW1wbGVzRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29k
ZSgi8M/MztnKINPQydPPyyDQ0snNxdLP1y4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/Q
vtC70L3Ri9C5INGB0L/QuNGB0L7QuiDQv9GA0LjQvNC10YDQvtCyLiIpOyB9CiAKICAgICAvKiEg
VGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0aCB0aGUgbGlzdCBvZiByZWxh
dGVkIHBhZ2VzICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlbGF0ZWRQYWdlc0Rlc2NyaXB0
aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDPzM7ZyiDT0MnTz8sgxM/Qz8zOydTFzNjO2cgg
z9DJ08HOycouIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQuSDRgdC/0LjR
gdC+0Log0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvRhSDQvtC/0LjRgdCw0L3QuNC5LiIpOyB9
CiAKICAgICAvKiEgVGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0aCB0aGUg
bGlzdCBvZiBjbGFzcy9maWxlIGdyb3VwcyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNb2R1
bGVzRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8M/MztnKINPQydPPyyDH0tXQ
0C4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiDQ
s9GA0YPQv9C/LiIpOyB9CiAKICAgICAvLyBpbmRleCB0aXRsZXMgKHRoZSBwcm9qZWN0IG5hbWUg
aXMgcHJlcGVuZGVkIGZvciB0aGVzZSkgCiAKIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gSFRN
TCBhcyB0aGUgdGl0bGUgb2YgaW5kZXguaHRtbC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
RG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLkz8vVzcXO1MHDydEiKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0JTQvtC60YPQvNC10L3RgtCw0YbQuNGPIik7IH0KIAogICAg
IC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIHdp
dGggdGhlIAogICAgICAqIGluZGV4IG9mIGFsbCBncm91cHMuCiAgICAgICovCiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0ck1vZHVsZUluZGV4KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIuHMxsHXydTO
2cog1cvB2sHUxczYIMfS1dDQIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCQ0LvRhNCw0LLQ
uNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCDQs9GA0YPQv9C/Iik7IH0KIAogICAgIC8qISBU
aGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIHdpdGggdGhl
IAogICAgICAqIGNsYXNzIGhpZXJhcmNoeS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRySGllcmFyY2hpY2FsSW5kZXgoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi6cXSwdLIyd7F08vJ
yiDT0MnTz8sgy8zB09PP1yIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQmNC10YDQsNGA0YXQ
uNGH0LXRgdC60LjQuSDRgdC/0LjRgdC+0Log0LrQu9Cw0YHRgdC+0LIiKTsgfQogCiAgICAgLyoh
IFRoaXMgaXMgdXNlZCBpbiBMYVRlWCBhcyB0aGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIgd2l0aCB0
aGUgCiAgICAgICogYW5ub3RhdGVkIGNvbXBvdW5kIGluZGV4LgpAQCAtMzY0LDExICszNDMsMTEg
QEAKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBVVF9GT1Jf
QyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi4czGwdfJ1M7ZyiDVy8HawdTF
zNgg09TS1cvU1dIgxMHOztnIIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JDQu9GE0LDQ
stC40YLQvdGL0Lkg0YPQutCw0LfQsNGC0LXQu9GMINGB0YLRgNGD0LrRgtGD0YAg0LTQsNC90L3R
i9GFIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXR1cm4gZGVj
b2RlKCAi4czGwdfJ1M7ZyiDVy8HawdTFzNggy8zB09PP1yIgKTsKKyAgICAgICAgcmV0dXJuIGRl
Y29kZSggItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCDQutC70LDRgdGB
0L7QsiIgKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTM3NiwxMyArMzU1LDEzIEBACiAgICAgICog
bGlzdCBvZiBhbGwgZmlsZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckZpbGVJ
bmRleCgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCAi89DJ08/LIMbByszP1yIgKTsgfQorICAgIHsg
cmV0dXJuIGRlY29kZSggItCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIiICk7IH0KIAogICAgIC8q
ISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIGNvbnRh
aW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIGdyb3Vwcy4KICAgICAgKi8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTW9kdWxlRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1
cm4gZGVjb2RlKCLn0tXQ0NkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JPRgNGD0L/Qv9GL
Iik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRo
ZSBjaGFwdGVyIGNvbnRhaW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIGNs
YXNzZXMsIHN0cnVjdHMgYW5kIHVuaW9ucy4KQEAgLTM5MSwxMSArMzcwLDExIEBACiAgICAgewog
ICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAg
IHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIvPU0tXL1NXS2SDEwc7O2cgiICk7CisgICAgICAg
IHJldHVybiBkZWNvZGUoICLQodGC0YDRg9C60YLRg9GA0Ysg0LTQsNC90L3Ri9GFIiApOwogICAg
ICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi68zB09PZ
IiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JrQu9Cw0YHRgdGLIiApOwogICAgICAgfQog
ICAgIH0KIApAQCAtNDAzLDEwMSArMzgyLDEwMSBAQAogICAgICAqICB0aGUgZG9jdW1lbnRhdGlv
biBvZiBhbGwgZmlsZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckZpbGVEb2N1
bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIubByszZIik7IH0KKyAgICB7IHJldHVy
biBkZWNvZGUoItCk0LDQudC70YsiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiBMYVRl
WCBhcyB0aGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIgY29udGFpbmluZwogICAgICAqICB0aGUgZG9j
dW1lbnRhdGlvbiBvZiBhbGwgZXhhbXBsZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ckV4YW1wbGVEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDSyc3F0tki
KTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/RgNC40LzQtdGA0YsiKTsgfQogCiAgICAgLyoh
IFRoaXMgaXMgdXNlZCBpbiBMYVRlWCBhcyB0aGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIgY29udGFp
bmluZwogICAgICAqICB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhbGwgcmVsYXRlZCBwYWdlcy4KICAg
ICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFnZURvY3VtZW50YXRpb24oKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi9MXNwdTJ3sXTy8nFIM/QydPBzsnRIik7IH0KKyAgICB7IHJldHVybiBk
ZWNvZGUoItCi0LXQvNCw0YLQuNGH0LXRgdC60LjQtSDQvtC/0LjRgdCw0L3QuNGPIik7IH0KIAog
ICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBkb2N1bWVu
dCAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWZlcmVuY2VNYW51YWwoKQotICAgIHsgcmV0
dXJuIGRlY29kZSgi78fMwdfMxc7JxSIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQntCz0LvQ
sNCy0LvQtdC90LjQtSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVu
dGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9m
IGRlZmluZXMKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGVmaW5lcygpCi0gICAg
eyByZXR1cm4gZGVjb2RlKCLtwcvSz9PZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCc0LDQ
utGA0L7RgdGLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRp
b24gb2YgYSBmaWxlIGFzIGEgaGVhZGVyIGJlZm9yZSB0aGUgCiAgICAgICogIGxpc3Qgb2YgZnVu
Y3Rpb24gcHJvdG90eXBlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jUHJv
dG9zKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDSz9TP1MnQ2SDG1c7Lw8nKIik7IH0KKyAgICB7
IHJldHVybiBkZWNvZGUoItCf0YDQvtGC0L7RgtC40L/RiyDRhNGD0L3QutGG0LjQuSIpOyB9CiAK
ICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBh
IGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIHR5cGVkZWZzCiAgICAgICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0clR5cGVkZWZzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIu/Q
0sXExczFzsnRINTJ0M/XIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCe0L/RgNC10LTQtdC7
0LXQvdC40Y8g0YLQuNC/0L7QsiIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBk
b2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBs
aXN0IG9mIGVudW1lcmF0aW9ucwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVt
ZXJhdGlvbnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8MXSxd7J08zFzsnRIik7IH0KKyAgICB7
IHJldHVybiBkZWNvZGUoItCf0LXRgNC10YfQuNGB0LvQtdC90LjRjyIpOyB9CiAKICAgICAvKiEg
VGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBi
ZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIChnbG9iYWwpIGZ1bmN0aW9ucwogICAgICAqLwog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jdGlvbnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi
5tXOy8PJySIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQpNGD0L3QutGG0LjQuCIpOyB9CiAK
ICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBh
IGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIChnbG9iYWwpIHZhcmlhYmxlcwog
ICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJWYXJpYWJsZXMoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi8MXSxc3Fzs7ZxSIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9C10YDQtdC8
0LXQvdC90YvQtSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0
aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIChn
bG9iYWwpIHZhcmlhYmxlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtZXJh
dGlvblZhbHVlcygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL8zMXNxc7U2SDQxdLF3snTzMXOycoi
KTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0K3Qu9C10LzQtdC90YLRiyDQv9C10YDQtdGH0LjR
gdC70LXQvdC40LkiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBvZiBhIGZpbGUgYmVmb3JlIHRoZSBsaXN0IG9mCiAgICAgICogIGRvY3VtZW50YXRpb24g
YmxvY2tzIGZvciBkZWZpbmVzCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRlZmlu
ZURvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi7cHL0s/T2SIpOyB9CisgICAg
eyByZXR1cm4gZGVjb2RlKCLQnNCw0LrRgNC+0YHRiyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1
c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1lc3BhY2UgYmVmb3JlIHRoZSBs
aXN0IAogICAgICAqICBvZiBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3IgZnVuY3Rpb24gcHJvdG90
eXBlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jdGlvblByb3RvdHlwZURv
Y3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8NLP1M/UydDZIMbVzsvDycoiKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/RgNC+0YLQvtGC0LjQv9GLINGE0YPQvdC60YbQuNC5
Iik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBm
aWxlL25hbWVzcGFjZSBiZWZvcmUgdGhlIGxpc3QgCiAgICAgICogIG9mIGRvY3VtZW50YXRpb24g
YmxvY2tzIGZvciB0eXBlZGVmcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJUeXBl
ZGVmRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL0ydDZIik7IH0KKyAgICB7
IHJldHVybiBkZWNvZGUoItCi0LjQv9GLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4g
dGhlIGRvY3VtZW50YXRpb24gb2YgYSBmaWxlL25hbWVzcGFjZSBiZWZvcmUgdGhlIGxpc3QgCiAg
ICAgICogIG9mIGRvY3VtZW50YXRpb24gYmxvY2tzIGZvciBlbnVtZXJhdGlvbiB0eXBlcwogICAg
ICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtZXJhdGlvblR5cGVEb2N1bWVudGF0aW9u
KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDF0sXeydPMxc7J0SIpOyB9CisgICAgeyByZXR1cm4g
ZGVjb2RlKCLQn9C10YDQtdGH0LjRgdC70LXQvdC40Y8iKTsgfQogCiAgICAgLyohIFRoaXMgaXMg
dXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUvbmFtZXNwYWNlIGJlZm9yZSB0aGUg
bGlzdCAKICAgICAgKiAgb2YgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm9yIGZ1bmN0aW9ucwogICAg
ICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jdGlvbkRvY3VtZW50YXRpb24oKQotICAg
IHsgcmV0dXJuIGRlY29kZSgi5tXOy8PJySIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQpNGD
0L3QutGG0LjQuCIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0
aW9uIG9mIGEgZmlsZS9uYW1lc3BhY2UgYmVmb3JlIHRoZSBsaXN0IAogICAgICAqICBvZiBkb2N1
bWVudGF0aW9uIGJsb2NrcyBmb3IgdmFyaWFibGVzCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0clZhcmlhYmxlRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLwxdLF
zcXOztnFIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0LXRgNC10LzQtdC90L3Ri9C1Iik7
IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBmaWxl
L25hbWVzcGFjZS9ncm91cCBiZWZvcmUgCiAgICAgICogIHRoZSBsaXN0IG9mIGxpbmtzIHRvIGRv
Y3VtZW50ZWQgY29tcG91bmRzCkBAIC01MDYsMTEgKzQ4NSwxMSBAQAogICAgIHsKICAgICAgIGlm
IChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAg
ICAgIHJldHVybiBkZWNvZGUoICLz1NLVy9TV0tkgxMHOztnIIiApOworICAgICAgICByZXR1cm4g
ZGVjb2RlKCAi0KHRgtGA0YPQutGC0YPRgNGLINC00LDQvdC90YvRhSIgKTsKICAgICAgIH0KICAg
ICAgIGVsc2UKICAgICAgIHsgCi0gICAgICAgIHJldHVybiBkZWNvZGUoICLrzMHT09kiICk7Cisg
ICAgICAgIHJldHVybiBkZWNvZGUoICLQmtC70LDRgdGB0YsiICk7CiAgICAgICB9CiAKICAgICB9
CkBAIC01MjMsNjAgKzUwMiw2MCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJH
ZW5lcmF0ZWRBdChjb25zdCBjaGFyICpkYXRlLGNvbnN0IGNoYXIgKnByb2pOYW1lKQogICAgIHsg
Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9ZGVjb2RlKCLkz8vVzcXO1MHDydEgIik7Ci0gICAgICBp
ZiAocHJvak5hbWUpIHJlc3VsdCs9ZGVjb2RlKCLQzyAiKStwcm9qTmFtZTsKLSAgICAgIHJlc3Vs
dCs9ZGVjb2RlKCIuIPDP08zFxM7JxSDJ2s3FzsXOydE6ICIpK2RhdGU7Ci0gICAgICByZXN1bHQr
PWRlY29kZSgiLiDzz9rEwc7PINPJ09TFzc/KIik7CisgICAgICBRQ1N0cmluZyByZXN1bHQ9ZGVj
b2RlKCLQlNC+0LrRg9C80LXQvdGC0LDRhtC40Y8gIik7CisgICAgICBpZiAocHJvak5hbWUpIHJl
c3VsdCs9ZGVjb2RlKCLQv9C+ICIpK3Byb2pOYW1lOworICAgICAgcmVzdWx0Kz1kZWNvZGUoIi4g
0J/QvtGB0LvQtdC00L3QuNC1INC40LfQvNC10L3QtdC90LjRjzogIikrZGF0ZTsKKyAgICAgIHJl
c3VsdCs9ZGVjb2RlKCIuINCh0L7Qt9C00LDQvdC+INGB0LjRgdGC0LXQvNC+0LkiKTsKICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIC8qISBUaGlzIGlzIHBhcnQgb2YgdGhlIHNlbnRl
bmNlIHVzZWQgaW4gdGhlIHN0YW5kYXJkIGZvb3RlciBvZiBlYWNoIHBhZ2UuCiAgICAgICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0cldyaXR0ZW5CeSgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi4dfUz9I6Iik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQkNCy0YLQvtGAOiIpOwogICAg
IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgcHV0IGJlZm9yZSBhIGNsYXNzIGRpYWdyYW0gKi8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ2xhc3NEaWFncmFtKGNvbnN0IGNoYXIgKmNsTmFtZSkK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLn0sHGIM7B08zFxM/Xwc7J0ToiKStjbE5hbWUr
IjoiOworICAgICAgcmV0dXJuIGRlY29kZSgi0JPRgNCw0YQg0L3QsNGB0LvQtdC00L7QstCw0L3Q
uNGPOiIpK2NsTmFtZSsiOiI7CiAgICAgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBnZW5lcmF0
ZWQgd2hlbiB0aGUgXFxpbnRlcm5hbCBjb21tYW5kIGlzIHVzZWQuICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckZvckludGVybmFsVXNlT25seSgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL0z8zY
y88gxMzRINfO1dTSxc7OxcfPIMnT0M/M2NrP18HOydEiKTsgfQorICAgIHsgcmV0dXJuIGRlY29k
ZSgi0KLQvtC70YzQutC+INC00LvRjyDQstC90YPRgtGA0LXQvdC90LXQs9C+INC40YHQv9C+0LvR
jNC30L7QstCw0L3QuNGPIik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgZ2VuZXJhdGVkIHdo
ZW4gdGhlIFxcd2FybmluZyBjb21tYW5kIGlzIHVzZWQuICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0cldhcm5pbmcoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8NLFxNXQ0sXWxMXOydEiKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0J/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjyIpOyB9CiAK
ICAgICAvKiEgdGhpcyB0ZXh0IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBcXHZlcnNpb24gY29tbWFu
ZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJWZXJzaW9uKCkKLSAgICB7IHJl
dHVybiBkZWNvZGUoIvfF0tPJ0SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQktC10YDRgdC4
0Y8iKTsgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUgXFxkYXRl
IGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGF0ZSgpCi0gICAg
eyByZXR1cm4gZGVjb2RlKCLkwdTBIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCU0LDRgtCw
Iik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFxccmV0dXJu
IGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUmV0dXJucygpCi0g
ICAgeyByZXR1cm4gZGVjb2RlKCL3z9rX0sHdwcXUIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUo
ItCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgZ2VuZXJh
dGVkIHdoZW4gdGhlIFxcc2EgY29tbWFuZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJTZWVBbHNvKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvPNLiDUwcvWxSIpOyB9CisgICAg
eyByZXR1cm4gZGVjb2RlKCLQodC8LiDRgtCw0LrQttC1Iik7IH0KIAogICAgIC8qISB0aGlzIHRl
eHQgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFxccGFyYW0gY29tbWFuZCBpcyB1c2VkLiAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJQYXJhbWV0ZXJzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIuHS
x9XNxc7U2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQkNGA0LPRg9C80LXQvdGC0YsiKTsg
fQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUgXFxleGNlcHRpb24g
Y29tbWFuZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFeGNlcHRpb25zKCkK
LSAgICB7IHJldHVybiBkZWNvZGUoIunTy8zA3sXOydEiKTsgfQorICAgIHsgcmV0dXJuIGRlY29k
ZSgi0JjRgdC60LvRjtGH0LXQvdC40Y8iKTsgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyB1c2Vk
IGluIHRoZSB0aXRsZSBwYWdlIG9mIGEgTGFUZVggZG9jdW1lbnQuICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckdlbmVyYXRlZEJ5KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvPP2sTBzs8g08nT
1MXNz8oiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0KHQvtC30LTQsNC90L4g0YHQuNGB0YLQ
tdC80L7QuSIpOyB9CiAgICAgCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gbmV3IHNpbmNlIDAuNDkt
OTkwMzA3IApAQCAtNTg0LDE0ICs1NjMsMTQgQEAKICAgICAKICAgICAvKiEgdXNlZCBhcyB0aGUg
dGl0bGUgb2YgcGFnZSBjb250YWluaW5nIGFsbCB0aGUgaW5kZXggb2YgYWxsIG5hbWVzcGFjZXMu
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZUxpc3QoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi8NLP09TSwc7T1NfBIMnNxc4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/R
gNC+0YHRgtGA0LDQvdGB0YLQstCwINC40LzQtdC9Iik7IH0KIAogICAgIC8qISB1c2VkIGFzIGFu
IGludHJvZHVjdGlvbiB0byB0aGUgbmFtZXNwYWNlIGxpc3QgKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyTmFtZXNwYWNlTGlzdERlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAgICB7Ci0g
ICAgICBRQ1N0cmluZyByZXN1bHQ9IvDPzM7ZyiDT0MnTz8sgIjsKLSAgICAgIGlmICghZXh0cmFj
dEFsbCkgcmVzdWx0Kz0ixM/L1c3FztTJ0s/Xwc7O2cggIjsKLSAgICAgIHJlc3VsdCs9ItDSz9PU
0sHO09TXIMnNxc4uIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QvtC70L3Ri9C5INGB0L/Q
uNGB0L7QuiAiOworICAgICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQrPSLQtNC+0LrRg9C80LXQ
vdGC0LjRgNC+0LLQsNC90L3Ri9GFICI7CisgICAgICByZXN1bHQrPSLQv9GA0L7RgdGC0YDQsNC9
0YHRgtCyINC40LzQtdC9LiI7CiAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7CiAgICAgfQog
CkBAIC01OTksNyArNTc4LDcgQEAKICAgICAgKiAgZnJpZW5kcyBvZiBhIGNsYXNzCiAgICAgICov
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckZyaWVuZHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi
5NLV2tjRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCU0YDRg9C30YzRjyIpOyB9CiAKIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2UgMC40OS05OTA0MDUKQEAgLTYwOSw4ICs1ODgs
OCBAQAogICAgICAqIHJlbGF0ZWQgY2xhc3NlcyAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyUmVsYXRlZEZ1bmN0aW9uRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2Rl
KCLkz8vVzcXO1MHDydEg0M8gxNLV2tjRzSDLzMHT08EgySDG1c7Lw8nRzSwgz9TOz87P09Hdyc3T
0SIKLSAgICAgICAgIiDLIMvMwdPT1SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQlNC+0LrR
g9C80LXQvdGC0LDRhtC40Y8g0L/QviDQtNGA0YPQt9GM0Y/QvCDQutC70LDRgdGB0LAg0Lgg0YTR
g9C90LrRhtC40Y/QvCwg0L7RgtC90L7QvdC+0YHRj9GJ0LjQvNGB0Y8iCisgICAgICAgICIg0Log
0LrQu9Cw0YHRgdGDIik7IH0KICAgICAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2Ug
MC40OS05OTA0MjUKQEAgLTYyNCwyOSArNjAzLDI5IEBACiAgICAgICBRQ1N0cmluZyByZXN1bHQ7
CiAgICAgICBpZiAoaXNUZW1wbGF0ZSkgCiAgICAgICB7Ci0gICAgICAgIHJlc3VsdD0i+8HCzM/O
ICI7CisgICAgICAgIHJlc3VsdD0i0KjQsNCx0LvQvtC9ICI7CiAgICAgICAgIHN3aXRjaChjb21w
VHlwZSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkNsYXNzOiAgcmVzdWx0
Kz0iy8zB09PBIjsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiByZXN1
bHQrPSLT1NLVy9TV0tkiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpVbmlvbjog
IHJlc3VsdCs9Is/C38XEyc7FzsnRIjsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBDbGFzc0RlZjo6
SW50ZXJmYWNlOiAgcmVzdWx0Kz0iyc7UxdLGxcrTwSI7IGJyZWFrOwotICAgICAgICAgIGNhc2Ug
Q2xhc3NEZWY6OlByb3RvY29sOiAgIHJlc3VsdCs9InByb3RvY29sIjsgYnJlYWs7IC8vIHRyYW5z
bGF0ZSBtZSEKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpDYXRlZ29yeTogICByZXN1bHQrPSJj
YXRlZ29yeSI7IGJyZWFrOyAvLyB0cmFuc2xhdGUgbWUhCi0gICAgICAgICAgY2FzZSBDbGFzc0Rl
Zjo6RXhjZXB0aW9uOiAgcmVzdWx0Kz0iydPLzMDexc7J0SI7IGJyZWFrOworICAgICAgICAgIGNh
c2UgQ2xhc3NEZWY6OkNsYXNzOiAgcmVzdWx0Kz0i0LrQu9Cw0YHRgdCwIjsgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiByZXN1bHQrPSLRgdGC0YDRg9C60YLRg9GA0Ysi
OyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpVbmlvbjogIHJlc3VsdCs9ItC+0LHR
itC10LTQuNC90LXQvdC40Y8iOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpJbnRl
cmZhY2U6ICByZXN1bHQrPSLQuNC90YLQtdGA0YTQtdC50YHQsCI7IGJyZWFrOworICAgICAgICAg
IGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgIHJlc3VsdCs9ItC/0YDQvtGC0L7QutC+0LsiOyBi
cmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpDYXRlZ29yeTogICByZXN1bHQrPSLQutCw
0YLQtdCz0L7RgNC40Y8iOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpFeGNlcHRp
b246ICByZXN1bHQrPSLQuNGB0LrQu9GO0YfQtdC90LjRjyI7IGJyZWFrOwogICAgICAgICB9CiAg
ICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIHN3aXRjaChjb21wVHlwZSkKICAg
ICAgICAgewotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkNsYXNzOiAgcmVzdWx0Kz0i68zB09Mi
OyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpTdHJ1Y3Q6IHJlc3VsdCs9IvPU0tXL
1NXSwSI7IGJyZWFrOwotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9uOiAgcmVzdWx0Kz0i
78LfxcTJzsXOycUiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpJbnRlcmZhY2U6
ICByZXN1bHQrPSLpztTF0sbFytMiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpQ
cm90b2NvbDogICByZXN1bHQrPSJwcm90b2NvbCI7IGJyZWFrOyAvLyB0cmFuc2xhdGUgbWUhCi0g
ICAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2F0ZWdvcnk6ICAgcmVzdWx0Kz0iY2F0ZWdvcnkiOyBi
cmVhazsgLy8gdHJhbnNsYXRlIG1lIQotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4Y2VwdGlv
bjogIHJlc3VsdCs9IunTy8zA3sXOycUiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVm
OjpDbGFzczogIHJlc3VsdCs9ItCa0LvQsNGB0YEiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENs
YXNzRGVmOjpTdHJ1Y3Q6IHJlc3VsdCs9ItCh0YLRgNGD0LrRgtGD0YDQsCI7IGJyZWFrOworICAg
ICAgICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9uOiAgcmVzdWx0Kz0i0J7QsdGK0LXQtNC40L3QtdC9
0LjQtSI7IGJyZWFrOworICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkludGVyZmFjZTogIHJlc3Vs
dCs9ItCY0L3RgtC10YDRhNC10LnRgSI7IGJyZWFrOworICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6
OlByb3RvY29sOiAgIHJlc3VsdCs9ItCf0YDQvtGC0L7QutC+0LsiOyBicmVhazsKKyAgICAgICAg
ICBjYXNlIENsYXNzRGVmOjpDYXRlZ29yeTogICByZXN1bHQrPSLQmtCw0YLQtdCz0L7RgNC40Y8i
OyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpFeGNlcHRpb246ICByZXN1bHQrPSLQ
mNGB0LrQu9GO0YfQtdC90LjQtSI7IGJyZWFrOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBy
ZXN1bHQrPSIgIjsKQEAgLTY1NiwzNSArNjM1LDM1IEBACiAgICAgLyohIHVzZWQgYXMgdGhlIHRp
dGxlIG9mIHRoZSBIVE1MIHBhZ2Ugb2YgYSBmaWxlICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
ckZpbGVSZWZlcmVuY2UoY29uc3QgY2hhciAqZmlsZU5hbWUpCiAgICAgewotICAgICAgcmV0dXJu
IGRlY29kZSgi5sHKzCAiKStmaWxlTmFtZTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCk0LDQudC7
ICIpK2ZpbGVOYW1lOwogICAgIH0KIAogICAgIC8qISB1c2VkIGFzIHRoZSB0aXRsZSBvZiB0aGUg
SFRNTCBwYWdlIG9mIGEgbmFtZXNwYWNlICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVz
cGFjZVJlZmVyZW5jZShjb25zdCBjaGFyICpuYW1lc3BhY2VOYW1lKQogICAgIHsKLSAgICAgIHJl
dHVybiBkZWNvZGUoIvDSz9PU0sHO09TXzyDJzcXOICIpK25hbWVzcGFjZU5hbWU7CisgICAgICBy
ZXR1cm4gZGVjb2RlKCLQn9GA0L7RgdGC0YDQsNC90YHRgtCy0L4g0LjQvNC10L0gIikrbmFtZXNw
YWNlTmFtZTsKICAgICB9CiAgICAgCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clB1YmxpY01lbWJl
cnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi79TL0tnU2cUg3szFztkiKTsgfQorICAgIHsgcmV0
dXJuIGRlY29kZSgi0J7RgtC60YDRi9GC0YvQtSDRh9C70LXQvdGLIik7IH0KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyUHVibGljU2xvdHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi79TL0tnU2cUg
08zP1NkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J7RgtC60YDRi9GC0YvQtSDRgdC70L7R
gtGLIik7IH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2lnbmFscygpCi0gICAgeyByZXR1cm4g
ZGVjb2RlKCLzycfOwczZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCh0LjQs9C90LDQu9GL
Iik7IH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGljUHVibGljTWVtYmVycygpCi0gICAg
eyByZXR1cm4gZGVjb2RlKCLv1MvS2dTZxSDT1MHUyd7F08vJxSDezMXO2SIpOyB9CisgICAgeyBy
ZXR1cm4gZGVjb2RlKCLQntGC0LrRgNGL0YLRi9C1INGB0YLQsNGC0LjRh9C10YHQutC40LUg0YfQ
u9C10L3RiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByb3RlY3RlZE1lbWJlcnMoKQot
ICAgIHsgcmV0dXJuIGRlY29kZSgi+sHdyd3Fzs7ZxSDezMXO2SIpOyB9CisgICAgeyByZXR1cm4g
ZGVjb2RlKCLQl9Cw0YnQuNGJ0LXQvdC90YvQtSDRh9C70LXQvdGLIik7IH0KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyUHJvdGVjdGVkU2xvdHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi+sHdyd3F
zs7ZxSDTzM/U2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQl9Cw0YnQuNGJ0LXQvdC90YvQ
tSDRgdC70L7RgtGLIik7IH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGljUHJvdGVjdGVk
TWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL6wd3J3cXOztnFINPUwdTJ3sXTy8nFIN7M
xc7ZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCX0LDRidC40YnQtdC90L3Ri9C1INGB0YLQ
sNGC0LjRh9C10YHQutC40LUg0YfQu9C10L3RiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
clByaXZhdGVNZW1iZXJzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvrBy9LZ1NnFIN7Mxc7ZIik7
IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCX0LDQutGA0YvRgtGL0LUg0YfQu9C10L3RiyIpOyB9
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByaXZhdGVTbG90cygpCi0gICAgeyByZXR1cm4gZGVj
b2RlKCL6wcvS2dTZxSDTzM/U2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQl9Cw0LrRgNGL
0YLRi9C1INGB0LvQvtGC0YsiKTsgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTdGF0aWNQcml2
YXRlTWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL6wcvS2dTZxSDT1MHUyd7F08vJxSDe
zMXO2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQl9Cw0LrRgNGL0YLRi9C1INGB0YLQsNGC
0LjRh9C10YHQutC40LUg0YfQu9C10L3RiyIpOyB9CiAgICAgCiAgICAgLyohIHRoaXMgZnVuY3Rp
b24gaXMgdXNlZCB0byBwcm9kdWNlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaXRlbXMuCiAg
ICAgICogIHVzZSBnZW5lcmF0ZU1hcmtlcihpKSB0byBpbmRpY2F0ZSB3aGVyZSBpdGVtIGkgc2hv
dWxkIGJlIHB1dC4KQEAgLTcwNSw3ICs2ODQsNyBAQAogICAgICAgICAgIGlmIChpPG51bUVudHJp
ZXMtMikgLy8gbm90IHRoZSBmb3JlIGxhc3QgZW50cnkgCiAgICAgICAgICAgICByZXN1bHQrPSIs
ICI7CiAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAvLyB0aGUgZm9yZSBsYXN0IGVudHJ5
Ci0gICAgICAgICAgICByZXN1bHQrPWRlY29kZSggIiDJICIgKTsKKyAgICAgICAgICAgIHJlc3Vs
dCs9ZGVjb2RlKCAiINC4ICIgKTsKICAgICAgICAgfQogICAgICAgfQogICAgICAgcmV0dXJuIHJl
c3VsdDsgCkBAIC03MTYsNyArNjk1LDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRySW5oZXJpdHNMaXN0KGludCBudW1FbnRyaWVzKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNv
ZGUoIuLB2s/X2cUgy8zB09PZOiIpK3RyV3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsKKyAgICAg
IHJldHVybiBkZWNvZGUoItCR0LDQt9C+0LLRi9C1INC60LvQsNGB0YHRizoiKSt0cldyaXRlTGlz
dChudW1FbnRyaWVzKSsiLiI7CiAgICAgfQogCiAgICAgLyohIHVzZWQgaW4gY2xhc3MgZG9jdW1l
bnRhdGlvbiB0byBwcm9kdWNlIGEgbGlzdCBvZiBzdXBlciBjbGFzc2VzLApAQCAtNzI0LDcgKzcw
Myw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckluaGVyaXRlZEJ5TGlzdChp
bnQgbnVtRW50cmllcykKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLw0s/J2tfPxM7ZxSDL
zMHT09k6IikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOworICAgICAgcmV0dXJuIGRlY29k
ZSgi0J/RgNC+0LjQt9Cy0L7QtNC90YvQtSDQutC70LDRgdGB0Ys6IikrdHJXcml0ZUxpc3QobnVt
RW50cmllcykrIi4iOwogICAgIH0KIAogICAgIC8qISB1c2VkIGluIG1lbWJlciBkb2N1bWVudGF0
aW9uIGJsb2NrcyB0byBwcm9kdWNlIGEgbGlzdCBvZiAKQEAgLTczMiwxMSArNzExLDExIEBACiAg
ICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlaW1wbGVtZW50ZWRGcm9tTGlzdChpbnQg
bnVtRW50cmllcykKICAgICB7Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9IvDF0sXP0NLFxMXM0cXU
IM3F1M/EIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QtdGA0LXQvtC/0YDQtdC00LXQu9GP
0LXRgiDQvNC10YLQvtC0IjsKICAgICAgIGlmKG51bUVudHJpZXM+MSkKLQlyZXN1bHQrPSLZINDS
xcTLz9ciOworCXJlc3VsdCs9ItGLINC/0YDQtdC00LrQvtCyIjsKICAgICAgIGVsc2UKLQlyZXN1
bHQrPSIg0NLFxMvBIjsKKwlyZXN1bHQrPSIg0L/RgNC10LTQutCwIjsKICAgICAgIHJldHVybiBk
ZWNvZGUocmVzdWx0KyIgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAgIH0KIApA
QCAtNzQ1LDE5ICs3MjQsMTkgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUmVp
bXBsZW1lbnRlZEluTGlzdChpbnQgbnVtRW50cmllcykKICAgICB7Ci0gICAgICByZXR1cm4gZGVj
b2RlKCLwxdLFz9DSxcTFzNHF1NPRINcgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOwor
ICAgICAgcmV0dXJuIGRlY29kZSgi0J/QtdGA0LXQvtC/0YDQtdC00LXQu9GP0LXRgtGB0Y8g0LIg
IikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAgIH0KIAogICAgIC8qISBUaGlzIGlz
IHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIGFsbCBtZW1iZXJzIG9mIG5hbWVzcGFj
ZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZU1lbWJlcnMoKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi/szFztkg0NLP09TSwc7T1Ncgyc3FziIpOyB9CisgICAgeyByZXR1cm4g
ZGVjb2RlKCLQp9C70LXQvdGLINC/0YDQvtGB0YLRgNCw0L3RgdGC0LIg0LjQvNC10L0iKTsgfQog
CiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBwYWdlIHdpdGggYWxsIG5h
bWVzcGFjZSBtZW1iZXJzICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZU1lbWJl
ckRlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAgICB7Ci0gICAgICBRQ1N0cmluZyByZXN1
bHQ9IvDPzM7ZyiDT0MnTz8sgIjsKLSAgICAgIGlmICghZXh0cmFjdEFsbCkgcmVzdWx0Kz0ixM/L
1c3FztTJ0s/Xwc7O2cggIjsKLSAgICAgIHJlc3VsdCs9It7Mxc7P1yDQ0s/T1MHO09TXIMnNxc4u
IjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiAiOwor
ICAgICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQ
sNC90L3Ri9GFICI7CisgICAgICByZXN1bHQrPSLRh9C70LXQvdC+0LIg0L/RgNC+0YHRgtCw0L3R
gdGC0LIg0LjQvNC10L0uIjsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsKICAgICB9CiAK
QEAgLTc2NSwxMyArNzQ0LDEzIEBACiAgICAgICogIGluZGV4IG9mIGFsbCBuYW1lc3BhY2VzLgog
ICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJOYW1lc3BhY2VJbmRleCgpCi0gICAgeyBy
ZXR1cm4gZGVjb2RlKCLhzMbB18nUztnKINXLwdrB1MXM2CDQ0s/T1NLBztPU1yDJzcXOIik7IH0K
KyAgICB7IHJldHVybiBkZWNvZGUoItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC1
0LvRjCDQv9GA0L7RgdGC0YDQsNC90YHRgtCyINC40LzQtdC9Iik7IH0KIAogICAgIC8qISBUaGlz
IGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIGNvbnRhaW5pbmcK
ICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIG5hbWVzcGFjZXMuCiAgICAgICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZURvY3VtZW50YXRpb24oKQotICAgIHsgcmV0
dXJuIGRlY29kZSgi8NLP09TSwc7T1NfBIMnNxc4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi
0J/RgNC+0YHRgtGA0LDQvdGB0YLQstCwINC40LzQtdC9Iik7IH0KIAogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KIC8vIG5ldyBzaW5jZSAwLjQ5LTk5MDUyMgpAQCAtNzgxLDcgKzc2MCw3IEBACiAgICAgICog
IG5hbWVzcGFjZXMgaW4gYSBmaWxlLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJO
YW1lc3BhY2VzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoICLw0s/T1NLBztPU18Egyc3FziIgKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSggItCf0YDQvtGB0YLRgNCw0L3RgdGC0LLQsCDQuNC80LXQ
vSIgKTsgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gbmV3IHNpbmNlIDAuNDktOTkwNzI4CkBA
IC03OTQsMzEgKzc3MywzMyBAQAogICAgICAgICBib29sIHNpbmdsZSkKICAgICB7IC8vIGhlcmUg
cyBpcyBvbmUgb2YgIiBDbGFzcyIsICIgU3RydWN0IiBvciAiIFVuaW9uIgogICAgICAgLy8gc2lu
Z2xlIGlzIHRydWUgaW1wbGllcyBhIHNpbmdsZSBmaWxlCi0gICAgICBRQ1N0cmluZyByZXN1bHQ9
KFFDU3RyaW5nKSLvwt/R18zFzsnRIMkgz9DJ08HOydEg3szFzs/XICI7CisgICAgICBRQ1N0cmlu
ZyByZXN1bHQ9KFFDU3RyaW5nKSLQntCx0YrRj9Cy0LvQtdC90LjRjyDQuCDQvtC/0LjRgdCw0L3Q
uNGPINGH0LvQtdC90L7QsiAiOwogICAgICAgc3dpdGNoKGNvbXBUeXBlKQogICAgICAgewotICAg
ICAgICBjYXNlIENsYXNzRGVmOjpDbGFzczogICAgICByZXN1bHQrPSLLzMHT0yI7IAotICAgICAg
ICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9J8EnOyBlbHNlIHJlc3VsdCs9Is/XIjsKKyAgICAgICAg
Y2FzZSBDbGFzc0RlZjo6Q2xhc3M6ICAgICAgcmVzdWx0Kz0i0LrQu9Cw0YHRgSI7IAorICAgICAg
ICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9ItCwIjsgZWxzZSByZXN1bHQrPSLQvtCyIjsKICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiAgICAgcmVzdWx0Kz0i
09TS1cvU1dIiOyAKLSAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSfZJzsKKyAgICAgICAg
Y2FzZSBDbGFzc0RlZjo6U3RydWN0OiAgICAgcmVzdWx0Kz0i0YHRgtGA0YPQutGC0YPRgCI7IAor
ICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9ItGLIjsKICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDbGFzc0RlZjo6VW5pb246ICAgICAgcmVzdWx0Kz0iz8LfxcTJzsXOySI7Ci0g
ICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0n0Sc7IGVsc2UgcmVzdWx0Kz0nyic7CisgICAg
ICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9uOiAgICAgIHJlc3VsdCs9ItC+0LHRitC10LTQuNC90LXQ
vdC4IjsKKyAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSLRjyI7IGVsc2UgcmVzdWx0Kz0i
0LkiOwogICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENsYXNzRGVmOjpJbnRlcmZhY2U6
ICByZXN1bHQrPSLJztTF0sbFytMiOwotICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9J8En
OyBlbHNlIHJlc3VsdCs9Is/XIjsKKyAgICAgICAgY2FzZSBDbGFzc0RlZjo6SW50ZXJmYWNlOiAg
cmVzdWx0Kz0i0LjQvdGC0LXRgNGE0LXQudGBIjsKKyAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1
bHQrPSLQsCI7IGVsc2UgcmVzdWx0Kz0i0L7QsiI7CiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgcmVzdWx0Kz0iUHJvdG9jb2wiOyAvLyB0cmFuc2xh
dGUgbWUhCisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgcmVzdWx0Kz0i0L/RgNC+
0YLQvtC60L7QuyI7CisgICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0i0LAiOyBlbHNlIHJl
c3VsdCs9ItC+0LIiOwogICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENsYXNzRGVmOjpD
YXRlZ29yeTogIHJlc3VsdCs9IkNhdGVnb3J5IjsgLy8gdHJhbnNsYXRlIG1lIQorICAgICAgICBj
YXNlIENsYXNzRGVmOjpDYXRlZ29yeTogIHJlc3VsdCs9ItC60LDRgtC10LPQvtGA0LgiOworICAg
ICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9ItGPIjsgZWxzZSByZXN1bHQrPSLQuSI7CiAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4Y2VwdGlvbjogIHJlc3VsdCs9
IsnTy8zA3sXOySI7Ci0gICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0n0Sc7IGVsc2UgcmVz
dWx0Kz0nyic7CisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4Y2VwdGlvbjogIHJlc3VsdCs9ItC4
0YHQutC70Y7Rh9C10L3QuCI7CisgICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0i0Y8iOyBl
bHNlIHJlc3VsdCs9ItC5IjsKICAgICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgIHJlc3Vs
dCs9IiDOwcjPxNHU09Eg1yDGwcrMIjsKLSAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9IsU6Ijsg
ZWxzZSByZXN1bHQrPSLByDoiOworICAgICAgcmVzdWx0Kz0iINC90LDRhdC+0LTRj9GC0YHRjyDQ
siDRhNCw0LnQuyI7CisgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSLQtToiOyBlbHNlIHJlc3Vs
dCs9ItCw0YU6IjsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTgy
Niw3ICs4MDcsNyBAQAogICAgICAqIGxpc3QuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ckFscGhhYmV0aWNhbExpc3QoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi4czGwdfJ1M7ZyiDV
y8HawdTFzNgiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JDQu9GE0LDQstC40YLQvdGL0Lkg
0YPQutCw0LfQsNGC0LXQu9GMIik7IH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIG5ldyBzaW5j
ZSAwLjQ5LTk5MDkwMQpAQCAtODM0LDE4ICs4MTUsMTggQEAKIAogICAgIC8qISBUaGlzIGlzIHVz
ZWQgYXMgdGhlIGhlYWRpbmcgdGV4dCBmb3IgdGhlIHJldHZhbCBjb21tYW5kLiAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJSZXR1cm5WYWx1ZXMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi98/a
19LB3cHFzdnFINrOwd7FzsnRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCS0L7Qt9Cy0YDQ
sNGJ0LDQtdC80YvQtSDQt9C90LDRh9C10L3QuNGPIik7IH0KIAogICAgIC8qISBUaGlzIGlzIGlu
IHRoZSAocXVpY2spIGluZGV4IGFzIGEgbGluayB0byB0aGUgbWFpbiBwYWdlIChpbmRleC5odG1s
KQogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNYWluUGFnZSgpCi0gICAgeyByZXR1
cm4gZGVjb2RlKCL0ydTVzNjOwdEg09TSwc7Jw8EiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi
0KLQuNGC0YPQu9GM0L3QsNGPINGB0YLRgNCw0L3QuNGG0LAiKTsgfQogCiAgICAgLyohIFRoaXMg
aXMgdXNlZCBpbiByZWZlcmVuY2VzIHRvIHBhZ2UgdGhhdCBhcmUgcHV0IGluIHRoZSBMYVRlWCAK
ICAgICAgKiAgZG9jdW1lbnRhdGlvbi4gSXQgc2hvdWxkIGJlIGFuIGFiYnJldmlhdGlvbiBvZiB0
aGUgd29yZCBwYWdlLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWdlQWJicmV2
aWF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoItPU0i4iKTsgfQorICAgIHsgcmV0dXJuIGRl
Y29kZSgi0YHRgtGALiIpOyB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2UgMC40
OS05OTExMDYKQEAgLTg1MywxMSArODM0LDExIEBACiAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
RGVmaW5lZEF0TGluZUluU291cmNlRmlsZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi
880uIM/Q0sXExczFzsnFINcgxsHKzMUgQDEg09TSz8vBIEAwIik7CisgICAgICByZXR1cm4gZGVj
b2RlKCLQodC8LiDQvtC/0YDQtdC00LXQu9C10L3QuNC1INCyINGE0LDQudC70LUgQDEg0YHRgtGA
0L7QutCwIEAwIik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEZWZpbmVkSW5Tb3Vy
Y2VGaWxlKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLzzS4gz9DSxcTFzMXOycUg1yDG
wcrMxSBAMCIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0KHQvC4g0L7Qv9GA0LXQtNC10LvQtdC9
0LjQtSDQsiDRhNCw0LnQu9C1IEAwIik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAt
ODY2LDcgKzg0Nyw3IEBACiAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGVwcmVjYXRlZCgpCiAg
ICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi9dPULiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi
0KPRgdGCLiIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTg3Niw2OCArODU3LDY4
IEBACiAgICAgLyohIHRoaXMgdGV4dCBpcyBwdXQgYmVmb3JlIGEgY29sbGFib3JhdGlvbiBkaWFn
cmFtICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNvbGxhYm9yYXRpb25EaWFncmFtKGNvbnN0
IGNoYXIgKmNsTmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gKFFDU3RyaW5nKWRlY29kZSgi59LB
xiDT19Haxcogy8zB09PBICIpK2NsTmFtZSsiOiI7CisgICAgICByZXR1cm4gKFFDU3RyaW5nKWRl
Y29kZSgi0JPRgNCw0YQg0YHQstGP0LfQtdC5INC60LvQsNGB0YHQsCAiKStjbE5hbWUrIjoiOwog
ICAgIH0KICAgICAvKiEgdGhpcyB0ZXh0IGlzIHB1dCBiZWZvcmUgYW4gaW5jbHVkZSBkZXBlbmRl
bmN5IGdyYXBoICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckluY2xEZXBHcmFwaChjb25zdCBj
aGFyICpmTmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLn0sHGINfLzMDewcXN2cgg
2sHHz8zP18/eztnIIMbByszP1yDEzNEgIikrZk5hbWUrIjoiOworICAgICAgcmV0dXJuIGRlY29k
ZSgi0JPRgNCw0YQg0LLQutC70Y7Rh9Cw0LXQvNGL0YUg0LfQsNCz0L7Qu9C+0LLQvtGH0L3Ri9GF
INGE0LDQudC70L7QsiDQtNC70Y8gIikrZk5hbWUrIjoiOwogICAgIH0KICAgICAvKiEgaGVhZGVy
IHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgbGlzdCBvZiBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9ycy4g
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ29uc3RydWN0b3JEb2N1bWVudGF0aW9uKCkKICAg
ICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLrz87T1NLVy9TP0ijZKSIpOyAKKyAgICAgIHJldHVy
biBkZWNvZGUoItCa0L7QvdGB0YLRgNGD0LrRgtC+0YAo0YspIik7IAogICAgIH0KICAgICAvKiEg
VXNlZCBpbiB0aGUgZmlsZSBkb2N1bWVudGF0aW9uIHRvIHBvaW50IHRvIHRoZSBjb3JyZXNwb25k
aW5nIHNvdXJjZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdvdG9Tb3VyY2VDb2RlKCkK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLzzS4gydPIz8TO2cUg1MXL09TZLiIpOworICAg
ICAgcmV0dXJuIGRlY29kZSgi0KHQvC4g0LjRgdGF0L7QtNC90YvQtSDRgtC10LrRgdGC0YsuIik7
CiAgICAgfQogICAgIC8qISBVc2VkIGluIHRoZSBmaWxlIHNvdXJjZXMgdG8gcG9pbnQgdG8gdGhl
IGNvcnJlc3BvbmRpbmcgZG9jdW1lbnRhdGlvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
R290b0RvY3VtZW50YXRpb24oKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvPNLiDEz8vV
zcXO1MHDycAuIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQodC8LiDQtNC+0LrRg9C80LXQvdGC
0LDRhtC40Y4uIik7CiAgICAgfQogICAgIC8qISBUZXh0IGZvciB0aGUgXFxwcmUgY29tbWFuZCAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQcmVjb25kaXRpb24oKQogICAgIHsKLSAgICAgIHJl
dHVybiBkZWNvZGUoIvDSxcTV08zP18nFIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9GA0LXQ
tNGD0YHQu9C+0LLQuNC1Iik7CiAgICAgfQogICAgIC8qISBUZXh0IGZvciB0aGUgXFxwb3N0IGNv
bW1hbmQgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUG9zdGNvbmRpdGlvbigpCiAgICAgewot
ICAgICAgcmV0dXJuIGRlY29kZSgi8M/T1NXTzM/XycUiKTsKKyAgICAgIHJldHVybiBkZWNvZGUo
ItCf0L7RgdGC0YPRgdC70L7QstC40LUiKTsKICAgICB9CiAgICAgLyohIFRleHQgZm9yIHRoZSBc
XGludmFyaWFudCBjb21tYW5kICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckludmFyaWFudCgp
CiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi6c7XwdLJwc7UIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQmNC90LLQsNGA0LjQsNC90YIiKTsKICAgICB9CiAgICAgLyohIFRleHQgc2hvd24g
YmVmb3JlIGEgbXVsdGktbGluZSB2YXJpYWJsZS9lbnVtIGluaXRpYWxpemF0aW9uICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckluaXRpYWxWYWx1ZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi6c7Jw8nBzMnawdTP0iIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JjQvdC40YbQuNCw
0LvQuNC30LDRgtC+0YAiKTsKICAgICB9CiAgICAgLyohIFRleHQgdXNlZCB0aGUgc291cmNlIGNv
ZGUgaW4gdGhlIGZpbGUgaW5kZXggKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ29kZSgpCiAg
ICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi6dPIz8TO2cUg1MXL09TZIik7CisgICAgICByZXR1
cm4gZGVjb2RlKCLQmNGB0YXQvtC00L3Ri9C1INGC0LXQutGB0YLRiyIpOwogICAgIH0KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyR3JhcGhpY2FsSGllcmFyY2h5KCkKICAgICB7Ci0gICAgICByZXR1
cm4gZGVjb2RlKCLpxdLB0sjJ0SDLzMHT08/XLiDn0sHGyd7F08vJyiDXycQuIik7CisgICAgICBy
ZXR1cm4gZGVjb2RlKCLQmNC10YDQsNGA0YXQuNGPINC60LvQsNGB0YHQvtCyLiDQk9GA0LDRhNC4
0YfQtdGB0LrQuNC5INCy0LjQtC4iKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdv
dG9HcmFwaGljYWxIaWVyYXJjaHkoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoItPNLiDH
0sHGyd7F08vJyiDXycQuIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLRgdC8LiDQs9GA0LDRhNC4
0YfQtdGB0LrQuNC5INCy0LjQtC4iKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdv
dG9UZXh0dWFsSGllcmFyY2h5KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLTzS4g1MXL
09TP19nKINfJxC4iKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItGB0LwuINGC0LXQutGB0YLQvtCy
0YvQuSDQstC40LQuIik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWdlSW5kZXgo
KQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIuHMxsHXydTO2cog1cvB2sHUxczYINTFzcHU
yd7F08vJyCDP0MnTwc7JyiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JDQu9GE0LDQstC40YLQ
vdGL0Lkg0YPQutCw0LfQsNGC0LXQu9GMINGC0LXQvNCw0YLQuNGH0LXRgdC60LjRhSDQvtC/0LjR
gdCw0L3QuNC5Iik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTQ2LDUwICs5Mjcs
NTAgQEAKICAgICAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTm90ZSgpCiAgICAgewotICAgICAg
cmV0dXJuIGRlY29kZSgi+sHNxdTLySIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNC80LXR
gtC60LgiKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clB1YmxpY1R5cGVzKCkKICAg
ICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLv1MvS2dTZxSDUydDZIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQntGC0LrRgNGL0YLRi9C1INGC0LjQv9GLIik7CiAgICAgfQogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJQdWJsaWNBdHRyaWJzKCkKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJv
b2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVj
b2RlKCAi8M/M0SDEwc7O2cgiICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQn9C+0LvRjyDQ
tNCw0L3QvdGL0YUiICk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIHJl
dHVybiBkZWNvZGUoICLv1MvS2dTZxSDB1NLJwtXU2SIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29k
ZSggItCe0YLQutGA0YvRgtGL0LUg0LDRgtGA0LjQsdGD0YLRiyIgKTsKICAgICAgIH0KICAgICB9
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clN0YXRpY1B1YmxpY0F0dHJpYnMoKQogICAgIHsKLSAg
ICAgIHJldHVybiBkZWNvZGUoIvPUwdTJ3sXTy8nFIM/Uy9LZ1NnFIMTBzs7ZxSIpOworICAgICAg
cmV0dXJuIGRlY29kZSgi0KHRgtCw0YLQuNGH0LXRgdC60LjQtSDQvtGC0LrRgNGL0YLRi9C1INC0
0LDQvdC90YvQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJvdGVjdGVkVHlw
ZXMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrB3cndxc7O2cUg1MnQ2SIpOworICAg
ICAgcmV0dXJuIGRlY29kZSgi0JfQsNGJ0LjRidC10L3QvdGL0LUg0YLQuNC/0YsiKTsKICAgICB9
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByb3RlY3RlZEF0dHJpYnMoKQogICAgIHsKLSAgICAg
IHJldHVybiBkZWNvZGUoIvrB3cndxc7O2cUgxMHOztnFIik7CisgICAgICByZXR1cm4gZGVjb2Rl
KCLQl9Cw0YnQuNGJ0LXQvdC90YvQtSDQtNCw0L3QvdGL0LUiKTsKICAgICB9CiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0clN0YXRpY1Byb3RlY3RlZEF0dHJpYnMoKQogICAgIHsKLSAgICAgIHJldHVy
biBkZWNvZGUoIvPUwdTJ3sXTy8nFINrB3cndxc7O2cUgxMHOztnFIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQodGC0LDRgtC40YfQtdGB0LrQuNC1INC30LDRidC40YnQtdC90L3Ri9C1INC00LDQ
vdC90YvQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJpdmF0ZVR5cGVzKCkK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCL6wcvS2dTZxSDUydDZIik7CisgICAgICByZXR1
cm4gZGVjb2RlKCLQl9Cw0LrRgNGL0YLRi9C1INGC0LjQv9GLIik7CiAgICAgfQogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJQcml2YXRlQXR0cmlicygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29k
ZSgi+sHL0tnU2cUgxMHOztnFIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQl9Cw0LrRgNGL0YLR
i9C1INC00LDQvdC90YvQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGlj
UHJpdmF0ZUF0dHJpYnMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrBy9LZ1NnFINPU
wdTJ3sXTy8nFIMTBzs7ZxSIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNC60YDRi9GC0YvQ
tSDRgdGC0LDRgtC40YfQtdGB0LrQuNC1INC00LDQvdC90YvQtSIpOwogICAgIH0KIAogCkBAIC0x
MDAxLDEzICs5ODIsMTMgQEAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVG9kbygpCiAgICAgLyo/
PyovCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi7sXPwsjPxMnNzyDTxMXMwdTYIik7Cisg
ICAgICByZXR1cm4gZGVjb2RlKCLQndC10L7QsdGF0L7QtNC40LzQviDRgdC00LXQu9Cw0YLRjCIp
OwogICAgIH0KICAgICAvKiEgVXNlZCBhcyB0aGUgaGVhZGVyIG9mIHRoZSB0b2RvIGxpc3QgKi8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVG9kb0xpc3QoKQogICAgIC8qPz8qLwogICAgIHsKLSAg
ICAgIHJldHVybiBkZWNvZGUoIvPQydPPyyDawcTB3iIpOworICAgICAgcmV0dXJuIGRlY29kZSgi
0KHQv9C40YHQvtC6INC30LDQtNCw0YciKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBA
IC0xMDE2LDI0ICs5OTcsMjQgQEAKIAogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWZlcmVuY2Vk
QnkoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIunT0M/M2NrVxdTT0SDXIik7CisgICAg
ICByZXR1cm4gZGVjb2RlKCLQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LIiKTsKICAgICB9CiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0clJlbWFya3MoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNv
ZGUoIvDSyc0uIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9GA0LjQvC4iKTsKICAgICB9CiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0ckF0dGVudGlvbigpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi987JzcHOycUiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCS0L3QuNC80LDQvdC40LUi
KTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckluY2xCeURlcEdyYXBoKCkKICAgICB7
Ci0gICAgICByZXR1cm4gZGVjb2RlKCLn0sHGIMbByszP1ywg1yDLz9TP0tnFINfLzMDewcXU09Eg
3NTP1CDGwcrMOiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JPRgNCw0YQg0YTQsNC50LvQvtCy
LCDQsiDQutC+0YLQvtGA0YvQtSDQstC60LvRjtGH0LDQtdGC0YHRjyDRjdGC0L7RgiDRhNCw0LnQ
uzoiKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clNpbmNlKCkKICAgICAvKj8/Ki8K
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLuwd7JzsHRINMiKTsKKyAgICAgIHJldHVybiBk
ZWNvZGUoItCd0LDRh9C40L3QsNGPINGBIik7CiAgICAgfQogICAgIAogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KQEAgLTEwNDMsMzIgKzEwMjQsMzIgQEAKICAgICAvKiEgdGl0bGUgb2YgdGhlIGdyYXBoIGxl
Z2VuZCBwYWdlICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckxlZ2VuZFRpdGxlKCkKICAgICB7
Ci0gICAgICByZXR1cm4gZGVjb2RlKCLsxcfFzsTBIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQ
m9C10LPQtdC90LTQsCIpOwogICAgIH0KICAgICAvKiEgcGFnZSBleHBsYWluaW5nIGhvdyB0aGUg
ZG90IGdyYXBoJ3Mgc2hvdWxkIGJlIGludGVycHJldGVkICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ckxlZ2VuZERvY3MoKQogICAgIHsKICAgICAgIHJldHVybiBkZWNvZGUoIAotICAgICAgICAi
78LP2s7B3sXOydEsIMnT0M/M2NrVxc3ZxSDXIMfSwcbByC48cD5cbiIKLSAgICAgICAgIvLB09PN
z9TSyc0g08zFxNXA3cnKINDSyc3F0jpcbiIKKyAgICAgICAgItCe0LHQvtC30L3QsNGH0LXQvdC4
0Y8sINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQsiDQs9GA0LDRhNCw0YUuPHA+XG4iCisgICAg
ICAgICLQoNCw0YHRgdC80L7RgtGA0LjQvCDRgdC70LXQtNGD0Y7RidC40Lkg0L/RgNC40LzQtdGA
OlxuIgogICAgICAgICAiXFxjb2RlXG4iCi0gICAgICAgICIvKiEg7sXXycTJzdnKIMvMwdPTIMna
LdrBINXTxd7FzsnRICovXG4iCisgICAgICAgICIvKiEg0J3QtdCy0LjQtNC40LzRi9C5INC60LvQ
sNGB0YEg0LjQty3Qt9CwINGD0YHQtdGH0LXQvdC40Y8gKi9cbiIKICAgICAgICAgImNsYXNzIElu
dmlzaWJsZSB7IH07XG5cbiIKLSAgICAgICAgIi8qISD108Xexc7O2cogy8zB09MsIM/Uzs/bxc7J
xSDOwdPMxcTP18HOydEg08vS2dTPICovXG4iCisgICAgICAgICIvKiEg0KPRgdC10YfQtdC90L3R
i9C5INC60LvQsNGB0YEsINC+0YLQvdC+0YjQtdC90LjQtSDQvdCw0YHQu9C10LTQvtCy0LDQvdC4
0Y8g0YHQutGA0YvRgtC+ICovXG4iCiAgICAgICAgICJjbGFzcyBUcnVuY2F0ZWQgOiBwdWJsaWMg
SW52aXNpYmxlIHsgfTtcblxuIgotICAgICAgICAiLyog7sXEz8vVzcXO1MnSz9fBzs7ZyiDLzMHT
0yAqL1xuIgorICAgICAgICAiLyog0J3QtdC00L7QutGD0LzQtdC90YLQuNGA0L7QstCw0L3QvdGL
0Lkg0LrQu9Cw0YHRgSAqL1xuIgogICAgICAgICAiY2xhc3MgVW5kb2N1bWVudGVkIHsgfTtcblxu
IgotICAgICAgICAiLyohIO/Uy9LZ1M/FIM7B08zFxM/Xwc7JxSAqL1xuIgorICAgICAgICAiLyoh
INCe0YLQutGA0YvRgtC+0LUg0L3QsNGB0LvQtdC00L7QstCw0L3QuNC1ICovXG4iCiAgICAgICAg
ICJjbGFzcyBQdWJsaWNCYXNlIDogcHVibGljIFRydW5jYXRlZCB7IH07XG5cbiIKLSAgICAgICAg
Ii8qISD7wcLMz84gy8zB09PBICovXG4iCisgICAgICAgICIvKiEg0KjQsNCx0LvQvtC9INC60LvQ
sNGB0YHQsCAqL1xuIgogICAgICAgICAidGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVGVtcGwge307
XG5cbiIKLSAgICAgICAgIi8qISD6wd3J3cXOzs/FIM7B08zFxM/Xwc7JxSAqL1xuIgorICAgICAg
ICAiLyohINCX0LDRidC40YnQtdC90L3QvtC1INC90LDRgdC70LXQtNC+0LLQsNC90LjQtSAqL1xu
IgogICAgICAgICAiY2xhc3MgUHJvdGVjdGVkQmFzZSB7IH07XG5cbiIKLSAgICAgICAgIi8qISD6
wcvS2dTPxSDOwdPMxcTP18HOycUgKi9cbiIKKyAgICAgICAgIi8qISDQl9Cw0LrRgNGL0YLQvtC1
INC90LDRgdC70LXQtNC+0LLQsNC90LjQtSAqL1xuIgogICAgICAgICAiY2xhc3MgUHJpdmF0ZUJh
c2UgeyB9O1xuXG4iCi0gICAgICAgICIvKiEg68zB09MsIMnT0M/M2NrVxc3ZyiDLzMHT08/NIElu
aGVyaXRlZCAqL1xuIgorICAgICAgICAiLyohINCa0LvQsNGB0YEsINC40YHQv9C+0LvRjNC30YPQ
tdC80YvQuSDQutC70LDRgdGB0L7QvCBJbmhlcml0ZWQgKi9cbiIKICAgICAgICAgImNsYXNzIFVz
ZWQgeyB9O1xuXG4iCi0gICAgICAgICIvKiEg68zB09MsINDP0s/WxMXOztnKIM/UIMTS1cfJyCDL
zMHT08/XICovXG4iCisgICAgICAgICIvKiEg0JrQu9Cw0YHRgSwg0L/QvtGA0L7QttC00LXQvdC9
0YvQuSDQvtGCINC00YDRg9Cz0LjRhSDQutC70LDRgdGB0L7QsiAqL1xuIgogICAgICAgICAiY2xh
c3MgSW5oZXJpdGVkIDogcHVibGljIFB1YmxpY0Jhc2UsXG4iCiAgICAgICAgICIgICAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWQgUHJvdGVjdGVkQmFzZSxcbiIKICAgICAgICAgIiAgICAgICAgICAg
ICAgICAgIHByaXZhdGUgUHJpdmF0ZUJhc2UsXG4iCkBAIC0xMDc5LDM5ICsxMDYwLDM5IEBACiAg
ICAgICAgICIgICAgVXNlZCAqbV91c2VkQ2xhc3M7XG4iCiAgICAgICAgICJ9O1xuIgogICAgICAg
ICAiXFxlbmRjb2RlXG4iCi0gICAgICAgICLl08zJIFxcYyBNQVhfRE9UX0dSQVBIX0hFSUdIVCDX
IMvPzsbJx9XSwcPJz87Oz80gxsHKzMUgIgotICAgICAgICAi1dPUwc7P18zFziDXIDI0MCwg0M/M
1d7J1NPRINPMxcTVwN3JyiDH0sHGOiIKKyAgICAgICAgItCV0YHQu9C4IFxcYyBNQVhfRE9UX0dS
QVBIX0hFSUdIVCDQsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QvCDRhNCw0LnQu9C1
ICIKKyAgICAgICAgItGD0YHRgtCw0L3QvtCy0LvQtdC9INCyIDI0MCwg0L/QvtC70YPRh9C40YLR
gdGPINGB0LvQtdC00YPRjtGJ0LjQuSDQs9GA0LDRhDoiCiAgICAgICAgICI8cD48Y2VudGVyPjxp
bWcgc3JjPVwiZ3JhcGhfbGVnZW5kLiIrQ29uZmlnX2dldEVudW0oIkRPVF9JTUFHRV9GT1JNQVQi
KSsiXCI+PC9jZW50ZXI+XG4iCiAgICAgICAgICI8cD5cbiIKLSAgICAgICAgIvDS0c3P1cfPzNjO
ycvJINcg3NTPzSDH0sHGxSDJzcXA1CDTzMXE1cDdxcUg2s7B3sXOycU6XG4iCisgICAgICAgICLQ
n9GA0Y/QvNC+0YPQs9C+0LvRjNC90LjQutC4INCyINGN0YLQvtC8INCz0YDQsNGE0LUg0LjQvNC1
0Y7RgiDRgdC70LXQtNGD0Y7RidC10LUg0LfQvdCw0YfQtdC90LjQtTpcbiIKICAgICAgICAgIjx1
bD5cbiIKLSAgICAgICAgIjxsaT76wdDPzM7Fzs7ZyiDexdLO2cog0NLRzc/Vx8/M2M7JyyDQ0sXE
09TB18zRxdQg09TS1cvU1dLVIMnMySDLzMHT0ywgIgotICAgICAgICAixMzRIMvP1M/Sz8fPINPP
2sTBziDH0sHGLlxuIgotICAgICAgICAiPGxpPvDS0c3P1cfPzNjOycsg0yDexdLOz8ogx9LBzsnD
xcogz8LP2s7B3sHF1CDEz8vVzcXO1MnSz9fBzs7VwCDT1NLVy9TV0tUgyczJIMvMwdPTLlxuIgot
ICAgICAgICAiPGxpPvDS0c3P1cfPzNjOycsg0yDTxdLPyiDH0sHOycPFyiDPws/azsHewcXUIM7F
xM/L1c3FztTJ0s/Xwc7O1cAg09TS1cvU1dLVIMnMySDLzMHT0y5cbiIKLSAgICAgICAgIjxsaT7w
0tHNz9XHz8zYzsnLINMgy9LB087PyiDH0sHOycPFyiDPws/azsHewcXUIMTPy9XNxc7UydLP18HO
ztXAINPU0tXL1NXS1SDJzMkgy8zB09MsIMTM0SDLz9TP0s/Hz1xuIgotICAgICAgICAiIM7FINfT
xSDP1M7P28XOydEgzsHTzMXEz9fBzsnRL9PPxMXS1sHOydEg0M/LwdrBztkuIOfSwcYg1dPF3sXO
LCAiCi0gICAgICAgICLF08zJIM/OIM7FINDPzcXT1MnM09Eg1yDVy8Hawc7O2cggx9LBzsnDwcgu
XG4iCisgICAgICAgICI8bGk+0JfQsNC/0L7Qu9C90LXQvdC90YvQuSDRh9C10YDQvdGL0Lkg0L/R
gNGP0LzQvtGD0LPQvtC70YzQvdC40Log0L/RgNC10LTRgdGC0LDQstC70Y/QtdGCINGB0YLRgNGD
0LrRgtGD0YDRgyDQuNC70Lgg0LrQu9Cw0YHRgSwgIgorICAgICAgICAi0LTQu9GPINC60L7RgtC+
0YDQvtCz0L4g0YHQvtC30LTQsNC9INCz0YDQsNGELlxuIgorICAgICAgICAiPGxpPtCf0YDRj9C8
0L7Rg9Cz0L7Qu9GM0L3QuNC6INGBINGH0LXRgNC90L7QuSDQs9GA0LDQvdC40YbQtdC5INC+0LHQ
vtC30L3QsNGH0LDQtdGCINC00L7QutGD0LzQtdC90YLQuNGA0L7QstCw0L3QvdGD0Y4g0YHRgtGA
0YPQutGC0YPRgNGDINC40LvQuCDQutC70LDRgdGBLlxuIgorICAgICAgICAiPGxpPtCf0YDRj9C8
0L7Rg9Cz0L7Qu9GM0L3QuNC6INGBINGB0LXRgNC+0Lkg0LPRgNCw0L3QuNGG0LXQuSDQvtCx0L7Q
t9C90LDRh9Cw0LXRgiDQvdC10LTQvtC60YPQvNC10L3RgtC40YDQvtCy0LDQvdC90YPRjiDRgdGC
0YDRg9C60YLRg9GA0YMg0LjQu9C4INC60LvQsNGB0YEuXG4iCisgICAgICAgICI8bGk+0J/RgNGP
0LzQvtGD0LPQvtC70YzQvdC40Log0YEg0LrRgNCw0YHQvdC+0Lkg0LPRgNCw0L3QuNGG0LXQuSDQ
vtCx0L7Qt9C90LDRh9Cw0LXRgiDQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC90L3Rg9GOINGB
0YLRgNGD0LrRgtGD0YDRgyDQuNC70Lgg0LrQu9Cw0YHRgSwg0LTQu9GPINC60L7RgtC+0YDQvtCz
0L5cbiIKKyAgICAgICAgIiDQvdC1INCy0YHQtSDQvtGC0L3QvtGI0LXQvdC40Y8g0L3QsNGB0LvQ
tdC00L7QstCw0L3QuNGPL9GB0L7QtNC10YDQttCw0L3QuNGPINC/0L7QutCw0LfQsNC90YsuINCT
0YDQsNGEINGD0YHQtdGH0LXQvSwgIgorICAgICAgICAi0LXRgdC70Lgg0L7QvSDQvdC1INC/0L7Q
vNC10YHRgtC40LvRgdGPINCyINGD0LrQsNC30LDQvdC90YvRhSDQs9GA0LDQvdC40YbQsNGFLlxu
IgogICAgICAgICAiPC91bD5cbiIKLSAgICAgICAgIvPU0sXMy8kgyc3FwNQg08zFxNXA3cXFINrO
wd7FzsnFOlxuIgorICAgICAgICAi0KHRgtGA0LXQu9C60Lgg0LjQvNC10Y7RgiDRgdC70LXQtNGD
0Y7RidC10LUg0LfQvdCw0YfQtdC90LjQtTpcbiIKICAgICAgICAgIjx1bD5cbiIKLSAgICAgICAg
IjxsaT70xc3Ozy3Tyc7R0SDT1NLFzMvBIMnT0M/M2NrVxdTT0SDEzNEgydrPwtLB1sXOydEgz9TO
z9vFzsnRIM/Uy9LZ1M/HzyDOwdPMxcTP18HOydEgIgotICAgICAgICAizcXWxNUgxNfVzdEgy8zB
09PBzckuXG4iCi0gICAgICAgICI8bGk+9MXNzs8t2sXMxc7B0SDT1NLFzMvBIMnT0M/M2NrVxdTT
0SDQ0skg2sHdyd3Fzs7PzSDOwdPMxcTP18HOyckuXG4iCi0gICAgICAgICI8bGk+9MXNzs8ty9LB
087B0SDT1NLFzMvBIMnT0M/M2NrVxdTT0SDQ0skg2sHL0tnUz80gzsHTzMXEz9fBzsnJLlxuIgot
ICAgICAgICAiPGxpPubJz8zF1M/XwdEg09TSxczLwSDJ09DPzNja1cXU09EsIMXTzMkgy8zB09Mg
08/ExdLWydTT0SDXIgotICAgICAgICAixNLVx8/NIMvMwdPFIMnMySDJ09DPzNja1cXU09EgxNLV
x8nNIMvMwdPTz80uIgotICAgICAgICAi888g09TSxczLz8og1cvB2tnXwcXU09Eg0MXSxc3Fzs7B
0SwgIgotICAgICAgICAi3sXSxdogy8/Uz9LVwCDEz9PU1dDFziDVy8Ha2dfBxc3ZyiDLzMHT0yDJ
zMkg09TS1cvU1dLBLiBcbiIKLSAgICAgICAgIjxsaT72xczUwdEg09TSxczLwSDJ09DPzNja1cXU
09EgxMzRINPX0drJINDPxNPUwc7P18vJINvBwszPzsEgySAiCi0gICAgICAgICLbwcLMz87BLCDO
wSDP087P18Ugy8/Uz9LPx88g3NTBINDPxNPUwc7P18vBINfZ0M/MzsXOwS4g8yDbwcLMz87PzSIK
LSAgICAgICAgItXLwdrZ18HF1NPRINDB0sHNxdTSINDPxNPUwc7P18vJLlxuIgorICAgICAgICAi
PGxpPtCi0LXQvNC90L4t0YHQuNC90Y/RjyDRgdGC0YDQtdC70LrQsCDQuNGB0L/QvtC70YzQt9GD
0LXRgtGB0Y8g0LTQu9GPINC40LfQvtCx0YDQsNC20LXQvdC40Y8g0L7RgtC90L7RiNC10L3QuNGP
INC+0YLQutGA0YvRgtC+0LPQviDQvdCw0YHQu9C10LTQvtCy0LDQvdC40Y8gIgorICAgICAgICAi
0LzQtdC20LTRgyDQtNCy0YPQvNGPINC60LvQsNGB0YHQsNC80LguXG4iCisgICAgICAgICI8bGk+
0KLQtdC80L3Qvi3Qt9C10LvQtdC90LDRjyDRgdGC0YDQtdC70LrQsCDQuNGB0L/QvtC70YzQt9GD
0LXRgtGB0Y8g0L/RgNC4INC30LDRidC40YnQtdC90L3QvtC8INC90LDRgdC70LXQtNC+0LLQsNC9
0LjQuC5cbiIKKyAgICAgICAgIjxsaT7QotC10LzQvdC+LdC60YDQsNGB0L3QsNGPINGB0YLRgNC1
0LvQutCwINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQv9GA0Lgg0LfQsNC60YDRi9GC0L7QvCDQ
vdCw0YHQu9C10LTQvtCy0LDQvdC40LguXG4iCisgICAgICAgICI8bGk+0KTQuNC+0LvQtdGC0L7Q
stCw0Y8g0YHRgtGA0LXQu9C60LAg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPLCDQtdGB0LvQuCDQ
utC70LDRgdGBINGB0L7QtNC10YDQttC40YLRgdGPINCyIgorICAgICAgICAi0LTRgNGD0LPQvtC8
INC60LvQsNGB0LUg0LjQu9C4INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNGA0YPQs9C40Lwg
0LrQu9Cw0YHRgdC+0LwuIgorICAgICAgICAi0KHQviDRgdGC0YDQtdC70LrQvtC5INGD0LrQsNC3
0YvQstCw0LXRgtGB0Y8g0L/QtdGA0LXQvNC10L3QvdCw0Y8sICIKKyAgICAgICAgItGH0LXRgNC1
0Lcg0LrQvtGC0L7RgNGD0Y4g0LTQvtGB0YLRg9C/0LXQvSDRg9C60LDQt9GL0LLQsNC10LzRi9C5
INC60LvQsNGB0YEg0LjQu9C4INGB0YLRgNGD0LrRgtGD0YDQsC4gXG4iCisgICAgICAgICI8bGk+
0JbQtdC70YLQsNGPINGB0YLRgNC10LvQutCwINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC7
0Y8g0YHQstGP0LfQuCDQv9C+0LTRgdGC0LDQvdC+0LLQutC4INGI0LDQsdC70L7QvdCwINC4ICIK
KyAgICAgICAgItGI0LDQsdC70L7QvdCwLCDQvdCwINC+0YHQvdC+0LLQtSDQutC+0YLQvtGA0L7Q
s9C+INGN0YLQsCDQv9C+0LTRgdGC0LDQvdC+0LLQutCwINCy0YvQv9C+0LvQvdC10L3QsC4g0KEg
0YjQsNCx0LvQvtC90L7QvCIKKyAgICAgICAgItGD0LrQsNC30YvQstCw0LXRgtGB0Y8g0L/QsNGA
0LDQvNC10YLRgCDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuIgogICAgICAgICAiPC91bD5cbiIp
OwogICAgIH0KICAgICAvKiEgdGV4dCBmb3IgdGhlIGxpbmsgdG8gdGhlIGxlZ2VuZCBwYWdlICov
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckxlZ2VuZCgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi080uIMzFx8XOxNUiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItGB0LwuINC70LXQs9C1
0L3QtNGDIik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTEyMSwxMiArMTEwMiwx
MiBAQAogICAgIC8qISBVc2VkIGFzIGEgbWFya2VyIHRoYXQgaXMgcHV0IGJlZm9yZSBhIHRlc3Qg
aXRlbSAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJUZXN0KCkKICAgICB7Ci0gICAgICByZXR1
cm4gZGVjb2RlKCL0xdPUIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQotC10YHRgiIpOwogICAg
IH0KICAgICAvKiEgVXNlZCBhcyB0aGUgaGVhZGVyIG9mIHRoZSB0ZXN0IGxpc3QgKi8KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyVGVzdExpc3QoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUo
IvPQydPPyyDUxdPUz9ciKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCh0L/QuNGB0L7QuiDRgtC1
0YHRgtC+0LIiKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMTM2LDcgKzExMTcs
NyBAQAogICAgIC8qISBVc2VkIGFzIGEgc2VjdGlvbiBoZWFkZXIgZm9yIEtERS0yIElETCBtZXRo
b2RzICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRDT1BNZXRob2RzKCkKICAgICB7Ci0gICAg
ICByZXR1cm4gZGVjb2RlKCJEQ09QIO3F1M/E2SIpOworICAgICAgcmV0dXJuIGRlY29kZSgiRENP
UCDQnNC10YLQvtC00YsiKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMTQ2LDEy
ICsxMTI3LDEyIEBACiAgICAgLyohIFVzZWQgYXMgYSBzZWN0aW9uIGhlYWRlciBmb3IgSURMIHBy
b3BlcnRpZXMgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJvcGVydGllcygpCiAgICAgewot
ICAgICAgcmV0dXJuIGRlY29kZSgi89fPytPU18EiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCh
0LLQvtC50YHRgtCy0LAiKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMgYSBzZWN0aW9uIGhlYWRl
ciBmb3IgSURMIHByb3BlcnR5IGRvY3VtZW50YXRpb24gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyUHJvcGVydHlEb2N1bWVudGF0aW9uKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLw
z8zO2cog09DJ08/LINPXz8rT1NciKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQ
uSDRgdC/0LjRgdC+0Log0YHQstC+0LnRgdGC0LIiKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCkBAIC0xMTYzLDM3ICsxMTQ0LDM3IEBACiAgICAgewogICAgICAgaWYgKENvbmZpZ19nZXRC
b29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRl
Y29kZSggIvPU0tXL1NXS2SDEwc7O2cgiICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQodGC
0YDRg9C60YLRg9GA0Ysg0LTQsNC90L3Ri9GFIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAg
ICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi68zB09PZIiApOworICAgICAgICByZXR1cm4g
ZGVjb2RlKCAi0JrQu9Cw0YHRgdGLIiApOwogICAgICAgfQogICAgIH0KICAgICAvKiEgVXNlZCBh
cyB0aGUgdGl0bGUgb2YgYSBKYXZhIHBhY2thZ2UgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
UGFja2FnZShjb25zdCBjaGFyICpuYW1lKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvDB
y8XUICIpK25hbWU7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9Cw0LrQtdGCICIpK25hbWU7CiAg
ICAgfQogICAgIC8qISBUaXRsZSBvZiB0aGUgcGFja2FnZSBpbmRleCBwYWdlICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0clBhY2thZ2VMaXN0KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2Rl
KCLwz8zO2cog09DJ08/LINDBy8XUz9cgIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9C+0LvQ
vdGL0Lkg0YHQv9C40YHQvtC6INC/0LDQutC10YLQvtCyICIpOwogICAgIH0KICAgICAvKiEgVGhl
IGRlc2NyaXB0aW9uIG9mIHRoZSBwYWNrYWdlIGluZGV4IHBhZ2UgKi8KICAgICB2aXJ0dWFsIFFD
U3RyaW5nIHRyUGFja2FnZUxpc3REZXNjcmlwdGlvbigpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi8M/MztnKINPQydPPyyDEz8vVzcXO1MnSz9fBzs7ZyCDQwcvF1M/XLiIpOworICAgICAg
cmV0dXJuIGRlY29kZSgi0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiDQtNC+0LrRg9C80LXQvdGC
0LjRgNC+0LLQsNC90L3Ri9GFINC/0LDQutC10YLQvtCyLiIpOwogICAgIH0KICAgICAvKiEgVGhl
IGxpbmsgbmFtZSBpbiB0aGUgUXVpY2sgbGlua3MgaGVhZGVyIGZvciBlYWNoIHBhZ2UgKi8KICAg
ICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFja2FnZXMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNv
ZGUoIvDBy8XU2SIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/QsNC60LXRgtGLIik7CiAgICAg
fQogICAgIC8qISBUZXh0IHNob3duIGJlZm9yZSBhIG11bHRpLWxpbmUgZGVmaW5lICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckRlZmluZVZhbHVlKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVj
b2RlKCLtwcvSz8/Q0sXExczFzsnFOiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JzQsNC60YDQ
vtC+0L/RgNC10LTQtdC70LXQvdC40LU6Iik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpA
QCAtMTIwMywxMiArMTE4NCwxMiBAQAogICAgIC8qISBVc2VkIGFzIGEgbWFya2VyIHRoYXQgaXMg
cHV0IGJlZm9yZSBhIFxcYnVnIGl0ZW0gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQnVnKCkK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLv28nCy8EiKTsKKyAgICAgIHJldHVybiBkZWNv
ZGUoItCe0YjQuNCx0LrQsCIpOwogICAgIH0KICAgICAvKiEgVXNlZCBhcyB0aGUgaGVhZGVyIG9m
IHRoZSBidWcgbGlzdCAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJCdWdMaXN0KCkKICAgICB7
Ci0gICAgICByZXR1cm4gZGVjb2RlKCLv28nCy8kiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCe
0YjQuNCx0LrQuCIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTEyMjcsNyArMTIw
OCw3IEBACiAgICAgLyohIFVzZWQgYXMgaGVhZGVyIFJURiBnZW5lcmFsIGluZGV4ICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0clJURkdlbmVyYWxJbmRleCgpCiAgICAgewotICAgICAgcmV0dXJu
IGRlY29kZSgi4czGwdfJ1M7ZyiDVy8HawdTFzNgiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCQ
0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCIpOwogICAgIH0KIAogICAgIC8q
ISBUaGlzIGlzIHVzZWQgZm9yIHRyYW5zbGF0aW9uIG9mIHRoZSB3b3JkIHRoYXQgd2lsbCBwb3Nz
aWJseQpAQCAtMTIzOCwxMyArMTIxOSwxMyBAQAogICAgIHsgCiAgICAgICBpZiAoQ29uZmlnX2dl
dEJvb2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIpKQogICAgICAgewotICAgICAgICBRQ1N0cmlu
ZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi89TS1cvU1dLZIMTBzs7ZyCIgOiAi09TS1cvU1dLZ
IMTBzs7ZyCIpKTsKKyAgICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gItCh
0YLRgNGD0LrRgtGD0YDRiyDQtNCw0L3QvdGL0YUiIDogItGB0YLRgNGD0LrRgtGD0YDRiyDQtNCw
0L3QvdGL0YUiKSk7CiAgICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAgICB9CiAg
ICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRh
bCA/ICLrzMHT0yIgOiAiy8zB09MiKSk7Ci0gICAgICAgIGlmKCFzaW5ndWxhcikgcmVzdWx0Kz0i
2SI7CisgICAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQmtC70LDRgdGB
IiA6ICLQutC70LDRgdGBIikpOworICAgICAgICBpZighc2luZ3VsYXIpIHJlc3VsdCs9ItGLIjsK
ICAgICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOyAKICAgICAgIH0KICAgICB9CkBAIC0xMjU1
LDggKzEyMzYsOCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlKGJvb2wg
Zmlyc3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikKICAgICB7IAotICAgICAgUUNTdHJpbmcgcmVz
dWx0KChmaXJzdF9jYXBpdGFsID8gIubByswiIDogIsbByswiKSk7Ci0gICAgICBpZiAoIXNpbmd1
bGFyKSAgcmVzdWx0Kz0i2SI7CisgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwg
PyAi0KTQsNC50LsiIDogItGE0LDQudC7IikpOworICAgICAgaWYgKCFzaW5ndWxhcikgIHJlc3Vs
dCs9ItGLIjsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAgfQogCkBAIC0xMjY2
LDggKzEyNDcsOCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJOYW1lc3BhY2Uo
Ym9vbCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1bGFyKQogICAgIHsgCi0gICAgICBRQ1N0cmlu
ZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi8NLP09TSwc7T1NciIDogItDSz9PU0sHO09TXIikp
OwotICAgICAgcmVzdWx0Kz0oc2luZ3VsYXI/Is8gyc3FziI6IsEgyc3FziIpOworICAgICAgUUNT
dHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gItCf0YDQvtGB0YLRgNCw0L3RgdGC0LIiIDog
ItC/0YDQvtGB0YLRgNCw0L3RgdGC0LIiKSk7CisgICAgICByZXN1bHQrPShzaW5ndWxhcj8i0L4g
0LjQvNC10L0iOiLQsCDQuNC80LXQvSIpOwogICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOyAK
ICAgICB9CiAKQEAgLTEyNzcsOCArMTI1OCw4IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0ckdyb3VwKGJvb2wgZmlyc3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikKICAgICB7IAot
ICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIufS1dDQIiA6ICLH0tXQ0CIp
KTsKLSAgICAgIHJlc3VsdCs9KHNpbmd1bGFyID8gIsEiIDogItkiKTsKKyAgICAgIFFDU3RyaW5n
IHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQk9GA0YPQv9C/IiA6ICLQs9GA0YPQv9C/IikpOwor
ICAgICAgcmVzdWx0Kz0oc2luZ3VsYXIgPyAi0LAiIDogItGLIik7CiAgICAgICByZXR1cm4gZGVj
b2RlKHJlc3VsdCk7IAogICAgIH0KIApAQCAtMTI4OCw4ICsxMjY5LDggQEAKICAgICAgKi8KICAg
ICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFnZShib29sIGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3Vs
YXIpCiAgICAgeyAKLSAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLz1NLB
zsnDIiA6ICLT1NLBzsnDIikpOwotICAgICAgcmVzdWx0Kz0oc2luZ3VsYXIgPyAiwSIgOiAi2SIp
OworICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gItCh0YLRgNCw0L3QuNGG
IiA6ICLRgdGC0YDQsNC90LjRhiIpKTsKKyAgICAgIHJlc3VsdCs9KHNpbmd1bGFyID8gItCwIiA6
ICLRiyIpOwogICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOyAKICAgICB9CiAKQEAgLTEyOTks
OCArMTI4MCw4IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck1lbWJlcihib29s
IGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3VsYXIpCiAgICAgeyAKLSAgICAgIFFDU3RyaW5nIHJl
c3VsdCgoZmlyc3RfY2FwaXRhbCA/ICL+zMXOIiA6ICLezMXOIikpOwotICAgICAgaWYgKCFzaW5n
dWxhcikgIHJlc3VsdCs9ItkiOworICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFs
ID8gItCn0LvQtdC9IiA6ICLRh9C70LXQvSIpKTsKKyAgICAgIGlmICghc2luZ3VsYXIpICByZXN1
bHQrPSLRiyI7CiAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7IAogICAgIH0KICAgIApAQCAt
MTMxMCw4ICsxMjkxLDggQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyR2xvYmFs
KGJvb2wgZmlyc3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikKICAgICB7IAotICAgICAgUUNTdHJp
bmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIufMz8LBzNjO2SIgOiAix8zPwsHM2M7ZIikpOwot
ICAgICAgcmVzdWx0Kz0oc2luZ3VsYXIgPyAiyiIgOiAixSIpOworICAgICAgUUNTdHJpbmcgcmVz
dWx0KChmaXJzdF9jYXBpdGFsID8gItCT0LvQvtCx0LDQu9GM0L3RiyIgOiAi0LPQu9C+0LHQsNC7
0YzQvdGLIikpOworICAgICAgcmVzdWx0Kz0oc2luZ3VsYXIgPyAi0LkiIDogItC1Iik7CiAgICAg
ICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7IAogICAgIH0KIApAQCAtMTMyMyw4ICsxMzA0LDggQEAK
ICAgICAgKiAgZm9yIHRoZSBhdXRob3Igc2VjdGlvbiBpbiBtYW4gcGFnZXMuICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckF1dGhvcihib29sIGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3VsYXIp
CiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2Fw
aXRhbCA/ICLh19TP0iIgOiAiwdfUz9IiKSk7Ci0gICAgICBpZiAoIXNpbmd1bGFyKSByZXN1bHQr
PSLZIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQkNCy0YLQvtGA
IiA6ICLQsNCy0YLQvtGAIikpOworICAgICAgaWYgKCFzaW5ndWxhcikgcmVzdWx0Kz0i0YsiOwog
ICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOyAKICAgICB9CiAKQEAgLTEzMzYsNyArMTMxNyw3
IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlZmVyZW5jZXMoKQogICAgIHsK
LSAgICAgIHJldHVybiBkZWNvZGUoIvDF0sXL0sXT1M7ZxSDT09nMy8kiKTsKKyAgICAgIHJldHVy
biBkZWNvZGUoItCf0LXRgNC10LrRgNC10YHRgtC90YvQtSDRgdGB0YvQu9C60LgiKTsKICAgICB9
CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMzQ4LDcgKzEzMjksNyBAQAogICAgICAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJJbXBsZW1lbnRlZEZyb21MaXN0KGludCBudW1FbnRyaWVzKQog
ICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrBzcXdwcXUICIpK3RyV3JpdGVMaXN0KG51bUVu
dHJpZXMpKyIuIjsKKyAgICAgIHJldHVybiBkZWNvZGUoItCX0LDQvNC10YnQsNC10YIgIikrdHJX
cml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAgIH0KIAogICAgIC8qISB1c2VkIGluIG1lbWJl
ciBkb2N1bWVudGF0aW9uIGJsb2NrcyB0byBwcm9kdWNlIGEgbGlzdCBvZgpAQCAtMTM1Niw3ICsx
MzM3LDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRySW1wbGVtZW50ZWRJbkxp
c3QoaW50IG51bUVudHJpZXMpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi+sHNxd3BxdTT
0SDXICIpK3RyV3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsKKyAgICAgIHJldHVybiBkZWNvZGUo
ItCX0LDQvNC10YnQsNC10YLRgdGPINCyICIpK3RyV3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsK
ICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMzY4LDcgKzEzNDksNyBAQAogICAgICAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSVEZUYWJsZU9mQ29udGVudHMoKQogICAgIHsKLSAg
ICAgIHJldHVybiBkZWNvZGUoIu/HzMHXzMXOycUiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCe
0LPQu9Cw0LLQu9C10L3QuNC1Iik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTM4
MCw3ICsxMzYxLDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGVwcmVjYXRl
ZExpc3QoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoICLz0MnTz8sg1dPUwdLF19vJyCDP
0NLFxMXMxc7JyiDJIM/QydPBzsnKIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCh0L/QuNGB
0L7QuiDRg9GB0YLQsNGA0LXQstGI0LjRhSDQvtC/0YDQtdC00LXQu9C10L3QuNC5INC4INC+0L/Q
uNGB0LDQvdC40LkiICk7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTM5MiwxMiAr
MTM3MywxMiBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFdmVudHMoKQogICAg
IHsKLSAgICAgIHJldHVybiBkZWNvZGUoICLzz8LZ1MnRIiApOworICAgICAgcmV0dXJuIGRlY29k
ZSggItCh0L7QsdGL0YLQuNGPIiApOwogICAgIH0KICAgICAvKiEgSGVhZGVyIHVzZWQgZm9yIHRo
ZSBkb2N1bWVudGF0aW9uIHNlY3Rpb24gb2YgYSBjbGFzcycgZXZlbnRzLiAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJFdmVudERvY3VtZW50YXRpb24oKQogICAgIHsKLSAgICAgIHJldHVybiBk
ZWNvZGUoICJDz8LZ1MnRIiApOworICAgICAgcmV0dXJuIGRlY29kZSggIkPQvtCx0YvRgtC40Y8i
ICk7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTQwOCwzNSArMTM4OSwzNSBAQAog
ICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdlVHlwZXMoKQogICAgIHsgCi0g
ICAgICByZXR1cm4gZGVjb2RlKCAi9MnQ2SDTIM/CzMHT1NjAINfJxMnNz9PUySDQwcvF1MEiICk7
CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KLQuNC/0Ysg0YEg0L7QsdC70LDRgdGC0YzRjiDQstC4
0LTQuNC80L7RgdGC0Lgg0L/QsNC60LXRgtCwIiApOwogICAgIH0KICAgICAvKiEgVXNlZCBhcyBh
IGhlYWRpbmcgZm9yIGEgbGlzdCBvZiBKYXZhIGNsYXNzIGZ1bmN0aW9ucyB3aXRoIHBhY2thZ2Ug
CiAgICAgICogc2NvcGUuIAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdl
TWVtYmVycygpCiAgICAgeyAKLSAgICAgIHJldHVybiBkZWNvZGUoICLm1c7Lw8nJINMgz8LMwdPU
2MAg18nEyc3P09TJINDBy8XUwSIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQpNGD0L3QutGG
0LjQuCDRgSDQvtCx0LvQsNGB0YLRjNGOINCy0LjQtNC40LzQvtGB0YLQuCDQv9Cw0LrQtdGC0LAi
ICk7CiAgICAgfQogICAgIC8qISBVc2VkIGFzIGEgaGVhZGluZyBmb3IgYSBsaXN0IG9mIHN0YXRp
YyBKYXZhIGNsYXNzIGZ1bmN0aW9ucyB3aXRoIAogICAgICAqICBwYWNrYWdlIHNjb3BlLgogICAg
ICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTdGF0aWNQYWNrYWdlTWVtYmVycygpCiAgICAg
eyAKLSAgICAgIHJldHVybiBkZWNvZGUoICLz1MHUyd7F08vJxSDG1c7Lw8nJINMgz8LMwdPU2MAg
18nEyc3P09TJINDBy8XUwSIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQodGC0LDRgtC40YfQ
tdGB0LrQuNC1INGE0YPQvdC60YbQuNC4INGBINC+0LHQu9Cw0YHRgtGM0Y4g0LLQuNC00LjQvNC+
0YHRgtC4INC/0LDQutC10YLQsCIgKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMgYSBoZWFkaW5n
IGZvciBhIGxpc3Qgb2YgSmF2YSBjbGFzcyB2YXJpYWJsZXMgd2l0aCBwYWNrYWdlIAogICAgICAq
IHNjb3BlLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdlQXR0cmlicygp
CiAgICAgeyAKLSAgICAgIHJldHVybiBkZWNvZGUoICLwxdLFzcXOztnFINMgz8LMwdPU2MAg18nE
yc3P09TJINDBy8XUwSIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQn9C10YDQtdC80LXQvdC9
0YvQtSDRgSDQvtCx0LvQsNGB0YLRjNGOINCy0LjQtNC40LzQvtGB0YLQuCDQv9Cw0LrQtdGC0LAi
ICk7CiAgICAgfQogICAgIC8qISBVc2VkIGFzIGEgaGVhZGluZyBmb3IgYSBsaXN0IG9mIHN0YXRp
YyBKYXZhIGNsYXNzIHZhcmlhYmxlcyB3aXRoIAogICAgICAqIHBhY2thZ2Ugc2NvcGUuCiAgICAg
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clN0YXRpY1BhY2thZ2VBdHRyaWJzKCkKICAgICB7
IAotICAgICAgcmV0dXJuIGRlY29kZSggIvPUwdTJ3sXTy8nFINDF0sXNxc7O2cUg0yDPwszB09TY
wCDXycTJzc/T1Mkg0MHLxdTBIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCh0YLQsNGC0LjR
h9C10YHQutC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUg0YEg0L7QsdC70LDRgdGC0YzRjiDQstC4
0LTQuNC80L7RgdGC0Lgg0L/QsNC60LXRgtCwIiApOwogICAgIH0KICAgICAKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCkBAIC0xNDQ4LDEyICsxNDI5LDEyIEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0ckFsbCgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIvXLwdrB1MXM2CIgKTsK
KyAgICAgIHJldHVybiBkZWNvZGUoICLQo9C60LDQt9Cw0YLQtdC70YwiICk7CiAgICAgfQogICAg
IC8qISBQdXQgaW4gZnJvbnQgb2YgdGhlIGNhbGwgZ3JhcGggZm9yIGEgZnVuY3Rpb24uICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0ckNhbGxHcmFwaCgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSggIufSwcYg19naz9fP1zoiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0JPRgNCw0YQg
0LLRi9C30L7QstC+0LI6IiApOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTE0NjYs
MTQgKzE0NDcsMTQgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2VhcmNoRm9y
SW5kZXgoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoICLwz8nTyyIgKTsKKyAgICAgIHJl
dHVybiBkZWNvZGUoICLQn9C+0LjRgdC6IiApOwogICAgIH0KICAgICAvKiEgVGhpcyBzdHJpbmcg
aXMgdXNlZCBhcyB0aGUgdGl0bGUgZm9yIHRoZSBwYWdlIGxpc3RpbmcgdGhlIHNlYXJjaAogICAg
ICAqICByZXN1bHRzLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTZWFyY2hSZXN1
bHRzVGl0bGUoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoICLyxdrVzNjUwdTZINDPydPL
wSIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQoNC10LfRg9C70YzRgtCw0YLRiyDQv9C+0LjR
gdC60LAiICk7CiAgICAgfQogICAgIC8qISBUaGlzIHN0cmluZyBpcyBwdXQganVzdCBiZWZvcmUg
bGlzdGluZyB0aGUgc2VhcmNoIHJlc3VsdHMuIFRoZQogICAgICAqICB0ZXh0IGNhbiBiZSBkaWZm
ZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIGZvdW5kLgpAQCAtMTQ4
NywxNiArMTQ2OCwxNiBAQAogICAgIHsKICAgICAgIGlmIChudW1Eb2N1bWVudHM9PTApCiAgICAg
ICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLrINPP1sHMxc7JwCwg0M8g98Hbxc3VINrB0NLP
09UgzsnexcfPIM7FIM7BysTFzs8uIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0Jog0YHQ
vtC20LDQu9C10L3QuNGOLCDQv9C+INCS0LDRiNC10LzRgyDQt9Cw0L/RgNC+0YHRgyDQvdC40YfQ
tdCz0L4g0L3QtSDQvdCw0LnQtNC10L3Qvi4iICk7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKCBu
dW1Eb2N1bWVudHMgPT0gMSApCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLuwcrE
xc4gMSDEz8vVzcXO1C4iICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQndCw0LnQtNC10L0g
MSDQtNC+0LrRg9C80LXQvdGCLiIgKTsKICAgICAgIH0KICAgICAgIGVsc2UgCiAgICAgICB7Ci0g
ICAgICAgIHJldHVybiBkZWNvZGUoICLuwcrExc4ozykgPGI+JG51bTwvYj4gxM/L1c3FztQoz9cp
LiAiCi0gICAgICAgICAgIuTPy9XNxc7U2SDP1NPP0tTJ0s/Xwc7ZINDPINLFzMXXwc7Uzs/T1Mku
IiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0J3QsNC50LTQtdC9KNC+KSA8Yj4kbnVtPC9i
PiDQtNC+0LrRg9C80LXQvdGCKNC+0LIpLiAiCisgICAgICAgICAgItCU0L7QutGD0LzQtdC90YLR
iyDQvtGC0YHQvtGA0YLQuNGA0L7QstCw0L3RiyDQv9C+INGA0LXQu9C10LLQsNC90YLQvdC+0YHR
gtC4LiIgKTsKICAgICAgIH0KICAgICB9CiAgICAgLyohIFRoaXMgc3RyaW5nIGlzIHB1dCBiZWZv
cmUgdGhlIGxpc3Qgb2YgbWF0Y2hlZCB3b3JkcywgZm9yIGVhY2ggc2VhcmNoIApAQCAtMTUwNCw3
ICsxNDg1LDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2VhcmNoTWF0Y2hl
cygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIu7BysTFzs86IiApOworICAgICAgcmV0
dXJuIGRlY29kZSggItCd0LDQudC00LXQvdC+OiIgKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCkBAIC0xNTE1LDcgKzE0OTYsNyBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcg
dHJTb3VyY2VGaWxlKFFDU3RyaW5nJiBmaWxlbmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gZGVj
b2RlKCAi6dPIz8TO2cogxsHKzCAiICsgZmlsZW5hbWUgKTsKKyAgICAgIHJldHVybiBkZWNvZGUo
ICLQmNGB0YXQvtC00L3Ri9C5INGE0LDQudC7ICIgKyBmaWxlbmFtZSApOwogICAgIH0KIAogLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KQEAgLTE1MjYsMzkgKzE1MDcsMzkgQEAKICAgICAgKiAgaGllcmFyY2h5
LgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEaXJJbmRleCgpCi0gICAgeyByZXR1
cm4gZGVjb2RlKCAi5MXSxdfPIMTJ0sXL1M/SycoiICk7IH0KKyAgICB7IHJldHVybiBkZWNvZGUo
ICLQlNC10YDQtdCy0L4g0LTQuNGA0LXQutGC0L7RgNC40LkiICk7IH0KIAogICAgIC8qISBUaGlz
IGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIGNoYXB0ZXIgY29udGFpbmluZyB0aGUgZG9jdW1l
bnRhdGlvbgogICAgICAqICBvZiB0aGUgZGlyZWN0b3JpZXMuCiAgICAgICovCiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0ckRpckRvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSggIuTJ
0sXL1M/SyckiICk7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoICLQlNC40YDQtdC60YLQvtGA0LjQ
uCIgKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBhcyB0aGUgdGl0bGUgb2YgdGhlIGRpcmVj
dG9yeSBpbmRleCBhbmQgYWxzbyBpbiB0aGUKICAgICAgKiAgUXVpY2sgbGlua3Mgb2YgYSBIVE1M
IHBhZ2UsIHRvIGxpbmsgdG8gdGhlIGRpcmVjdG9yeSBoaWVyYXJjaHkuCiAgICAgICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckRpcmVjdG9yaWVzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoICLh
zMbB18nUztnKINXLwdrB1MXM2CDEydLFy9TP0snKIiApOyB9CisgICAgeyByZXR1cm4gZGVjb2Rl
KCAi0JDQu9GE0LDQstC40YLQvdGL0Lkg0YPQutCw0LfQsNGC0LXQu9GMINC00LjRgNC10LrRgtC+
0YDQuNC5IiApOyB9CiAKICAgICAvKiEgVGhpcyByZXR1cm5zIGEgc2VudGVuY2VzIHRoYXQgaW50
cm9kdWNlcyB0aGUgZGlyZWN0b3J5IGhpZXJhcmNoeS4gCiAgICAgICogIGFuZCB0aGUgZmFjdCB0
aGF0IGl0IGlzIHNvcnRlZCBhbHBoYWJldGljYWxseSBwZXIgbGV2ZWwKICAgICAgKi8KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyRGlyRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgg
IuTF0sXXzyDEydLFy9TP0snKIiApOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCAi0JTQtdGA0LXQ
stC+INC00LjRgNC10LrRgtC+0YDQuNC5IiApOyB9CiAKICAgICAvKiEgVGhpcyByZXR1cm5zIHRo
ZSB0aXRsZSBvZiBhIGRpcmVjdG9yeSBwYWdlLiBUaGUgbmFtZSBvZiB0aGUKICAgICAgKiAgZGly
ZWN0b3J5IGlzIHBhc3NlZCB2aWEgXGEgZGlyTmFtZS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFD
U3RyaW5nIHRyRGlyUmVmZXJlbmNlKGNvbnN0IGNoYXIgKmRpck5hbWUpCi0gICAgeyBRQ1N0cmlu
ZyByZXN1bHQ9UUNTdHJpbmcoIvPPxMXS1sHOycUgxMnSxcvUz9LJySAiKSsgZGlyTmFtZTsgcmV0
dXJuIGRlY29kZSggcmVzdWx0ICk7IH0KKyAgICB7IFFDU3RyaW5nIHJlc3VsdD1RQ1N0cmluZygi
0KHQvtC00LXRgNC20LDQvdC40LUg0LTQuNGA0LXQutGC0L7RgNC40LggIikrIGRpck5hbWU7IHJl
dHVybiBkZWNvZGUoIHJlc3VsdCApOyB9CiAKICAgICAvKiEgVGhpcyByZXR1cm5zIHRoZSB3b3Jk
IGRpcmVjdG9yeSB3aXRoIG9yIHdpdGhvdXQgc3RhcnRpbmcgY2FwaXRhbAogICAgICAqICAoXGEg
Zmlyc3RfY2FwaXRhbCkgYW5kIGluIHNpZ3VsYXIgb3IgcGx1cmFsIGZvcm0gKFxhIHNpbmd1bGFy
KS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGlyKGJvb2wgZmlyc3RfY2FwaXRh
bCwgYm9vbCBzaW5ndWxhcikKICAgICB7IAotICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9j
YXBpdGFsID8gIuTJ0sXL1M/SySIgOiAixMnSxcvUz9LJIikpOwotICAgICAgaWYgKHNpbmd1bGFy
KSByZXN1bHQrPSLRIjsgZWxzZSByZXN1bHQrPSLJIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdCgo
Zmlyc3RfY2FwaXRhbCA/ICLQlNC40YDQtdC60YLQvtGA0LgiIDogItC00LjRgNC10LrRgtC+0YDQ
uCIpKTsKKyAgICAgIGlmIChzaW5ndWxhcikgcmVzdWx0Kz0i0Y8iOyBlbHNlIHJlc3VsdCs9ItC4
IjsKICAgICAgIHJldHVybiBkZWNvZGUoIHJlc3VsdCApOyAKICAgICB9CiAKQEAgLTE1NzEsOSAr
MTU1Miw5IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck92ZXJsb2FkVGV4dCgp
CiAgICAgewotICAgICAgIHJldHVybiBkZWNvZGUoICL81MEgxtXOy8PJ0SDQxdLFx9LV1sXOwSDJ
INDSxcTP09TB18zRxdTT0SDJ08vMwN7J1MXM2M7PICIKLSAgICAgICAgICAgICAgIsTM0SDVxM/C
09TXwSDJ09DPzNjaz9fBzsnRLiDvzsEgz9TMyd7BxdTT0SDP1CDX2dvF1dDPzdHO1dTPyiAiCi0g
ICAgICAgICAgICAgICLUz8zYy88gxsHL1MnexdPLyc3JIMHSx9XNxc7Uwc3JLiIgKTsKKyAgICAg
ICByZXR1cm4gZGVjb2RlKCAi0K3RgtCwINGE0YPQvdC60YbQuNGPINC/0LXRgNC10LPRgNGD0LbQ
tdC90LAg0Lgg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9C10YLRgdGPINC40YHQutC70Y7Rh9C40YLQ
tdC70YzQvdC+ICIKKyAgICAgICAgICAgICAgItC00LvRjyDRg9C00L7QsdGB0YLQstCwINC40YHQ
v9C+0LvRjNC30L7QstCw0L3QuNGPLiDQntC90LAg0L7RgtC70LjRh9Cw0LXRgtGB0Y8g0L7RgiDQ
stGL0YjQtdGD0L/QvtC80Y/QvdGD0YLQvtC5ICIKKyAgICAgICAgICAgICAgItGC0L7Qu9GM0LrQ
viDRhNCw0LrRgtC40YfQtdGB0LrQuNC80Lgg0LDRgNCz0YPQvNC10L3RgtCw0LzQuC4iICk7CiAg
ICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTU4MywxNCArMTU2NCwxNCBAQAogICAgIC8q
ISBUaGlzIGlzIHVzZWQgdG8gaW50cm9kdWNlIGEgY2FsbGVyIChvciBjYWxsZWQtYnkpIGdyYXBo
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNhbGxlckdyYXBoKCkKICAgICB7Ci0gICAgICBy
ZXR1cm4gZGVjb2RlKCAi59LBxiDX2drP18EgxtXOy8PJyToiICk7CisgICAgICByZXR1cm4gZGVj
b2RlKCAi0JPRgNCw0YQg0LLRi9C30L7QstCwINGE0YPQvdC60YbQuNC4OiIgKTsKICAgICB9CiAK
ICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1l
c3BhY2UgYmVmb3JlIHRoZSBsaXN0IAogICAgICAqICBvZiBkb2N1bWVudGF0aW9uIGJsb2NrcyBm
b3IgZW51bWVyYXRpb24gdmFsdWVzCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckVu
dW1lcmF0aW9uVmFsdWVEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoICL8zMXN
xc7U2SDQxdLF3snTzMXOycoiICk7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoICLQrdC70LXQvNC1
0L3RgtGLINC/0LXRgNC10YfQuNGB0LvQtdC90LjQuSIgKTsgfQogCiAKIH07Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111544</attachid>
            <date>2007-02-28 14:11 0000</date>
            <desc>files/doxygen-1.4.7-utf8-ru.patch</desc>
            <filename>doxygen-1.4.7-utf8-ru.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtcnVOIGRveHlnZW4tMS40Ljcub3JpZy9zcmMvdHJhbnNsYXRvcl9ydS5oIGRveHlnZW4t
MS40Ljcvc3JjL3RyYW5zbGF0b3JfcnUuaAotLS0gZG94eWdlbi0xLjQuNy5vcmlnL3NyYy90cmFu
c2xhdG9yX3J1LmgJMjAwNi0wNS0wNyAyMjowMjozMi4wMDAwMDAwMDAgKzA0MDAKKysrIGRveHln
ZW4tMS40Ljcvc3JjL3RyYW5zbGF0b3JfcnUuaAkyMDA3LTAyLTIzIDEzOjA0OjUxLjAwMDAwMDAw
MCArMDMwMApAQCAtMjAsNTQgKzIwLDU5IEBACiAgKiBBbmRyZXkgVi4gU3RvbHlhcm92IHJlbGVh
c2VkIEZlYiAxNCwgMjAwMQogICogQWxleGFuZHIgVi4gQ2hlbHBhbm92IDxjYXZAY3J5cHRvcHJv
LnJ1PiByZWxlYXNlZCBTZXAgMjUsIDIwMDQKICAqCi0gKiDw0skg0MXSxdfPxMUg2sHHz8zP18vP
1yDTzM/XwSBsaXN0IMkgZG9jdW1lbnRhdGlvbiDVwtLBztkuCisgKiDQn9GA0Lgg0L/QtdGA0LXQ
stC+0LTQtSDQt9Cw0LPQvtC70L7QstC60L7QsiDRgdC70L7QstCwIGxpc3Qg0LggZG9jdW1lbnRh
dGlvbiDRg9Cx0YDQsNC90YsuCiAgKgotICogTW9kdWxlcyDQxdLF18XExc7PIMvByyDH0tXQ0Nks
INTByyDLwcsgzc/E1czJIN7B3cUg19PFx88g1yDS1dPTy8/NIAotICogINDF0sXXz8TFINfT1NLF
3sHF1NPRINcgy8/O1MXL09TFIM3PxNXM0SDLwcsgxcTJzsnD2SDU0sHO08zRw8nJLCDGwcrMwQot
ICogIMkgxNIuLCDe1M8g1yDEwc7Oz80g08zV3sHFIM7FINPP19PFzSDQz8TIz8TJ1Cwg1MXNIMLP
zMXFIN7UzyAKLSAqICDTz8/U18XU09TX1cDdwdEgy8/Nwc7EwSDXIGRveHlnZW4gyc3FztXF1NPR
IFxncm91cC4KKyAqIE1vZHVsZXMg0L/QtdGA0LXQstC10LTQtdC90L4g0LrQsNC6INCz0YDRg9C/
0L/Riywg0YLQsNC6INC60LDQuiDQvNC+0LTRg9C70Lgg0YfQsNGJ0LUg0LLRgdC10LPQviDQsiDR
gNGD0YHRgdC60L7QvCAKKyAqICDQv9C10YDQtdCy0L7QtNC1INCy0YHRgtGA0LXRh9Cw0LXRgtGB
0Y8g0LIg0LrQvtC90YLQtdC60YHRgtC1INC80L7QtNGD0LvRjyDQutCw0Log0LXQtNC40L3QuNGG
0Ysg0YLRgNCw0L3RgdC70Y/RhtC40LgsINGE0LDQudC70LAKKyAqICDQuCDQtNGALiwg0YfRgtC+
INCyINC00LDQvdC90L7QvCDRgdC70YPRh9Cw0LUg0L3QtSDRgdC+0LLRgdC10Lwg0L/QvtC00YXQ
vtC00LjRgiwg0YLQtdC8INCx0L7Qu9C10LUg0YfRgtC+IAorICogINGB0L7QvtGC0LLQtdGC0YHR
gtCy0YPRjtGJ0LDRjyDQutC+0LzQsNC90LTQsCDQsiBkb3h5Z2VuINC40LzQtdC90YPQtdGC0YHR
jyBcZ3JvdXAuCiAgKiAKLSAqIPDSz9PYwsEgzsUgz9DUyc3J2snSz9fB1NggZGVjb2RlIM/C0sHN
zNHRINLF2tXM2NTB1Cwg3NTPIM3P1sXUINDSydfF09TJCi0gKiAgyyDQxdLFy8/EydLP18vFINfI
z8TBINcg1M/NIN7J08zFINLV09PLycggyc3FziDGwcrMz9cuCisgKiDQn9GA0L7RgdGM0LHQsCDQ
vdC1INC+0L/RgtC40LzQuNC30LjRgNC+0LLQsNGC0YwgZGVjb2RlINC+0LHRgNCw0LzQu9GP0Y8g
0YDQtdC30YPQu9GM0YLQsNGCLCDRjdGC0L4g0LzQvtC20LXRgiDQv9GA0LjQstC10YHRgtC4Cisg
KiAg0Log0L/QtdGA0LXQutC+0LTQuNGA0L7QstC60LUg0LLRhdC+0LTQsCDQsiDRgtC+0Lwg0YfQ
uNGB0LvQtSDRgNGD0YHRgdC60LjRhSDQuNC80LXQvSDRhNCw0LnQu9C+0LIuCiAgKgotICog79TE
wc7PINDSxcTQz97Uxc7JxSDQ0skg0MXSxdfPxMUgcmVsYXRlZCBmdW5jdGlvbnMgLSAiz9TOz9PR
3cnF09EgyyDLzMHT09UKLSAqICDG1c7Lw8nJIiwgwSDOxSAi09fR2sHOztnFIMbVzsvDyckiLCDe
1M8g18XSzs8gxM8g1MXIINDP0iDQz8vBIMXT1Ngg1M/M2MvPCi0gKiAgcmVsYXRlZCB0byBjbGFz
cywgySDOxdQgcmVsYXRlZCB0byB0ZW1wbGF0ZSwgcGFja2FnZSDJINQuxC4g8M/TzMXEzsXFCi0g
KiAg2sHNxd7BzsnFIMvB08HF1NPRIMLPzNjbyc7T1NfBIG1lbWJlci4KKyAqINCe0YLQtNCw0L3Q
viDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40LUg0L/RgNC4INC/0LXRgNC10LLQvtC00LUgcmVsYXRl
ZCBmdW5jdGlvbnMgLSAi0L7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDQutC70LDRgdGB0YMKKyAq
ICDRhNGD0L3QutGG0LjQuCIsINCwINC90LUgItGB0LLRj9C30LDQvdC90YvQtSDRhNGD0L3QutGG
0LjQuCIsINGH0YLQviDQstC10YDQvdC+INC00L4g0YLQtdGFINC/0L7RgCDQv9C+0LrQsCDQtdGB
0YLRjCDRgtC+0LvRjNC60L4KKyAqICByZWxhdGVkIHRvIGNsYXNzLCDQuCDQvdC10YIgcmVsYXRl
ZCB0byB0ZW1wbGF0ZSwgcGFja2FnZSDQuCDRgi7QtC4g0J/QvtGB0LvQtdC00L3QtdC1CisgKiAg
0LfQsNC80LXRh9Cw0L3QuNC1INC60LDRgdCw0LXRgtGB0Y8g0LHQvtC70YzRiNC40L3RgdGC0LLQ
sCBtZW1iZXIuCiAgKgotICog8M8g18/azc/Wzs/T1Mkg0NLJINDF0sXXz8TFIG1lbWJlcnMg1cvB
2tnXwcXU09Eg3szFzs/NIN7Fx88g3NTP1CBtZW1iZXIKLSAqICDR18zRxdTT0S4gCisgKiDQn9C+
INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/RgNC4INC/0LXRgNC10LLQvtC00LUgbWVtYmVycyDR
g9C60LDQt9GL0LLQsNC10YLRgdGPINGH0LvQtdC90L7QvCDRh9C10LPQviDRjdGC0L7RgiBtZW1i
ZXIKKyAqICDRj9Cy0LvRj9C10YLRgdGPLiAKICAqCi0gKiBDb21wb3VuZHMg0MXSxdfFxMXOzyDL
wcsgy8zB09PZLCDTzSDz1NLP1dPU0sHQLgorICogQ29tcG91bmRzINC/0LXRgNC10LLQtdC00LXQ
vdC+INC60LDQuiDQutC70LDRgdGB0YssINGB0Lwg0KHRgtGA0L7Rg9GB0YLRgNCw0L8uCiAgKgot
ICog79DSxcTFzMXOydEg0M/Nxd7Fzs7ZxSA/PyDR18zRwNTT0SDT0M/SztnNyS4KKyAqINCe0L/R
gNC10LTQtdC70LXQvdC40Y8g0L/QvtC80LXRh9C10L3QvdGL0LUgPz8g0Y/QstC70Y/RjtGC0YHR
jyDRgdC/0L7RgNC90YvQvNC4LgogICoKLSAqIOLMwcfPxMHSzs/T1Mk6IFZpdGFseSBBLiBSZXBp
biA8dml0YWx5QHJhZGlvLmhvcC5zdHUubmV2YS5ydT4sCi0gKiAgICDtycjBycwg58zV28XOy8/X
IDxiYm1hbkBtYWlsLnJ1PgorICog0JHQu9Cw0LPQvtC00LDRgNC90L7RgdGC0Lg6IFZpdGFseSBB
LiBSZXBpbiA8dml0YWx5QHJhZGlvLmhvcC5zdHUubmV2YS5ydT4sCisgKiAgICDQnNC40YXQsNC4
0Lsg0JPQu9GD0YjQtdC90LrQvtCyIDxiYm1hbkBtYWlsLnJ1PgogICovCiAKICNpZm5kZWYgVFJB
TlNMQVRPUl9SVV9ICiAjZGVmaW5lIFRSQU5TTEFUT1JfUlVfSAogCi1jbGFzcyBUcmFuc2xhdG9y
UnVzc2lhbiA6IHB1YmxpYyBUcmFuc2xhdG9yQWRhcHRlcl8xXzRfNgorCisKK2NsYXNzIFRyYW5z
bGF0b3JSdXNzaWFuIDogcHVibGljIFRyYW5zbGF0b3IJLy9BZGFwdGVyXzFfNF82CiB7CiAgIHBy
aXZhdGU6CisKICAgICAvKiEgVGhlIGRlY29kZSgpIGlubGluZSBhc3N1bWVzIHRoZSBzb3VyY2Ug
d3JpdHRlbiBpbiB0aGUgCi0gICAgICAgIEtvaTgtUiBlbmNvZGluZyAobWFpbnRhaW5lciBkZXBl
bmRlbnQpLiAKKyAgICAgICAgY3VycmVudCBlbmNvZGluZyAobWFpbnRhaW5lciBkZXBlbmRlbnQp
LiAKICAgICAgKi8KICAgICBpbmxpbmUgUUNTdHJpbmcgZGVjb2RlKGNvbnN0IFFDU3RyaW5nICYg
c0lucHV0KQogICAgIHsgCi0gICAgICBpZiAoQ29uZmlnX2dldEJvb2woIlVTRV9XSU5ET1dTX0VO
Q09ESU5HIikpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBLb2k4UlRvV2luZG93czEyNTEoc0lu
cHV0KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHNJbnB1
dDsKLSAgICAgIH0KKworCisKKwkJcmV0dXJuIHNJbnB1dDsKICAgICB9CiAKICAgcHVibGljOgor
CisKKworCisKKwogICAgIC8qISBVc2VkIGZvciBpZGVudGlmaWNhdGlvbiBvZiB0aGUgbGFuZ3Vh
Z2UuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyBpZExhbmd1YWdlKCkKICAgICB7IHJldHVybiAi
cnVzc2lhbiI7IH0KQEAgLTc1LDExNyArODAsMTA2IEBACiAgICAgLyogVXNlZCB0byBnZXQgdGhl
IGNvbW1hbmQocykgZm9yIHRoZSBsYW5ndWFnZSBzdXBwb3J0LiAqLwogICAgIHZpcnR1YWwgUUNT
dHJpbmcgbGF0ZXhMYW5ndWFnZVN1cHBvcnRDb21tYW5kKCkKICAgICB7Ci0gICAgICBpZiAoQ29u
ZmlnX2dldEJvb2woIlVTRV9XSU5ET1dTX0VOQ09ESU5HIikpCi0gICAgICB7IAotICAgICAgICBy
ZXR1cm4gIlxcdXNlcGFja2FnZVtjcDEyNTFde2lucHV0ZW5jfVxuXFx1c2VwYWNrYWdlW3J1c3Np
YW5de2JhYmVsfVxuIjsgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7IAotICAgICAgICBy
ZXR1cm4gIlxcdXNlcGFja2FnZVtrb2k4LXJde2lucHV0ZW5jfVxuXFx1c2VwYWNrYWdlW3J1c3Np
YW5de2JhYmVsfVxuIjsgCi0gICAgICB9CisgICAgICAgIHJldHVybiAiXFx1c2VwYWNrYWdlW1VU
Ri04XXtpbnB1dGVuY31cblxcdXNlcGFja2FnZVtydXNzaWFuXXtiYWJlbH1cbiI7CiAgICAgfQog
CiAgICAgLyohIHJldHVybiB0aGUgbGFuZ3VhZ2UgY2hhcnNldC4gVGhpcyB3aWxsIGJlIHVzZWQg
Zm9yIHRoZSBIVE1MIG91dHB1dCAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgaWRMYW5ndWFnZUNo
YXJzZXQoKQogICAgIHsKLSAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiVVNFX1dJTkRPV1NfRU5D
T0RJTkciKSkKLSAgICAgIHsgCi0gICAgICAgIHJldHVybiAiV2luZG93cy0xMjUxIjsgCi0gICAg
ICB9Ci0gICAgICBlbHNlCi0gICAgICB7IAotICAgICAgICByZXR1cm4gImtvaTgtciI7IAotICAg
ICAgfQorCisKKworCQlyZXR1cm4gIlVURi04IjsKICAgICB9CiAKICAgICAvLyAtLS0gTGFuZ3Vh
Z2UgdHJhbnNsYXRpb24gbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvKiEgdXNl
ZCBpbiB0aGUgY29tcG91bmQgZG9jdW1lbnRhdGlvbiBiZWZvcmUgYSBsaXN0IG9mIHJlbGF0ZWQg
ZnVuY3Rpb25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWxhdGVkRnVuY3Rpb25zKCkK
LSAgICB7IHJldHVybiBkZWNvZGUoIu/Uzs/T0d3JxdPRIMsgy8zB09PVIMbVzsvDyckiKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSgi0J7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDQutC70LDRgdGB
0YMg0YTRg9C90LrRhtC40LgiKTsgfQogCiAgICAgLyohIHN1YnNjcmlwdCBmb3IgdGhlIHJlbGF0
ZWQgZnVuY3Rpb25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWxhdGVkU3Vic2NyaXB0
KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIijOxSDezMXO2SDLzMHT08EpIik7IH0KKyAgICB7IHJl
dHVybiBkZWNvZGUoIijQvdC1INGH0LvQtdC90Ysg0LrQu9Cw0YHRgdCwKSIpOyB9CiAKICAgICAv
KiEgaGVhZGVyIHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2Yg
ZmlsZXMsIGNsYXNzZXMgYW5kIG5hbWVzcGFjZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
ckRldGFpbGVkRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8M/E0s/Czs/FIM/Q
ydPBzsnFIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7QtNGA0L7QsdC90L7QtSDQvtC/
0LjRgdCw0L3QuNC1Iik7IH0KIAogICAgIC8qISBoZWFkZXIgdGhhdCBpcyBwdXQgYmVmb3JlIHRo
ZSBsaXN0IG9mIHR5cGVkZWZzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJUeXBl
ZGVmRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLv0NLFxMXMxc7J0SDUydDP
1yIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQntC/0YDQtdC00LXQu9C10L3QuNGPINGC0LjQ
v9C+0LIiKTsgfQogCiAgICAgLyohIGhlYWRlciB0aGF0IGlzIHB1dCBiZWZvcmUgdGhlIGxpc3Qg
b2YgZW51bWVyYXRpb25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJFbnVtZXJh
dGlvbkRvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8MXSxd7J08zFzsnRIik7
IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0LXRgNC10YfQuNGB0LvQtdC90LjRjyIpOyB9CiAK
ICAgICAvKiEgaGVhZGVyIHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgbGlzdCBvZiBtZW1iZXIgZnVu
Y3Rpb25zLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJGdW5jdGlvbkRvY3VtZW50
YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi7cXUz8TZIik7IH0KKyAgICB7IHJldHVybiBk
ZWNvZGUoItCc0LXRgtC+0LTRiyIpOyB9CiAKICAgICAvKiEgaGVhZGVyIHRoYXQgaXMgcHV0IGJl
Zm9yZSB0aGUgbGlzdCBvZiBtZW1iZXIgYXR0cmlidXRlcy4gKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyTWVtYmVyRGF0YURvY3VtZW50YXRpb24oKQogICAgIHsKICAgICAgIGlmIChDb25maWdf
Z2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAgICAgIHJldHVy
biBkZWNvZGUoICLwz8zRIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0J/QvtC70Y8iICk7
CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLk
wc7O2cUgy8zB09PBIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JTQsNC90L3Ri9C1INC6
0LvQsNGB0YHQsCIgKTsKICAgICAgIH0KICAgICB9CiAKICAgICAvKiEgdGhpcyBpcyB0aGUgdGV4
dCBvZiBhIGxpbmsgcHV0IGFmdGVyIGJyaWVmIGRlc2NyaXB0aW9ucy4gKi8KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyTW9yZSgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLwz8TSz8LOxcUuLi4iKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/QvtC00YDQvtCx0L3QtdC1Li4uIik7IH0KIAogICAg
IC8qISBwdXQgaW4gdGhlIGNsYXNzIGRvY3VtZW50YXRpb24gKi8KICAgICAvKiBEb3NuJ3QgdXNl
IHdoZW4gb3B0aW1pemF0aW9uIGZvciBDIGlzIG9uLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcg
dHJMaXN0T2ZBbGxNZW1iZXJzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi8M/MztnK
INPQydPPyyDezMXOz9cgy8zB09PBIiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCf0L7Qu9C9
0YvQuSDRgdC/0LjRgdC+0Log0YfQu9C10L3QvtCyINC60LvQsNGB0YHQsCIgKTsKICAgICB9CiAK
ICAgICAvKiEgdXNlZCBhcyB0aGUgdGl0bGUgb2YgdGhlICJsaXN0IG9mIGFsbCBtZW1iZXJzIiBw
YWdlIG9mIGEgY2xhc3MgKi8KICAgICAvKiBEb3NuJ3QgdXNlIHdoZW4gb3B0aW1pemF0aW9uIGZv
ciBDIGlzIG9uLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXJMaXN0KCkKICAgICB7
Ci0gICAgICByZXR1cm4gZGVjb2RlKCAiQ9DJ08/LIN7Mxc7P1yDLzMHT08EiICk7CisgICAgICBy
ZXR1cm4gZGVjb2RlKCAiQ9C/0LjRgdC+0Log0YfQu9C10L3QvtCyINC60LvQsNGB0YHQsCIgKTsK
ICAgICB9CiAKICAgICAvKiEgdGhpcyBpcyB0aGUgZmlyc3QgcGFydCBvZiBhIHNlbnRlbmNlIHRo
YXQgaXMgZm9sbG93ZWQgYnkgYSBjbGFzcyBuYW1lICovCiAgICAgLyogRG9zbid0IHVzZSB3aGVu
IG9wdGltaXphdGlvbiBmb3IgQyBpcyBvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVGhp
c0lzVGhlTGlzdE9mQWxsTWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLwz8zO2cog09DJ
08/LIN7Mxc7P1yDLzMHT08EgIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQ
uSDRgdC/0LjRgdC+0Log0YfQu9C10L3QvtCyINC60LvQsNGB0YHQsCAiKTsgfQogCiAgICAgLyoh
IHRoaXMgaXMgdGhlIHJlbWFpbmRlciBvZiB0aGUgc2VudGVuY2UgYWZ0ZXIgdGhlIGNsYXNzIG5h
bWUgKi8KICAgICAvKiBEb3NuJ3QgdXNlIHdoZW4gb3B0aW1pemF0aW9uIGZvciBDIGlzIG9uLiAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJJbmNsdWRpbmdJbmhlcml0ZWRNZW1iZXJzKCkKLSAg
ICB7IHJldHVybiBkZWNvZGUoIiwg18vMwN7B0SDOwdPMxcTVxc3ZxSDJ2iDCwdrP18/HzyDLzMHT
08EiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgiLCDQstC60LvRjtGH0LDRjyDQvdCw0YHQu9C1
0LTRg9C10LzRi9C1INC40Lcg0LHQsNC30L7QstC+0LPQviDQutC70LDRgdGB0LAiKTsgfQogCiAg
ICAgLyohIHRoaXMgaXMgcHV0IGF0IHRoZSBhdXRob3Igc2VjdGlvbnMgYXQgdGhlIGJvdHRvbSBv
ZiBtYW4gcGFnZXMuCiAgICAgICogIHBhcmFtZXRlciBzIGlzIG5hbWUgb2YgdGhlIHByb2plY3Qg
bmFtZS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyR2VuZXJhdGVkQXV0b21hdGlj
YWxseShjb25zdCBjaGFyICpzKQotICAgIHsgUUNTdHJpbmcgcmVzdWx0PWRlY29kZSgi4dfUz83B
1MnexdPLySDTz9rEwc7PIERveHlnZW4iKTsKLSAgICAgIGlmIChzKSByZXN1bHQrPWRlY29kZSgi
IMTM0SAiKStzOwotICAgICAgcmVzdWx0Kz1kZWNvZGUoIiDJ2iDJ08jPxM7Px88g1MXL09TBLiIp
OyAKKyAgICB7IFFDU3RyaW5nIHJlc3VsdD1kZWNvZGUoItCQ0LLRgtC+0LzQsNGC0LjRh9C10YHQ
utC4INGB0L7Qt9C00LDQvdC+IERveHlnZW4iKTsKKyAgICAgIGlmIChzKSByZXN1bHQrPWRlY29k
ZSgiINC00LvRjyAiKStzOworICAgICAgcmVzdWx0Kz1kZWNvZGUoIiDQuNC3INC40YHRhdC+0LTQ
vdC+0LPQviDRgtC10LrRgdGC0LAuIik7IAogICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
ICAgICAvKiEgcHV0IGFmdGVyIGFuIGVudW0gbmFtZSBpbiB0aGUgbGlzdCBvZiBhbGwgbWVtYmVy
cyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtTmFtZSgpCi0gICAgeyByZXR1cm4gZGVj
b2RlKCLQxdLF3snTzMXOycUiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0L/QtdGA0LXRh9C4
0YHQu9C10L3QuNC1Iik7IH0KIAogICAgIC8qISBwdXQgYWZ0ZXIgYW4gZW51bSB2YWx1ZSBpbiB0
aGUgbGlzdCBvZiBhbGwgbWVtYmVycyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtVmFs
dWUoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi3MzFzcXO1Nkg0MXSxd7J08zFzsnRIik7IH0KKyAg
ICB7IHJldHVybiBkZWNvZGUoItGN0LvQtdC80LXQvdGC0Ysg0L/QtdGA0LXRh9C40YHQu9C10L3Q
uNGPIik7IH0KIAogICAgIC8qISBwdXQgYWZ0ZXIgYW4gdW5kb2N1bWVudGVkIG1lbWJlciBpbiB0
aGUgbGlzdCBvZiBhbGwgbWVtYmVycyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEZWZpbmVk
SW4oKQotICAgIHsgcmV0dXJuIGRlY29kZSgiz9DSxcTFzMXOzyDXIik7IH0KKyAgICB7IHJldHVy
biBkZWNvZGUoItC+0L/RgNC10LTQtdC70LXQvdC+INCyIik7IH0KIAogICAgIC8vIHF1aWNrIHJl
ZmVyZW5jZSBzZWN0aW9ucwogCkBAIC0xOTMsMzkgKzE4NywzOSBAQAogICAgICAqICBjb21wb3Vu
ZHMgb3IgZmlsZXMgKHNlZSB0aGUgXFxncm91cCBjb21tYW5kKS4KICAgICAgKi8KICAgICB2aXJ0
dWFsIFFDU3RyaW5nIHRyTW9kdWxlcygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLn0tXQ0NkiKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JPRgNGD0L/Qv9GLIik7IH0KIAogICAgIC8qISBUaGlz
IGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIHRoZSBjbGFzcyBoaWVyYXJjaHkg
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ2xhc3NIaWVyYXJjaHkoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi6cXSwdLIydEgy8zB09PP1yIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQmNC1
0YDQsNGA0YXQuNGPINC60LvQsNGB0YHQvtCyIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHB1dCBh
Ym92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIHRoZSBsaXN0IG9mIGFubm90YXRlZCBjbGFzc2Vz
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNvbXBvdW5kTGlzdCgpCiAgICAgewogICAgICAg
aWYgKENvbmZpZ19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAg
ICAgICAgcmV0dXJuIGRlY29kZSggIvPU0tXL1NXS2SDEwc7O2cgiICk7CisgICAgICAgIHJldHVy
biBkZWNvZGUoICLQodGC0YDRg9C60YLRg9GA0Ysg0LTQsNC90L3Ri9GFIiApOwogICAgICAgfQog
ICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi68zB09PZIiApOwor
ICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JrQu9Cw0YHRgdGLIiApOwogICAgICAgfQogICAgIH0K
IAogICAgIC8qISBUaGlzIGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIHRoZSBs
aXN0IG9mIGRvY3VtZW50ZWQgZmlsZXMgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRmlsZUxp
c3QoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi5sHKzNkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29k
ZSgi0KTQsNC50LvRiyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdl
IGFzIGEgbGluayB0byBhbGwgbWVtYmVycyBvZiBjb21wb3VuZHMuICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckNvbXBvdW5kTWVtYmVycygpCiAgICAgewogICAgICAgaWYgKENvbmZpZ19nZXRC
b29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRl
Y29kZSggIvDPzNEg09TS1cvU1dIiICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQn9C+0LvR
jyDRgdGC0YDRg9C60YLRg9GAIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAg
ICAgICByZXR1cm4gZGVjb2RlKCAi/szFztkgy8zB09PP1yIgKTsKKyAgICAgICAgcmV0dXJuIGRl
Y29kZSggItCn0LvQtdC90Ysg0LrQu9Cw0YHRgdC+0LIiICk7CiAgICAgICB9CiAgICAgfQogCkBA
IC0yMzMsMzMgKzIyNywzMyBAQAogICAgIC8qPz8qLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJG
aWxlTWVtYmVycygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSggIvPQydPPyyDezMXOz9cg
19PFyCDGwcrMz9ciICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KHQv9C40YHQvtC6INGH0LvQ
tdC90L7QsiDQstGB0LXRhSDRhNCw0LnQu9C+0LIiICk7CiAgICAgfQogCiAgICAgLyohIFRoaXMg
aXMgcHV0IGFib3ZlIGVhY2ggcGFnZSBhcyBhIGxpbmsgdG8gYWxsIHJlbGF0ZWQgcGFnZXMuICov
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlbGF0ZWRQYWdlcygpCi0gICAgLyogPz8g98HSycHO
1CDQxdLF18/EwSAi880uINTBy9bFOiAiIMLPzMXFINXEwd7O2cosIM7PIM7FINcg2sHHz8zP18vF
LAotICAgICDLwcsg1yDEwc7Oz80g08zV3sHFLiAqLwotICAgIHsgcmV0dXJuIGRlY29kZSgi79DJ
08HOydEiKTsgfQorICAgIC8qID8/INCS0LDRgNC40LDQvdGCINC/0LXRgNC10LLQvtC00LAgItCh
0LwuINGC0LDQutC20LU6ICIg0LHQvtC70LXQtSDRg9C00LDRh9C90YvQuSwg0L3QviDQvdC1INCy
INC30LDQs9C+0LvQvtCy0LrQtSwKKyAgICAg0LrQsNC6INCyINC00LDQvdC90L7QvCDRgdC70YPR
h9Cw0LUuICovCisgICAgeyByZXR1cm4gZGVjb2RlKCLQntC/0LjRgdCw0L3QuNGPIik7IH0KIAog
ICAgIC8qISBUaGlzIGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIGFsbCBleGFt
cGxlcy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRXhhbXBsZXMoKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi8NLJzcXS2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9GA0LjQvNC10YDR
iyIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyBwdXQgYWJvdmUgZWFjaCBwYWdlIGFzIGEgbGluayB0
byB0aGUgc2VhcmNoIGVuZ2luZS4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2VhcmNoKCkK
LSAgICB7IHJldHVybiBkZWNvZGUoIvDPydPLIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf
0L7QuNGB0LoiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBj
bGFzcyBoaWVyYXJjaHkuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNsYXNzSGllcmFyY2h5
RGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi6cXSwdLIydEgy8zB09PP1y4iKTsg
fQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JjQtdGA0LDRgNGF0LjRjyDQutC70LDRgdGB0L7Qsi4i
KTsgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBsaXN0IHdpdGgg
YWxsIGZpbGVzLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGaWxlTGlzdERlc2NyaXB0aW9u
KGJvb2wgZXh0cmFjdEFsbCkKICAgICB7Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9IvDPzM7ZyiDT
0MnTz8sgIjsKLSAgICAgIGlmICghZXh0cmFjdEFsbCkgcmVzdWx0Kz0ixM/L1c3FztTJ0s/Xwc7O
2cggIjsKLSAgICAgIHJlc3VsdCs9IsbByszP1y4iOworICAgICAgUUNTdHJpbmcgcmVzdWx0PSLQ
n9C+0LvQvdGL0Lkg0YHQv9C40YHQvtC6ICI7CisgICAgICBpZiAoIWV4dHJhY3RBbGwpIHJlc3Vs
dCs9ItC00L7QutGD0LzQtdC90YLQuNGA0L7QstCw0L3QvdGL0YUgIjsKKyAgICAgIHJlc3VsdCs9
ItGE0LDQudC70L7Qsi4iOwogICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOwogICAgIH0KIApA
QCAtMjY4LDM3ICsyNjIsMzcgQEAKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9Q
VElNSVpFX09VVFBVVF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi
89TS1cvU1dLZIMTBzs7ZyCDTIMnIIMvSwdTLyc0gz9DJ08HOycXNLiIgKTsKKyAgICAgICAgcmV0
dXJuIGRlY29kZSggItCh0YLRgNGD0LrRgtGD0YDRiyDQtNCw0L3QvdGL0YUg0YEg0LjRhSDQutGA
0LDRgtC60LjQvCDQvtC/0LjRgdCw0L3QuNC10LwuIiApOwogICAgICAgfQogICAgICAgZWxzZQog
ICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi68zB09PZINMgycggy9LB1MvJzSDP0MnT
wc7Jxc0uIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JrQu9Cw0YHRgdGLINGBINC40YUg
0LrRgNCw0YLQutC40Lwg0L7Qv9C40YHQsNC90LjQtdC8LiIgKTsKICAgICAgIH0KICAgICB9CiAK
ICAgICAvKiEgVGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0aCBhbGwgY2xh
c3MgbWVtYmVycy4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ29tcG91bmRNZW1iZXJzRGVz
Y3JpcHRpb24oYm9vbCBleHRyYWN0QWxsKQogICAgIHsKLSAgICAgICAgUUNTdHJpbmcgcmVzdWx0
PSLz0MnTz8sg19PFyCAiOwotICAgICAgICBpZighZXh0cmFjdEFsbCkgcmVzdWx0Kz0ixM/L1c3F
ztTJ0s/Xwc7O2cggIjsKKyAgICAgICAgUUNTdHJpbmcgcmVzdWx0PSLQodC/0LjRgdC+0Log0LLR
gdC10YUgIjsKKyAgICAgICAgaWYoIWV4dHJhY3RBbGwpIHJlc3VsdCs9ItC00L7QutGD0LzQtdC9
0YLQuNGA0L7QstCw0L3QvdGL0YUgIjsKICAgICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJPUFRJ
TUlaRV9PVVRQVVRfRk9SX0MiKSkKLSAgICAgICAgICByZXN1bHQrPSLezMXOz9cg09TS1cvU1dIg
xMHOztnIINPPINPT2czLwc3JIM7BICI7CisgICAgICAgICAgcmVzdWx0Kz0i0YfQu9C10L3QvtCy
INGB0YLRgNGD0LrRgtGD0YAg0LTQsNC90L3Ri9GFINGB0L4g0YHRgdGL0LvQutCw0LzQuCDQvdCw
ICI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICByZXN1bHQrPSLezMXOz9cgy8zB09PP1yDTzyDT
09nMy8HNySDOwSAiOworICAgICAgICAgIHJlc3VsdCs9ItGH0LvQtdC90L7QsiDQutC70LDRgdGB
0L7QsiDRgdC+INGB0YHRi9C70LrQsNC80Lgg0L3QsCAiOwogICAgICAgICBpZighZXh0cmFjdEFs
bCkKICAgICAgICAgewogICAgICAgICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VU
UFVUX0ZPUl9DIikpCi0gICAgICAgICAgICByZXN1bHQrPSLEz8vVzcXO1MHDycAg0M8g09TS1cvU
1dLFIMTM0SDLwdbEz8fPIN7Mxc7BLiI7CisgICAgICAgICAgICByZXN1bHQrPSLQtNC+0LrRg9C8
0LXQvdGC0LDRhtC40Y4g0L/QviDRgdGC0YDRg9C60YLRg9GA0LUg0LTQu9GPINC60LDQttC00L7Q
s9C+INGH0LvQtdC90LAuIjsKICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQrPSLE
z8vVzcXO1MHDycAg0M8gy8zB09PVIMTM0SDLwdbEz8fPIN7Mxc7BLiI7CisgICAgICAgICAgICBy
ZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y4g0L/QviDQutC70LDRgdGB0YMg0LTQu9GP
INC60LDQttC00L7Qs9C+INGH0LvQtdC90LAuIjsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg
ICAgICAgIHsKICAgICAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBVVF9G
T1JfQyIpKQotICAgICAgICAgICAgcmVzdWx0ICs9ICLT1NLVy9TV0tkiOworICAgICAgICAgICAg
cmVzdWx0ICs9ICLRgdGC0YDRg9C60YLRg9GA0YsiOwogICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlc3VsdCArPSAiy8zB09PZIjsKLSAgICAgICAgICByZXN1bHQrPSIsIMsgy8/Uz9LZzSDP
zskg0NLJzsHEzMXWwdQuIjsKKyAgICAgICAgICAgIHJlc3VsdCArPSAi0LrQu9Cw0YHRgdGLIjsK
KyAgICAgICAgICByZXN1bHQrPSIsINC6INC60L7RgtC+0YDRi9C8INC+0L3QuCDQv9GA0LjQvdCw
0LTQu9C10LbQsNGCLiI7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRlY29kZSggcmVzdWx0
ICk7CiAgICAgfQpAQCAtMzA2LDU2ICszMDAsNTYgQEAKICAgICAvKiEgVGhpcyBpcyBhbiBpbnRy
b2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0aCBhbGwgZmlsZSBtZW1iZXJzLiAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJGaWxlTWVtYmVyc0Rlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAg
ICB7Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9IvPQydPPyyDX08XIICI7Ci0gICAgICBpZiAoIWV4
dHJhY3RBbGwpIHJlc3VsdCs9IsTPy9XNxc7UydLP18HOztnIICI7CisgICAgICBRQ1N0cmluZyBy
ZXN1bHQ9ItCh0L/QuNGB0L7QuiDQstGB0LXRhSAiOworICAgICAgaWYgKCFleHRyYWN0QWxsKSBy
ZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC90L3Ri9GFICI7CiAKICAgICAgIGlm
IChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAg
ICAgIHJlc3VsdCs9IsbVzsvDycosINDF0sXNxc7O2cgsIM3By9LPz9DSxcTFzMXOycosICIKLSAg
ICAgICAgICAgICAgICAi0MXSxd7J08zFzsnKIMkgz9DSxcTFzMXOycog1MnQz9ciOworICAgICAg
ICByZXN1bHQrPSLRhNGD0L3QutGG0LjQuSwg0L/QtdGA0LXQvNC10L3QvdGL0YUsINC80LDQutGA
0L7QvtC/0YDQtdC00LXQu9C10L3QuNC5LCAiCisgICAgICAgICAgICAgICAgItC/0LXRgNC10YfQ
uNGB0LvQtdC90LjQuSDQuCDQvtC/0YDQtdC00LXQu9C10L3QuNC5INGC0LjQv9C+0LIiOwogICAg
ICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXN1bHQrPSLezMXOz9cgxsHKzM/X
ICI7CisgICAgICAgIHJlc3VsdCs9ItGH0LvQtdC90L7QsiDRhNCw0LnQu9C+0LIgIjsKICAgICAg
IH0KLSAgICAgIHJlc3VsdCs9IiDTzyDT09nMy8HNySDOwSAiOworICAgICAgcmVzdWx0Kz0iINGB
0L4g0YHRgdGL0LvQutCw0LzQuCDQvdCwICI7CiAgICAgICBpZiAoZXh0cmFjdEFsbCkKLSAgICAg
ICAgcmVzdWx0Kz0ixsHKzNksIMsgy8/Uz9LZzSDPzskg0NLJzsHEzMXWwdQuIjsKKyAgICAgICAg
cmVzdWx0Kz0i0YTQsNC50LvRiywg0Log0LrQvtGC0L7RgNGL0Lwg0L7QvdC4INC/0YDQuNC90LDQ
tNC70LXQttCw0YIuIjsKICAgICAgIGVsc2UKLSAgICAgICAgcmVzdWx0Kz0ixM/L1c3FztTBw8nA
LiI7CisgICAgICAgIHJlc3VsdCs9ItC00L7QutGD0LzQtdC90YLQsNGG0LjRji4iOwogICAgICAg
cmV0dXJuIGRlY29kZSggcmVzdWx0ICk7CiAgICAgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50
cm9kdWN0aW9uIHRvIHRoZSBwYWdlIHdpdGggdGhlIGxpc3Qgb2YgYWxsIGV4YW1wbGVzICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0ckV4YW1wbGVzRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJu
IGRlY29kZSgi8M/MztnKINPQydPPyyDQ0snNxdLP1y4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29k
ZSgi0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7QuiDQv9GA0LjQvNC10YDQvtCyLiIpOyB9CiAKICAg
ICAvKiEgVGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0aCB0aGUgbGlzdCBv
ZiByZWxhdGVkIHBhZ2VzICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlbGF0ZWRQYWdlc0Rl
c2NyaXB0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDPzM7ZyiDT0MnTz8sgxM/Qz8zOydTF
zNjO2cggz9DJ08HOycouIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQuSDR
gdC/0LjRgdC+0Log0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvRhSDQvtC/0LjRgdCw0L3QuNC5
LiIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIHBhZ2Ugd2l0
aCB0aGUgbGlzdCBvZiBjbGFzcy9maWxlIGdyb3VwcyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcg
dHJNb2R1bGVzRGVzY3JpcHRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8M/MztnKINPQydPP
yyDH0tXQ0C4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/QvtC70L3Ri9C5INGB0L/QuNGB
0L7QuiDQs9GA0YPQv9C/LiIpOyB9CiAKICAgICAvLyBpbmRleCB0aXRsZXMgKHRoZSBwcm9qZWN0
IG5hbWUgaXMgcHJlcGVuZGVkIGZvciB0aGVzZSkgCiAKIAogICAgIC8qISBUaGlzIGlzIHVzZWQg
aW4gSFRNTCBhcyB0aGUgdGl0bGUgb2YgaW5kZXguaHRtbC4gKi8KICAgICB2aXJ0dWFsIFFDU3Ry
aW5nIHRyRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCLkz8vVzcXO1MHDydEi
KTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JTQvtC60YPQvNC10L3RgtCw0YbQuNGPIik7IH0K
IAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFw
dGVyIHdpdGggdGhlIAogICAgICAqIGluZGV4IG9mIGFsbCBncm91cHMuCiAgICAgICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ck1vZHVsZUluZGV4KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIuHM
xsHXydTO2cog1cvB2sHUxczYIMfS1dDQIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCQ0LvR
hNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCDQs9GA0YPQv9C/Iik7IH0KIAogICAg
IC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIHdp
dGggdGhlIAogICAgICAqIGNsYXNzIGhpZXJhcmNoeS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFD
U3RyaW5nIHRySGllcmFyY2hpY2FsSW5kZXgoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi6cXSwdLI
yd7F08vJyiDT0MnTz8sgy8zB09PP1yIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQmNC10YDQ
sNGA0YXQuNGH0LXRgdC60LjQuSDRgdC/0LjRgdC+0Log0LrQu9Cw0YHRgdC+0LIiKTsgfQogCiAg
ICAgLyohIFRoaXMgaXMgdXNlZCBpbiBMYVRlWCBhcyB0aGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIg
d2l0aCB0aGUgCiAgICAgICogYW5ub3RhdGVkIGNvbXBvdW5kIGluZGV4LgpAQCAtMzY0LDExICsz
NTgsMTEgQEAKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJvb2woIk9QVElNSVpFX09VVFBV
VF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi4czGwdfJ1M7ZyiDV
y8HawdTFzNgg09TS1cvU1dIgxMHOztnIIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JDQ
u9GE0LDQstC40YLQvdGL0Lkg0YPQutCw0LfQsNGC0LXQu9GMINGB0YLRgNGD0LrRgtGD0YAg0LTQ
sNC90L3Ri9GFIiApOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXR1
cm4gZGVjb2RlKCAi4czGwdfJ1M7ZyiDVy8HawdTFzNggy8zB09PP1yIgKTsKKyAgICAgICAgcmV0
dXJuIGRlY29kZSggItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCDQutC7
0LDRgdGB0L7QsiIgKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTM3NiwxMyArMzcwLDEzIEBACiAg
ICAgICogbGlzdCBvZiBhbGwgZmlsZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
ckZpbGVJbmRleCgpCi0gICAgeyByZXR1cm4gZGVjb2RlKCAi89DJ08/LIMbByszP1yIgKTsgfQor
ICAgIHsgcmV0dXJuIGRlY29kZSggItCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIiICk7IH0KIAog
ICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVy
IGNvbnRhaW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIGdyb3Vwcy4KICAg
ICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTW9kdWxlRG9jdW1lbnRhdGlvbigpCi0gICAg
eyByZXR1cm4gZGVjb2RlKCLn0tXQ0NkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JPRgNGD
0L/Qv9GLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxl
IG9mIHRoZSBjaGFwdGVyIGNvbnRhaW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2Yg
YWxsIGNsYXNzZXMsIHN0cnVjdHMgYW5kIHVuaW9ucy4KQEAgLTM5MSwxMSArMzg1LDExIEBACiAg
ICAgewogICAgICAgaWYgKENvbmZpZ19nZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkK
ICAgICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIvPU0tXL1NXS2SDEwc7O2cgiICk7Cisg
ICAgICAgIHJldHVybiBkZWNvZGUoICLQodGC0YDRg9C60YLRg9GA0Ysg0LTQsNC90L3Ri9GFIiAp
OwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi
68zB09PZIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0JrQu9Cw0YHRgdGLIiApOwogICAg
ICAgfQogICAgIH0KIApAQCAtNDAzLDEwMSArMzk3LDEwMSBAQAogICAgICAqICB0aGUgZG9jdW1l
bnRhdGlvbiBvZiBhbGwgZmlsZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckZp
bGVEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIubByszZIik7IH0KKyAgICB7
IHJldHVybiBkZWNvZGUoItCk0LDQudC70YsiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBp
biBMYVRlWCBhcyB0aGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIgY29udGFpbmluZwogICAgICAqICB0
aGUgZG9jdW1lbnRhdGlvbiBvZiBhbGwgZXhhbXBsZXMuCiAgICAgICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckV4YW1wbGVEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDS
yc3F0tkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/RgNC40LzQtdGA0YsiKTsgfQogCiAg
ICAgLyohIFRoaXMgaXMgdXNlZCBpbiBMYVRlWCBhcyB0aGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIg
Y29udGFpbmluZwogICAgICAqICB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhbGwgcmVsYXRlZCBwYWdl
cy4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFnZURvY3VtZW50YXRpb24oKQot
ICAgIHsgcmV0dXJuIGRlY29kZSgi9MXNwdTJ3sXTy8nFIM/QydPBzsnRIik7IH0KKyAgICB7IHJl
dHVybiBkZWNvZGUoItCi0LXQvNCw0YLQuNGH0LXRgdC60LjQtSDQvtC/0LjRgdCw0L3QuNGPIik7
IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBk
b2N1bWVudCAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWZlcmVuY2VNYW51YWwoKQotICAg
IHsgcmV0dXJuIGRlY29kZSgi78fMwdfMxc7JxSIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQ
ntCz0LvQsNCy0LvQtdC90LjQtSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBk
b2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBs
aXN0IG9mIGRlZmluZXMKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGVmaW5lcygp
Ci0gICAgeyByZXR1cm4gZGVjb2RlKCLtwcvSz9PZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUo
ItCc0LDQutGA0L7RgdGLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gb2YgYSBmaWxlIGFzIGEgaGVhZGVyIGJlZm9yZSB0aGUgCiAgICAgICogIGxpc3Qg
b2YgZnVuY3Rpb24gcHJvdG90eXBlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJG
dW5jUHJvdG9zKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDSz9TP1MnQ2SDG1c7Lw8nKIik7IH0K
KyAgICB7IHJldHVybiBkZWNvZGUoItCf0YDQvtGC0L7RgtC40L/RiyDRhNGD0L3QutGG0LjQuSIp
OyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmls
ZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIHR5cGVkZWZzCiAgICAg
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clR5cGVkZWZzKCkKLSAgICB7IHJldHVybiBkZWNv
ZGUoIu/Q0sXExczFzsnRINTJ0M/XIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCe0L/RgNC1
0LTQtdC70LXQvdC40Y8g0YLQuNC/0L7QsiIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGlu
IHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAg
ICAqICBsaXN0IG9mIGVudW1lcmF0aW9ucwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcg
dHJFbnVtZXJhdGlvbnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8MXSxd7J08zFzsnRIik7IH0K
KyAgICB7IHJldHVybiBkZWNvZGUoItCf0LXRgNC10YfQuNGB0LvQtdC90LjRjyIpOyB9CiAKICAg
ICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhl
YWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIChnbG9iYWwpIGZ1bmN0aW9ucwogICAg
ICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jdGlvbnMoKQotICAgIHsgcmV0dXJuIGRl
Y29kZSgi5tXOy8PJySIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQpNGD0L3QutGG0LjQuCIp
OyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmls
ZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0IG9mIChnbG9iYWwpIHZhcmlh
YmxlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJWYXJpYWJsZXMoKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi8MXSxc3Fzs7ZxSIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQn9C1
0YDQtdC80LXQvdC90YvQtSIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1
bWVudGF0aW9uIG9mIGEgZmlsZSBhcyBhIGhlYWRlciBiZWZvcmUgdGhlIAogICAgICAqICBsaXN0
IG9mIChnbG9iYWwpIHZhcmlhYmxlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJF
bnVtZXJhdGlvblZhbHVlcygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL8zMXNxc7U2SDQxdLF3snT
zMXOycoiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0K3Qu9C10LzQtdC90YLRiyDQv9C10YDQ
tdGH0LjRgdC70LXQvdC40LkiKTsgfQogCiAgICAgLyohIFRoaXMgaXMgdXNlZCBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBvZiBhIGZpbGUgYmVmb3JlIHRoZSBsaXN0IG9mCiAgICAgICogIGRvY3VtZW50
YXRpb24gYmxvY2tzIGZvciBkZWZpbmVzCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
ckRlZmluZURvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi7cHL0s/T2SIpOyB9
CisgICAgeyByZXR1cm4gZGVjb2RlKCLQnNCw0LrRgNC+0YHRiyIpOyB9CiAKICAgICAvKiEgVGhp
cyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1lc3BhY2UgYmVmb3Jl
IHRoZSBsaXN0IAogICAgICAqICBvZiBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3IgZnVuY3Rpb24g
cHJvdG90eXBlcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jdGlvblByb3Rv
dHlwZURvY3VtZW50YXRpb24oKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8NLP1M/UydDZIMbVzsvD
ycoiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/RgNC+0YLQvtGC0LjQv9GLINGE0YPQvdC6
0YbQuNC5Iik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24g
b2YgYSBmaWxlL25hbWVzcGFjZSBiZWZvcmUgdGhlIGxpc3QgCiAgICAgICogIG9mIGRvY3VtZW50
YXRpb24gYmxvY2tzIGZvciB0eXBlZGVmcwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcg
dHJUeXBlZGVmRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL0ydDZIik7IH0K
KyAgICB7IHJldHVybiBkZWNvZGUoItCi0LjQv9GLIik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVz
ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBmaWxlL25hbWVzcGFjZSBiZWZvcmUgdGhlIGxp
c3QgCiAgICAgICogIG9mIGRvY3VtZW50YXRpb24gYmxvY2tzIGZvciBlbnVtZXJhdGlvbiB0eXBl
cwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtZXJhdGlvblR5cGVEb2N1bWVu
dGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvDF0sXeydPMxc7J0SIpOyB9CisgICAgeyBy
ZXR1cm4gZGVjb2RlKCLQn9C10YDQtdGH0LjRgdC70LXQvdC40Y8iKTsgfQogCiAgICAgLyohIFRo
aXMgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGZpbGUvbmFtZXNwYWNlIGJlZm9y
ZSB0aGUgbGlzdCAKICAgICAgKiAgb2YgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm9yIGZ1bmN0aW9u
cwogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJGdW5jdGlvbkRvY3VtZW50YXRpb24o
KQotICAgIHsgcmV0dXJuIGRlY29kZSgi5tXOy8PJySIpOyB9CisgICAgeyByZXR1cm4gZGVjb2Rl
KCLQpNGD0L3QutGG0LjQuCIpOyB9CiAKICAgICAvKiEgVGhpcyBpcyB1c2VkIGluIHRoZSBkb2N1
bWVudGF0aW9uIG9mIGEgZmlsZS9uYW1lc3BhY2UgYmVmb3JlIHRoZSBsaXN0IAogICAgICAqICBv
ZiBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3IgdmFyaWFibGVzCiAgICAgICovCiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0clZhcmlhYmxlRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4gZGVjb2Rl
KCLwxdLFzcXOztnFIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCf0LXRgNC10LzQtdC90L3R
i9C1Iik7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2Yg
YSBmaWxlL25hbWVzcGFjZS9ncm91cCBiZWZvcmUgCiAgICAgICogIHRoZSBsaXN0IG9mIGxpbmtz
IHRvIGRvY3VtZW50ZWQgY29tcG91bmRzCkBAIC01MDYsMTEgKzUwMCwxMSBAQAogICAgIHsKICAg
ICAgIGlmIChDb25maWdfZ2V0Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7
Ci0gICAgICAgIHJldHVybiBkZWNvZGUoICLz1NLVy9TV0tkgxMHOztnIIiApOworICAgICAgICBy
ZXR1cm4gZGVjb2RlKCAi0KHRgtGA0YPQutGC0YPRgNGLINC00LDQvdC90YvRhSIgKTsKICAgICAg
IH0KICAgICAgIGVsc2UKICAgICAgIHsgCi0gICAgICAgIHJldHVybiBkZWNvZGUoICLrzMHT09ki
ICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQmtC70LDRgdGB0YsiICk7CiAgICAgICB9CiAK
ICAgICB9CkBAIC01MjMsNjAgKzUxNyw2MCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJHZW5lcmF0ZWRBdChjb25zdCBjaGFyICpkYXRlLGNvbnN0IGNoYXIgKnByb2pOYW1lKQog
ICAgIHsgCi0gICAgICBRQ1N0cmluZyByZXN1bHQ9ZGVjb2RlKCLkz8vVzcXO1MHDydEgIik7Ci0g
ICAgICBpZiAocHJvak5hbWUpIHJlc3VsdCs9ZGVjb2RlKCLQzyAiKStwcm9qTmFtZTsKLSAgICAg
IHJlc3VsdCs9ZGVjb2RlKCIuIPDP08zFxM7JxSDJ2s3FzsXOydE6ICIpK2RhdGU7Ci0gICAgICBy
ZXN1bHQrPWRlY29kZSgiLiDzz9rEwc7PINPJ09TFzc/KIik7CisgICAgICBRQ1N0cmluZyByZXN1
bHQ9ZGVjb2RlKCLQlNC+0LrRg9C80LXQvdGC0LDRhtC40Y8gIik7CisgICAgICBpZiAocHJvak5h
bWUpIHJlc3VsdCs9ZGVjb2RlKCLQv9C+ICIpK3Byb2pOYW1lOworICAgICAgcmVzdWx0Kz1kZWNv
ZGUoIi4g0J/QvtGB0LvQtdC00L3QuNC1INC40LfQvNC10L3QtdC90LjRjzogIikrZGF0ZTsKKyAg
ICAgIHJlc3VsdCs9ZGVjb2RlKCIuINCh0L7Qt9C00LDQvdC+INGB0LjRgdGC0LXQvNC+0LkiKTsK
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIC8qISBUaGlzIGlzIHBhcnQgb2YgdGhl
IHNlbnRlbmNlIHVzZWQgaW4gdGhlIHN0YW5kYXJkIGZvb3RlciBvZiBlYWNoIHBhZ2UuCiAgICAg
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0cldyaXR0ZW5CeSgpCiAgICAgewotICAgICAgcmV0
dXJuIGRlY29kZSgi4dfUz9I6Iik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQkNCy0YLQvtGAOiIp
OwogICAgIH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgcHV0IGJlZm9yZSBhIGNsYXNzIGRpYWdy
YW0gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ2xhc3NEaWFncmFtKGNvbnN0IGNoYXIgKmNs
TmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLn0sHGIM7B08zFxM/Xwc7J0ToiKStj
bE5hbWUrIjoiOworICAgICAgcmV0dXJuIGRlY29kZSgi0JPRgNCw0YQg0L3QsNGB0LvQtdC00L7Q
stCw0L3QuNGPOiIpK2NsTmFtZSsiOiI7CiAgICAgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBn
ZW5lcmF0ZWQgd2hlbiB0aGUgXFxpbnRlcm5hbCBjb21tYW5kIGlzIHVzZWQuICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckZvckludGVybmFsVXNlT25seSgpCi0gICAgeyByZXR1cm4gZGVjb2Rl
KCL0z8zYy88gxMzRINfO1dTSxc7OxcfPIMnT0M/M2NrP18HOydEiKTsgfQorICAgIHsgcmV0dXJu
IGRlY29kZSgi0KLQvtC70YzQutC+INC00LvRjyDQstC90YPRgtGA0LXQvdC90LXQs9C+INC40YHQ
v9C+0LvRjNC30L7QstCw0L3QuNGPIik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgZ2VuZXJh
dGVkIHdoZW4gdGhlIFxcd2FybmluZyBjb21tYW5kIGlzIHVzZWQuICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0cldhcm5pbmcoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi8NLFxNXQ0sXWxMXOydEi
KTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjyIp
OyB9CiAKICAgICAvKiEgdGhpcyB0ZXh0IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBcXHZlcnNpb24g
Y29tbWFuZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJWZXJzaW9uKCkKLSAg
ICB7IHJldHVybiBkZWNvZGUoIvfF0tPJ0SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQktC1
0YDRgdC40Y8iKTsgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUg
XFxkYXRlIGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGF0ZSgp
Ci0gICAgeyByZXR1cm4gZGVjb2RlKCLkwdTBIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCU
0LDRgtCwIik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFxc
cmV0dXJuIGNvbW1hbmQgaXMgdXNlZC4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUmV0dXJu
cygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL3z9rX0sHdwcXUIik7IH0KKyAgICB7IHJldHVybiBk
ZWNvZGUoItCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIik7IH0KIAogICAgIC8qISB0aGlzIHRleHQgaXMg
Z2VuZXJhdGVkIHdoZW4gdGhlIFxcc2EgY29tbWFuZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJTZWVBbHNvKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvPNLiDUwcvWxSIpOyB9
CisgICAgeyByZXR1cm4gZGVjb2RlKCLQodC8LiDRgtCw0LrQttC1Iik7IH0KIAogICAgIC8qISB0
aGlzIHRleHQgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFxccGFyYW0gY29tbWFuZCBpcyB1c2VkLiAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYXJhbWV0ZXJzKCkKLSAgICB7IHJldHVybiBkZWNv
ZGUoIuHSx9XNxc7U2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQkNGA0LPRg9C80LXQvdGC
0YsiKTsgfQogCiAgICAgLyohIHRoaXMgdGV4dCBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUgXFxleGNl
cHRpb24gY29tbWFuZCBpcyB1c2VkLiAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFeGNlcHRp
b25zKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIunTy8zA3sXOydEiKTsgfQorICAgIHsgcmV0dXJu
IGRlY29kZSgi0JjRgdC60LvRjtGH0LXQvdC40Y8iKTsgfQogCiAgICAgLyohIHRoaXMgdGV4dCBp
cyB1c2VkIGluIHRoZSB0aXRsZSBwYWdlIG9mIGEgTGFUZVggZG9jdW1lbnQuICovCiAgICAgdmly
dHVhbCBRQ1N0cmluZyB0ckdlbmVyYXRlZEJ5KCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvPP2sTB
zs8g08nT1MXNz8oiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0KHQvtC30LTQsNC90L4g0YHQ
uNGB0YLQtdC80L7QuSIpOyB9CiAgICAgCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gbmV3IHNpbmNl
IDAuNDktOTkwMzA3IApAQCAtNTg0LDE0ICs1NzgsMTQgQEAKICAgICAKICAgICAvKiEgdXNlZCBh
cyB0aGUgdGl0bGUgb2YgcGFnZSBjb250YWluaW5nIGFsbCB0aGUgaW5kZXggb2YgYWxsIG5hbWVz
cGFjZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZUxpc3QoKQotICAgIHsg
cmV0dXJuIGRlY29kZSgi8NLP09TSwc7T1NfBIMnNxc4iKTsgfQorICAgIHsgcmV0dXJuIGRlY29k
ZSgi0J/RgNC+0YHRgtGA0LDQvdGB0YLQstCwINC40LzQtdC9Iik7IH0KIAogICAgIC8qISB1c2Vk
IGFzIGFuIGludHJvZHVjdGlvbiB0byB0aGUgbmFtZXNwYWNlIGxpc3QgKi8KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyTmFtZXNwYWNlTGlzdERlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAg
ICB7Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9IvDPzM7ZyiDT0MnTz8sgIjsKLSAgICAgIGlmICgh
ZXh0cmFjdEFsbCkgcmVzdWx0Kz0ixM/L1c3FztTJ0s/Xwc7O2cggIjsKLSAgICAgIHJlc3VsdCs9
ItDSz9PU0sHO09TXIMnNxc4uIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QvtC70L3Ri9C5
INGB0L/QuNGB0L7QuiAiOworICAgICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQrPSLQtNC+0LrR
g9C80LXQvdGC0LjRgNC+0LLQsNC90L3Ri9GFICI7CisgICAgICByZXN1bHQrPSLQv9GA0L7RgdGC
0YDQsNC90YHRgtCyINC40LzQtdC9LiI7CiAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7CiAg
ICAgfQogCkBAIC01OTksNyArNTkzLDcgQEAKICAgICAgKiAgZnJpZW5kcyBvZiBhIGNsYXNzCiAg
ICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckZyaWVuZHMoKQotICAgIHsgcmV0dXJuIGRl
Y29kZSgi5NLV2tjRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCU0YDRg9C30YzRjyIpOyB9
CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2UgMC40OS05OTA0MDUKQEAgLTYwOSw4
ICs2MDMsOCBAQAogICAgICAqIHJlbGF0ZWQgY2xhc3NlcyAKICAgICAgKi8KICAgICB2aXJ0dWFs
IFFDU3RyaW5nIHRyUmVsYXRlZEZ1bmN0aW9uRG9jdW1lbnRhdGlvbigpCi0gICAgeyByZXR1cm4g
ZGVjb2RlKCLkz8vVzcXO1MHDydEg0M8gxNLV2tjRzSDLzMHT08EgySDG1c7Lw8nRzSwgz9TOz87P
09Hdyc3T0SIKLSAgICAgICAgIiDLIMvMwdPT1SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQ
lNC+0LrRg9C80LXQvdGC0LDRhtC40Y8g0L/QviDQtNGA0YPQt9GM0Y/QvCDQutC70LDRgdGB0LAg
0Lgg0YTRg9C90LrRhtC40Y/QvCwg0L7RgtC90L7QvdC+0YHRj9GJ0LjQvNGB0Y8iCisgICAgICAg
ICIg0Log0LrQu9Cw0YHRgdGDIik7IH0KICAgICAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBuZXcg
c2luY2UgMC40OS05OTA0MjUKQEAgLTYyNCwyOSArNjE4LDI5IEBACiAgICAgICBRQ1N0cmluZyBy
ZXN1bHQ7CiAgICAgICBpZiAoaXNUZW1wbGF0ZSkgCiAgICAgICB7Ci0gICAgICAgIHJlc3VsdD0i
+8HCzM/OICI7CisgICAgICAgIHJlc3VsdD0i0KjQsNCx0LvQvtC9ICI7CiAgICAgICAgIHN3aXRj
aChjb21wVHlwZSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkNsYXNzOiAg
cmVzdWx0Kz0iy8zB09PBIjsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0
OiByZXN1bHQrPSLT1NLVy9TV0tkiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpV
bmlvbjogIHJlc3VsdCs9Is/C38XEyc7FzsnRIjsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBDbGFz
c0RlZjo6SW50ZXJmYWNlOiAgcmVzdWx0Kz0iyc7UxdLGxcrTwSI7IGJyZWFrOwotICAgICAgICAg
IGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgIHJlc3VsdCs9InByb3RvY29sIjsgYnJlYWs7IC8v
IHRyYW5zbGF0ZSBtZSEKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpDYXRlZ29yeTogICByZXN1
bHQrPSJjYXRlZ29yeSI7IGJyZWFrOyAvLyB0cmFuc2xhdGUgbWUhCi0gICAgICAgICAgY2FzZSBD
bGFzc0RlZjo6RXhjZXB0aW9uOiAgcmVzdWx0Kz0iydPLzMDexc7J0SI7IGJyZWFrOworICAgICAg
ICAgIGNhc2UgQ2xhc3NEZWY6OkNsYXNzOiAgcmVzdWx0Kz0i0LrQu9Cw0YHRgdCwIjsgYnJlYWs7
CisgICAgICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiByZXN1bHQrPSLRgdGC0YDRg9C60YLR
g9GA0YsiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpVbmlvbjogIHJlc3VsdCs9
ItC+0LHRitC10LTQuNC90LXQvdC40Y8iOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVm
OjpJbnRlcmZhY2U6ICByZXN1bHQrPSLQuNC90YLQtdGA0YTQtdC50YHQsCI7IGJyZWFrOworICAg
ICAgICAgIGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgIHJlc3VsdCs9ItC/0YDQvtGC0L7QutC+
0LsiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpDYXRlZ29yeTogICByZXN1bHQr
PSLQutCw0YLQtdCz0L7RgNC40Y8iOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpF
eGNlcHRpb246ICByZXN1bHQrPSLQuNGB0LrQu9GO0YfQtdC90LjRjyI7IGJyZWFrOwogICAgICAg
ICB9CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIHN3aXRjaChjb21wVHlw
ZSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkNsYXNzOiAgcmVzdWx0Kz0i
68zB09MiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpTdHJ1Y3Q6IHJlc3VsdCs9
IvPU0tXL1NXSwSI7IGJyZWFrOwotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9uOiAgcmVz
dWx0Kz0i78LfxcTJzsXOycUiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNzRGVmOjpJbnRl
cmZhY2U6ICByZXN1bHQrPSLpztTF0sbFytMiOyBicmVhazsKLSAgICAgICAgICBjYXNlIENsYXNz
RGVmOjpQcm90b2NvbDogICByZXN1bHQrPSJwcm90b2NvbCI7IGJyZWFrOyAvLyB0cmFuc2xhdGUg
bWUhCi0gICAgICAgICAgY2FzZSBDbGFzc0RlZjo6Q2F0ZWdvcnk6ICAgcmVzdWx0Kz0iY2F0ZWdv
cnkiOyBicmVhazsgLy8gdHJhbnNsYXRlIG1lIQotICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4
Y2VwdGlvbjogIHJlc3VsdCs9IunTy8zA3sXOycUiOyBicmVhazsKKyAgICAgICAgICBjYXNlIENs
YXNzRGVmOjpDbGFzczogIHJlc3VsdCs9ItCa0LvQsNGB0YEiOyBicmVhazsKKyAgICAgICAgICBj
YXNlIENsYXNzRGVmOjpTdHJ1Y3Q6IHJlc3VsdCs9ItCh0YLRgNGD0LrRgtGD0YDQsCI7IGJyZWFr
OworICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9uOiAgcmVzdWx0Kz0i0J7QsdGK0LXQtNC4
0L3QtdC90LjQtSI7IGJyZWFrOworICAgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkludGVyZmFjZTog
IHJlc3VsdCs9ItCY0L3RgtC10YDRhNC10LnRgSI7IGJyZWFrOworICAgICAgICAgIGNhc2UgQ2xh
c3NEZWY6OlByb3RvY29sOiAgIHJlc3VsdCs9ItCf0YDQvtGC0L7QutC+0LsiOyBicmVhazsKKyAg
ICAgICAgICBjYXNlIENsYXNzRGVmOjpDYXRlZ29yeTogICByZXN1bHQrPSLQmtCw0YLQtdCz0L7R
gNC40Y8iOyBicmVhazsKKyAgICAgICAgICBjYXNlIENsYXNzRGVmOjpFeGNlcHRpb246ICByZXN1
bHQrPSLQmNGB0LrQu9GO0YfQtdC90LjQtSI7IGJyZWFrOwogICAgICAgICB9CiAgICAgICB9CiAg
ICAgICByZXN1bHQrPSIgIjsKQEAgLTY1NiwzNSArNjUwLDM1IEBACiAgICAgLyohIHVzZWQgYXMg
dGhlIHRpdGxlIG9mIHRoZSBIVE1MIHBhZ2Ugb2YgYSBmaWxlICovCiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0ckZpbGVSZWZlcmVuY2UoY29uc3QgY2hhciAqZmlsZU5hbWUpCiAgICAgewotICAgICAg
cmV0dXJuIGRlY29kZSgi5sHKzCAiKStmaWxlTmFtZTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCk
0LDQudC7ICIpK2ZpbGVOYW1lOwogICAgIH0KIAogICAgIC8qISB1c2VkIGFzIHRoZSB0aXRsZSBv
ZiB0aGUgSFRNTCBwYWdlIG9mIGEgbmFtZXNwYWNlICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
ck5hbWVzcGFjZVJlZmVyZW5jZShjb25zdCBjaGFyICpuYW1lc3BhY2VOYW1lKQogICAgIHsKLSAg
ICAgIHJldHVybiBkZWNvZGUoIvDSz9PU0sHO09TXzyDJzcXOICIpK25hbWVzcGFjZU5hbWU7Cisg
ICAgICByZXR1cm4gZGVjb2RlKCLQn9GA0L7RgdGC0YDQsNC90YHRgtCy0L4g0LjQvNC10L0gIikr
bmFtZXNwYWNlTmFtZTsKICAgICB9CiAgICAgCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clB1Ymxp
Y01lbWJlcnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi79TL0tnU2cUg3szFztkiKTsgfQorICAg
IHsgcmV0dXJuIGRlY29kZSgi0J7RgtC60YDRi9GC0YvQtSDRh9C70LXQvdGLIik7IH0KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyUHVibGljU2xvdHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi79TL
0tnU2cUg08zP1NkiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0J7RgtC60YDRi9GC0YvQtSDR
gdC70L7RgtGLIik7IH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2lnbmFscygpCi0gICAgeyBy
ZXR1cm4gZGVjb2RlKCLzycfOwczZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCh0LjQs9C9
0LDQu9GLIik7IH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGljUHVibGljTWVtYmVycygp
Ci0gICAgeyByZXR1cm4gZGVjb2RlKCLv1MvS2dTZxSDT1MHUyd7F08vJxSDezMXO2SIpOyB9Cisg
ICAgeyByZXR1cm4gZGVjb2RlKCLQntGC0LrRgNGL0YLRi9C1INGB0YLQsNGC0LjRh9C10YHQutC4
0LUg0YfQu9C10L3RiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByb3RlY3RlZE1lbWJl
cnMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi+sHdyd3Fzs7ZxSDezMXO2SIpOyB9CisgICAgeyBy
ZXR1cm4gZGVjb2RlKCLQl9Cw0YnQuNGJ0LXQvdC90YvQtSDRh9C70LXQvdGLIik7IH0KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyUHJvdGVjdGVkU2xvdHMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi
+sHdyd3Fzs7ZxSDTzM/U2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQl9Cw0YnQuNGJ0LXQ
vdC90YvQtSDRgdC70L7RgtGLIik7IH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGljUHJv
dGVjdGVkTWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL6wd3J3cXOztnFINPUwdTJ3sXT
y8nFIN7Mxc7ZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCX0LDRidC40YnQtdC90L3Ri9C1
INGB0YLQsNGC0LjRh9C10YHQutC40LUg0YfQu9C10L3RiyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0
cmluZyB0clByaXZhdGVNZW1iZXJzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoIvrBy9LZ1NnFIN7M
xc7ZIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCX0LDQutGA0YvRgtGL0LUg0YfQu9C10L3R
iyIpOyB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByaXZhdGVTbG90cygpCi0gICAgeyByZXR1
cm4gZGVjb2RlKCL6wcvS2dTZxSDTzM/U2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQl9Cw
0LrRgNGL0YLRi9C1INGB0LvQvtGC0YsiKTsgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTdGF0
aWNQcml2YXRlTWVtYmVycygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCL6wcvS2dTZxSDT1MHUyd7F
08vJxSDezMXO2SIpOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCLQl9Cw0LrRgNGL0YLRi9C1INGB
0YLQsNGC0LjRh9C10YHQutC40LUg0YfQu9C10L3RiyIpOyB9CiAgICAgCiAgICAgLyohIHRoaXMg
ZnVuY3Rpb24gaXMgdXNlZCB0byBwcm9kdWNlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaXRl
bXMuCiAgICAgICogIHVzZSBnZW5lcmF0ZU1hcmtlcihpKSB0byBpbmRpY2F0ZSB3aGVyZSBpdGVt
IGkgc2hvdWxkIGJlIHB1dC4KQEAgLTcwNSw3ICs2OTksNyBAQAogICAgICAgICAgIGlmIChpPG51
bUVudHJpZXMtMikgLy8gbm90IHRoZSBmb3JlIGxhc3QgZW50cnkgCiAgICAgICAgICAgICByZXN1
bHQrPSIsICI7CiAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAvLyB0aGUgZm9yZSBsYXN0
IGVudHJ5Ci0gICAgICAgICAgICByZXN1bHQrPWRlY29kZSggIiDJICIgKTsKKyAgICAgICAgICAg
IHJlc3VsdCs9ZGVjb2RlKCAiINC4ICIgKTsKICAgICAgICAgfQogICAgICAgfQogICAgICAgcmV0
dXJuIHJlc3VsdDsgCkBAIC03MTYsNyArNzEwLDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFD
U3RyaW5nIHRySW5oZXJpdHNMaXN0KGludCBudW1FbnRyaWVzKQogICAgIHsKLSAgICAgIHJldHVy
biBkZWNvZGUoIuLB2s/X2cUgy8zB09PZOiIpK3RyV3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsK
KyAgICAgIHJldHVybiBkZWNvZGUoItCR0LDQt9C+0LLRi9C1INC60LvQsNGB0YHRizoiKSt0cldy
aXRlTGlzdChudW1FbnRyaWVzKSsiLiI7CiAgICAgfQogCiAgICAgLyohIHVzZWQgaW4gY2xhc3Mg
ZG9jdW1lbnRhdGlvbiB0byBwcm9kdWNlIGEgbGlzdCBvZiBzdXBlciBjbGFzc2VzLApAQCAtNzI0
LDcgKzcxOCw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckluaGVyaXRlZEJ5
TGlzdChpbnQgbnVtRW50cmllcykKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLw0s/J2tfP
xM7ZxSDLzMHT09k6IikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOworICAgICAgcmV0dXJu
IGRlY29kZSgi0J/RgNC+0LjQt9Cy0L7QtNC90YvQtSDQutC70LDRgdGB0Ys6IikrdHJXcml0ZUxp
c3QobnVtRW50cmllcykrIi4iOwogICAgIH0KIAogICAgIC8qISB1c2VkIGluIG1lbWJlciBkb2N1
bWVudGF0aW9uIGJsb2NrcyB0byBwcm9kdWNlIGEgbGlzdCBvZiAKQEAgLTczMiwxMSArNzI2LDEx
IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clJlaW1wbGVtZW50ZWRGcm9tTGlz
dChpbnQgbnVtRW50cmllcykKICAgICB7Ci0gICAgICBRQ1N0cmluZyByZXN1bHQ9IvDF0sXP0NLF
xMXM0cXUIM3F1M/EIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QtdGA0LXQvtC/0YDQtdC0
0LXQu9GP0LXRgiDQvNC10YLQvtC0IjsKICAgICAgIGlmKG51bUVudHJpZXM+MSkKLQlyZXN1bHQr
PSLZINDSxcTLz9ciOworCXJlc3VsdCs9ItGLINC/0YDQtdC00LrQvtCyIjsKICAgICAgIGVsc2UK
LQlyZXN1bHQrPSIg0NLFxMvBIjsKKwlyZXN1bHQrPSIg0L/RgNC10LTQutCwIjsKICAgICAgIHJl
dHVybiBkZWNvZGUocmVzdWx0KyIgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAg
IH0KIApAQCAtNzQ1LDE5ICs3MzksMTkgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyUmVpbXBsZW1lbnRlZEluTGlzdChpbnQgbnVtRW50cmllcykKICAgICB7Ci0gICAgICByZXR1
cm4gZGVjb2RlKCLwxdLFz9DSxcTFzNHF1NPRINcgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykr
Ii4iOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/QtdGA0LXQvtC/0YDQtdC00LXQu9GP0LXRgtGB
0Y8g0LIgIikrdHJXcml0ZUxpc3QobnVtRW50cmllcykrIi4iOwogICAgIH0KIAogICAgIC8qISBU
aGlzIGlzIHB1dCBhYm92ZSBlYWNoIHBhZ2UgYXMgYSBsaW5rIHRvIGFsbCBtZW1iZXJzIG9mIG5h
bWVzcGFjZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZU1lbWJlcnMoKQot
ICAgIHsgcmV0dXJuIGRlY29kZSgi/szFztkg0NLP09TSwc7T1Ncgyc3FziIpOyB9CisgICAgeyBy
ZXR1cm4gZGVjb2RlKCLQp9C70LXQvdGLINC/0YDQvtGB0YLRgNCw0L3RgdGC0LIg0LjQvNC10L0i
KTsgfQogCiAgICAgLyohIFRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBwYWdlIHdpdGgg
YWxsIG5hbWVzcGFjZSBtZW1iZXJzICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFj
ZU1lbWJlckRlc2NyaXB0aW9uKGJvb2wgZXh0cmFjdEFsbCkKICAgICB7Ci0gICAgICBRQ1N0cmlu
ZyByZXN1bHQ9IvDPzM7ZyiDT0MnTz8sgIjsKLSAgICAgIGlmICghZXh0cmFjdEFsbCkgcmVzdWx0
Kz0ixM/L1c3FztTJ0s/Xwc7O2cggIjsKLSAgICAgIHJlc3VsdCs9It7Mxc7P1yDQ0s/T1MHO09TX
IMnNxc4uIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdD0i0J/QvtC70L3Ri9C5INGB0L/QuNGB0L7Q
uiAiOworICAgICAgaWYgKCFleHRyYWN0QWxsKSByZXN1bHQrPSLQtNC+0LrRg9C80LXQvdGC0LjR
gNC+0LLQsNC90L3Ri9GFICI7CisgICAgICByZXN1bHQrPSLRh9C70LXQvdC+0LIg0L/RgNC+0YHR
gtCw0L3RgdGC0LIg0LjQvNC10L0uIjsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsKICAg
ICB9CiAKQEAgLTc2NSwxMyArNzU5LDEzIEBACiAgICAgICogIGluZGV4IG9mIGFsbCBuYW1lc3Bh
Y2VzLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJOYW1lc3BhY2VJbmRleCgpCi0g
ICAgeyByZXR1cm4gZGVjb2RlKCLhzMbB18nUztnKINXLwdrB1MXM2CDQ0s/T1NLBztPU1yDJzcXO
Iik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC3
0LDRgtC10LvRjCDQv9GA0L7RgdGC0YDQsNC90YHRgtCyINC40LzQtdC9Iik7IH0KIAogICAgIC8q
ISBUaGlzIGlzIHVzZWQgaW4gTGFUZVggYXMgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyIGNvbnRh
aW5pbmcKICAgICAgKiAgdGhlIGRvY3VtZW50YXRpb24gb2YgYWxsIG5hbWVzcGFjZXMuCiAgICAg
ICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck5hbWVzcGFjZURvY3VtZW50YXRpb24oKQotICAg
IHsgcmV0dXJuIGRlY29kZSgi8NLP09TSwc7T1NfBIMnNxc4iKTsgfQorICAgIHsgcmV0dXJuIGRl
Y29kZSgi0J/RgNC+0YHRgtGA0LDQvdGB0YLQstCwINC40LzQtdC9Iik7IH0KIAogLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KIC8vIG5ldyBzaW5jZSAwLjQ5LTk5MDUyMgpAQCAtNzgxLDcgKzc3NSw3IEBACiAg
ICAgICogIG5hbWVzcGFjZXMgaW4gYSBmaWxlLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJOYW1lc3BhY2VzKCkKLSAgICB7IHJldHVybiBkZWNvZGUoICLw0s/T1NLBztPU18Egyc3F
ziIgKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSggItCf0YDQvtGB0YLRgNCw0L3RgdGC0LLQsCDQ
uNC80LXQvSIgKTsgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gbmV3IHNpbmNlIDAuNDktOTkw
NzI4CkBAIC03OTQsMzEgKzc4OCwzMyBAQAogICAgICAgICBib29sIHNpbmdsZSkKICAgICB7IC8v
IGhlcmUgcyBpcyBvbmUgb2YgIiBDbGFzcyIsICIgU3RydWN0IiBvciAiIFVuaW9uIgogICAgICAg
Ly8gc2luZ2xlIGlzIHRydWUgaW1wbGllcyBhIHNpbmdsZSBmaWxlCi0gICAgICBRQ1N0cmluZyBy
ZXN1bHQ9KFFDU3RyaW5nKSLvwt/R18zFzsnRIMkgz9DJ08HOydEg3szFzs/XICI7CisgICAgICBR
Q1N0cmluZyByZXN1bHQ9KFFDU3RyaW5nKSLQntCx0YrRj9Cy0LvQtdC90LjRjyDQuCDQvtC/0LjR
gdCw0L3QuNGPINGH0LvQtdC90L7QsiAiOwogICAgICAgc3dpdGNoKGNvbXBUeXBlKQogICAgICAg
ewotICAgICAgICBjYXNlIENsYXNzRGVmOjpDbGFzczogICAgICByZXN1bHQrPSLLzMHT0yI7IAot
ICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9J8EnOyBlbHNlIHJlc3VsdCs9Is/XIjsKKyAg
ICAgICAgY2FzZSBDbGFzc0RlZjo6Q2xhc3M6ICAgICAgcmVzdWx0Kz0i0LrQu9Cw0YHRgSI7IAor
ICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9ItCwIjsgZWxzZSByZXN1bHQrPSLQvtCyIjsK
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiAgICAgcmVz
dWx0Kz0i09TS1cvU1dIiOyAKLSAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSfZJzsKKyAg
ICAgICAgY2FzZSBDbGFzc0RlZjo6U3RydWN0OiAgICAgcmVzdWx0Kz0i0YHRgtGA0YPQutGC0YPR
gCI7IAorICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9ItGLIjsKICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDbGFzc0RlZjo6VW5pb246ICAgICAgcmVzdWx0Kz0iz8LfxcTJzsXO
ySI7Ci0gICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0n0Sc7IGVsc2UgcmVzdWx0Kz0nyic7
CisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlVuaW9uOiAgICAgIHJlc3VsdCs9ItC+0LHRitC10LTQ
uNC90LXQvdC4IjsKKyAgICAgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSLRjyI7IGVsc2UgcmVz
dWx0Kz0i0LkiOwogICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENsYXNzRGVmOjpJbnRl
cmZhY2U6ICByZXN1bHQrPSLJztTF0sbFytMiOwotICAgICAgICAgIGlmIChzaW5nbGUpIHJlc3Vs
dCs9J8EnOyBlbHNlIHJlc3VsdCs9Is/XIjsKKyAgICAgICAgY2FzZSBDbGFzc0RlZjo6SW50ZXJm
YWNlOiAgcmVzdWx0Kz0i0LjQvdGC0LXRgNGE0LXQudGBIjsKKyAgICAgICAgICBpZiAoc2luZ2xl
KSByZXN1bHQrPSLQsCI7IGVsc2UgcmVzdWx0Kz0i0L7QsiI7CiAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgcmVzdWx0Kz0iUHJvdG9jb2wiOyAvLyB0
cmFuc2xhdGUgbWUhCisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OlByb3RvY29sOiAgcmVzdWx0Kz0i
0L/RgNC+0YLQvtC60L7QuyI7CisJCSAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0i0LAiOyBlbHNlIHJl
c3VsdCs9ItC+0LIiOwogICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENsYXNzRGVmOjpD
YXRlZ29yeTogIHJlc3VsdCs9IkNhdGVnb3J5IjsgLy8gdHJhbnNsYXRlIG1lIQorICAgICAgICBj
YXNlIENsYXNzRGVmOjpDYXRlZ29yeTogIHJlc3VsdCs9ItC60LDRgtC10LPQvtGA0LgiOworICAg
ICAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9ItGPIjsgZWxzZSByZXN1bHQrPSLQuSI7CiAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4Y2VwdGlvbjogIHJlc3VsdCs9
IsnTy8zA3sXOySI7Ci0gICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0n0Sc7IGVsc2UgcmVz
dWx0Kz0nyic7CisgICAgICAgIGNhc2UgQ2xhc3NEZWY6OkV4Y2VwdGlvbjogIHJlc3VsdCs9ItC4
0YHQutC70Y7Rh9C10L3QuCI7CisgICAgICAgICAgaWYgKHNpbmdsZSkgcmVzdWx0Kz0i0Y8iOyBl
bHNlIHJlc3VsdCs9ItC5IjsKICAgICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgIHJlc3Vs
dCs9IiDOwcjPxNHU09Eg1yDGwcrMIjsKLSAgICAgIGlmIChzaW5nbGUpIHJlc3VsdCs9IsU6Ijsg
ZWxzZSByZXN1bHQrPSLByDoiOworICAgICAgcmVzdWx0Kz0iINC90LDRhdC+0LTRj9GC0YHRjyDQ
siDRhNCw0LnQuyI7CisgICAgICBpZiAoc2luZ2xlKSByZXN1bHQrPSLQtToiOyBlbHNlIHJlc3Vs
dCs9ItCw0YU6IjsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTgy
Niw3ICs4MjIsNyBAQAogICAgICAqIGxpc3QuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0ckFscGhhYmV0aWNhbExpc3QoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi4czGwdfJ1M7ZyiDV
y8HawdTFzNgiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi0JDQu9GE0LDQstC40YLQvdGL0Lkg
0YPQutCw0LfQsNGC0LXQu9GMIik7IH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIG5ldyBzaW5j
ZSAwLjQ5LTk5MDkwMQpAQCAtODM0LDE4ICs4MzAsMTggQEAKIAogICAgIC8qISBUaGlzIGlzIHVz
ZWQgYXMgdGhlIGhlYWRpbmcgdGV4dCBmb3IgdGhlIHJldHZhbCBjb21tYW5kLiAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJSZXR1cm5WYWx1ZXMoKQotICAgIHsgcmV0dXJuIGRlY29kZSgi98/a
19LB3cHFzdnFINrOwd7FzsnRIik7IH0KKyAgICB7IHJldHVybiBkZWNvZGUoItCS0L7Qt9Cy0YDQ
sNGJ0LDQtdC80YvQtSDQt9C90LDRh9C10L3QuNGPIik7IH0KIAogICAgIC8qISBUaGlzIGlzIGlu
IHRoZSAocXVpY2spIGluZGV4IGFzIGEgbGluayB0byB0aGUgbWFpbiBwYWdlIChpbmRleC5odG1s
KQogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNYWluUGFnZSgpCi0gICAgeyByZXR1
cm4gZGVjb2RlKCL0ydTVzNjOwdEg09TSwc7Jw8EiKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSgi
0KLQuNGC0YPQu9GM0L3QsNGPINGB0YLRgNCw0L3QuNGG0LAiKTsgfQogCiAgICAgLyohIFRoaXMg
aXMgdXNlZCBpbiByZWZlcmVuY2VzIHRvIHBhZ2UgdGhhdCBhcmUgcHV0IGluIHRoZSBMYVRlWCAK
ICAgICAgKiAgZG9jdW1lbnRhdGlvbi4gSXQgc2hvdWxkIGJlIGFuIGFiYnJldmlhdGlvbiBvZiB0
aGUgd29yZCBwYWdlLgogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWdlQWJicmV2
aWF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoItPU0i4iKTsgfQorICAgIHsgcmV0dXJuIGRl
Y29kZSgi0YHRgtGALiIpOyB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBuZXcgc2luY2UgMC40
OS05OTExMDYKQEAgLTg1MywxMSArODQ5LDExIEBACiAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
RGVmaW5lZEF0TGluZUluU291cmNlRmlsZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi
880uIM/Q0sXExczFzsnFINcgxsHKzMUgQDEg09TSz8vBIEAwIik7CisgICAgICByZXR1cm4gZGVj
b2RlKCLQodC8LiDQvtC/0YDQtdC00LXQu9C10L3QuNC1INCyINGE0LDQudC70LUgQDEg0YHRgtGA
0L7QutCwIEAwIik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEZWZpbmVkSW5Tb3Vy
Y2VGaWxlKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLzzS4gz9DSxcTFzMXOycUg1yDG
wcrMxSBAMCIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0KHQvC4g0L7Qv9GA0LXQtNC10LvQtdC9
0LjQtSDQsiDRhNCw0LnQu9C1IEAwIik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAt
ODY2LDcgKzg2Miw3IEBACiAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGVwcmVjYXRlZCgpCiAg
ICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi9dPULiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi
0KPRgdGCLiIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTg3Niw2OCArODcyLDY4
IEBACiAgICAgLyohIHRoaXMgdGV4dCBpcyBwdXQgYmVmb3JlIGEgY29sbGFib3JhdGlvbiBkaWFn
cmFtICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckNvbGxhYm9yYXRpb25EaWFncmFtKGNvbnN0
IGNoYXIgKmNsTmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gKFFDU3RyaW5nKWRlY29kZSgi59LB
xiDT19Haxcogy8zB09PBICIpK2NsTmFtZSsiOiI7CisgICAgICByZXR1cm4gKFFDU3RyaW5nKWRl
Y29kZSgi0JPRgNCw0YQg0YHQstGP0LfQtdC5INC60LvQsNGB0YHQsCAiKStjbE5hbWUrIjoiOwog
ICAgIH0KICAgICAvKiEgdGhpcyB0ZXh0IGlzIHB1dCBiZWZvcmUgYW4gaW5jbHVkZSBkZXBlbmRl
bmN5IGdyYXBoICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckluY2xEZXBHcmFwaChjb25zdCBj
aGFyICpmTmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLn0sHGINfLzMDewcXN2cgg
2sHHz8zP18/eztnIIMbByszP1yDEzNEgIikrZk5hbWUrIjoiOworICAgICAgcmV0dXJuIGRlY29k
ZSgi0JPRgNCw0YQg0LLQutC70Y7Rh9Cw0LXQvNGL0YUg0LfQsNCz0L7Qu9C+0LLQvtGH0L3Ri9GF
INGE0LDQudC70L7QsiDQtNC70Y8gIikrZk5hbWUrIjoiOwogICAgIH0KICAgICAvKiEgaGVhZGVy
IHRoYXQgaXMgcHV0IGJlZm9yZSB0aGUgbGlzdCBvZiBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9ycy4g
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ29uc3RydWN0b3JEb2N1bWVudGF0aW9uKCkKICAg
ICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLrz87T1NLVy9TP0ijZKSIpOyAKKyAgICAgIHJldHVy
biBkZWNvZGUoItCa0L7QvdGB0YLRgNGD0LrRgtC+0YAo0YspIik7IAogICAgIH0KICAgICAvKiEg
VXNlZCBpbiB0aGUgZmlsZSBkb2N1bWVudGF0aW9uIHRvIHBvaW50IHRvIHRoZSBjb3JyZXNwb25k
aW5nIHNvdXJjZXMuICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdvdG9Tb3VyY2VDb2RlKCkK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLzzS4gydPIz8TO2cUg1MXL09TZLiIpOworICAg
ICAgcmV0dXJuIGRlY29kZSgi0KHQvC4g0LjRgdGF0L7QtNC90YvQtSDRgtC10LrRgdGC0YsuIik7
CiAgICAgfQogICAgIC8qISBVc2VkIGluIHRoZSBmaWxlIHNvdXJjZXMgdG8gcG9pbnQgdG8gdGhl
IGNvcnJlc3BvbmRpbmcgZG9jdW1lbnRhdGlvbi4gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRy
R290b0RvY3VtZW50YXRpb24oKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvPNLiDEz8vV
zcXO1MHDycAuIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQodC8LiDQtNC+0LrRg9C80LXQvdGC
0LDRhtC40Y4uIik7CiAgICAgfQogICAgIC8qISBUZXh0IGZvciB0aGUgXFxwcmUgY29tbWFuZCAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQcmVjb25kaXRpb24oKQogICAgIHsKLSAgICAgIHJl
dHVybiBkZWNvZGUoIvDSxcTV08zP18nFIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9GA0LXQ
tNGD0YHQu9C+0LLQuNC1Iik7CiAgICAgfQogICAgIC8qISBUZXh0IGZvciB0aGUgXFxwb3N0IGNv
bW1hbmQgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUG9zdGNvbmRpdGlvbigpCiAgICAgewot
ICAgICAgcmV0dXJuIGRlY29kZSgi8M/T1NXTzM/XycUiKTsKKyAgICAgIHJldHVybiBkZWNvZGUo
ItCf0L7RgdGC0YPRgdC70L7QstC40LUiKTsKICAgICB9CiAgICAgLyohIFRleHQgZm9yIHRoZSBc
XGludmFyaWFudCBjb21tYW5kICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckludmFyaWFudCgp
CiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi6c7XwdLJwc7UIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQmNC90LLQsNGA0LjQsNC90YIiKTsKICAgICB9CiAgICAgLyohIFRleHQgc2hvd24g
YmVmb3JlIGEgbXVsdGktbGluZSB2YXJpYWJsZS9lbnVtIGluaXRpYWxpemF0aW9uICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckluaXRpYWxWYWx1ZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi6c7Jw8nBzMnawdTP0iIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JjQvdC40YbQuNCw
0LvQuNC30LDRgtC+0YAiKTsKICAgICB9CiAgICAgLyohIFRleHQgdXNlZCB0aGUgc291cmNlIGNv
ZGUgaW4gdGhlIGZpbGUgaW5kZXggKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ29kZSgpCiAg
ICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi6dPIz8TO2cUg1MXL09TZIik7CisgICAgICByZXR1
cm4gZGVjb2RlKCLQmNGB0YXQvtC00L3Ri9C1INGC0LXQutGB0YLRiyIpOwogICAgIH0KICAgICB2
aXJ0dWFsIFFDU3RyaW5nIHRyR3JhcGhpY2FsSGllcmFyY2h5KCkKICAgICB7Ci0gICAgICByZXR1
cm4gZGVjb2RlKCLpxdLB0sjJ0SDLzMHT08/XLiDn0sHGyd7F08vJyiDXycQuIik7CisgICAgICBy
ZXR1cm4gZGVjb2RlKCLQmNC10YDQsNGA0YXQuNGPINC60LvQsNGB0YHQvtCyLiDQk9GA0LDRhNC4
0YfQtdGB0LrQuNC5INCy0LjQtC4iKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdv
dG9HcmFwaGljYWxIaWVyYXJjaHkoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoItPNLiDH
0sHGyd7F08vJyiDXycQuIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLRgdC8LiDQs9GA0LDRhNC4
0YfQtdGB0LrQuNC5INCy0LjQtC4iKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdv
dG9UZXh0dWFsSGllcmFyY2h5KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLTzS4g1MXL
09TP19nKINfJxC4iKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItGB0LwuINGC0LXQutGB0YLQvtCy
0YvQuSDQstC40LQuIik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJQYWdlSW5kZXgo
KQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIuHMxsHXydTO2cog1cvB2sHUxczYINTFzcHU
yd7F08vJyCDP0MnTwc7JyiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JDQu9GE0LDQstC40YLQ
vdGL0Lkg0YPQutCw0LfQsNGC0LXQu9GMINGC0LXQvNCw0YLQuNGH0LXRgdC60LjRhSDQvtC/0LjR
gdCw0L3QuNC5Iik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTQ2LDUwICs5NDIs
NTAgQEAKICAgICAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTm90ZSgpCiAgICAgewotICAgICAg
cmV0dXJuIGRlY29kZSgi+sHNxdTLySIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNC80LXR
gtC60LgiKTsKICAgICB9CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clB1YmxpY1R5cGVzKCkKICAg
ICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLv1MvS2dTZxSDUydDZIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQntGC0LrRgNGL0YLRi9C1INGC0LjQv9GLIik7CiAgICAgfQogICAgIHZpcnR1YWwg
UUNTdHJpbmcgdHJQdWJsaWNBdHRyaWJzKCkKICAgICB7CiAgICAgICBpZiAoQ29uZmlnX2dldEJv
b2woIk9QVElNSVpFX09VVFBVVF9GT1JfQyIpKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVj
b2RlKCAi8M/M0SDEwc7O2cgiICk7CisgICAgICAgIHJldHVybiBkZWNvZGUoICLQn9C+0LvRjyDQ
tNCw0L3QvdGL0YUiICk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIHJl
dHVybiBkZWNvZGUoICLv1MvS2dTZxSDB1NLJwtXU2SIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29k
ZSggItCe0YLQutGA0YvRgtGL0LUg0LDRgtGA0LjQsdGD0YLRiyIgKTsKICAgICAgIH0KICAgICB9
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clN0YXRpY1B1YmxpY0F0dHJpYnMoKQogICAgIHsKLSAg
ICAgIHJldHVybiBkZWNvZGUoIvPUwdTJ3sXTy8nFIM/Uy9LZ1NnFIMTBzs7ZxSIpOworICAgICAg
cmV0dXJuIGRlY29kZSgi0KHRgtCw0YLQuNGH0LXRgdC60LjQtSDQvtGC0LrRgNGL0YLRi9C1INC0
0LDQvdC90YvQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJvdGVjdGVkVHlw
ZXMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrB3cndxc7O2cUg1MnQ2SIpOworICAg
ICAgcmV0dXJuIGRlY29kZSgi0JfQsNGJ0LjRidC10L3QvdGL0LUg0YLQuNC/0YsiKTsKICAgICB9
CiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByb3RlY3RlZEF0dHJpYnMoKQogICAgIHsKLSAgICAg
IHJldHVybiBkZWNvZGUoIvrB3cndxc7O2cUgxMHOztnFIik7CisgICAgICByZXR1cm4gZGVjb2Rl
KCLQl9Cw0YnQuNGJ0LXQvdC90YvQtSDQtNCw0L3QvdGL0LUiKTsKICAgICB9CiAgICAgdmlydHVh
bCBRQ1N0cmluZyB0clN0YXRpY1Byb3RlY3RlZEF0dHJpYnMoKQogICAgIHsKLSAgICAgIHJldHVy
biBkZWNvZGUoIvPUwdTJ3sXTy8nFINrB3cndxc7O2cUgxMHOztnFIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQodGC0LDRgtC40YfQtdGB0LrQuNC1INC30LDRidC40YnQtdC90L3Ri9C1INC00LDQ
vdC90YvQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUHJpdmF0ZVR5cGVzKCkK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCL6wcvS2dTZxSDUydDZIik7CisgICAgICByZXR1
cm4gZGVjb2RlKCLQl9Cw0LrRgNGL0YLRi9C1INGC0LjQv9GLIik7CiAgICAgfQogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJQcml2YXRlQXR0cmlicygpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29k
ZSgi+sHL0tnU2cUgxMHOztnFIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQl9Cw0LrRgNGL0YLR
i9C1INC00LDQvdC90YvQtSIpOwogICAgIH0KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGlj
UHJpdmF0ZUF0dHJpYnMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrBy9LZ1NnFINPU
wdTJ3sXTy8nFIMTBzs7ZxSIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0JfQsNC60YDRi9GC0YvQ
tSDRgdGC0LDRgtC40YfQtdGB0LrQuNC1INC00LDQvdC90YvQtSIpOwogICAgIH0KIAogCkBAIC0x
MDAxLDEzICs5OTcsMTMgQEAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVG9kbygpCiAgICAgLyo/
PyovCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi7sXPwsjPxMnNzyDTxMXMwdTYIik7Cisg
ICAgICByZXR1cm4gZGVjb2RlKCLQndC10L7QsdGF0L7QtNC40LzQviDRgdC00LXQu9Cw0YLRjCIp
OwogICAgIH0KICAgICAvKiEgVXNlZCBhcyB0aGUgaGVhZGVyIG9mIHRoZSB0b2RvIGxpc3QgKi8K
ICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVG9kb0xpc3QoKQogICAgIC8qPz8qLwogICAgIHsKLSAg
ICAgIHJldHVybiBkZWNvZGUoIvPQydPPyyDawcTB3iIpOworICAgICAgcmV0dXJuIGRlY29kZSgi
0KHQv9C40YHQvtC6INC30LDQtNCw0YciKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBA
IC0xMDE2LDI0ICsxMDEyLDI0IEBACiAKICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUmVmZXJlbmNl
ZEJ5KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLp09DPzNja1cXU09Eg1yIpOworICAg
ICAgcmV0dXJuIGRlY29kZSgi0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINCyIik7CiAgICAgfQog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZW1hcmtzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVj
b2RlKCLw0snNLiIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/RgNC40LwuIik7CiAgICAgfQog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJBdHRlbnRpb24oKQogICAgIHsKLSAgICAgIHJldHVybiBk
ZWNvZGUoIvfOyc3BzsnFIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQktC90LjQvNCw0L3QuNC1
Iik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJJbmNsQnlEZXBHcmFwaCgpCiAgICAg
ewotICAgICAgcmV0dXJuIGRlY29kZSgi59LBxiDGwcrMz9csINcgy8/Uz9LZxSDXy8zA3sHF1NPR
INzUz9QgxsHKzDoiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCT0YDQsNGEINGE0LDQudC70L7Q
siwg0LIg0LrQvtGC0L7RgNGL0LUg0LLQutC70Y7Rh9Cw0LXRgtGB0Y8g0Y3RgtC+0YIg0YTQsNC5
0Ls6Iik7CiAgICAgfQogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTaW5jZSgpCiAgICAgLyo/Pyov
CiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi7sHeyc7B0SDTIik7CisgICAgICByZXR1cm4g
ZGVjb2RlKCLQndCw0YfQuNC90LDRjyDRgSIpOwogICAgIH0KICAgICAKIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCkBAIC0xMDQzLDMyICsxMDM5LDMyIEBACiAgICAgLyohIHRpdGxlIG9mIHRoZSBncmFwaCBs
ZWdlbmQgcGFnZSAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJMZWdlbmRUaXRsZSgpCiAgICAg
ewotICAgICAgcmV0dXJuIGRlY29kZSgi7MXHxc7EwSIpOworICAgICAgcmV0dXJuIGRlY29kZSgi
0JvQtdCz0LXQvdC00LAiKTsKICAgICB9CiAgICAgLyohIHBhZ2UgZXhwbGFpbmluZyBob3cgdGhl
IGRvdCBncmFwaCdzIHNob3VsZCBiZSBpbnRlcnByZXRlZCAqLwogICAgIHZpcnR1YWwgUUNTdHJp
bmcgdHJMZWdlbmREb2NzKCkKICAgICB7CiAgICAgICByZXR1cm4gZGVjb2RlKCAKLSAgICAgICAg
Iu/Cz9rOwd7FzsnRLCDJ09DPzNja1cXN2cUg1yDH0sHGwcguPHA+XG4iCi0gICAgICAgICLywdPT
zc/U0snNINPMxcTVwN3JyiDQ0snNxdI6XG4iCisgICAgICAgICLQntCx0L7Qt9C90LDRh9C10L3Q
uNGPLCDQuNGB0L/QvtC70YzQt9GD0LXQvNGL0LUg0LIg0LPRgNCw0YTQsNGFLjxwPlxuIgorICAg
ICAgICAi0KDQsNGB0YHQvNC+0YLRgNC40Lwg0YHQu9C10LTRg9GO0YnQuNC5INC/0YDQuNC80LXR
gDpcbiIKICAgICAgICAgIlxcY29kZVxuIgotICAgICAgICAiLyohIO7F18nEyc3ZyiDLzMHT0yDJ
2i3awSDV08Xexc7J0SAqL1xuIgorICAgICAgICAiLyohINCd0LXQstC40LTQuNC80YvQuSDQutC7
0LDRgdGBINC40Lct0LfQsCDRg9GB0LXRh9C10L3QuNGPICovXG4iCiAgICAgICAgICJjbGFzcyBJ
bnZpc2libGUgeyB9O1xuXG4iCi0gICAgICAgICIvKiEg9dPF3sXOztnKIMvMwdPTLCDP1M7P28XO
ycUgzsHTzMXEz9fBzsnRINPL0tnUzyAqL1xuIgorICAgICAgICAiLyohINCj0YHQtdGH0LXQvdC9
0YvQuSDQutC70LDRgdGBLCDQvtGC0L3QvtGI0LXQvdC40LUg0L3QsNGB0LvQtdC00L7QstCw0L3Q
uNGPINGB0LrRgNGL0YLQviAqL1xuIgogICAgICAgICAiY2xhc3MgVHJ1bmNhdGVkIDogcHVibGlj
IEludmlzaWJsZSB7IH07XG5cbiIKLSAgICAgICAgIi8qIO7FxM/L1c3FztTJ0s/Xwc7O2cogy8zB
09MgKi9cbiIKKyAgICAgICAgIi8qINCd0LXQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC90L3R
i9C5INC60LvQsNGB0YEgKi9cbiIKICAgICAgICAgImNsYXNzIFVuZG9jdW1lbnRlZCB7IH07XG5c
biIKLSAgICAgICAgIi8qISDv1MvS2dTPxSDOwdPMxcTP18HOycUgKi9cbiIKKyAgICAgICAgIi8q
ISDQntGC0LrRgNGL0YLQvtC1INC90LDRgdC70LXQtNC+0LLQsNC90LjQtSAqL1xuIgogICAgICAg
ICAiY2xhc3MgUHVibGljQmFzZSA6IHB1YmxpYyBUcnVuY2F0ZWQgeyB9O1xuXG4iCi0gICAgICAg
ICIvKiEg+8HCzM/OIMvMwdPTwSAqL1xuIgorICAgICAgICAiLyohINCo0LDQsdC70L7QvSDQutC7
0LDRgdGB0LAgKi9cbiIKICAgICAgICAgInRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFRlbXBsIHt9
O1xuXG4iCi0gICAgICAgICIvKiEg+sHdyd3Fzs7PxSDOwdPMxcTP18HOycUgKi9cbiIKKyAgICAg
ICAgIi8qISDQl9Cw0YnQuNGJ0LXQvdC90L7QtSDQvdCw0YHQu9C10LTQvtCy0LDQvdC40LUgKi9c
biIKICAgICAgICAgImNsYXNzIFByb3RlY3RlZEJhc2UgeyB9O1xuXG4iCi0gICAgICAgICIvKiEg
+sHL0tnUz8UgzsHTzMXEz9fBzsnFICovXG4iCisgICAgICAgICIvKiEg0JfQsNC60YDRi9GC0L7Q
tSDQvdCw0YHQu9C10LTQvtCy0LDQvdC40LUgKi9cbiIKICAgICAgICAgImNsYXNzIFByaXZhdGVC
YXNlIHsgfTtcblxuIgotICAgICAgICAiLyohIOvMwdPTLCDJ09DPzNja1cXN2cogy8zB09PPzSBJ
bmhlcml0ZWQgKi9cbiIKKyAgICAgICAgIi8qISDQmtC70LDRgdGBLCDQuNGB0L/QvtC70YzQt9GD
0LXQvNGL0Lkg0LrQu9Cw0YHRgdC+0LwgSW5oZXJpdGVkICovXG4iCiAgICAgICAgICJjbGFzcyBV
c2VkIHsgfTtcblxuIgotICAgICAgICAiLyohIOvMwdPTLCDQz9LP1sTFzs7ZyiDP1CDE0tXHycgg
y8zB09PP1yAqL1xuIgorICAgICAgICAiLyohINCa0LvQsNGB0YEsINC/0L7RgNC+0LbQtNC10L3Q
vdGL0Lkg0L7RgiDQtNGA0YPQs9C40YUg0LrQu9Cw0YHRgdC+0LIgKi9cbiIKICAgICAgICAgImNs
YXNzIEluaGVyaXRlZCA6IHB1YmxpYyBQdWJsaWNCYXNlLFxuIgogICAgICAgICAiICAgICAgICAg
ICAgICAgICAgcHJvdGVjdGVkIFByb3RlY3RlZEJhc2UsXG4iCiAgICAgICAgICIgICAgICAgICAg
ICAgICAgICBwcml2YXRlIFByaXZhdGVCYXNlLFxuIgpAQCAtMTA3OSwzOSArMTA3NSwzOSBAQAog
ICAgICAgICAiICAgIFVzZWQgKm1fdXNlZENsYXNzO1xuIgogICAgICAgICAifTtcbiIKICAgICAg
ICAgIlxcZW5kY29kZVxuIgotICAgICAgICAi5dPMySBcXGMgTUFYX0RPVF9HUkFQSF9IRUlHSFQg
1yDLz87GycfV0sHDyc/Ozs/NIMbByszFICIKLSAgICAgICAgItXT1MHOz9fMxc4g1yAyNDAsINDP
zNXeydTT0SDTzMXE1cDdycogx9LBxjoiCisgICAgICAgICLQldGB0LvQuCBcXGMgTUFYX0RPVF9H
UkFQSF9IRUlHSFQg0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lwg0YTQsNC50LvQ
tSAiCisgICAgICAgICLRg9GB0YLQsNC90L7QstC70LXQvSDQsiAyNDAsINC/0L7Qu9GD0YfQuNGC
0YHRjyDRgdC70LXQtNGD0Y7RidC40Lkg0LPRgNCw0YQ6IgogICAgICAgICAiPHA+PGNlbnRlcj48
aW1nIHNyYz1cImdyYXBoX2xlZ2VuZC4iK0NvbmZpZ19nZXRFbnVtKCJET1RfSU1BR0VfRk9STUFU
IikrIlwiPjwvY2VudGVyPlxuIgogICAgICAgICAiPHA+XG4iCi0gICAgICAgICLw0tHNz9XHz8zY
zsnLySDXINzUz80gx9LBxsUgyc3FwNQg08zFxNXA3cXFINrOwd7FzsnFOlxuIgorICAgICAgICAi
0J/RgNGP0LzQvtGD0LPQvtC70YzQvdC40LrQuCDQsiDRjdGC0L7QvCDQs9GA0LDRhNC1INC40LzQ
tdGO0YIg0YHQu9C10LTRg9GO0YnQtdC1INC30L3QsNGH0LXQvdC40LU6XG4iCiAgICAgICAgICI8
dWw+XG4iCi0gICAgICAgICI8bGk++sHQz8zOxc7O2cog3sXSztnKINDS0c3P1cfPzNjOycsg0NLF
xNPUwdfM0cXUINPU0tXL1NXS1SDJzMkgy8zB09MsICIKLSAgICAgICAgIsTM0SDLz9TP0s/HzyDT
z9rEwc4gx9LBxi5cbiIKLSAgICAgICAgIjxsaT7w0tHNz9XHz8zYzsnLINMg3sXSzs/KIMfSwc7J
w8XKIM/Cz9rOwd7BxdQgxM/L1c3FztTJ0s/Xwc7O1cAg09TS1cvU1dLVIMnMySDLzMHT0y5cbiIK
LSAgICAgICAgIjxsaT7w0tHNz9XHz8zYzsnLINMg08XSz8ogx9LBzsnDxcogz8LP2s7B3sHF1CDO
xcTPy9XNxc7UydLP18HOztXAINPU0tXL1NXS1SDJzMkgy8zB09MuXG4iCi0gICAgICAgICI8bGk+
8NLRzc/Vx8/M2M7JyyDTIMvSwdPOz8ogx9LBzsnDxcogz8LP2s7B3sHF1CDEz8vVzcXO1MnSz9fB
zs7VwCDT1NLVy9TV0tUgyczJIMvMwdPTLCDEzNEgy8/Uz9LPx89cbiIKLSAgICAgICAgIiDOxSDX
08Ugz9TOz9vFzsnRIM7B08zFxM/Xwc7J0S/Tz8TF0tbBzsnRINDPy8Hawc7ZLiDn0sHGINXTxd7F
ziwgIgotICAgICAgICAixdPMySDPziDOxSDQz83F09TJzNPRINcg1cvB2sHOztnIIMfSwc7Jw8HI
LlxuIgorICAgICAgICAiPGxpPtCX0LDQv9C+0LvQvdC10L3QvdGL0Lkg0YfQtdGA0L3Ri9C5INC/
0YDRj9C80L7Rg9Cz0L7Qu9GM0L3QuNC6INC/0YDQtdC00YHRgtCw0LLQu9GP0LXRgiDRgdGC0YDR
g9C60YLRg9GA0YMg0LjQu9C4INC60LvQsNGB0YEsICIKKyAgICAgICAgItC00LvRjyDQutC+0YLQ
vtGA0L7Qs9C+INGB0L7Qt9C00LDQvSDQs9GA0LDRhC5cbiIKKyAgICAgICAgIjxsaT7Qn9GA0Y/Q
vNC+0YPQs9C+0LvRjNC90LjQuiDRgSDRh9C10YDQvdC+0Lkg0LPRgNCw0L3QuNGG0LXQuSDQvtCx
0L7Qt9C90LDRh9Cw0LXRgiDQtNC+0LrRg9C80LXQvdGC0LjRgNC+0LLQsNC90L3Rg9GOINGB0YLR
gNGD0LrRgtGD0YDRgyDQuNC70Lgg0LrQu9Cw0YHRgS5cbiIKKyAgICAgICAgIjxsaT7Qn9GA0Y/Q
vNC+0YPQs9C+0LvRjNC90LjQuiDRgSDRgdC10YDQvtC5INCz0YDQsNC90LjRhtC10Lkg0L7QsdC+
0LfQvdCw0YfQsNC10YIg0L3QtdC00L7QutGD0LzQtdC90YLQuNGA0L7QstCw0L3QvdGD0Y4g0YHR
gtGA0YPQutGC0YPRgNGDINC40LvQuCDQutC70LDRgdGBLlxuIgorICAgICAgICAiPGxpPtCf0YDR
j9C80L7Rg9Cz0L7Qu9GM0L3QuNC6INGBINC60YDQsNGB0L3QvtC5INCz0YDQsNC90LjRhtC10Lkg
0L7QsdC+0LfQvdCw0YfQsNC10YIg0LTQvtC60YPQvNC10L3RgtC40YDQvtCy0LDQvdC90YPRjiDR
gdGC0YDRg9C60YLRg9GA0YMg0LjQu9C4INC60LvQsNGB0YEsINC00LvRjyDQutC+0YLQvtGA0L7Q
s9C+XG4iCisgICAgICAgICIg0L3QtSDQstGB0LUg0L7RgtC90L7RiNC10L3QuNGPINC90LDRgdC7
0LXQtNC+0LLQsNC90LjRjy/RgdC+0LTQtdGA0LbQsNC90LjRjyDQv9C+0LrQsNC30LDQvdGLLiDQ
k9GA0LDRhCDRg9GB0LXRh9C10L0sICIKKyAgICAgICAgItC10YHQu9C4INC+0L0g0L3QtSDQv9C+
0LzQtdGB0YLQuNC70YHRjyDQsiDRg9C60LDQt9Cw0L3QvdGL0YUg0LPRgNCw0L3QuNGG0LDRhS5c
biIKICAgICAgICAgIjwvdWw+XG4iCi0gICAgICAgICLz1NLFzMvJIMnNxcDUINPMxcTVwN3FxSDa
zsHexc7JxTpcbiIKKyAgICAgICAgItCh0YLRgNC10LvQutC4INC40LzQtdGO0YIg0YHQu9C10LTR
g9GO0YnQtdC1INC30L3QsNGH0LXQvdC40LU6XG4iCiAgICAgICAgICI8dWw+XG4iCi0gICAgICAg
ICI8bGk+9MXNzs8t08nO0dEg09TSxczLwSDJ09DPzNja1cXU09EgxMzRIMnaz8LSwdbFzsnRIM/U
zs/bxc7J0SDP1MvS2dTPx88gzsHTzMXEz9fBzsnRICIKLSAgICAgICAgIs3F1sTVIMTX1c3RIMvM
wdPTwc3JLlxuIgotICAgICAgICAiPGxpPvTFzc7PLdrFzMXOwdEg09TSxczLwSDJ09DPzNja1cXU
09Eg0NLJINrB3cndxc7Oz80gzsHTzMXEz9fBzsnJLlxuIgotICAgICAgICAiPGxpPvTFzc7PLcvS
wdPOwdEg09TSxczLwSDJ09DPzNja1cXU09Eg0NLJINrBy9LZ1M/NIM7B08zFxM/Xwc7JyS5cbiIK
LSAgICAgICAgIjxsaT7myc/MxdTP18HRINPU0sXMy8EgydPQz8zY2tXF1NPRLCDF08zJIMvMwdPT
INPPxMXS1snU09Eg1yIKLSAgICAgICAgIsTS1cfPzSDLzMHTxSDJzMkgydPQz8zY2tXF1NPRIMTS
1cfJzSDLzMHT08/NLiIKLSAgICAgICAgIvPPINPU0sXMy8/KINXLwdrZ18HF1NPRINDF0sXNxc7O
wdEsICIKLSAgICAgICAgIt7F0sXaIMvP1M/S1cAgxM/T1NXQxc4g1cvB2tnXwcXN2cogy8zB09Mg
yczJINPU0tXL1NXSwS4gXG4iCi0gICAgICAgICI8bGk+9sXM1MHRINPU0sXMy8EgydPQz8zY2tXF
1NPRIMTM0SDT19HaySDQz8TT1MHOz9fLySDbwcLMz87BIMkgIgotICAgICAgICAi28HCzM/OwSwg
zsEgz9POz9fFIMvP1M/Sz8fPINzUwSDQz8TT1MHOz9fLwSDX2dDPzM7FzsEuIPMg28HCzM/Oz80i
Ci0gICAgICAgICLVy8Ha2dfBxdTT0SDQwdLBzcXU0iDQz8TT1MHOz9fLyS5cbiIKKyAgICAgICAg
IjxsaT7QotC10LzQvdC+LdGB0LjQvdGP0Y8g0YHRgtGA0LXQu9C60LAg0LjRgdC/0L7Qu9GM0LfR
g9C10YLRgdGPINC00LvRjyDQuNC30L7QsdGA0LDQttC10L3QuNGPINC+0YLQvdC+0YjQtdC90LjR
jyDQvtGC0LrRgNGL0YLQvtCz0L4g0L3QsNGB0LvQtdC00L7QstCw0L3QuNGPICIKKyAgICAgICAg
ItC80LXQttC00YMg0LTQstGD0LzRjyDQutC70LDRgdGB0LDQvNC4LlxuIgorICAgICAgICAiPGxp
PtCi0LXQvNC90L4t0LfQtdC70LXQvdCw0Y8g0YHRgtGA0LXQu9C60LAg0LjRgdC/0L7Qu9GM0LfR
g9C10YLRgdGPINC/0YDQuCDQt9Cw0YnQuNGJ0LXQvdC90L7QvCDQvdCw0YHQu9C10LTQvtCy0LDQ
vdC40LguXG4iCisgICAgICAgICI8bGk+0KLQtdC80L3Qvi3QutGA0LDRgdC90LDRjyDRgdGC0YDQ
tdC70LrQsCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0L/RgNC4INC30LDQutGA0YvRgtC+0Lwg
0L3QsNGB0LvQtdC00L7QstCw0L3QuNC4LlxuIgorICAgICAgICAiPGxpPtCk0LjQvtC70LXRgtC+
0LLQsNGPINGB0YLRgNC10LvQutCwINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjywg0LXRgdC70Lgg
0LrQu9Cw0YHRgSDRgdC+0LTQtdGA0LbQuNGC0YHRjyDQsiIKKyAgICAgICAgItC00YDRg9Cz0L7Q
vCDQutC70LDRgdC1INC40LvQuCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTRgNGD0LPQuNC8
INC60LvQsNGB0YHQvtC8LiIKKyAgICAgICAgItCh0L4g0YHRgtGA0LXQu9C60L7QuSDRg9C60LDQ
t9GL0LLQsNC10YLRgdGPINC/0LXRgNC10LzQtdC90L3QsNGPLCAiCisgICAgICAgICLRh9C10YDQ
tdC3INC60L7RgtC+0YDRg9GOINC00L7RgdGC0YPQv9C10L0g0YPQutCw0LfRi9Cy0LDQtdC80YvQ
uSDQutC70LDRgdGBINC40LvQuCDRgdGC0YDRg9C60YLRg9GA0LAuIFxuIgorICAgICAgICAiPGxp
PtCW0LXQu9GC0LDRjyDRgdGC0YDQtdC70LrQsCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQ
u9GPINGB0LLRj9C30Lgg0L/QvtC00YHRgtCw0L3QvtCy0LrQuCDRiNCw0LHQu9C+0L3QsCDQuCAi
CisgICAgICAgICLRiNCw0LHQu9C+0L3QsCwg0L3QsCDQvtGB0L3QvtCy0LUg0LrQvtGC0L7RgNC+
0LPQviDRjdGC0LAg0L/QvtC00YHRgtCw0L3QvtCy0LrQsCDQstGL0L/QvtC70L3QtdC90LAuINCh
INGI0LDQsdC70L7QvdC+0LwiCisgICAgICAgICLRg9C60LDQt9GL0LLQsNC10YLRgdGPINC/0LDR
gNCw0LzQtdGC0YAg0L/QvtC00YHRgtCw0L3QvtCy0LrQuC5cbiIKICAgICAgICAgIjwvdWw+XG4i
KTsKICAgICB9CiAgICAgLyohIHRleHQgZm9yIHRoZSBsaW5rIHRvIHRoZSBsZWdlbmQgcGFnZSAq
LwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJMZWdlbmQoKQogICAgIHsKLSAgICAgIHJldHVybiBk
ZWNvZGUoItPNLiDMxcfFzsTVIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLRgdC8LiDQu9C10LPQ
tdC90LTRgyIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTExMjEsMTIgKzExMTcs
MTIgQEAKICAgICAvKiEgVXNlZCBhcyBhIG1hcmtlciB0aGF0IGlzIHB1dCBiZWZvcmUgYSB0ZXN0
IGl0ZW0gKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyVGVzdCgpCiAgICAgewotICAgICAgcmV0
dXJuIGRlY29kZSgi9MXT1CIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0KLQtdGB0YIiKTsKICAg
ICB9CiAgICAgLyohIFVzZWQgYXMgdGhlIGhlYWRlciBvZiB0aGUgdGVzdCBsaXN0ICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0clRlc3RMaXN0KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2Rl
KCLz0MnTz8sg1MXT1M/XIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQodC/0LjRgdC+0Log0YLQ
tdGB0YLQvtCyIik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTEzNiw3ICsxMTMy
LDcgQEAKICAgICAvKiEgVXNlZCBhcyBhIHNlY3Rpb24gaGVhZGVyIGZvciBLREUtMiBJREwgbWV0
aG9kcyAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJEQ09QTWV0aG9kcygpCiAgICAgewotICAg
ICAgcmV0dXJuIGRlY29kZSgiRENPUCDtxdTPxNkiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoIkRD
T1Ag0JzQtdGC0L7QtNGLIik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTE0Niwx
MiArMTE0MiwxMiBAQAogICAgIC8qISBVc2VkIGFzIGEgc2VjdGlvbiBoZWFkZXIgZm9yIElETCBw
cm9wZXJ0aWVzICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clByb3BlcnRpZXMoKQogICAgIHsK
LSAgICAgIHJldHVybiBkZWNvZGUoIvPXz8rT1NfBIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQ
odCy0L7QudGB0YLQstCwIik7CiAgICAgfQogICAgIC8qISBVc2VkIGFzIGEgc2VjdGlvbiBoZWFk
ZXIgZm9yIElETCBwcm9wZXJ0eSBkb2N1bWVudGF0aW9uICovCiAgICAgdmlydHVhbCBRQ1N0cmlu
ZyB0clByb3BlcnR5RG9jdW1lbnRhdGlvbigpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi
8M/MztnKINPQydPPyyDT18/K09TXIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQn9C+0LvQvdGL
0Lkg0YHQv9C40YHQvtC6INGB0LLQvtC50YHRgtCyIik7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwpAQCAtMTE2MywzNyArMTE1OSwzNyBAQAogICAgIHsKICAgICAgIGlmIChDb25maWdfZ2V0
Qm9vbCgiT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIikpCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBk
ZWNvZGUoICLz1NLVy9TV0tkgxMHOztnIIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0KHR
gtGA0YPQutGC0YPRgNGLINC00LDQvdC90YvRhSIgKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAg
ICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZSggIuvMwdPT2SIgKTsKKyAgICAgICAgcmV0dXJu
IGRlY29kZSggItCa0LvQsNGB0YHRiyIgKTsKICAgICAgIH0KICAgICB9CiAgICAgLyohIFVzZWQg
YXMgdGhlIHRpdGxlIG9mIGEgSmF2YSBwYWNrYWdlICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0
clBhY2thZ2UoY29uc3QgY2hhciAqbmFtZSkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCLw
wcvF1CAiKStuYW1lOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/QsNC60LXRgiAiKStuYW1lOwog
ICAgIH0KICAgICAvKiEgVGl0bGUgb2YgdGhlIHBhY2thZ2UgaW5kZXggcGFnZSAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJQYWNrYWdlTGlzdCgpCiAgICAgewotICAgICAgcmV0dXJuIGRlY29k
ZSgi8M/MztnKINPQydPPyyDQwcvF1M/XICIpOworICAgICAgcmV0dXJuIGRlY29kZSgi0J/QvtC7
0L3Ri9C5INGB0L/QuNGB0L7QuiDQv9Cw0LrQtdGC0L7QsiAiKTsKICAgICB9CiAgICAgLyohIFRo
ZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFja2FnZSBpbmRleCBwYWdlICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0clBhY2thZ2VMaXN0RGVzY3JpcHRpb24oKQogICAgIHsKLSAgICAgIHJldHVybiBk
ZWNvZGUoIvDPzM7ZyiDT0MnTz8sgxM/L1c3FztTJ0s/Xwc7O2cgg0MHLxdTP1y4iKTsKKyAgICAg
IHJldHVybiBkZWNvZGUoItCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0LTQvtC60YPQvNC10L3R
gtC40YDQvtCy0LDQvdC90YvRhSDQv9Cw0LrQtdGC0L7Qsi4iKTsKICAgICB9CiAgICAgLyohIFRo
ZSBsaW5rIG5hbWUgaW4gdGhlIFF1aWNrIGxpbmtzIGhlYWRlciBmb3IgZWFjaCBwYWdlICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0clBhY2thZ2VzKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVj
b2RlKCLwwcvF1NkiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCf0LDQutC10YLRiyIpOwogICAg
IH0KICAgICAvKiEgVGV4dCBzaG93biBiZWZvcmUgYSBtdWx0aS1saW5lIGRlZmluZSAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJEZWZpbmVWYWx1ZSgpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSgi7cHL0s/P0NLFxMXMxc7JxToiKTsKKyAgICAgIHJldHVybiBkZWNvZGUoItCc0LDQutGA
0L7QvtC/0YDQtdC00LXQu9C10L3QuNC1OiIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
QEAgLTEyMDMsMTIgKzExOTksMTIgQEAKICAgICAvKiEgVXNlZCBhcyBhIG1hcmtlciB0aGF0IGlz
IHB1dCBiZWZvcmUgYSBcXGJ1ZyBpdGVtICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckJ1Zygp
CiAgICAgewotICAgICAgcmV0dXJuIGRlY29kZSgi79vJwsvBIik7CisgICAgICByZXR1cm4gZGVj
b2RlKCLQntGI0LjQsdC60LAiKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMgdGhlIGhlYWRlciBv
ZiB0aGUgYnVnIGxpc3QgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQnVnTGlzdCgpCiAgICAg
ewotICAgICAgcmV0dXJuIGRlY29kZSgi79vJwsvJIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQ
ntGI0LjQsdC60LgiKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xMjI3LDcgKzEy
MjMsNyBAQAogICAgIC8qISBVc2VkIGFzIGhlYWRlciBSVEYgZ2VuZXJhbCBpbmRleCAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJSVEZHZW5lcmFsSW5kZXgoKQogICAgIHsKLSAgICAgIHJldHVy
biBkZWNvZGUoIuHMxsHXydTO2cog1cvB2sHUxczYIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQ
kNC70YTQsNCy0LjRgtC90YvQuSDRg9C60LDQt9Cw0YLQtdC70YwiKTsKICAgICB9CiAKICAgICAv
KiEgVGhpcyBpcyB1c2VkIGZvciB0cmFuc2xhdGlvbiBvZiB0aGUgd29yZCB0aGF0IHdpbGwgcG9z
c2libHkKQEAgLTEyMzgsMTMgKzEyMzQsMTMgQEAKICAgICB7IAogICAgICAgaWYgKENvbmZpZ19n
ZXRCb29sKCJPUFRJTUlaRV9PVVRQVVRfRk9SX0MiKSkKICAgICAgIHsKLSAgICAgICAgUUNTdHJp
bmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIvPU0tXL1NXS2SDEwc7O2cgiIDogItPU0tXL1NXS
2SDEwc7O2cgiKSk7CisgICAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQ
odGC0YDRg9C60YLRg9GA0Ysg0LTQsNC90L3Ri9GFIiA6ICLRgdGC0YDRg9C60YLRg9GA0Ysg0LTQ
sNC90L3Ri9GFIikpOwogICAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7IAogICAgICAgfQog
ICAgICAgZWxzZQogICAgICAgewotICAgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0
YWwgPyAi68zB09MiIDogIsvMwdPTIikpOwotICAgICAgICBpZighc2luZ3VsYXIpIHJlc3VsdCs9
ItkiOworICAgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi0JrQu9Cw0YHR
gSIgOiAi0LrQu9Cw0YHRgSIpKTsKKyAgICAgICAgaWYoIXNpbmd1bGFyKSByZXN1bHQrPSLRiyI7
CiAgICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAgICB9CiAgICAgfQpAQCAtMTI1
NSw4ICsxMjUxLDggQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRmlsZShib29s
IGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3VsYXIpCiAgICAgeyAKLSAgICAgIFFDU3RyaW5nIHJl
c3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLmwcrMIiA6ICLGwcrMIikpOwotICAgICAgaWYgKCFzaW5n
dWxhcikgIHJlc3VsdCs9ItkiOworICAgICAgUUNTdHJpbmcgcmVzdWx0KChmaXJzdF9jYXBpdGFs
ID8gItCk0LDQudC7IiA6ICLRhNCw0LnQuyIpKTsKKyAgICAgIGlmICghc2luZ3VsYXIpICByZXN1
bHQrPSLRiyI7CiAgICAgICByZXR1cm4gZGVjb2RlKHJlc3VsdCk7IAogICAgIH0KIApAQCAtMTI2
Niw4ICsxMjYyLDggQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyTmFtZXNwYWNl
KGJvb2wgZmlyc3RfY2FwaXRhbCwgYm9vbCBzaW5ndWxhcikKICAgICB7IAotICAgICAgUUNTdHJp
bmcgcmVzdWx0KChmaXJzdF9jYXBpdGFsID8gIvDSz9PU0sHO09TXIiA6ICLQ0s/T1NLBztPU1yIp
KTsKLSAgICAgIHJlc3VsdCs9KHNpbmd1bGFyPyLPIMnNxc4iOiLBIMnNxc4iKTsKKyAgICAgIFFD
U3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQn9GA0L7RgdGC0YDQsNC90YHRgtCyIiA6
ICLQv9GA0L7RgdGC0YDQsNC90YHRgtCyIikpOworICAgICAgcmVzdWx0Kz0oc2luZ3VsYXI/ItC+
INC40LzQtdC9Ijoi0LAg0LjQvNC10L0iKTsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsg
CiAgICAgfQogCkBAIC0xMjc3LDggKzEyNzMsOCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNT
dHJpbmcgdHJHcm91cChib29sIGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3VsYXIpCiAgICAgeyAK
LSAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLn0tXQ0CIgOiAix9LV0NAi
KSk7Ci0gICAgICByZXN1bHQrPShzaW5ndWxhciA/ICLBIiA6ICLZIik7CisgICAgICBRQ1N0cmlu
ZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi0JPRgNGD0L/QvyIgOiAi0LPRgNGD0L/QvyIpKTsK
KyAgICAgIHJlc3VsdCs9KHNpbmd1bGFyID8gItCwIiA6ICLRiyIpOwogICAgICAgcmV0dXJuIGRl
Y29kZShyZXN1bHQpOyAKICAgICB9CiAKQEAgLTEyODgsOCArMTI4NCw4IEBACiAgICAgICovCiAg
ICAgdmlydHVhbCBRQ1N0cmluZyB0clBhZ2UoYm9vbCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1
bGFyKQogICAgIHsgCi0gICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi89TS
wc7JwyIgOiAi09TSwc7JwyIpKTsKLSAgICAgIHJlc3VsdCs9KHNpbmd1bGFyID8gIsEiIDogItki
KTsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQodGC0YDQsNC90LjR
hiIgOiAi0YHRgtGA0LDQvdC40YYiKSk7CisgICAgICByZXN1bHQrPShzaW5ndWxhciA/ICLQsCIg
OiAi0YsiKTsKICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAgfQogCkBAIC0xMjk5
LDggKzEyOTUsOCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJNZW1iZXIoYm9v
bCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1bGFyKQogICAgIHsgCi0gICAgICBRQ1N0cmluZyBy
ZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi/szFziIgOiAi3szFziIpKTsKLSAgICAgIGlmICghc2lu
Z3VsYXIpICByZXN1bHQrPSLZIjsKKyAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRh
bCA/ICLQp9C70LXQvSIgOiAi0YfQu9C10L0iKSk7CisgICAgICBpZiAoIXNpbmd1bGFyKSAgcmVz
dWx0Kz0i0YsiOwogICAgICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOyAKICAgICB9CiAgICAKQEAg
LTEzMTAsOCArMTMwNiw4IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckdsb2Jh
bChib29sIGZpcnN0X2NhcGl0YWwsIGJvb2wgc2luZ3VsYXIpCiAgICAgeyAKLSAgICAgIFFDU3Ry
aW5nIHJlc3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLnzM/CwczYztkiIDogIsfMz8LBzNjO2SIpKTsK
LSAgICAgIHJlc3VsdCs9KHNpbmd1bGFyID8gIsoiIDogIsUiKTsKKyAgICAgIFFDU3RyaW5nIHJl
c3VsdCgoZmlyc3RfY2FwaXRhbCA/ICLQk9C70L7QsdCw0LvRjNC90YsiIDogItCz0LvQvtCx0LDQ
u9GM0L3RiyIpKTsKKyAgICAgIHJlc3VsdCs9KHNpbmd1bGFyID8gItC5IiA6ICLQtSIpOwogICAg
ICAgcmV0dXJuIGRlY29kZShyZXN1bHQpOyAKICAgICB9CiAKQEAgLTEzMjMsOCArMTMxOSw4IEBA
CiAgICAgICogIGZvciB0aGUgYXV0aG9yIHNlY3Rpb24gaW4gbWFuIHBhZ2VzLiAqLwogICAgIHZp
cnR1YWwgUUNTdHJpbmcgdHJBdXRob3IoYm9vbCBmaXJzdF9jYXBpdGFsLCBib29sIHNpbmd1bGFy
KQogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2Nh
cGl0YWwgPyAi4dfUz9IiIDogIsHX1M/SIikpOwotICAgICAgaWYgKCFzaW5ndWxhcikgcmVzdWx0
Kz0i2SI7CisgICAgICBRQ1N0cmluZyByZXN1bHQoKGZpcnN0X2NhcGl0YWwgPyAi0JDQstGC0L7R
gCIgOiAi0LDQstGC0L7RgCIpKTsKKyAgICAgIGlmICghc2luZ3VsYXIpIHJlc3VsdCs9ItGLIjsK
ICAgICAgIHJldHVybiBkZWNvZGUocmVzdWx0KTsgCiAgICAgfQogCkBAIC0xMzM2LDcgKzEzMzIs
NyBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJSZWZlcmVuY2VzKCkKICAgICB7
Ci0gICAgICByZXR1cm4gZGVjb2RlKCLwxdLFy9LF09TO2cUg09PZzMvJIik7CisgICAgICByZXR1
cm4gZGVjb2RlKCLQn9C10YDQtdC60YDQtdGB0YLQvdGL0LUg0YHRgdGL0LvQutC4Iik7CiAgICAg
fQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTM0OCw3ICsxMzQ0LDcgQEAKICAgICAgKi8KICAg
ICB2aXJ0dWFsIFFDU3RyaW5nIHRySW1wbGVtZW50ZWRGcm9tTGlzdChpbnQgbnVtRW50cmllcykK
ICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCL6wc3F3cHF1CAiKSt0cldyaXRlTGlzdChudW1F
bnRyaWVzKSsiLiI7CisgICAgICByZXR1cm4gZGVjb2RlKCLQl9Cw0LzQtdGJ0LDQtdGCICIpK3Ry
V3JpdGVMaXN0KG51bUVudHJpZXMpKyIuIjsKICAgICB9CiAKICAgICAvKiEgdXNlZCBpbiBtZW1i
ZXIgZG9jdW1lbnRhdGlvbiBibG9ja3MgdG8gcHJvZHVjZSBhIGxpc3Qgb2YKQEAgLTEzNTYsNyAr
MTM1Miw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckltcGxlbWVudGVkSW5M
aXN0KGludCBudW1FbnRyaWVzKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoIvrBzcXdwcXU
09Eg1yAiKSt0cldyaXRlTGlzdChudW1FbnRyaWVzKSsiLiI7CisgICAgICByZXR1cm4gZGVjb2Rl
KCLQl9Cw0LzQtdGJ0LDQtdGC0YHRjyDQsiAiKSt0cldyaXRlTGlzdChudW1FbnRyaWVzKSsiLiI7
CiAgICAgfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTM2OCw3ICsxMzY0LDcgQEAKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUlRGVGFibGVPZkNvbnRlbnRzKCkKICAgICB7Ci0g
ICAgICByZXR1cm4gZGVjb2RlKCLvx8zB18zFzsnFIik7CisgICAgICByZXR1cm4gZGVjb2RlKCLQ
ntCz0LvQsNCy0LvQtdC90LjQtSIpOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTEz
ODAsNyArMTM3Niw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRlcHJlY2F0
ZWRMaXN0KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi89DJ08/LINXT1MHSxdfbycgg
z9DSxcTFzMXOycogySDP0MnTwc7JyiIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQodC/0LjR
gdC+0Log0YPRgdGC0LDRgNC10LLRiNC40YUg0L7Qv9GA0LXQtNC10LvQtdC90LjQuSDQuCDQvtC/
0LjRgdCw0L3QuNC5IiApOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTEzOTIsMTIg
KzEzODgsMTIgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRXZlbnRzKCkKICAg
ICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi88/C2dTJ0SIgKTsKKyAgICAgIHJldHVybiBkZWNv
ZGUoICLQodC+0LHRi9GC0LjRjyIgKTsKICAgICB9CiAgICAgLyohIEhlYWRlciB1c2VkIGZvciB0
aGUgZG9jdW1lbnRhdGlvbiBzZWN0aW9uIG9mIGEgY2xhc3MnIGV2ZW50cy4gKi8KICAgICB2aXJ0
dWFsIFFDU3RyaW5nIHRyRXZlbnREb2N1bWVudGF0aW9uKCkKICAgICB7Ci0gICAgICByZXR1cm4g
ZGVjb2RlKCAiQ8/C2dTJ0SIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICJD0L7QsdGL0YLQuNGP
IiApOwogICAgIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTE0MDgsMzUgKzE0MDQsMzUgQEAK
ICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFja2FnZVR5cGVzKCkKICAgICB7IAot
ICAgICAgcmV0dXJuIGRlY29kZSggIvTJ0Nkg0yDPwszB09TYwCDXycTJzc/T1Mkg0MHLxdTBIiAp
OworICAgICAgcmV0dXJuIGRlY29kZSggItCi0LjQv9GLINGBINC+0LHQu9Cw0YHRgtGM0Y4g0LLQ
uNC00LjQvNC+0YHRgtC4INC/0LDQutC10YLQsCIgKTsKICAgICB9CiAgICAgLyohIFVzZWQgYXMg
YSBoZWFkaW5nIGZvciBhIGxpc3Qgb2YgSmF2YSBjbGFzcyBmdW5jdGlvbnMgd2l0aCBwYWNrYWdl
IAogICAgICAqIHNjb3BlLiAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFja2Fn
ZU1lbWJlcnMoKQogICAgIHsgCi0gICAgICByZXR1cm4gZGVjb2RlKCAi5tXOy8PJySDTIM/CzMHT
1NjAINfJxMnNz9PUySDQwcvF1MEiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KTRg9C90LrR
htC40Lgg0YEg0L7QsdC70LDRgdGC0YzRjiDQstC40LTQuNC80L7RgdGC0Lgg0L/QsNC60LXRgtCw
IiApOwogICAgIH0KICAgICAvKiEgVXNlZCBhcyBhIGhlYWRpbmcgZm9yIGEgbGlzdCBvZiBzdGF0
aWMgSmF2YSBjbGFzcyBmdW5jdGlvbnMgd2l0aCAKICAgICAgKiAgcGFja2FnZSBzY29wZS4KICAg
ICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU3RhdGljUGFja2FnZU1lbWJlcnMoKQogICAg
IHsgCi0gICAgICByZXR1cm4gZGVjb2RlKCAi89TB1MnexdPLycUgxtXOy8PJySDTIM/CzMHT1NjA
INfJxMnNz9PUySDQwcvF1MEiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KHRgtCw0YLQuNGH
0LXRgdC60LjQtSDRhNGD0L3QutGG0LjQuCDRgSDQvtCx0LvQsNGB0YLRjNGOINCy0LjQtNC40LzQ
vtGB0YLQuCDQv9Cw0LrQtdGC0LAiICk7CiAgICAgfQogICAgIC8qISBVc2VkIGFzIGEgaGVhZGlu
ZyBmb3IgYSBsaXN0IG9mIEphdmEgY2xhc3MgdmFyaWFibGVzIHdpdGggcGFja2FnZSAKICAgICAg
KiBzY29wZS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyUGFja2FnZUF0dHJpYnMo
KQogICAgIHsgCi0gICAgICByZXR1cm4gZGVjb2RlKCAi8MXSxc3Fzs7ZxSDTIM/CzMHT1NjAINfJ
xMnNz9PUySDQwcvF1MEiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0J/QtdGA0LXQvNC10L3Q
vdGL0LUg0YEg0L7QsdC70LDRgdGC0YzRjiDQstC40LTQuNC80L7RgdGC0Lgg0L/QsNC60LXRgtCw
IiApOwogICAgIH0KICAgICAvKiEgVXNlZCBhcyBhIGhlYWRpbmcgZm9yIGEgbGlzdCBvZiBzdGF0
aWMgSmF2YSBjbGFzcyB2YXJpYWJsZXMgd2l0aCAKICAgICAgKiBwYWNrYWdlIHNjb3BlLgogICAg
ICAqLwogICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJTdGF0aWNQYWNrYWdlQXR0cmlicygpCiAgICAg
eyAKLSAgICAgIHJldHVybiBkZWNvZGUoICLz1MHUyd7F08vJxSDQxdLFzcXOztnFINMgz8LMwdPU
2MAg18nEyc3P09TJINDBy8XUwSIgKTsKKyAgICAgIHJldHVybiBkZWNvZGUoICLQodGC0LDRgtC4
0YfQtdGB0LrQuNC1INC/0LXRgNC10LzQtdC90L3Ri9C1INGBINC+0LHQu9Cw0YHRgtGM0Y4g0LLQ
uNC00LjQvNC+0YHRgtC4INC/0LDQutC10YLQsCIgKTsKICAgICB9CiAgICAgCiAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwpAQCAtMTQ0OCwxMiArMTQ0NCwxMiBAQAogICAgICAqLwogICAgIHZpcnR1YWwgUUNT
dHJpbmcgdHJBbGwoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoICL1y8HawdTFzNgiICk7
CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KPQutCw0LfQsNGC0LXQu9GMIiApOwogICAgIH0KICAg
ICAvKiEgUHV0IGluIGZyb250IG9mIHRoZSBjYWxsIGdyYXBoIGZvciBhIGZ1bmN0aW9uLiAqLwog
ICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJDYWxsR3JhcGgoKQogICAgIHsKLSAgICAgIHJldHVybiBk
ZWNvZGUoICLn0sHGINfZ2s/Xz9c6IiApOworICAgICAgcmV0dXJuIGRlY29kZSggItCT0YDQsNGE
INCy0YvQt9C+0LLQvtCyOiIgKTsKICAgICB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xNDY2
LDE0ICsxNDYyLDE0IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clNlYXJjaEZv
ckluZGV4KCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi8M/J08siICk7CisgICAgICBy
ZXR1cm4gZGVjb2RlKCAi0J/QvtC40YHQuiIgKTsKICAgICB9CiAgICAgLyohIFRoaXMgc3RyaW5n
IGlzIHVzZWQgYXMgdGhlIHRpdGxlIGZvciB0aGUgcGFnZSBsaXN0aW5nIHRoZSBzZWFyY2gKICAg
ICAgKiAgcmVzdWx0cy4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyU2VhcmNoUmVz
dWx0c1RpdGxlKCkKICAgICB7Ci0gICAgICByZXR1cm4gZGVjb2RlKCAi8sXa1czY1MHU2SDQz8nT
y8EiICk7CisgICAgICByZXR1cm4gZGVjb2RlKCAi0KDQtdC30YPQu9GM0YLQsNGC0Ysg0L/QvtC4
0YHQutCwIiApOwogICAgIH0KICAgICAvKiEgVGhpcyBzdHJpbmcgaXMgcHV0IGp1c3QgYmVmb3Jl
IGxpc3RpbmcgdGhlIHNlYXJjaCByZXN1bHRzLiBUaGUKICAgICAgKiAgdGV4dCBjYW4gYmUgZGlm
ZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyBmb3VuZC4KQEAgLTE0
ODcsMTYgKzE0ODMsMTYgQEAKICAgICB7CiAgICAgICBpZiAobnVtRG9jdW1lbnRzPT0wKQogICAg
ICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi6yDTz9bBzMXOycAsINDPIPfB28XN1SDawdDS
z9PVIM7J3sXHzyDOxSDOwcrExc7PLiIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZSggItCaINGB
0L7QttCw0LvQtdC90LjRjiwg0L/QviDQktCw0YjQtdC80YMg0LfQsNC/0YDQvtGB0YMg0L3QuNGH
0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L4uIiApOwogICAgICAgfQogICAgICAgZWxzZSBpZigg
bnVtRG9jdW1lbnRzID09IDEgKQogICAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlKCAi7sHK
xMXOIDEgxM/L1c3FztQuIiApOworICAgICAgICByZXR1cm4gZGVjb2RlKCAi0J3QsNC50LTQtdC9
IDEg0LTQvtC60YPQvNC10L3Rgi4iICk7CiAgICAgICB9CiAgICAgICBlbHNlIAogICAgICAgewot
ICAgICAgICByZXR1cm4gZGVjb2RlKCAi7sHKxMXOKM8pIDxiPiRudW08L2I+IMTPy9XNxc7UKM/X
KS4gIgotICAgICAgICAgICLkz8vVzcXO1Nkgz9TTz9LUydLP18HO2SDQzyDSxczF18HO1M7P09TJ
LiIgKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZSggItCd0LDQudC00LXQvSjQvikgPGI+JG51bTwv
Yj4g0LTQvtC60YPQvNC10L3RgijQvtCyKS4gIgorICAgICAgICAgICLQlNC+0LrRg9C80LXQvdGC
0Ysg0L7RgtGB0L7RgNGC0LjRgNC+0LLQsNC90Ysg0L/QviDRgNC10LvQtdCy0LDQvdGC0L3QvtGB
0YLQuC4iICk7CiAgICAgICB9CiAgICAgfQogICAgIC8qISBUaGlzIHN0cmluZyBpcyBwdXQgYmVm
b3JlIHRoZSBsaXN0IG9mIG1hdGNoZWQgd29yZHMsIGZvciBlYWNoIHNlYXJjaCAKQEAgLTE1MDQs
NyArMTUwMCw3IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0clNlYXJjaE1hdGNo
ZXMoKQogICAgIHsKLSAgICAgIHJldHVybiBkZWNvZGUoICLuwcrExc7POiIgKTsKKyAgICAgIHJl
dHVybiBkZWNvZGUoICLQndCw0LnQtNC10L3QvjoiICk7CiAgICAgfQogCiAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwpAQCAtMTUxNSw3ICsxNTExLDcgQEAKICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5n
IHRyU291cmNlRmlsZShRQ1N0cmluZyYgZmlsZW5hbWUpCiAgICAgewotICAgICAgcmV0dXJuIGRl
Y29kZSggIunTyM/EztnKIMbByswgIiArIGZpbGVuYW1lICk7CisgICAgICByZXR1cm4gZGVjb2Rl
KCAi0JjRgdGF0L7QtNC90YvQuSDRhNCw0LnQuyAiICsgZmlsZW5hbWUgKTsKICAgICB9CiAKIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCkBAIC0xNTI2LDM5ICsxNTIyLDM5IEBACiAgICAgICogIGhpZXJhcmNo
eS4KICAgICAgKi8KICAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyRGlySW5kZXgoKQotICAgIHsgcmV0
dXJuIGRlY29kZSggIuTF0sXXzyDEydLFy9TP0snKIiApOyB9CisgICAgeyByZXR1cm4gZGVjb2Rl
KCAi0JTQtdGA0LXQstC+INC00LjRgNC10LrRgtC+0YDQuNC5IiApOyB9CiAKICAgICAvKiEgVGhp
cyBpcyB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSBjaGFwdGVyIGNvbnRhaW5pbmcgdGhlIGRvY3Vt
ZW50YXRpb24KICAgICAgKiAgb2YgdGhlIGRpcmVjdG9yaWVzLgogICAgICAqLwogICAgIHZpcnR1
YWwgUUNTdHJpbmcgdHJEaXJEb2N1bWVudGF0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUoICLk
ydLFy9TP0snJIiApOyB9CisgICAgeyByZXR1cm4gZGVjb2RlKCAi0JTQuNGA0LXQutGC0L7RgNC4
0LgiICk7IH0KIAogICAgIC8qISBUaGlzIGlzIHVzZWQgYXMgdGhlIHRpdGxlIG9mIHRoZSBkaXJl
Y3RvcnkgaW5kZXggYW5kIGFsc28gaW4gdGhlCiAgICAgICogIFF1aWNrIGxpbmtzIG9mIGEgSFRN
TCBwYWdlLCB0byBsaW5rIHRvIHRoZSBkaXJlY3RvcnkgaGllcmFyY2h5LgogICAgICAqLwogICAg
IHZpcnR1YWwgUUNTdHJpbmcgdHJEaXJlY3RvcmllcygpCi0gICAgeyByZXR1cm4gZGVjb2RlKCAi
4czGwdfJ1M7ZyiDVy8HawdTFzNggxMnSxcvUz9LJyiIgKTsgfQorICAgIHsgcmV0dXJuIGRlY29k
ZSggItCQ0LvRhNCw0LLQuNGC0L3Ri9C5INGD0LrQsNC30LDRgtC10LvRjCDQtNC40YDQtdC60YLQ
vtGA0LjQuSIgKTsgfQogCiAgICAgLyohIFRoaXMgcmV0dXJucyBhIHNlbnRlbmNlcyB0aGF0IGlu
dHJvZHVjZXMgdGhlIGRpcmVjdG9yeSBoaWVyYXJjaHkuIAogICAgICAqICBhbmQgdGhlIGZhY3Qg
dGhhdCBpdCBpcyBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgcGVyIGxldmVsCiAgICAgICovCiAgICAg
dmlydHVhbCBRQ1N0cmluZyB0ckRpckRlc2NyaXB0aW9uKCkKLSAgICB7IHJldHVybiBkZWNvZGUo
ICLkxdLF188gxMnSxcvUz9LJyiIgKTsgfQorICAgIHsgcmV0dXJuIGRlY29kZSggItCU0LXRgNC1
0LLQviDQtNC40YDQtdC60YLQvtGA0LjQuSIgKTsgfQogCiAgICAgLyohIFRoaXMgcmV0dXJucyB0
aGUgdGl0bGUgb2YgYSBkaXJlY3RvcnkgcGFnZS4gVGhlIG5hbWUgb2YgdGhlCiAgICAgICogIGRp
cmVjdG9yeSBpcyBwYXNzZWQgdmlhIFxhIGRpck5hbWUuCiAgICAgICovCiAgICAgdmlydHVhbCBR
Q1N0cmluZyB0ckRpclJlZmVyZW5jZShjb25zdCBjaGFyICpkaXJOYW1lKQotICAgIHsgUUNTdHJp
bmcgcmVzdWx0PVFDU3RyaW5nKCLzz8TF0tbBzsnFIMTJ0sXL1M/SyckgIikrIGRpck5hbWU7IHJl
dHVybiBkZWNvZGUoIHJlc3VsdCApOyB9CisgICAgeyBRQ1N0cmluZyByZXN1bHQ9UUNTdHJpbmco
ItCh0L7QtNC10YDQttCw0L3QuNC1INC00LjRgNC10LrRgtC+0YDQuNC4ICIpKyBkaXJOYW1lOyBy
ZXR1cm4gZGVjb2RlKCByZXN1bHQgKTsgfQogCiAgICAgLyohIFRoaXMgcmV0dXJucyB0aGUgd29y
ZCBkaXJlY3Rvcnkgd2l0aCBvciB3aXRob3V0IHN0YXJ0aW5nIGNhcGl0YWwKICAgICAgKiAgKFxh
IGZpcnN0X2NhcGl0YWwpIGFuZCBpbiBzaWd1bGFyIG9yIHBsdXJhbCBmb3JtIChcYSBzaW5ndWxh
cikuCiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ckRpcihib29sIGZpcnN0X2NhcGl0
YWwsIGJvb2wgc2luZ3VsYXIpCiAgICAgeyAKLSAgICAgIFFDU3RyaW5nIHJlc3VsdCgoZmlyc3Rf
Y2FwaXRhbCA/ICLkydLFy9TP0skiIDogIsTJ0sXL1M/SySIpKTsKLSAgICAgIGlmIChzaW5ndWxh
cikgcmVzdWx0Kz0i0SI7IGVsc2UgcmVzdWx0Kz0iySI7CisgICAgICBRQ1N0cmluZyByZXN1bHQo
KGZpcnN0X2NhcGl0YWwgPyAi0JTQuNGA0LXQutGC0L7RgNC4IiA6ICLQtNC40YDQtdC60YLQvtGA
0LgiKSk7CisgICAgICBpZiAoc2luZ3VsYXIpIHJlc3VsdCs9ItGPIjsgZWxzZSByZXN1bHQrPSLQ
uCI7CiAgICAgICByZXR1cm4gZGVjb2RlKCByZXN1bHQgKTsgCiAgICAgfQogCkBAIC0xNTcxLDEw
ICsxNTY3LDI4IEBACiAgICAgICovCiAgICAgdmlydHVhbCBRQ1N0cmluZyB0ck92ZXJsb2FkVGV4
dCgpCiAgICAgewotICAgICAgIHJldHVybiBkZWNvZGUoICL81MEgxtXOy8PJ0SDQxdLFx9LV1sXO
wSDJINDSxcTP09TB18zRxdTT0SDJ08vMwN7J1MXM2M7PICIKLSAgICAgICAgICAgICAgIsTM0SDV
xM/C09TXwSDJ09DPzNjaz9fBzsnRLiDvzsEgz9TMyd7BxdTT0SDP1CDX2dvF1dDPzdHO1dTPyiAi
Ci0gICAgICAgICAgICAgICLUz8zYy88gxsHL1MnexdPLyc3JIMHSx9XNxc7Uwc3JLiIgKTsKKyAg
ICAgICByZXR1cm4gZGVjb2RlKCAi0K3RgtCwINGE0YPQvdC60YbQuNGPINC/0LXRgNC10LPRgNGD
0LbQtdC90LAg0Lgg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9C10YLRgdGPINC40YHQutC70Y7Rh9C4
0YLQtdC70YzQvdC+ICIKKyAgICAgICAgICAgICAgItC00LvRjyDRg9C00L7QsdGB0YLQstCwINC4
0YHQv9C+0LvRjNC30L7QstCw0L3QuNGPLiDQntC90LAg0L7RgtC70LjRh9Cw0LXRgtGB0Y8g0L7R
giDQstGL0YjQtdGD0L/QvtC80Y/QvdGD0YLQvtC5ICIKKyAgICAgICAgICAgICAgItGC0L7Qu9GM
0LrQviDRhNCw0LrRgtC40YfQtdGB0LrQuNC80Lgg0LDRgNCz0YPQvNC10L3RgtCw0LzQuC4iICk7
CiAgICAgfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gbmV3IHNpbmNlIDEuNC42CisvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworCisgICAgLyohIFRoaXMgaXMgdXNlZCB0byBpbnRyb2R1Y2UgYSBjYWxsZXIg
KG9yIGNhbGxlZC1ieSkgZ3JhcGggKi8KKyAgICB2aXJ0dWFsIFFDU3RyaW5nIHRyQ2FsbGVyR3Jh
cGgoKQorICAgIHsKKyAgICAgIHJldHVybiBkZWNvZGUoItCT0YDQsNGEINCy0YvQt9C+0LLQsCDR
hNGD0L3QutGG0LjQuToiKTsKKyAgICB9CisgICAgIAorICAgIC8qISBUaGlzIGlzIHVzZWQgaW4g
dGhlIGRvY3VtZW50YXRpb24gb2YgYSBmaWxlL25hbWVzcGFjZSBiZWZvcmUgdGhlIGxpc3QKKyAg
ICAgKiAgb2YgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm9yIGVudW1lcmF0aW9uIHZhbHVlcworICAg
ICAqLworICAgIHZpcnR1YWwgUUNTdHJpbmcgdHJFbnVtZXJhdGlvblZhbHVlRG9jdW1lbnRhdGlv
bigpCisgICAgeyByZXR1cm4gZGVjb2RlKCLQrdC70LXQvNC10L3RgtGLINC/0LXRgNC10YfQuNGB
0LvQtdC90LjQuSIpOyB9CisgICAgIAorICAgICAKIH07CiAKICNlbmRpZgo=
</data>        

          </attachment>
    </bug>

</bugzilla>