<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>199746</bug_id>
          
          <creation_ts>2019-07-11 21:55:18 -0700</creation_ts>
          <short_desc>Add API to get all the dependencies of a given JSScript</short_desc>
          <delta_ts>2019-07-12 15:16:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1552362</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-11 21:55:18 -0700</bug_when>
    <thetext>Add API to get all the dependencies of a given JSScript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552363</commentid>
    <comment_count>1</comment_count>
      <attachid>373997</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-11 22:05:21 -0700</bug_when>
    <thetext>Created attachment 373997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552364</commentid>
    <comment_count>2</comment_count>
      <attachid>373998</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-11 22:06:32 -0700</bug_when>
    <thetext>Created attachment 373998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552365</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-11 22:07:58 -0700</bug_when>
    <thetext>rdar://problem/51768389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552366</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-11 22:08:02 -0700</bug_when>
    <thetext>Attachment 373998 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2646:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2672:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2692:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2712:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2732:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552375</commentid>
    <comment_count>5</comment_count>
      <attachid>373998</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-12 00:05:10 -0700</bug_when>
    <thetext>Comment on attachment 373998
Patch

Attachment 373998 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12723132

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-dfg-eager-no-cjit-validate-phases
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552456</commentid>
    <comment_count>6</comment_count>
      <attachid>374020</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-12 10:37:47 -0700</bug_when>
    <thetext>Created attachment 374020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552457</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-12 10:39:58 -0700</bug_when>
    <thetext>Attachment 374020 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2646:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2672:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2692:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2712:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2732:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552459</commentid>
    <comment_count>8</comment_count>
      <attachid>374020</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-12 10:53:15 -0700</bug_when>
    <thetext>Comment on attachment 374020
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=374020&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        are at the satify phase but for API simplicity we only provide

satify =&gt; satisfy

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        This patch also fixes an issue where we would allow import specifiers
&gt; +        that didn&apos;t start &quot;./&quot; or &quot;/&quot;.

why is that bad? &quot;foo&quot; just just be &quot;./foo&quot;, right?

&gt; Source/JavaScriptCore/API/JSAPIGlobalObject.mm:72
&gt; +static Expected&lt;URL, String&gt; computeValidImportSpecifier(const URL&amp; base, const String&amp; specifier)

&quot;computeValidImportSpecifier&quot; =&gt; &quot;computeURL&quot;?

&gt; Source/JavaScriptCore/API/JSAPIGlobalObject.mm:79
&gt; +    if (!specifier.startsWith(&apos;/&apos;) &amp;&amp; !specifier.startsWith(&quot;./&quot;) &amp;&amp; !specifier.startsWith(&quot;../&quot;))
&gt; +        return makeUnexpected(makeString(&quot;Module specifier: &quot;_s, specifier, &quot; does not start with \&quot;/\&quot;, \&quot;./\&quot;, or \&quot;../\&quot;.&quot;_s));

I don&apos;t see why this is necessary. See comment in changelog

&gt; Source/JavaScriptCore/API/JSContext.mm:163
&gt; +    JSC::JSArray* result = exec-&gt;lexicalGlobalObject()-&gt;moduleLoader()-&gt;dependencyKeysIfEvaluated(exec, JSC::jsString(&amp;vm, [[script sourceURL] absoluteString]));
&gt; +    if (!result) {

Don&apos;t you want an exception scope for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552462</commentid>
    <comment_count>9</comment_count>
      <attachid>374020</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-12 10:56:45 -0700</bug_when>
    <thetext>Comment on attachment 374020
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=374020&amp;action=review

&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt; +        that didn&apos;t start &quot;./&quot; or &quot;/&quot;.
&gt; 
&gt; why is that bad? &quot;foo&quot; just just be &quot;./foo&quot;, right?

Please describe why we&apos;re doing this? E.g, to be compatible with web. And why the web does it

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        Lastly, this patch makes it so that we copy all scripts in the API/tests/testapiScripts directory so
&gt; +        they don&apos;t have to be individually added to the xcode project.

👍🏼</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552469</commentid>
    <comment_count>10</comment_count>
      <attachid>374020</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-12 11:13:21 -0700</bug_when>
    <thetext>Comment on attachment 374020
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=374020&amp;action=review

&gt;&gt; Source/JavaScriptCore/API/JSContext.mm:163
&gt;&gt; +    if (!result) {
&gt; 
&gt; Don&apos;t you want an exception scope for this?

Uhh, I don&apos;t think there&apos;s any non-internal exceptions that can be thrown right now but maybe it&apos;s good practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552471</commentid>
    <comment_count>11</comment_count>
      <attachid>374023</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-12 11:20:14 -0700</bug_when>
    <thetext>Created attachment 374023
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552561</commentid>
    <comment_count>12</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-12 15:16:01 -0700</bug_when>
    <thetext>Committed r247403: &lt;https://trac.webkit.org/changeset/247403&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373997</attachid>
            <date>2019-07-11 22:05:21 -0700</date>
            <delta_ts>2019-07-11 22:06:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199746-20190711220517.patch</filename>
            <type>text/plain</type>
            <size>53044</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTAwN2JiNzY4MGFlYmFlYWIzZDRjYzQ3MDg3ODVhMDY5MDUzMDBkLi43ZjE1MmY4ZTI2MDk3Nzc5
OWM1ZjhkZmQ4MTM4NWEwNWU1ZTAxNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxOS0wNy0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGdldCBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiBh
IGdpdmVuIEpTU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWV0aG9kIG9ubHkgcmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGlmIHRoZSBt
b2R1bGUgd2FzCisgICAgICAgIGFjdHVhbGx5IGV2YWx1YXRlZC4gVGVjaG5pY2FsbHksIHdlIGtu
b3cgd2hhdCB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGFyZSBhdCB0aGUgc2F0aWZ5IHBoYXNl
IGJ1dCBmb3IgQVBJIHNpbXBsaWNpdHkgd2Ugb25seSBwcm92aWRlCisgICAgICAgIHRoYXQgaW5m
b3JtYXRpb24gaWYgdGhlIG1vZHVsZSBncmFwaCB3YXMgY29tcGxldGUgZW5vdWdoIHRvIGF0Cisg
ICAgICAgIGxlYXN0IHJ1bi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgYW4gaXNz
dWUgd2hlcmUgd2Ugd291bGQgYWxsb3cgaW1wb3J0IHNwZWNpZmllcnMKKyAgICAgICAgdGhhdCBk
aWRuJ3Qgc3RhcnQgIi4vIiBvciAiLyIuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW06CisgICAgICAgIChKU0M6OmNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcik6CisgICAg
ICAgIChKU0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAg
ICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6Cisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IGRlcGVuZGVu
Y3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0Ol0pOgorICAgICAgICAqIEFQSS9KU0NvbnRl
eHRQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTU2NyaXB0Lmg6CisgICAgICAgICogQVBJL3Rl
c3RzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEFQ
SS90ZXN0cy90ZXN0YXBpLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
Lm1tOgorICAgICAgICAodGVzdEZldGNoV2l0aFR3b0N5Y2xlKToKKyAgICAgICAgKHRlc3RGZXRj
aFdpdGhUaHJlZUN5Y2xlKToKKyAgICAgICAgKHRlc3RNb2R1bGVCeXRlY29kZUNhY2hlKToKKyAg
ICAgICAgKCtbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdKToKKyAgICAg
ICAgKC1bSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIGZldGNoTW9kdWxlU2NyaXB0Ol0pOgor
ICAgICAgICAoLVtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgZmluZFNjcmlwdEZvcktleTpd
KToKKyAgICAgICAgKC1bSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIGNvbnRleHQ6ZmV0Y2hN
b2R1bGVGb3JJZGVudGlmaWVyOndpdGhSZXNvbHZlSGFuZGxlcjphbmRSZWplY3RIYW5kbGVyOl0p
OgorICAgICAgICAodGVzdERlcGVuZGVuY2llc0FycmF5KToKKyAgICAgICAgKHRlc3REZXBlbmRl
bmNpZXNFdmFsdWF0aW9uRXJyb3IpOgorICAgICAgICAodGVzdERlcGVuZGVuY2llc1N5bnRheEVy
cm9yKToKKyAgICAgICAgKHRlc3REZXBlbmRlbmNpZXNCYWRJbXBvcnRJZCk6CisgICAgICAgICh0
ZXN0RGVwZW5kZW5jaWVzTWlzc2luZ0ltcG9ydCk6CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQ
SSk6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVz
dHMvYmFkTW9kdWxlSW1wb3J0SWQuanM6IEFkZGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jhci5qczogQWRkZWQuCisgICAgICAgICog
QVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZGVwZW5kZW5jaWVz
RW50cnkuanM6IEFkZGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBl
bmRlbmN5TGlzdFRlc3RzL2Zvby5qczogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvbWlzc2luZ0ltcG9ydC5qczogQWRkZWQuCisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvcmVm
ZXJlbmNlRXJyb3IuanM6IEFkZGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpU2NyaXB0
cy9kZXBlbmRlbmN5TGlzdFRlc3RzL3N5bnRheEVycm9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0
aW5zL01vZHVsZUxvYWRlci5qczoKKyAgICAgICAgKGRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUxvYWRlcjo6ZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZCk6CisgICAgICAgICogcnVu
dGltZS9KU01vZHVsZUxvYWRlci5oOgorCiAyMDE5LTA3LTA4ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1BvaW50ZXIgRXZlbnRzXSBFbmFibGUgb25seSBv
biB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgc3VwcG9ydGVkIGlPUyBmYW1pbHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IDUz
MzIyODAwZjM3MDRjYjdiMzIxOWIxNmY1ZWFmZTJiYjNkMjEwNWYuLjExNjEwOWJiYmViZDllN2Nm
MjYyNGEzOWEzODlmY2Y1OWQzOTUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtNjksNiArNjksMzMgQEAgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKIH07CiAKK3N0YXRp
YyBFeHBlY3RlZDxVUkwsIFN0cmluZz4gY29tcHV0ZVZhbGlkSW1wb3J0U3BlY2lmaWVyKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBzcGVjaWZpZXIpCit7CisgICAgVVJMIGFic29sdXRl
VVJMKFVSTCgpLCBzcGVjaWZpZXIpOworICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybiBhYnNvbHV0ZVVSTDsKKworICAgIGlmICghc3BlY2lmaWVyLnN0YXJ0c1dp
dGgoJy8nKSAmJiAhc3BlY2lmaWVyLnN0YXJ0c1dpdGgoIi4vIikgJiYgIXNwZWNpZmllci5zdGFy
dHNXaXRoKCIuLi8iKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmco
Ik1vZHVsZSBzcGVjaWZpZXI6ICJfcywgc3BlY2lmaWVyLCAiIGRvZXMgbm90IHN0YXJ0IHdpdGgg
XCIvXCIsIFwiLi9cIiwgb3IgXCIuLi9cIi4iX3MpKTsKKworICAgIGlmIChzcGVjaWZpZXIuc3Rh
cnRzV2l0aCgnLycpKSB7CisgICAgICAgIGFic29sdXRlVVJMID0gVVJMKFVSTCh7IH0sICJmaWxl
Oi8vIiksIHNwZWNpZmllcik7CisgICAgICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICByZXR1cm4gYWJzb2x1dGVVUkw7CisgICAgfQorCisgICAgaWYgKGJhc2UgPT0g
VVJMKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQ291bGQgbm90IGRldGVybWlu
ZSB0aGUgYmFzZSBVUkwgZm9yIGxvYWRpbmcuIl9zKTsKKworICAgIGlmICghYmFzZS5pc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJSZWZlcnJlcmlu
ZyBzY3JpcHQncyB1cmwgaXMgbm90IHZhbGlkOiAiX3MsIGJhc2Uuc3RyaW5nKCkpKTsKKworICAg
IGFic29sdXRlVVJMID0gVVJMKGJhc2UsIHNwZWNpZmllcik7CisgICAgaWYgKGFic29sdXRlVVJM
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlVVJMOworICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChtYWtlU3RyaW5nKCJDb3VsZCBub3QgZm9ybSB2YWxpZCBVUkwgZnJvbSBpZGVu
dGlmaWVyIGFuZCBiYXNlLiBUcmllZDoiX3MsIGFic29sdXRlVVJMLnN0cmluZygpKSk7Cit9CisK
IElkZW50aWZpZXIgSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU01vZHVsZUxvYWRlcios
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CkBAIC03NiwyMyArMTAzLDIyIEBAIElkZW50aWZpZXIgSlNBUElHbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0ID09IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGtleS5pc1N0cmluZygpIHx8IGtleS5p
c1N5bWJvbCgpKTsKICAgICBTdHJpbmcgbmFtZSA9ICBrZXkudG9XVEZTdHJpbmcoZXhlYyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAorICAgIFVSTCBiYXNlOwogICAg
IGlmIChKU1N0cmluZyogcmVmZXJyZXJTdHJpbmcgPSBqc0R5bmFtaWNDYXN0PEpTU3RyaW5nKj4o
dm0sIHJlZmVycmVyKSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSByZWZlcnJlclN0cmluZy0+
dmFsdWUoZXhlYyk7Ci0gICAgICAgIFVSTCByZWZlcnJlclVSTCh7IH0sIHZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgVVJMIHJlZmVycmVy
VVJMKHsgfSwgdmFsdWUpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWZlcnJlclVSTC5pc1Zh
bGlkKCkpOwotCi0gICAgICAgIFVSTCB1cmwgPSBVUkwocmVmZXJyZXJVUkwsIG5hbWUpOwotICAg
ICAgICBpZiAodXJsLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIHVybCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMIHVybCA9IFVS
TCh7IH0sIG5hbWUpOwotICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHVybCk7CisgICAgICAgIGJhc2UgPSBX
VEZNb3ZlKHJlZmVycmVyVVJMKTsKICAgICB9CiAKLSAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2Nv
cGUsICJDb3VsZCBub3QgZm9ybSB2YWxpZCBVUkwgZnJvbSBpZGVudGlmaWVyIGFuZCBiYXNlIl9z
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihiYXNlLCBu
YW1lKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIHJlc3VsdC52YWx1ZSgpKTsKKworICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgcmVzdWx0LmVycm9yKCkpKTsKICAgICByZXR1cm4geyB9Owog
fQogCkBAIC0xMjEsMzMgKzE0NywxMiBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZwogICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4Y2VwdGlvbik7CiAgICAgfQogCi0gICAgVVJMIGFic29sdXRlVVJM
KFVSTCgpLCBzcGVjaWZpZXIpOwotICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiBpbXBvcnQoYWJzb2x1dGVVUkwpOwotCi0gICAgaWYgKCFzcGVjaWZpZXIuc3Rh
cnRzV2l0aCgnLycpICYmICFzcGVjaWZpZXIuc3RhcnRzV2l0aCgiLi8iKSAmJiAhc3BlY2lmaWVy
LnN0YXJ0c1dpdGgoIi4uLyIpKQotICAgICAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIk1vZHVsZSBzcGVjaWZpZXI6ICIsIHNwZWNpZmllciwgIiBkb2VzIG5v
dCBzdGFydCB3aXRoIFwiL1wiLCBcIi4vXCIsIG9yIFwiLi4vXCIuIl9zKSkpOwotCi0gICAgaWYg
KHNwZWNpZmllci5zdGFydHNXaXRoKCcvJykpIHsKLSAgICAgICAgYWJzb2x1dGVVUkwgPSBVUkwo
VVJMKHsgfSwgImZpbGU6Ly8iKSwgc3BlY2lmaWVyKTsKLSAgICAgICAgaWYgKGFic29sdXRlVVJM
LmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBpbXBvcnQoYWJzb2x1dGVVUkwpOwotICAg
IH0KLQotICAgIGF1dG8gbm9CYXNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBkZXRlcm1pbmUg
dGhlIGJhc2UgVVJMIGZvciBsb2FkaW5nLiJfczsKLSAgICBpZiAoc291cmNlT3JpZ2luLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmco
bm9CYXNlRXJyb3JNZXNzYWdlLCAiIFJlZmVycmluZyBzY3JpcHQgaGFzIG5vIFVSTC4iX3MpKSk7
Ci0KLSAgICBhdXRvIHJlZmVycmVyID0gc291cmNlT3JpZ2luLnN0cmluZygpOworICAgIFN0cmlu
ZyByZWZlcnJlciA9ICFzb3VyY2VPcmlnaW4uaXNOdWxsKCkgPyBzb3VyY2VPcmlnaW4uc3RyaW5n
KCkgOiBTdHJpbmcoKTsKICAgICBVUkwgYmFzZVVSTChVUkwoKSwgcmVmZXJyZXIpOwotICAgIGlm
ICghYmFzZVVSTC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiByZWplY3QoY3JlYXRlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZyhub0Jhc2VFcnJvck1lc3NhZ2UsICIgUmVmZXJyaW5nIHNjcmlwdCdz
IFVSTCBpcyBub3QgdmFsaWQ6ICJfcywgYmFzZVVSTC5zdHJpbmcoKSkpKTsKLQotICAgIFVSTCB1
cmwoYmFzZVVSTCwgc3BlY2lmaWVyKTsKLSAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiByZWplY3QoY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiY291bGQgbm90IGRl
dGVybWluZSBhIHZhbGlkIFVSTCBmb3IgbW9kdWxlIHNwZWNpZmllci4gVHJpZWQ6ICJfcywgdXJs
LnN0cmluZygpKSkpOwotCi0gICAgcmV0dXJuIGltcG9ydCh1cmwpOworICAgIGF1dG8gcmVzdWx0
ID0gY29tcHV0ZVZhbGlkSW1wb3J0U3BlY2lmaWVyKGJhc2VVUkwsIHNwZWNpZmllcik7CisgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGltcG9ydChyZXN1bHQudmFsdWUoKSk7CisgICAg
cmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihleGVjLCByZXN1bHQuZXJyb3IoKSkpOwogfQogCiBK
U0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2Fk
ZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSwgSlNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KaW5kZXggMDk0YzkzNzFhOGI1ZjhhZTc0MWFhZGI5YWRjYjU2NDhmNGUw
YmFmZS4uNTI1MzAxM2QxMjY5MTlhODRkZjMzYzNkNGI0NzE0MzhlYWFhMzYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE0OCw2ICsxNDgsMjUgQEAKICAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp0b1JlZih2bSwgcmVzdWx0KSBpbkNv
bnRleHQ6c2VsZl07CiB9CiAKKy0gKEpTVmFsdWUgKilkZXBlbmRlbmN5SWRlbnRpZmllcnNGb3JN
b2R1bGVKU1NjcmlwdDooSlNTY3JpcHQgKilzY3JpcHQKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMobV9jb250ZXh0KTsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKworICAgIGlmIChzY3JpcHQudHlwZSAh
PSBrSlNTY3JpcHRUeXBlTW9kdWxlKSB7CisgICAgICAgIHNlbGYuZXhjZXB0aW9uSGFuZGxlcihz
ZWxmLCBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOkAic2NyaXB0IGlzIG5v
dCBhIG1vZHVsZSIgaW5Db250ZXh0OnNlbGZdKTsKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpzZWxmXTsKKyAgICB9CisKKyAgICBKU0M6OkpTQXJy
YXkqIHJlc3VsdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlTG9hZGVyKCkt
PmRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQoZXhlYywgSlNDOjpqc1N0cmluZygmdm0sIFtbc2Ny
aXB0IHNvdXJjZVVSTF0gYWJzb2x1dGVTdHJpbmddKSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAg
ICAgICAgc2VsZi5leGNlcHRpb25IYW5kbGVyKHNlbGYsIFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vy
cm9yRnJvbU1lc3NhZ2U6QCJzY3JpcHQgaGFzIG5vdCBydW4gaW4gY29udGV4dCBvciB3YXMgbm90
IGV2YWx1YXRlZCBzdWNjZXNzZnVsbHkiIGluQ29udGV4dDpzZWxmXSk7CisgICAgICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6c2VsZl07CisgICAgfQorICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKHZtLCByZXN1bHQpIGlu
Q29udGV4dDpzZWxmXTsKK30KKwogLSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFsdWUgKil2YWx1
ZQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhtX2NvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAppbmRleCBmNDY1NmI5Mjlj
NTI4ZjU5NjE0MDUyNjIxNWM1ZjU2MDlmYTdjYzUwLi43NWY1MjZiOTc4MzQxODEyMDgzNDYxMjI4
MmM1MGQzMWNiNzAwNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFByaXZhdGUuaApAQCAtODQsNyArODQsNyBAQAogQHByb3BlcnR5IChzZXR0ZXI9X3NldERlYnVn
Z2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIEpTQ19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQGFic3RyYWN0IFRoZSBkZWxlZ2F0
ZSB0aGUgY29udGV4dCB3aWxsIHVzZSB3aGVuIHRyeWluZyB0byBsb2FkIGEgbW9kdWxlLiBOb3Rl
LCB0aGlzIGRlbGVnYXRlIHdpbGwgYmUgaWdub3JlZCBmb3IgY29udGV4dHMgcmV0dXJuZWQgYnkg
VUlXZWJWaWV3LiAqLwotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxKU01vZHVsZUxv
YWRlckRlbGVnYXRlPiBtb2R1bGVMb2FkZXJEZWxlZ2F0ZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNv
cyhKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMs
IHdlYWspIGlkIDxKU01vZHVsZUxvYWRlckRlbGVnYXRlPiBtb2R1bGVMb2FkZXJEZWxlZ2F0ZSBK
U0NfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKIC8qIQogIEBtZXRo
b2QKQEAgLTk0LDcgKzk0LDE3IEBACiAKICBPdGhlcndpc2UsIGlmIHRoZSBzY3JpcHQgd2FzIGNy
ZWF0ZWQgd2l0aCBrSlNTY3JpcHRUeXBlTW9kdWxlLCB0aGUgbW9kdWxlIHdpbGwgYmUgcnVuIGFz
eW5jaHJvbm91c2x5IGFuZCB3aWxsIHJldHVybiBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiB0aGUg
bW9kdWxlIGFuZCBhbnkgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgYXJlIGxvYWRlZC4gVGhlIG1v
ZHVsZSBsb2FkZXIgd2lsbCB0cmVhdCB0aGUgc2NyaXB0IGFzIGlmIGl0IGhhZCBiZWVuIHJldHVy
bmVkIGZyb20gYSBkZWxlZ2F0ZSBjYWxsIHRvIG1vZHVsZUxvYWRlckRlbGVnYXRlLiBUaGlzIG1p
cnJvcnMgdGhlIEphdmFTY3JpcHQgZHluYW1pYyBpbXBvcnQgb3BlcmF0aW9uLgogICovCi0tIChK
U1ZhbHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQgKilzY3JpcHQ7CisvLyBGSVhNRTog
QmVmb3JlIG1ha2luZyB0aGlzIHB1YmxpYyBuZWVkIHRvIGZpeDogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTcxNAorLSAoSlNWYWx1ZSAqKWV2YWx1YXRlSlNTY3Jp
cHQ6KEpTU2NyaXB0ICopc2NyaXB0IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBHZXQgdGhlIGlkZW50aWZpZXJz
IG9mIHRoZSBtb2R1bGVzIGEgSlNTY3JpcHQgZGVwZW5kcyBvbiBpbiB0aGlzIGNvbnRleHQuCisg
QHBhcmFtIHNjcmlwdCB0aGUgSlNTY3JpcHQgdG8gZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMg
b2YuCisgQHJlc3VsdCBBbiBBcnJheSBjb250YWluaW5nIGFsbCB0aGUgaWRlbnRpZmllcnMgb2Yg
bW9kdWxlcyBzY3JpcHQgZGVwZW5kcyBvbi4KKyBAZGlzY3Vzc2lvbiBJZiB0aGUgcHJvdmlkZWQg
SlNTY3JpcHQgd2FzIG5vdCBjcmVhdGVkIHdpdGgga0pTU2NyaXB0VHlwZU1vZHVsZSwgYW4gZXhj
ZXB0aW9uIHdpbGwgYmUgdGhyb3duLiBBbHNvLCBpZiB0aGUgc2NyaXB0IGhhcyBub3QgYWxyZWFk
eSBiZWVuIGV2YWx1YXRlZCBpbiB0aGlzIGNvbnRleHQgYW4gZXJyb3Igd2lsbCBiZSB0aHJvdy4K
KyAqLworLSAoSlNWYWx1ZSAqKWRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0
OihKU1NjcmlwdCAqKXNjcmlwdCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1NjcmlwdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5oCmluZGV4IGQ1
OWIwYjRmMjllYTYwMmZhMDliOGViY2EzYTI1NWQxNmEzMmUxMjkuLjEyY2NiMDU5M2VmOWQxMTFh
ZGU3YjBhMTQwMTk2OGYxMWFlZjQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNTY3JpcHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
LmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgSlNTY3JpcHRU
eXBlKSB7CiB9OwogCiAKLUpTQ19DTEFTU19BVkFJTEFCTEUobWFjb3MoSlNDX01BQ19UQkEpLCBp
b3MoSlNDX0lPU19UQkEpKQorSlNDX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSkKIEBpbnRlcmZhY2UgSlNTY3JpcHQgOiBOU09iamVjdAogCiAvKiEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlk
ZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24t
b3ZlcnJpZGVzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjNjY2VkMDQ4N2U5
YzBlNmNlZTU3ODA2OTYzOGFjMGRjMmViNzQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS1mdW5jdGlvbi1vdmVycmlkZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0v
LyB0ZXN0YXBpIGZ1bmN0aW9uIG92ZXJyaWRlcyBmb3IgdGVzdGluZy4KLW92ZXJyaWRlICUlJXsg
LyogT3JpZ2luYWwgZjEgKi8gfSUlJQotd2l0aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjEgKi8gfSUl
JQotCi1vdmVycmlkZSAjJCV7Ci0gICAgLy8gT3JpZ2luYWwgZjIKLX0jJCUKLXdpdGggJCQkeyAv
KiBPdmVycmlkZGVuIGYyICovIH0kJCQKLQotb3ZlcnJpZGUgJSUleyAvKiBPcmlnaW5hbCBmMyAq
LyB9JSUlCi13aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmMyAqLyB9JSUlCi0KLW92ZXJyaWRlICUl
JXsKLS8qIE9yaWdpbmFsIGY0ICovCi19JSUlCi13aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmNCAq
LyB9JSUlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZDM3MDFjMjFlMDU4NjZhN2EyMGExYWVmMjJjYjBm
YjI4M2M0ZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMzA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotZnVuY3Rpb24gYmx1ZGdlb25Bcmd1bWVudHMoKSB7IGlmICgwKSBhcmd1bWVudHM7
IHJldHVybiBmdW5jdGlvbiBnKCkge30gfQotaCA9IGJsdWRnZW9uQXJndW1lbnRzKCk7Ci1nYygp
OwotCi12YXIgZmFpbGVkID0gZmFsc2U7Ci1mdW5jdGlvbiBwYXNzKG1zZykKLXsKLSAgICBwcmlu
dCgiUEFTUzogIiArIG1zZywgImdyZWVuIik7Ci19Ci0KLWZ1bmN0aW9uIGZhaWwobXNnKQotewot
ICAgIHByaW50KCJGQUlMOiAiICsgbXNnLCAicmVkIik7Ci0gICAgZmFpbGVkID0gdHJ1ZTsKLX0K
LQotZnVuY3Rpb24gc2hvdWxkQmUoYSwgYikKLXsKLSAgICB2YXIgZXZhbEE7Ci0gICAgdHJ5IHsK
LSAgICAgICAgZXZhbEEgPSBldmFsKGEpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBldmFs
QSA9IGU7Ci0gICAgfQotICAgIAotICAgIGlmIChldmFsQSA9PSBiIHx8IGlzTmFOKGV2YWxBKSAm
JiB0eXBlb2YgZXZhbEEgPT0gJ251bWJlcicgJiYgaXNOYU4oYikgJiYgdHlwZW9mIGIgPT0gJ251
bWJlcicpCi0gICAgICAgIHBhc3MoYSArICIgc2hvdWxkIGJlICIgKyBiICsgIiBhbmQgaXMuIik7
Ci0gICAgZWxzZQotICAgICAgICBmYWlsKGEgKyAiIHNob3VsZCBiZSAiICsgYiArICIgYnV0IGlu
c3RlYWQgaXMgIiArIGV2YWxBICsgIi4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3coYSkK
LXsKLSAgICB2YXIgZXZhbEE7Ci0gICAgdHJ5IHsKLSAgICAgICAgZXZhbChhKTsKLSAgICB9IGNh
dGNoKGUpIHsKLSAgICAgICAgcGFzcyhhICsgIiB0aHJldzogIiArIGUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgZmFpbChhICsgIiBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4i
KTsKLX0KLQotZnVuY3Rpb24gZ2xvYmFsU3RhdGljRnVuY3Rpb24oKQotewotICAgIHJldHVybiA0
OwotfQotCi1zaG91bGRCZSgiZ2xvYmFsU3RhdGljVmFsdWUiLCAzKTsKLXNob3VsZEJlKCJnbG9i
YWxTdGF0aWNGdW5jdGlvbigpIiwgNCk7Ci1zaG91bGRCZSgidGhpcy5nbG9iYWxTdGF0aWNGdW5j
dGlvbigpIiwgNCk7Ci0KLWZ1bmN0aW9uIGdsb2JhbFN0YXRpY0Z1bmN0aW9uMigpIHsKLSAgICBy
ZXR1cm4gMTA7Ci19Ci1zaG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMTApOwot
dGhpcy5nbG9iYWxTdGF0aWNGdW5jdGlvbjIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDIwOyB9Ci1z
aG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMjApOwotc2hvdWxkQmUoInRoaXMu
Z2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMjApOwotCi1mdW5jdGlvbiBpQW1Ob3RBU3RhdGlj
RnVuY3Rpb24oKSB7IHJldHVybiAxMDsgfQotc2hvdWxkQmUoImlBbU5vdEFTdGF0aWNGdW5jdGlv
bigpOyIsIDEwKTsKLXRoaXMuaUFtTm90QVN0YXRpY0Z1bmN0aW9uID0gZnVuY3Rpb24oKSB7IHJl
dHVybiAyMDsgfQotc2hvdWxkQmUoImlBbU5vdEFTdGF0aWNGdW5jdGlvbigpOyIsIDIwKTsKLQot
c2hvdWxkQmUoInR5cGVvZiBNeU9iamVjdCIsICJmdW5jdGlvbiIpOyAvLyBvdXIgb2JqZWN0IGlt
cGxlbWVudHMgJ2NhbGwnCi1NeU9iamVjdC5jYW50RmluZCA9IDE7Ci1zaG91bGRCZSgiTXlPYmpl
Y3QuY2FudEZpbmQiLCB1bmRlZmluZWQpOwotTXlPYmplY3QucmVndWxhclR5cGUgPSAxOwotc2hv
dWxkQmUoIk15T2JqZWN0LnJlZ3VsYXJUeXBlIiwgMSk7Ci1NeU9iamVjdC5hbHdheXNPbmUgPSAy
Owotc2hvdWxkQmUoIk15T2JqZWN0LmFsd2F5c09uZSIsIDEpOwotTXlPYmplY3QuY2FudERlbGV0
ZSA9IDE7Ci1kZWxldGUgTXlPYmplY3QuY2FudERlbGV0ZTsKLXNob3VsZEJlKCJNeU9iamVjdC5j
YW50RGVsZXRlIiwgMSk7Ci1zaG91bGRCZSgiZGVsZXRlIE15T2JqZWN0LnRocm93T25EZWxldGUi
LCAiYW4gZXhjZXB0aW9uIik7Ci1NeU9iamVjdC5jYW50U2V0ID0gMTsKLXNob3VsZEJlKCJNeU9i
amVjdC5jYW50U2V0IiwgdW5kZWZpbmVkKTsKLXNob3VsZEJlKCJNeU9iamVjdC50aHJvd09uR2V0
IiwgImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIk15T2JqZWN0LnRocm93T25TZXQgPSA1Iiwg
ImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIk15T2JqZWN0KCd0aHJvd09uQ2FsbCcpIiwgImFu
IGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIm5ldyBNeU9iamVjdCgndGhyb3dPbkNvbnN0cnVjdCcp
IiwgImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIid0aHJvd09uSGFzSW5zdGFuY2UnIGluc3Rh
bmNlb2YgTXlPYmplY3QiLCAiYW4gZXhjZXB0aW9uIik7Ci0KLU15T2JqZWN0Lm51bGxHZXRGb3J3
YXJkU2V0ID0gMTsKLXNob3VsZEJlKCJNeU9iamVjdC5udWxsR2V0Rm9yd2FyZFNldCIsIDEpOwot
Ci12YXIgZm91bmRNeVByb3BlcnR5TmFtZSA9IGZhbHNlOwotdmFyIGZvdW5kUmVndWxhclR5cGUg
PSBmYWxzZTsKLWZvciAodmFyIHAgaW4gTXlPYmplY3QpIHsKLSAgICBpZiAocCA9PSAibXlQcm9w
ZXJ0eU5hbWUiKQotICAgICAgICBmb3VuZE15UHJvcGVydHlOYW1lID0gdHJ1ZTsKLSAgICBpZiAo
cCA9PSAicmVndWxhclR5cGUiKQotICAgICAgICBmb3VuZFJlZ3VsYXJUeXBlID0gdHJ1ZTsKLX0K
LQotaWYgKGZvdW5kTXlQcm9wZXJ0eU5hbWUpCi0gICAgcGFzcygiTXlPYmplY3QubXlQcm9wZXJ0
eU5hbWUgd2FzIGVudW1lcmF0ZWQiKTsKLWVsc2UKLSAgICBmYWlsKCJNeU9iamVjdC5teVByb3Bl
cnR5TmFtZSB3YXMgbm90IGVudW1lcmF0ZWQiKTsKLQotaWYgKGZvdW5kUmVndWxhclR5cGUpCi0g
ICAgcGFzcygiTXlPYmplY3QucmVndWxhclR5cGUgd2FzIGVudW1lcmF0ZWQiKTsKLWVsc2UKLSAg
ICBmYWlsKCJNeU9iamVjdC5yZWd1bGFyVHlwZSB3YXMgbm90IGVudW1lcmF0ZWQiKTsKLQotdmFy
IGFsd2F5c09uZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15
T2JqZWN0LCAiYWx3YXlzT25lIik7Ci1zaG91bGRCZSgndHlwZW9mIGFsd2F5c09uZURlc2NyaXB0
b3InLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRvci52YWx1ZScsIE15
T2JqZWN0LmFsd2F5c09uZSk7Ci1zaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRvci5jb25maWd1
cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdhbHdheXNPbmVEZXNjcmlwdG9yLmVudW1lcmFibGUn
LCBmYWxzZSk7IC8vIEFjdHVhbGx5IGl0IGlzLgotdmFyIGNhbnRGaW5kRGVzY3JpcHRvciA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJjYW50RmluZCIpOwotc2hv
dWxkQmUoJ3R5cGVvZiBjYW50RmluZERlc2NyaXB0b3InLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgn
Y2FudEZpbmREZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QuY2FudEZpbmQpOwotc2hvdWxkQmUo
J2NhbnRGaW5kRGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdjYW50
RmluZERlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKLXRyeSB7Ci0gICAgLy8gSWYgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgcmV0dXJuZWQgYW4gYWNjZXNzIGRlc2NyaXB0b3IsIHRo
aXMgd291bGRuJ3QgdGhyb3cuCi0gICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihN
eU9iamVjdCwgInRocm93T25HZXQiKTsKLX0gY2F0Y2ggKGUpIHsKLSAgICBwYXNzKCJnZXR0aW5n
IHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgdGhyb3dPbkdldCB0aHJldyBleGNlcHRpb24iKTsKLX0K
LXZhciBteVByb3BlcnR5TmFtZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKE15T2JqZWN0LCAibXlQcm9wZXJ0eU5hbWUiKTsKLXNob3VsZEJlKCd0eXBlb2YgbXlQ
cm9wZXJ0eU5hbWVEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ215UHJvcGVydHlO
YW1lRGVzY3JpcHRvci52YWx1ZScsIE15T2JqZWN0Lm15UHJvcGVydHlOYW1lKTsKLXNob3VsZEJl
KCdteVByb3BlcnR5TmFtZURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7Ci1zaG91bGRC
ZSgnbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7IC8vIEFjdHVh
bGx5IGl0IGlzLgotdHJ5IHsKLSAgICAvLyBpZiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSBy
ZXR1cm5lZCBhbiBhY2Nlc3MgZGVzY3JpcHRvciwgdGhpcyB3b3VsZG4ndCB0aHJvdy4KLSAgICBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAiaGFzUHJvcGVydHlMaWUi
KTsKLX0gY2F0Y2ggKGUpIHsKLSAgICBwYXNzKCJnZXR0aW5nIHByb3BlcnR5IGRlc2NyaXB0b3Ig
b2YgaGFzUHJvcGVydHlMaWUgdGhyZXcgZXhjZXB0aW9uIik7Ci19Ci1zaG91bGRCZSgnT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVjdCwgImRvZXNOb3RFeGlzdCIpJywgdW5k
ZWZpbmVkKTsKLQotbXlPYmplY3QgPSBuZXcgTXlPYmplY3QoKTsKLQotc2hvdWxkQmUoImRlbGV0
ZSBNeU9iamVjdC5yZWd1bGFyVHlwZSIsIHRydWUpOwotc2hvdWxkQmUoIk15T2JqZWN0LnJlZ3Vs
YXJUeXBlIiwgdW5kZWZpbmVkKTsKLXNob3VsZEJlKCJNeU9iamVjdCgwKSIsIDEpOwotc2hvdWxk
QmUoIk15T2JqZWN0KCkiLCB1bmRlZmluZWQpOwotc2hvdWxkQmUoInR5cGVvZiBteU9iamVjdCIs
ICJvYmplY3QiKTsKLXNob3VsZEJlKCJNeU9iamVjdCA/IDEgOiAwIiwgdHJ1ZSk7IC8vIHRvQm9v
bGVhbgotc2hvdWxkQmUoIitNeU9iamVjdCIsIDEpOyAvLyB0b051bWJlcgotc2hvdWxkQmUoIihP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTXlPYmplY3QpKSIsICJbb2JqZWN0IE15T2Jq
ZWN0XSIpOyAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nCi1zaG91bGRCZSgiKE15T2JqZWN0
LnRvU3RyaW5nKCkpIiwgIltvYmplY3QgTXlPYmplY3RdIik7IC8vIHRvU3RyaW5nCi1zaG91bGRC
ZSgiU3RyaW5nKE15T2JqZWN0KSIsICJNeU9iamVjdEFzU3RyaW5nIik7IC8vIHRvU3RyaW5nCi1z
aG91bGRCZSgiTXlPYmplY3QgLSAwIiwgMSk7IC8vIHRvTnVtYmVyCi1zaG91bGRCZSgiTXlPYmpl
Y3QudmFsdWVPZigpIiwgMSk7IC8vIHZhbHVlT2YKLQotc2hvdWxkQmUoInR5cGVvZiBNeUNvbnN0
cnVjdG9yIiwgIm9iamVjdCIpOwotY29uc3RydWN0ZWRPYmplY3QgPSBuZXcgTXlDb25zdHJ1Y3Rv
cigxKTsKLXNob3VsZEJlKCJ0eXBlb2YgY29uc3RydWN0ZWRPYmplY3QiLCAib2JqZWN0Iik7Ci1z
aG91bGRCZSgiY29uc3RydWN0ZWRPYmplY3QudmFsdWUiLCAxKTsKLXNob3VsZEJlKCJteU9iamVj
dCBpbnN0YW5jZW9mIE15T2JqZWN0IiwgdHJ1ZSk7Ci1zaG91bGRCZSgiKG5ldyBPYmplY3QoKSkg
aW5zdGFuY2VvZiBNeU9iamVjdCIsIGZhbHNlKTsKLQotc2hvdWxkVGhyb3coIm5ldyBNeUJhZENv
bnN0cnVjdG9yKCkiKTsKLQotTXlPYmplY3QubnVsbEdldFNldCA9IDE7Ci1zaG91bGRCZSgiTXlP
YmplY3QubnVsbEdldFNldCIsIDEpOwotc2hvdWxkVGhyb3coIk15T2JqZWN0Lm51bGxDYWxsKCki
KTsKLXNob3VsZFRocm93KCJNeU9iamVjdC5oYXNQcm9wZXJ0eUxpZSIpOwotCi1kZXJpdmVkID0g
bmV3IERlcml2ZWQoKTsKLQotc2hvdWxkQmUoImRlcml2ZWQgaW5zdGFuY2VvZiBEZXJpdmVkIiwg
dHJ1ZSk7Ci1zaG91bGRCZSgiZGVyaXZlZCBpbnN0YW5jZW9mIEJhc2UiLCB0cnVlKTsKLQotLy8g
YmFzZSBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMgcmV0dXJuIDEgd2hlbiBjYWxsZWQvZ290dGVu
OyBkZXJpdmVkLCAyCi1zaG91bGRCZSgiZGVyaXZlZC5iYXNlUHJvdG9EdXAoKSIsIDIpOwotc2hv
dWxkQmUoImRlcml2ZWQuYmFzZVByb3RvKCkiLCAxKTsKLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VE
dXAiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VPbmx5IiwgMSk7Ci1zaG91bGRCZSgiZGVy
aXZlZC5wcm90b09ubHkoKSIsIDIpOwotc2hvdWxkQmUoImRlcml2ZWQucHJvdG9EdXAiLCAyKTsK
LXNob3VsZEJlKCJkZXJpdmVkLmRlcml2ZWRPbmx5IiwgMikKLQotc2hvdWxkQmUoImRlcml2ZWQu
YmFzZUhhcmROdWxsKCkiLCB1bmRlZmluZWQpCi0KLS8vIGJhc2UgcHJvcGVydGllcyB0aHJvdyAx
IHdoZW4gc2V0OyBkZXJpdmVkLCAyCi1zaG91bGRCZSgiZGVyaXZlZC5iYXNlRHVwID0gMCIsIDIp
Owotc2hvdWxkQmUoImRlcml2ZWQuYmFzZU9ubHkgPSAwIiwgMSk7Ci1zaG91bGRCZSgiZGVyaXZl
ZC5kZXJpdmVkT25seSA9IDAiLCAyKQotc2hvdWxkQmUoImRlcml2ZWQucHJvdG9EdXAgPSAwIiwg
Mik7Ci0KLWRlcml2ZWQyID0gbmV3IERlcml2ZWQyKCk7Ci0KLXNob3VsZEJlKCJkZXJpdmVkMiBp
bnN0YW5jZW9mIERlcml2ZWQyIiwgdHJ1ZSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIgaW5zdGFuY2Vv
ZiBEZXJpdmVkIiwgdHJ1ZSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIgaW5zdGFuY2VvZiBCYXNlIiwg
dHJ1ZSk7Ci0KLS8vIGJhc2UgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHJldHVybiAxIHdoZW4g
Y2FsbGVkL2dvdHRlbjsgZGVyaXZlZCwgMgotc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VQcm90b0R1
cCgpIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZVByb3RvKCkiLCAxKTsKLXNob3VsZEJl
KCJkZXJpdmVkMi5iYXNlRHVwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZU9ubHkiLCAx
KTsKLXNob3VsZEJlKCJkZXJpdmVkMi5wcm90b09ubHkoKSIsIDIpOwotc2hvdWxkQmUoImRlcml2
ZWQyLnByb3RvRHVwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuZGVyaXZlZE9ubHkiLCAyKQot
Ci0vLyBiYXNlIHByb3BlcnRpZXMgdGhyb3cgMSB3aGVuIHNldDsgZGVyaXZlZCwgMgotc2hvdWxk
QmUoImRlcml2ZWQyLmJhc2VEdXAgPSAwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZU9u
bHkgPSAwIiwgMSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIuZGVyaXZlZE9ubHkgPSAwIiwgMikKLXNo
b3VsZEJlKCJkZXJpdmVkMi5wcm90b0R1cCA9IDAiLCAyKTsKLQotc2hvdWxkQmUoJ09iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImJhc2VQcm90byIpJywgdW5kZWZpbmVk
KTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJi
YXNlUHJvdG9EdXAiKScsIHVuZGVmaW5lZCk7Ci12YXIgYmFzZUR1cERlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJiYXNlRHVwIik7Ci1zaG91bGRC
ZSgndHlwZW9mIGJhc2VEdXBEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ2Jhc2VE
dXBEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5iYXNlRHVwKTsKLXNob3VsZEJlKCdiYXNlRHVw
RGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdiYXNlRHVwRGVzY3Jp
cHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwotdmFyIGJhc2VPbmx5RGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImJhc2VPbmx5Iik7Ci1zaG91bGRC
ZSgndHlwZW9mIGJhc2VPbmx5RGVzY3JpcHRvcicsICJvYmplY3QiKTsKLXNob3VsZEJlKCdiYXNl
T25seURlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVkLmJhc2VPbmx5KTsKLXNob3VsZEJlKCdiYXNl
T25seURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7Ci1zaG91bGRCZSgnYmFzZU9ubHlE
ZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7Ci1zaG91bGRCZSgnT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAicHJvdG9Pbmx5IiknLCB1bmRlZmluZWQpOwotdmFy
IHByb3RvRHVwRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVy
aXZlZCwgInByb3RvRHVwIik7Ci1zaG91bGRCZSgndHlwZW9mIHByb3RvRHVwRGVzY3JpcHRvcics
ICJvYmplY3QiKTsKLXNob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVk
LnByb3RvRHVwKTsKLXNob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3IuY29uZmlndXJhYmxlJywg
dHJ1ZSk7Ci1zaG91bGRCZSgncHJvdG9EdXBEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7
Ci12YXIgZGVyaXZlZE9ubHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihkZXJpdmVkLCAiZGVyaXZlZE9ubHkiKTsKLXNob3VsZEJlKCd0eXBlb2YgZGVyaXZlZE9u
bHlEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ2Rlcml2ZWRPbmx5RGVzY3JpcHRv
ci52YWx1ZScsIGRlcml2ZWQuZGVyaXZlZE9ubHkpOwotc2hvdWxkQmUoJ2Rlcml2ZWRPbmx5RGVz
Y3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdkZXJpdmVkT25seURlc2Ny
aXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKLQotc2hvdWxkQmUoInVuZGVmaW5lZCBpbnN0YW5j
ZW9mIE15T2JqZWN0IiwgZmFsc2UpOwotRXZpbEV4Y2VwdGlvbk9iamVjdC5oYXNJbnN0YW5jZSA9
IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH07Ci1FdmlsRXhjZXB0aW9uT2JqZWN0Ll9fcHJv
dG9fXyA9IHVuZGVmaW5lZDsKLXNob3VsZFRocm93KCJ1bmRlZmluZWQgaW5zdGFuY2VvZiBFdmls
RXhjZXB0aW9uT2JqZWN0Iik7Ci1FdmlsRXhjZXB0aW9uT2JqZWN0Lmhhc0luc3RhbmNlID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTsKLXNob3VsZEJlKCJ1bmRlZmluZWQgaW5zdGFuY2Vv
ZiBFdmlsRXhjZXB0aW9uT2JqZWN0IiwgdHJ1ZSk7Ci0KLUV2aWxFeGNlcHRpb25PYmplY3QudG9O
dW1iZXIgPSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigpOyB9Ci1zaG91bGRUaHJvdygiRXZpbEV4
Y2VwdGlvbk9iamVjdCo1Iik7Ci1FdmlsRXhjZXB0aW9uT2JqZWN0LnRvU3RyaW5nRXhwbGljaXQg
PSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigpOyB9Ci1zaG91bGRUaHJvdygiU3RyaW5nKEV2aWxF
eGNlcHRpb25PYmplY3QpIik7Ci0KLXNob3VsZEJlKCJjb25zb2xlIiwgIltvYmplY3QgQ29uc29s
ZV0iKTsKLXNob3VsZEJlKCJ0eXBlb2YgY29uc29sZS5sb2ciLCAiZnVuY3Rpb24iKTsKLQotc2hv
dWxkQmUoIkVtcHR5T2JqZWN0IiwgIltvYmplY3QgQ2FsbGJhY2tPYmplY3RdIik7Ci0KLWZvciAo
dmFyIGkgPSAwOyBpIDwgNjsgKytpKQotICAgIFByb3BlcnR5Q2F0Y2hhbGxzLnggPSBpOwotc2hv
dWxkQmUoIlByb3BlcnR5Q2F0Y2hhbGxzLngiLCA0KTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCA2
OyArK2kpCi0gICAgdmFyIHggPSBQcm9wZXJ0eUNhdGNoYWxscy54Owotc2hvdWxkQmUoIngiLCBu
dWxsKTsKLXZhciBtYWtlX3Rocm93ID0gJ21ha2VfdGhyb3cnOwotc2hvdWxkVGhyb3coIlByb3Bl
cnR5Q2F0Y2hhbGxzW21ha2VfdGhyb3ddPTEiKTsKLW1ha2VfdGhyb3cgPSAwOwotc2hvdWxkVGhy
b3coIlByb3BlcnR5Q2F0Y2hhbGxzW21ha2VfdGhyb3ddPTEiKTsKLQotZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDsgKytpKSB7Ci0gICAgZm9yICh2YXIgcCBpbiBQcm9wZXJ0eUNhdGNoYWxscykgewot
ICAgICAgICBpZiAocCA9PSAieCIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc2hv
dWxkQmUoInAiLCBpICUgMTApOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLVByb3BlcnR5
Q2F0Y2hhbGxzLl9fcHJvdG9fXyA9IHsgeTogMSB9OwotZm9yICh2YXIgaSA9IDA7IGkgPCA2OyAr
K2kpCi0gICAgdmFyIHkgPSBQcm9wZXJ0eUNhdGNoYWxscy55Owotc2hvdWxkQmUoInkiLCBudWxs
KTsKLQotdmFyIG8gPSB7IF9fcHJvdG9fXzogUHJvcGVydHlDYXRjaGFsbHMgfTsKLWZvciAodmFy
IGkgPSAwOyBpIDwgNjsgKytpKQotICAgIHZhciB6ID0gUHJvcGVydHlDYXRjaGFsbHMuejsKLXNo
b3VsZEJlKCJ6IiwgbnVsbCk7Ci0KLWlmIChmYWlsZWQpCi0gICAgdGhyb3cgIlNvbWUgdGVzdHMg
ZmFpbGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRl
eCAwNmU4ZDJiNzgxNjQxMzNhY2I4ZDk3ZTg5YTNlYWFjNjBmMzUxNDE2Li4zY2E0Y2M5YWZkYWRh
MjY0MzIzMmIyMzAxNDAyNWYzYjY1ZWE5ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0xOTQ2LDcgKzE5NDYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
RmV0Y2hXaXRoVHdvQ3ljbGUoKQogICAgICAgICAgICAgICAgICAgICBlcnJvcjpuaWxdXV07CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKFtpZGVudGlmaWVyIGlzRXF1YWxUb09iamVjdDpAImZpbGU6
Ly8vZm9vLmpzIl0pIHsKICAgICAgICAgICAgICAgICBbcmVzb2x2ZSBjYWxsV2l0aEFyZ3VtZW50
czpAW1tKU1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2NyaXB0VHlwZU1vZHVsZSAKLSAgICAgICAg
ICAgICAgICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBcImRpcmVjdG9yeS9iYXIuanNcIjsgZ2xv
YmFsVGhpcy5yYW4gPSBudWxsOyBleHBvcnQgbGV0IG4gPSBudWxsOyIKKyAgICAgICAgICAgICAg
ICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBcIi4vZGlyZWN0b3J5L2Jhci5qc1wiOyBnbG9iYWxU
aGlzLnJhbiA9IG51bGw7IGV4cG9ydCBsZXQgbiA9IG51bGw7IgogICAgICAgICAgICAgICAgICAg
ICBhbmRTb3VyY2VVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9mb28uanMiXQogICAgICAg
ICAgICAgICAgICAgICBhbmRCeXRlY29kZUNhY2hlOm5pbAogICAgICAgICAgICAgICAgICAgICBp
blZpcnR1YWxNYWNoaW5lOltjb250ZXh0IHZpcnR1YWxNYWNoaW5lXQpAQCAtMTk3Nyw3ICsxOTc3
LDcgQEAgc3RhdGljIHZvaWQgdGVzdEZldGNoV2l0aFRocmVlQ3ljbGUoKQogICAgICAgICAgICAg
ICAgICAgICBlcnJvcjpuaWxdXV07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKFtpZGVudGlmaWVy
IGlzRXF1YWxUb09iamVjdDpAImZpbGU6Ly8vZm9vLmpzIl0pIHsKICAgICAgICAgICAgICAgICBb
cmVzb2x2ZSBjYWxsV2l0aEFyZ3VtZW50czpAW1tKU1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2Ny
aXB0VHlwZU1vZHVsZSAKLSAgICAgICAgICAgICAgICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBc
Im90aGVyRGlyZWN0b3J5L2Jhei5qc1wiOyBleHBvcnQgbGV0IG4gPSBudWxsOyIKKyAgICAgICAg
ICAgICAgICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBcIi4vb3RoZXJEaXJlY3RvcnkvYmF6Lmpz
XCI7IGV4cG9ydCBsZXQgbiA9IG51bGw7IgogICAgICAgICAgICAgICAgICAgICBhbmRTb3VyY2VV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9mb28uanMiXSAKICAgICAgICAgICAgICAgICAg
ICAgYW5kQnl0ZWNvZGVDYWNoZTpuaWwKICAgICAgICAgICAgICAgICAgICAgaW5WaXJ0dWFsTWFj
aGluZTpbY29udGV4dCB2aXJ0dWFsTWFjaGluZV0KQEAgLTIxMDcsNyArMjEwNyw3IEBAIHN0YXRp
YyBOU1VSTCogY2FjaGVGaWxlSW5EYXRhVmF1bHQoTlNTdHJpbmcqIG5hbWUpCiBzdGF0aWMgdm9p
ZCB0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSgpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIE5TU3RyaW5nICpmb29Tb3VyY2UgPSBAImltcG9ydCAnb3RoZXJEaXJlY3RvcnkvYmF6
LmpzJzsgZXhwb3J0IGxldCBuID0gbnVsbDsiOworICAgICAgICBOU1N0cmluZyAqZm9vU291cmNl
ID0gQCJpbXBvcnQgJy4vb3RoZXJEaXJlY3RvcnkvYmF6LmpzJzsgZXhwb3J0IGxldCBuID0gbnVs
bDsiOwogICAgICAgICBOU1N0cmluZyAqYmFyU291cmNlID0gQCJpbXBvcnQgeyBuIH0gZnJvbSAn
Li4vZm9vLmpzJzsgZXhwb3J0IGxldCBmb28gPSAoKSA9PiBuOyI7CiAgICAgICAgIE5TU3RyaW5n
ICpiYXpTb3VyY2UgPSBAImltcG9ydCB7IGZvbyB9IGZyb20gJy4uL2RpcmVjdG9yeS9iYXIuanMn
OyBnbG9iYWxUaGlzLnJhbiA9IG51bGw7IGV4cG9ydCBsZXQgZXhwID0gZm9vKCk7IjsKIApAQCAt
MjQyOCwxNSArMjQyOCwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0Qnl0ZWNvZGVDYWNoZVZhbGlkYXRp
b24oKQogQGludGVyZmFjZSBKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgOiBKU0NvbnRleHQg
PEpTTW9kdWxlTG9hZGVyRGVsZWdhdGU+CiAKICsgKGluc3RhbmNldHlwZSluZXdDb250ZXh0Owor
LSAoSlNTY3JpcHQgKilmZXRjaE1vZHVsZVNjcmlwdDooTlNTdHJpbmcgKilyZWxhdGl2ZVBhdGg7
CiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSB7
CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBKU1NjcmlwdCAqPiAqbV9rZXlU
b1NjcmlwdDsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKW5ld0NvbnRleHQKIHsKICAgICBhdXRvICpy
ZXN1bHQgPSBbW0pTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAg
cmVzdWx0Lm1vZHVsZUxvYWRlckRlbGVnYXRlID0gcmVzdWx0OworICAgIHJlc3VsdC0+bV9rZXlU
b1NjcmlwdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBKU1NjcmlwdCAqPiBh
bGxvY10gaW5pdF07CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ1OSwxOCArMjQ2Myw0
NSBAQCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9TY3JpcHRzKCkKICAgICByZXR1cm4gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpAIi4vdGVzdGFwaVNjcmlwdHMvIiBpc0RpcmVjdG9yeTpZRVMg
cmVsYXRpdmVUb1VSTDpiYXNlXTsKIH0KIAorLSAoSlNTY3JpcHQgKilmZXRjaE1vZHVsZVNjcmlw
dDooTlNTdHJpbmcgKilyZWxhdGl2ZVBhdGgKK3sKKyAgICBhdXRvICpmaWxlUGF0aCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOnJlbGF0aXZlUGF0aCByZWxhdGl2ZVRvVVJMOnJlc29sdmVQYXRoVG9T
Y3JpcHRzKCldOworICAgIGlmIChhdXRvICpzY3JpcHQgPSBbc2VsZiBmaW5kU2NyaXB0Rm9yS2V5
OltmaWxlUGF0aCBhYnNvbHV0ZVN0cmluZ11dKQorICAgICAgICByZXR1cm4gc2NyaXB0OworICAg
IE5TRXJyb3IgKmVycm9yOworICAgIGF1dG8gKnJlc3VsdCA9IFtKU1NjcmlwdCBzY3JpcHRPZlR5
cGU6a0pTU2NyaXB0VHlwZU1vZHVsZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOmZpbGVQYXRo
IHdpdGhTb3VyY2VVUkw6ZmlsZVBhdGggYW5kQnl0ZWNvZGVDYWNoZTpuaWwgaW5WaXJ0dWFsTWFj
aGluZTpbc2VsZiB2aXJ0dWFsTWFjaGluZV0gZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIXJlc3Vs
dCkgeworICAgICAgICBOU0xvZyhAIiVAXG4iLCBlcnJvcik7CisgICAgICAgIENSQVNIKCk7Cisg
ICAgfQorICAgIFttX2tleVRvU2NyaXB0IHNldE9iamVjdDpyZXN1bHQgZm9yS2V5OltmaWxlUGF0
aCBhYnNvbHV0ZVN0cmluZ11dOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKEpTU2NyaXB0
ICopZmluZFNjcmlwdEZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICByZXR1cm4gW21fa2V5
VG9TY3JpcHQgb2JqZWN0Rm9yS2V5OmtleV07Cit9CisKIC0gKHZvaWQpY29udGV4dDooSlNDb250
ZXh0ICopY29udGV4dCBmZXRjaE1vZHVsZUZvcklkZW50aWZpZXI6KEpTVmFsdWUgKilpZGVudGlm
aWVyIHdpdGhSZXNvbHZlSGFuZGxlcjooSlNWYWx1ZSAqKXJlc29sdmUgYW5kUmVqZWN0SGFuZGxl
cjooSlNWYWx1ZSAqKXJlamVjdAogewogICAgIE5TVVJMICpmaWxlUGF0aCA9IFtOU1VSTCBVUkxX
aXRoU3RyaW5nOltpZGVudGlmaWVyIHRvU3RyaW5nXV07CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBmaXggdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTcx
NAorICAgIGlmIChhdXRvICpzY3JpcHQgPSBbc2VsZiBmaW5kU2NyaXB0Rm9yS2V5OltpZGVudGlm
aWVyIHRvU3RyaW5nXV0pIHsKKyAgICAgICAgW3Jlc29sdmUgY2FsbFdpdGhBcmd1bWVudHM6QFtz
Y3JpcHRdXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8qIHNjcmlwdCA9IFtK
U1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2NyaXB0VHlwZU1vZHVsZQogICAgICAgICBtZW1vcnlN
YXBwZWRGcm9tQVNDSUlGaWxlOmZpbGVQYXRoCiAgICAgICAgIHdpdGhTb3VyY2VVUkw6ZmlsZVBh
dGgKICAgICAgICAgYW5kQnl0ZWNvZGVDYWNoZTpuaWwgCiAgICAgICAgIGluVmlydHVhbE1hY2hp
bmU6Y29udGV4dC52aXJ0dWFsTWFjaGluZQogICAgICAgICBlcnJvcjpuaWxdOwotICAgIGlmIChz
Y3JpcHQpCisgICAgaWYgKHNjcmlwdCkgeworICAgICAgICBbbV9rZXlUb1NjcmlwdCBzZXRPYmpl
Y3Q6c2NyaXB0IGZvcktleTpbaWRlbnRpZmllciB0b1N0cmluZ11dOwogICAgICAgICBbcmVzb2x2
ZSBjYWxsV2l0aEFyZ3VtZW50czpAW3NjcmlwdF1dOwotICAgIGVsc2UKKyAgICB9IGVsc2UKICAg
ICAgICAgW3JlamVjdCBjYWxsV2l0aEFyZ3VtZW50czpAW1tKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vy
cm9yRnJvbU1lc3NhZ2U6QCJVbmFibGUgdG8gY3JlYXRlIFNjcmlwdCIgaW5Db250ZXh0OmNvbnRl
eHRdXV07CiB9CiAKQEAgLTI2MDQsNiArMjYzNSwxMTEgQEAgc3RhdGljIHZvaWQgdGVzdEpTU2Ny
aXB0VVJMKCkKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNBcnJheSgp
Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNvbnRleHQgPSBbSlND
b250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAgICAgIEpTU2NyaXB0
ICplbnRyeVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRlbmN5
TGlzdFRlc3RzL2RlcGVuZGVuY2llc0VudHJ5LmpzIl07CisKKyAgICAgICAgSlNWYWx1ZSAqcHJv
bWlzZSA9IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBb
cHJvbWlzZSBpbnZva2VNZXRob2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1ZhbHVlICop
IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIHJhbiBzdWNjZXNzZnVsbHkiLCB0
cnVlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICopIHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAibW9kdWxlIHJhbiBzdWNjZXNzZnVsbHkiLCBmYWxzZSk7CisgICAgICAgIH1dXTsKKworICAg
ICAgICBjaGVja1Jlc3VsdChAImxvb2tpbmcgdXAgdGhlIGVudHJ5IHNjcmlwdCBzaG91bGQgZmlu
ZCB0aGUgc2FtZSBzY3JpcHQgYWdhaW4uIiwgW2NvbnRleHQgZmluZFNjcmlwdEZvcktleTpbZW50
cnlTY3JpcHQuc291cmNlVVJMIGFic29sdXRlU3RyaW5nXV0gPT0gZW50cnlTY3JpcHQpOworCisg
ICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBkZXBlbmRlbmN5SWRlbnRpZmllcnNGb3JNb2R1
bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZXBzIHNo
b3VsZCBiZSBhbiBhcnJheSIsIFtkZXBzIGlzQXJyYXldKTsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJkZXBzIHNob3VsZCBoYXZlIHR3byBlbnRyaWVzIiwgW2RlcHNbQCJsZW5ndGgiXSBpc0VxdWFs
VG9PYmplY3Q6QCgyKV0pOworCisgICAgICAgIGNoZWNrUmVzdWx0KEAiZmlyc3QgZGVwZW5kZW5j
eSBzaG91bGQgYmUgZm9vLmpzIiwgW1tbW2NvbnRleHQgZmV0Y2hNb2R1bGVTY3JpcHQ6QCIuL2Rl
cGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpzIl0gc291cmNlVVJMXSBhYnNvbHV0ZVN0cmluZ10gaXNF
cXVhbDpbZGVwc1tAKDApXSB0b1N0cmluZ11dKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJzZWNv
bmQgZGVwZW5kZW5jeSBzaG91bGQgYmUgYmFyLmpzIiwgW1tbW2NvbnRleHQgZmV0Y2hNb2R1bGVT
Y3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFyLmpzIl0gc291cmNlVVJMXSBhYnNvbHV0
ZVN0cmluZ10gaXNFcXVhbDpbZGVwc1tAKDEpXSB0b1N0cmluZ11dKTsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNFdmFsdWF0aW9uRXJyb3IoKQoreworICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvICpjb250ZXh0ID0gW0pTQ29udGV4dEZpbGVMb2Fk
ZXJEZWxlZ2F0ZSBuZXdDb250ZXh0XTsKKworICAgICAgICBKU1NjcmlwdCAqZW50cnlTY3JpcHQg
PSBbY29udGV4dCBmZXRjaE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9yZWZl
cmVuY2VFcnJvci5qcyJdOworCisgICAgICAgIEpTVmFsdWUgKnByb21pc2UgPSBbY29udGV4dCBl
dmFsdWF0ZUpTU2NyaXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgW3Byb21pc2UgaW52b2tlTWV0
aG9kOkAidGhlbiIgd2l0aEFyZ3VtZW50czpAW14oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChAIm1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgZmFsc2UpOworICAgICAg
ICB9LCBeKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFp
bGVkIHN1Y2Nlc3NmdWxseSIsIHRydWUpOworICAgICAgICB9XV07CisKKyAgICAgICAgYXV0byAq
ZGVwcyA9IFtjb250ZXh0IGRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0OmVu
dHJ5U2NyaXB0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZXBzIHNob3VsZCBiZSBhbiBBcnJh
eSIsIFtkZXBzIGlzQXJyYXldKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJmaXJzdCBkZXBlbmRl
bmN5IHNob3VsZCBiZSBmb28uanMiLCBbW1tbY29udGV4dCBmZXRjaE1vZHVsZVNjcmlwdDpAIi4v
ZGVwZW5kZW5jeUxpc3RUZXN0cy9mb28uanMiXSBzb3VyY2VVUkxdIGFic29sdXRlU3RyaW5nXSBp
c0VxdWFsOltkZXBzW0AoMCldIHRvU3RyaW5nXV0pOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
dGVzdERlcGVuZGVuY2llc1N5bnRheEVycm9yKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgYXV0byAqY29udGV4dCA9IFtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgbmV3
Q29udGV4dF07CisKKyAgICAgICAgSlNTY3JpcHQgKmVudHJ5U2NyaXB0ID0gW2NvbnRleHQgZmV0
Y2hNb2R1bGVTY3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvc3ludGF4RXJyb3IuanMiXTsK
KworICAgICAgICBKU1ZhbHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1NjcmlwdDpl
bnRyeVNjcmlwdF07CisgICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhB
cmd1bWVudHM6QFteKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1
bGUgZmFpbGVkIHN1Y2Nlc3NmdWxseSIsIGZhbHNlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICop
IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHki
LCB0cnVlKTsKKyAgICAgICAgfV1dOworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBk
ZXBlbmRlbmN5SWRlbnRpZmllcnNGb3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiZGVwcyBzaG91bGQgYmUgdW5kZWZpbmVkIiwgW2RlcHMgaXNVbmRl
ZmluZWRdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0aGVyZSBzaG91bGQgYmUgYSBwZW5kaW5n
IGV4Y2VwdGlvbiBvbiB0aGUgY29udGV4dCIsIGNvbnRleHQuZXhjZXB0aW9uKTsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNCYWRJbXBvcnRJZCgpCit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNvbnRleHQgPSBbSlNDb250ZXh0RmlsZUxv
YWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAgICAgIEpTU2NyaXB0ICplbnRyeVNjcmlw
dCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jh
ZE1vZHVsZUltcG9ydElkLmpzIl07CisKKyAgICAgICAgSlNWYWx1ZSAqcHJvbWlzZSA9IFtjb250
ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBbcHJvbWlzZSBpbnZv
a2VNZXRob2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1ZhbHVlICopIHsKKyAgICAgICAg
ICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCBmYWxzZSk7Cisg
ICAgICAgIH0sIF4oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1vZHVs
ZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgdHJ1ZSk7CisgICAgICAgIH1dXTsKKworICAgICAgICBh
dXRvICpkZXBzID0gW2NvbnRleHQgZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9kdWxlSlNTY3Jp
cHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlcHMgc2hvdWxkIGJlIHVu
ZGVmaW5lZCIsIFtkZXBzIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGhl
cmUgc2hvdWxkIGJlIGEgcGVuZGluZyBleGNlcHRpb24gb24gdGhlIGNvbnRleHQiLCBjb250ZXh0
LmV4Y2VwdGlvbik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0RGVwZW5kZW5jaWVzTWlz
c2luZ0ltcG9ydCgpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNv
bnRleHQgPSBbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAg
ICAgIEpTU2NyaXB0ICplbnRyeVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAi
Li9kZXBlbmRlbmN5TGlzdFRlc3RzL21pc3NpbmdJbXBvcnQuanMiXTsKKworICAgICAgICBKU1Zh
bHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1NjcmlwdDplbnRyeVNjcmlwdF07Cisg
ICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhBcmd1bWVudHM6QFteKEpT
VmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFpbGVkIHN1Y2Nl
c3NmdWxseSIsIGZhbHNlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICopIHsKKyAgICAgICAgICAg
IGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCB0cnVlKTsKKyAgICAg
ICAgfV1dOworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBkZXBlbmRlbmN5SWRlbnRp
ZmllcnNGb3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiZGVwcyBzaG91bGQgYmUgdW5kZWZpbmVkIiwgW2RlcHMgaXNVbmRlZmluZWRdKTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJ0aGVyZSBzaG91bGQgYmUgYSBwZW5kaW5nIGV4Y2VwdGlvbiBvbiB0
aGUgY29udGV4dCIsIGNvbnRleHQuZXhjZXB0aW9uKTsKKyAgICB9Cit9CiAKIEBwcm90b2NvbCBU
b1N0cmluZyA8SlNFeHBvcnQ+CiAtIChOU1N0cmluZyAqKXRvU3RyaW5nOwpAQCAtMjcwOCw2ICsy
ODQ0LDEyIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoY29uc3QgY2hhciogZmlsdGVyKQogICAg
IFJVTih0ZXN0TG9hZEJhc2ljRmlsZUxlZ2FjeVNQSSgpKTsKICAgICBSVU4odGVzdExvYWRCYXNp
Y0ZpbGUoKSk7CiAKKyAgICBSVU4odGVzdERlcGVuZGVuY2llc0FycmF5KCkpOworICAgIFJVTih0
ZXN0RGVwZW5kZW5jaWVzU3ludGF4RXJyb3IoKSk7CisgICAgUlVOKHRlc3REZXBlbmRlbmNpZXNF
dmFsdWF0aW9uRXJyb3IoKSk7CisgICAgUlVOKHRlc3REZXBlbmRlbmNpZXNCYWRJbXBvcnRJZCgp
KTsKKyAgICBSVU4odGVzdERlcGVuZGVuY2llc01pc3NpbmdJbXBvcnQoKSk7CisKICAgICBSVU4o
cHJvbWlzZVdpdGhFeGVjdXRvcihSZXNvbHV0aW9uOjpSZXNvbHZlRWFnZXIpKTsKICAgICBSVU4o
cHJvbWlzZVdpdGhFeGVjdXRvcihSZXNvbHV0aW9uOjpSZWplY3RFYWdlcikpOwogICAgIFJVTihw
cm9taXNlV2l0aEV4ZWN1dG9yKFJlc29sdXRpb246OlJlc29sdmVMYXRlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVu
Y3lMaXN0VGVzdHMvYmFkTW9kdWxlSW1wb3J0SWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFkTW9kdWxlSW1w
b3J0SWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY1MDIwODQ0MThhY2RjMjZkNmYxYzUwZDkwNDgyZjUwMTdj
OWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJZC5qcwpA
QCAtMCwwICsxLDMgQEAKKworLy8gVGhpcyBpcyBub3QgYSB2YWxpZCBpZGVudGZpZXIgZm9yIGFu
IGltcG9ydCBzbyBpdCB3aWxsIGZhaWwgdG8gaW1wb3J0LgoraW1wb3J0ICJzZXRodWEiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2Rl
cGVuZGVuY3lMaXN0VGVzdHMvYmFyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jhci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MTBmZmM4ZTlhYmFiNTlmYzRiNzhkYmMwODJhYTBmYzA5YzJhMWIzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRl
bmN5TGlzdFRlc3RzL2Jhci5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgbGV0IGhlbGxvID0gMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlw
dHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9kZXBlbmRlbmNpZXNFbnRyeS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9k
ZXBlbmRlbmNpZXNFbnRyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWNlOTAzYjZhY2NlN2UwYzM3MjA2NDVk
MDU1ZWM1NmYyYWU0MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2RlcGVuZGVuY2ll
c0VudHJ5LmpzCkBAIC0wLDAgKzEsMiBAQAoraW1wb3J0ICIuL2Zvby5qcyI7CitpbXBvcnQgIi4v
YmFyLmpzIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9mb28uanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIyODIxOGE5MzRmMmI5ODE5OTQyZGQ1MTg1YTk5OTc4Y2E5NThkNDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlT
Y3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCBs
ZXQgdGhpbmdzID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9taXNzaW5nSW1wb3J0Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRl
bmN5TGlzdFRlc3RzL21pc3NpbmdJbXBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1MzQ5MWNlYmQ0ODkz
NzA4ZDQyZWMyYjFiNGRmZWE5ODQ2ZWIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9t
aXNzaW5nSW1wb3J0LmpzCkBAIC0wLDAgKzEgQEAKK2ltcG9ydCAiLi9maWxlLXRoYXQtZG9lcy1u
b3QtZXhpc3QuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvcmVmZXJlbmNlRXJyb3IuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lM
aXN0VGVzdHMvcmVmZXJlbmNlRXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1NWMzNzViZWFlZjYzNjI3
YzgwM2ExODUyMDliMzMyNmIwNzA5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9yZWZl
cmVuY2VFcnJvci5qcwpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCAiLi9mb28uanMiOworCit0b3Nl
aHVhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9zeW50YXhFcnJvci5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9z
eW50YXhFcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjQyODQzMjJlM2ZhYmYzODg4ZmI2MzQ3NTc4M2Nl
OTlmNGQ4MzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL3N5bnRheEVycm9yLmpzCkBA
IC0wLDAgKzEsMyBAQAoraW1wb3J0ICIuL2Zvby5qcyI7CisKK3RoZW9hc3V0YXMgdGhlYSB0ZWhs
ciAgZWJzYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2U5N2Q5OGEyZWJjMjdl
NmQxNTkwMWQyYjczMmM2NWM5N2MwN2M2ZC4uODc3NDdiYjI2NWQ4YzM1MjcwYThiNDhjNDc0Njk1
YTRkNjJkYmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OCw3ICs4OTgs
NiBAQAogCQk1MkNEMEY1RDIyNDJGNTY5MDA0QTE4QTUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2
MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTUyQ0Qw
RjVFMjI0MkY1NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk1MkNEMEY2ODIy
NDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNEMEY2NzIyNDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5j
cHAgKi87IH07Ci0JCTUyRDEzMDkxMjIxQ0UxNzYwMDlDODM2QyAvKiBmb28uanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQxMzA4
RjIyMUNFMDNBMDA5QzgzNkMgLyogZm9vLmpzICovOyB9OwogCQk1MkY2QzM1RTFFNzFFQjA4MDA4
MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAvKiBX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovOyB9OwogCQk1MzBBNjZCOTFGQTNFNzhCMDAy
NkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTMtbW0ubW0gKi87IH07CiAJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzMEE2NkI4MUZBM0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSAqLzsg
fTsKQEAgLTEwODIsNyArMTA4MSw2IEBACiAJCTUzOUZCOEJBMUM5OURBN0MwMDk0MEZBMSAvKiBK
U0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi87IH07
CiAJCTUzQjRCRDEyMUY2OEIzMjUwMEQyQkVBMyAvKiBXYXNtT3BzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEg
LyogV2FzbU9wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUzQjYwMUVDMjAzNEI4QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQjYwMUVCMjAzNEI4QzUwMDZCRTY2
NyAvKiBKU0Nhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk1M0MzRDVFNTIxRUNFNzcyMDA4N0ZERkMgLyogYmFzaWMuanMgaW4gQ29weSBTdXBw
b3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0MzRDVFNDIx
RUNFNkNFMDA4N0ZERkMgLyogYmFzaWMuanMgKi87IH07CiAJCTUzQzRGNjZCMjFCMUE0MDkwMDJG
RDAwOSAvKiBKU0FQSUdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNDNEY2NkEyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFs
T2JqZWN0LmggKi87IH07CiAJCTUzQzZGRUVGMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2Rl
T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0M2RkVFRTFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oICovOyB9OwogCQk1
M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQ0E3MzA4MUVBNTMzRDgwMDc2MDQ5RCAv
KiBXYXNtQkJRUGxhbi5oICovOyB9OwpAQCAtMTExMSw3ICsxMTA5LDYgQEAKIAkJNUM0MTk2NjIy
MjcwRTAwMDAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQx
OTY2MTIyNzBERkYzMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21wYXRp
YmlsaXR5LmNwcCAqLzsgfTsKIAkJNUM0RThFOTYxREJFQkU2MjAwMzZGMUZDIC8qIEpTT05QYXJz
ZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwICovOyB9OwogCQk1
RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5
MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwotCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyog
dGVzdGFwaS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9
OwogCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBv
cnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0
ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OwogCQk1REU2RTVCMzBFMTcyOEVDMDAx
ODA0MDcgLyogY3JlYXRlX2hhc2hfdGFibGUgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hf
dGFibGUgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJNjIzQTM3RUMx
Qjg3QTdDMDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkgLyogUmVnaXN0
ZXJNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTI4NywxMCArMTI4NCwxMCBAQAogCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21h
bGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzMwM0ZFQTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAw
N0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87
IH07CiAJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjEzMEVEMTJC
NEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY4OENCMTYwRUQxMkI0RTAw
MUQ2NDkxIC8qIFg4NlJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDkxIC8qIFg4NlJlZ2lzdGVycy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2ODhD
QjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MiAv
KiBYODZfNjRSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBF
RDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2OUEwNzIzMEVEMUNFMzMw
MEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2Rl
R2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3Mjcw
RUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07CiAJCTk2OUEwNzJCMEVEMUNFNjkwMEYx
RjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oICovOyB9
OwpAQCAtMTg4NSw3ICsxODgyLDYgQEAKIAkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJl
Z3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAqLzsgfTsK
IAkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTMxODdCOEIx
NjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQ0I4QjI3MUQyNUJCODUwMDZGMjQ2MyAvKiBG
dW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDQjhCMjUxRDI1QkI2RTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJp
ZGVzVGVzdC5jcHAgKi87IH07Ci0JCUZFQ0I4QjJBMUQyNUNCNUEwMDZGMjQ2MyAvKiB0ZXN0YXBp
LWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2MyAvKiB0ZXN0
YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLzsgfTsKIAkJRkVEMjg3QjIxNUVDOUE1NzAwREE4
MTYxIC8qIExMSW50T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQ5NEYyRjE3
MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjA0
MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CkBAIC0yMDc5LDIwICsyMDc1LDYg
QEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJNURCQjE1MTExMzFEMEIxMzAwNTZB
RDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7Ci0JCQlkc3RQYXRoID0gdGVzdGFw
aVNjcmlwdHM7Ci0JCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7Ci0JCQlmaWxlcyA9ICgKLQkJCQk1
M0MzRDVFNTIxRUNFNzcyMDA4N0ZERkMgLyogYmFzaWMuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlw
dCAqLywKLQkJCQk1MkQxMzA5MTIyMUNFMTc2MDA5QzgzNkMgLyogZm9vLmpzIGluIENvcHkgU3Vw
cG9ydCBTY3JpcHQgKi8sCi0JCQkJRkVDQjhCMkExRDI1Q0I1QTAwNkYyNDYzIC8qIHRlc3RhcGkt
ZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8sCi0JCQkJNURC
QjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlw
dCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkNvcHkgU3VwcG9ydCBTY3JpcHQiOwotCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAJCTVEQkIxNTI0MTMxRDBC
QTEwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC00
MDgyLDEwICs0MDY0LDEwIEBACiAJCTk1QzE4RDNFMEM5MEU3RUYwMEU3MkY3MyAvKiBKU1JldGFp
blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JldGFpblB0ci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyog
TGFiZWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYWJlbFNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5
RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXNzZW1ibGVyQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk2ODhDQjE0
MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWDg2QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2UmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2XzY0UmVnaXN0ZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5OSAvKiBSZWdp
c3RlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5
RiAvKiBYODZBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2
QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2OUEwNzIwMEVEMUNF
MzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjlBMDcyNzBFRDFDRTY5MDBGMUY2ODEg
LyogTGFiZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTAsOSArNzg5Miw5IEBACiAJCQkJRkUxMEFB
RUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLywKIAkJCQk5Njg4Q0IxNDBFRDEy
QjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmggKi8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAw
MTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKKwkJCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTIg
LyogWDg2XzY0UmVnaXN0ZXJzLmggKi8sCiAJCQkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8q
IFg4NkFzc2VtYmxlci5oICovLAogCQkJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZS
ZWdpc3RlcnMuaCAqLywKLQkJCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVn
aXN0ZXJzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGFzc2VtYmxlcjsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC04NjU2LDcgKzg2MzgsNyBAQAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMw
MDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzEx
ODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MjIgLyogQVJNNjRSZWdpc3RlcnMuaCAqLywK
KwkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MjIgLyogQVJNNjRSZWdpc3RlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVn
aXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA5OCw5ICsxMDA4
MCw5IEBACiAJCQkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmll
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQwNDNCRjUwMENGQTYwMyAv
KiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5Njg4Q0IxNjBFRDEy
QjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Njg4
Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTEgLyogWDg2UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LywKLQkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhkLnBsIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzMjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEwMjA4LDcgKzEwMTkwLDcgQEAKIAkJCWJ1aWxkUGhhc2VzID0g
KAogCQkJCTE0QkQ1OUJDMEEzRThGOTAwMEJBRjU5QyAvKiBTb3VyY2VzICovLAogCQkJCTE0QkQ1
OUJEMEEzRThGOTAwMEJBRjU5QyAvKiBGcmFtZXdvcmtzICovLAotCQkJCTVEQkIxNTExMTMxRDBC
MTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovLAorCQkJCTUzNjZGREIyMjJENTQ4
NUIwMEJGOTRBRiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0cyAqLywKIAkJCQk1REFGRDZDRDE0NkI2
QjZFMDBGQkVGQjQgLyogSW5zdGFsbCBTdXBwb3J0IFNjcmlwdCAqLywKIAkJCSk7CiAJCQlidWls
ZFJ1bGVzID0gKApAQCAtMTA1MzksNiArMTA1MjEsMjQgQEAKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJTY3JpcHRzL2NoZWNrLXhjZmlsZWxpc3RzLnNoXG4iOwog
CQl9OworCQk1MzY2RkRCMjIyRDU0ODVCMDBCRjk0QUYgLyogQ29weSBTdXBwb3J0IFNjcmlwdHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlz
dFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJD
b3B5IFN1cHBvcnQgU2NyaXB0cyI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
InJzeW5jIC1yICR7U1JDUk9PVH0vQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzICR7QlVJTFRfUFJP
RFVDVFNfRElSfVxuIjsKKwkJfTsKIAkJNTNCNEJEMDkxRjY4QUY4OTAwRDJCRUEzIC8qIEdlbmVy
YXRlIFVuaWZpZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwppbmRleCAxZWJlMmMwMmI2NGUyYjU3
NGM2ZmMzOTkwZWE3MjBlZTIwM2M3ODg0Li5jNjE1NDNkNWQwMGQxOWJmZjYwNDdjMDE0YzU4MDQw
MjIyNmE2NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXIuanMKQEAgLTM2OSwzICszNjksMjAgQEAgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdEltcG9y
dE1vZHVsZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAgdGhpcy5saW5rQW5kRXZhbHVh
dGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGVO
YW1lc3BhY2VPYmplY3QoZW50cnkubW9kdWxlKTsKIH0KKworZnVuY3Rpb24gZGVwZW5kZW5jeUtl
eXNJZkV2YWx1YXRlZChrZXkpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0IGVudHJ5
ID0gdGhpcy5yZWdpc3RyeS5AZ2V0KGtleSk7CisgICAgaWYgKCFlbnRyeSB8fCAhZW50cnkuZXZh
bHVhdGVkKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIGxldCBkZXBlbmRlbmNpZXMgPSBl
bnRyeS5kZXBlbmRlbmNpZXM7CisgICAgbGV0IGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7
CisgICAgbGV0IHJlc3VsdCA9IG5ldyBAQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBkZXBlbmRlbmNpZXNbaV0u
a2V5OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCA0YzY4YjlmZmQ2MGZhZDgzNDVjMWUx
MGY5YTFjZmE1OTkxNWE1MGM2Li5mYWQ3YzdhYmJhMTAwODY2ZDI2ZGFiODA5YTYzN2YzZDY1OGRh
NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU01vZHVsZUxvYWRlcjo6
c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm1vZHVsCiAgICAgbG9h
ZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgbGlua0FuZEV2YWx1YXRlTW9k
dWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdEltcG9ydE1vZHVsZSAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAzCisgICAgZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZCAgICAgIEpTQnVpbHRpbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgZ2V0TW9k
dWxlTmFtZXNwYWNlT2JqZWN0ICAgICAgIG1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9i
amVjdCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcGFyc2VNb2R1bGUgICAgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CkBAIC0xMjUsNiArMTI2LDI2IEBAIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTW9kdWxlS2V5KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCiAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
PmVtcHR5SWRlbnRpZmllci5pbXBsKCk7CiB9CiAKK0pTQXJyYXkqIEpTTW9kdWxlTG9hZGVyOjpk
ZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3Qq
PihnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVwZW5kZW5jeUtl
eXNJZkV2YWx1YXRlZFB1YmxpY05hbWUoKSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKKworICAgIEpTVmFsdWUg
cmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBh
cmd1bWVudHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCByZXN1bHQpOworfQorCiBKU1Zh
bHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmgKaW5kZXggYmRhNTE0M2Q3NjJiMjdjMDYyNTQ4OTI5MmExOWFkZjMxYjI3ZTlkMS4uZjU0MWE4
Yzc5ZGM3ZTVjYWY1YmJjOGM5NzYzZTg2MzRhZThjMWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCkBAIC04NCw2ICs4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFV0aWxpdHkgZnVuY3Rpb25zLgogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVS
ZWNvcmQpOworICAgIEpTQXJyYXkqIGRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBrZXkpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqLCBWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373998</attachid>
            <date>2019-07-11 22:06:32 -0700</date>
            <delta_ts>2019-07-12 10:37:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199746-20190711220629.patch</filename>
            <type>text/plain</type>
            <size>65490</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTAwN2JiNzY4MGFlYmFlYWIzZDRjYzQ3MDg3ODVhMDY5MDUzMDBkLi4zNjVhMTVjODZmYjIxMDE2
NjYwMDgyNTUyODY4OTg3NjIzMzk0NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxOS0wNy0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGdldCBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiBh
IGdpdmVuIEpTU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWV0aG9kIG9ubHkgcmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGlmIHRoZSBt
b2R1bGUgd2FzCisgICAgICAgIGFjdHVhbGx5IGV2YWx1YXRlZC4gVGVjaG5pY2FsbHksIHdlIGtu
b3cgd2hhdCB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGFyZSBhdCB0aGUgc2F0aWZ5IHBoYXNl
IGJ1dCBmb3IgQVBJIHNpbXBsaWNpdHkgd2Ugb25seSBwcm92aWRlCisgICAgICAgIHRoYXQgaW5m
b3JtYXRpb24gaWYgdGhlIG1vZHVsZSBncmFwaCB3YXMgY29tcGxldGUgZW5vdWdoIHRvIGF0Cisg
ICAgICAgIGxlYXN0IHJ1bi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgYW4gaXNz
dWUgd2hlcmUgd2Ugd291bGQgYWxsb3cgaW1wb3J0IHNwZWNpZmllcnMKKyAgICAgICAgdGhhdCBk
aWRuJ3Qgc3RhcnQgIi4vIiBvciAiLyIuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW06CisgICAgICAgIChKU0M6OmNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcik6CisgICAg
ICAgIChKU0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAg
ICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6Cisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IGRlcGVuZGVu
Y3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0Ol0pOgorICAgICAgICAqIEFQSS9KU0NvbnRl
eHRQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTU2NyaXB0Lmg6CisgICAgICAgICogQVBJL3Rl
c3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0RmV0Y2hXaXRoVHdvQ3ljbGUpOgorICAgICAg
ICAodGVzdEZldGNoV2l0aFRocmVlQ3ljbGUpOgorICAgICAgICAodGVzdE1vZHVsZUJ5dGVjb2Rl
Q2FjaGUpOgorICAgICAgICAoK1tKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgbmV3Q29udGV4
dF0pOgorICAgICAgICAoLVtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgZmV0Y2hNb2R1bGVT
Y3JpcHQ6XSk6CisgICAgICAgICgtW0pTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSBmaW5kU2Ny
aXB0Rm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgY29u
dGV4dDpmZXRjaE1vZHVsZUZvcklkZW50aWZpZXI6d2l0aFJlc29sdmVIYW5kbGVyOmFuZFJlamVj
dEhhbmRsZXI6XSk6CisgICAgICAgICh0ZXN0RGVwZW5kZW5jaWVzQXJyYXkpOgorICAgICAgICAo
dGVzdERlcGVuZGVuY2llc0V2YWx1YXRpb25FcnJvcik6CisgICAgICAgICh0ZXN0RGVwZW5kZW5j
aWVzU3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdERlcGVuZGVuY2llc0JhZEltcG9ydElkKToK
KyAgICAgICAgKHRlc3REZXBlbmRlbmNpZXNNaXNzaW5nSW1wb3J0KToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5k
ZW5jeUxpc3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJZC5qczogQWRkZWQuCisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFyLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9k
ZXBlbmRlbmNpZXNFbnRyeS5qczogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlT
Y3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpzOiBBZGRlZC4KKyAgICAgICAgKiBBUEkv
dGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9taXNzaW5nSW1wb3J0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxp
c3RUZXN0cy9yZWZlcmVuY2VFcnJvci5qczogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rl
c3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvc3ludGF4RXJyb3IuanM6IEFkZGVkLgor
ICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJy
aWRlcy5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlT
Y3JpcHRzL3Rlc3RhcGkuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkuanMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXIuanM6CisgICAg
ICAgIChkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmRlcGVuZGVuY3lL
ZXlzSWZFdmFsdWF0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoKKwog
MjAxOS0wNy0wOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtQb2ludGVyIEV2ZW50c10gRW5hYmxlIG9ubHkgb24gdGhlIG1vc3QgcmVjZW50IHZlcnNpb24g
b2YgdGhlIHN1cHBvcnRlZCBpT1MgZmFtaWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCA1MzMyMjgwMGYzNzA0Y2I3YjMyMTliMTZmNWVh
ZmUyYmIzZDIxMDVmLi4xMTYxMDliYmJlYmQ5ZTdjZjI2MjRhMzlhMzg5ZmNmNTlkMzk1MjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAg
LTY5LDYgKzY5LDMzIEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFs
T2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIsIC8vIGlu
c3RhbnRpYXRlU3RyZWFtaW5nCiB9OwogCitzdGF0aWMgRXhwZWN0ZWQ8VVJMLCBTdHJpbmc+IGNv
bXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYg
c3BlY2lmaWVyKQoreworICAgIFVSTCBhYnNvbHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKKyAg
ICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVVUkw7
CisKKyAgICBpZiAoIXNwZWNpZmllci5zdGFydHNXaXRoKCcvJykgJiYgIXNwZWNpZmllci5zdGFy
dHNXaXRoKCIuLyIpICYmICFzcGVjaWZpZXIuc3RhcnRzV2l0aCgiLi4vIikpCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJNb2R1bGUgc3BlY2lmaWVyOiAiX3MsIHNw
ZWNpZmllciwgIiBkb2VzIG5vdCBzdGFydCB3aXRoIFwiL1wiLCBcIi4vXCIsIG9yIFwiLi4vXCIu
Il9zKSk7CisKKyAgICBpZiAoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSkgeworICAgICAgICBh
YnNvbHV0ZVVSTCA9IFVSTChVUkwoeyB9LCAiZmlsZTovLyIpLCBzcGVjaWZpZXIpOworICAgICAg
ICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGFic29sdXRl
VVJMOworICAgIH0KKworICAgIGlmIChiYXNlID09IFVSTCgpKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGJhc2UgVVJMIGZvciBsb2FkaW5n
LiJfcyk7CisKKyAgICBpZiAoIWJhc2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQobWFrZVN0cmluZygiUmVmZXJyZXJpbmcgc2NyaXB0J3MgdXJsIGlzIG5vdCB2YWxp
ZDogIl9zLCBiYXNlLnN0cmluZygpKSk7CisKKyAgICBhYnNvbHV0ZVVSTCA9IFVSTChiYXNlLCBz
cGVjaWZpZXIpOworICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
biBhYnNvbHV0ZVVSTDsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiQ291
bGQgbm90IGZvcm0gdmFsaWQgVVJMIGZyb20gaWRlbnRpZmllciBhbmQgYmFzZS4gVHJpZWQ6Il9z
LCBhYnNvbHV0ZVVSTC5zdHJpbmcoKSkpOworfQorCiBJZGVudGlmaWVyIEpTQVBJR2xvYmFsT2Jq
ZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSByZWZl
cnJlciwgSlNWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtNzYsMjMgKzEw
MywyMiBAQCBJZGVudGlmaWVyIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAg
IEFTU0VSVChrZXkuaXNTdHJpbmcoKSB8fCBrZXkuaXNTeW1ib2woKSk7CiAgICAgU3RyaW5nIG5h
bWUgPSAga2V5LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKKyAgICBVUkwgYmFzZTsKICAgICBpZiAoSlNTdHJpbmcqIHJlZmVycmVyU3Ry
aW5nID0ganNEeW5hbWljQ2FzdDxKU1N0cmluZyo+KHZtLCByZWZlcnJlcikpIHsKICAgICAgICAg
U3RyaW5nIHZhbHVlID0gcmVmZXJyZXJTdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgICAgICBVUkwg
cmVmZXJyZXJVUkwoeyB9LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgIFVSTCByZWZlcnJlclVSTCh7IH0sIHZhbHVlKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocmVmZXJyZXJVUkwuaXNWYWxpZCgpKTsKLQotICAgICAgICBVUkwgdXJs
ID0gVVJMKHJlZmVycmVyVVJMLCBuYW1lKTsKLSAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB1cmwpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFVSTCB1cmwgPSBVUkwoeyB9LCBuYW1lKTsKLSAgICAgICAgaWYg
KHVybC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCB1cmwpOworICAgICAgICBiYXNlID0gV1RGTW92ZShyZWZlcnJlclVSTCk7CiAgICAg
fQogCi0gICAgdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiQ291bGQgbm90IGZvcm0gdmFsaWQg
VVJMIGZyb20gaWRlbnRpZmllciBhbmQgYmFzZSJfcyk7CisgICAgYXV0byByZXN1bHQgPSBjb21w
dXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoYmFzZSwgbmFtZSk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZXN1bHQudmFsdWUoKSk7
CisKKyAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIHJlc3Vs
dC5lcnJvcigpKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTIxLDMzICsxNDcsMTIgQEAg
SlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBvcnRN
b2R1bGUoSlNHbG9iYWxPYmplY3QqIGcKICAgICAgICAgcmV0dXJuIHJlamVjdChleGNlcHRpb24p
OwogICAgIH0KIAotICAgIFVSTCBhYnNvbHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKLSAgICBp
ZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gaW1wb3J0KGFic29sdXRl
VVJMKTsKLQotICAgIGlmICghc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSAmJiAhc3BlY2lmaWVy
LnN0YXJ0c1dpdGgoIi4vIikgJiYgIXNwZWNpZmllci5zdGFydHNXaXRoKCIuLi8iKSkKLSAgICAg
ICAgcmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJNb2R1bGUgc3Bl
Y2lmaWVyOiAiLCBzcGVjaWZpZXIsICIgZG9lcyBub3Qgc3RhcnQgd2l0aCBcIi9cIiwgXCIuL1wi
LCBvciBcIi4uL1wiLiJfcykpKTsKLQotICAgIGlmIChzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycp
KSB7Ci0gICAgICAgIGFic29sdXRlVVJMID0gVVJMKFVSTCh7IH0sICJmaWxlOi8vIiksIHNwZWNp
Zmllcik7Ci0gICAgICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gaW1wb3J0KGFic29sdXRlVVJMKTsKLSAgICB9Ci0KLSAgICBhdXRvIG5vQmFzZUVycm9y
TWVzc2FnZSA9ICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBmb3IgbG9hZGluZy4i
X3M7Ci0gICAgaWYgKHNvdXJjZU9yaWdpbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHJlamVj
dChjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKG5vQmFzZUVycm9yTWVzc2FnZSwgIiBSZWZl
cnJpbmcgc2NyaXB0IGhhcyBubyBVUkwuIl9zKSkpOwotCi0gICAgYXV0byByZWZlcnJlciA9IHNv
dXJjZU9yaWdpbi5zdHJpbmcoKTsKKyAgICBTdHJpbmcgcmVmZXJyZXIgPSAhc291cmNlT3JpZ2lu
LmlzTnVsbCgpID8gc291cmNlT3JpZ2luLnN0cmluZygpIDogU3RyaW5nKCk7CiAgICAgVVJMIGJh
c2VVUkwoVVJMKCksIHJlZmVycmVyKTsKLSAgICBpZiAoIWJhc2VVUkwuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcobm9CYXNlRXJy
b3JNZXNzYWdlLCAiIFJlZmVycmluZyBzY3JpcHQncyBVUkwgaXMgbm90IHZhbGlkOiAiX3MsIGJh
c2VVUkwuc3RyaW5nKCkpKSk7Ci0KLSAgICBVUkwgdXJsKGJhc2VVUkwsIHNwZWNpZmllcik7Ci0g
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoImNvdWxkIG5vdCBkZXRlcm1pbmUgYSB2YWxpZCBVUkwgZm9yIG1v
ZHVsZSBzcGVjaWZpZXIuIFRyaWVkOiAiX3MsIHVybC5zdHJpbmcoKSkpKTsKLQotICAgIHJldHVy
biBpbXBvcnQodXJsKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNp
ZmllcihiYXNlVVJMLCBzcGVjaWZpZXIpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVy
biBpbXBvcnQocmVzdWx0LnZhbHVlKCkpOworICAgIHJldHVybiByZWplY3QoY3JlYXRlRXJyb3Io
ZXhlYywgcmVzdWx0LmVycm9yKCkpKTsKIH0KIAogSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xv
YmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUs
IEpTVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDA5NGM5
MzcxYThiNWY4YWU3NDFhYWRiOWFkY2I1NjQ4ZjRlMGJhZmUuLjUyNTMwMTNkMTI2OTE5YTg0ZGYz
M2MzZDRiNDcxNDM4ZWFhYTM2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
Lm1tCkBAIC0xNDgsNiArMTQ4LDI1IEBACiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpT
VmFsdWVSZWY6dG9SZWYodm0sIHJlc3VsdCkgaW5Db250ZXh0OnNlbGZdOwogfQogCistIChKU1Zh
bHVlICopZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9kdWxlSlNTY3JpcHQ6KEpTU2NyaXB0ICop
c2NyaXB0Cit7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKG1fY29udGV4dCk7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CisKKyAgICBpZiAoc2NyaXB0LnR5cGUgIT0ga0pTU2NyaXB0VHlwZU1vZHVsZSkgewor
ICAgICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIoc2VsZiwgW0pTVmFsdWUgdmFsdWVXaXRoTmV3
RXJyb3JGcm9tTWVzc2FnZTpAInNjcmlwdCBpcyBub3QgYSBtb2R1bGUiIGluQ29udGV4dDpzZWxm
XSk7CisgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6
c2VsZl07CisgICAgfQorCisgICAgSlNDOjpKU0FycmF5KiByZXN1bHQgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5kZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVk
KGV4ZWMsIEpTQzo6anNTdHJpbmcoJnZtLCBbW3NjcmlwdCBzb3VyY2VVUkxdIGFic29sdXRlU3Ry
aW5nXSkpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHNlbGYuZXhjZXB0aW9uSGFuZGxl
cihzZWxmLCBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOkAic2NyaXB0IGhh
cyBub3QgcnVuIGluIGNvbnRleHQgb3Igd2FzIG5vdCBldmFsdWF0ZWQgc3VjY2Vzc2Z1bGx5IiBp
bkNvbnRleHQ6c2VsZl0pOworICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZp
bmVkSW5Db250ZXh0OnNlbGZdOworICAgIH0KKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjp0b1JlZih2bSwgcmVzdWx0KSBpbkNvbnRleHQ6c2VsZl07Cit9CisKIC0gKHZv
aWQpc2V0RXhjZXB0aW9uOihKU1ZhbHVlICopdmFsdWUKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMobV9jb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmgKaW5kZXggZjQ2NTZiOTI5YzUyOGY1OTYxNDA1MjYyMTVjNWY1NjA5ZmE3
Y2M1MC4uNzVmNTI2Yjk3ODM0MTgxMjA4MzQ2MTIyODJjNTBkMzFjYjcwMDUwYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKQEAgLTg0LDcgKzg0LDcg
QEAKIEBwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dlclJ1bkxvb3A6KSBDRlJ1bkxvb3BSZWYg
X2RlYnVnZ2VyUnVuTG9vcCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjAp
KTsKIAogLyohIEBhYnN0cmFjdCBUaGUgZGVsZWdhdGUgdGhlIGNvbnRleHQgd2lsbCB1c2Ugd2hl
biB0cnlpbmcgdG8gbG9hZCBhIG1vZHVsZS4gTm90ZSwgdGhpcyBkZWxlZ2F0ZSB3aWxsIGJlIGln
bm9yZWQgZm9yIGNvbnRleHRzIHJldHVybmVkIGJ5IFVJV2ViVmlldy4gKi8KLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrKSBpZCA8SlNNb2R1bGVMb2FkZXJEZWxlZ2F0ZT4gbW9kdWxlTG9hZGVy
RGVsZWdhdGUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3MoSlNDX01BQ19UQkEpLCBpb3MoSlNDX0lP
U19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8SlNNb2R1bGVMb2FkZXJE
ZWxlZ2F0ZT4gbW9kdWxlTG9hZGVyRGVsZWdhdGUgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTUpLCBpb3MoMTMuMCkpOwogCiAvKiEKICBAbWV0aG9kCkBAIC05NCw3ICs5NCwxNyBAQAogCiAg
T3RoZXJ3aXNlLCBpZiB0aGUgc2NyaXB0IHdhcyBjcmVhdGVkIHdpdGgga0pTU2NyaXB0VHlwZU1v
ZHVsZSwgdGhlIG1vZHVsZSB3aWxsIGJlIHJ1biBhc3luY2hyb25vdXNseSBhbmQgd2lsbCByZXR1
cm4gYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gdGhlIG1vZHVsZSBhbmQgYW55IHRyYW5zaXRpdmUg
ZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQuIFRoZSBtb2R1bGUgbG9hZGVyIHdpbGwgdHJlYXQgdGhl
IHNjcmlwdCBhcyBpZiBpdCBoYWQgYmVlbiByZXR1cm5lZCBmcm9tIGEgZGVsZWdhdGUgY2FsbCB0
byBtb2R1bGVMb2FkZXJEZWxlZ2F0ZS4gVGhpcyBtaXJyb3JzIHRoZSBKYXZhU2NyaXB0IGR5bmFt
aWMgaW1wb3J0IG9wZXJhdGlvbi4KICAqLwotLSAoSlNWYWx1ZSAqKWV2YWx1YXRlSlNTY3JpcHQ6
KEpTU2NyaXB0ICopc2NyaXB0OworLy8gRklYTUU6IEJlZm9yZSBtYWtpbmcgdGhpcyBwdWJsaWMg
bmVlZCB0byBmaXg6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3
MTQKKy0gKEpTVmFsdWUgKilldmFsdWF0ZUpTU2NyaXB0OihKU1NjcmlwdCAqKXNjcmlwdCBKU0Nf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CisKKy8qIQorIEBtZXRob2QK
KyBAYWJzdHJhY3QgR2V0IHRoZSBpZGVudGlmaWVycyBvZiB0aGUgbW9kdWxlcyBhIEpTU2NyaXB0
IGRlcGVuZHMgb24gaW4gdGhpcyBjb250ZXh0LgorIEBwYXJhbSBzY3JpcHQgdGhlIEpTU2NyaXB0
IHRvIGRldGVybWluZSB0aGUgZGVwZW5kZW5jaWVzIG9mLgorIEByZXN1bHQgQW4gQXJyYXkgY29u
dGFpbmluZyBhbGwgdGhlIGlkZW50aWZpZXJzIG9mIG1vZHVsZXMgc2NyaXB0IGRlcGVuZHMgb24u
CisgQGRpc2N1c3Npb24gSWYgdGhlIHByb3ZpZGVkIEpTU2NyaXB0IHdhcyBub3QgY3JlYXRlZCB3
aXRoIGtKU1NjcmlwdFR5cGVNb2R1bGUsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4gQWxz
bywgaWYgdGhlIHNjcmlwdCBoYXMgbm90IGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgaW4gdGhpcyBj
b250ZXh0IGFuIGVycm9yIHdpbGwgYmUgdGhyb3cuCisgKi8KKy0gKEpTVmFsdWUgKilkZXBlbmRl
bmN5SWRlbnRpZmllcnNGb3JNb2R1bGVKU1NjcmlwdDooSlNTY3JpcHQgKilzY3JpcHQgSlNDX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHQuaAppbmRleCBkNTliMGI0ZjI5ZWE2MDJmYTA5YjhlYmNhM2Ey
NTVkMTZhMzJlMTI5Li4xMmNjYjA1OTNlZjlkMTExYWRlN2IwYTE0MDE5NjhmMTFhZWY0ODVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIEpTU2NyaXB0VHlwZSkgewogfTsKIAogCi1KU0NfQ0xBU1Nf
QVZBSUxBQkxFKG1hY29zKEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSkKK0pTQ19DTEFT
U19BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpCiBAaW50ZXJmYWNlIEpTU2NyaXB0
IDogTlNPYmplY3QKIAogLyohCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzYzY2NlZDA0ODdlOWMwZTZjZWU1NzgwNjk2MzhhYzBkYzJlYjc0
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLy8gdGVzdGFwaSBmdW5jdGlvbiBvdmVycmlk
ZXMgZm9yIHRlc3RpbmcuCi1vdmVycmlkZSAlJSV7IC8qIE9yaWdpbmFsIGYxICovIH0lJSUKLXdp
dGggJSUleyAvKiBPdmVycmlkZGVuIGYxICovIH0lJSUKLQotb3ZlcnJpZGUgIyQlewotICAgIC8v
IE9yaWdpbmFsIGYyCi19IyQlCi13aXRoICQkJHsgLyogT3ZlcnJpZGRlbiBmMiAqLyB9JCQkCi0K
LW92ZXJyaWRlICUlJXsgLyogT3JpZ2luYWwgZjMgKi8gfSUlJQotd2l0aCAlJSV7IC8qIE92ZXJy
aWRkZW4gZjMgKi8gfSUlJQotCi1vdmVycmlkZSAlJSV7Ci0vKiBPcmlnaW5hbCBmNCAqLwotfSUl
JQotd2l0aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjQgKi8gfSUlJQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
OGQzNzAxYzIxZTA1ODY2YTdhMjBhMWFlZjIyY2IwZmIyODNjNGY2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwNyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIGJsdWRnZW9u
QXJndW1lbnRzKCkgeyBpZiAoMCkgYXJndW1lbnRzOyByZXR1cm4gZnVuY3Rpb24gZygpIHt9IH0K
LWggPSBibHVkZ2VvbkFyZ3VtZW50cygpOwotZ2MoKTsKLQotdmFyIGZhaWxlZCA9IGZhbHNlOwot
ZnVuY3Rpb24gcGFzcyhtc2cpCi17Ci0gICAgcHJpbnQoIlBBU1M6ICIgKyBtc2csICJncmVlbiIp
OwotfQotCi1mdW5jdGlvbiBmYWlsKG1zZykKLXsKLSAgICBwcmludCgiRkFJTDogIiArIG1zZywg
InJlZCIpOwotICAgIGZhaWxlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlKGEsIGIp
Ci17Ci0gICAgdmFyIGV2YWxBOwotICAgIHRyeSB7Ci0gICAgICAgIGV2YWxBID0gZXZhbChhKTsK
LSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgZXZhbEEgPSBlOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoZXZhbEEgPT0gYiB8fCBpc05hTihldmFsQSkgJiYgdHlwZW9mIGV2YWxBID09ICdudW1iZXIn
ICYmIGlzTmFOKGIpICYmIHR5cGVvZiBiID09ICdudW1iZXInKQotICAgICAgICBwYXNzKGEgKyAi
IHNob3VsZCBiZSAiICsgYiArICIgYW5kIGlzLiIpOwotICAgIGVsc2UKLSAgICAgICAgZmFpbChh
ICsgIiBzaG91bGQgYmUgIiArIGIgKyAiIGJ1dCBpbnN0ZWFkIGlzICIgKyBldmFsQSArICIuIik7
Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93KGEpCi17Ci0gICAgdmFyIGV2YWxBOwotICAgIHRy
eSB7Ci0gICAgICAgIGV2YWwoYSk7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHBhc3MoYSAr
ICIgdGhyZXc6ICIgKyBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZhaWwoYSAr
ICIgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIik7Ci19Ci0KLWZ1bmN0aW9uIGdsb2JhbFN0
YXRpY0Z1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gNDsKLX0KLQotc2hvdWxkQmUoImdsb2JhbFN0
YXRpY1ZhbHVlIiwgMyk7Ci1zaG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24oKSIsIDQpOwot
c2hvdWxkQmUoInRoaXMuZ2xvYmFsU3RhdGljRnVuY3Rpb24oKSIsIDQpOwotCi1mdW5jdGlvbiBn
bG9iYWxTdGF0aWNGdW5jdGlvbjIoKSB7Ci0gICAgcmV0dXJuIDEwOwotfQotc2hvdWxkQmUoImds
b2JhbFN0YXRpY0Z1bmN0aW9uMigpOyIsIDEwKTsKLXRoaXMuZ2xvYmFsU3RhdGljRnVuY3Rpb24y
ID0gZnVuY3Rpb24oKSB7IHJldHVybiAyMDsgfQotc2hvdWxkQmUoImdsb2JhbFN0YXRpY0Z1bmN0
aW9uMigpOyIsIDIwKTsKLXNob3VsZEJlKCJ0aGlzLmdsb2JhbFN0YXRpY0Z1bmN0aW9uMigpOyIs
IDIwKTsKLQotZnVuY3Rpb24gaUFtTm90QVN0YXRpY0Z1bmN0aW9uKCkgeyByZXR1cm4gMTA7IH0K
LXNob3VsZEJlKCJpQW1Ob3RBU3RhdGljRnVuY3Rpb24oKTsiLCAxMCk7Ci10aGlzLmlBbU5vdEFT
dGF0aWNGdW5jdGlvbiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMjA7IH0KLXNob3VsZEJlKCJpQW1O
b3RBU3RhdGljRnVuY3Rpb24oKTsiLCAyMCk7Ci0KLXNob3VsZEJlKCJ0eXBlb2YgTXlPYmplY3Qi
LCAiZnVuY3Rpb24iKTsgLy8gb3VyIG9iamVjdCBpbXBsZW1lbnRzICdjYWxsJwotTXlPYmplY3Qu
Y2FudEZpbmQgPSAxOwotc2hvdWxkQmUoIk15T2JqZWN0LmNhbnRGaW5kIiwgdW5kZWZpbmVkKTsK
LU15T2JqZWN0LnJlZ3VsYXJUeXBlID0gMTsKLXNob3VsZEJlKCJNeU9iamVjdC5yZWd1bGFyVHlw
ZSIsIDEpOwotTXlPYmplY3QuYWx3YXlzT25lID0gMjsKLXNob3VsZEJlKCJNeU9iamVjdC5hbHdh
eXNPbmUiLCAxKTsKLU15T2JqZWN0LmNhbnREZWxldGUgPSAxOwotZGVsZXRlIE15T2JqZWN0LmNh
bnREZWxldGU7Ci1zaG91bGRCZSgiTXlPYmplY3QuY2FudERlbGV0ZSIsIDEpOwotc2hvdWxkQmUo
ImRlbGV0ZSBNeU9iamVjdC50aHJvd09uRGVsZXRlIiwgImFuIGV4Y2VwdGlvbiIpOwotTXlPYmpl
Y3QuY2FudFNldCA9IDE7Ci1zaG91bGRCZSgiTXlPYmplY3QuY2FudFNldCIsIHVuZGVmaW5lZCk7
Ci1zaG91bGRCZSgiTXlPYmplY3QudGhyb3dPbkdldCIsICJhbiBleGNlcHRpb24iKTsKLXNob3Vs
ZEJlKCJNeU9iamVjdC50aHJvd09uU2V0ID0gNSIsICJhbiBleGNlcHRpb24iKTsKLXNob3VsZEJl
KCJNeU9iamVjdCgndGhyb3dPbkNhbGwnKSIsICJhbiBleGNlcHRpb24iKTsKLXNob3VsZEJlKCJu
ZXcgTXlPYmplY3QoJ3Rocm93T25Db25zdHJ1Y3QnKSIsICJhbiBleGNlcHRpb24iKTsKLXNob3Vs
ZEJlKCIndGhyb3dPbkhhc0luc3RhbmNlJyBpbnN0YW5jZW9mIE15T2JqZWN0IiwgImFuIGV4Y2Vw
dGlvbiIpOwotCi1NeU9iamVjdC5udWxsR2V0Rm9yd2FyZFNldCA9IDE7Ci1zaG91bGRCZSgiTXlP
YmplY3QubnVsbEdldEZvcndhcmRTZXQiLCAxKTsKLQotdmFyIGZvdW5kTXlQcm9wZXJ0eU5hbWUg
PSBmYWxzZTsKLXZhciBmb3VuZFJlZ3VsYXJUeXBlID0gZmFsc2U7Ci1mb3IgKHZhciBwIGluIE15
T2JqZWN0KSB7Ci0gICAgaWYgKHAgPT0gIm15UHJvcGVydHlOYW1lIikKLSAgICAgICAgZm91bmRN
eVByb3BlcnR5TmFtZSA9IHRydWU7Ci0gICAgaWYgKHAgPT0gInJlZ3VsYXJUeXBlIikKLSAgICAg
ICAgZm91bmRSZWd1bGFyVHlwZSA9IHRydWU7Ci19Ci0KLWlmIChmb3VuZE15UHJvcGVydHlOYW1l
KQotICAgIHBhc3MoIk15T2JqZWN0Lm15UHJvcGVydHlOYW1lIHdhcyBlbnVtZXJhdGVkIik7Ci1l
bHNlCi0gICAgZmFpbCgiTXlPYmplY3QubXlQcm9wZXJ0eU5hbWUgd2FzIG5vdCBlbnVtZXJhdGVk
Iik7Ci0KLWlmIChmb3VuZFJlZ3VsYXJUeXBlKQotICAgIHBhc3MoIk15T2JqZWN0LnJlZ3VsYXJU
eXBlIHdhcyBlbnVtZXJhdGVkIik7Ci1lbHNlCi0gICAgZmFpbCgiTXlPYmplY3QucmVndWxhclR5
cGUgd2FzIG5vdCBlbnVtZXJhdGVkIik7Ci0KLXZhciBhbHdheXNPbmVEZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVjdCwgImFsd2F5c09uZSIpOwotc2hv
dWxkQmUoJ3R5cGVvZiBhbHdheXNPbmVEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUo
J2Fsd2F5c09uZURlc2NyaXB0b3IudmFsdWUnLCBNeU9iamVjdC5hbHdheXNPbmUpOwotc2hvdWxk
QmUoJ2Fsd2F5c09uZURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7Ci1zaG91bGRCZSgn
YWx3YXlzT25lRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOyAvLyBBY3R1YWxseSBpdCBp
cy4KLXZhciBjYW50RmluZERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKE15T2JqZWN0LCAiY2FudEZpbmQiKTsKLXNob3VsZEJlKCd0eXBlb2YgY2FudEZpbmREZXNj
cmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ2NhbnRGaW5kRGVzY3JpcHRvci52YWx1ZScs
IE15T2JqZWN0LmNhbnRGaW5kKTsKLXNob3VsZEJlKCdjYW50RmluZERlc2NyaXB0b3IuY29uZmln
dXJhYmxlJywgdHJ1ZSk7Ci1zaG91bGRCZSgnY2FudEZpbmREZXNjcmlwdG9yLmVudW1lcmFibGUn
LCBmYWxzZSk7Ci10cnkgewotICAgIC8vIElmIGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHJl
dHVybmVkIGFuIGFjY2VzcyBkZXNjcmlwdG9yLCB0aGlzIHdvdWxkbid0IHRocm93LgotICAgIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJ0aHJvd09uR2V0Iik7Ci19
IGNhdGNoIChlKSB7Ci0gICAgcGFzcygiZ2V0dGluZyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9mIHRo
cm93T25HZXQgdGhyZXcgZXhjZXB0aW9uIik7Ci19Ci12YXIgbXlQcm9wZXJ0eU5hbWVEZXNjcmlw
dG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVjdCwgIm15UHJvcGVy
dHlOYW1lIik7Ci1zaG91bGRCZSgndHlwZW9mIG15UHJvcGVydHlOYW1lRGVzY3JpcHRvcicsICJv
YmplY3QiKTsKLXNob3VsZEJlKCdteVByb3BlcnR5TmFtZURlc2NyaXB0b3IudmFsdWUnLCBNeU9i
amVjdC5teVByb3BlcnR5TmFtZSk7Ci1zaG91bGRCZSgnbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZScsIHRydWUpOwotc2hvdWxkQmUoJ215UHJvcGVydHlOYW1lRGVzY3JpcHRv
ci5lbnVtZXJhYmxlJywgZmFsc2UpOyAvLyBBY3R1YWxseSBpdCBpcy4KLXRyeSB7Ci0gICAgLy8g
aWYgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgcmV0dXJuZWQgYW4gYWNjZXNzIGRlc2NyaXB0
b3IsIHRoaXMgd291bGRuJ3QgdGhyb3cuCi0gICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihNeU9iamVjdCwgImhhc1Byb3BlcnR5TGllIik7Ci19IGNhdGNoIChlKSB7Ci0gICAgcGFz
cygiZ2V0dGluZyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9mIGhhc1Byb3BlcnR5TGllIHRocmV3IGV4
Y2VwdGlvbiIpOwotfQotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
TXlPYmplY3QsICJkb2VzTm90RXhpc3QiKScsIHVuZGVmaW5lZCk7Ci0KLW15T2JqZWN0ID0gbmV3
IE15T2JqZWN0KCk7Ci0KLXNob3VsZEJlKCJkZWxldGUgTXlPYmplY3QucmVndWxhclR5cGUiLCB0
cnVlKTsKLXNob3VsZEJlKCJNeU9iamVjdC5yZWd1bGFyVHlwZSIsIHVuZGVmaW5lZCk7Ci1zaG91
bGRCZSgiTXlPYmplY3QoMCkiLCAxKTsKLXNob3VsZEJlKCJNeU9iamVjdCgpIiwgdW5kZWZpbmVk
KTsKLXNob3VsZEJlKCJ0eXBlb2YgbXlPYmplY3QiLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgiTXlP
YmplY3QgPyAxIDogMCIsIHRydWUpOyAvLyB0b0Jvb2xlYW4KLXNob3VsZEJlKCIrTXlPYmplY3Qi
LCAxKTsgLy8gdG9OdW1iZXIKLXNob3VsZEJlKCIoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKE15T2JqZWN0KSkiLCAiW29iamVjdCBNeU9iamVjdF0iKTsgLy8gT2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZwotc2hvdWxkQmUoIihNeU9iamVjdC50b1N0cmluZygpKSIsICJbb2JqZWN0IE15
T2JqZWN0XSIpOyAvLyB0b1N0cmluZwotc2hvdWxkQmUoIlN0cmluZyhNeU9iamVjdCkiLCAiTXlP
YmplY3RBc1N0cmluZyIpOyAvLyB0b1N0cmluZwotc2hvdWxkQmUoIk15T2JqZWN0IC0gMCIsIDEp
OyAvLyB0b051bWJlcgotc2hvdWxkQmUoIk15T2JqZWN0LnZhbHVlT2YoKSIsIDEpOyAvLyB2YWx1
ZU9mCi0KLXNob3VsZEJlKCJ0eXBlb2YgTXlDb25zdHJ1Y3RvciIsICJvYmplY3QiKTsKLWNvbnN0
cnVjdGVkT2JqZWN0ID0gbmV3IE15Q29uc3RydWN0b3IoMSk7Ci1zaG91bGRCZSgidHlwZW9mIGNv
bnN0cnVjdGVkT2JqZWN0IiwgIm9iamVjdCIpOwotc2hvdWxkQmUoImNvbnN0cnVjdGVkT2JqZWN0
LnZhbHVlIiwgMSk7Ci1zaG91bGRCZSgibXlPYmplY3QgaW5zdGFuY2VvZiBNeU9iamVjdCIsIHRy
dWUpOwotc2hvdWxkQmUoIihuZXcgT2JqZWN0KCkpIGluc3RhbmNlb2YgTXlPYmplY3QiLCBmYWxz
ZSk7Ci0KLXNob3VsZFRocm93KCJuZXcgTXlCYWRDb25zdHJ1Y3RvcigpIik7Ci0KLU15T2JqZWN0
Lm51bGxHZXRTZXQgPSAxOwotc2hvdWxkQmUoIk15T2JqZWN0Lm51bGxHZXRTZXQiLCAxKTsKLXNo
b3VsZFRocm93KCJNeU9iamVjdC5udWxsQ2FsbCgpIik7Ci1zaG91bGRUaHJvdygiTXlPYmplY3Qu
aGFzUHJvcGVydHlMaWUiKTsKLQotZGVyaXZlZCA9IG5ldyBEZXJpdmVkKCk7Ci0KLXNob3VsZEJl
KCJkZXJpdmVkIGluc3RhbmNlb2YgRGVyaXZlZCIsIHRydWUpOwotc2hvdWxkQmUoImRlcml2ZWQg
aW5zdGFuY2VvZiBCYXNlIiwgdHJ1ZSk7Ci0KLS8vIGJhc2UgcHJvcGVydGllcyBhbmQgZnVuY3Rp
b25zIHJldHVybiAxIHdoZW4gY2FsbGVkL2dvdHRlbjsgZGVyaXZlZCwgMgotc2hvdWxkQmUoImRl
cml2ZWQuYmFzZVByb3RvRHVwKCkiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VQcm90bygp
IiwgMSk7Ci1zaG91bGRCZSgiZGVyaXZlZC5iYXNlRHVwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZl
ZC5iYXNlT25seSIsIDEpOwotc2hvdWxkQmUoImRlcml2ZWQucHJvdG9Pbmx5KCkiLCAyKTsKLXNo
b3VsZEJlKCJkZXJpdmVkLnByb3RvRHVwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZC5kZXJpdmVk
T25seSIsIDIpCi0KLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VIYXJkTnVsbCgpIiwgdW5kZWZpbmVk
KQotCi0vLyBiYXNlIHByb3BlcnRpZXMgdGhyb3cgMSB3aGVuIHNldDsgZGVyaXZlZCwgMgotc2hv
dWxkQmUoImRlcml2ZWQuYmFzZUR1cCA9IDAiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VP
bmx5ID0gMCIsIDEpOwotc2hvdWxkQmUoImRlcml2ZWQuZGVyaXZlZE9ubHkgPSAwIiwgMikKLXNo
b3VsZEJlKCJkZXJpdmVkLnByb3RvRHVwID0gMCIsIDIpOwotCi1kZXJpdmVkMiA9IG5ldyBEZXJp
dmVkMigpOwotCi1zaG91bGRCZSgiZGVyaXZlZDIgaW5zdGFuY2VvZiBEZXJpdmVkMiIsIHRydWUp
Owotc2hvdWxkQmUoImRlcml2ZWQyIGluc3RhbmNlb2YgRGVyaXZlZCIsIHRydWUpOwotc2hvdWxk
QmUoImRlcml2ZWQyIGluc3RhbmNlb2YgQmFzZSIsIHRydWUpOwotCi0vLyBiYXNlIHByb3BlcnRp
ZXMgYW5kIGZ1bmN0aW9ucyByZXR1cm4gMSB3aGVuIGNhbGxlZC9nb3R0ZW47IGRlcml2ZWQsIDIK
LXNob3VsZEJlKCJkZXJpdmVkMi5iYXNlUHJvdG9EdXAoKSIsIDIpOwotc2hvdWxkQmUoImRlcml2
ZWQyLmJhc2VQcm90bygpIiwgMSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZUR1cCIsIDIpOwot
c2hvdWxkQmUoImRlcml2ZWQyLmJhc2VPbmx5IiwgMSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIucHJv
dG9Pbmx5KCkiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkMi5wcm90b0R1cCIsIDIpOwotc2hvdWxk
QmUoImRlcml2ZWQyLmRlcml2ZWRPbmx5IiwgMikKLQotLy8gYmFzZSBwcm9wZXJ0aWVzIHRocm93
IDEgd2hlbiBzZXQ7IGRlcml2ZWQsIDIKLXNob3VsZEJlKCJkZXJpdmVkMi5iYXNlRHVwID0gMCIs
IDIpOwotc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VPbmx5ID0gMCIsIDEpOwotc2hvdWxkQmUoImRl
cml2ZWQyLmRlcml2ZWRPbmx5ID0gMCIsIDIpCi1zaG91bGRCZSgiZGVyaXZlZDIucHJvdG9EdXAg
PSAwIiwgMik7Ci0KLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRl
cml2ZWQsICJiYXNlUHJvdG8iKScsIHVuZGVmaW5lZCk7Ci1zaG91bGRCZSgnT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAiYmFzZVByb3RvRHVwIiknLCB1bmRlZmluZWQp
OwotdmFyIGJhc2VEdXBEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihkZXJpdmVkLCAiYmFzZUR1cCIpOwotc2hvdWxkQmUoJ3R5cGVvZiBiYXNlRHVwRGVzY3JpcHRv
cicsICJvYmplY3QiKTsKLXNob3VsZEJlKCdiYXNlRHVwRGVzY3JpcHRvci52YWx1ZScsIGRlcml2
ZWQuYmFzZUR1cCk7Ci1zaG91bGRCZSgnYmFzZUR1cERlc2NyaXB0b3IuY29uZmlndXJhYmxlJywg
dHJ1ZSk7Ci1zaG91bGRCZSgnYmFzZUR1cERlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsK
LXZhciBiYXNlT25seURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGRlcml2ZWQsICJiYXNlT25seSIpOwotc2hvdWxkQmUoJ3R5cGVvZiBiYXNlT25seURlc2NyaXB0
b3InLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgnYmFzZU9ubHlEZXNjcmlwdG9yLnZhbHVlJywgZGVy
aXZlZC5iYXNlT25seSk7Ci1zaG91bGRCZSgnYmFzZU9ubHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZScsIHRydWUpOwotc2hvdWxkQmUoJ2Jhc2VPbmx5RGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFs
c2UpOwotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwg
InByb3RvT25seSIpJywgdW5kZWZpbmVkKTsKLXZhciBwcm90b0R1cERlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJwcm90b0R1cCIpOwotc2hvdWxk
QmUoJ3R5cGVvZiBwcm90b0R1cERlc2NyaXB0b3InLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgncHJv
dG9EdXBEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5wcm90b0R1cCk7Ci1zaG91bGRCZSgncHJv
dG9EdXBEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOwotc2hvdWxkQmUoJ3Byb3RvRHVw
RGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwotdmFyIGRlcml2ZWRPbmx5RGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImRlcml2ZWRPbmx5
Iik7Ci1zaG91bGRCZSgndHlwZW9mIGRlcml2ZWRPbmx5RGVzY3JpcHRvcicsICJvYmplY3QiKTsK
LXNob3VsZEJlKCdkZXJpdmVkT25seURlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVkLmRlcml2ZWRP
bmx5KTsKLXNob3VsZEJlKCdkZXJpdmVkT25seURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1
ZSk7Ci1zaG91bGRCZSgnZGVyaXZlZE9ubHlEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7
Ci0KLXNob3VsZEJlKCJ1bmRlZmluZWQgaW5zdGFuY2VvZiBNeU9iamVjdCIsIGZhbHNlKTsKLUV2
aWxFeGNlcHRpb25PYmplY3QuaGFzSW5zdGFuY2UgPSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigp
OyB9OwotRXZpbEV4Y2VwdGlvbk9iamVjdC5fX3Byb3RvX18gPSB1bmRlZmluZWQ7Ci1zaG91bGRU
aHJvdygidW5kZWZpbmVkIGluc3RhbmNlb2YgRXZpbEV4Y2VwdGlvbk9iamVjdCIpOwotRXZpbEV4
Y2VwdGlvbk9iamVjdC5oYXNJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07
Ci1zaG91bGRCZSgidW5kZWZpbmVkIGluc3RhbmNlb2YgRXZpbEV4Y2VwdGlvbk9iamVjdCIsIHRy
dWUpOwotCi1FdmlsRXhjZXB0aW9uT2JqZWN0LnRvTnVtYmVyID0gZnVuY3Rpb24gZigpIHsgcmV0
dXJuIGYoKTsgfQotc2hvdWxkVGhyb3coIkV2aWxFeGNlcHRpb25PYmplY3QqNSIpOwotRXZpbEV4
Y2VwdGlvbk9iamVjdC50b1N0cmluZ0V4cGxpY2l0ID0gZnVuY3Rpb24gZigpIHsgcmV0dXJuIGYo
KTsgfQotc2hvdWxkVGhyb3coIlN0cmluZyhFdmlsRXhjZXB0aW9uT2JqZWN0KSIpOwotCi1zaG91
bGRCZSgiY29uc29sZSIsICJbb2JqZWN0IENvbnNvbGVdIik7Ci1zaG91bGRCZSgidHlwZW9mIGNv
bnNvbGUubG9nIiwgImZ1bmN0aW9uIik7Ci0KLXNob3VsZEJlKCJFbXB0eU9iamVjdCIsICJbb2Jq
ZWN0IENhbGxiYWNrT2JqZWN0XSIpOwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDY7ICsraSkKLSAg
ICBQcm9wZXJ0eUNhdGNoYWxscy54ID0gaTsKLXNob3VsZEJlKCJQcm9wZXJ0eUNhdGNoYWxscy54
IiwgNCk7Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQotICAgIHZhciB4ID0gUHJvcGVy
dHlDYXRjaGFsbHMueDsKLXNob3VsZEJlKCJ4IiwgbnVsbCk7Ci12YXIgbWFrZV90aHJvdyA9ICdt
YWtlX3Rocm93JzsKLXNob3VsZFRocm93KCJQcm9wZXJ0eUNhdGNoYWxsc1ttYWtlX3Rocm93XT0x
Iik7Ci1tYWtlX3Rocm93ID0gMDsKLXNob3VsZFRocm93KCJQcm9wZXJ0eUNhdGNoYWxsc1ttYWtl
X3Rocm93XT0xIik7Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgIGZvciAo
dmFyIHAgaW4gUHJvcGVydHlDYXRjaGFsbHMpIHsKLSAgICAgICAgaWYgKHAgPT0gIngiKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNob3VsZEJlKCJwIiwgaSAlIDEwKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi1Qcm9wZXJ0eUNhdGNoYWxscy5fX3Byb3RvX18gPSB7IHk6
IDEgfTsKLWZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQotICAgIHZhciB5ID0gUHJvcGVydHlD
YXRjaGFsbHMueTsKLXNob3VsZEJlKCJ5IiwgbnVsbCk7Ci0KLXZhciBvID0geyBfX3Byb3RvX186
IFByb3BlcnR5Q2F0Y2hhbGxzIH07Ci1mb3IgKHZhciBpID0gMDsgaSA8IDY7ICsraSkKLSAgICB2
YXIgeiA9IFByb3BlcnR5Q2F0Y2hhbGxzLno7Ci1zaG91bGRCZSgieiIsIG51bGwpOwotCi1pZiAo
ZmFpbGVkKQotICAgIHRocm93ICJTb21lIHRlc3RzIGZhaWxlZCI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggMDZlOGQyYjc4MTY0MTMzYWNiOGQ5N2U4
OWEzZWFhYzYwZjM1MTQxNi4uM2NhNGNjOWFmZGFkYTI2NDMyMzJiMjMwMTQwMjVmM2I2NWVhOWVk
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMTk0
Niw3ICsxOTQ2LDcgQEAgc3RhdGljIHZvaWQgdGVzdEZldGNoV2l0aFR3b0N5Y2xlKCkKICAgICAg
ICAgICAgICAgICAgICAgZXJyb3I6bmlsXV1dOwogICAgICAgICAgICAgfSBlbHNlIGlmIChbaWRl
bnRpZmllciBpc0VxdWFsVG9PYmplY3Q6QCJmaWxlOi8vL2Zvby5qcyJdKSB7CiAgICAgICAgICAg
ICAgICAgW3Jlc29sdmUgY2FsbFdpdGhBcmd1bWVudHM6QFtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBl
OmtKU1NjcmlwdFR5cGVNb2R1bGUgCi0gICAgICAgICAgICAgICAgICAgIHdpdGhTb3VyY2U6QCJp
bXBvcnQgXCJkaXJlY3RvcnkvYmFyLmpzXCI7IGdsb2JhbFRoaXMucmFuID0gbnVsbDsgZXhwb3J0
IGxldCBuID0gbnVsbDsiCisgICAgICAgICAgICAgICAgICAgIHdpdGhTb3VyY2U6QCJpbXBvcnQg
XCIuL2RpcmVjdG9yeS9iYXIuanNcIjsgZ2xvYmFsVGhpcy5yYW4gPSBudWxsOyBleHBvcnQgbGV0
IG4gPSBudWxsOyIKICAgICAgICAgICAgICAgICAgICAgYW5kU291cmNlVVJMOltOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6QCIvZm9vLmpzIl0KICAgICAgICAgICAgICAgICAgICAgYW5kQnl0ZWNvZGVD
YWNoZTpuaWwKICAgICAgICAgICAgICAgICAgICAgaW5WaXJ0dWFsTWFjaGluZTpbY29udGV4dCB2
aXJ0dWFsTWFjaGluZV0KQEAgLTE5NzcsNyArMTk3Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RGZXRj
aFdpdGhUaHJlZUN5Y2xlKCkKICAgICAgICAgICAgICAgICAgICAgZXJyb3I6bmlsXV1dOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChbaWRlbnRpZmllciBpc0VxdWFsVG9PYmplY3Q6QCJmaWxlOi8v
L2Zvby5qcyJdKSB7CiAgICAgICAgICAgICAgICAgW3Jlc29sdmUgY2FsbFdpdGhBcmd1bWVudHM6
QFtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1NjcmlwdFR5cGVNb2R1bGUgCi0gICAgICAgICAg
ICAgICAgICAgIHdpdGhTb3VyY2U6QCJpbXBvcnQgXCJvdGhlckRpcmVjdG9yeS9iYXouanNcIjsg
ZXhwb3J0IGxldCBuID0gbnVsbDsiCisgICAgICAgICAgICAgICAgICAgIHdpdGhTb3VyY2U6QCJp
bXBvcnQgXCIuL290aGVyRGlyZWN0b3J5L2Jhei5qc1wiOyBleHBvcnQgbGV0IG4gPSBudWxsOyIK
ICAgICAgICAgICAgICAgICAgICAgYW5kU291cmNlVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
QCIvZm9vLmpzIl0gCiAgICAgICAgICAgICAgICAgICAgIGFuZEJ5dGVjb2RlQ2FjaGU6bmlsCiAg
ICAgICAgICAgICAgICAgICAgIGluVmlydHVhbE1hY2hpbmU6W2NvbnRleHQgdmlydHVhbE1hY2hp
bmVdCkBAIC0yMTA3LDcgKzIxMDcsNyBAQCBzdGF0aWMgTlNVUkwqIGNhY2hlRmlsZUluRGF0YVZh
dWx0KE5TU3RyaW5nKiBuYW1lKQogc3RhdGljIHZvaWQgdGVzdE1vZHVsZUJ5dGVjb2RlQ2FjaGUo
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBOU1N0cmluZyAqZm9vU291cmNl
ID0gQCJpbXBvcnQgJ290aGVyRGlyZWN0b3J5L2Jhei5qcyc7IGV4cG9ydCBsZXQgbiA9IG51bGw7
IjsKKyAgICAgICAgTlNTdHJpbmcgKmZvb1NvdXJjZSA9IEAiaW1wb3J0ICcuL290aGVyRGlyZWN0
b3J5L2Jhei5qcyc7IGV4cG9ydCBsZXQgbiA9IG51bGw7IjsKICAgICAgICAgTlNTdHJpbmcgKmJh
clNvdXJjZSA9IEAiaW1wb3J0IHsgbiB9IGZyb20gJy4uL2Zvby5qcyc7IGV4cG9ydCBsZXQgZm9v
ID0gKCkgPT4gbjsiOwogICAgICAgICBOU1N0cmluZyAqYmF6U291cmNlID0gQCJpbXBvcnQgeyBm
b28gfSBmcm9tICcuLi9kaXJlY3RvcnkvYmFyLmpzJzsgZ2xvYmFsVGhpcy5yYW4gPSBudWxsOyBl
eHBvcnQgbGV0IGV4cCA9IGZvbygpOyI7CiAKQEAgLTI0MjgsMTUgKzI0MjgsMTkgQEAgc3RhdGlj
IHZvaWQgdGVzdEJ5dGVjb2RlQ2FjaGVWYWxpZGF0aW9uKCkKIEBpbnRlcmZhY2UgSlNDb250ZXh0
RmlsZUxvYWRlckRlbGVnYXRlIDogSlNDb250ZXh0IDxKU01vZHVsZUxvYWRlckRlbGVnYXRlPgog
CiArIChpbnN0YW5jZXR5cGUpbmV3Q29udGV4dDsKKy0gKEpTU2NyaXB0ICopZmV0Y2hNb2R1bGVT
Y3JpcHQ6KE5TU3RyaW5nICopcmVsYXRpdmVQYXRoOwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgeworICAgIE5TTXV0YWJsZURpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgSlNTY3JpcHQgKj4gKm1fa2V5VG9TY3JpcHQ7CiB9CiAKICsgKGluc3RhbmNl
dHlwZSluZXdDb250ZXh0CiB7CiAgICAgYXV0byAqcmVzdWx0ID0gW1tKU0NvbnRleHRGaWxlTG9h
ZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgIHJlc3VsdC5tb2R1bGVMb2FkZXJEZWxlZ2F0
ZSA9IHJlc3VsdDsKKyAgICByZXN1bHQtPm1fa2V5VG9TY3JpcHQgPSBbW05TTXV0YWJsZURpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgSlNTY3JpcHQgKj4gYWxsb2NdIGluaXRdOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTI0NTksMTggKzI0NjMsNDUgQEAgc3RhdGljIE5TVVJMICpyZXNvbHZl
UGF0aFRvU2NyaXB0cygpCiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIuL3Rl
c3RhcGlTY3JpcHRzLyIgaXNEaXJlY3Rvcnk6WUVTIHJlbGF0aXZlVG9VUkw6YmFzZV07CiB9CiAK
Ky0gKEpTU2NyaXB0ICopZmV0Y2hNb2R1bGVTY3JpcHQ6KE5TU3RyaW5nICopcmVsYXRpdmVQYXRo
Cit7CisgICAgYXV0byAqZmlsZVBhdGggPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpyZWxhdGl2ZVBh
dGggcmVsYXRpdmVUb1VSTDpyZXNvbHZlUGF0aFRvU2NyaXB0cygpXTsKKyAgICBpZiAoYXV0byAq
c2NyaXB0ID0gW3NlbGYgZmluZFNjcmlwdEZvcktleTpbZmlsZVBhdGggYWJzb2x1dGVTdHJpbmdd
XSkKKyAgICAgICAgcmV0dXJuIHNjcmlwdDsKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBhdXRv
ICpyZXN1bHQgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1NjcmlwdFR5cGVNb2R1bGUgbWVt
b3J5TWFwcGVkRnJvbUFTQ0lJRmlsZTpmaWxlUGF0aCB3aXRoU291cmNlVVJMOmZpbGVQYXRoIGFu
ZEJ5dGVjb2RlQ2FjaGU6bmlsIGluVmlydHVhbE1hY2hpbmU6W3NlbGYgdmlydHVhbE1hY2hpbmVd
IGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgTlNMb2coQCIlQFxu
IiwgZXJyb3IpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKyAgICBbbV9rZXlUb1NjcmlwdCBz
ZXRPYmplY3Q6cmVzdWx0IGZvcktleTpbZmlsZVBhdGggYWJzb2x1dGVTdHJpbmddXTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCistIChKU1NjcmlwdCAqKWZpbmRTY3JpcHRGb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgcmV0dXJuIFttX2tleVRvU2NyaXB0IG9iamVjdEZvcktleTprZXld
OworfQorCiAtICh2b2lkKWNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQgZmV0Y2hNb2R1bGVG
b3JJZGVudGlmaWVyOihKU1ZhbHVlICopaWRlbnRpZmllciB3aXRoUmVzb2x2ZUhhbmRsZXI6KEpT
VmFsdWUgKilyZXNvbHZlIGFuZFJlamVjdEhhbmRsZXI6KEpTVmFsdWUgKilyZWplY3QKIHsKICAg
ICBOU1VSTCAqZmlsZVBhdGggPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbaWRlbnRpZmllciB0b1N0
cmluZ11dOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZml4IHRoaXM6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3MTQKKyAgICBpZiAoYXV0byAqc2NyaXB0ID0g
W3NlbGYgZmluZFNjcmlwdEZvcktleTpbaWRlbnRpZmllciB0b1N0cmluZ11dKSB7CisgICAgICAg
IFtyZXNvbHZlIGNhbGxXaXRoQXJndW1lbnRzOkBbc2NyaXB0XV07CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBhdXRvKiBzY3JpcHQgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1Nj
cmlwdFR5cGVNb2R1bGUKICAgICAgICAgbWVtb3J5TWFwcGVkRnJvbUFTQ0lJRmlsZTpmaWxlUGF0
aAogICAgICAgICB3aXRoU291cmNlVVJMOmZpbGVQYXRoCiAgICAgICAgIGFuZEJ5dGVjb2RlQ2Fj
aGU6bmlsIAogICAgICAgICBpblZpcnR1YWxNYWNoaW5lOmNvbnRleHQudmlydHVhbE1hY2hpbmUK
ICAgICAgICAgZXJyb3I6bmlsXTsKLSAgICBpZiAoc2NyaXB0KQorICAgIGlmIChzY3JpcHQpIHsK
KyAgICAgICAgW21fa2V5VG9TY3JpcHQgc2V0T2JqZWN0OnNjcmlwdCBmb3JLZXk6W2lkZW50aWZp
ZXIgdG9TdHJpbmddXTsKICAgICAgICAgW3Jlc29sdmUgY2FsbFdpdGhBcmd1bWVudHM6QFtzY3Jp
cHRdXTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIFtyZWplY3QgY2FsbFdpdGhBcmd1
bWVudHM6QFtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOkAiVW5hYmxlIHRv
IGNyZWF0ZSBTY3JpcHQiIGluQ29udGV4dDpjb250ZXh0XV1dOwogfQogCkBAIC0yNjA0LDYgKzI2
MzUsMTExIEBAIHN0YXRpYyB2b2lkIHRlc3RKU1NjcmlwdFVSTCgpCiAgICAgfQogfQogCitzdGF0
aWMgdm9pZCB0ZXN0RGVwZW5kZW5jaWVzQXJyYXkoKQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICBhdXRvICpjb250ZXh0ID0gW0pTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSBu
ZXdDb250ZXh0XTsKKworICAgICAgICBKU1NjcmlwdCAqZW50cnlTY3JpcHQgPSBbY29udGV4dCBm
ZXRjaE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9kZXBlbmRlbmNpZXNFbnRy
eS5qcyJdOworCisgICAgICAgIEpTVmFsdWUgKnByb21pc2UgPSBbY29udGV4dCBldmFsdWF0ZUpT
U2NyaXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgW3Byb21pc2UgaW52b2tlTWV0aG9kOkAidGhl
biIgd2l0aEFyZ3VtZW50czpAW14oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3Vs
dChAIm1vZHVsZSByYW4gc3VjY2Vzc2Z1bGx5IiwgdHJ1ZSk7CisgICAgICAgIH0sIF4oSlNWYWx1
ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1vZHVsZSByYW4gc3VjY2Vzc2Z1bGx5
IiwgZmFsc2UpOworICAgICAgICB9XV07CisKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJsb29raW5n
IHVwIHRoZSBlbnRyeSBzY3JpcHQgc2hvdWxkIGZpbmQgdGhlIHNhbWUgc2NyaXB0IGFnYWluLiIs
IFtjb250ZXh0IGZpbmRTY3JpcHRGb3JLZXk6W2VudHJ5U2NyaXB0LnNvdXJjZVVSTCBhYnNvbHV0
ZVN0cmluZ11dID09IGVudHJ5U2NyaXB0KTsKKworICAgICAgICBhdXRvICpkZXBzID0gW2NvbnRl
eHQgZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9kdWxlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOwor
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVwcyBzaG91bGQgYmUgYW4gYXJyYXkiLCBbZGVwcyBp
c0FycmF5XSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVwcyBzaG91bGQgaGF2ZSB0d28gZW50
cmllcyIsIFtkZXBzW0AibGVuZ3RoIl0gaXNFcXVhbFRvT2JqZWN0OkAoMildKTsKKworICAgICAg
ICBjaGVja1Jlc3VsdChAImZpcnN0IGRlcGVuZGVuY3kgc2hvdWxkIGJlIGZvby5qcyIsIFtbW1tj
b250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRlbmN5TGlzdFRlc3RzL2Zvby5qcyJd
IHNvdXJjZVVSTF0gYWJzb2x1dGVTdHJpbmddIGlzRXF1YWw6W2RlcHNbQCgwKV0gdG9TdHJpbmdd
XSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAic2Vjb25kIGRlcGVuZGVuY3kgc2hvdWxkIGJlIGJh
ci5qcyIsIFtbW1tjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRlbmN5TGlzdFRl
c3RzL2Jhci5qcyJdIHNvdXJjZVVSTF0gYWJzb2x1dGVTdHJpbmddIGlzRXF1YWw6W2RlcHNbQCgx
KV0gdG9TdHJpbmddXSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0RGVwZW5kZW5jaWVz
RXZhbHVhdGlvbkVycm9yKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0
byAqY29udGV4dCA9IFtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgbmV3Q29udGV4dF07CisK
KyAgICAgICAgSlNTY3JpcHQgKmVudHJ5U2NyaXB0ID0gW2NvbnRleHQgZmV0Y2hNb2R1bGVTY3Jp
cHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvcmVmZXJlbmNlRXJyb3IuanMiXTsKKworICAgICAg
ICBKU1ZhbHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1NjcmlwdDplbnRyeVNjcmlw
dF07CisgICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhBcmd1bWVudHM6
QFteKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFpbGVk
IHN1Y2Nlc3NmdWxseSIsIGZhbHNlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICopIHsKKyAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCB0cnVlKTsK
KyAgICAgICAgfV1dOworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBkZXBlbmRlbmN5
SWRlbnRpZmllcnNGb3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisgICAgICAgIGNoZWNr
UmVzdWx0KEAiZGVwcyBzaG91bGQgYmUgYW4gQXJyYXkiLCBbZGVwcyBpc0FycmF5XSk7CisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiZmlyc3QgZGVwZW5kZW5jeSBzaG91bGQgYmUgZm9vLmpzIiwgW1tb
W2NvbnRleHQgZmV0Y2hNb2R1bGVTY3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpz
Il0gc291cmNlVVJMXSBhYnNvbHV0ZVN0cmluZ10gaXNFcXVhbDpbZGVwc1tAKDApXSB0b1N0cmlu
Z11dKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNTeW50YXhFcnJv
cigpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNvbnRleHQgPSBb
SlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAgICAgIEpTU2Ny
aXB0ICplbnRyeVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRl
bmN5TGlzdFRlc3RzL3N5bnRheEVycm9yLmpzIl07CisKKyAgICAgICAgSlNWYWx1ZSAqcHJvbWlz
ZSA9IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBbcHJv
bWlzZSBpbnZva2VNZXRob2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1ZhbHVlICopIHsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCBm
YWxzZSk7CisgICAgICAgIH0sIF4oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3Vs
dChAIm1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgdHJ1ZSk7CisgICAgICAgIH1dXTsKKwor
ICAgICAgICBhdXRvICpkZXBzID0gW2NvbnRleHQgZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9k
dWxlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlcHMgc2hv
dWxkIGJlIHVuZGVmaW5lZCIsIFtkZXBzIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVz
dWx0KEAidGhlcmUgc2hvdWxkIGJlIGEgcGVuZGluZyBleGNlcHRpb24gb24gdGhlIGNvbnRleHQi
LCBjb250ZXh0LmV4Y2VwdGlvbik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0RGVwZW5k
ZW5jaWVzQmFkSW1wb3J0SWQoKQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBh
dXRvICpjb250ZXh0ID0gW0pTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSBuZXdDb250ZXh0XTsK
KworICAgICAgICBKU1NjcmlwdCAqZW50cnlTY3JpcHQgPSBbY29udGV4dCBmZXRjaE1vZHVsZVNj
cmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJZC5qcyJdOworCisg
ICAgICAgIEpTVmFsdWUgKnByb21pc2UgPSBbY29udGV4dCBldmFsdWF0ZUpTU2NyaXB0OmVudHJ5
U2NyaXB0XTsKKyAgICAgICAgW3Byb21pc2UgaW52b2tlTWV0aG9kOkAidGhlbiIgd2l0aEFyZ3Vt
ZW50czpAW14oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1vZHVsZSBm
YWlsZWQgc3VjY2Vzc2Z1bGx5IiwgZmFsc2UpOworICAgICAgICB9LCBeKEpTVmFsdWUgKikgewor
ICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFpbGVkIHN1Y2Nlc3NmdWxseSIsIHRy
dWUpOworICAgICAgICB9XV07CisKKyAgICAgICAgYXV0byAqZGVwcyA9IFtjb250ZXh0IGRlcGVu
ZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAg
Y2hlY2tSZXN1bHQoQCJkZXBzIHNob3VsZCBiZSB1bmRlZmluZWQiLCBbZGVwcyBpc1VuZGVmaW5l
ZF0pOworICAgICAgICBjaGVja1Jlc3VsdChAInRoZXJlIHNob3VsZCBiZSBhIHBlbmRpbmcgZXhj
ZXB0aW9uIG9uIHRoZSBjb250ZXh0IiwgY29udGV4dC5leGNlcHRpb24pOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgdGVzdERlcGVuZGVuY2llc01pc3NpbmdJbXBvcnQoKQoreworICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvICpjb250ZXh0ID0gW0pTQ29udGV4dEZpbGVMb2Fk
ZXJEZWxlZ2F0ZSBuZXdDb250ZXh0XTsKKworICAgICAgICBKU1NjcmlwdCAqZW50cnlTY3JpcHQg
PSBbY29udGV4dCBmZXRjaE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9taXNz
aW5nSW1wb3J0LmpzIl07CisKKyAgICAgICAgSlNWYWx1ZSAqcHJvbWlzZSA9IFtjb250ZXh0IGV2
YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBbcHJvbWlzZSBpbnZva2VNZXRo
b2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1ZhbHVlICopIHsKKyAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCBmYWxzZSk7CisgICAgICAg
IH0sIF4oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1vZHVsZSBmYWls
ZWQgc3VjY2Vzc2Z1bGx5IiwgdHJ1ZSk7CisgICAgICAgIH1dXTsKKworICAgICAgICBhdXRvICpk
ZXBzID0gW2NvbnRleHQgZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9kdWxlSlNTY3JpcHQ6ZW50
cnlTY3JpcHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlcHMgc2hvdWxkIGJlIHVuZGVmaW5l
ZCIsIFtkZXBzIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGhlcmUgc2hv
dWxkIGJlIGEgcGVuZGluZyBleGNlcHRpb24gb24gdGhlIGNvbnRleHQiLCBjb250ZXh0LmV4Y2Vw
dGlvbik7CisgICAgfQorfQogCiBAcHJvdG9jb2wgVG9TdHJpbmcgPEpTRXhwb3J0PgogLSAoTlNT
dHJpbmcgKil0b1N0cmluZzsKQEAgLTI3MDgsNiArMjg0NCwxMiBAQCB2b2lkIHRlc3RPYmplY3Rp
dmVDQVBJKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdExvYWRCYXNpY0ZpbGVMZWdh
Y3lTUEkoKSk7CiAgICAgUlVOKHRlc3RMb2FkQmFzaWNGaWxlKCkpOwogCisgICAgUlVOKHRlc3RE
ZXBlbmRlbmNpZXNBcnJheSgpKTsKKyAgICBSVU4odGVzdERlcGVuZGVuY2llc1N5bnRheEVycm9y
KCkpOworICAgIFJVTih0ZXN0RGVwZW5kZW5jaWVzRXZhbHVhdGlvbkVycm9yKCkpOworICAgIFJV
Tih0ZXN0RGVwZW5kZW5jaWVzQmFkSW1wb3J0SWQoKSk7CisgICAgUlVOKHRlc3REZXBlbmRlbmNp
ZXNNaXNzaW5nSW1wb3J0KCkpOworCiAgICAgUlVOKHByb21pc2VXaXRoRXhlY3V0b3IoUmVzb2x1
dGlvbjo6UmVzb2x2ZUVhZ2VyKSk7CiAgICAgUlVOKHByb21pc2VXaXRoRXhlY3V0b3IoUmVzb2x1
dGlvbjo6UmVqZWN0RWFnZXIpKTsKICAgICBSVU4ocHJvbWlzZVdpdGhFeGVjdXRvcihSZXNvbHV0
aW9uOjpSZXNvbHZlTGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2JhZE1vZHVsZUltcG9y
dElkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9k
ZXBlbmRlbmN5TGlzdFRlc3RzL2JhZE1vZHVsZUltcG9ydElkLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2NTAy
MDg0NDE4YWNkYzI2ZDZmMWM1MGQ5MDQ4MmY1MDE3YzljMDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lM
aXN0VGVzdHMvYmFkTW9kdWxlSW1wb3J0SWQuanMKQEAgLTAsMCArMSwzIEBACisKKy8vIFRoaXMg
aXMgbm90IGEgdmFsaWQgaWRlbnRmaWVyIGZvciBhbiBpbXBvcnQgc28gaXQgd2lsbCBmYWlsIHRv
IGltcG9ydC4KK2ltcG9ydCAic2V0aHVhIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jhci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5j
eUxpc3RUZXN0cy9iYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEwZmZjOGU5YWJhYjU5ZmM0Yjc4ZGJjMDgy
YWEwZmMwOWMyYTFiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9iYXIuanMKQEAgLTAs
MCArMSBAQAorZXhwb3J0IGxldCBoZWxsbyA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZGVw
ZW5kZW5jaWVzRW50cnkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZGVwZW5kZW5jaWVzRW50cnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjljZTkwM2I2YWNjZTdlMGMzNzIwNjQ1ZDA1NWVjNTZmMmFlNDE2NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMv
ZGVwZW5kZW5jeUxpc3RUZXN0cy9kZXBlbmRlbmNpZXNFbnRyeS5qcwpAQCAtMCwwICsxLDIgQEAK
K2ltcG9ydCAiLi9mb28uanMiOworaW1wb3J0ICIuL2Jhci5qcyI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0
VGVzdHMvZm9vLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2Ny
aXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Zvby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjgyMThhOTM0ZjJi
OTgxOTk0MmRkNTE4NWE5OTk3OGNhOTU4ZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3Rz
L2Zvby5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgbGV0IHRoaW5ncyA9IG51bGw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVu
ZGVuY3lMaXN0VGVzdHMvbWlzc2luZ0ltcG9ydC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9taXNzaW5nSW1wb3J0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmNTM0OTFjZWJkNDg5MzcwOGQ0MmVjMmIxYjRkZmVhOTg0NmViMjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvbWlzc2luZ0ltcG9ydC5qcwpAQCAtMCwwICsx
IEBACitpbXBvcnQgIi4vZmlsZS10aGF0LWRvZXMtbm90LWV4aXN0LmpzIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5
TGlzdFRlc3RzL3JlZmVyZW5jZUVycm9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL3JlZmVyZW5jZUVycm9yLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRlNTVjMzc1YmVhZWY2MzYyN2M4MDNhMTg1MjA5YjMzMjZiMDcwOTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlT
Y3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvcmVmZXJlbmNlRXJyb3IuanMKQEAgLTAsMCArMSwz
IEBACitpbXBvcnQgIi4vZm9vLmpzIjsKKwordG9zZWh1YXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVz
dHMvc3ludGF4RXJyb3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvc3ludGF4RXJyb3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2I0Mjg0MzIyZTNmYWJmMzg4OGZiNjM0NzU3ODNjZTk5ZjRkODM3MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5k
ZW5jeUxpc3RUZXN0cy9zeW50YXhFcnJvci5qcwpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCAiLi9m
b28uanMiOworCit0aGVvYXN1dGFzIHRoZWEgdGVobHIgIGVic2E7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGktZnVuY3Rp
b24tb3ZlcnJpZGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
U2NyaXB0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjNjY2Vk
MDQ4N2U5YzBlNmNlZTU3ODA2OTYzOGFjMGRjMmViNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLWZ1bmN0
aW9uLW92ZXJyaWRlcy5qcwpAQCAtMCwwICsxLDE2IEBACisvLyB0ZXN0YXBpIGZ1bmN0aW9uIG92
ZXJyaWRlcyBmb3IgdGVzdGluZy4KK292ZXJyaWRlICUlJXsgLyogT3JpZ2luYWwgZjEgKi8gfSUl
JQord2l0aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjEgKi8gfSUlJQorCitvdmVycmlkZSAjJCV7Cisg
ICAgLy8gT3JpZ2luYWwgZjIKK30jJCUKK3dpdGggJCQkeyAvKiBPdmVycmlkZGVuIGYyICovIH0k
JCQKKworb3ZlcnJpZGUgJSUleyAvKiBPcmlnaW5hbCBmMyAqLyB9JSUlCit3aXRoICUlJXsgLyog
T3ZlcnJpZGRlbiBmMyAqLyB9JSUlCisKK292ZXJyaWRlICUlJXsKKy8qIE9yaWdpbmFsIGY0ICov
Cit9JSUlCit3aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmNCAqLyB9JSUlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODhkMzcwMWMyMWUwNTg2NmE3YTIwYTFhZWYyMmNiMGZiMjgzYzRmNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aVNjcmlwdHMvdGVzdGFwaS5qcwpAQCAtMCwwICsxLDMwNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBibHVkZ2VvbkFyZ3VtZW50cygp
IHsgaWYgKDApIGFyZ3VtZW50czsgcmV0dXJuIGZ1bmN0aW9uIGcoKSB7fSB9CitoID0gYmx1ZGdl
b25Bcmd1bWVudHMoKTsKK2djKCk7CisKK3ZhciBmYWlsZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIHBh
c3MobXNnKQoreworICAgIHByaW50KCJQQVNTOiAiICsgbXNnLCAiZ3JlZW4iKTsKK30KKworZnVu
Y3Rpb24gZmFpbChtc2cpCit7CisgICAgcHJpbnQoIkZBSUw6ICIgKyBtc2csICJyZWQiKTsKKyAg
ICBmYWlsZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBzaG91bGRCZShhLCBiKQoreworICAgIHZh
ciBldmFsQTsKKyAgICB0cnkgeworICAgICAgICBldmFsQSA9IGV2YWwoYSk7CisgICAgfSBjYXRj
aChlKSB7CisgICAgICAgIGV2YWxBID0gZTsKKyAgICB9CisgICAgCisgICAgaWYgKGV2YWxBID09
IGIgfHwgaXNOYU4oZXZhbEEpICYmIHR5cGVvZiBldmFsQSA9PSAnbnVtYmVyJyAmJiBpc05hTihi
KSAmJiB0eXBlb2YgYiA9PSAnbnVtYmVyJykKKyAgICAgICAgcGFzcyhhICsgIiBzaG91bGQgYmUg
IiArIGIgKyAiIGFuZCBpcy4iKTsKKyAgICBlbHNlCisgICAgICAgIGZhaWwoYSArICIgc2hvdWxk
IGJlICIgKyBiICsgIiBidXQgaW5zdGVhZCBpcyAiICsgZXZhbEEgKyAiLiIpOworfQorCitmdW5j
dGlvbiBzaG91bGRUaHJvdyhhKQoreworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAgICAg
ICBldmFsKGEpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBwYXNzKGEgKyAiIHRocmV3OiAi
ICsgZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmYWlsKGEgKyAiIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uLiIpOworfQorCitmdW5jdGlvbiBnbG9iYWxTdGF0aWNGdW5jdGlv
bigpCit7CisgICAgcmV0dXJuIDQ7Cit9CisKK3Nob3VsZEJlKCJnbG9iYWxTdGF0aWNWYWx1ZSIs
IDMpOworc2hvdWxkQmUoImdsb2JhbFN0YXRpY0Z1bmN0aW9uKCkiLCA0KTsKK3Nob3VsZEJlKCJ0
aGlzLmdsb2JhbFN0YXRpY0Z1bmN0aW9uKCkiLCA0KTsKKworZnVuY3Rpb24gZ2xvYmFsU3RhdGlj
RnVuY3Rpb24yKCkgeworICAgIHJldHVybiAxMDsKK30KK3Nob3VsZEJlKCJnbG9iYWxTdGF0aWNG
dW5jdGlvbjIoKTsiLCAxMCk7Cit0aGlzLmdsb2JhbFN0YXRpY0Z1bmN0aW9uMiA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gMjA7IH0KK3Nob3VsZEJlKCJnbG9iYWxTdGF0aWNGdW5jdGlvbjIoKTsiLCAy
MCk7CitzaG91bGRCZSgidGhpcy5nbG9iYWxTdGF0aWNGdW5jdGlvbjIoKTsiLCAyMCk7CisKK2Z1
bmN0aW9uIGlBbU5vdEFTdGF0aWNGdW5jdGlvbigpIHsgcmV0dXJuIDEwOyB9CitzaG91bGRCZSgi
aUFtTm90QVN0YXRpY0Z1bmN0aW9uKCk7IiwgMTApOwordGhpcy5pQW1Ob3RBU3RhdGljRnVuY3Rp
b24gPSBmdW5jdGlvbigpIHsgcmV0dXJuIDIwOyB9CitzaG91bGRCZSgiaUFtTm90QVN0YXRpY0Z1
bmN0aW9uKCk7IiwgMjApOworCitzaG91bGRCZSgidHlwZW9mIE15T2JqZWN0IiwgImZ1bmN0aW9u
Iik7IC8vIG91ciBvYmplY3QgaW1wbGVtZW50cyAnY2FsbCcKK015T2JqZWN0LmNhbnRGaW5kID0g
MTsKK3Nob3VsZEJlKCJNeU9iamVjdC5jYW50RmluZCIsIHVuZGVmaW5lZCk7CitNeU9iamVjdC5y
ZWd1bGFyVHlwZSA9IDE7CitzaG91bGRCZSgiTXlPYmplY3QucmVndWxhclR5cGUiLCAxKTsKK015
T2JqZWN0LmFsd2F5c09uZSA9IDI7CitzaG91bGRCZSgiTXlPYmplY3QuYWx3YXlzT25lIiwgMSk7
CitNeU9iamVjdC5jYW50RGVsZXRlID0gMTsKK2RlbGV0ZSBNeU9iamVjdC5jYW50RGVsZXRlOwor
c2hvdWxkQmUoIk15T2JqZWN0LmNhbnREZWxldGUiLCAxKTsKK3Nob3VsZEJlKCJkZWxldGUgTXlP
YmplY3QudGhyb3dPbkRlbGV0ZSIsICJhbiBleGNlcHRpb24iKTsKK015T2JqZWN0LmNhbnRTZXQg
PSAxOworc2hvdWxkQmUoIk15T2JqZWN0LmNhbnRTZXQiLCB1bmRlZmluZWQpOworc2hvdWxkQmUo
Ik15T2JqZWN0LnRocm93T25HZXQiLCAiYW4gZXhjZXB0aW9uIik7CitzaG91bGRCZSgiTXlPYmpl
Y3QudGhyb3dPblNldCA9IDUiLCAiYW4gZXhjZXB0aW9uIik7CitzaG91bGRCZSgiTXlPYmplY3Qo
J3Rocm93T25DYWxsJykiLCAiYW4gZXhjZXB0aW9uIik7CitzaG91bGRCZSgibmV3IE15T2JqZWN0
KCd0aHJvd09uQ29uc3RydWN0JykiLCAiYW4gZXhjZXB0aW9uIik7CitzaG91bGRCZSgiJ3Rocm93
T25IYXNJbnN0YW5jZScgaW5zdGFuY2VvZiBNeU9iamVjdCIsICJhbiBleGNlcHRpb24iKTsKKwor
TXlPYmplY3QubnVsbEdldEZvcndhcmRTZXQgPSAxOworc2hvdWxkQmUoIk15T2JqZWN0Lm51bGxH
ZXRGb3J3YXJkU2V0IiwgMSk7CisKK3ZhciBmb3VuZE15UHJvcGVydHlOYW1lID0gZmFsc2U7Cit2
YXIgZm91bmRSZWd1bGFyVHlwZSA9IGZhbHNlOworZm9yICh2YXIgcCBpbiBNeU9iamVjdCkgewor
ICAgIGlmIChwID09ICJteVByb3BlcnR5TmFtZSIpCisgICAgICAgIGZvdW5kTXlQcm9wZXJ0eU5h
bWUgPSB0cnVlOworICAgIGlmIChwID09ICJyZWd1bGFyVHlwZSIpCisgICAgICAgIGZvdW5kUmVn
dWxhclR5cGUgPSB0cnVlOworfQorCitpZiAoZm91bmRNeVByb3BlcnR5TmFtZSkKKyAgICBwYXNz
KCJNeU9iamVjdC5teVByb3BlcnR5TmFtZSB3YXMgZW51bWVyYXRlZCIpOworZWxzZQorICAgIGZh
aWwoIk15T2JqZWN0Lm15UHJvcGVydHlOYW1lIHdhcyBub3QgZW51bWVyYXRlZCIpOworCitpZiAo
Zm91bmRSZWd1bGFyVHlwZSkKKyAgICBwYXNzKCJNeU9iamVjdC5yZWd1bGFyVHlwZSB3YXMgZW51
bWVyYXRlZCIpOworZWxzZQorICAgIGZhaWwoIk15T2JqZWN0LnJlZ3VsYXJUeXBlIHdhcyBub3Qg
ZW51bWVyYXRlZCIpOworCit2YXIgYWx3YXlzT25lRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJhbHdheXNPbmUiKTsKK3Nob3VsZEJlKCd0eXBl
b2YgYWx3YXlzT25lRGVzY3JpcHRvcicsICJvYmplY3QiKTsKK3Nob3VsZEJlKCdhbHdheXNPbmVE
ZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QuYWx3YXlzT25lKTsKK3Nob3VsZEJlKCdhbHdheXNP
bmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOworc2hvdWxkQmUoJ2Fsd2F5c09uZURl
c2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsgLy8gQWN0dWFsbHkgaXQgaXMuCit2YXIgY2Fu
dEZpbmREZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVj
dCwgImNhbnRGaW5kIik7CitzaG91bGRCZSgndHlwZW9mIGNhbnRGaW5kRGVzY3JpcHRvcicsICJv
YmplY3QiKTsKK3Nob3VsZEJlKCdjYW50RmluZERlc2NyaXB0b3IudmFsdWUnLCBNeU9iamVjdC5j
YW50RmluZCk7CitzaG91bGRCZSgnY2FudEZpbmREZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRy
dWUpOworc2hvdWxkQmUoJ2NhbnRGaW5kRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwor
dHJ5IHsKKyAgICAvLyBJZiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSByZXR1cm5lZCBhbiBh
Y2Nlc3MgZGVzY3JpcHRvciwgdGhpcyB3b3VsZG4ndCB0aHJvdy4KKyAgICBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAidGhyb3dPbkdldCIpOworfSBjYXRjaCAoZSkg
eworICAgIHBhc3MoImdldHRpbmcgcHJvcGVydHkgZGVzY3JpcHRvciBvZiB0aHJvd09uR2V0IHRo
cmV3IGV4Y2VwdGlvbiIpOworfQordmFyIG15UHJvcGVydHlOYW1lRGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJteVByb3BlcnR5TmFtZSIpOwor
c2hvdWxkQmUoJ3R5cGVvZiBteVByb3BlcnR5TmFtZURlc2NyaXB0b3InLCAib2JqZWN0Iik7Citz
aG91bGRCZSgnbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QubXlQcm9w
ZXJ0eU5hbWUpOworc2hvdWxkQmUoJ215UHJvcGVydHlOYW1lRGVzY3JpcHRvci5jb25maWd1cmFi
bGUnLCB0cnVlKTsKK3Nob3VsZEJlKCdteVByb3BlcnR5TmFtZURlc2NyaXB0b3IuZW51bWVyYWJs
ZScsIGZhbHNlKTsgLy8gQWN0dWFsbHkgaXQgaXMuCit0cnkgeworICAgIC8vIGlmIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcigpIHJldHVybmVkIGFuIGFjY2VzcyBkZXNjcmlwdG9yLCB0aGlzIHdv
dWxkbid0IHRocm93LgorICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmpl
Y3QsICJoYXNQcm9wZXJ0eUxpZSIpOworfSBjYXRjaCAoZSkgeworICAgIHBhc3MoImdldHRpbmcg
cHJvcGVydHkgZGVzY3JpcHRvciBvZiBoYXNQcm9wZXJ0eUxpZSB0aHJldyBleGNlcHRpb24iKTsK
K30KK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAi
ZG9lc05vdEV4aXN0IiknLCB1bmRlZmluZWQpOworCitteU9iamVjdCA9IG5ldyBNeU9iamVjdCgp
OworCitzaG91bGRCZSgiZGVsZXRlIE15T2JqZWN0LnJlZ3VsYXJUeXBlIiwgdHJ1ZSk7CitzaG91
bGRCZSgiTXlPYmplY3QucmVndWxhclR5cGUiLCB1bmRlZmluZWQpOworc2hvdWxkQmUoIk15T2Jq
ZWN0KDApIiwgMSk7CitzaG91bGRCZSgiTXlPYmplY3QoKSIsIHVuZGVmaW5lZCk7CitzaG91bGRC
ZSgidHlwZW9mIG15T2JqZWN0IiwgIm9iamVjdCIpOworc2hvdWxkQmUoIk15T2JqZWN0ID8gMSA6
IDAiLCB0cnVlKTsgLy8gdG9Cb29sZWFuCitzaG91bGRCZSgiK015T2JqZWN0IiwgMSk7IC8vIHRv
TnVtYmVyCitzaG91bGRCZSgiKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChNeU9iamVj
dCkpIiwgIltvYmplY3QgTXlPYmplY3RdIik7IC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcK
K3Nob3VsZEJlKCIoTXlPYmplY3QudG9TdHJpbmcoKSkiLCAiW29iamVjdCBNeU9iamVjdF0iKTsg
Ly8gdG9TdHJpbmcKK3Nob3VsZEJlKCJTdHJpbmcoTXlPYmplY3QpIiwgIk15T2JqZWN0QXNTdHJp
bmciKTsgLy8gdG9TdHJpbmcKK3Nob3VsZEJlKCJNeU9iamVjdCAtIDAiLCAxKTsgLy8gdG9OdW1i
ZXIKK3Nob3VsZEJlKCJNeU9iamVjdC52YWx1ZU9mKCkiLCAxKTsgLy8gdmFsdWVPZgorCitzaG91
bGRCZSgidHlwZW9mIE15Q29uc3RydWN0b3IiLCAib2JqZWN0Iik7Citjb25zdHJ1Y3RlZE9iamVj
dCA9IG5ldyBNeUNvbnN0cnVjdG9yKDEpOworc2hvdWxkQmUoInR5cGVvZiBjb25zdHJ1Y3RlZE9i
amVjdCIsICJvYmplY3QiKTsKK3Nob3VsZEJlKCJjb25zdHJ1Y3RlZE9iamVjdC52YWx1ZSIsIDEp
Oworc2hvdWxkQmUoIm15T2JqZWN0IGluc3RhbmNlb2YgTXlPYmplY3QiLCB0cnVlKTsKK3Nob3Vs
ZEJlKCIobmV3IE9iamVjdCgpKSBpbnN0YW5jZW9mIE15T2JqZWN0IiwgZmFsc2UpOworCitzaG91
bGRUaHJvdygibmV3IE15QmFkQ29uc3RydWN0b3IoKSIpOworCitNeU9iamVjdC5udWxsR2V0U2V0
ID0gMTsKK3Nob3VsZEJlKCJNeU9iamVjdC5udWxsR2V0U2V0IiwgMSk7CitzaG91bGRUaHJvdygi
TXlPYmplY3QubnVsbENhbGwoKSIpOworc2hvdWxkVGhyb3coIk15T2JqZWN0Lmhhc1Byb3BlcnR5
TGllIik7CisKK2Rlcml2ZWQgPSBuZXcgRGVyaXZlZCgpOworCitzaG91bGRCZSgiZGVyaXZlZCBp
bnN0YW5jZW9mIERlcml2ZWQiLCB0cnVlKTsKK3Nob3VsZEJlKCJkZXJpdmVkIGluc3RhbmNlb2Yg
QmFzZSIsIHRydWUpOworCisvLyBiYXNlIHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucyByZXR1cm4g
MSB3aGVuIGNhbGxlZC9nb3R0ZW47IGRlcml2ZWQsIDIKK3Nob3VsZEJlKCJkZXJpdmVkLmJhc2VQ
cm90b0R1cCgpIiwgMik7CitzaG91bGRCZSgiZGVyaXZlZC5iYXNlUHJvdG8oKSIsIDEpOworc2hv
dWxkQmUoImRlcml2ZWQuYmFzZUR1cCIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQuYmFzZU9ubHki
LCAxKTsKK3Nob3VsZEJlKCJkZXJpdmVkLnByb3RvT25seSgpIiwgMik7CitzaG91bGRCZSgiZGVy
aXZlZC5wcm90b0R1cCIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQuZGVyaXZlZE9ubHkiLCAyKQor
CitzaG91bGRCZSgiZGVyaXZlZC5iYXNlSGFyZE51bGwoKSIsIHVuZGVmaW5lZCkKKworLy8gYmFz
ZSBwcm9wZXJ0aWVzIHRocm93IDEgd2hlbiBzZXQ7IGRlcml2ZWQsIDIKK3Nob3VsZEJlKCJkZXJp
dmVkLmJhc2VEdXAgPSAwIiwgMik7CitzaG91bGRCZSgiZGVyaXZlZC5iYXNlT25seSA9IDAiLCAx
KTsKK3Nob3VsZEJlKCJkZXJpdmVkLmRlcml2ZWRPbmx5ID0gMCIsIDIpCitzaG91bGRCZSgiZGVy
aXZlZC5wcm90b0R1cCA9IDAiLCAyKTsKKworZGVyaXZlZDIgPSBuZXcgRGVyaXZlZDIoKTsKKwor
c2hvdWxkQmUoImRlcml2ZWQyIGluc3RhbmNlb2YgRGVyaXZlZDIiLCB0cnVlKTsKK3Nob3VsZEJl
KCJkZXJpdmVkMiBpbnN0YW5jZW9mIERlcml2ZWQiLCB0cnVlKTsKK3Nob3VsZEJlKCJkZXJpdmVk
MiBpbnN0YW5jZW9mIEJhc2UiLCB0cnVlKTsKKworLy8gYmFzZSBwcm9wZXJ0aWVzIGFuZCBmdW5j
dGlvbnMgcmV0dXJuIDEgd2hlbiBjYWxsZWQvZ290dGVuOyBkZXJpdmVkLCAyCitzaG91bGRCZSgi
ZGVyaXZlZDIuYmFzZVByb3RvRHVwKCkiLCAyKTsKK3Nob3VsZEJlKCJkZXJpdmVkMi5iYXNlUHJv
dG8oKSIsIDEpOworc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VEdXAiLCAyKTsKK3Nob3VsZEJlKCJk
ZXJpdmVkMi5iYXNlT25seSIsIDEpOworc2hvdWxkQmUoImRlcml2ZWQyLnByb3RvT25seSgpIiwg
Mik7CitzaG91bGRCZSgiZGVyaXZlZDIucHJvdG9EdXAiLCAyKTsKK3Nob3VsZEJlKCJkZXJpdmVk
Mi5kZXJpdmVkT25seSIsIDIpCisKKy8vIGJhc2UgcHJvcGVydGllcyB0aHJvdyAxIHdoZW4gc2V0
OyBkZXJpdmVkLCAyCitzaG91bGRCZSgiZGVyaXZlZDIuYmFzZUR1cCA9IDAiLCAyKTsKK3Nob3Vs
ZEJlKCJkZXJpdmVkMi5iYXNlT25seSA9IDAiLCAxKTsKK3Nob3VsZEJlKCJkZXJpdmVkMi5kZXJp
dmVkT25seSA9IDAiLCAyKQorc2hvdWxkQmUoImRlcml2ZWQyLnByb3RvRHVwID0gMCIsIDIpOwor
CitzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAiYmFz
ZVByb3RvIiknLCB1bmRlZmluZWQpOworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZGVyaXZlZCwgImJhc2VQcm90b0R1cCIpJywgdW5kZWZpbmVkKTsKK3ZhciBiYXNl
RHVwRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwg
ImJhc2VEdXAiKTsKK3Nob3VsZEJlKCd0eXBlb2YgYmFzZUR1cERlc2NyaXB0b3InLCAib2JqZWN0
Iik7CitzaG91bGRCZSgnYmFzZUR1cERlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVkLmJhc2VEdXAp
Oworc2hvdWxkQmUoJ2Jhc2VEdXBEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOworc2hv
dWxkQmUoJ2Jhc2VEdXBEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7Cit2YXIgYmFzZU9u
bHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAi
YmFzZU9ubHkiKTsKK3Nob3VsZEJlKCd0eXBlb2YgYmFzZU9ubHlEZXNjcmlwdG9yJywgIm9iamVj
dCIpOworc2hvdWxkQmUoJ2Jhc2VPbmx5RGVzY3JpcHRvci52YWx1ZScsIGRlcml2ZWQuYmFzZU9u
bHkpOworc2hvdWxkQmUoJ2Jhc2VPbmx5RGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsK
K3Nob3VsZEJlKCdiYXNlT25seURlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKK3Nob3Vs
ZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJwcm90b09ubHki
KScsIHVuZGVmaW5lZCk7Cit2YXIgcHJvdG9EdXBEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAicHJvdG9EdXAiKTsKK3Nob3VsZEJlKCd0eXBlb2Yg
cHJvdG9EdXBEZXNjcmlwdG9yJywgIm9iamVjdCIpOworc2hvdWxkQmUoJ3Byb3RvRHVwRGVzY3Jp
cHRvci52YWx1ZScsIGRlcml2ZWQucHJvdG9EdXApOworc2hvdWxkQmUoJ3Byb3RvRHVwRGVzY3Jp
cHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKK3Nob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3Iu
ZW51bWVyYWJsZScsIGZhbHNlKTsKK3ZhciBkZXJpdmVkT25seURlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJkZXJpdmVkT25seSIpOworc2hvdWxk
QmUoJ3R5cGVvZiBkZXJpdmVkT25seURlc2NyaXB0b3InLCAib2JqZWN0Iik7CitzaG91bGRCZSgn
ZGVyaXZlZE9ubHlEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5kZXJpdmVkT25seSk7CitzaG91
bGRCZSgnZGVyaXZlZE9ubHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOworc2hvdWxk
QmUoJ2Rlcml2ZWRPbmx5RGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOworCitzaG91bGRC
ZSgidW5kZWZpbmVkIGluc3RhbmNlb2YgTXlPYmplY3QiLCBmYWxzZSk7CitFdmlsRXhjZXB0aW9u
T2JqZWN0Lmhhc0luc3RhbmNlID0gZnVuY3Rpb24gZigpIHsgcmV0dXJuIGYoKTsgfTsKK0V2aWxF
eGNlcHRpb25PYmplY3QuX19wcm90b19fID0gdW5kZWZpbmVkOworc2hvdWxkVGhyb3coInVuZGVm
aW5lZCBpbnN0YW5jZW9mIEV2aWxFeGNlcHRpb25PYmplY3QiKTsKK0V2aWxFeGNlcHRpb25PYmpl
Y3QuaGFzSW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9Oworc2hvdWxkQmUo
InVuZGVmaW5lZCBpbnN0YW5jZW9mIEV2aWxFeGNlcHRpb25PYmplY3QiLCB0cnVlKTsKKworRXZp
bEV4Y2VwdGlvbk9iamVjdC50b051bWJlciA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH0K
K3Nob3VsZFRocm93KCJFdmlsRXhjZXB0aW9uT2JqZWN0KjUiKTsKK0V2aWxFeGNlcHRpb25PYmpl
Y3QudG9TdHJpbmdFeHBsaWNpdCA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH0KK3Nob3Vs
ZFRocm93KCJTdHJpbmcoRXZpbEV4Y2VwdGlvbk9iamVjdCkiKTsKKworc2hvdWxkQmUoImNvbnNv
bGUiLCAiW29iamVjdCBDb25zb2xlXSIpOworc2hvdWxkQmUoInR5cGVvZiBjb25zb2xlLmxvZyIs
ICJmdW5jdGlvbiIpOworCitzaG91bGRCZSgiRW1wdHlPYmplY3QiLCAiW29iamVjdCBDYWxsYmFj
a09iamVjdF0iKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgUHJvcGVydHlD
YXRjaGFsbHMueCA9IGk7CitzaG91bGRCZSgiUHJvcGVydHlDYXRjaGFsbHMueCIsIDQpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDY7ICsraSkKKyAgICB2YXIgeCA9IFByb3BlcnR5Q2F0Y2hhbGxz
Lng7CitzaG91bGRCZSgieCIsIG51bGwpOwordmFyIG1ha2VfdGhyb3cgPSAnbWFrZV90aHJvdyc7
CitzaG91bGRUaHJvdygiUHJvcGVydHlDYXRjaGFsbHNbbWFrZV90aHJvd109MSIpOworbWFrZV90
aHJvdyA9IDA7CitzaG91bGRUaHJvdygiUHJvcGVydHlDYXRjaGFsbHNbbWFrZV90aHJvd109MSIp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICBmb3IgKHZhciBwIGluIFBy
b3BlcnR5Q2F0Y2hhbGxzKSB7CisgICAgICAgIGlmIChwID09ICJ4IikKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBzaG91bGRCZSgicCIsIGkgJSAxMCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworUHJvcGVydHlDYXRjaGFsbHMuX19wcm90b19fID0geyB5OiAxIH07Citmb3Ig
KHZhciBpID0gMDsgaSA8IDY7ICsraSkKKyAgICB2YXIgeSA9IFByb3BlcnR5Q2F0Y2hhbGxzLnk7
CitzaG91bGRCZSgieSIsIG51bGwpOworCit2YXIgbyA9IHsgX19wcm90b19fOiBQcm9wZXJ0eUNh
dGNoYWxscyB9OworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgdmFyIHogPSBQcm9w
ZXJ0eUNhdGNoYWxscy56Oworc2hvdWxkQmUoInoiLCBudWxsKTsKKworaWYgKGZhaWxlZCkKKyAg
ICB0aHJvdyAiU29tZSB0ZXN0cyBmYWlsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjZTk3ZDk4YTJlYmMyN2U2ZDE1OTAxZDJiNzMyYzY1Yzk3YzA3YzZkLi44Nzc0N2JiMjY1
ZDhjMzUyNzBhOGI0OGM0NzQ2OTVhNGQ2MmRiZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODk4LDcgKzg5OCw2IEBACiAJCTUyQ0QwRjVEMjI0MkY1NjkwMDRBMThBNSAvKiBG
b3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLzsgfTsKIAkJNTJDRDBGNUUyMjQyRjU2OTAwNEExOEE1IC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
Ki87IH07CiAJCTUyQ0QwRjY4MjI0MkY3MUMwMDRBMThBNSAvKiB0ZXN0ZGZnLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0QwRjY3MjI0MkY3MUMw
MDRBMThBNSAvKiB0ZXN0ZGZnLmNwcCAqLzsgfTsKLQkJNTJEMTMwOTEyMjFDRTE3NjAwOUM4MzZD
IC8qIGZvby5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyRDEzMDhGMjIxQ0UwM0EwMDlDODM2QyAvKiBmb28uanMgKi87IH07CiAJ
CTUyRjZDMzVFMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNkMzNUMx
RTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggKi87IH07CiAJ
CTUzMEE2NkI5MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEE2NkIxMUZBM0U3N0Ew
MDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSAqLzsgfTsKIAkJNTMwQTY2QkExRkEzRTc4
QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U0LW1tLm1tICovOyB9OwpAQCAtMTA4Miw3ICsxMDgxLDYgQEAKIAkJNTM5RkI4QkEx
Qzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNB
cnJheUlubGluZXMuaCAqLzsgfTsKIAkJNTNCNEJEMTIxRjY4QjMyNTAwRDJCRUEzIC8qIFdhc21P
cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0Ix
NURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpT
Q2FzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNC
NjAxRUIyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUzQzNENUU1MjFFQ0U3NzIwMDg3RkRGQyAvKiBi
YXNpYy5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzQzNENUU0MjFFQ0U2Q0UwMDg3RkRGQyAvKiBiYXNpYy5qcyAqLzsgfTsKIAkJ
NTNDNEY2NkIyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M0RjY2QTIxQjFBNDA5MDAy
RkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAqLzsgfTsKIAkJNTNDNkZFRUYxRThBREZBOTAw
QjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzZGRUVFMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2Rl
T3JpZ2luLmggKi87IH07CiAJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxh
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQTcz
MDgxRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggKi87IH07CkBAIC0xMTExLDcgKzEx
MDksNiBAQAogCQk1QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNDE5NjYxMjI3MERGRjMwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3BwICovOyB9OwogCQk1QzRFOEU5NjFEQkVCRTYy
MDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRFOEU5NDFEQkVCREEyMDAzNkYxRkMgLyogSlNPTlBhcnNl
VGVzdC5jcHAgKi87IH07CiAJCTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5
bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1
RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07Ci0JCTVEQkIxNTFC
MTMxRDBCMzEwMDU2QUQzNiAvKiB0ZXN0YXBpLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODU3NzQwQTQ2OTZDODAwMzIxNDZD
IC8qIHRlc3RhcGkuanMgKi87IH07CiAJCTVEQkIxNTI1MTMxRDBCRDcwMDU2QUQzNiAvKiBtaW5p
ZG9tLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQxMjExMEQwQTQ4Nzg4NzAwNDgwMjU1IC8qIG1pbmlkb20uanMgKi87IH07CiAJ
CTVERTZFNUIzMEUxNzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODU0MDI1NTU5N0QwMUZG
NjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgp
OyB9OyB9OwogCQk2MjNBMzdFQzFCODdBN0MwMDA3NTQyMDkgLyogUmVnaXN0ZXJNYXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyM0EzN0VCMUI4N0E3
QkQwMDc1NDIwOSAvKiBSZWdpc3Rlck1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMjg3LDEwICsxMjg0LDEwIEBACiAJCTkzMzA0MDA0MEU2
QTc0OTQwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzAzRkVBMEU2QTcyQzAwMDc4NkU2QSAvKiBTbWFsbFN0
cmluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3
IC8qIExhYmVsU2NvcGUuaCAqLzsgfTsKIAkJOTY4OENCMTUwRUQxMkI0RTAwMUQ2NDlGIC8qIEFz
c2VtYmxlckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk2ODhDQjE2MEVE
MTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3Nl
bWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTEgLyogWDg2UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0
OTEgLyogWDg2UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJlZ2lzdGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENC
MTQwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5
OSAvKiBSZWdpc3RlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5OSAvKiBSZWdpc3RlckluZm8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5Njg4Q0IxNjBF
RDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNz
ZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyMTBFRDFDRTMz
MDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAqLzsgfTsKIAkJOTY5QTA3MkEwRUQxQ0U2
OTAwRjFGNjgxIC8qIExhYmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NjlBMDcyNzBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCAqLzsgfTsKIAkJ
OTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI4MEVEMUNFNjkwMEYxRjY4MSAv
KiBSZWdpc3RlcklELmggKi87IH07CkBAIC0xODg1LDcgKzE4ODIsNiBAQAogCQlGRUI1MUY2QzFB
OTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdy
ZXNzMTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JI
YW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDQjhCMjcx
RDI1QkI4NTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUNCOEIyNTFEMjVCQjZFMDA2RjI0
NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcCAqLzsgfTsKLQkJRkVDQjhCMkExRDI1Q0I1
QTAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIGluIENvcHkgU3VwcG9y
dCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDQjhCMjkxRDI1
Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICovOyB9OwogCQlG
RUQyODdCMjE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDI4N0IxMTVFQzlBNTcwMERBODE2MSAv
KiBMTEludE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAw
QkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2Fw
VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsgfTsK
QEAgLTIwNzksMjAgKzIwNzUsNiBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQk1
REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKLQkJ
CWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsK
LQkJCWRzdFBhdGggPSB0ZXN0YXBpU2NyaXB0czsKLQkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsK
LQkJCWZpbGVzID0gKAotCQkJCTUzQzNENUU1MjFFQ0U3NzIwMDg3RkRGQyAvKiBiYXNpYy5qcyBp
biBDb3B5IFN1cHBvcnQgU2NyaXB0ICovLAotCQkJCTUyRDEzMDkxMjIxQ0UxNzYwMDlDODM2QyAv
KiBmb28uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLywKLQkJCQlGRUNCOEIyQTFEMjVDQjVB
MDA2RjI0NjMgLyogdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgaW4gQ29weSBTdXBwb3J0
IFNjcmlwdCAqLywKLQkJCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBp
biBDb3B5IFN1cHBvcnQgU2NyaXB0ICovLAotCQkJKTsKLQkJCW5hbWUgPSAiQ29weSBTdXBwb3J0
IFNjcmlwdCI7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJ
fTsKIAkJNURCQjE1MjQxMzFEMEJBMTAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKQEAgLTQwODIsMTAgKzQwNjQsMTAgQEAKIAkJOTVDMThEM0UwQzkwRTdF
RjAwRTcyRjczIC8qIEpTUmV0YWluUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUmV0YWluUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2MDA5N0E1
MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExhYmVsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY4
OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJsZXJCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYODZBc3NlbWJsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDkxIC8qIFg4NlJlZ2lz
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYODZSZWdpc3RlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDkyIC8q
IFg4Nl82NFJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYODZf
NjRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY4OENCMTQwRUQx
MkI0RTAwMUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWdpc3RlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY4
OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBYODZBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTY5QTA3MjAwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY5QTA3MjEwRUQxQ0UzMzAwRjFGNjgx
IC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5dGVjb2RlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2OUEw
NzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYWJlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkxMCw5ICs3
ODkyLDkgQEAKIAkJCQlGRTEwQUFFQTFGNDRENTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICov
LAogCQkJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5OSAvKiBSZWdpc3RlckluZm8uaCAqLywKIAkJ
CQlGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20uY3BwICovLAorCQkJCTk2ODhD
QjE0MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCAqLywKIAkJCQk5Njg4Q0Ix
NDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi8sCiAJCQkJOTY4OENCMTQwRUQx
MkI0RTAwMUQ2NDkxIC8qIFg4NlJlZ2lzdGVycy5oICovLAotCQkJCTk2ODhDQjE0MEVEMTJCNEUw
MDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYXNzZW1i
bGVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg2NTYsNyArODYzOCw3IEBACiAJ
CQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFMUUyQzQwMjI0MERENjIwMEY2QjcyOSAvKiBBUk02NEVBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcyMiAvKiBB
Uk02NFJlZ2lzdGVycy5oICovLAorCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcyMiAvKiBBUk02
NFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMy
IC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4
MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4
MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwMDk4LDkgKzEwMDgwLDkgQEAKIAkJCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI2RDc1MzE4QTMzNzkzMDA0
QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1
MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdp
c3RlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBY
ODZfNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlFOTJFMUJEMTdGQTQwMDFB
QTQxMyAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdB
QzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyODJCQkIxRkU5MzBBRjAwRURBRjcx
IC8qIFlhcnJFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyMDgsNyArMTAxOTAsNyBA
QAogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkJMTRCRDU5QkMwQTNFOEY5MDAwQkFGNTlDIC8qIFNv
dXJjZXMgKi8sCiAJCQkJMTRCRDU5QkQwQTNFOEY5MDAwQkFGNTlDIC8qIEZyYW1ld29ya3MgKi8s
Ci0JCQkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8s
CisJCQkJNTM2NkZEQjIyMkQ1NDg1QjAwQkY5NEFGIC8qIENvcHkgU3VwcG9ydCBTY3JpcHRzICov
LAogCQkJCTVEQUZENkNEMTQ2QjZCNkUwMEZCRUZCNCAvKiBJbnN0YWxsIFN1cHBvcnQgU2NyaXB0
ICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMgPSAoCkBAIC0xMDUzOSw2ICsxMDUyMSwyNCBAQAog
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMvY2hlY2st
eGNmaWxlbGlzdHMuc2hcbiI7CiAJCX07CisJCTUzNjZGREIyMjJENTQ4NUIwMEJGOTRBRiAvKiBD
b3B5IFN1cHBvcnQgU2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgK
KwkJCSk7CisJCQluYW1lID0gIkNvcHkgU3VwcG9ydCBTY3JpcHRzIjsKKwkJCW91dHB1dEZpbGVM
aXN0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3No
OworCQkJc2hlbGxTY3JpcHQgPSAicnN5bmMgLXIgJHtTUkNST09UfS9BUEkvdGVzdHMvdGVzdGFw
aVNjcmlwdHMgJHtCVUlMVF9QUk9EVUNUU19ESVJ9XG4iOworCQl9OwogCQk1M0I0QkQwOTFGNjhB
Rjg5MDBEMkJFQTMgLyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCmlu
ZGV4IDFlYmUyYzAyYjY0ZTJiNTc0YzZmYzM5OTBlYTcyMGVlMjAzYzc4ODQuLmM2MTU0M2Q1ZDAw
ZDE5YmZmNjA0N2MwMTRjNTgwNDAyMjI2YTY1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwpAQCAtMzY5LDMgKzM2OSwyMCBAQCBhc3luYyBm
dW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAg
ICB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShlbnRyeS5rZXksIGZldGNoZXIpOwogICAgIHJl
dHVybiB0aGlzLmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChlbnRyeS5tb2R1bGUpOwogfQorCitm
dW5jdGlvbiBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKGtleSkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBsZXQgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsKKyAgICBpZiAo
IWVudHJ5IHx8ICFlbnRyeS5ldmFsdWF0ZWQpCisgICAgICAgIHJldHVybiBudWxsOworCisgICAg
bGV0IGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKKyAgICBsZXQgbGVuZ3RoID0g
ZGVwZW5kZW5jaWVzLmxlbmd0aDsKKyAgICBsZXQgcmVzdWx0ID0gbmV3IEBBcnJheShsZW5ndGgp
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIHJlc3VsdFtp
XSA9IGRlcGVuZGVuY2llc1tpXS5rZXk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDRj
NjhiOWZmZDYwZmFkODM0NWMxZTEwZjlhMWNmYTU5OTE1YTUwYzYuLmZhZDdjN2FiYmExMDA4NjZk
MjZkYWI4MDlhNjM3ZjNkNjU4ZGE1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEpTTW9kdWxlTG9hZGVyOjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19p
bmZvLCAmbW9kdWwKICAgICBsb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgSlNCdWlsdGlu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAg
ICBsaW5rQW5kRXZhbHVhdGVNb2R1bGUgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICByZXF1ZXN0SW1wb3J0
TW9kdWxlICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkICAg
ICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKICAgICBnZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QgICAgICAgbW9kdWxlTG9hZGVy
R2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBw
YXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICByZXF1ZXN0ZWRNb2R1bGVz
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyUmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKQEAgLTEyNSw2ICsxMjYsMjYgQEAgc3RhdGljIFN0cmluZyBw
cmludGFibGVNb2R1bGVLZXkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKICAgICByZXR1
cm4gdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLmltcGwoKTsKIH0KIAorSlNBcnJh
eSogSlNNb2R1bGVMb2FkZXI6OmRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBmdW5jdGlv
biA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5kZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkUHVibGljTmFtZSgpKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7
CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChr
ZXkpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0s
IHJlc3VsdCk7Cit9CisKIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OnByb3ZpZGVGZXRjaChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAppbmRleCBiZGE1MTQzZDc2MmIyN2MwNjI1NDg5MjkyYTE5
YWRmMzFiMjdlOWQxLi5mNTQxYThjNzlkYzdlNWNhZjViYmM4Yzk3NjNlODYzNGFlOGMxYmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKQEAg
LTg0LDYgKzg0LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXRpbGl0eSBmdW5jdGlvbnMuCiAgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIGdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIG1vZHVsZVJlY29yZCk7CisgICAgSlNBcnJheSogZGVwZW5kZW5jeUtleXNJ
ZkV2YWx1YXRlZChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIFZNJiwgSlNHbG9iYWxPYmplY3QqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374020</attachid>
            <date>2019-07-12 10:37:47 -0700</date>
            <delta_ts>2019-07-12 11:20:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199746-20190712103743.patch</filename>
            <type>text/plain</type>
            <size>66462</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTAwN2JiNzY4MGFlYmFlYWIzZDRjYzQ3MDg3ODVhMDY5MDUzMDBkLi43MTQ4ZmViNjQ2YzQyYjNi
MDNhZTY3NDE2ZWM4NDEwZGQ3YTVmZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOS0wNy0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGdldCBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiBh
IGdpdmVuIEpTU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWV0aG9kIG9ubHkgcmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGlmIHRoZSBt
b2R1bGUgd2FzCisgICAgICAgIGFjdHVhbGx5IGV2YWx1YXRlZC4gVGVjaG5pY2FsbHksIHdlIGtu
b3cgd2hhdCB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGFyZSBhdCB0aGUgc2F0aWZ5IHBoYXNl
IGJ1dCBmb3IgQVBJIHNpbXBsaWNpdHkgd2Ugb25seSBwcm92aWRlCisgICAgICAgIHRoYXQgaW5m
b3JtYXRpb24gaWYgdGhlIG1vZHVsZSBncmFwaCB3YXMgY29tcGxldGUgZW5vdWdoIHRvIGF0Cisg
ICAgICAgIGxlYXN0IHJ1bi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgYW4gaXNz
dWUgd2hlcmUgd2Ugd291bGQgYWxsb3cgaW1wb3J0IHNwZWNpZmllcnMKKyAgICAgICAgdGhhdCBk
aWRuJ3Qgc3RhcnQgIi4vIiBvciAiLyIuCisKKyAgICAgICAgTGFzdGx5LCB0aGlzIHBhdGNoIG1h
a2VzIGl0IHNvIHRoYXQgd2UgY29weSBhbGwgc2NyaXB0cyBpbiB0aGUgQVBJL3Rlc3RzL3Rlc3Rh
cGlTY3JpcHRzIGRpcmVjdG9yeSBzbworICAgICAgICB0aGV5IGRvbid0IGhhdmUgdG8gYmUgaW5k
aXZpZHVhbGx5IGFkZGVkIHRvIHRoZSB4Y29kZSBwcm9qZWN0LgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBvcnRTcGVj
aWZpZXIpOgorICAgICAgICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyUmVz
b2x2ZSk6CisgICAgICAgIChKU0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBv
cnRNb2R1bGUpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29u
dGV4dCBkZXBlbmRlbmN5SWRlbnRpZmllcnNGb3JNb2R1bGVKU1NjcmlwdDpdKToKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIEFQSS9KU1NjcmlwdC5oOgorICAg
ICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAodGVzdEZldGNoV2l0aFR3b0N5
Y2xlKToKKyAgICAgICAgKHRlc3RGZXRjaFdpdGhUaHJlZUN5Y2xlKToKKyAgICAgICAgKHRlc3RN
b2R1bGVCeXRlY29kZUNhY2hlKToKKyAgICAgICAgKCtbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVn
YXRlIG5ld0NvbnRleHRdKToKKyAgICAgICAgKC1bSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRl
IGZldGNoTW9kdWxlU2NyaXB0Ol0pOgorICAgICAgICAoLVtKU0NvbnRleHRGaWxlTG9hZGVyRGVs
ZWdhdGUgZmluZFNjcmlwdEZvcktleTpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0RmlsZUxvYWRl
ckRlbGVnYXRlIGNvbnRleHQ6ZmV0Y2hNb2R1bGVGb3JJZGVudGlmaWVyOndpdGhSZXNvbHZlSGFu
ZGxlcjphbmRSZWplY3RIYW5kbGVyOl0pOgorICAgICAgICAodGVzdERlcGVuZGVuY2llc0FycmF5
KToKKyAgICAgICAgKHRlc3REZXBlbmRlbmNpZXNFdmFsdWF0aW9uRXJyb3IpOgorICAgICAgICAo
dGVzdERlcGVuZGVuY2llc1N5bnRheEVycm9yKToKKyAgICAgICAgKHRlc3REZXBlbmRlbmNpZXNC
YWRJbXBvcnRJZCk6CisgICAgICAgICh0ZXN0RGVwZW5kZW5jaWVzTWlzc2luZ0ltcG9ydCk6Cisg
ICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSSk6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlT
Y3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFkTW9kdWxlSW1wb3J0SWQuanM6IEFkZGVkLgor
ICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jh
ci5qczogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVu
Y3lMaXN0VGVzdHMvZGVwZW5kZW5jaWVzRW50cnkuanM6IEFkZGVkLgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Zvby5qczogQWRkZWQuCisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvbWlz
c2luZ0ltcG9ydC5qczogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRz
L2RlcGVuZGVuY3lMaXN0VGVzdHMvcmVmZXJlbmNlRXJyb3IuanM6IEFkZGVkLgorICAgICAgICAq
IEFQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL3N5bnRheEVycm9y
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS1m
dW5jdGlvbi1vdmVycmlkZXMuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzLgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmpzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9h
ZGVyLmpzOgorICAgICAgICAoZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZCk6CisgICAgICAgICog
cnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVy
OjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogc2hlbGwvQ01ha2VMaXN0cy50eHQ6CisKIDIwMTktMDctMDgg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbUG9pbnRlciBF
dmVudHNdIEVuYWJsZSBvbmx5IG9uIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBzdXBw
b3J0ZWQgaU9TIGZhbWlseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QubW0KaW5kZXggNTMzMjI4MDBmMzcwNGNiN2IzMjE5YjE2ZjVlYWZlMmJiM2QyMTA1
Zi4uMTE2MTA5YmJiZWJkOWU3Y2YyNjI0YTM5YTM4OWZjZjU5ZDM5NTI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC02OSw2ICs2OSwz
MyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0
cmVhbWluZwogfTsKIAorc3RhdGljIEV4cGVjdGVkPFVSTCwgU3RyaW5nPiBjb21wdXRlVmFsaWRJ
bXBvcnRTcGVjaWZpZXIoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHNwZWNpZmllcikK
K3sKKyAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCksIHNwZWNpZmllcik7CisgICAgaWYgKGFic29s
dXRlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlVVJMOworCisgICAgaWYg
KCFzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpICYmICFzcGVjaWZpZXIuc3RhcnRzV2l0aCgiLi8i
KSAmJiAhc3BlY2lmaWVyLnN0YXJ0c1dpdGgoIi4uLyIpKQorICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQobWFrZVN0cmluZygiTW9kdWxlIHNwZWNpZmllcjogIl9zLCBzcGVjaWZpZXIsICIg
ZG9lcyBub3Qgc3RhcnQgd2l0aCBcIi9cIiwgXCIuL1wiLCBvciBcIi4uL1wiLiJfcykpOworCisg
ICAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCcvJykpIHsKKyAgICAgICAgYWJzb2x1dGVVUkwg
PSBVUkwoVVJMKHsgfSwgImZpbGU6Ly8iKSwgc3BlY2lmaWVyKTsKKyAgICAgICAgaWYgKGFic29s
dXRlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBhYnNvbHV0ZVVSTDsKKyAgICB9
CisKKyAgICBpZiAoYmFzZSA9PSBVUkwoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBmb3IgbG9hZGluZy4iX3MpOworCisg
ICAgaWYgKCFiYXNlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1h
a2VTdHJpbmcoIlJlZmVycmVyaW5nIHNjcmlwdCdzIHVybCBpcyBub3QgdmFsaWQ6ICJfcywgYmFz
ZS5zdHJpbmcoKSkpOworCisgICAgYWJzb2x1dGVVUkwgPSBVUkwoYmFzZSwgc3BlY2lmaWVyKTsK
KyAgICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVV
Ukw7CisgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBmb3Jt
IHZhbGlkIFVSTCBmcm9tIGlkZW50aWZpZXIgYW5kIGJhc2UuIFRyaWVkOiJfcywgYWJzb2x1dGVV
Ukwuc3RyaW5nKCkpKTsKK30KKwogSWRlbnRpZmllciBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxl
TG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFs
dWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTc2LDIzICsxMDMsMjIgQEAgSWRl
bnRpZmllciBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QgPT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoa2V5
LmlzU3RyaW5nKCkgfHwga2V5LmlzU3ltYm9sKCkpOwogICAgIFN0cmluZyBuYW1lID0gIGtleS50
b1dURlN0cmluZyhleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
CisgICAgVVJMIGJhc2U7CiAgICAgaWYgKEpTU3RyaW5nKiByZWZlcnJlclN0cmluZyA9IGpzRHlu
YW1pY0Nhc3Q8SlNTdHJpbmcqPih2bSwgcmVmZXJyZXIpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1
ZSA9IHJlZmVycmVyU3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICAgICAgVVJMIHJlZmVycmVyVVJM
KHsgfSwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBVUkwgcmVmZXJyZXJVUkwoeyB9LCB2YWx1ZSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlZmVycmVyVVJMLmlzVmFsaWQoKSk7Ci0KLSAgICAgICAgVVJMIHVybCA9IFVSTChyZWZl
cnJlclVSTCwgbmFtZSk7Ci0gICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKQotICAgICAgICAgICAg
cmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdXJsKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBVUkwgdXJsID0gVVJMKHsgfSwgbmFtZSk7Ci0gICAgICAgIGlmICh1cmwuaXNWYWxp
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdXJs
KTsKKyAgICAgICAgYmFzZSA9IFdURk1vdmUocmVmZXJyZXJVUkwpOwogICAgIH0KIAotICAgIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkNvdWxkIG5vdCBmb3JtIHZhbGlkIFVSTCBmcm9tIGlk
ZW50aWZpZXIgYW5kIGJhc2UiX3MpOworICAgIGF1dG8gcmVzdWx0ID0gY29tcHV0ZVZhbGlkSW1w
b3J0U3BlY2lmaWVyKGJhc2UsIG5hbWUpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVy
biBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVzdWx0LnZhbHVlKCkpOworCisgICAgdGhy
b3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCByZXN1bHQuZXJyb3IoKSkp
OwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTEyMSwzMyArMTQ3LDEyIEBAIEpTSW50ZXJuYWxQ
cm9taXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTR2xv
YmFsT2JqZWN0KiBnCiAgICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uKTsKICAgICB9CiAK
LSAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCksIHNwZWNpZmllcik7Ci0gICAgaWYgKGFic29sdXRl
VVJMLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGltcG9ydChhYnNvbHV0ZVVSTCk7Ci0KLSAg
ICBpZiAoIXNwZWNpZmllci5zdGFydHNXaXRoKCcvJykgJiYgIXNwZWNpZmllci5zdGFydHNXaXRo
KCIuLyIpICYmICFzcGVjaWZpZXIuc3RhcnRzV2l0aCgiLi4vIikpCi0gICAgICAgIHJldHVybiBy
ZWplY3QoY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiTW9kdWxlIHNwZWNpZmllcjogIiwg
c3BlY2lmaWVyLCAiIGRvZXMgbm90IHN0YXJ0IHdpdGggXCIvXCIsIFwiLi9cIiwgb3IgXCIuLi9c
Ii4iX3MpKSk7Ci0KLSAgICBpZiAoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSkgewotICAgICAg
ICBhYnNvbHV0ZVVSTCA9IFVSTChVUkwoeyB9LCAiZmlsZTovLyIpLCBzcGVjaWZpZXIpOwotICAg
ICAgICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIGltcG9y
dChhYnNvbHV0ZVVSTCk7Ci0gICAgfQotCi0gICAgYXV0byBub0Jhc2VFcnJvck1lc3NhZ2UgPSAi
Q291bGQgbm90IGRldGVybWluZSB0aGUgYmFzZSBVUkwgZm9yIGxvYWRpbmcuIl9zOwotICAgIGlm
IChzb3VyY2VPcmlnaW4uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiByZWplY3QoY3JlYXRlRXJy
b3IoZXhlYywgbWFrZVN0cmluZyhub0Jhc2VFcnJvck1lc3NhZ2UsICIgUmVmZXJyaW5nIHNjcmlw
dCBoYXMgbm8gVVJMLiJfcykpKTsKLQotICAgIGF1dG8gcmVmZXJyZXIgPSBzb3VyY2VPcmlnaW4u
c3RyaW5nKCk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gIXNvdXJjZU9yaWdpbi5pc051bGwoKSA/
IHNvdXJjZU9yaWdpbi5zdHJpbmcoKSA6IFN0cmluZygpOwogICAgIFVSTCBiYXNlVVJMKFVSTCgp
LCByZWZlcnJlcik7Ci0gICAgaWYgKCFiYXNlVVJMLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
IHJlamVjdChjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKG5vQmFzZUVycm9yTWVzc2FnZSwg
IiBSZWZlcnJpbmcgc2NyaXB0J3MgVVJMIGlzIG5vdCB2YWxpZDogIl9zLCBiYXNlVVJMLnN0cmlu
ZygpKSkpOwotCi0gICAgVVJMIHVybChiYXNlVVJMLCBzcGVjaWZpZXIpOwotICAgIGlmICghdXJs
LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihleGVjLCBtYWtl
U3RyaW5nKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGEgdmFsaWQgVVJMIGZvciBtb2R1bGUgc3BlY2lm
aWVyLiBUcmllZDogIl9zLCB1cmwuc3RyaW5nKCkpKSk7Ci0KLSAgICByZXR1cm4gaW1wb3J0KHVy
bCk7CisgICAgYXV0byByZXN1bHQgPSBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoYmFzZVVS
TCwgc3BlY2lmaWVyKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gaW1wb3J0KHJl
c3VsdC52YWx1ZSgpKTsKKyAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVycm9yKGV4ZWMsIHJlc3Vs
dC5lcnJvcigpKSk7CiB9CiAKIEpTSW50ZXJuYWxQcm9taXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6
bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUga2V5LCBKU1ZhbHVlLCBKU1ZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQppbmRleCAwOTRjOTM3MWE4YjVmOGFl
NzQxYWFkYjlhZGNiNTY0OGY0ZTBiYWZlLi41MjUzMDEzZDEyNjkxOWE4NGRmMzNjM2Q0YjQ3MTQz
OGVhYWEzNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtMTQ4
LDYgKzE0OCwyNSBAQAogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRv
UmVmKHZtLCByZXN1bHQpIGluQ29udGV4dDpzZWxmXTsKIH0KIAorLSAoSlNWYWx1ZSAqKWRlcGVu
ZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0OihKU1NjcmlwdCAqKXNjcmlwdAorewor
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhtX2NvbnRleHQpOworICAgIEpTQzo6Vk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworCisg
ICAgaWYgKHNjcmlwdC50eXBlICE9IGtKU1NjcmlwdFR5cGVNb2R1bGUpIHsKKyAgICAgICAgc2Vs
Zi5leGNlcHRpb25IYW5kbGVyKHNlbGYsIFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1l
c3NhZ2U6QCJzY3JpcHQgaXMgbm90IGEgbW9kdWxlIiBpbkNvbnRleHQ6c2VsZl0pOworICAgICAg
ICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OnNlbGZdOworICAg
IH0KKworICAgIEpTQzo6SlNBcnJheSogcmVzdWx0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+ZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZChleGVjLCBKU0M6
OmpzU3RyaW5nKCZ2bSwgW1tzY3JpcHQgc291cmNlVVJMXSBhYnNvbHV0ZVN0cmluZ10pKTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIoc2VsZiwgW0pT
VmFsdWUgdmFsdWVXaXRoTmV3RXJyb3JGcm9tTWVzc2FnZTpAInNjcmlwdCBoYXMgbm90IHJ1biBp
biBjb250ZXh0IG9yIHdhcyBub3QgZXZhbHVhdGVkIHN1Y2Nlc3NmdWxseSIgaW5Db250ZXh0OnNl
bGZdKTsKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4
dDpzZWxmXTsKKyAgICB9CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYodm0sIHJlc3VsdCkgaW5Db250ZXh0OnNlbGZdOworfQorCiAtICh2b2lkKXNldEV4Y2Vw
dGlvbjooSlNWYWx1ZSAqKXZhbHVlCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KG1fY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0
ZS5oCmluZGV4IGY0NjU2YjkyOWM1MjhmNTk2MTQwNTI2MjE1YzVmNTYwOWZhN2NjNTAuLjc1ZjUy
NmI5NzgzNDE4MTIwODM0NjEyMjgyYzUwZDMxY2I3MDA1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oCkBAIC04NCw3ICs4NCw3IEBACiBAcHJvcGVy
dHkgKHNldHRlcj1fc2V0RGVidWdnZXJSdW5Mb29wOikgQ0ZSdW5Mb29wUmVmIF9kZWJ1Z2dlclJ1
bkxvb3AgSlNDX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qISBA
YWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRoZSBjb250ZXh0IHdpbGwgdXNlIHdoZW4gdHJ5aW5nIHRv
IGxvYWQgYSBtb2R1bGUuIE5vdGUsIHRoaXMgZGVsZWdhdGUgd2lsbCBiZSBpZ25vcmVkIGZvciBj
b250ZXh0cyByZXR1cm5lZCBieSBVSVdlYlZpZXcuICovCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
d2VhaykgaWQgPEpTTW9kdWxlTG9hZGVyRGVsZWdhdGU+IG1vZHVsZUxvYWRlckRlbGVnYXRlIEpT
Q19BUElfQVZBSUxBQkxFKG1hY29zKEpTQ19NQUNfVEJBKSwgaW9zKEpTQ19JT1NfVEJBKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPEpTTW9kdWxlTG9hZGVyRGVsZWdhdGU+IG1v
ZHVsZUxvYWRlckRlbGVnYXRlIEpTQ19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEz
LjApKTsKIAogLyohCiAgQG1ldGhvZApAQCAtOTQsNyArOTQsMTcgQEAKIAogIE90aGVyd2lzZSwg
aWYgdGhlIHNjcmlwdCB3YXMgY3JlYXRlZCB3aXRoIGtKU1NjcmlwdFR5cGVNb2R1bGUsIHRoZSBt
b2R1bGUgd2lsbCBiZSBydW4gYXN5bmNocm9ub3VzbHkgYW5kIHdpbGwgcmV0dXJuIGEgcHJvbWlz
ZSByZXNvbHZlZCB3aGVuIHRoZSBtb2R1bGUgYW5kIGFueSB0cmFuc2l0aXZlIGRlcGVuZGVuY2ll
cyBhcmUgbG9hZGVkLiBUaGUgbW9kdWxlIGxvYWRlciB3aWxsIHRyZWF0IHRoZSBzY3JpcHQgYXMg
aWYgaXQgaGFkIGJlZW4gcmV0dXJuZWQgZnJvbSBhIGRlbGVnYXRlIGNhbGwgdG8gbW9kdWxlTG9h
ZGVyRGVsZWdhdGUuIFRoaXMgbWlycm9ycyB0aGUgSmF2YVNjcmlwdCBkeW5hbWljIGltcG9ydCBv
cGVyYXRpb24uCiAgKi8KLS0gKEpTVmFsdWUgKilldmFsdWF0ZUpTU2NyaXB0OihKU1NjcmlwdCAq
KXNjcmlwdDsKKy8vIEZJWE1FOiBCZWZvcmUgbWFraW5nIHRoaXMgcHVibGljIG5lZWQgdG8gZml4
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzE0CistIChKU1Zh
bHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQgKilzY3JpcHQgSlNDX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworCisvKiEKKyBAbWV0aG9kCisgQGFic3RyYWN0
IEdldCB0aGUgaWRlbnRpZmllcnMgb2YgdGhlIG1vZHVsZXMgYSBKU1NjcmlwdCBkZXBlbmRzIG9u
IGluIHRoaXMgY29udGV4dC4KKyBAcGFyYW0gc2NyaXB0IHRoZSBKU1NjcmlwdCB0byBkZXRlcm1p
bmUgdGhlIGRlcGVuZGVuY2llcyBvZi4KKyBAcmVzdWx0IEFuIEFycmF5IGNvbnRhaW5pbmcgYWxs
IHRoZSBpZGVudGlmaWVycyBvZiBtb2R1bGVzIHNjcmlwdCBkZXBlbmRzIG9uLgorIEBkaXNjdXNz
aW9uIElmIHRoZSBwcm92aWRlZCBKU1NjcmlwdCB3YXMgbm90IGNyZWF0ZWQgd2l0aCBrSlNTY3Jp
cHRUeXBlTW9kdWxlLCBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uIEFsc28sIGlmIHRoZSBz
Y3JpcHQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkIGluIHRoaXMgY29udGV4dCBhbiBl
cnJvciB3aWxsIGJlIHRocm93LgorICovCistIChKU1ZhbHVlICopZGVwZW5kZW5jeUlkZW50aWZp
ZXJzRm9yTW9kdWxlSlNTY3JpcHQ6KEpTU2NyaXB0ICopc2NyaXB0IEpTQ19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU2NyaXB0LmgKaW5kZXggZDU5YjBiNGYyOWVhNjAyZmEwOWI4ZWJjYTNhMjU1ZDE2YTMyZTEy
OS4uMTJjY2IwNTkzZWY5ZDExMWFkZTdiMGExNDAxOTY4ZjExYWVmNDg1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHQuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBKU1NjcmlwdFR5cGUpIHsKIH07CiAKIAotSlNDX0NMQVNTX0FWQUlMQUJMRSht
YWNvcyhKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpCitKU0NfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogQGludGVyZmFjZSBKU1NjcmlwdCA6IE5TT2JqZWN0
CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM2M2NjZWQwNDg3ZTljMGU2Y2VlNTc4MDY5NjM4YWMwZGMyZWI3NDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDE2ICswLDAgQEAKLS8vIHRlc3RhcGkgZnVuY3Rpb24gb3ZlcnJpZGVzIGZvciB0ZXN0
aW5nLgotb3ZlcnJpZGUgJSUleyAvKiBPcmlnaW5hbCBmMSAqLyB9JSUlCi13aXRoICUlJXsgLyog
T3ZlcnJpZGRlbiBmMSAqLyB9JSUlCi0KLW92ZXJyaWRlICMkJXsKLSAgICAvLyBPcmlnaW5hbCBm
MgotfSMkJQotd2l0aCAkJCR7IC8qIE92ZXJyaWRkZW4gZjIgKi8gfSQkJAotCi1vdmVycmlkZSAl
JSV7IC8qIE9yaWdpbmFsIGYzICovIH0lJSUKLXdpdGggJSUleyAvKiBPdmVycmlkZGVuIGYzICov
IH0lJSUKLQotb3ZlcnJpZGUgJSUlewotLyogT3JpZ2luYWwgZjQgKi8KLX0lJSUKLXdpdGggJSUl
eyAvKiBPdmVycmlkZGVuIGY0ICovIH0lJSUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkMzcwMWMyMWUw
NTg2NmE3YTIwYTFhZWYyMmNiMGZiMjgzYzRmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBibHVkZ2VvbkFyZ3VtZW50cygp
IHsgaWYgKDApIGFyZ3VtZW50czsgcmV0dXJuIGZ1bmN0aW9uIGcoKSB7fSB9Ci1oID0gYmx1ZGdl
b25Bcmd1bWVudHMoKTsKLWdjKCk7Ci0KLXZhciBmYWlsZWQgPSBmYWxzZTsKLWZ1bmN0aW9uIHBh
c3MobXNnKQotewotICAgIHByaW50KCJQQVNTOiAiICsgbXNnLCAiZ3JlZW4iKTsKLX0KLQotZnVu
Y3Rpb24gZmFpbChtc2cpCi17Ci0gICAgcHJpbnQoIkZBSUw6ICIgKyBtc2csICJyZWQiKTsKLSAg
ICBmYWlsZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZShhLCBiKQotewotICAgIHZh
ciBldmFsQTsKLSAgICB0cnkgewotICAgICAgICBldmFsQSA9IGV2YWwoYSk7Ci0gICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgIGV2YWxBID0gZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGV2YWxBID09
IGIgfHwgaXNOYU4oZXZhbEEpICYmIHR5cGVvZiBldmFsQSA9PSAnbnVtYmVyJyAmJiBpc05hTihi
KSAmJiB0eXBlb2YgYiA9PSAnbnVtYmVyJykKLSAgICAgICAgcGFzcyhhICsgIiBzaG91bGQgYmUg
IiArIGIgKyAiIGFuZCBpcy4iKTsKLSAgICBlbHNlCi0gICAgICAgIGZhaWwoYSArICIgc2hvdWxk
IGJlICIgKyBiICsgIiBidXQgaW5zdGVhZCBpcyAiICsgZXZhbEEgKyAiLiIpOwotfQotCi1mdW5j
dGlvbiBzaG91bGRUaHJvdyhhKQotewotICAgIHZhciBldmFsQTsKLSAgICB0cnkgewotICAgICAg
ICBldmFsKGEpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBwYXNzKGEgKyAiIHRocmV3OiAi
ICsgZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmYWlsKGEgKyAiIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uLiIpOwotfQotCi1mdW5jdGlvbiBnbG9iYWxTdGF0aWNGdW5jdGlv
bigpCi17Ci0gICAgcmV0dXJuIDQ7Ci19Ci0KLXNob3VsZEJlKCJnbG9iYWxTdGF0aWNWYWx1ZSIs
IDMpOwotc2hvdWxkQmUoImdsb2JhbFN0YXRpY0Z1bmN0aW9uKCkiLCA0KTsKLXNob3VsZEJlKCJ0
aGlzLmdsb2JhbFN0YXRpY0Z1bmN0aW9uKCkiLCA0KTsKLQotZnVuY3Rpb24gZ2xvYmFsU3RhdGlj
RnVuY3Rpb24yKCkgewotICAgIHJldHVybiAxMDsKLX0KLXNob3VsZEJlKCJnbG9iYWxTdGF0aWNG
dW5jdGlvbjIoKTsiLCAxMCk7Ci10aGlzLmdsb2JhbFN0YXRpY0Z1bmN0aW9uMiA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gMjA7IH0KLXNob3VsZEJlKCJnbG9iYWxTdGF0aWNGdW5jdGlvbjIoKTsiLCAy
MCk7Ci1zaG91bGRCZSgidGhpcy5nbG9iYWxTdGF0aWNGdW5jdGlvbjIoKTsiLCAyMCk7Ci0KLWZ1
bmN0aW9uIGlBbU5vdEFTdGF0aWNGdW5jdGlvbigpIHsgcmV0dXJuIDEwOyB9Ci1zaG91bGRCZSgi
aUFtTm90QVN0YXRpY0Z1bmN0aW9uKCk7IiwgMTApOwotdGhpcy5pQW1Ob3RBU3RhdGljRnVuY3Rp
b24gPSBmdW5jdGlvbigpIHsgcmV0dXJuIDIwOyB9Ci1zaG91bGRCZSgiaUFtTm90QVN0YXRpY0Z1
bmN0aW9uKCk7IiwgMjApOwotCi1zaG91bGRCZSgidHlwZW9mIE15T2JqZWN0IiwgImZ1bmN0aW9u
Iik7IC8vIG91ciBvYmplY3QgaW1wbGVtZW50cyAnY2FsbCcKLU15T2JqZWN0LmNhbnRGaW5kID0g
MTsKLXNob3VsZEJlKCJNeU9iamVjdC5jYW50RmluZCIsIHVuZGVmaW5lZCk7Ci1NeU9iamVjdC5y
ZWd1bGFyVHlwZSA9IDE7Ci1zaG91bGRCZSgiTXlPYmplY3QucmVndWxhclR5cGUiLCAxKTsKLU15
T2JqZWN0LmFsd2F5c09uZSA9IDI7Ci1zaG91bGRCZSgiTXlPYmplY3QuYWx3YXlzT25lIiwgMSk7
Ci1NeU9iamVjdC5jYW50RGVsZXRlID0gMTsKLWRlbGV0ZSBNeU9iamVjdC5jYW50RGVsZXRlOwot
c2hvdWxkQmUoIk15T2JqZWN0LmNhbnREZWxldGUiLCAxKTsKLXNob3VsZEJlKCJkZWxldGUgTXlP
YmplY3QudGhyb3dPbkRlbGV0ZSIsICJhbiBleGNlcHRpb24iKTsKLU15T2JqZWN0LmNhbnRTZXQg
PSAxOwotc2hvdWxkQmUoIk15T2JqZWN0LmNhbnRTZXQiLCB1bmRlZmluZWQpOwotc2hvdWxkQmUo
Ik15T2JqZWN0LnRocm93T25HZXQiLCAiYW4gZXhjZXB0aW9uIik7Ci1zaG91bGRCZSgiTXlPYmpl
Y3QudGhyb3dPblNldCA9IDUiLCAiYW4gZXhjZXB0aW9uIik7Ci1zaG91bGRCZSgiTXlPYmplY3Qo
J3Rocm93T25DYWxsJykiLCAiYW4gZXhjZXB0aW9uIik7Ci1zaG91bGRCZSgibmV3IE15T2JqZWN0
KCd0aHJvd09uQ29uc3RydWN0JykiLCAiYW4gZXhjZXB0aW9uIik7Ci1zaG91bGRCZSgiJ3Rocm93
T25IYXNJbnN0YW5jZScgaW5zdGFuY2VvZiBNeU9iamVjdCIsICJhbiBleGNlcHRpb24iKTsKLQot
TXlPYmplY3QubnVsbEdldEZvcndhcmRTZXQgPSAxOwotc2hvdWxkQmUoIk15T2JqZWN0Lm51bGxH
ZXRGb3J3YXJkU2V0IiwgMSk7Ci0KLXZhciBmb3VuZE15UHJvcGVydHlOYW1lID0gZmFsc2U7Ci12
YXIgZm91bmRSZWd1bGFyVHlwZSA9IGZhbHNlOwotZm9yICh2YXIgcCBpbiBNeU9iamVjdCkgewot
ICAgIGlmIChwID09ICJteVByb3BlcnR5TmFtZSIpCi0gICAgICAgIGZvdW5kTXlQcm9wZXJ0eU5h
bWUgPSB0cnVlOwotICAgIGlmIChwID09ICJyZWd1bGFyVHlwZSIpCi0gICAgICAgIGZvdW5kUmVn
dWxhclR5cGUgPSB0cnVlOwotfQotCi1pZiAoZm91bmRNeVByb3BlcnR5TmFtZSkKLSAgICBwYXNz
KCJNeU9iamVjdC5teVByb3BlcnR5TmFtZSB3YXMgZW51bWVyYXRlZCIpOwotZWxzZQotICAgIGZh
aWwoIk15T2JqZWN0Lm15UHJvcGVydHlOYW1lIHdhcyBub3QgZW51bWVyYXRlZCIpOwotCi1pZiAo
Zm91bmRSZWd1bGFyVHlwZSkKLSAgICBwYXNzKCJNeU9iamVjdC5yZWd1bGFyVHlwZSB3YXMgZW51
bWVyYXRlZCIpOwotZWxzZQotICAgIGZhaWwoIk15T2JqZWN0LnJlZ3VsYXJUeXBlIHdhcyBub3Qg
ZW51bWVyYXRlZCIpOwotCi12YXIgYWx3YXlzT25lRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJhbHdheXNPbmUiKTsKLXNob3VsZEJlKCd0eXBl
b2YgYWx3YXlzT25lRGVzY3JpcHRvcicsICJvYmplY3QiKTsKLXNob3VsZEJlKCdhbHdheXNPbmVE
ZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QuYWx3YXlzT25lKTsKLXNob3VsZEJlKCdhbHdheXNP
bmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOwotc2hvdWxkQmUoJ2Fsd2F5c09uZURl
c2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsgLy8gQWN0dWFsbHkgaXQgaXMuCi12YXIgY2Fu
dEZpbmREZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVj
dCwgImNhbnRGaW5kIik7Ci1zaG91bGRCZSgndHlwZW9mIGNhbnRGaW5kRGVzY3JpcHRvcicsICJv
YmplY3QiKTsKLXNob3VsZEJlKCdjYW50RmluZERlc2NyaXB0b3IudmFsdWUnLCBNeU9iamVjdC5j
YW50RmluZCk7Ci1zaG91bGRCZSgnY2FudEZpbmREZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRy
dWUpOwotc2hvdWxkQmUoJ2NhbnRGaW5kRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwot
dHJ5IHsKLSAgICAvLyBJZiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSByZXR1cm5lZCBhbiBh
Y2Nlc3MgZGVzY3JpcHRvciwgdGhpcyB3b3VsZG4ndCB0aHJvdy4KLSAgICBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAidGhyb3dPbkdldCIpOwotfSBjYXRjaCAoZSkg
ewotICAgIHBhc3MoImdldHRpbmcgcHJvcGVydHkgZGVzY3JpcHRvciBvZiB0aHJvd09uR2V0IHRo
cmV3IGV4Y2VwdGlvbiIpOwotfQotdmFyIG15UHJvcGVydHlOYW1lRGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJteVByb3BlcnR5TmFtZSIpOwot
c2hvdWxkQmUoJ3R5cGVvZiBteVByb3BlcnR5TmFtZURlc2NyaXB0b3InLCAib2JqZWN0Iik7Ci1z
aG91bGRCZSgnbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QubXlQcm9w
ZXJ0eU5hbWUpOwotc2hvdWxkQmUoJ215UHJvcGVydHlOYW1lRGVzY3JpcHRvci5jb25maWd1cmFi
bGUnLCB0cnVlKTsKLXNob3VsZEJlKCdteVByb3BlcnR5TmFtZURlc2NyaXB0b3IuZW51bWVyYWJs
ZScsIGZhbHNlKTsgLy8gQWN0dWFsbHkgaXQgaXMuCi10cnkgewotICAgIC8vIGlmIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcigpIHJldHVybmVkIGFuIGFjY2VzcyBkZXNjcmlwdG9yLCB0aGlzIHdv
dWxkbid0IHRocm93LgotICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmpl
Y3QsICJoYXNQcm9wZXJ0eUxpZSIpOwotfSBjYXRjaCAoZSkgewotICAgIHBhc3MoImdldHRpbmcg
cHJvcGVydHkgZGVzY3JpcHRvciBvZiBoYXNQcm9wZXJ0eUxpZSB0aHJldyBleGNlcHRpb24iKTsK
LX0KLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAi
ZG9lc05vdEV4aXN0IiknLCB1bmRlZmluZWQpOwotCi1teU9iamVjdCA9IG5ldyBNeU9iamVjdCgp
OwotCi1zaG91bGRCZSgiZGVsZXRlIE15T2JqZWN0LnJlZ3VsYXJUeXBlIiwgdHJ1ZSk7Ci1zaG91
bGRCZSgiTXlPYmplY3QucmVndWxhclR5cGUiLCB1bmRlZmluZWQpOwotc2hvdWxkQmUoIk15T2Jq
ZWN0KDApIiwgMSk7Ci1zaG91bGRCZSgiTXlPYmplY3QoKSIsIHVuZGVmaW5lZCk7Ci1zaG91bGRC
ZSgidHlwZW9mIG15T2JqZWN0IiwgIm9iamVjdCIpOwotc2hvdWxkQmUoIk15T2JqZWN0ID8gMSA6
IDAiLCB0cnVlKTsgLy8gdG9Cb29sZWFuCi1zaG91bGRCZSgiK015T2JqZWN0IiwgMSk7IC8vIHRv
TnVtYmVyCi1zaG91bGRCZSgiKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChNeU9iamVj
dCkpIiwgIltvYmplY3QgTXlPYmplY3RdIik7IC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcK
LXNob3VsZEJlKCIoTXlPYmplY3QudG9TdHJpbmcoKSkiLCAiW29iamVjdCBNeU9iamVjdF0iKTsg
Ly8gdG9TdHJpbmcKLXNob3VsZEJlKCJTdHJpbmcoTXlPYmplY3QpIiwgIk15T2JqZWN0QXNTdHJp
bmciKTsgLy8gdG9TdHJpbmcKLXNob3VsZEJlKCJNeU9iamVjdCAtIDAiLCAxKTsgLy8gdG9OdW1i
ZXIKLXNob3VsZEJlKCJNeU9iamVjdC52YWx1ZU9mKCkiLCAxKTsgLy8gdmFsdWVPZgotCi1zaG91
bGRCZSgidHlwZW9mIE15Q29uc3RydWN0b3IiLCAib2JqZWN0Iik7Ci1jb25zdHJ1Y3RlZE9iamVj
dCA9IG5ldyBNeUNvbnN0cnVjdG9yKDEpOwotc2hvdWxkQmUoInR5cGVvZiBjb25zdHJ1Y3RlZE9i
amVjdCIsICJvYmplY3QiKTsKLXNob3VsZEJlKCJjb25zdHJ1Y3RlZE9iamVjdC52YWx1ZSIsIDEp
Owotc2hvdWxkQmUoIm15T2JqZWN0IGluc3RhbmNlb2YgTXlPYmplY3QiLCB0cnVlKTsKLXNob3Vs
ZEJlKCIobmV3IE9iamVjdCgpKSBpbnN0YW5jZW9mIE15T2JqZWN0IiwgZmFsc2UpOwotCi1zaG91
bGRUaHJvdygibmV3IE15QmFkQ29uc3RydWN0b3IoKSIpOwotCi1NeU9iamVjdC5udWxsR2V0U2V0
ID0gMTsKLXNob3VsZEJlKCJNeU9iamVjdC5udWxsR2V0U2V0IiwgMSk7Ci1zaG91bGRUaHJvdygi
TXlPYmplY3QubnVsbENhbGwoKSIpOwotc2hvdWxkVGhyb3coIk15T2JqZWN0Lmhhc1Byb3BlcnR5
TGllIik7Ci0KLWRlcml2ZWQgPSBuZXcgRGVyaXZlZCgpOwotCi1zaG91bGRCZSgiZGVyaXZlZCBp
bnN0YW5jZW9mIERlcml2ZWQiLCB0cnVlKTsKLXNob3VsZEJlKCJkZXJpdmVkIGluc3RhbmNlb2Yg
QmFzZSIsIHRydWUpOwotCi0vLyBiYXNlIHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucyByZXR1cm4g
MSB3aGVuIGNhbGxlZC9nb3R0ZW47IGRlcml2ZWQsIDIKLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VQ
cm90b0R1cCgpIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZC5iYXNlUHJvdG8oKSIsIDEpOwotc2hv
dWxkQmUoImRlcml2ZWQuYmFzZUR1cCIsIDIpOwotc2hvdWxkQmUoImRlcml2ZWQuYmFzZU9ubHki
LCAxKTsKLXNob3VsZEJlKCJkZXJpdmVkLnByb3RvT25seSgpIiwgMik7Ci1zaG91bGRCZSgiZGVy
aXZlZC5wcm90b0R1cCIsIDIpOwotc2hvdWxkQmUoImRlcml2ZWQuZGVyaXZlZE9ubHkiLCAyKQot
Ci1zaG91bGRCZSgiZGVyaXZlZC5iYXNlSGFyZE51bGwoKSIsIHVuZGVmaW5lZCkKLQotLy8gYmFz
ZSBwcm9wZXJ0aWVzIHRocm93IDEgd2hlbiBzZXQ7IGRlcml2ZWQsIDIKLXNob3VsZEJlKCJkZXJp
dmVkLmJhc2VEdXAgPSAwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZC5iYXNlT25seSA9IDAiLCAx
KTsKLXNob3VsZEJlKCJkZXJpdmVkLmRlcml2ZWRPbmx5ID0gMCIsIDIpCi1zaG91bGRCZSgiZGVy
aXZlZC5wcm90b0R1cCA9IDAiLCAyKTsKLQotZGVyaXZlZDIgPSBuZXcgRGVyaXZlZDIoKTsKLQot
c2hvdWxkQmUoImRlcml2ZWQyIGluc3RhbmNlb2YgRGVyaXZlZDIiLCB0cnVlKTsKLXNob3VsZEJl
KCJkZXJpdmVkMiBpbnN0YW5jZW9mIERlcml2ZWQiLCB0cnVlKTsKLXNob3VsZEJlKCJkZXJpdmVk
MiBpbnN0YW5jZW9mIEJhc2UiLCB0cnVlKTsKLQotLy8gYmFzZSBwcm9wZXJ0aWVzIGFuZCBmdW5j
dGlvbnMgcmV0dXJuIDEgd2hlbiBjYWxsZWQvZ290dGVuOyBkZXJpdmVkLCAyCi1zaG91bGRCZSgi
ZGVyaXZlZDIuYmFzZVByb3RvRHVwKCkiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkMi5iYXNlUHJv
dG8oKSIsIDEpOwotc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VEdXAiLCAyKTsKLXNob3VsZEJlKCJk
ZXJpdmVkMi5iYXNlT25seSIsIDEpOwotc2hvdWxkQmUoImRlcml2ZWQyLnByb3RvT25seSgpIiwg
Mik7Ci1zaG91bGRCZSgiZGVyaXZlZDIucHJvdG9EdXAiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVk
Mi5kZXJpdmVkT25seSIsIDIpCi0KLS8vIGJhc2UgcHJvcGVydGllcyB0aHJvdyAxIHdoZW4gc2V0
OyBkZXJpdmVkLCAyCi1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZUR1cCA9IDAiLCAyKTsKLXNob3Vs
ZEJlKCJkZXJpdmVkMi5iYXNlT25seSA9IDAiLCAxKTsKLXNob3VsZEJlKCJkZXJpdmVkMi5kZXJp
dmVkT25seSA9IDAiLCAyKQotc2hvdWxkQmUoImRlcml2ZWQyLnByb3RvRHVwID0gMCIsIDIpOwot
Ci1zaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAiYmFz
ZVByb3RvIiknLCB1bmRlZmluZWQpOwotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZGVyaXZlZCwgImJhc2VQcm90b0R1cCIpJywgdW5kZWZpbmVkKTsKLXZhciBiYXNl
RHVwRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwg
ImJhc2VEdXAiKTsKLXNob3VsZEJlKCd0eXBlb2YgYmFzZUR1cERlc2NyaXB0b3InLCAib2JqZWN0
Iik7Ci1zaG91bGRCZSgnYmFzZUR1cERlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVkLmJhc2VEdXAp
Owotc2hvdWxkQmUoJ2Jhc2VEdXBEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOwotc2hv
dWxkQmUoJ2Jhc2VEdXBEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7Ci12YXIgYmFzZU9u
bHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAi
YmFzZU9ubHkiKTsKLXNob3VsZEJlKCd0eXBlb2YgYmFzZU9ubHlEZXNjcmlwdG9yJywgIm9iamVj
dCIpOwotc2hvdWxkQmUoJ2Jhc2VPbmx5RGVzY3JpcHRvci52YWx1ZScsIGRlcml2ZWQuYmFzZU9u
bHkpOwotc2hvdWxkQmUoJ2Jhc2VPbmx5RGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsK
LXNob3VsZEJlKCdiYXNlT25seURlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKLXNob3Vs
ZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJwcm90b09ubHki
KScsIHVuZGVmaW5lZCk7Ci12YXIgcHJvdG9EdXBEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAicHJvdG9EdXAiKTsKLXNob3VsZEJlKCd0eXBlb2Yg
cHJvdG9EdXBEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ3Byb3RvRHVwRGVzY3Jp
cHRvci52YWx1ZScsIGRlcml2ZWQucHJvdG9EdXApOwotc2hvdWxkQmUoJ3Byb3RvRHVwRGVzY3Jp
cHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3Iu
ZW51bWVyYWJsZScsIGZhbHNlKTsKLXZhciBkZXJpdmVkT25seURlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJkZXJpdmVkT25seSIpOwotc2hvdWxk
QmUoJ3R5cGVvZiBkZXJpdmVkT25seURlc2NyaXB0b3InLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgn
ZGVyaXZlZE9ubHlEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5kZXJpdmVkT25seSk7Ci1zaG91
bGRCZSgnZGVyaXZlZE9ubHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOwotc2hvdWxk
QmUoJ2Rlcml2ZWRPbmx5RGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwotCi1zaG91bGRC
ZSgidW5kZWZpbmVkIGluc3RhbmNlb2YgTXlPYmplY3QiLCBmYWxzZSk7Ci1FdmlsRXhjZXB0aW9u
T2JqZWN0Lmhhc0luc3RhbmNlID0gZnVuY3Rpb24gZigpIHsgcmV0dXJuIGYoKTsgfTsKLUV2aWxF
eGNlcHRpb25PYmplY3QuX19wcm90b19fID0gdW5kZWZpbmVkOwotc2hvdWxkVGhyb3coInVuZGVm
aW5lZCBpbnN0YW5jZW9mIEV2aWxFeGNlcHRpb25PYmplY3QiKTsKLUV2aWxFeGNlcHRpb25PYmpl
Y3QuaGFzSW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9Owotc2hvdWxkQmUo
InVuZGVmaW5lZCBpbnN0YW5jZW9mIEV2aWxFeGNlcHRpb25PYmplY3QiLCB0cnVlKTsKLQotRXZp
bEV4Y2VwdGlvbk9iamVjdC50b051bWJlciA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH0K
LXNob3VsZFRocm93KCJFdmlsRXhjZXB0aW9uT2JqZWN0KjUiKTsKLUV2aWxFeGNlcHRpb25PYmpl
Y3QudG9TdHJpbmdFeHBsaWNpdCA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH0KLXNob3Vs
ZFRocm93KCJTdHJpbmcoRXZpbEV4Y2VwdGlvbk9iamVjdCkiKTsKLQotc2hvdWxkQmUoImNvbnNv
bGUiLCAiW29iamVjdCBDb25zb2xlXSIpOwotc2hvdWxkQmUoInR5cGVvZiBjb25zb2xlLmxvZyIs
ICJmdW5jdGlvbiIpOwotCi1zaG91bGRCZSgiRW1wdHlPYmplY3QiLCAiW29iamVjdCBDYWxsYmFj
a09iamVjdF0iKTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpCi0gICAgUHJvcGVydHlD
YXRjaGFsbHMueCA9IGk7Ci1zaG91bGRCZSgiUHJvcGVydHlDYXRjaGFsbHMueCIsIDQpOwotCi1m
b3IgKHZhciBpID0gMDsgaSA8IDY7ICsraSkKLSAgICB2YXIgeCA9IFByb3BlcnR5Q2F0Y2hhbGxz
Lng7Ci1zaG91bGRCZSgieCIsIG51bGwpOwotdmFyIG1ha2VfdGhyb3cgPSAnbWFrZV90aHJvdyc7
Ci1zaG91bGRUaHJvdygiUHJvcGVydHlDYXRjaGFsbHNbbWFrZV90aHJvd109MSIpOwotbWFrZV90
aHJvdyA9IDA7Ci1zaG91bGRUaHJvdygiUHJvcGVydHlDYXRjaGFsbHNbbWFrZV90aHJvd109MSIp
OwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICBmb3IgKHZhciBwIGluIFBy
b3BlcnR5Q2F0Y2hhbGxzKSB7Ci0gICAgICAgIGlmIChwID09ICJ4IikKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBzaG91bGRCZSgicCIsIGkgJSAxMCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotUHJvcGVydHlDYXRjaGFsbHMuX19wcm90b19fID0geyB5OiAxIH07Ci1mb3Ig
KHZhciBpID0gMDsgaSA8IDY7ICsraSkKLSAgICB2YXIgeSA9IFByb3BlcnR5Q2F0Y2hhbGxzLnk7
Ci1zaG91bGRCZSgieSIsIG51bGwpOwotCi12YXIgbyA9IHsgX19wcm90b19fOiBQcm9wZXJ0eUNh
dGNoYWxscyB9OwotZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpCi0gICAgdmFyIHogPSBQcm9w
ZXJ0eUNhdGNoYWxscy56Owotc2hvdWxkQmUoInoiLCBudWxsKTsKLQotaWYgKGZhaWxlZCkKLSAg
ICB0aHJvdyAiU29tZSB0ZXN0cyBmYWlsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDA2ZThkMmI3ODE2NDEzM2FjYjhkOTdlODlhM2VhYWM2MGYz
NTE0MTYuLjNjYTRjYzlhZmRhZGEyNjQzMjMyYjIzMDE0MDI1ZjNiNjVlYTllZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTE5NDYsNyArMTk0Niw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RGZXRjaFdpdGhUd29DeWNsZSgpCiAgICAgICAgICAgICAgICAg
ICAgIGVycm9yOm5pbF1dXTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2lkZW50aWZpZXIgaXNF
cXVhbFRvT2JqZWN0OkAiZmlsZTovLy9mb28uanMiXSkgewogICAgICAgICAgICAgICAgIFtyZXNv
bHZlIGNhbGxXaXRoQXJndW1lbnRzOkBbW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRU
eXBlTW9kdWxlIAotICAgICAgICAgICAgICAgICAgICB3aXRoU291cmNlOkAiaW1wb3J0IFwiZGly
ZWN0b3J5L2Jhci5qc1wiOyBnbG9iYWxUaGlzLnJhbiA9IG51bGw7IGV4cG9ydCBsZXQgbiA9IG51
bGw7IgorICAgICAgICAgICAgICAgICAgICB3aXRoU291cmNlOkAiaW1wb3J0IFwiLi9kaXJlY3Rv
cnkvYmFyLmpzXCI7IGdsb2JhbFRoaXMucmFuID0gbnVsbDsgZXhwb3J0IGxldCBuID0gbnVsbDsi
CiAgICAgICAgICAgICAgICAgICAgIGFuZFNvdXJjZVVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OkAiL2Zvby5qcyJdCiAgICAgICAgICAgICAgICAgICAgIGFuZEJ5dGVjb2RlQ2FjaGU6bmlsCiAg
ICAgICAgICAgICAgICAgICAgIGluVmlydHVhbE1hY2hpbmU6W2NvbnRleHQgdmlydHVhbE1hY2hp
bmVdCkBAIC0xOTc3LDcgKzE5NzcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RmV0Y2hXaXRoVGhyZWVD
eWNsZSgpCiAgICAgICAgICAgICAgICAgICAgIGVycm9yOm5pbF1dXTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoW2lkZW50aWZpZXIgaXNFcXVhbFRvT2JqZWN0OkAiZmlsZTovLy9mb28uanMiXSkg
ewogICAgICAgICAgICAgICAgIFtyZXNvbHZlIGNhbGxXaXRoQXJndW1lbnRzOkBbW0pTU2NyaXB0
IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlTW9kdWxlIAotICAgICAgICAgICAgICAgICAgICB3
aXRoU291cmNlOkAiaW1wb3J0IFwib3RoZXJEaXJlY3RvcnkvYmF6LmpzXCI7IGV4cG9ydCBsZXQg
biA9IG51bGw7IgorICAgICAgICAgICAgICAgICAgICB3aXRoU291cmNlOkAiaW1wb3J0IFwiLi9v
dGhlckRpcmVjdG9yeS9iYXouanNcIjsgZXhwb3J0IGxldCBuID0gbnVsbDsiCiAgICAgICAgICAg
ICAgICAgICAgIGFuZFNvdXJjZVVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL2Zvby5qcyJd
IAogICAgICAgICAgICAgICAgICAgICBhbmRCeXRlY29kZUNhY2hlOm5pbAogICAgICAgICAgICAg
ICAgICAgICBpblZpcnR1YWxNYWNoaW5lOltjb250ZXh0IHZpcnR1YWxNYWNoaW5lXQpAQCAtMjEw
Nyw3ICsyMTA3LDcgQEAgc3RhdGljIE5TVVJMKiBjYWNoZUZpbGVJbkRhdGFWYXVsdChOU1N0cmlu
ZyogbmFtZSkKIHN0YXRpYyB2b2lkIHRlc3RNb2R1bGVCeXRlY29kZUNhY2hlKCkKIHsKICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgTlNTdHJpbmcgKmZvb1NvdXJjZSA9IEAiaW1wb3J0
ICdvdGhlckRpcmVjdG9yeS9iYXouanMnOyBleHBvcnQgbGV0IG4gPSBudWxsOyI7CisgICAgICAg
IE5TU3RyaW5nICpmb29Tb3VyY2UgPSBAImltcG9ydCAnLi9vdGhlckRpcmVjdG9yeS9iYXouanMn
OyBleHBvcnQgbGV0IG4gPSBudWxsOyI7CiAgICAgICAgIE5TU3RyaW5nICpiYXJTb3VyY2UgPSBA
ImltcG9ydCB7IG4gfSBmcm9tICcuLi9mb28uanMnOyBleHBvcnQgbGV0IGZvbyA9ICgpID0+IG47
IjsKICAgICAgICAgTlNTdHJpbmcgKmJhelNvdXJjZSA9IEAiaW1wb3J0IHsgZm9vIH0gZnJvbSAn
Li4vZGlyZWN0b3J5L2Jhci5qcyc7IGdsb2JhbFRoaXMucmFuID0gbnVsbDsgZXhwb3J0IGxldCBl
eHAgPSBmb28oKTsiOwogCkBAIC0yNDI4LDE1ICsyNDI4LDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RC
eXRlY29kZUNhY2hlVmFsaWRhdGlvbigpCiBAaW50ZXJmYWNlIEpTQ29udGV4dEZpbGVMb2FkZXJE
ZWxlZ2F0ZSA6IEpTQ29udGV4dCA8SlNNb2R1bGVMb2FkZXJEZWxlZ2F0ZT4KIAogKyAoaW5zdGFu
Y2V0eXBlKW5ld0NvbnRleHQ7CistIChKU1NjcmlwdCAqKWZldGNoTW9kdWxlU2NyaXB0OihOU1N0
cmluZyAqKXJlbGF0aXZlUGF0aDsKIAogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0
RmlsZUxvYWRlckRlbGVnYXRlIHsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IEpTU2NyaXB0ICo+ICptX2tleVRvU2NyaXB0OwogfQogCiArIChpbnN0YW5jZXR5cGUpbmV3Q29u
dGV4dAogewogICAgIGF1dG8gKnJlc3VsdCA9IFtbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRl
IGFsbG9jXSBpbml0XTsKKyAgICByZXN1bHQubW9kdWxlTG9hZGVyRGVsZWdhdGUgPSByZXN1bHQ7
CisgICAgcmVzdWx0LT5tX2tleVRvU2NyaXB0ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIEpTU2NyaXB0ICo+IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0yNDU5LDE4ICsyNDYzLDQ1IEBAIHN0YXRpYyBOU1VSTCAqcmVzb2x2ZVBhdGhUb1Njcmlw
dHMoKQogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiLi90ZXN0YXBpU2NyaXB0
cy8iIGlzRGlyZWN0b3J5OllFUyByZWxhdGl2ZVRvVVJMOmJhc2VdOwogfQogCistIChKU1Njcmlw
dCAqKWZldGNoTW9kdWxlU2NyaXB0OihOU1N0cmluZyAqKXJlbGF0aXZlUGF0aAoreworICAgIGF1
dG8gKmZpbGVQYXRoID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cmVsYXRpdmVQYXRoIHJlbGF0aXZl
VG9VUkw6cmVzb2x2ZVBhdGhUb1NjcmlwdHMoKV07CisgICAgaWYgKGF1dG8gKnNjcmlwdCA9IFtz
ZWxmIGZpbmRTY3JpcHRGb3JLZXk6W2ZpbGVQYXRoIGFic29sdXRlU3RyaW5nXV0pCisgICAgICAg
IHJldHVybiBzY3JpcHQ7CisgICAgTlNFcnJvciAqZXJyb3I7CisgICAgYXV0byAqcmVzdWx0ID0g
W0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlTW9kdWxlIG1lbW9yeU1hcHBlZEZy
b21BU0NJSUZpbGU6ZmlsZVBhdGggd2l0aFNvdXJjZVVSTDpmaWxlUGF0aCBhbmRCeXRlY29kZUNh
Y2hlOm5pbCBpblZpcnR1YWxNYWNoaW5lOltzZWxmIHZpcnR1YWxNYWNoaW5lXSBlcnJvcjomZXJy
b3JdOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIE5TTG9nKEAiJUBcbiIsIGVycm9yKTsK
KyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisgICAgW21fa2V5VG9TY3JpcHQgc2V0T2JqZWN0OnJl
c3VsdCBmb3JLZXk6W2ZpbGVQYXRoIGFic29sdXRlU3RyaW5nXV07CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLSAoSlNTY3JpcHQgKilmaW5kU2NyaXB0Rm9yS2V5OihOU1N0cmluZyAqKWtleQor
eworICAgIHJldHVybiBbbV9rZXlUb1NjcmlwdCBvYmplY3RGb3JLZXk6a2V5XTsKK30KKwogLSAo
dm9pZCljb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IGZldGNoTW9kdWxlRm9ySWRlbnRpZmll
cjooSlNWYWx1ZSAqKWlkZW50aWZpZXIgd2l0aFJlc29sdmVIYW5kbGVyOihKU1ZhbHVlICopcmVz
b2x2ZSBhbmRSZWplY3RIYW5kbGVyOihKU1ZhbHVlICopcmVqZWN0CiB7CiAgICAgTlNVUkwgKmZp
bGVQYXRoID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W2lkZW50aWZpZXIgdG9TdHJpbmddXTsKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZpeCB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk5NzE0CisgICAgaWYgKGF1dG8gKnNjcmlwdCA9IFtzZWxmIGZpbmRT
Y3JpcHRGb3JLZXk6W2lkZW50aWZpZXIgdG9TdHJpbmddXSkgeworICAgICAgICBbcmVzb2x2ZSBj
YWxsV2l0aEFyZ3VtZW50czpAW3NjcmlwdF1dOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgYXV0byogc2NyaXB0ID0gW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlTW9k
dWxlCiAgICAgICAgIG1lbW9yeU1hcHBlZEZyb21BU0NJSUZpbGU6ZmlsZVBhdGgKICAgICAgICAg
d2l0aFNvdXJjZVVSTDpmaWxlUGF0aAogICAgICAgICBhbmRCeXRlY29kZUNhY2hlOm5pbCAKICAg
ICAgICAgaW5WaXJ0dWFsTWFjaGluZTpjb250ZXh0LnZpcnR1YWxNYWNoaW5lCiAgICAgICAgIGVy
cm9yOm5pbF07Ci0gICAgaWYgKHNjcmlwdCkKKyAgICBpZiAoc2NyaXB0KSB7CisgICAgICAgIFtt
X2tleVRvU2NyaXB0IHNldE9iamVjdDpzY3JpcHQgZm9yS2V5OltpZGVudGlmaWVyIHRvU3RyaW5n
XV07CiAgICAgICAgIFtyZXNvbHZlIGNhbGxXaXRoQXJndW1lbnRzOkBbc2NyaXB0XV07Ci0gICAg
ZWxzZQorICAgIH0gZWxzZQogICAgICAgICBbcmVqZWN0IGNhbGxXaXRoQXJndW1lbnRzOkBbW0pT
VmFsdWUgdmFsdWVXaXRoTmV3RXJyb3JGcm9tTWVzc2FnZTpAIlVuYWJsZSB0byBjcmVhdGUgU2Ny
aXB0IiBpbkNvbnRleHQ6Y29udGV4dF1dXTsKIH0KIApAQCAtMjYwNCw2ICsyNjM1LDExMSBAQCBz
dGF0aWMgdm9pZCB0ZXN0SlNTY3JpcHRVUkwoKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgdGVz
dERlcGVuZGVuY2llc0FycmF5KCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
YXV0byAqY29udGV4dCA9IFtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgbmV3Q29udGV4dF07
CisKKyAgICAgICAgSlNTY3JpcHQgKmVudHJ5U2NyaXB0ID0gW2NvbnRleHQgZmV0Y2hNb2R1bGVT
Y3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvZGVwZW5kZW5jaWVzRW50cnkuanMiXTsKKwor
ICAgICAgICBKU1ZhbHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1NjcmlwdDplbnRy
eVNjcmlwdF07CisgICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhBcmd1
bWVudHM6QFteKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUg
cmFuIHN1Y2Nlc3NmdWxseSIsIHRydWUpOworICAgICAgICB9LCBeKEpTVmFsdWUgKikgeworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgcmFuIHN1Y2Nlc3NmdWxseSIsIGZhbHNlKTsK
KyAgICAgICAgfV1dOworCisgICAgICAgIGNoZWNrUmVzdWx0KEAibG9va2luZyB1cCB0aGUgZW50
cnkgc2NyaXB0IHNob3VsZCBmaW5kIHRoZSBzYW1lIHNjcmlwdCBhZ2Fpbi4iLCBbY29udGV4dCBm
aW5kU2NyaXB0Rm9yS2V5OltlbnRyeVNjcmlwdC5zb3VyY2VVUkwgYWJzb2x1dGVTdHJpbmddXSA9
PSBlbnRyeVNjcmlwdCk7CisKKyAgICAgICAgYXV0byAqZGVwcyA9IFtjb250ZXh0IGRlcGVuZGVu
Y3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0OmVudHJ5U2NyaXB0XTsKKworICAgICAgICBj
aGVja1Jlc3VsdChAImRlcHMgc2hvdWxkIGJlIGFuIGFycmF5IiwgW2RlcHMgaXNBcnJheV0pOwor
ICAgICAgICBjaGVja1Jlc3VsdChAImRlcHMgc2hvdWxkIGhhdmUgdHdvIGVudHJpZXMiLCBbZGVw
c1tAImxlbmd0aCJdIGlzRXF1YWxUb09iamVjdDpAKDIpXSk7CisKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJmaXJzdCBkZXBlbmRlbmN5IHNob3VsZCBiZSBmb28uanMiLCBbW1tbY29udGV4dCBmZXRj
aE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9mb28uanMiXSBzb3VyY2VVUkxd
IGFic29sdXRlU3RyaW5nXSBpc0VxdWFsOltkZXBzW0AoMCldIHRvU3RyaW5nXV0pOworICAgICAg
ICBjaGVja1Jlc3VsdChAInNlY29uZCBkZXBlbmRlbmN5IHNob3VsZCBiZSBiYXIuanMiLCBbW1tb
Y29udGV4dCBmZXRjaE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9iYXIuanMi
XSBzb3VyY2VVUkxdIGFic29sdXRlU3RyaW5nXSBpc0VxdWFsOltkZXBzW0AoMSldIHRvU3RyaW5n
XV0pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgdGVzdERlcGVuZGVuY2llc0V2YWx1YXRpb25F
cnJvcigpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNvbnRleHQg
PSBbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAgICAgIEpT
U2NyaXB0ICplbnRyeVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBl
bmRlbmN5TGlzdFRlc3RzL3JlZmVyZW5jZUVycm9yLmpzIl07CisKKyAgICAgICAgSlNWYWx1ZSAq
cHJvbWlzZSA9IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAg
ICBbcHJvbWlzZSBpbnZva2VNZXRob2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1ZhbHVl
ICopIHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVs
bHkiLCBmYWxzZSk7CisgICAgICAgIH0sIF4oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAIm1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgdHJ1ZSk7CisgICAgICAgIH1d
XTsKKworICAgICAgICBhdXRvICpkZXBzID0gW2NvbnRleHQgZGVwZW5kZW5jeUlkZW50aWZpZXJz
Rm9yTW9kdWxlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRl
cHMgc2hvdWxkIGJlIGFuIEFycmF5IiwgW2RlcHMgaXNBcnJheV0pOworICAgICAgICBjaGVja1Jl
c3VsdChAImZpcnN0IGRlcGVuZGVuY3kgc2hvdWxkIGJlIGZvby5qcyIsIFtbW1tjb250ZXh0IGZl
dGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRlbmN5TGlzdFRlc3RzL2Zvby5qcyJdIHNvdXJjZVVS
TF0gYWJzb2x1dGVTdHJpbmddIGlzRXF1YWw6W2RlcHNbQCgwKV0gdG9TdHJpbmddXSk7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB0ZXN0RGVwZW5kZW5jaWVzU3ludGF4RXJyb3IoKQoreworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvICpjb250ZXh0ID0gW0pTQ29udGV4dEZp
bGVMb2FkZXJEZWxlZ2F0ZSBuZXdDb250ZXh0XTsKKworICAgICAgICBKU1NjcmlwdCAqZW50cnlT
Y3JpcHQgPSBbY29udGV4dCBmZXRjaE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0
cy9zeW50YXhFcnJvci5qcyJdOworCisgICAgICAgIEpTVmFsdWUgKnByb21pc2UgPSBbY29udGV4
dCBldmFsdWF0ZUpTU2NyaXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgW3Byb21pc2UgaW52b2tl
TWV0aG9kOkAidGhlbiIgd2l0aEFyZ3VtZW50czpAW14oSlNWYWx1ZSAqKSB7CisgICAgICAgICAg
ICBjaGVja1Jlc3VsdChAIm1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgZmFsc2UpOworICAg
ICAgICB9LCBeKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUg
ZmFpbGVkIHN1Y2Nlc3NmdWxseSIsIHRydWUpOworICAgICAgICB9XV07CisKKyAgICAgICAgYXV0
byAqZGVwcyA9IFtjb250ZXh0IGRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0
OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZXBzIHNob3VsZCBiZSB1bmRl
ZmluZWQiLCBbZGVwcyBpc1VuZGVmaW5lZF0pOworICAgICAgICBjaGVja1Jlc3VsdChAInRoZXJl
IHNob3VsZCBiZSBhIHBlbmRpbmcgZXhjZXB0aW9uIG9uIHRoZSBjb250ZXh0IiwgY29udGV4dC5l
eGNlcHRpb24pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgdGVzdERlcGVuZGVuY2llc0JhZElt
cG9ydElkKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byAqY29udGV4
dCA9IFtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgbmV3Q29udGV4dF07CisKKyAgICAgICAg
SlNTY3JpcHQgKmVudHJ5U2NyaXB0ID0gW2NvbnRleHQgZmV0Y2hNb2R1bGVTY3JpcHQ6QCIuL2Rl
cGVuZGVuY3lMaXN0VGVzdHMvYmFkTW9kdWxlSW1wb3J0SWQuanMiXTsKKworICAgICAgICBKU1Zh
bHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1NjcmlwdDplbnRyeVNjcmlwdF07Cisg
ICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhBcmd1bWVudHM6QFteKEpT
VmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFpbGVkIHN1Y2Nl
c3NmdWxseSIsIGZhbHNlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICopIHsKKyAgICAgICAgICAg
IGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCB0cnVlKTsKKyAgICAg
ICAgfV1dOworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBkZXBlbmRlbmN5SWRlbnRp
ZmllcnNGb3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisgICAgICAgIGNoZWNrUmVzdWx0
KEAiZGVwcyBzaG91bGQgYmUgdW5kZWZpbmVkIiwgW2RlcHMgaXNVbmRlZmluZWRdKTsKKyAgICAg
ICAgY2hlY2tSZXN1bHQoQCJ0aGVyZSBzaG91bGQgYmUgYSBwZW5kaW5nIGV4Y2VwdGlvbiBvbiB0
aGUgY29udGV4dCIsIGNvbnRleHQuZXhjZXB0aW9uKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3REZXBlbmRlbmNpZXNNaXNzaW5nSW1wb3J0KCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgYXV0byAqY29udGV4dCA9IFtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUg
bmV3Q29udGV4dF07CisKKyAgICAgICAgSlNTY3JpcHQgKmVudHJ5U2NyaXB0ID0gW2NvbnRleHQg
ZmV0Y2hNb2R1bGVTY3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvbWlzc2luZ0ltcG9ydC5q
cyJdOworCisgICAgICAgIEpTVmFsdWUgKnByb21pc2UgPSBbY29udGV4dCBldmFsdWF0ZUpTU2Ny
aXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgW3Byb21pc2UgaW52b2tlTWV0aG9kOkAidGhlbiIg
d2l0aEFyZ3VtZW50czpAW14oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChA
Im1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgZmFsc2UpOworICAgICAgICB9LCBeKEpTVmFs
dWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFpbGVkIHN1Y2Nlc3Nm
dWxseSIsIHRydWUpOworICAgICAgICB9XV07CisKKyAgICAgICAgYXV0byAqZGVwcyA9IFtjb250
ZXh0IGRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0OmVudHJ5U2NyaXB0XTsK
KyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZXBzIHNob3VsZCBiZSB1bmRlZmluZWQiLCBbZGVwcyBp
c1VuZGVmaW5lZF0pOworICAgICAgICBjaGVja1Jlc3VsdChAInRoZXJlIHNob3VsZCBiZSBhIHBl
bmRpbmcgZXhjZXB0aW9uIG9uIHRoZSBjb250ZXh0IiwgY29udGV4dC5leGNlcHRpb24pOworICAg
IH0KK30KIAogQHByb3RvY29sIFRvU3RyaW5nIDxKU0V4cG9ydD4KIC0gKE5TU3RyaW5nICopdG9T
dHJpbmc7CkBAIC0yNzA4LDYgKzI4NDQsMTIgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSShjb25z
dCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzaWNGaWxlTGVnYWN5U1BJKCkpOwog
ICAgIFJVTih0ZXN0TG9hZEJhc2ljRmlsZSgpKTsKIAorICAgIFJVTih0ZXN0RGVwZW5kZW5jaWVz
QXJyYXkoKSk7CisgICAgUlVOKHRlc3REZXBlbmRlbmNpZXNTeW50YXhFcnJvcigpKTsKKyAgICBS
VU4odGVzdERlcGVuZGVuY2llc0V2YWx1YXRpb25FcnJvcigpKTsKKyAgICBSVU4odGVzdERlcGVu
ZGVuY2llc0JhZEltcG9ydElkKCkpOworICAgIFJVTih0ZXN0RGVwZW5kZW5jaWVzTWlzc2luZ0lt
cG9ydCgpKTsKKwogICAgIFJVTihwcm9taXNlV2l0aEV4ZWN1dG9yKFJlc29sdXRpb246OlJlc29s
dmVFYWdlcikpOwogICAgIFJVTihwcm9taXNlV2l0aEV4ZWN1dG9yKFJlc29sdXRpb246OlJlamVj
dEVhZ2VyKSk7CiAgICAgUlVOKHByb21pc2VXaXRoRXhlY3V0b3IoUmVzb2x1dGlvbjo6UmVzb2x2
ZUxhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJZC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxp
c3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjUwMjA4NDQxOGFjZGMy
NmQ2ZjFjNTBkOTA0ODJmNTAxN2M5YzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jh
ZE1vZHVsZUltcG9ydElkLmpzCkBAIC0wLDAgKzEsMyBAQAorCisvLyBUaGlzIGlzIG5vdCBhIHZh
bGlkIGlkZW50ZmllciBmb3IgYW4gaW1wb3J0IHNvIGl0IHdpbGwgZmFpbCB0byBpbXBvcnQuCitp
bXBvcnQgInNldGh1YSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9iYXIuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMv
YmFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAxMGZmYzhlOWFiYWI1OWZjNGI3OGRiYzA4MmFhMGZjMDljMmEx
YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFyLmpzCkBAIC0wLDAgKzEgQEAKK2V4
cG9ydCBsZXQgaGVsbG8gPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2RlcGVuZGVuY2llc0Vu
dHJ5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9k
ZXBlbmRlbmN5TGlzdFRlc3RzL2RlcGVuZGVuY2llc0VudHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5Y2U5
MDNiNmFjY2U3ZTBjMzcyMDY0NWQwNTVlYzU2ZjJhZTQxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lM
aXN0VGVzdHMvZGVwZW5kZW5jaWVzRW50cnkuanMKQEAgLTAsMCArMSwyIEBACitpbXBvcnQgIi4v
Zm9vLmpzIjsKK2ltcG9ydCAiLi9iYXIuanMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Zvby5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5k
ZW5jeUxpc3RUZXN0cy9mb28uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4MjE4YTkzNGYyYjk4MTk5NDJkZDUx
ODVhOTk5NzhjYTk1OGQ0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9mb28uanMKQEAg
LTAsMCArMSBAQAorZXhwb3J0IGxldCB0aGluZ3MgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRl
c3RzL21pc3NpbmdJbXBvcnQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvbWlzc2luZ0ltcG9ydC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZjUzNDkxY2ViZDQ4OTM3MDhkNDJlYzJiMWI0ZGZlYTk4NDZlYjI2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9k
ZXBlbmRlbmN5TGlzdFRlc3RzL21pc3NpbmdJbXBvcnQuanMKQEAgLTAsMCArMSBAQAoraW1wb3J0
ICIuL2ZpbGUtdGhhdC1kb2VzLW5vdC1leGlzdC5qcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9y
ZWZlcmVuY2VFcnJvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9yZWZlcmVuY2VFcnJvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZTU1YzM3NWJlYWVmNjM2MjdjODAzYTE4NTIwOWIzMzI2YjA3MDk3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBl
bmRlbmN5TGlzdFRlc3RzL3JlZmVyZW5jZUVycm9yLmpzCkBAIC0wLDAgKzEsMyBAQAoraW1wb3J0
ICIuL2Zvby5qcyI7CisKK3Rvc2VodWFzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL3N5bnRheEVy
cm9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9k
ZXBlbmRlbmN5TGlzdFRlc3RzL3N5bnRheEVycm9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNDI4NDMyMmUz
ZmFiZjM4ODhmYjYzNDc1NzgzY2U5OWY0ZDgzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVz
dHMvc3ludGF4RXJyb3IuanMKQEAgLTAsMCArMSwzIEBACitpbXBvcnQgIi4vZm9vLmpzIjsKKwor
dGhlb2FzdXRhcyB0aGVhIHRlaGxyICBlYnNhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRl
cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVz
dGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYzY2NlZDA0ODdlOWMwZTZj
ZWU1NzgwNjk2MzhhYzBkYzJlYjc0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlk
ZXMuanMKQEAgLTAsMCArMSwxNiBAQAorLy8gdGVzdGFwaSBmdW5jdGlvbiBvdmVycmlkZXMgZm9y
IHRlc3RpbmcuCitvdmVycmlkZSAlJSV7IC8qIE9yaWdpbmFsIGYxICovIH0lJSUKK3dpdGggJSUl
eyAvKiBPdmVycmlkZGVuIGYxICovIH0lJSUKKworb3ZlcnJpZGUgIyQleworICAgIC8vIE9yaWdp
bmFsIGYyCit9IyQlCit3aXRoICQkJHsgLyogT3ZlcnJpZGRlbiBmMiAqLyB9JCQkCisKK292ZXJy
aWRlICUlJXsgLyogT3JpZ2luYWwgZjMgKi8gfSUlJQord2l0aCAlJSV7IC8qIE92ZXJyaWRkZW4g
ZjMgKi8gfSUlJQorCitvdmVycmlkZSAlJSV7CisvKiBPcmlnaW5hbCBmNCAqLworfSUlJQord2l0
aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjQgKi8gfSUlJQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg4ZDM3MDFjMjFlMDU4NjZhN2EyMGExYWVmMjJjYjBmYjI4M2M0ZjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rl
c3RhcGkuanMKQEAgLTAsMCArMSwzMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gYmx1ZGdlb25Bcmd1bWVudHMoKSB7IGlmICgwKSBh
cmd1bWVudHM7IHJldHVybiBmdW5jdGlvbiBnKCkge30gfQoraCA9IGJsdWRnZW9uQXJndW1lbnRz
KCk7CitnYygpOworCit2YXIgZmFpbGVkID0gZmFsc2U7CitmdW5jdGlvbiBwYXNzKG1zZykKK3sK
KyAgICBwcmludCgiUEFTUzogIiArIG1zZywgImdyZWVuIik7Cit9CisKK2Z1bmN0aW9uIGZhaWwo
bXNnKQoreworICAgIHByaW50KCJGQUlMOiAiICsgbXNnLCAicmVkIik7CisgICAgZmFpbGVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYSwgYikKK3sKKyAgICB2YXIgZXZhbEE7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOworICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICBldmFsQSA9IGU7CisgICAgfQorICAgIAorICAgIGlmIChldmFsQSA9PSBiIHx8IGlzTmFO
KGV2YWxBKSAmJiB0eXBlb2YgZXZhbEEgPT0gJ251bWJlcicgJiYgaXNOYU4oYikgJiYgdHlwZW9m
IGIgPT0gJ251bWJlcicpCisgICAgICAgIHBhc3MoYSArICIgc2hvdWxkIGJlICIgKyBiICsgIiBh
bmQgaXMuIik7CisgICAgZWxzZQorICAgICAgICBmYWlsKGEgKyAiIHNob3VsZCBiZSAiICsgYiAr
ICIgYnV0IGluc3RlYWQgaXMgIiArIGV2YWxBICsgIi4iKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coYSkKK3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChhKTsK
KyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgcGFzcyhhICsgIiB0aHJldzogIiArIGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZmFpbChhICsgIiBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbi4iKTsKK30KKworZnVuY3Rpb24gZ2xvYmFsU3RhdGljRnVuY3Rpb24oKQoreworICAg
IHJldHVybiA0OworfQorCitzaG91bGRCZSgiZ2xvYmFsU3RhdGljVmFsdWUiLCAzKTsKK3Nob3Vs
ZEJlKCJnbG9iYWxTdGF0aWNGdW5jdGlvbigpIiwgNCk7CitzaG91bGRCZSgidGhpcy5nbG9iYWxT
dGF0aWNGdW5jdGlvbigpIiwgNCk7CisKK2Z1bmN0aW9uIGdsb2JhbFN0YXRpY0Z1bmN0aW9uMigp
IHsKKyAgICByZXR1cm4gMTA7Cit9CitzaG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7
IiwgMTApOwordGhpcy5nbG9iYWxTdGF0aWNGdW5jdGlvbjIgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IDIwOyB9CitzaG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMjApOworc2hvdWxk
QmUoInRoaXMuZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMjApOworCitmdW5jdGlvbiBpQW1O
b3RBU3RhdGljRnVuY3Rpb24oKSB7IHJldHVybiAxMDsgfQorc2hvdWxkQmUoImlBbU5vdEFTdGF0
aWNGdW5jdGlvbigpOyIsIDEwKTsKK3RoaXMuaUFtTm90QVN0YXRpY0Z1bmN0aW9uID0gZnVuY3Rp
b24oKSB7IHJldHVybiAyMDsgfQorc2hvdWxkQmUoImlBbU5vdEFTdGF0aWNGdW5jdGlvbigpOyIs
IDIwKTsKKworc2hvdWxkQmUoInR5cGVvZiBNeU9iamVjdCIsICJmdW5jdGlvbiIpOyAvLyBvdXIg
b2JqZWN0IGltcGxlbWVudHMgJ2NhbGwnCitNeU9iamVjdC5jYW50RmluZCA9IDE7CitzaG91bGRC
ZSgiTXlPYmplY3QuY2FudEZpbmQiLCB1bmRlZmluZWQpOworTXlPYmplY3QucmVndWxhclR5cGUg
PSAxOworc2hvdWxkQmUoIk15T2JqZWN0LnJlZ3VsYXJUeXBlIiwgMSk7CitNeU9iamVjdC5hbHdh
eXNPbmUgPSAyOworc2hvdWxkQmUoIk15T2JqZWN0LmFsd2F5c09uZSIsIDEpOworTXlPYmplY3Qu
Y2FudERlbGV0ZSA9IDE7CitkZWxldGUgTXlPYmplY3QuY2FudERlbGV0ZTsKK3Nob3VsZEJlKCJN
eU9iamVjdC5jYW50RGVsZXRlIiwgMSk7CitzaG91bGRCZSgiZGVsZXRlIE15T2JqZWN0LnRocm93
T25EZWxldGUiLCAiYW4gZXhjZXB0aW9uIik7CitNeU9iamVjdC5jYW50U2V0ID0gMTsKK3Nob3Vs
ZEJlKCJNeU9iamVjdC5jYW50U2V0IiwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKCJNeU9iamVjdC50
aHJvd09uR2V0IiwgImFuIGV4Y2VwdGlvbiIpOworc2hvdWxkQmUoIk15T2JqZWN0LnRocm93T25T
ZXQgPSA1IiwgImFuIGV4Y2VwdGlvbiIpOworc2hvdWxkQmUoIk15T2JqZWN0KCd0aHJvd09uQ2Fs
bCcpIiwgImFuIGV4Y2VwdGlvbiIpOworc2hvdWxkQmUoIm5ldyBNeU9iamVjdCgndGhyb3dPbkNv
bnN0cnVjdCcpIiwgImFuIGV4Y2VwdGlvbiIpOworc2hvdWxkQmUoIid0aHJvd09uSGFzSW5zdGFu
Y2UnIGluc3RhbmNlb2YgTXlPYmplY3QiLCAiYW4gZXhjZXB0aW9uIik7CisKK015T2JqZWN0Lm51
bGxHZXRGb3J3YXJkU2V0ID0gMTsKK3Nob3VsZEJlKCJNeU9iamVjdC5udWxsR2V0Rm9yd2FyZFNl
dCIsIDEpOworCit2YXIgZm91bmRNeVByb3BlcnR5TmFtZSA9IGZhbHNlOwordmFyIGZvdW5kUmVn
dWxhclR5cGUgPSBmYWxzZTsKK2ZvciAodmFyIHAgaW4gTXlPYmplY3QpIHsKKyAgICBpZiAocCA9
PSAibXlQcm9wZXJ0eU5hbWUiKQorICAgICAgICBmb3VuZE15UHJvcGVydHlOYW1lID0gdHJ1ZTsK
KyAgICBpZiAocCA9PSAicmVndWxhclR5cGUiKQorICAgICAgICBmb3VuZFJlZ3VsYXJUeXBlID0g
dHJ1ZTsKK30KKworaWYgKGZvdW5kTXlQcm9wZXJ0eU5hbWUpCisgICAgcGFzcygiTXlPYmplY3Qu
bXlQcm9wZXJ0eU5hbWUgd2FzIGVudW1lcmF0ZWQiKTsKK2Vsc2UKKyAgICBmYWlsKCJNeU9iamVj
dC5teVByb3BlcnR5TmFtZSB3YXMgbm90IGVudW1lcmF0ZWQiKTsKKworaWYgKGZvdW5kUmVndWxh
clR5cGUpCisgICAgcGFzcygiTXlPYmplY3QucmVndWxhclR5cGUgd2FzIGVudW1lcmF0ZWQiKTsK
K2Vsc2UKKyAgICBmYWlsKCJNeU9iamVjdC5yZWd1bGFyVHlwZSB3YXMgbm90IGVudW1lcmF0ZWQi
KTsKKwordmFyIGFsd2F5c09uZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKE15T2JqZWN0LCAiYWx3YXlzT25lIik7CitzaG91bGRCZSgndHlwZW9mIGFsd2F5c09u
ZURlc2NyaXB0b3InLCAib2JqZWN0Iik7CitzaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRvci52
YWx1ZScsIE15T2JqZWN0LmFsd2F5c09uZSk7CitzaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRv
ci5jb25maWd1cmFibGUnLCB0cnVlKTsKK3Nob3VsZEJlKCdhbHdheXNPbmVEZXNjcmlwdG9yLmVu
dW1lcmFibGUnLCBmYWxzZSk7IC8vIEFjdHVhbGx5IGl0IGlzLgordmFyIGNhbnRGaW5kRGVzY3Jp
cHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJjYW50Rmlu
ZCIpOworc2hvdWxkQmUoJ3R5cGVvZiBjYW50RmluZERlc2NyaXB0b3InLCAib2JqZWN0Iik7Citz
aG91bGRCZSgnY2FudEZpbmREZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QuY2FudEZpbmQpOwor
c2hvdWxkQmUoJ2NhbnRGaW5kRGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKK3Nob3Vs
ZEJlKCdjYW50RmluZERlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKK3RyeSB7CisgICAg
Ly8gSWYgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgcmV0dXJuZWQgYW4gYWNjZXNzIGRlc2Ny
aXB0b3IsIHRoaXMgd291bGRuJ3QgdGhyb3cuCisgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihNeU9iamVjdCwgInRocm93T25HZXQiKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBwYXNz
KCJnZXR0aW5nIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgdGhyb3dPbkdldCB0aHJldyBleGNlcHRp
b24iKTsKK30KK3ZhciBteVByb3BlcnR5TmFtZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAibXlQcm9wZXJ0eU5hbWUiKTsKK3Nob3VsZEJlKCd0
eXBlb2YgbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yJywgIm9iamVjdCIpOworc2hvdWxkQmUoJ215
UHJvcGVydHlOYW1lRGVzY3JpcHRvci52YWx1ZScsIE15T2JqZWN0Lm15UHJvcGVydHlOYW1lKTsK
K3Nob3VsZEJlKCdteVByb3BlcnR5TmFtZURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7
CitzaG91bGRCZSgnbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7
IC8vIEFjdHVhbGx5IGl0IGlzLgordHJ5IHsKKyAgICAvLyBpZiBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoKSByZXR1cm5lZCBhbiBhY2Nlc3MgZGVzY3JpcHRvciwgdGhpcyB3b3VsZG4ndCB0aHJv
dy4KKyAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAiaGFzUHJv
cGVydHlMaWUiKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBwYXNzKCJnZXR0aW5nIHByb3BlcnR5IGRl
c2NyaXB0b3Igb2YgaGFzUHJvcGVydHlMaWUgdGhyZXcgZXhjZXB0aW9uIik7Cit9CitzaG91bGRC
ZSgnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVjdCwgImRvZXNOb3RFeGlz
dCIpJywgdW5kZWZpbmVkKTsKKworbXlPYmplY3QgPSBuZXcgTXlPYmplY3QoKTsKKworc2hvdWxk
QmUoImRlbGV0ZSBNeU9iamVjdC5yZWd1bGFyVHlwZSIsIHRydWUpOworc2hvdWxkQmUoIk15T2Jq
ZWN0LnJlZ3VsYXJUeXBlIiwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKCJNeU9iamVjdCgwKSIsIDEp
Oworc2hvdWxkQmUoIk15T2JqZWN0KCkiLCB1bmRlZmluZWQpOworc2hvdWxkQmUoInR5cGVvZiBt
eU9iamVjdCIsICJvYmplY3QiKTsKK3Nob3VsZEJlKCJNeU9iamVjdCA/IDEgOiAwIiwgdHJ1ZSk7
IC8vIHRvQm9vbGVhbgorc2hvdWxkQmUoIitNeU9iamVjdCIsIDEpOyAvLyB0b051bWJlcgorc2hv
dWxkQmUoIihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTXlPYmplY3QpKSIsICJbb2Jq
ZWN0IE15T2JqZWN0XSIpOyAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nCitzaG91bGRCZSgi
KE15T2JqZWN0LnRvU3RyaW5nKCkpIiwgIltvYmplY3QgTXlPYmplY3RdIik7IC8vIHRvU3RyaW5n
CitzaG91bGRCZSgiU3RyaW5nKE15T2JqZWN0KSIsICJNeU9iamVjdEFzU3RyaW5nIik7IC8vIHRv
U3RyaW5nCitzaG91bGRCZSgiTXlPYmplY3QgLSAwIiwgMSk7IC8vIHRvTnVtYmVyCitzaG91bGRC
ZSgiTXlPYmplY3QudmFsdWVPZigpIiwgMSk7IC8vIHZhbHVlT2YKKworc2hvdWxkQmUoInR5cGVv
ZiBNeUNvbnN0cnVjdG9yIiwgIm9iamVjdCIpOworY29uc3RydWN0ZWRPYmplY3QgPSBuZXcgTXlD
b25zdHJ1Y3RvcigxKTsKK3Nob3VsZEJlKCJ0eXBlb2YgY29uc3RydWN0ZWRPYmplY3QiLCAib2Jq
ZWN0Iik7CitzaG91bGRCZSgiY29uc3RydWN0ZWRPYmplY3QudmFsdWUiLCAxKTsKK3Nob3VsZEJl
KCJteU9iamVjdCBpbnN0YW5jZW9mIE15T2JqZWN0IiwgdHJ1ZSk7CitzaG91bGRCZSgiKG5ldyBP
YmplY3QoKSkgaW5zdGFuY2VvZiBNeU9iamVjdCIsIGZhbHNlKTsKKworc2hvdWxkVGhyb3coIm5l
dyBNeUJhZENvbnN0cnVjdG9yKCkiKTsKKworTXlPYmplY3QubnVsbEdldFNldCA9IDE7CitzaG91
bGRCZSgiTXlPYmplY3QubnVsbEdldFNldCIsIDEpOworc2hvdWxkVGhyb3coIk15T2JqZWN0Lm51
bGxDYWxsKCkiKTsKK3Nob3VsZFRocm93KCJNeU9iamVjdC5oYXNQcm9wZXJ0eUxpZSIpOworCitk
ZXJpdmVkID0gbmV3IERlcml2ZWQoKTsKKworc2hvdWxkQmUoImRlcml2ZWQgaW5zdGFuY2VvZiBE
ZXJpdmVkIiwgdHJ1ZSk7CitzaG91bGRCZSgiZGVyaXZlZCBpbnN0YW5jZW9mIEJhc2UiLCB0cnVl
KTsKKworLy8gYmFzZSBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMgcmV0dXJuIDEgd2hlbiBjYWxs
ZWQvZ290dGVuOyBkZXJpdmVkLCAyCitzaG91bGRCZSgiZGVyaXZlZC5iYXNlUHJvdG9EdXAoKSIs
IDIpOworc2hvdWxkQmUoImRlcml2ZWQuYmFzZVByb3RvKCkiLCAxKTsKK3Nob3VsZEJlKCJkZXJp
dmVkLmJhc2VEdXAiLCAyKTsKK3Nob3VsZEJlKCJkZXJpdmVkLmJhc2VPbmx5IiwgMSk7CitzaG91
bGRCZSgiZGVyaXZlZC5wcm90b09ubHkoKSIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQucHJvdG9E
dXAiLCAyKTsKK3Nob3VsZEJlKCJkZXJpdmVkLmRlcml2ZWRPbmx5IiwgMikKKworc2hvdWxkQmUo
ImRlcml2ZWQuYmFzZUhhcmROdWxsKCkiLCB1bmRlZmluZWQpCisKKy8vIGJhc2UgcHJvcGVydGll
cyB0aHJvdyAxIHdoZW4gc2V0OyBkZXJpdmVkLCAyCitzaG91bGRCZSgiZGVyaXZlZC5iYXNlRHVw
ID0gMCIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQuYmFzZU9ubHkgPSAwIiwgMSk7CitzaG91bGRC
ZSgiZGVyaXZlZC5kZXJpdmVkT25seSA9IDAiLCAyKQorc2hvdWxkQmUoImRlcml2ZWQucHJvdG9E
dXAgPSAwIiwgMik7CisKK2Rlcml2ZWQyID0gbmV3IERlcml2ZWQyKCk7CisKK3Nob3VsZEJlKCJk
ZXJpdmVkMiBpbnN0YW5jZW9mIERlcml2ZWQyIiwgdHJ1ZSk7CitzaG91bGRCZSgiZGVyaXZlZDIg
aW5zdGFuY2VvZiBEZXJpdmVkIiwgdHJ1ZSk7CitzaG91bGRCZSgiZGVyaXZlZDIgaW5zdGFuY2Vv
ZiBCYXNlIiwgdHJ1ZSk7CisKKy8vIGJhc2UgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHJldHVy
biAxIHdoZW4gY2FsbGVkL2dvdHRlbjsgZGVyaXZlZCwgMgorc2hvdWxkQmUoImRlcml2ZWQyLmJh
c2VQcm90b0R1cCgpIiwgMik7CitzaG91bGRCZSgiZGVyaXZlZDIuYmFzZVByb3RvKCkiLCAxKTsK
K3Nob3VsZEJlKCJkZXJpdmVkMi5iYXNlRHVwIiwgMik7CitzaG91bGRCZSgiZGVyaXZlZDIuYmFz
ZU9ubHkiLCAxKTsKK3Nob3VsZEJlKCJkZXJpdmVkMi5wcm90b09ubHkoKSIsIDIpOworc2hvdWxk
QmUoImRlcml2ZWQyLnByb3RvRHVwIiwgMik7CitzaG91bGRCZSgiZGVyaXZlZDIuZGVyaXZlZE9u
bHkiLCAyKQorCisvLyBiYXNlIHByb3BlcnRpZXMgdGhyb3cgMSB3aGVuIHNldDsgZGVyaXZlZCwg
Mgorc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VEdXAgPSAwIiwgMik7CitzaG91bGRCZSgiZGVyaXZl
ZDIuYmFzZU9ubHkgPSAwIiwgMSk7CitzaG91bGRCZSgiZGVyaXZlZDIuZGVyaXZlZE9ubHkgPSAw
IiwgMikKK3Nob3VsZEJlKCJkZXJpdmVkMi5wcm90b0R1cCA9IDAiLCAyKTsKKworc2hvdWxkQmUo
J09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImJhc2VQcm90byIpJywg
dW5kZWZpbmVkKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRl
cml2ZWQsICJiYXNlUHJvdG9EdXAiKScsIHVuZGVmaW5lZCk7Cit2YXIgYmFzZUR1cERlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJiYXNlRHVwIik7
CitzaG91bGRCZSgndHlwZW9mIGJhc2VEdXBEZXNjcmlwdG9yJywgIm9iamVjdCIpOworc2hvdWxk
QmUoJ2Jhc2VEdXBEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5iYXNlRHVwKTsKK3Nob3VsZEJl
KCdiYXNlRHVwRGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKK3Nob3VsZEJlKCdiYXNl
RHVwRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwordmFyIGJhc2VPbmx5RGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImJhc2VPbmx5Iik7
CitzaG91bGRCZSgndHlwZW9mIGJhc2VPbmx5RGVzY3JpcHRvcicsICJvYmplY3QiKTsKK3Nob3Vs
ZEJlKCdiYXNlT25seURlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVkLmJhc2VPbmx5KTsKK3Nob3Vs
ZEJlKCdiYXNlT25seURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7CitzaG91bGRCZSgn
YmFzZU9ubHlEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7CitzaG91bGRCZSgnT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAicHJvdG9Pbmx5IiknLCB1bmRlZmlu
ZWQpOwordmFyIHByb3RvRHVwRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZGVyaXZlZCwgInByb3RvRHVwIik7CitzaG91bGRCZSgndHlwZW9mIHByb3RvRHVwRGVz
Y3JpcHRvcicsICJvYmplY3QiKTsKK3Nob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3IudmFsdWUn
LCBkZXJpdmVkLnByb3RvRHVwKTsKK3Nob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3IuY29uZmln
dXJhYmxlJywgdHJ1ZSk7CitzaG91bGRCZSgncHJvdG9EdXBEZXNjcmlwdG9yLmVudW1lcmFibGUn
LCBmYWxzZSk7Cit2YXIgZGVyaXZlZE9ubHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihkZXJpdmVkLCAiZGVyaXZlZE9ubHkiKTsKK3Nob3VsZEJlKCd0eXBlb2Yg
ZGVyaXZlZE9ubHlEZXNjcmlwdG9yJywgIm9iamVjdCIpOworc2hvdWxkQmUoJ2Rlcml2ZWRPbmx5
RGVzY3JpcHRvci52YWx1ZScsIGRlcml2ZWQuZGVyaXZlZE9ubHkpOworc2hvdWxkQmUoJ2Rlcml2
ZWRPbmx5RGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKK3Nob3VsZEJlKCdkZXJpdmVk
T25seURlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKKworc2hvdWxkQmUoInVuZGVmaW5l
ZCBpbnN0YW5jZW9mIE15T2JqZWN0IiwgZmFsc2UpOworRXZpbEV4Y2VwdGlvbk9iamVjdC5oYXNJ
bnN0YW5jZSA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH07CitFdmlsRXhjZXB0aW9uT2Jq
ZWN0Ll9fcHJvdG9fXyA9IHVuZGVmaW5lZDsKK3Nob3VsZFRocm93KCJ1bmRlZmluZWQgaW5zdGFu
Y2VvZiBFdmlsRXhjZXB0aW9uT2JqZWN0Iik7CitFdmlsRXhjZXB0aW9uT2JqZWN0Lmhhc0luc3Rh
bmNlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTsKK3Nob3VsZEJlKCJ1bmRlZmluZWQg
aW5zdGFuY2VvZiBFdmlsRXhjZXB0aW9uT2JqZWN0IiwgdHJ1ZSk7CisKK0V2aWxFeGNlcHRpb25P
YmplY3QudG9OdW1iZXIgPSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigpOyB9CitzaG91bGRUaHJv
dygiRXZpbEV4Y2VwdGlvbk9iamVjdCo1Iik7CitFdmlsRXhjZXB0aW9uT2JqZWN0LnRvU3RyaW5n
RXhwbGljaXQgPSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigpOyB9CitzaG91bGRUaHJvdygiU3Ry
aW5nKEV2aWxFeGNlcHRpb25PYmplY3QpIik7CisKK3Nob3VsZEJlKCJjb25zb2xlIiwgIltvYmpl
Y3QgQ29uc29sZV0iKTsKK3Nob3VsZEJlKCJ0eXBlb2YgY29uc29sZS5sb2ciLCAiZnVuY3Rpb24i
KTsKKworc2hvdWxkQmUoIkVtcHR5T2JqZWN0IiwgIltvYmplY3QgQ2FsbGJhY2tPYmplY3RdIik7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQorICAgIFByb3BlcnR5Q2F0Y2hhbGxzLngg
PSBpOworc2hvdWxkQmUoIlByb3BlcnR5Q2F0Y2hhbGxzLngiLCA0KTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCA2OyArK2kpCisgICAgdmFyIHggPSBQcm9wZXJ0eUNhdGNoYWxscy54Oworc2hvdWxk
QmUoIngiLCBudWxsKTsKK3ZhciBtYWtlX3Rocm93ID0gJ21ha2VfdGhyb3cnOworc2hvdWxkVGhy
b3coIlByb3BlcnR5Q2F0Y2hhbGxzW21ha2VfdGhyb3ddPTEiKTsKK21ha2VfdGhyb3cgPSAwOwor
c2hvdWxkVGhyb3coIlByb3BlcnR5Q2F0Y2hhbGxzW21ha2VfdGhyb3ddPTEiKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgZm9yICh2YXIgcCBpbiBQcm9wZXJ0eUNhdGNo
YWxscykgeworICAgICAgICBpZiAocCA9PSAieCIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgc2hvdWxkQmUoInAiLCBpICUgMTApOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K1Byb3BlcnR5Q2F0Y2hhbGxzLl9fcHJvdG9fXyA9IHsgeTogMSB9OworZm9yICh2YXIgaSA9IDA7
IGkgPCA2OyArK2kpCisgICAgdmFyIHkgPSBQcm9wZXJ0eUNhdGNoYWxscy55Oworc2hvdWxkQmUo
InkiLCBudWxsKTsKKwordmFyIG8gPSB7IF9fcHJvdG9fXzogUHJvcGVydHlDYXRjaGFsbHMgfTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQorICAgIHZhciB6ID0gUHJvcGVydHlDYXRjaGFs
bHMuejsKK3Nob3VsZEJlKCJ6IiwgbnVsbCk7CisKK2lmIChmYWlsZWQpCisgICAgdGhyb3cgIlNv
bWUgdGVzdHMgZmFpbGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2U5N2Q5
OGEyZWJjMjdlNmQxNTkwMWQyYjczMmM2NWM5N2MwN2M2ZC4uODc3NDdiYjI2NWQ4YzM1MjcwYThi
NDhjNDc0Njk1YTRkNjJkYmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5
OCw3ICs4OTgsNiBAQAogCQk1MkNEMEY1RDIyNDJGNTY5MDA0QTE4QTUgLyogRm91bmRhdGlvbi5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07
CiAJCTUyQ0QwRjVFMjI0MkY1NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJE
OTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk1
MkNEMEY2ODIyNDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNEMEY2NzIyNDJGNzFDMDA0QTE4QTUgLyog
dGVzdGRmZy5jcHAgKi87IH07Ci0JCTUyRDEzMDkxMjIxQ0UxNzYwMDlDODM2QyAvKiBmb28uanMg
aW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkQxMzA4RjIyMUNFMDNBMDA5QzgzNkMgLyogZm9vLmpzICovOyB9OwogCQk1MkY2QzM1RTFF
NzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjZDMzVDMUU3MUVCMDgwMDgx
RjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovOyB9OwogCQk1MzBBNjZCOTFG
QTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyog
VW5pZmllZFNvdXJjZTMtbW0ubW0gKi87IH07CiAJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAv
KiBVbmlmaWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzMEE2NkI4MUZBM0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1t
bS5tbSAqLzsgfTsKQEAgLTEwODIsNyArMTA4MSw2IEBACiAJCTUzOUZCOEJBMUM5OURBN0MwMDk0
MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVz
LmggKi87IH07CiAJCTUzQjRCRDEyMUY2OEIzMjUwMEQyQkVBMyAvKiBXYXNtT3BzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNCMTVERTFEQzdGNDYz
MDA0RDUwMEEgLyogV2FzbU9wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUzQjYwMUVDMjAzNEI4QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQjYwMUVCMjAzNEI4
QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk1M0MzRDVFNTIxRUNFNzcyMDA4N0ZERkMgLyogYmFzaWMuanMgaW4g
Q29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0MzRDVFNDIxRUNFNkNFMDA4N0ZERkMgLyogYmFzaWMuanMgKi87IH07CiAJCTUzQzRGNjZCMjFC
MUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDNEY2NkEyMUIxQTQwOTAwMkZEMDA5IC8qIEpT
QVBJR2xvYmFsT2JqZWN0LmggKi87IH07CiAJCTUzQzZGRUVGMUU4QURGQTkwMEIxODQyNSAvKiBX
YXNtT3Bjb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0M2RkVFRTFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oICov
OyB9OwogCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQ0E3MzA4MUVBNTMzRDgw
MDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oICovOyB9OwpAQCAtMTExMSw3ICsxMTA5LDYgQEAKIAkJ
NUM0MTk2NjIyMjcwRTAwMDAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29t
cGF0aWJpbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzQxOTY2MTIyNzBERkYzMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJDb21wYXRpYmlsaXR5LmNwcCAqLzsgfTsKIAkJNUM0RThFOTYxREJFQkU2MjAwMzZGMUZDIC8q
IEpTT05QYXJzZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwICov
OyB9OwogCQk1RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBF
QkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwotCQk1REJCMTUxQjEzMUQwQjMxMDA1
NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBp
LmpzICovOyB9OwogCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OwogCQk1REU2RTVCMzBF
MTcyOEVDMDAxODA0MDcgLyogY3JlYXRlX2hhc2hfdGFibGUgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3Jl
YXRlX2hhc2hfdGFibGUgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJ
NjIzQTM3RUMxQjg3QTdDMDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkg
LyogUmVnaXN0ZXJNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTI4NywxMCArMTI4NCwxMCBAQAogCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZF
NkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzMwM0ZFQTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTYwMDk3QTYw
RUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNj
b3BlLmggKi87IH07CiAJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhD
QjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0
OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY4OENCMTYw
RUQxMkI0RTAwMUQ2NDkxIC8qIFg4NlJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDkxIC8qIFg4NlJl
Z2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUw
MDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0
ZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2
NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2OUEwNzIz
MEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQxQ0UzMzAwRjFGNjgxIC8q
IEJ5dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAv
KiBMYWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07CiAJCTk2OUEwNzJCMEVE
MUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJ
RC5oICovOyB9OwpAQCAtMTg4NSw3ICsxODgyLDYgQEAKIAkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5
MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5t
bSAqLzsgfTsKIAkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThD
MTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQ0I4QjI3MUQyNUJCODUwMDZG
MjQ2MyAvKiBGdW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDQjhCMjUxRDI1QkI2RTAwNkYyNDYzIC8qIEZ1bmN0
aW9uT3ZlcnJpZGVzVGVzdC5jcHAgKi87IH07Ci0JCUZFQ0I4QjJBMUQyNUNCNUEwMDZGMjQ2MyAv
KiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2
MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLzsgfTsKIAkJRkVEMjg3QjIxNUVD
OUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNv
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBX
YXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFF
NjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CkBAIC0yMDc5LDIw
ICsyMDc1LDYgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJNURCQjE1MTExMzFE
MEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7Ci0JCQlkc3RQYXRo
ID0gdGVzdGFwaVNjcmlwdHM7Ci0JCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7Ci0JCQlmaWxlcyA9
ICgKLQkJCQk1M0MzRDVFNTIxRUNFNzcyMDA4N0ZERkMgLyogYmFzaWMuanMgaW4gQ29weSBTdXBw
b3J0IFNjcmlwdCAqLywKLQkJCQk1MkQxMzA5MTIyMUNFMTc2MDA5QzgzNkMgLyogZm9vLmpzIGlu
IENvcHkgU3VwcG9ydCBTY3JpcHQgKi8sCi0JCQkJRkVDQjhCMkExRDI1Q0I1QTAwNkYyNDYzIC8q
IHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8s
Ci0JCQkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBw
b3J0IFNjcmlwdCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkNvcHkgU3VwcG9ydCBTY3JpcHQiOwot
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAJCTVEQkIx
NTI0MTMxRDBCQTEwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNh
ID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC00MDgyLDEwICs0MDY0LDEwIEBACiAJCTk1QzE4RDNFMEM5MEU3RUYwMEU3MkY3MyAv
KiBKU1JldGFpblB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JldGFp
blB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjAwOTdBNTBFQkFCQjU4MDA3
QTcyOTcgLyogTGFiZWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
YWJlbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2ODhDQjEzMEVEMTJC
NEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXNzZW1ibGVyQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2UmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdp
c3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2XzY0UmVnaXN0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5
OSAvKiBSZWdpc3RlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVn
aXN0ZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk2ODhDQjE0MEVEMTJC
NEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWDg2QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2OUEw
NzIwMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29k
ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdl
bmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjlBMDcyNzBFRDFDRTY5
MDBGMUY2ODEgLyogTGFiZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFi
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTAsOSArNzg5Miw5IEBACiAJ
CQkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLywKIAkJCQk5Njg4
Q0IxNDBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmggKi8sCiAJCQkJRkU1MzNDQTAx
RjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKKwkJCQk5Njg4Q0IxNDBFRDEyQjRF
MDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggKi8sCiAJCQkJOTY4OENCMTQwRUQxMkI0RTAw
MUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovLAogCQkJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5
MSAvKiBYODZSZWdpc3RlcnMuaCAqLywKLQkJCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTIgLyog
WDg2XzY0UmVnaXN0ZXJzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGFzc2VtYmxlcjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04NjU2LDcgKzg2MzgsNyBAQAogCQkJCTBGNkIxQ0I5
MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MjIgLyogQVJNNjRSZWdpc3Rl
cnMuaCAqLywKKwkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MjIgLyogQVJNNjRSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZGRkNDIC8q
IEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA5
OCw5ICsxMDA4MCw5IEBACiAJCQkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRlQmFy
cmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8qIFdy
aXRlQmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQwNDNCRjUw
MENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5Njg4
Q0IxNjBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTEgLyogWDg2UmVnaXN0ZXJzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhk
LnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJy
b3JDb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjA4LDcgKzEwMTkwLDcgQEAKIAkJCWJ1aWxk
UGhhc2VzID0gKAogCQkJCTE0QkQ1OUJDMEEzRThGOTAwMEJBRjU5QyAvKiBTb3VyY2VzICovLAog
CQkJCTE0QkQ1OUJEMEEzRThGOTAwMEJBRjU5QyAvKiBGcmFtZXdvcmtzICovLAotCQkJCTVEQkIx
NTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovLAorCQkJCTUzNjZG
REIyMjJENTQ4NUIwMEJGOTRBRiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0cyAqLywKIAkJCQk1REFG
RDZDRDE0NkI2QjZFMDBGQkVGQjQgLyogSW5zdGFsbCBTdXBwb3J0IFNjcmlwdCAqLywKIAkJCSk7
CiAJCQlidWlsZFJ1bGVzID0gKApAQCAtMTA1MzksNiArMTA1MjEsMjQgQEAKIAkJCXNoZWxsUGF0
aCA9IC9iaW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJTY3JpcHRzL2NoZWNrLXhjZmlsZWxpc3Rz
LnNoXG4iOwogCQl9OworCQk1MzY2RkRCMjIyRDU0ODVCMDBCRjk0QUYgLyogQ29weSBTdXBwb3J0
IFNjcmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5w
dXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJ
bmFtZSA9ICJDb3B5IFN1cHBvcnQgU2NyaXB0cyI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0g
KAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxs
U2NyaXB0ID0gInJzeW5jIC1yICR7U1JDUk9PVH0vQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzICR7
QlVJTFRfUFJPRFVDVFNfRElSfVxuIjsKKwkJfTsKIAkJNTNCNEJEMDkxRjY4QUY4OTAwRDJCRUEz
IC8qIEdlbmVyYXRlIFVuaWZpZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwppbmRleCAxZWJlMmMw
MmI2NGUyYjU3NGM2ZmMzOTkwZWE3MjBlZTIwM2M3ODg0Li5jNjE1NDNkNWQwMGQxOWJmZjYwNDdj
MDE0YzU4MDQwMjIyNmE2NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvTW9kdWxlTG9hZGVyLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Nb2R1bGVMb2FkZXIuanMKQEAgLTM2OSwzICszNjksMjAgQEAgYXN5bmMgZnVuY3Rpb24gcmVx
dWVzdEltcG9ydE1vZHVsZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAgdGhpcy5saW5r
QW5kRXZhbHVhdGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKICAgICByZXR1cm4gdGhpcy5n
ZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoZW50cnkubW9kdWxlKTsKIH0KKworZnVuY3Rpb24gZGVw
ZW5kZW5jeUtleXNJZkV2YWx1YXRlZChrZXkpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
bGV0IGVudHJ5ID0gdGhpcy5yZWdpc3RyeS5AZ2V0KGtleSk7CisgICAgaWYgKCFlbnRyeSB8fCAh
ZW50cnkuZXZhbHVhdGVkKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIGxldCBkZXBlbmRl
bmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAgbGV0IGxlbmd0aCA9IGRlcGVuZGVuY2ll
cy5sZW5ndGg7CisgICAgbGV0IHJlc3VsdCA9IG5ldyBAQXJyYXkobGVuZ3RoKTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBkZXBlbmRl
bmNpZXNbaV0ua2V5OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCA0YzY4YjlmZmQ2MGZh
ZDgzNDVjMWUxMGY5YTFjZmE1OTkxNWE1MGM2Li5mYWQ3YzdhYmJhMTAwODY2ZDI2ZGFiODA5YTYz
N2YzZDY1OGRhNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU01vZHVs
ZUxvYWRlcjo6c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm1vZHVs
CiAgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgbGlua0FuZEV2
YWx1YXRlTW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdEltcG9ydE1vZHVsZSAgICAg
ICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAzCisgICAgZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZCAgICAgIEpTQnVpbHRp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAg
ICAgZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0ICAgICAgIG1vZHVsZUxvYWRlckdldE1vZHVsZU5h
bWVzcGFjZU9iamVjdCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcGFyc2VNb2R1bGUg
ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCkBAIC0xMjUsNiArMTI2LDI2IEBAIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTW9k
dWxlS2V5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCiAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5pbXBsKCk7CiB9CiAKK0pTQXJyYXkqIEpTTW9kdWxl
TG9hZGVyOjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBrZXkpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNPYmplY3QqPihnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVw
ZW5kZW5jeUtleXNJZkV2YWx1YXRlZFB1YmxpY05hbWUoKSkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsK
KyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKKworICAg
IEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzLCBhcmd1bWVudHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOworCisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCByZXN1bHQpOwor
fQorCiBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTG9hZGVyLmgKaW5kZXggYmRhNTE0M2Q3NjJiMjdjMDYyNTQ4OTI5MmExOWFkZjMxYjI3ZTlk
MS4uZjU0MWE4Yzc5ZGM3ZTVjYWY1YmJjOGM5NzYzZTg2MzRhZThjMWJkYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCkBAIC04NCw2ICs4NCw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFV0aWxpdHkgZnVuY3Rpb25zLgogICAgIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBtb2R1bGVSZWNvcmQpOworICAgIEpTQXJyYXkqIGRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqLCBWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKaW5kZXggOWE0OWEzM2U3M2VlNzlmMmE2Njg2
OWFhMmMwMzM3Y2M4M2ViYmQwZi4uZjFjYWU1ZmZkOGNmZDIwY2M2YzQ2N2MzMmZhNTU3ZjEwZTgw
NDFlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dApAQCAt
OTIsMTIgKzkyLDcgQEAgaWYgKERFVkVMT1BFUl9NT0RFKQogICAgIFdFQktJVF9FWEVDVVRBQkxF
KHRlc3RkZmcpCiAKICAgICBmaWxlKENPUFkKLSAgICAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9BUEkvdGVzdHMvdGVzdGFwaS5qcyIKLSAgICAgICAgREVTVElOQVRJT04KLSAgICAgICAgJHtD
TUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L3Rlc3RhcGlTY3JpcHRzCi0gICAgKQotICAg
IGZpbGUoQ09QWQotICAgICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSS90ZXN0cy90ZXN0
YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyIKKyAgICAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMiCiAgICAgICAgIERFU1RJTkFUSU9OCiAgICAgICAg
ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS90ZXN0YXBpU2NyaXB0cwogICAgICkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374023</attachid>
            <date>2019-07-12 11:20:14 -0700</date>
            <delta_ts>2019-07-12 11:20:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199746-20190712112010.patch</filename>
            <type>text/plain</type>
            <size>66904</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTAwN2JiNzY4MGFlYmFlYWIzZDRjYzQ3MDg3ODVhMDY5MDUzMDBkLi45NjAxMjc0Nzg5ZDFiZWFl
ODViZGQyNGFkN2Y5ZjcxZDk2MzlmZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxOS0wNy0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQVBJIHRvIGdldCBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiBh
IGdpdmVuIEpTU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAg
ICAgICBUaGUgbWV0aG9kIG9ubHkgcmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGlmIHRoZSBtb2R1
bGUgd2FzCisgICAgICAgIGFjdHVhbGx5IGV2YWx1YXRlZC4gVGVjaG5pY2FsbHksIHdlIGtub3cg
d2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZQorICAgICAgICBhdCB0aGUgc2F0aXNmeSBwaGFzZSBi
dXQgZm9yIEFQSSBzaW1wbGljaXR5IHdlIG9ubHkgcHJvdmlkZSB0aGF0CisgICAgICAgIGluZm9y
bWF0aW9uIGlmIHRoZSBtb2R1bGUgZ3JhcGggd2FzIGNvbXBsZXRlIGVub3VnaCB0byBhdCBsZWFz
dAorICAgICAgICBydW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGFuIGlzc3Vl
IHdoZXJlIHdlIHdvdWxkIGFsbG93IGltcG9ydAorICAgICAgICBzcGVjaWZpZXJzIHRoYXQgZGlk
bid0IHN0YXJ0ICIuLyIgb3IgIi8iLiBGb3IgcmVmZXJlbmNlLCBXZSBoYXZlCisgICAgICAgIHRo
aXMgcmVzdHJpY3Rpb24gdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSB3ZWIvbm9kZS4gVGhlCisg
ICAgICAgIHJlc3RyaWN0aW9uIGV4aXN0cyBpbiBvcmRlciB0byBwcmVzZXJ2ZSBuYW1lc3BhY2Ug
Zm9yCisgICAgICAgIGJ1aWx0aW4tbW9kdWxlcy4KKworICAgICAgICBMYXN0bHksIHRoaXMgcGF0
Y2ggbWFrZXMgaXQgc28gdGhhdCB3ZSBjb3B5IGFsbCBzY3JpcHRzIGluIHRoZQorICAgICAgICBB
UEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMgZGlyZWN0b3J5IHNvIHRoZXkgZG9uJ3QgaGF2ZSB0byBi
ZQorICAgICAgICBpbmRpdmlkdWFsbHkgYWRkZWQgdG8gdGhlIHhjb2RlIHByb2plY3QuCisKKyAg
ICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgIChKU0M6OmNvbXB1dGVW
YWxpZEltcG9ydFNwZWNpZmllcik6CisgICAgICAgIChKU0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojpt
b2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAg
ICAgICAgKC1bSlNDb250ZXh0IGRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2NyaXB0
Ol0pOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pT
U2NyaXB0Lmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0
RmV0Y2hXaXRoVHdvQ3ljbGUpOgorICAgICAgICAodGVzdEZldGNoV2l0aFRocmVlQ3ljbGUpOgor
ICAgICAgICAodGVzdE1vZHVsZUJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAoK1tKU0NvbnRleHRG
aWxlTG9hZGVyRGVsZWdhdGUgbmV3Q29udGV4dF0pOgorICAgICAgICAoLVtKU0NvbnRleHRGaWxl
TG9hZGVyRGVsZWdhdGUgZmV0Y2hNb2R1bGVTY3JpcHQ6XSk6CisgICAgICAgICgtW0pTQ29udGV4
dEZpbGVMb2FkZXJEZWxlZ2F0ZSBmaW5kU2NyaXB0Rm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0Nv
bnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgY29udGV4dDpmZXRjaE1vZHVsZUZvcklkZW50aWZpZXI6
d2l0aFJlc29sdmVIYW5kbGVyOmFuZFJlamVjdEhhbmRsZXI6XSk6CisgICAgICAgICh0ZXN0RGVw
ZW5kZW5jaWVzQXJyYXkpOgorICAgICAgICAodGVzdERlcGVuZGVuY2llc0V2YWx1YXRpb25FcnJv
cik6CisgICAgICAgICh0ZXN0RGVwZW5kZW5jaWVzU3ludGF4RXJyb3IpOgorICAgICAgICAodGVz
dERlcGVuZGVuY2llc0JhZEltcG9ydElkKToKKyAgICAgICAgKHRlc3REZXBlbmRlbmNpZXNNaXNz
aW5nSW1wb3J0KToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJKToKKyAgICAgICAgKiBBUEkv
dGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJ
ZC5qczogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVu
Y3lMaXN0VGVzdHMvYmFyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNj
cmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9kZXBlbmRlbmNpZXNFbnRyeS5qczogQWRkZWQuCisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9v
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5j
eUxpc3RUZXN0cy9taXNzaW5nSW1wb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9yZWZlcmVuY2VFcnJvci5qczogQWRk
ZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVz
dHMvc3ludGF4RXJyb3IuanM6IEFkZGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpU2Ny
aXB0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMuCisg
ICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanM6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuanMuCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWls
dGlucy9Nb2R1bGVMb2FkZXIuanM6CisgICAgICAgIChkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVk
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVMb2FkZXI6OmRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoKKyAgICAgICAgKiBzaGVsbC9DTWFrZUxpc3RzLnR4dDoK
KwogMjAxOS0wNy0wOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQb2ludGVyIEV2ZW50c10gRW5hYmxlIG9ubHkgb24gdGhlIG1vc3QgcmVjZW50IHZlcnNp
b24gb2YgdGhlIHN1cHBvcnRlZCBpT1MgZmFtaWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCA1MzMyMjgwMGYzNzA0Y2I3YjMyMTliMTZm
NWVhZmUyYmIzZDIxMDVmLi4xMTYxMDliYmJlYmQ5ZTdjZjI2MjRhMzlhMzg5ZmNmNTlkMzk1Mjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0K
QEAgLTY5LDYgKzY5LDMzIEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIsIC8v
IGluc3RhbnRpYXRlU3RyZWFtaW5nCiB9OwogCitzdGF0aWMgRXhwZWN0ZWQ8VVJMLCBTdHJpbmc+
IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmlu
ZyYgc3BlY2lmaWVyKQoreworICAgIFVSTCBhYnNvbHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsK
KyAgICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVV
Ukw7CisKKyAgICBpZiAoIXNwZWNpZmllci5zdGFydHNXaXRoKCcvJykgJiYgIXNwZWNpZmllci5z
dGFydHNXaXRoKCIuLyIpICYmICFzcGVjaWZpZXIuc3RhcnRzV2l0aCgiLi4vIikpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJNb2R1bGUgc3BlY2lmaWVyOiAiX3Ms
IHNwZWNpZmllciwgIiBkb2VzIG5vdCBzdGFydCB3aXRoIFwiL1wiLCBcIi4vXCIsIG9yIFwiLi4v
XCIuIl9zKSk7CisKKyAgICBpZiAoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSkgeworICAgICAg
ICBhYnNvbHV0ZVVSTCA9IFVSTChVUkwoeyB9LCAiZmlsZTovLyIpLCBzcGVjaWZpZXIpOworICAg
ICAgICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGFic29s
dXRlVVJMOworICAgIH0KKworICAgIGlmIChiYXNlID09IFVSTCgpKQorICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGJhc2UgVVJMIGZvciBsb2Fk
aW5nLiJfcyk7CisKKyAgICBpZiAoIWJhc2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiUmVmZXJyZXJpbmcgc2NyaXB0J3MgdXJsIGlzIG5vdCB2
YWxpZDogIl9zLCBiYXNlLnN0cmluZygpKSk7CisKKyAgICBhYnNvbHV0ZVVSTCA9IFVSTChiYXNl
LCBzcGVjaWZpZXIpOworICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiBhYnNvbHV0ZVVSTDsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygi
Q291bGQgbm90IGZvcm0gdmFsaWQgVVJMIGZyb20gaWRlbnRpZmllciBhbmQgYmFzZS4gVHJpZWQ6
Il9zLCBhYnNvbHV0ZVVSTC5zdHJpbmcoKSkpOworfQorCiBJZGVudGlmaWVyIEpTQVBJR2xvYmFs
T2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBy
ZWZlcnJlciwgSlNWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtNzYsMjMg
KzEwMywyMiBAQCBJZGVudGlmaWVyIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNv
bHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQVNTRVJUX1VOVVNFRChnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwog
ICAgIEFTU0VSVChrZXkuaXNTdHJpbmcoKSB8fCBrZXkuaXNTeW1ib2woKSk7CiAgICAgU3RyaW5n
IG5hbWUgPSAga2V5LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKKyAgICBVUkwgYmFzZTsKICAgICBpZiAoSlNTdHJpbmcqIHJlZmVycmVy
U3RyaW5nID0ganNEeW5hbWljQ2FzdDxKU1N0cmluZyo+KHZtLCByZWZlcnJlcikpIHsKICAgICAg
ICAgU3RyaW5nIHZhbHVlID0gcmVmZXJyZXJTdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgICAgICBV
UkwgcmVmZXJyZXJVUkwoeyB9LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgICAgIFVSTCByZWZlcnJlclVSTCh7IH0sIHZhbHVlKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocmVmZXJyZXJVUkwuaXNWYWxpZCgpKTsKLQotICAgICAgICBVUkwg
dXJsID0gVVJMKHJlZmVycmVyVVJMLCBuYW1lKTsKLSAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB1cmwpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTCB1cmwgPSBVUkwoeyB9LCBuYW1lKTsKLSAgICAgICAg
aWYgKHVybC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCB1cmwpOworICAgICAgICBiYXNlID0gV1RGTW92ZShyZWZlcnJlclVSTCk7CiAg
ICAgfQogCi0gICAgdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiQ291bGQgbm90IGZvcm0gdmFs
aWQgVVJMIGZyb20gaWRlbnRpZmllciBhbmQgYmFzZSJfcyk7CisgICAgYXV0byByZXN1bHQgPSBj
b21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoYmFzZSwgbmFtZSk7CisgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZXN1bHQudmFsdWUo
KSk7CisKKyAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIHJl
c3VsdC5lcnJvcigpKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTIxLDMzICsxNDcsMTIg
QEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBv
cnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGcKICAgICAgICAgcmV0dXJuIHJlamVjdChleGNlcHRp
b24pOwogICAgIH0KIAotICAgIFVSTCBhYnNvbHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKLSAg
ICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gaW1wb3J0KGFic29s
dXRlVVJMKTsKLQotICAgIGlmICghc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSAmJiAhc3BlY2lm
aWVyLnN0YXJ0c1dpdGgoIi4vIikgJiYgIXNwZWNpZmllci5zdGFydHNXaXRoKCIuLi8iKSkKLSAg
ICAgICAgcmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJNb2R1bGUg
c3BlY2lmaWVyOiAiLCBzcGVjaWZpZXIsICIgZG9lcyBub3Qgc3RhcnQgd2l0aCBcIi9cIiwgXCIu
L1wiLCBvciBcIi4uL1wiLiJfcykpKTsKLQotICAgIGlmIChzcGVjaWZpZXIuc3RhcnRzV2l0aCgn
LycpKSB7Ci0gICAgICAgIGFic29sdXRlVVJMID0gVVJMKFVSTCh7IH0sICJmaWxlOi8vIiksIHNw
ZWNpZmllcik7Ci0gICAgICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICByZXR1cm4gaW1wb3J0KGFic29sdXRlVVJMKTsKLSAgICB9Ci0KLSAgICBhdXRvIG5vQmFzZUVy
cm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBmb3IgbG9hZGlu
Zy4iX3M7Ci0gICAgaWYgKHNvdXJjZU9yaWdpbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHJl
amVjdChjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKG5vQmFzZUVycm9yTWVzc2FnZSwgIiBS
ZWZlcnJpbmcgc2NyaXB0IGhhcyBubyBVUkwuIl9zKSkpOwotCi0gICAgYXV0byByZWZlcnJlciA9
IHNvdXJjZU9yaWdpbi5zdHJpbmcoKTsKKyAgICBTdHJpbmcgcmVmZXJyZXIgPSAhc291cmNlT3Jp
Z2luLmlzTnVsbCgpID8gc291cmNlT3JpZ2luLnN0cmluZygpIDogU3RyaW5nKCk7CiAgICAgVVJM
IGJhc2VVUkwoVVJMKCksIHJlZmVycmVyKTsKLSAgICBpZiAoIWJhc2VVUkwuaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcobm9CYXNl
RXJyb3JNZXNzYWdlLCAiIFJlZmVycmluZyBzY3JpcHQncyBVUkwgaXMgbm90IHZhbGlkOiAiX3Ms
IGJhc2VVUkwuc3RyaW5nKCkpKSk7Ci0KLSAgICBVUkwgdXJsKGJhc2VVUkwsIHNwZWNpZmllcik7
Ci0gICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gcmVqZWN0KGNyZWF0ZUVy
cm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNvdWxkIG5vdCBkZXRlcm1pbmUgYSB2YWxpZCBVUkwgZm9y
IG1vZHVsZSBzcGVjaWZpZXIuIFRyaWVkOiAiX3MsIHVybC5zdHJpbmcoKSkpKTsKLQotICAgIHJl
dHVybiBpbXBvcnQodXJsKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVWYWxpZEltcG9ydFNw
ZWNpZmllcihiYXNlVVJMLCBzcGVjaWZpZXIpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJl
dHVybiBpbXBvcnQocmVzdWx0LnZhbHVlKCkpOworICAgIHJldHVybiByZWplY3QoY3JlYXRlRXJy
b3IoZXhlYywgcmVzdWx0LmVycm9yKCkpKTsKIH0KIAogSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJ
R2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXksIEpTVmFs
dWUsIEpTVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDA5
NGM5MzcxYThiNWY4YWU3NDFhYWRiOWFkY2I1NjQ4ZjRlMGJhZmUuLmI5YTM4Yjk4OWI2ZDQxZDky
MTJkNWI2YmRmZGEyYmFiZjg1YTA1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0Lm1tCkBAIC0xNDgsNiArMTQ4LDMyIEBACiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aEpTVmFsdWVSZWY6dG9SZWYodm0sIHJlc3VsdCkgaW5Db250ZXh0OnNlbGZdOwogfQogCistIChK
U1ZhbHVlICopZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9kdWxlSlNTY3JpcHQ6KEpTU2NyaXB0
ICopc2NyaXB0Cit7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKG1fY29udGV4dCk7
CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcih2bSk7CisKKyAgICBpZiAoc2NyaXB0LnR5cGUgIT0ga0pTU2NyaXB0VHlwZU1vZHVsZSkg
eworICAgICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIoc2VsZiwgW0pTVmFsdWUgdmFsdWVXaXRo
TmV3RXJyb3JGcm9tTWVzc2FnZTpAInNjcmlwdCBpcyBub3QgYSBtb2R1bGUiIGluQ29udGV4dDpz
ZWxmXSk7CisgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRl
eHQ6c2VsZl07CisgICAgfQorCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworICAgIEpTQzo6SlNBcnJheSogcmVzdWx0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+ZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZChleGVjLCBKU0M6
OmpzU3RyaW5nKCZ2bSwgW1tzY3JpcHQgc291cmNlVVJMXSBhYnNvbHV0ZVN0cmluZ10pKTsKKyAg
ICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb25W
YWx1ZSA9IHRvUmVmKGV4ZWMsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKKyAgICAgICAg
c2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHZhbHVlRnJvbU5v
dGlmeUV4Y2VwdGlvbjpleGNlcHRpb25WYWx1ZV07CisgICAgfQorCisgICAgaWYgKCFyZXN1bHQp
IHsKKyAgICAgICAgc2VsZi5leGNlcHRpb25IYW5kbGVyKHNlbGYsIFtKU1ZhbHVlIHZhbHVlV2l0
aE5ld0Vycm9yRnJvbU1lc3NhZ2U6QCJzY3JpcHQgaGFzIG5vdCBydW4gaW4gY29udGV4dCBvciB3
YXMgbm90IGV2YWx1YXRlZCBzdWNjZXNzZnVsbHkiIGluQ29udGV4dDpzZWxmXSk7CisgICAgICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6c2VsZl07CisgICAg
fQorICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKHZtLCByZXN1
bHQpIGluQ29udGV4dDpzZWxmXTsKK30KKwogLSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFsdWUg
Kil2YWx1ZQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhtX2NvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAppbmRleCBmNDY1
NmI5MjljNTI4ZjU5NjE0MDUyNjIxNWM1ZjU2MDlmYTdjYzUwLi43NWY1MjZiOTc4MzQxODEyMDgz
NDYxMjI4MmM1MGQzMWNiNzAwNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFByaXZhdGUuaApAQCAtODQsNyArODQsNyBAQAogQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5Mb29wIEpTQ19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQGFic3RyYWN0IFRoZSBk
ZWxlZ2F0ZSB0aGUgY29udGV4dCB3aWxsIHVzZSB3aGVuIHRyeWluZyB0byBsb2FkIGEgbW9kdWxl
LiBOb3RlLCB0aGlzIGRlbGVnYXRlIHdpbGwgYmUgaWdub3JlZCBmb3IgY29udGV4dHMgcmV0dXJu
ZWQgYnkgVUlXZWJWaWV3LiAqLwotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxKU01v
ZHVsZUxvYWRlckRlbGVnYXRlPiBtb2R1bGVMb2FkZXJEZWxlZ2F0ZSBKU0NfQVBJX0FWQUlMQUJM
RShtYWNvcyhKU0NfTUFDX1RCQSksIGlvcyhKU0NfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWspIGlkIDxKU01vZHVsZUxvYWRlckRlbGVnYXRlPiBtb2R1bGVMb2FkZXJEZWxl
Z2F0ZSBKU0NfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKIC8qIQog
IEBtZXRob2QKQEAgLTk0LDcgKzk0LDE3IEBACiAKICBPdGhlcndpc2UsIGlmIHRoZSBzY3JpcHQg
d2FzIGNyZWF0ZWQgd2l0aCBrSlNTY3JpcHRUeXBlTW9kdWxlLCB0aGUgbW9kdWxlIHdpbGwgYmUg
cnVuIGFzeW5jaHJvbm91c2x5IGFuZCB3aWxsIHJldHVybiBhIHByb21pc2UgcmVzb2x2ZWQgd2hl
biB0aGUgbW9kdWxlIGFuZCBhbnkgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgYXJlIGxvYWRlZC4g
VGhlIG1vZHVsZSBsb2FkZXIgd2lsbCB0cmVhdCB0aGUgc2NyaXB0IGFzIGlmIGl0IGhhZCBiZWVu
IHJldHVybmVkIGZyb20gYSBkZWxlZ2F0ZSBjYWxsIHRvIG1vZHVsZUxvYWRlckRlbGVnYXRlLiBU
aGlzIG1pcnJvcnMgdGhlIEphdmFTY3JpcHQgZHluYW1pYyBpbXBvcnQgb3BlcmF0aW9uLgogICov
Ci0tIChKU1ZhbHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQgKilzY3JpcHQ7CisvLyBG
SVhNRTogQmVmb3JlIG1ha2luZyB0aGlzIHB1YmxpYyBuZWVkIHRvIGZpeDogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTcxNAorLSAoSlNWYWx1ZSAqKWV2YWx1YXRl
SlNTY3JpcHQ6KEpTU2NyaXB0ICopc2NyaXB0IEpTQ19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1
KSwgaW9zKDEzLjApKTsKKworLyohCisgQG1ldGhvZAorIEBhYnN0cmFjdCBHZXQgdGhlIGlkZW50
aWZpZXJzIG9mIHRoZSBtb2R1bGVzIGEgSlNTY3JpcHQgZGVwZW5kcyBvbiBpbiB0aGlzIGNvbnRl
eHQuCisgQHBhcmFtIHNjcmlwdCB0aGUgSlNTY3JpcHQgdG8gZGV0ZXJtaW5lIHRoZSBkZXBlbmRl
bmNpZXMgb2YuCisgQHJlc3VsdCBBbiBBcnJheSBjb250YWluaW5nIGFsbCB0aGUgaWRlbnRpZmll
cnMgb2YgbW9kdWxlcyBzY3JpcHQgZGVwZW5kcyBvbi4KKyBAZGlzY3Vzc2lvbiBJZiB0aGUgcHJv
dmlkZWQgSlNTY3JpcHQgd2FzIG5vdCBjcmVhdGVkIHdpdGgga0pTU2NyaXB0VHlwZU1vZHVsZSwg
YW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLiBBbHNvLCBpZiB0aGUgc2NyaXB0IGhhcyBub3Qg
YWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBpbiB0aGlzIGNvbnRleHQgYW4gZXJyb3Igd2lsbCBiZSB0
aHJvdy4KKyAqLworLSAoSlNWYWx1ZSAqKWRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpT
U2NyaXB0OihKU1NjcmlwdCAqKXNjcmlwdCBKU0NfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5oCmlu
ZGV4IGQ1OWIwYjRmMjllYTYwMmZhMDliOGViY2EzYTI1NWQxNmEzMmUxMjkuLjEyY2NiMDU5M2Vm
OWQxMTFhZGU3YjBhMTQwMTk2OGYxMWFlZjQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0LmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgSlNT
Y3JpcHRUeXBlKSB7CiB9OwogCiAKLUpTQ19DTEFTU19BVkFJTEFCTEUobWFjb3MoSlNDX01BQ19U
QkEpLCBpb3MoSlNDX0lPU19UQkEpKQorSlNDX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSkKIEBpbnRlcmZhY2UgSlNTY3JpcHQgOiBOU09iamVjdAogCiAvKiEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS1mdW5jdGlvbi1v
dmVycmlkZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGktZnVu
Y3Rpb24tb3ZlcnJpZGVzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjNjY2Vk
MDQ4N2U5YzBlNmNlZTU3ODA2OTYzOGFjMGRjMmViNzQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCww
IEBACi0vLyB0ZXN0YXBpIGZ1bmN0aW9uIG92ZXJyaWRlcyBmb3IgdGVzdGluZy4KLW92ZXJyaWRl
ICUlJXsgLyogT3JpZ2luYWwgZjEgKi8gfSUlJQotd2l0aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjEg
Ki8gfSUlJQotCi1vdmVycmlkZSAjJCV7Ci0gICAgLy8gT3JpZ2luYWwgZjIKLX0jJCUKLXdpdGgg
JCQkeyAvKiBPdmVycmlkZGVuIGYyICovIH0kJCQKLQotb3ZlcnJpZGUgJSUleyAvKiBPcmlnaW5h
bCBmMyAqLyB9JSUlCi13aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmMyAqLyB9JSUlCi0KLW92ZXJy
aWRlICUlJXsKLS8qIE9yaWdpbmFsIGY0ICovCi19JSUlCi13aXRoICUlJXsgLyogT3ZlcnJpZGRl
biBmNCAqLyB9JSUlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZDM3MDFjMjFlMDU4NjZhN2EyMGExYWVm
MjJjYjBmYjI4M2M0ZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMzA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gYmx1ZGdlb25Bcmd1bWVudHMoKSB7IGlmICgwKSBhcmd1
bWVudHM7IHJldHVybiBmdW5jdGlvbiBnKCkge30gfQotaCA9IGJsdWRnZW9uQXJndW1lbnRzKCk7
Ci1nYygpOwotCi12YXIgZmFpbGVkID0gZmFsc2U7Ci1mdW5jdGlvbiBwYXNzKG1zZykKLXsKLSAg
ICBwcmludCgiUEFTUzogIiArIG1zZywgImdyZWVuIik7Ci19Ci0KLWZ1bmN0aW9uIGZhaWwobXNn
KQotewotICAgIHByaW50KCJGQUlMOiAiICsgbXNnLCAicmVkIik7Ci0gICAgZmFpbGVkID0gdHJ1
ZTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmUoYSwgYikKLXsKLSAgICB2YXIgZXZhbEE7Ci0gICAg
dHJ5IHsKLSAgICAgICAgZXZhbEEgPSBldmFsKGEpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBldmFsQSA9IGU7Ci0gICAgfQotICAgIAotICAgIGlmIChldmFsQSA9PSBiIHx8IGlzTmFOKGV2
YWxBKSAmJiB0eXBlb2YgZXZhbEEgPT0gJ251bWJlcicgJiYgaXNOYU4oYikgJiYgdHlwZW9mIGIg
PT0gJ251bWJlcicpCi0gICAgICAgIHBhc3MoYSArICIgc2hvdWxkIGJlICIgKyBiICsgIiBhbmQg
aXMuIik7Ci0gICAgZWxzZQotICAgICAgICBmYWlsKGEgKyAiIHNob3VsZCBiZSAiICsgYiArICIg
YnV0IGluc3RlYWQgaXMgIiArIGV2YWxBICsgIi4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhy
b3coYSkKLXsKLSAgICB2YXIgZXZhbEE7Ci0gICAgdHJ5IHsKLSAgICAgICAgZXZhbChhKTsKLSAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgcGFzcyhhICsgIiB0aHJldzogIiArIGUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZmFpbChhICsgIiBkaWQgbm90IHRocm93IGFuIGV4Y2Vw
dGlvbi4iKTsKLX0KLQotZnVuY3Rpb24gZ2xvYmFsU3RhdGljRnVuY3Rpb24oKQotewotICAgIHJl
dHVybiA0OwotfQotCi1zaG91bGRCZSgiZ2xvYmFsU3RhdGljVmFsdWUiLCAzKTsKLXNob3VsZEJl
KCJnbG9iYWxTdGF0aWNGdW5jdGlvbigpIiwgNCk7Ci1zaG91bGRCZSgidGhpcy5nbG9iYWxTdGF0
aWNGdW5jdGlvbigpIiwgNCk7Ci0KLWZ1bmN0aW9uIGdsb2JhbFN0YXRpY0Z1bmN0aW9uMigpIHsK
LSAgICByZXR1cm4gMTA7Ci19Ci1zaG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7Iiwg
MTApOwotdGhpcy5nbG9iYWxTdGF0aWNGdW5jdGlvbjIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDIw
OyB9Ci1zaG91bGRCZSgiZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMjApOwotc2hvdWxkQmUo
InRoaXMuZ2xvYmFsU3RhdGljRnVuY3Rpb24yKCk7IiwgMjApOwotCi1mdW5jdGlvbiBpQW1Ob3RB
U3RhdGljRnVuY3Rpb24oKSB7IHJldHVybiAxMDsgfQotc2hvdWxkQmUoImlBbU5vdEFTdGF0aWNG
dW5jdGlvbigpOyIsIDEwKTsKLXRoaXMuaUFtTm90QVN0YXRpY0Z1bmN0aW9uID0gZnVuY3Rpb24o
KSB7IHJldHVybiAyMDsgfQotc2hvdWxkQmUoImlBbU5vdEFTdGF0aWNGdW5jdGlvbigpOyIsIDIw
KTsKLQotc2hvdWxkQmUoInR5cGVvZiBNeU9iamVjdCIsICJmdW5jdGlvbiIpOyAvLyBvdXIgb2Jq
ZWN0IGltcGxlbWVudHMgJ2NhbGwnCi1NeU9iamVjdC5jYW50RmluZCA9IDE7Ci1zaG91bGRCZSgi
TXlPYmplY3QuY2FudEZpbmQiLCB1bmRlZmluZWQpOwotTXlPYmplY3QucmVndWxhclR5cGUgPSAx
Owotc2hvdWxkQmUoIk15T2JqZWN0LnJlZ3VsYXJUeXBlIiwgMSk7Ci1NeU9iamVjdC5hbHdheXNP
bmUgPSAyOwotc2hvdWxkQmUoIk15T2JqZWN0LmFsd2F5c09uZSIsIDEpOwotTXlPYmplY3QuY2Fu
dERlbGV0ZSA9IDE7Ci1kZWxldGUgTXlPYmplY3QuY2FudERlbGV0ZTsKLXNob3VsZEJlKCJNeU9i
amVjdC5jYW50RGVsZXRlIiwgMSk7Ci1zaG91bGRCZSgiZGVsZXRlIE15T2JqZWN0LnRocm93T25E
ZWxldGUiLCAiYW4gZXhjZXB0aW9uIik7Ci1NeU9iamVjdC5jYW50U2V0ID0gMTsKLXNob3VsZEJl
KCJNeU9iamVjdC5jYW50U2V0IiwgdW5kZWZpbmVkKTsKLXNob3VsZEJlKCJNeU9iamVjdC50aHJv
d09uR2V0IiwgImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIk15T2JqZWN0LnRocm93T25TZXQg
PSA1IiwgImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIk15T2JqZWN0KCd0aHJvd09uQ2FsbCcp
IiwgImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIm5ldyBNeU9iamVjdCgndGhyb3dPbkNvbnN0
cnVjdCcpIiwgImFuIGV4Y2VwdGlvbiIpOwotc2hvdWxkQmUoIid0aHJvd09uSGFzSW5zdGFuY2Un
IGluc3RhbmNlb2YgTXlPYmplY3QiLCAiYW4gZXhjZXB0aW9uIik7Ci0KLU15T2JqZWN0Lm51bGxH
ZXRGb3J3YXJkU2V0ID0gMTsKLXNob3VsZEJlKCJNeU9iamVjdC5udWxsR2V0Rm9yd2FyZFNldCIs
IDEpOwotCi12YXIgZm91bmRNeVByb3BlcnR5TmFtZSA9IGZhbHNlOwotdmFyIGZvdW5kUmVndWxh
clR5cGUgPSBmYWxzZTsKLWZvciAodmFyIHAgaW4gTXlPYmplY3QpIHsKLSAgICBpZiAocCA9PSAi
bXlQcm9wZXJ0eU5hbWUiKQotICAgICAgICBmb3VuZE15UHJvcGVydHlOYW1lID0gdHJ1ZTsKLSAg
ICBpZiAocCA9PSAicmVndWxhclR5cGUiKQotICAgICAgICBmb3VuZFJlZ3VsYXJUeXBlID0gdHJ1
ZTsKLX0KLQotaWYgKGZvdW5kTXlQcm9wZXJ0eU5hbWUpCi0gICAgcGFzcygiTXlPYmplY3QubXlQ
cm9wZXJ0eU5hbWUgd2FzIGVudW1lcmF0ZWQiKTsKLWVsc2UKLSAgICBmYWlsKCJNeU9iamVjdC5t
eVByb3BlcnR5TmFtZSB3YXMgbm90IGVudW1lcmF0ZWQiKTsKLQotaWYgKGZvdW5kUmVndWxhclR5
cGUpCi0gICAgcGFzcygiTXlPYmplY3QucmVndWxhclR5cGUgd2FzIGVudW1lcmF0ZWQiKTsKLWVs
c2UKLSAgICBmYWlsKCJNeU9iamVjdC5yZWd1bGFyVHlwZSB3YXMgbm90IGVudW1lcmF0ZWQiKTsK
LQotdmFyIGFsd2F5c09uZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKE15T2JqZWN0LCAiYWx3YXlzT25lIik7Ci1zaG91bGRCZSgndHlwZW9mIGFsd2F5c09uZURl
c2NyaXB0b3InLCAib2JqZWN0Iik7Ci1zaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRvci52YWx1
ZScsIE15T2JqZWN0LmFsd2F5c09uZSk7Ci1zaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRvci5j
b25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdhbHdheXNPbmVEZXNjcmlwdG9yLmVudW1l
cmFibGUnLCBmYWxzZSk7IC8vIEFjdHVhbGx5IGl0IGlzLgotdmFyIGNhbnRGaW5kRGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJjYW50RmluZCIp
Owotc2hvdWxkQmUoJ3R5cGVvZiBjYW50RmluZERlc2NyaXB0b3InLCAib2JqZWN0Iik7Ci1zaG91
bGRCZSgnY2FudEZpbmREZXNjcmlwdG9yLnZhbHVlJywgTXlPYmplY3QuY2FudEZpbmQpOwotc2hv
dWxkQmUoJ2NhbnRGaW5kRGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJl
KCdjYW50RmluZERlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKLXRyeSB7Ci0gICAgLy8g
SWYgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgcmV0dXJuZWQgYW4gYWNjZXNzIGRlc2NyaXB0
b3IsIHRoaXMgd291bGRuJ3QgdGhyb3cuCi0gICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihNeU9iamVjdCwgInRocm93T25HZXQiKTsKLX0gY2F0Y2ggKGUpIHsKLSAgICBwYXNzKCJn
ZXR0aW5nIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgdGhyb3dPbkdldCB0aHJldyBleGNlcHRpb24i
KTsKLX0KLXZhciBteVByb3BlcnR5TmFtZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKE15T2JqZWN0LCAibXlQcm9wZXJ0eU5hbWUiKTsKLXNob3VsZEJlKCd0eXBl
b2YgbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ215UHJv
cGVydHlOYW1lRGVzY3JpcHRvci52YWx1ZScsIE15T2JqZWN0Lm15UHJvcGVydHlOYW1lKTsKLXNo
b3VsZEJlKCdteVByb3BlcnR5TmFtZURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7Ci1z
aG91bGRCZSgnbXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7IC8v
IEFjdHVhbGx5IGl0IGlzLgotdHJ5IHsKLSAgICAvLyBpZiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoKSByZXR1cm5lZCBhbiBhY2Nlc3MgZGVzY3JpcHRvciwgdGhpcyB3b3VsZG4ndCB0aHJvdy4K
LSAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAiaGFzUHJvcGVy
dHlMaWUiKTsKLX0gY2F0Y2ggKGUpIHsKLSAgICBwYXNzKCJnZXR0aW5nIHByb3BlcnR5IGRlc2Ny
aXB0b3Igb2YgaGFzUHJvcGVydHlMaWUgdGhyZXcgZXhjZXB0aW9uIik7Ci19Ci1zaG91bGRCZSgn
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVjdCwgImRvZXNOb3RFeGlzdCIp
JywgdW5kZWZpbmVkKTsKLQotbXlPYmplY3QgPSBuZXcgTXlPYmplY3QoKTsKLQotc2hvdWxkQmUo
ImRlbGV0ZSBNeU9iamVjdC5yZWd1bGFyVHlwZSIsIHRydWUpOwotc2hvdWxkQmUoIk15T2JqZWN0
LnJlZ3VsYXJUeXBlIiwgdW5kZWZpbmVkKTsKLXNob3VsZEJlKCJNeU9iamVjdCgwKSIsIDEpOwot
c2hvdWxkQmUoIk15T2JqZWN0KCkiLCB1bmRlZmluZWQpOwotc2hvdWxkQmUoInR5cGVvZiBteU9i
amVjdCIsICJvYmplY3QiKTsKLXNob3VsZEJlKCJNeU9iamVjdCA/IDEgOiAwIiwgdHJ1ZSk7IC8v
IHRvQm9vbGVhbgotc2hvdWxkQmUoIitNeU9iamVjdCIsIDEpOyAvLyB0b051bWJlcgotc2hvdWxk
QmUoIihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTXlPYmplY3QpKSIsICJbb2JqZWN0
IE15T2JqZWN0XSIpOyAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nCi1zaG91bGRCZSgiKE15
T2JqZWN0LnRvU3RyaW5nKCkpIiwgIltvYmplY3QgTXlPYmplY3RdIik7IC8vIHRvU3RyaW5nCi1z
aG91bGRCZSgiU3RyaW5nKE15T2JqZWN0KSIsICJNeU9iamVjdEFzU3RyaW5nIik7IC8vIHRvU3Ry
aW5nCi1zaG91bGRCZSgiTXlPYmplY3QgLSAwIiwgMSk7IC8vIHRvTnVtYmVyCi1zaG91bGRCZSgi
TXlPYmplY3QudmFsdWVPZigpIiwgMSk7IC8vIHZhbHVlT2YKLQotc2hvdWxkQmUoInR5cGVvZiBN
eUNvbnN0cnVjdG9yIiwgIm9iamVjdCIpOwotY29uc3RydWN0ZWRPYmplY3QgPSBuZXcgTXlDb25z
dHJ1Y3RvcigxKTsKLXNob3VsZEJlKCJ0eXBlb2YgY29uc3RydWN0ZWRPYmplY3QiLCAib2JqZWN0
Iik7Ci1zaG91bGRCZSgiY29uc3RydWN0ZWRPYmplY3QudmFsdWUiLCAxKTsKLXNob3VsZEJlKCJt
eU9iamVjdCBpbnN0YW5jZW9mIE15T2JqZWN0IiwgdHJ1ZSk7Ci1zaG91bGRCZSgiKG5ldyBPYmpl
Y3QoKSkgaW5zdGFuY2VvZiBNeU9iamVjdCIsIGZhbHNlKTsKLQotc2hvdWxkVGhyb3coIm5ldyBN
eUJhZENvbnN0cnVjdG9yKCkiKTsKLQotTXlPYmplY3QubnVsbEdldFNldCA9IDE7Ci1zaG91bGRC
ZSgiTXlPYmplY3QubnVsbEdldFNldCIsIDEpOwotc2hvdWxkVGhyb3coIk15T2JqZWN0Lm51bGxD
YWxsKCkiKTsKLXNob3VsZFRocm93KCJNeU9iamVjdC5oYXNQcm9wZXJ0eUxpZSIpOwotCi1kZXJp
dmVkID0gbmV3IERlcml2ZWQoKTsKLQotc2hvdWxkQmUoImRlcml2ZWQgaW5zdGFuY2VvZiBEZXJp
dmVkIiwgdHJ1ZSk7Ci1zaG91bGRCZSgiZGVyaXZlZCBpbnN0YW5jZW9mIEJhc2UiLCB0cnVlKTsK
LQotLy8gYmFzZSBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMgcmV0dXJuIDEgd2hlbiBjYWxsZWQv
Z290dGVuOyBkZXJpdmVkLCAyCi1zaG91bGRCZSgiZGVyaXZlZC5iYXNlUHJvdG9EdXAoKSIsIDIp
Owotc2hvdWxkQmUoImRlcml2ZWQuYmFzZVByb3RvKCkiLCAxKTsKLXNob3VsZEJlKCJkZXJpdmVk
LmJhc2VEdXAiLCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkLmJhc2VPbmx5IiwgMSk7Ci1zaG91bGRC
ZSgiZGVyaXZlZC5wcm90b09ubHkoKSIsIDIpOwotc2hvdWxkQmUoImRlcml2ZWQucHJvdG9EdXAi
LCAyKTsKLXNob3VsZEJlKCJkZXJpdmVkLmRlcml2ZWRPbmx5IiwgMikKLQotc2hvdWxkQmUoImRl
cml2ZWQuYmFzZUhhcmROdWxsKCkiLCB1bmRlZmluZWQpCi0KLS8vIGJhc2UgcHJvcGVydGllcyB0
aHJvdyAxIHdoZW4gc2V0OyBkZXJpdmVkLCAyCi1zaG91bGRCZSgiZGVyaXZlZC5iYXNlRHVwID0g
MCIsIDIpOwotc2hvdWxkQmUoImRlcml2ZWQuYmFzZU9ubHkgPSAwIiwgMSk7Ci1zaG91bGRCZSgi
ZGVyaXZlZC5kZXJpdmVkT25seSA9IDAiLCAyKQotc2hvdWxkQmUoImRlcml2ZWQucHJvdG9EdXAg
PSAwIiwgMik7Ci0KLWRlcml2ZWQyID0gbmV3IERlcml2ZWQyKCk7Ci0KLXNob3VsZEJlKCJkZXJp
dmVkMiBpbnN0YW5jZW9mIERlcml2ZWQyIiwgdHJ1ZSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIgaW5z
dGFuY2VvZiBEZXJpdmVkIiwgdHJ1ZSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIgaW5zdGFuY2VvZiBC
YXNlIiwgdHJ1ZSk7Ci0KLS8vIGJhc2UgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHJldHVybiAx
IHdoZW4gY2FsbGVkL2dvdHRlbjsgZGVyaXZlZCwgMgotc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VQ
cm90b0R1cCgpIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZVByb3RvKCkiLCAxKTsKLXNo
b3VsZEJlKCJkZXJpdmVkMi5iYXNlRHVwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuYmFzZU9u
bHkiLCAxKTsKLXNob3VsZEJlKCJkZXJpdmVkMi5wcm90b09ubHkoKSIsIDIpOwotc2hvdWxkQmUo
ImRlcml2ZWQyLnByb3RvRHVwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIuZGVyaXZlZE9ubHki
LCAyKQotCi0vLyBiYXNlIHByb3BlcnRpZXMgdGhyb3cgMSB3aGVuIHNldDsgZGVyaXZlZCwgMgot
c2hvdWxkQmUoImRlcml2ZWQyLmJhc2VEdXAgPSAwIiwgMik7Ci1zaG91bGRCZSgiZGVyaXZlZDIu
YmFzZU9ubHkgPSAwIiwgMSk7Ci1zaG91bGRCZSgiZGVyaXZlZDIuZGVyaXZlZE9ubHkgPSAwIiwg
MikKLXNob3VsZEJlKCJkZXJpdmVkMi5wcm90b0R1cCA9IDAiLCAyKTsKLQotc2hvdWxkQmUoJ09i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImJhc2VQcm90byIpJywgdW5k
ZWZpbmVkKTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2
ZWQsICJiYXNlUHJvdG9EdXAiKScsIHVuZGVmaW5lZCk7Ci12YXIgYmFzZUR1cERlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJiYXNlRHVwIik7Ci1z
aG91bGRCZSgndHlwZW9mIGJhc2VEdXBEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUo
J2Jhc2VEdXBEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5iYXNlRHVwKTsKLXNob3VsZEJlKCdi
YXNlRHVwRGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdiYXNlRHVw
RGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwotdmFyIGJhc2VPbmx5RGVzY3JpcHRvciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVyaXZlZCwgImJhc2VPbmx5Iik7Ci1z
aG91bGRCZSgndHlwZW9mIGJhc2VPbmx5RGVzY3JpcHRvcicsICJvYmplY3QiKTsKLXNob3VsZEJl
KCdiYXNlT25seURlc2NyaXB0b3IudmFsdWUnLCBkZXJpdmVkLmJhc2VPbmx5KTsKLXNob3VsZEJl
KCdiYXNlT25seURlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7Ci1zaG91bGRCZSgnYmFz
ZU9ubHlEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7Ci1zaG91bGRCZSgnT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAicHJvdG9Pbmx5IiknLCB1bmRlZmluZWQp
OwotdmFyIHByb3RvRHVwRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZGVyaXZlZCwgInByb3RvRHVwIik7Ci1zaG91bGRCZSgndHlwZW9mIHByb3RvRHVwRGVzY3Jp
cHRvcicsICJvYmplY3QiKTsKLXNob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3IudmFsdWUnLCBk
ZXJpdmVkLnByb3RvRHVwKTsKLXNob3VsZEJlKCdwcm90b0R1cERlc2NyaXB0b3IuY29uZmlndXJh
YmxlJywgdHJ1ZSk7Ci1zaG91bGRCZSgncHJvdG9EdXBEZXNjcmlwdG9yLmVudW1lcmFibGUnLCBm
YWxzZSk7Ci12YXIgZGVyaXZlZE9ubHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihkZXJpdmVkLCAiZGVyaXZlZE9ubHkiKTsKLXNob3VsZEJlKCd0eXBlb2YgZGVy
aXZlZE9ubHlEZXNjcmlwdG9yJywgIm9iamVjdCIpOwotc2hvdWxkQmUoJ2Rlcml2ZWRPbmx5RGVz
Y3JpcHRvci52YWx1ZScsIGRlcml2ZWQuZGVyaXZlZE9ubHkpOwotc2hvdWxkQmUoJ2Rlcml2ZWRP
bmx5RGVzY3JpcHRvci5jb25maWd1cmFibGUnLCB0cnVlKTsKLXNob3VsZEJlKCdkZXJpdmVkT25s
eURlc2NyaXB0b3IuZW51bWVyYWJsZScsIGZhbHNlKTsKLQotc2hvdWxkQmUoInVuZGVmaW5lZCBp
bnN0YW5jZW9mIE15T2JqZWN0IiwgZmFsc2UpOwotRXZpbEV4Y2VwdGlvbk9iamVjdC5oYXNJbnN0
YW5jZSA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBmKCk7IH07Ci1FdmlsRXhjZXB0aW9uT2JqZWN0
Ll9fcHJvdG9fXyA9IHVuZGVmaW5lZDsKLXNob3VsZFRocm93KCJ1bmRlZmluZWQgaW5zdGFuY2Vv
ZiBFdmlsRXhjZXB0aW9uT2JqZWN0Iik7Ci1FdmlsRXhjZXB0aW9uT2JqZWN0Lmhhc0luc3RhbmNl
ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTsKLXNob3VsZEJlKCJ1bmRlZmluZWQgaW5z
dGFuY2VvZiBFdmlsRXhjZXB0aW9uT2JqZWN0IiwgdHJ1ZSk7Ci0KLUV2aWxFeGNlcHRpb25PYmpl
Y3QudG9OdW1iZXIgPSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigpOyB9Ci1zaG91bGRUaHJvdygi
RXZpbEV4Y2VwdGlvbk9iamVjdCo1Iik7Ci1FdmlsRXhjZXB0aW9uT2JqZWN0LnRvU3RyaW5nRXhw
bGljaXQgPSBmdW5jdGlvbiBmKCkgeyByZXR1cm4gZigpOyB9Ci1zaG91bGRUaHJvdygiU3RyaW5n
KEV2aWxFeGNlcHRpb25PYmplY3QpIik7Ci0KLXNob3VsZEJlKCJjb25zb2xlIiwgIltvYmplY3Qg
Q29uc29sZV0iKTsKLXNob3VsZEJlKCJ0eXBlb2YgY29uc29sZS5sb2ciLCAiZnVuY3Rpb24iKTsK
LQotc2hvdWxkQmUoIkVtcHR5T2JqZWN0IiwgIltvYmplY3QgQ2FsbGJhY2tPYmplY3RdIik7Ci0K
LWZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQotICAgIFByb3BlcnR5Q2F0Y2hhbGxzLnggPSBp
Owotc2hvdWxkQmUoIlByb3BlcnR5Q2F0Y2hhbGxzLngiLCA0KTsKLQotZm9yICh2YXIgaSA9IDA7
IGkgPCA2OyArK2kpCi0gICAgdmFyIHggPSBQcm9wZXJ0eUNhdGNoYWxscy54Owotc2hvdWxkQmUo
IngiLCBudWxsKTsKLXZhciBtYWtlX3Rocm93ID0gJ21ha2VfdGhyb3cnOwotc2hvdWxkVGhyb3co
IlByb3BlcnR5Q2F0Y2hhbGxzW21ha2VfdGhyb3ddPTEiKTsKLW1ha2VfdGhyb3cgPSAwOwotc2hv
dWxkVGhyb3coIlByb3BlcnR5Q2F0Y2hhbGxzW21ha2VfdGhyb3ddPTEiKTsKLQotZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgZm9yICh2YXIgcCBpbiBQcm9wZXJ0eUNhdGNoYWxs
cykgewotICAgICAgICBpZiAocCA9PSAieCIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgc2hvdWxkQmUoInAiLCBpICUgMTApOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLVBy
b3BlcnR5Q2F0Y2hhbGxzLl9fcHJvdG9fXyA9IHsgeTogMSB9OwotZm9yICh2YXIgaSA9IDA7IGkg
PCA2OyArK2kpCi0gICAgdmFyIHkgPSBQcm9wZXJ0eUNhdGNoYWxscy55Owotc2hvdWxkQmUoInki
LCBudWxsKTsKLQotdmFyIG8gPSB7IF9fcHJvdG9fXzogUHJvcGVydHlDYXRjaGFsbHMgfTsKLWZv
ciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQotICAgIHZhciB6ID0gUHJvcGVydHlDYXRjaGFsbHMu
ejsKLXNob3VsZEJlKCJ6IiwgbnVsbCk7Ci0KLWlmIChmYWlsZWQpCi0gICAgdGhyb3cgIlNvbWUg
dGVzdHMgZmFpbGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
bQppbmRleCAwNmU4ZDJiNzgxNjQxMzNhY2I4ZDk3ZTg5YTNlYWFjNjBmMzUxNDE2Li4zY2E0Y2M5
YWZkYWRhMjY0MzIzMmIyMzAxNDAyNWYzYjY1ZWE5ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0xOTQ2LDcgKzE5NDYsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0RmV0Y2hXaXRoVHdvQ3ljbGUoKQogICAgICAgICAgICAgICAgICAgICBlcnJvcjpuaWxd
XV07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKFtpZGVudGlmaWVyIGlzRXF1YWxUb09iamVjdDpA
ImZpbGU6Ly8vZm9vLmpzIl0pIHsKICAgICAgICAgICAgICAgICBbcmVzb2x2ZSBjYWxsV2l0aEFy
Z3VtZW50czpAW1tKU1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2NyaXB0VHlwZU1vZHVsZSAKLSAg
ICAgICAgICAgICAgICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBcImRpcmVjdG9yeS9iYXIuanNc
IjsgZ2xvYmFsVGhpcy5yYW4gPSBudWxsOyBleHBvcnQgbGV0IG4gPSBudWxsOyIKKyAgICAgICAg
ICAgICAgICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBcIi4vZGlyZWN0b3J5L2Jhci5qc1wiOyBn
bG9iYWxUaGlzLnJhbiA9IG51bGw7IGV4cG9ydCBsZXQgbiA9IG51bGw7IgogICAgICAgICAgICAg
ICAgICAgICBhbmRTb3VyY2VVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9mb28uanMiXQog
ICAgICAgICAgICAgICAgICAgICBhbmRCeXRlY29kZUNhY2hlOm5pbAogICAgICAgICAgICAgICAg
ICAgICBpblZpcnR1YWxNYWNoaW5lOltjb250ZXh0IHZpcnR1YWxNYWNoaW5lXQpAQCAtMTk3Nyw3
ICsxOTc3LDcgQEAgc3RhdGljIHZvaWQgdGVzdEZldGNoV2l0aFRocmVlQ3ljbGUoKQogICAgICAg
ICAgICAgICAgICAgICBlcnJvcjpuaWxdXV07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKFtpZGVu
dGlmaWVyIGlzRXF1YWxUb09iamVjdDpAImZpbGU6Ly8vZm9vLmpzIl0pIHsKICAgICAgICAgICAg
ICAgICBbcmVzb2x2ZSBjYWxsV2l0aEFyZ3VtZW50czpAW1tKU1NjcmlwdCBzY3JpcHRPZlR5cGU6
a0pTU2NyaXB0VHlwZU1vZHVsZSAKLSAgICAgICAgICAgICAgICAgICAgd2l0aFNvdXJjZTpAImlt
cG9ydCBcIm90aGVyRGlyZWN0b3J5L2Jhei5qc1wiOyBleHBvcnQgbGV0IG4gPSBudWxsOyIKKyAg
ICAgICAgICAgICAgICAgICAgd2l0aFNvdXJjZTpAImltcG9ydCBcIi4vb3RoZXJEaXJlY3Rvcnkv
YmF6LmpzXCI7IGV4cG9ydCBsZXQgbiA9IG51bGw7IgogICAgICAgICAgICAgICAgICAgICBhbmRT
b3VyY2VVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9mb28uanMiXSAKICAgICAgICAgICAg
ICAgICAgICAgYW5kQnl0ZWNvZGVDYWNoZTpuaWwKICAgICAgICAgICAgICAgICAgICAgaW5WaXJ0
dWFsTWFjaGluZTpbY29udGV4dCB2aXJ0dWFsTWFjaGluZV0KQEAgLTIxMDcsNyArMjEwNyw3IEBA
IHN0YXRpYyBOU1VSTCogY2FjaGVGaWxlSW5EYXRhVmF1bHQoTlNTdHJpbmcqIG5hbWUpCiBzdGF0
aWMgdm9pZCB0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSgpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgIE5TU3RyaW5nICpmb29Tb3VyY2UgPSBAImltcG9ydCAnb3RoZXJEaXJlY3Rv
cnkvYmF6LmpzJzsgZXhwb3J0IGxldCBuID0gbnVsbDsiOworICAgICAgICBOU1N0cmluZyAqZm9v
U291cmNlID0gQCJpbXBvcnQgJy4vb3RoZXJEaXJlY3RvcnkvYmF6LmpzJzsgZXhwb3J0IGxldCBu
ID0gbnVsbDsiOwogICAgICAgICBOU1N0cmluZyAqYmFyU291cmNlID0gQCJpbXBvcnQgeyBuIH0g
ZnJvbSAnLi4vZm9vLmpzJzsgZXhwb3J0IGxldCBmb28gPSAoKSA9PiBuOyI7CiAgICAgICAgIE5T
U3RyaW5nICpiYXpTb3VyY2UgPSBAImltcG9ydCB7IGZvbyB9IGZyb20gJy4uL2RpcmVjdG9yeS9i
YXIuanMnOyBnbG9iYWxUaGlzLnJhbiA9IG51bGw7IGV4cG9ydCBsZXQgZXhwID0gZm9vKCk7IjsK
IApAQCAtMjQyOCwxNSArMjQyOCwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0Qnl0ZWNvZGVDYWNoZVZh
bGlkYXRpb24oKQogQGludGVyZmFjZSBKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdhdGUgOiBKU0Nv
bnRleHQgPEpTTW9kdWxlTG9hZGVyRGVsZWdhdGU+CiAKICsgKGluc3RhbmNldHlwZSluZXdDb250
ZXh0OworLSAoSlNTY3JpcHQgKilmZXRjaE1vZHVsZVNjcmlwdDooTlNTdHJpbmcgKilyZWxhdGl2
ZVBhdGg7CiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dEZpbGVMb2FkZXJEZWxl
Z2F0ZSB7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBKU1NjcmlwdCAqPiAq
bV9rZXlUb1NjcmlwdDsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKW5ld0NvbnRleHQKIHsKICAgICBh
dXRvICpyZXN1bHQgPSBbW0pTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07
CisgICAgcmVzdWx0Lm1vZHVsZUxvYWRlckRlbGVnYXRlID0gcmVzdWx0OworICAgIHJlc3VsdC0+
bV9rZXlUb1NjcmlwdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBKU1Njcmlw
dCAqPiBhbGxvY10gaW5pdF07CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ1OSwxOCAr
MjQ2Myw0NSBAQCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9TY3JpcHRzKCkKICAgICByZXR1
cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi4vdGVzdGFwaVNjcmlwdHMvIiBpc0RpcmVjdG9y
eTpZRVMgcmVsYXRpdmVUb1VSTDpiYXNlXTsKIH0KIAorLSAoSlNTY3JpcHQgKilmZXRjaE1vZHVs
ZVNjcmlwdDooTlNTdHJpbmcgKilyZWxhdGl2ZVBhdGgKK3sKKyAgICBhdXRvICpmaWxlUGF0aCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnJlbGF0aXZlUGF0aCByZWxhdGl2ZVRvVVJMOnJlc29sdmVQ
YXRoVG9TY3JpcHRzKCldOworICAgIGlmIChhdXRvICpzY3JpcHQgPSBbc2VsZiBmaW5kU2NyaXB0
Rm9yS2V5OltmaWxlUGF0aCBhYnNvbHV0ZVN0cmluZ11dKQorICAgICAgICByZXR1cm4gc2NyaXB0
OworICAgIE5TRXJyb3IgKmVycm9yOworICAgIGF1dG8gKnJlc3VsdCA9IFtKU1NjcmlwdCBzY3Jp
cHRPZlR5cGU6a0pTU2NyaXB0VHlwZU1vZHVsZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOmZp
bGVQYXRoIHdpdGhTb3VyY2VVUkw6ZmlsZVBhdGggYW5kQnl0ZWNvZGVDYWNoZTpuaWwgaW5WaXJ0
dWFsTWFjaGluZTpbc2VsZiB2aXJ0dWFsTWFjaGluZV0gZXJyb3I6JmVycm9yXTsKKyAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICBOU0xvZyhAIiVAXG4iLCBlcnJvcik7CisgICAgICAgIENSQVNI
KCk7CisgICAgfQorICAgIFttX2tleVRvU2NyaXB0IHNldE9iamVjdDpyZXN1bHQgZm9yS2V5Oltm
aWxlUGF0aCBhYnNvbHV0ZVN0cmluZ11dOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKEpT
U2NyaXB0ICopZmluZFNjcmlwdEZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICByZXR1cm4g
W21fa2V5VG9TY3JpcHQgb2JqZWN0Rm9yS2V5OmtleV07Cit9CisKIC0gKHZvaWQpY29udGV4dDoo
SlNDb250ZXh0ICopY29udGV4dCBmZXRjaE1vZHVsZUZvcklkZW50aWZpZXI6KEpTVmFsdWUgKilp
ZGVudGlmaWVyIHdpdGhSZXNvbHZlSGFuZGxlcjooSlNWYWx1ZSAqKXJlc29sdmUgYW5kUmVqZWN0
SGFuZGxlcjooSlNWYWx1ZSAqKXJlamVjdAogewogICAgIE5TVVJMICpmaWxlUGF0aCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOltpZGVudGlmaWVyIHRvU3RyaW5nXV07CisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBmaXggdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTcxNAorICAgIGlmIChhdXRvICpzY3JpcHQgPSBbc2VsZiBmaW5kU2NyaXB0Rm9yS2V5Oltp
ZGVudGlmaWVyIHRvU3RyaW5nXV0pIHsKKyAgICAgICAgW3Jlc29sdmUgY2FsbFdpdGhBcmd1bWVu
dHM6QFtzY3JpcHRdXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8qIHNjcmlw
dCA9IFtKU1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2NyaXB0VHlwZU1vZHVsZQogICAgICAgICBt
ZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOmZpbGVQYXRoCiAgICAgICAgIHdpdGhTb3VyY2VVUkw6
ZmlsZVBhdGgKICAgICAgICAgYW5kQnl0ZWNvZGVDYWNoZTpuaWwgCiAgICAgICAgIGluVmlydHVh
bE1hY2hpbmU6Y29udGV4dC52aXJ0dWFsTWFjaGluZQogICAgICAgICBlcnJvcjpuaWxdOwotICAg
IGlmIChzY3JpcHQpCisgICAgaWYgKHNjcmlwdCkgeworICAgICAgICBbbV9rZXlUb1NjcmlwdCBz
ZXRPYmplY3Q6c2NyaXB0IGZvcktleTpbaWRlbnRpZmllciB0b1N0cmluZ11dOwogICAgICAgICBb
cmVzb2x2ZSBjYWxsV2l0aEFyZ3VtZW50czpAW3NjcmlwdF1dOwotICAgIGVsc2UKKyAgICB9IGVs
c2UKICAgICAgICAgW3JlamVjdCBjYWxsV2l0aEFyZ3VtZW50czpAW1tKU1ZhbHVlIHZhbHVlV2l0
aE5ld0Vycm9yRnJvbU1lc3NhZ2U6QCJVbmFibGUgdG8gY3JlYXRlIFNjcmlwdCIgaW5Db250ZXh0
OmNvbnRleHRdXV07CiB9CiAKQEAgLTI2MDQsNiArMjYzNSwxMTEgQEAgc3RhdGljIHZvaWQgdGVz
dEpTU2NyaXB0VVJMKCkKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNB
cnJheSgpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNvbnRleHQg
PSBbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAgICAgIEpT
U2NyaXB0ICplbnRyeVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBl
bmRlbmN5TGlzdFRlc3RzL2RlcGVuZGVuY2llc0VudHJ5LmpzIl07CisKKyAgICAgICAgSlNWYWx1
ZSAqcHJvbWlzZSA9IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAg
ICAgICBbcHJvbWlzZSBpbnZva2VNZXRob2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1Zh
bHVlICopIHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIHJhbiBzdWNjZXNzZnVs
bHkiLCB0cnVlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICopIHsKKyAgICAgICAgICAgIGNoZWNr
UmVzdWx0KEAibW9kdWxlIHJhbiBzdWNjZXNzZnVsbHkiLCBmYWxzZSk7CisgICAgICAgIH1dXTsK
KworICAgICAgICBjaGVja1Jlc3VsdChAImxvb2tpbmcgdXAgdGhlIGVudHJ5IHNjcmlwdCBzaG91
bGQgZmluZCB0aGUgc2FtZSBzY3JpcHQgYWdhaW4uIiwgW2NvbnRleHQgZmluZFNjcmlwdEZvcktl
eTpbZW50cnlTY3JpcHQuc291cmNlVVJMIGFic29sdXRlU3RyaW5nXV0gPT0gZW50cnlTY3JpcHQp
OworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBkZXBlbmRlbmN5SWRlbnRpZmllcnNG
b3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJk
ZXBzIHNob3VsZCBiZSBhbiBhcnJheSIsIFtkZXBzIGlzQXJyYXldKTsKKyAgICAgICAgY2hlY2tS
ZXN1bHQoQCJkZXBzIHNob3VsZCBoYXZlIHR3byBlbnRyaWVzIiwgW2RlcHNbQCJsZW5ndGgiXSBp
c0VxdWFsVG9PYmplY3Q6QCgyKV0pOworCisgICAgICAgIGNoZWNrUmVzdWx0KEAiZmlyc3QgZGVw
ZW5kZW5jeSBzaG91bGQgYmUgZm9vLmpzIiwgW1tbW2NvbnRleHQgZmV0Y2hNb2R1bGVTY3JpcHQ6
QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpzIl0gc291cmNlVVJMXSBhYnNvbHV0ZVN0cmlu
Z10gaXNFcXVhbDpbZGVwc1tAKDApXSB0b1N0cmluZ11dKTsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJzZWNvbmQgZGVwZW5kZW5jeSBzaG91bGQgYmUgYmFyLmpzIiwgW1tbW2NvbnRleHQgZmV0Y2hN
b2R1bGVTY3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFyLmpzIl0gc291cmNlVVJMXSBh
YnNvbHV0ZVN0cmluZ10gaXNFcXVhbDpbZGVwc1tAKDEpXSB0b1N0cmluZ11dKTsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNFdmFsdWF0aW9uRXJyb3IoKQoreworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvICpjb250ZXh0ID0gW0pTQ29udGV4dEZp
bGVMb2FkZXJEZWxlZ2F0ZSBuZXdDb250ZXh0XTsKKworICAgICAgICBKU1NjcmlwdCAqZW50cnlT
Y3JpcHQgPSBbY29udGV4dCBmZXRjaE1vZHVsZVNjcmlwdDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0
cy9yZWZlcmVuY2VFcnJvci5qcyJdOworCisgICAgICAgIEpTVmFsdWUgKnByb21pc2UgPSBbY29u
dGV4dCBldmFsdWF0ZUpTU2NyaXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgW3Byb21pc2UgaW52
b2tlTWV0aG9kOkAidGhlbiIgd2l0aEFyZ3VtZW50czpAW14oSlNWYWx1ZSAqKSB7CisgICAgICAg
ICAgICBjaGVja1Jlc3VsdChAIm1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgZmFsc2UpOwor
ICAgICAgICB9LCBeKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1
bGUgZmFpbGVkIHN1Y2Nlc3NmdWxseSIsIHRydWUpOworICAgICAgICB9XV07CisKKyAgICAgICAg
YXV0byAqZGVwcyA9IFtjb250ZXh0IGRlcGVuZGVuY3lJZGVudGlmaWVyc0Zvck1vZHVsZUpTU2Ny
aXB0OmVudHJ5U2NyaXB0XTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkZXBzIHNob3VsZCBiZSBh
biBBcnJheSIsIFtkZXBzIGlzQXJyYXldKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJmaXJzdCBk
ZXBlbmRlbmN5IHNob3VsZCBiZSBmb28uanMiLCBbW1tbY29udGV4dCBmZXRjaE1vZHVsZVNjcmlw
dDpAIi4vZGVwZW5kZW5jeUxpc3RUZXN0cy9mb28uanMiXSBzb3VyY2VVUkxdIGFic29sdXRlU3Ry
aW5nXSBpc0VxdWFsOltkZXBzW0AoMCldIHRvU3RyaW5nXV0pOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgdGVzdERlcGVuZGVuY2llc1N5bnRheEVycm9yKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgYXV0byAqY29udGV4dCA9IFtKU0NvbnRleHRGaWxlTG9hZGVyRGVsZWdh
dGUgbmV3Q29udGV4dF07CisKKyAgICAgICAgSlNTY3JpcHQgKmVudHJ5U2NyaXB0ID0gW2NvbnRl
eHQgZmV0Y2hNb2R1bGVTY3JpcHQ6QCIuL2RlcGVuZGVuY3lMaXN0VGVzdHMvc3ludGF4RXJyb3Iu
anMiXTsKKworICAgICAgICBKU1ZhbHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1Nj
cmlwdDplbnRyeVNjcmlwdF07CisgICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4i
IHdpdGhBcmd1bWVudHM6QFteKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJtb2R1bGUgZmFpbGVkIHN1Y2Nlc3NmdWxseSIsIGZhbHNlKTsKKyAgICAgICAgfSwgXihKU1Zh
bHVlICopIHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNz
ZnVsbHkiLCB0cnVlKTsKKyAgICAgICAgfV1dOworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29u
dGV4dCBkZXBlbmRlbmN5SWRlbnRpZmllcnNGb3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVwcyBzaG91bGQgYmUgdW5kZWZpbmVkIiwgW2RlcHMg
aXNVbmRlZmluZWRdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0aGVyZSBzaG91bGQgYmUgYSBw
ZW5kaW5nIGV4Y2VwdGlvbiBvbiB0aGUgY29udGV4dCIsIGNvbnRleHQuZXhjZXB0aW9uKTsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHRlc3REZXBlbmRlbmNpZXNCYWRJbXBvcnRJZCgpCit7Cisg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gKmNvbnRleHQgPSBbSlNDb250ZXh0
RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOworCisgICAgICAgIEpTU2NyaXB0ICplbnRy
eVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2NyaXB0OkAiLi9kZXBlbmRlbmN5TGlzdFRl
c3RzL2JhZE1vZHVsZUltcG9ydElkLmpzIl07CisKKyAgICAgICAgSlNWYWx1ZSAqcHJvbWlzZSA9
IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBbcHJvbWlz
ZSBpbnZva2VNZXRob2Q6QCJ0aGVuIiB3aXRoQXJndW1lbnRzOkBbXihKU1ZhbHVlICopIHsKKyAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCBmYWxz
ZSk7CisgICAgICAgIH0sIF4oSlNWYWx1ZSAqKSB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChA
Im1vZHVsZSBmYWlsZWQgc3VjY2Vzc2Z1bGx5IiwgdHJ1ZSk7CisgICAgICAgIH1dXTsKKworICAg
ICAgICBhdXRvICpkZXBzID0gW2NvbnRleHQgZGVwZW5kZW5jeUlkZW50aWZpZXJzRm9yTW9kdWxl
SlNTY3JpcHQ6ZW50cnlTY3JpcHRdOworICAgICAgICBjaGVja1Jlc3VsdChAImRlcHMgc2hvdWxk
IGJlIHVuZGVmaW5lZCIsIFtkZXBzIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0
KEAidGhlcmUgc2hvdWxkIGJlIGEgcGVuZGluZyBleGNlcHRpb24gb24gdGhlIGNvbnRleHQiLCBj
b250ZXh0LmV4Y2VwdGlvbik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0RGVwZW5kZW5j
aWVzTWlzc2luZ0ltcG9ydCgpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1
dG8gKmNvbnRleHQgPSBbSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIG5ld0NvbnRleHRdOwor
CisgICAgICAgIEpTU2NyaXB0ICplbnRyeVNjcmlwdCA9IFtjb250ZXh0IGZldGNoTW9kdWxlU2Ny
aXB0OkAiLi9kZXBlbmRlbmN5TGlzdFRlc3RzL21pc3NpbmdJbXBvcnQuanMiXTsKKworICAgICAg
ICBKU1ZhbHVlICpwcm9taXNlID0gW2NvbnRleHQgZXZhbHVhdGVKU1NjcmlwdDplbnRyeVNjcmlw
dF07CisgICAgICAgIFtwcm9taXNlIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhBcmd1bWVudHM6
QFteKEpTVmFsdWUgKikgeworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtb2R1bGUgZmFpbGVk
IHN1Y2Nlc3NmdWxseSIsIGZhbHNlKTsKKyAgICAgICAgfSwgXihKU1ZhbHVlICopIHsKKyAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibW9kdWxlIGZhaWxlZCBzdWNjZXNzZnVsbHkiLCB0cnVlKTsK
KyAgICAgICAgfV1dOworCisgICAgICAgIGF1dG8gKmRlcHMgPSBbY29udGV4dCBkZXBlbmRlbmN5
SWRlbnRpZmllcnNGb3JNb2R1bGVKU1NjcmlwdDplbnRyeVNjcmlwdF07CisgICAgICAgIGNoZWNr
UmVzdWx0KEAiZGVwcyBzaG91bGQgYmUgdW5kZWZpbmVkIiwgW2RlcHMgaXNVbmRlZmluZWRdKTsK
KyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0aGVyZSBzaG91bGQgYmUgYSBwZW5kaW5nIGV4Y2VwdGlv
biBvbiB0aGUgY29udGV4dCIsIGNvbnRleHQuZXhjZXB0aW9uKTsKKyAgICB9Cit9CiAKIEBwcm90
b2NvbCBUb1N0cmluZyA8SlNFeHBvcnQ+CiAtIChOU1N0cmluZyAqKXRvU3RyaW5nOwpAQCAtMjcw
OCw2ICsyODQ0LDEyIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoY29uc3QgY2hhciogZmlsdGVy
KQogICAgIFJVTih0ZXN0TG9hZEJhc2ljRmlsZUxlZ2FjeVNQSSgpKTsKICAgICBSVU4odGVzdExv
YWRCYXNpY0ZpbGUoKSk7CiAKKyAgICBSVU4odGVzdERlcGVuZGVuY2llc0FycmF5KCkpOworICAg
IFJVTih0ZXN0RGVwZW5kZW5jaWVzU3ludGF4RXJyb3IoKSk7CisgICAgUlVOKHRlc3REZXBlbmRl
bmNpZXNFdmFsdWF0aW9uRXJyb3IoKSk7CisgICAgUlVOKHRlc3REZXBlbmRlbmNpZXNCYWRJbXBv
cnRJZCgpKTsKKyAgICBSVU4odGVzdERlcGVuZGVuY2llc01pc3NpbmdJbXBvcnQoKSk7CisKICAg
ICBSVU4ocHJvbWlzZVdpdGhFeGVjdXRvcihSZXNvbHV0aW9uOjpSZXNvbHZlRWFnZXIpKTsKICAg
ICBSVU4ocHJvbWlzZVdpdGhFeGVjdXRvcihSZXNvbHV0aW9uOjpSZWplY3RFYWdlcikpOwogICAg
IFJVTihwcm9taXNlV2l0aEV4ZWN1dG9yKFJlc29sdXRpb246OlJlc29sdmVMYXRlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2Rl
cGVuZGVuY3lMaXN0VGVzdHMvYmFkTW9kdWxlSW1wb3J0SWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFkTW9k
dWxlSW1wb3J0SWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY1MDIwODQ0MThhY2RjMjZkNmYxYzUwZDkwNDgy
ZjUwMTdjOWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9iYWRNb2R1bGVJbXBvcnRJ
ZC5qcwpAQCAtMCwwICsxLDMgQEAKKworLy8gVGhpcyBpcyBub3QgYSB2YWxpZCBpZGVudGZpZXIg
Zm9yIGFuIGltcG9ydCBzbyBpdCB3aWxsIGZhaWwgdG8gaW1wb3J0LgoraW1wb3J0ICJzZXRodWEi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3Jp
cHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvYmFyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2Jhci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMTBmZmM4ZTlhYmFiNTlmYzRiNzhkYmMwODJhYTBmYzA5YzJhMWIzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9k
ZXBlbmRlbmN5TGlzdFRlc3RzL2Jhci5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgbGV0IGhlbGxv
ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9kZXBlbmRlbmNpZXNFbnRyeS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RU
ZXN0cy9kZXBlbmRlbmNpZXNFbnRyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWNlOTAzYjZhY2NlN2UwYzM3
MjA2NDVkMDU1ZWM1NmYyYWU0MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL2RlcGVu
ZGVuY2llc0VudHJ5LmpzCkBAIC0wLDAgKzEsMiBAQAoraW1wb3J0ICIuL2Zvby5qcyI7CitpbXBv
cnQgIi4vYmFyLmpzIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9mb28uanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMv
Zm9vLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIyODIxOGE5MzRmMmI5ODE5OTQyZGQ1MTg1YTk5OTc4Y2E5NThk
NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvZm9vLmpzCkBAIC0wLDAgKzEgQEAKK2V4
cG9ydCBsZXQgdGhpbmdzID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9taXNzaW5nSW1w
b3J0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9k
ZXBlbmRlbmN5TGlzdFRlc3RzL21pc3NpbmdJbXBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1MzQ5MWNl
YmQ0ODkzNzA4ZDQyZWMyYjFiNGRmZWE5ODQ2ZWIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RU
ZXN0cy9taXNzaW5nSW1wb3J0LmpzCkBAIC0wLDAgKzEgQEAKK2ltcG9ydCAiLi9maWxlLXRoYXQt
ZG9lcy1ub3QtZXhpc3QuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVuZGVuY3lMaXN0VGVzdHMvcmVmZXJlbmNlRXJyb3Iu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL2RlcGVu
ZGVuY3lMaXN0VGVzdHMvcmVmZXJlbmNlRXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1NWMzNzViZWFl
ZjYzNjI3YzgwM2ExODUyMDliMzMyNmIwNzA5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0
cy9yZWZlcmVuY2VFcnJvci5qcwpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCAiLi9mb28uanMiOwor
Cit0b3NlaHVhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RUZXN0cy9zeW50YXhFcnJvci5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvZGVwZW5kZW5jeUxpc3RU
ZXN0cy9zeW50YXhFcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjQyODQzMjJlM2ZhYmYzODg4ZmI2MzQ3
NTc4M2NlOTlmNGQ4MzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy9kZXBlbmRlbmN5TGlzdFRlc3RzL3N5bnRheEVycm9y
LmpzCkBAIC0wLDAgKzEsMyBAQAoraW1wb3J0ICIuL2Zvby5qcyI7CisKK3RoZW9hc3V0YXMgdGhl
YSB0ZWhsciAgZWJzYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGktZnVuY3Rpb24t
b3ZlcnJpZGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2M2NjZWQwNDg3ZTljMGU2Y2VlNTc4MDY5NjM4YWMw
ZGMyZWI3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzCkBAIC0wLDAg
KzEsMTYgQEAKKy8vIHRlc3RhcGkgZnVuY3Rpb24gb3ZlcnJpZGVzIGZvciB0ZXN0aW5nLgorb3Zl
cnJpZGUgJSUleyAvKiBPcmlnaW5hbCBmMSAqLyB9JSUlCit3aXRoICUlJXsgLyogT3ZlcnJpZGRl
biBmMSAqLyB9JSUlCisKK292ZXJyaWRlICMkJXsKKyAgICAvLyBPcmlnaW5hbCBmMgorfSMkJQor
d2l0aCAkJCR7IC8qIE92ZXJyaWRkZW4gZjIgKi8gfSQkJAorCitvdmVycmlkZSAlJSV7IC8qIE9y
aWdpbmFsIGYzICovIH0lJSUKK3dpdGggJSUleyAvKiBPdmVycmlkZGVuIGYzICovIH0lJSUKKwor
b3ZlcnJpZGUgJSUleworLyogT3JpZ2luYWwgZjQgKi8KK30lJSUKK3dpdGggJSUleyAvKiBPdmVy
cmlkZGVuIGY0ICovIH0lJSUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGQzNzAxYzIx
ZTA1ODY2YTdhMjBhMWFlZjIyY2IwZmIyODNjNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCkBAIC0w
LDAgKzEsMzA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIGJsdWRnZW9uQXJndW1lbnRzKCkgeyBpZiAoMCkgYXJndW1lbnRzOyByZXR1
cm4gZnVuY3Rpb24gZygpIHt9IH0KK2ggPSBibHVkZ2VvbkFyZ3VtZW50cygpOworZ2MoKTsKKwor
dmFyIGZhaWxlZCA9IGZhbHNlOworZnVuY3Rpb24gcGFzcyhtc2cpCit7CisgICAgcHJpbnQoIlBB
U1M6ICIgKyBtc2csICJncmVlbiIpOworfQorCitmdW5jdGlvbiBmYWlsKG1zZykKK3sKKyAgICBw
cmludCgiRkFJTDogIiArIG1zZywgInJlZCIpOworICAgIGZhaWxlZCA9IHRydWU7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZEJlKGEsIGIpCit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAg
ICAgIGV2YWxBID0gZXZhbChhKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEgPSBl
OworICAgIH0KKyAgICAKKyAgICBpZiAoZXZhbEEgPT0gYiB8fCBpc05hTihldmFsQSkgJiYgdHlw
ZW9mIGV2YWxBID09ICdudW1iZXInICYmIGlzTmFOKGIpICYmIHR5cGVvZiBiID09ICdudW1iZXIn
KQorICAgICAgICBwYXNzKGEgKyAiIHNob3VsZCBiZSAiICsgYiArICIgYW5kIGlzLiIpOworICAg
IGVsc2UKKyAgICAgICAgZmFpbChhICsgIiBzaG91bGQgYmUgIiArIGIgKyAiIGJ1dCBpbnN0ZWFk
IGlzICIgKyBldmFsQSArICIuIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGEpCit7Cisg
ICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoYSk7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIHBhc3MoYSArICIgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGZhaWwoYSArICIgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9
CisKK2Z1bmN0aW9uIGdsb2JhbFN0YXRpY0Z1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gNDsKK30K
Kworc2hvdWxkQmUoImdsb2JhbFN0YXRpY1ZhbHVlIiwgMyk7CitzaG91bGRCZSgiZ2xvYmFsU3Rh
dGljRnVuY3Rpb24oKSIsIDQpOworc2hvdWxkQmUoInRoaXMuZ2xvYmFsU3RhdGljRnVuY3Rpb24o
KSIsIDQpOworCitmdW5jdGlvbiBnbG9iYWxTdGF0aWNGdW5jdGlvbjIoKSB7CisgICAgcmV0dXJu
IDEwOworfQorc2hvdWxkQmUoImdsb2JhbFN0YXRpY0Z1bmN0aW9uMigpOyIsIDEwKTsKK3RoaXMu
Z2xvYmFsU3RhdGljRnVuY3Rpb24yID0gZnVuY3Rpb24oKSB7IHJldHVybiAyMDsgfQorc2hvdWxk
QmUoImdsb2JhbFN0YXRpY0Z1bmN0aW9uMigpOyIsIDIwKTsKK3Nob3VsZEJlKCJ0aGlzLmdsb2Jh
bFN0YXRpY0Z1bmN0aW9uMigpOyIsIDIwKTsKKworZnVuY3Rpb24gaUFtTm90QVN0YXRpY0Z1bmN0
aW9uKCkgeyByZXR1cm4gMTA7IH0KK3Nob3VsZEJlKCJpQW1Ob3RBU3RhdGljRnVuY3Rpb24oKTsi
LCAxMCk7Cit0aGlzLmlBbU5vdEFTdGF0aWNGdW5jdGlvbiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
MjA7IH0KK3Nob3VsZEJlKCJpQW1Ob3RBU3RhdGljRnVuY3Rpb24oKTsiLCAyMCk7CisKK3Nob3Vs
ZEJlKCJ0eXBlb2YgTXlPYmplY3QiLCAiZnVuY3Rpb24iKTsgLy8gb3VyIG9iamVjdCBpbXBsZW1l
bnRzICdjYWxsJworTXlPYmplY3QuY2FudEZpbmQgPSAxOworc2hvdWxkQmUoIk15T2JqZWN0LmNh
bnRGaW5kIiwgdW5kZWZpbmVkKTsKK015T2JqZWN0LnJlZ3VsYXJUeXBlID0gMTsKK3Nob3VsZEJl
KCJNeU9iamVjdC5yZWd1bGFyVHlwZSIsIDEpOworTXlPYmplY3QuYWx3YXlzT25lID0gMjsKK3No
b3VsZEJlKCJNeU9iamVjdC5hbHdheXNPbmUiLCAxKTsKK015T2JqZWN0LmNhbnREZWxldGUgPSAx
OworZGVsZXRlIE15T2JqZWN0LmNhbnREZWxldGU7CitzaG91bGRCZSgiTXlPYmplY3QuY2FudERl
bGV0ZSIsIDEpOworc2hvdWxkQmUoImRlbGV0ZSBNeU9iamVjdC50aHJvd09uRGVsZXRlIiwgImFu
IGV4Y2VwdGlvbiIpOworTXlPYmplY3QuY2FudFNldCA9IDE7CitzaG91bGRCZSgiTXlPYmplY3Qu
Y2FudFNldCIsIHVuZGVmaW5lZCk7CitzaG91bGRCZSgiTXlPYmplY3QudGhyb3dPbkdldCIsICJh
biBleGNlcHRpb24iKTsKK3Nob3VsZEJlKCJNeU9iamVjdC50aHJvd09uU2V0ID0gNSIsICJhbiBl
eGNlcHRpb24iKTsKK3Nob3VsZEJlKCJNeU9iamVjdCgndGhyb3dPbkNhbGwnKSIsICJhbiBleGNl
cHRpb24iKTsKK3Nob3VsZEJlKCJuZXcgTXlPYmplY3QoJ3Rocm93T25Db25zdHJ1Y3QnKSIsICJh
biBleGNlcHRpb24iKTsKK3Nob3VsZEJlKCIndGhyb3dPbkhhc0luc3RhbmNlJyBpbnN0YW5jZW9m
IE15T2JqZWN0IiwgImFuIGV4Y2VwdGlvbiIpOworCitNeU9iamVjdC5udWxsR2V0Rm9yd2FyZFNl
dCA9IDE7CitzaG91bGRCZSgiTXlPYmplY3QubnVsbEdldEZvcndhcmRTZXQiLCAxKTsKKwordmFy
IGZvdW5kTXlQcm9wZXJ0eU5hbWUgPSBmYWxzZTsKK3ZhciBmb3VuZFJlZ3VsYXJUeXBlID0gZmFs
c2U7Citmb3IgKHZhciBwIGluIE15T2JqZWN0KSB7CisgICAgaWYgKHAgPT0gIm15UHJvcGVydHlO
YW1lIikKKyAgICAgICAgZm91bmRNeVByb3BlcnR5TmFtZSA9IHRydWU7CisgICAgaWYgKHAgPT0g
InJlZ3VsYXJUeXBlIikKKyAgICAgICAgZm91bmRSZWd1bGFyVHlwZSA9IHRydWU7Cit9CisKK2lm
IChmb3VuZE15UHJvcGVydHlOYW1lKQorICAgIHBhc3MoIk15T2JqZWN0Lm15UHJvcGVydHlOYW1l
IHdhcyBlbnVtZXJhdGVkIik7CitlbHNlCisgICAgZmFpbCgiTXlPYmplY3QubXlQcm9wZXJ0eU5h
bWUgd2FzIG5vdCBlbnVtZXJhdGVkIik7CisKK2lmIChmb3VuZFJlZ3VsYXJUeXBlKQorICAgIHBh
c3MoIk15T2JqZWN0LnJlZ3VsYXJUeXBlIHdhcyBlbnVtZXJhdGVkIik7CitlbHNlCisgICAgZmFp
bCgiTXlPYmplY3QucmVndWxhclR5cGUgd2FzIG5vdCBlbnVtZXJhdGVkIik7CisKK3ZhciBhbHdh
eXNPbmVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVj
dCwgImFsd2F5c09uZSIpOworc2hvdWxkQmUoJ3R5cGVvZiBhbHdheXNPbmVEZXNjcmlwdG9yJywg
Im9iamVjdCIpOworc2hvdWxkQmUoJ2Fsd2F5c09uZURlc2NyaXB0b3IudmFsdWUnLCBNeU9iamVj
dC5hbHdheXNPbmUpOworc2hvdWxkQmUoJ2Fsd2F5c09uZURlc2NyaXB0b3IuY29uZmlndXJhYmxl
JywgdHJ1ZSk7CitzaG91bGRCZSgnYWx3YXlzT25lRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFs
c2UpOyAvLyBBY3R1YWxseSBpdCBpcy4KK3ZhciBjYW50RmluZERlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCAiY2FudEZpbmQiKTsKK3Nob3VsZEJl
KCd0eXBlb2YgY2FudEZpbmREZXNjcmlwdG9yJywgIm9iamVjdCIpOworc2hvdWxkQmUoJ2NhbnRG
aW5kRGVzY3JpcHRvci52YWx1ZScsIE15T2JqZWN0LmNhbnRGaW5kKTsKK3Nob3VsZEJlKCdjYW50
RmluZERlc2NyaXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7CitzaG91bGRCZSgnY2FudEZpbmRE
ZXNjcmlwdG9yLmVudW1lcmFibGUnLCBmYWxzZSk7Cit0cnkgeworICAgIC8vIElmIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcigpIHJldHVybmVkIGFuIGFjY2VzcyBkZXNjcmlwdG9yLCB0aGlzIHdv
dWxkbid0IHRocm93LgorICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmpl
Y3QsICJ0aHJvd09uR2V0Iik7Cit9IGNhdGNoIChlKSB7CisgICAgcGFzcygiZ2V0dGluZyBwcm9w
ZXJ0eSBkZXNjcmlwdG9yIG9mIHRocm93T25HZXQgdGhyZXcgZXhjZXB0aW9uIik7Cit9Cit2YXIg
bXlQcm9wZXJ0eU5hbWVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihNeU9iamVjdCwgIm15UHJvcGVydHlOYW1lIik7CitzaG91bGRCZSgndHlwZW9mIG15UHJvcGVy
dHlOYW1lRGVzY3JpcHRvcicsICJvYmplY3QiKTsKK3Nob3VsZEJlKCdteVByb3BlcnR5TmFtZURl
c2NyaXB0b3IudmFsdWUnLCBNeU9iamVjdC5teVByb3BlcnR5TmFtZSk7CitzaG91bGRCZSgnbXlQ
cm9wZXJ0eU5hbWVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOworc2hvdWxkQmUoJ215
UHJvcGVydHlOYW1lRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOyAvLyBBY3R1YWxseSBp
dCBpcy4KK3RyeSB7CisgICAgLy8gaWYgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgcmV0dXJu
ZWQgYW4gYWNjZXNzIGRlc2NyaXB0b3IsIHRoaXMgd291bGRuJ3QgdGhyb3cuCisgICAgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNeU9iamVjdCwgImhhc1Byb3BlcnR5TGllIik7Cit9
IGNhdGNoIChlKSB7CisgICAgcGFzcygiZ2V0dGluZyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9mIGhh
c1Byb3BlcnR5TGllIHRocmV3IGV4Y2VwdGlvbiIpOworfQorc2hvdWxkQmUoJ09iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlPYmplY3QsICJkb2VzTm90RXhpc3QiKScsIHVuZGVmaW5l
ZCk7CisKK215T2JqZWN0ID0gbmV3IE15T2JqZWN0KCk7CisKK3Nob3VsZEJlKCJkZWxldGUgTXlP
YmplY3QucmVndWxhclR5cGUiLCB0cnVlKTsKK3Nob3VsZEJlKCJNeU9iamVjdC5yZWd1bGFyVHlw
ZSIsIHVuZGVmaW5lZCk7CitzaG91bGRCZSgiTXlPYmplY3QoMCkiLCAxKTsKK3Nob3VsZEJlKCJN
eU9iamVjdCgpIiwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKCJ0eXBlb2YgbXlPYmplY3QiLCAib2Jq
ZWN0Iik7CitzaG91bGRCZSgiTXlPYmplY3QgPyAxIDogMCIsIHRydWUpOyAvLyB0b0Jvb2xlYW4K
K3Nob3VsZEJlKCIrTXlPYmplY3QiLCAxKTsgLy8gdG9OdW1iZXIKK3Nob3VsZEJlKCIoT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE15T2JqZWN0KSkiLCAiW29iamVjdCBNeU9iamVjdF0i
KTsgLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZworc2hvdWxkQmUoIihNeU9iamVjdC50b1N0
cmluZygpKSIsICJbb2JqZWN0IE15T2JqZWN0XSIpOyAvLyB0b1N0cmluZworc2hvdWxkQmUoIlN0
cmluZyhNeU9iamVjdCkiLCAiTXlPYmplY3RBc1N0cmluZyIpOyAvLyB0b1N0cmluZworc2hvdWxk
QmUoIk15T2JqZWN0IC0gMCIsIDEpOyAvLyB0b051bWJlcgorc2hvdWxkQmUoIk15T2JqZWN0LnZh
bHVlT2YoKSIsIDEpOyAvLyB2YWx1ZU9mCisKK3Nob3VsZEJlKCJ0eXBlb2YgTXlDb25zdHJ1Y3Rv
ciIsICJvYmplY3QiKTsKK2NvbnN0cnVjdGVkT2JqZWN0ID0gbmV3IE15Q29uc3RydWN0b3IoMSk7
CitzaG91bGRCZSgidHlwZW9mIGNvbnN0cnVjdGVkT2JqZWN0IiwgIm9iamVjdCIpOworc2hvdWxk
QmUoImNvbnN0cnVjdGVkT2JqZWN0LnZhbHVlIiwgMSk7CitzaG91bGRCZSgibXlPYmplY3QgaW5z
dGFuY2VvZiBNeU9iamVjdCIsIHRydWUpOworc2hvdWxkQmUoIihuZXcgT2JqZWN0KCkpIGluc3Rh
bmNlb2YgTXlPYmplY3QiLCBmYWxzZSk7CisKK3Nob3VsZFRocm93KCJuZXcgTXlCYWRDb25zdHJ1
Y3RvcigpIik7CisKK015T2JqZWN0Lm51bGxHZXRTZXQgPSAxOworc2hvdWxkQmUoIk15T2JqZWN0
Lm51bGxHZXRTZXQiLCAxKTsKK3Nob3VsZFRocm93KCJNeU9iamVjdC5udWxsQ2FsbCgpIik7Citz
aG91bGRUaHJvdygiTXlPYmplY3QuaGFzUHJvcGVydHlMaWUiKTsKKworZGVyaXZlZCA9IG5ldyBE
ZXJpdmVkKCk7CisKK3Nob3VsZEJlKCJkZXJpdmVkIGluc3RhbmNlb2YgRGVyaXZlZCIsIHRydWUp
Oworc2hvdWxkQmUoImRlcml2ZWQgaW5zdGFuY2VvZiBCYXNlIiwgdHJ1ZSk7CisKKy8vIGJhc2Ug
cHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHJldHVybiAxIHdoZW4gY2FsbGVkL2dvdHRlbjsgZGVy
aXZlZCwgMgorc2hvdWxkQmUoImRlcml2ZWQuYmFzZVByb3RvRHVwKCkiLCAyKTsKK3Nob3VsZEJl
KCJkZXJpdmVkLmJhc2VQcm90bygpIiwgMSk7CitzaG91bGRCZSgiZGVyaXZlZC5iYXNlRHVwIiwg
Mik7CitzaG91bGRCZSgiZGVyaXZlZC5iYXNlT25seSIsIDEpOworc2hvdWxkQmUoImRlcml2ZWQu
cHJvdG9Pbmx5KCkiLCAyKTsKK3Nob3VsZEJlKCJkZXJpdmVkLnByb3RvRHVwIiwgMik7CitzaG91
bGRCZSgiZGVyaXZlZC5kZXJpdmVkT25seSIsIDIpCisKK3Nob3VsZEJlKCJkZXJpdmVkLmJhc2VI
YXJkTnVsbCgpIiwgdW5kZWZpbmVkKQorCisvLyBiYXNlIHByb3BlcnRpZXMgdGhyb3cgMSB3aGVu
IHNldDsgZGVyaXZlZCwgMgorc2hvdWxkQmUoImRlcml2ZWQuYmFzZUR1cCA9IDAiLCAyKTsKK3No
b3VsZEJlKCJkZXJpdmVkLmJhc2VPbmx5ID0gMCIsIDEpOworc2hvdWxkQmUoImRlcml2ZWQuZGVy
aXZlZE9ubHkgPSAwIiwgMikKK3Nob3VsZEJlKCJkZXJpdmVkLnByb3RvRHVwID0gMCIsIDIpOwor
CitkZXJpdmVkMiA9IG5ldyBEZXJpdmVkMigpOworCitzaG91bGRCZSgiZGVyaXZlZDIgaW5zdGFu
Y2VvZiBEZXJpdmVkMiIsIHRydWUpOworc2hvdWxkQmUoImRlcml2ZWQyIGluc3RhbmNlb2YgRGVy
aXZlZCIsIHRydWUpOworc2hvdWxkQmUoImRlcml2ZWQyIGluc3RhbmNlb2YgQmFzZSIsIHRydWUp
OworCisvLyBiYXNlIHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucyByZXR1cm4gMSB3aGVuIGNhbGxl
ZC9nb3R0ZW47IGRlcml2ZWQsIDIKK3Nob3VsZEJlKCJkZXJpdmVkMi5iYXNlUHJvdG9EdXAoKSIs
IDIpOworc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VQcm90bygpIiwgMSk7CitzaG91bGRCZSgiZGVy
aXZlZDIuYmFzZUR1cCIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VPbmx5IiwgMSk7Citz
aG91bGRCZSgiZGVyaXZlZDIucHJvdG9Pbmx5KCkiLCAyKTsKK3Nob3VsZEJlKCJkZXJpdmVkMi5w
cm90b0R1cCIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQyLmRlcml2ZWRPbmx5IiwgMikKKworLy8g
YmFzZSBwcm9wZXJ0aWVzIHRocm93IDEgd2hlbiBzZXQ7IGRlcml2ZWQsIDIKK3Nob3VsZEJlKCJk
ZXJpdmVkMi5iYXNlRHVwID0gMCIsIDIpOworc2hvdWxkQmUoImRlcml2ZWQyLmJhc2VPbmx5ID0g
MCIsIDEpOworc2hvdWxkQmUoImRlcml2ZWQyLmRlcml2ZWRPbmx5ID0gMCIsIDIpCitzaG91bGRC
ZSgiZGVyaXZlZDIucHJvdG9EdXAgPSAwIiwgMik7CisKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJiYXNlUHJvdG8iKScsIHVuZGVmaW5lZCk7Citz
aG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAiYmFzZVBy
b3RvRHVwIiknLCB1bmRlZmluZWQpOwordmFyIGJhc2VEdXBEZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihkZXJpdmVkLCAiYmFzZUR1cCIpOworc2hvdWxkQmUoJ3R5
cGVvZiBiYXNlRHVwRGVzY3JpcHRvcicsICJvYmplY3QiKTsKK3Nob3VsZEJlKCdiYXNlRHVwRGVz
Y3JpcHRvci52YWx1ZScsIGRlcml2ZWQuYmFzZUR1cCk7CitzaG91bGRCZSgnYmFzZUR1cERlc2Ny
aXB0b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7CitzaG91bGRCZSgnYmFzZUR1cERlc2NyaXB0b3Iu
ZW51bWVyYWJsZScsIGZhbHNlKTsKK3ZhciBiYXNlT25seURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQsICJiYXNlT25seSIpOworc2hvdWxkQmUoJ3R5
cGVvZiBiYXNlT25seURlc2NyaXB0b3InLCAib2JqZWN0Iik7CitzaG91bGRCZSgnYmFzZU9ubHlE
ZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5iYXNlT25seSk7CitzaG91bGRCZSgnYmFzZU9ubHlE
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUpOworc2hvdWxkQmUoJ2Jhc2VPbmx5RGVzY3Jp
cHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZGVyaXZlZCwgInByb3RvT25seSIpJywgdW5kZWZpbmVkKTsKK3ZhciBwcm90
b0R1cERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlcml2ZWQs
ICJwcm90b0R1cCIpOworc2hvdWxkQmUoJ3R5cGVvZiBwcm90b0R1cERlc2NyaXB0b3InLCAib2Jq
ZWN0Iik7CitzaG91bGRCZSgncHJvdG9EdXBEZXNjcmlwdG9yLnZhbHVlJywgZGVyaXZlZC5wcm90
b0R1cCk7CitzaG91bGRCZSgncHJvdG9EdXBEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScsIHRydWUp
Oworc2hvdWxkQmUoJ3Byb3RvRHVwRGVzY3JpcHRvci5lbnVtZXJhYmxlJywgZmFsc2UpOwordmFy
IGRlcml2ZWRPbmx5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZGVyaXZlZCwgImRlcml2ZWRPbmx5Iik7CitzaG91bGRCZSgndHlwZW9mIGRlcml2ZWRPbmx5RGVz
Y3JpcHRvcicsICJvYmplY3QiKTsKK3Nob3VsZEJlKCdkZXJpdmVkT25seURlc2NyaXB0b3IudmFs
dWUnLCBkZXJpdmVkLmRlcml2ZWRPbmx5KTsKK3Nob3VsZEJlKCdkZXJpdmVkT25seURlc2NyaXB0
b3IuY29uZmlndXJhYmxlJywgdHJ1ZSk7CitzaG91bGRCZSgnZGVyaXZlZE9ubHlEZXNjcmlwdG9y
LmVudW1lcmFibGUnLCBmYWxzZSk7CisKK3Nob3VsZEJlKCJ1bmRlZmluZWQgaW5zdGFuY2VvZiBN
eU9iamVjdCIsIGZhbHNlKTsKK0V2aWxFeGNlcHRpb25PYmplY3QuaGFzSW5zdGFuY2UgPSBmdW5j
dGlvbiBmKCkgeyByZXR1cm4gZigpOyB9OworRXZpbEV4Y2VwdGlvbk9iamVjdC5fX3Byb3RvX18g
PSB1bmRlZmluZWQ7CitzaG91bGRUaHJvdygidW5kZWZpbmVkIGluc3RhbmNlb2YgRXZpbEV4Y2Vw
dGlvbk9iamVjdCIpOworRXZpbEV4Y2VwdGlvbk9iamVjdC5oYXNJbnN0YW5jZSA9IGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIHRydWU7IH07CitzaG91bGRCZSgidW5kZWZpbmVkIGluc3RhbmNlb2YgRXZp
bEV4Y2VwdGlvbk9iamVjdCIsIHRydWUpOworCitFdmlsRXhjZXB0aW9uT2JqZWN0LnRvTnVtYmVy
ID0gZnVuY3Rpb24gZigpIHsgcmV0dXJuIGYoKTsgfQorc2hvdWxkVGhyb3coIkV2aWxFeGNlcHRp
b25PYmplY3QqNSIpOworRXZpbEV4Y2VwdGlvbk9iamVjdC50b1N0cmluZ0V4cGxpY2l0ID0gZnVu
Y3Rpb24gZigpIHsgcmV0dXJuIGYoKTsgfQorc2hvdWxkVGhyb3coIlN0cmluZyhFdmlsRXhjZXB0
aW9uT2JqZWN0KSIpOworCitzaG91bGRCZSgiY29uc29sZSIsICJbb2JqZWN0IENvbnNvbGVdIik7
CitzaG91bGRCZSgidHlwZW9mIGNvbnNvbGUubG9nIiwgImZ1bmN0aW9uIik7CisKK3Nob3VsZEJl
KCJFbXB0eU9iamVjdCIsICJbb2JqZWN0IENhbGxiYWNrT2JqZWN0XSIpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDY7ICsraSkKKyAgICBQcm9wZXJ0eUNhdGNoYWxscy54ID0gaTsKK3Nob3VsZEJl
KCJQcm9wZXJ0eUNhdGNoYWxscy54IiwgNCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytp
KQorICAgIHZhciB4ID0gUHJvcGVydHlDYXRjaGFsbHMueDsKK3Nob3VsZEJlKCJ4IiwgbnVsbCk7
Cit2YXIgbWFrZV90aHJvdyA9ICdtYWtlX3Rocm93JzsKK3Nob3VsZFRocm93KCJQcm9wZXJ0eUNh
dGNoYWxsc1ttYWtlX3Rocm93XT0xIik7CittYWtlX3Rocm93ID0gMDsKK3Nob3VsZFRocm93KCJQ
cm9wZXJ0eUNhdGNoYWxsc1ttYWtlX3Rocm93XT0xIik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkgeworICAgIGZvciAodmFyIHAgaW4gUHJvcGVydHlDYXRjaGFsbHMpIHsKKyAgICAg
ICAgaWYgKHAgPT0gIngiKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNob3VsZEJl
KCJwIiwgaSAlIDEwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitQcm9wZXJ0eUNhdGNo
YWxscy5fX3Byb3RvX18gPSB7IHk6IDEgfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKQor
ICAgIHZhciB5ID0gUHJvcGVydHlDYXRjaGFsbHMueTsKK3Nob3VsZEJlKCJ5IiwgbnVsbCk7CisK
K3ZhciBvID0geyBfX3Byb3RvX186IFByb3BlcnR5Q2F0Y2hhbGxzIH07Citmb3IgKHZhciBpID0g
MDsgaSA8IDY7ICsraSkKKyAgICB2YXIgeiA9IFByb3BlcnR5Q2F0Y2hhbGxzLno7CitzaG91bGRC
ZSgieiIsIG51bGwpOworCitpZiAoZmFpbGVkKQorICAgIHRocm93ICJTb21lIHRlc3RzIGZhaWxl
ZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNlOTdkOThhMmViYzI3ZTZkMTU5
MDFkMmI3MzJjNjVjOTdjMDdjNmQuLjg3NzQ3YmIyNjVkOGMzNTI3MGE4YjQ4YzQ3NDY5NWE0ZDYy
ZGJkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTgsNyArODk4LDYgQEAK
IAkJNTJDRDBGNUQyMjQyRjU2OTAwNEExOEE1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4
NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk1MkNEMEY1RTIy
NDJGNTY5MDA0QTE4QTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2
OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNTJDRDBGNjgyMjQyRjcx
QzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwICov
OyB9OwotCQk1MkQxMzA5MTIyMUNFMTc2MDA5QzgzNkMgLyogZm9vLmpzIGluIENvcHkgU3VwcG9y
dCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJEMTMwOEYyMjFD
RTAzQTAwOUM4MzZDIC8qIGZvby5qcyAqLzsgfTsKIAkJNTJGNkMzNUUxRTcxRUIwODAwODFGNEND
IC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLzsgfTsKIAkJNTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tICovOyB9OwogCQk1MzBBNjZCQTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJj
ZTQtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQtbW0ubW0gKi87IH07CkBA
IC0xMDgyLDcgKzEwODEsNiBAQAogCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJh
eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovOyB9OwogCQk1
M0I0QkQxMjFGNjhCMzI1MDBEMkJFQTMgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdh
c21PcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1M0I2MDFFQzIwMzRCOEM1MDA2QkU2NjcgLyogSlNDYXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0I2MDFFQjIwMzRCOEM1MDA2QkU2NjcgLyog
SlNDYXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNTNDM0Q1RTUyMUVDRTc3MjAwODdGREZDIC8qIGJhc2ljLmpzIGluIENvcHkgU3VwcG9ydCBT
Y3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDM0Q1RTQyMUVDRTZD
RTAwODdGREZDIC8qIGJhc2ljLmpzICovOyB9OwogCQk1M0M0RjY2QjIxQjFBNDA5MDAyRkQwMDkg
LyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzQzRGNjZBMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2JhbE9iamVj
dC5oICovOyB9OwogCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0MjUgLyogV2FzbU9wY29kZU9yaWdp
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDNkZF
RUUxRThBREZBOTAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uaCAqLzsgfTsKIAkJNTNDQTcz
MEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2Fz
bUJCUVBsYW4uaCAqLzsgfTsKQEAgLTExMTEsNyArMTEwOSw2IEBACiAJCTVDNDE5NjYyMjI3MEUw
MDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MTk2NjEy
MjcwREZGMzAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0
eS5jcHAgKi87IH07CiAJCTVDNEU4RTk2MURCRUJFNjIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEU4
RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLzsgfTsKIAkJNUQ1RDhB
RDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyog
bGliZWRpdC5keWxpYiAqLzsgfTsKLQkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3Rh
cGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJ
NURCQjE1MjUxMzFEMEJENzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3
MDA0ODAyNTUgLyogbWluaWRvbS5qcyAqLzsgfTsKIAkJNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3
IC8qIGNyZWF0ZV9oYXNoX3RhYmxlIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxl
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTYyM0EzN0VDMUI4N0E3
QzAwMDc1NDIwOSAvKiBSZWdpc3Rlck1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjIzQTM3RUIxQjg3QTdCRDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
ODcsMTAgKzEyODQsMTAgQEAKIAkJOTMzMDQwMDQwRTZBNzQ5NDAwNzg2RTZBIC8qIFNtYWxsU3Ry
aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMz
MDNGRUEwRTZBNzJDMDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5
NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9Owog
CQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAx
RDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4
OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5
MSAvKiBYODZSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5Njg4Q0IxNjBF
RDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTIgLyogWDg2
XzY0UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0
RTAwMUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NjlBMDcyMzBFRDFDRTMzMDBGMUY2
ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVy
YXRvci5oICovOyB9OwogCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI3MEVEMUNF
NjkwMEYxRjY4MSAvKiBMYWJlbC5oICovOyB9OwogCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEg
LyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCAqLzsgfTsKQEAg
LTE4ODUsNyArMTg4Miw2IEBACiAJCUZFQjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNz
MTQxODA5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi87IH07CiAJCUZF
QjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEzMTg3QjhCMTYwMDk4
RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUNCOEIyNzFEMjVCQjg1MDA2RjI0NjMgLyogRnVuY3Rp
b25PdmVycmlkZXNUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFQ0I4QjI1MUQyNUJCNkUwMDZGMjQ2MyAvKiBGdW5jdGlvbk92ZXJyaWRlc1Rl
c3QuY3BwICovOyB9OwotCQlGRUNCOEIyQTFEMjVDQjVBMDA2RjI0NjMgLyogdGVzdGFwaS1mdW5j
dGlvbi1vdmVycmlkZXMuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUNCOEIyOTFEMjVDQUJCMDA2RjI0NjMgLyogdGVzdGFwaS1m
dW5jdGlvbi1vdmVycmlkZXMuanMgKi87IH07CiAJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAv
KiBMTEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEOTRGMkYxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAv
KiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwpAQCAtMjA3OSwyMCArMjA3NSw2IEBACiAv
KiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAv
KiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewotCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwotCQkJZHN0UGF0aCA9IHRlc3RhcGlTY3Jp
cHRzOwotCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OwotCQkJZmlsZXMgPSAoCi0JCQkJNTNDM0Q1
RTUyMUVDRTc3MjAwODdGREZDIC8qIGJhc2ljLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8s
Ci0JCQkJNTJEMTMwOTEyMjFDRTE3NjAwOUM4MzZDIC8qIGZvby5qcyBpbiBDb3B5IFN1cHBvcnQg
U2NyaXB0ICovLAotCQkJCUZFQ0I4QjJBMUQyNUNCNUEwMDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0
aW9uLW92ZXJyaWRlcy5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovLAotCQkJCTVEQkIxNTFC
MTMxRDBCMzEwMDU2QUQzNiAvKiB0ZXN0YXBpLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8s
Ci0JCQkpOwotCQkJbmFtZSA9ICJDb3B5IFN1cHBvcnQgU2NyaXB0IjsKLQkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwogCQk1REJCMTUyNDEzMUQwQkExMDA1
NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtNDA4Miwx
MCArNDA2NCwxMCBAQAogCQk5NUMxOEQzRTBDOTBFN0VGMDBFNzJGNzMgLyogSlNSZXRhaW5QdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZXRhaW5QdHIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVs
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWxTY29wZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyog
QXNzZW1ibGVyQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2Vt
YmxlckJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5Njg4Q0IxNDBFRDEy
QjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFg4NkFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Njg4
Q0IxNDBFRDEyQjRFMDAxRDY0OTEgLyogWDg2UmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFg4NlJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFg4Nl82NFJlZ2lzdGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVySW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyog
WDg2QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFg4NkFzc2Vt
Ymxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjlBMDcyMDBFRDFDRTMzMDBG
MUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExh
YmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTEwLDkgKzc4OTIsOSBAQAogCQkJCUZFMTBBQUVBMUY0
NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggKi8sCiAJCQkJOTY4OENCMTQwRUQxMkI0RTAw
MUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5oICovLAogCQkJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFG
RSAvKiB0ZXN0bWFzbS5jcHAgKi8sCisJCQkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4
Nl82NFJlZ2lzdGVycy5oICovLAogCQkJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZB
c3NlbWJsZXIuaCAqLywKIAkJCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTEgLyogWDg2UmVnaXN0
ZXJzLmggKi8sCi0JCQkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJlZ2lzdGVy
cy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhc3NlbWJsZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtODY1Niw3ICs4NjM4LDcgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVE
OTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEy
NkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxRTJD
NDAyMjQwREQ2MjAwRjZCNzI5IC8qIEFSTTY0RUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzIyIC8qIEFSTTY0UmVnaXN0ZXJzLmggKi8sCisJCQkJ
QTFBMDA5QzExODMxQTI2RTAwQ0Y4NzIyIC8qIEFSTTY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwOTgsOSArMTAwODAsOSBA
QAogCQkJCUE3RENCOTczMTJFNTE5M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyQjZENzUzMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3Jp
dGVCYXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTY4OENCMTYwRUQxMkI0RTAw
MUQ2NDkyIC8qIFg4Nl82NFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYw
RUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4
OENCMTYwRUQxMkI0RTAwMUQ2NDkxIC8qIFg4NlJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJlZ2lzdGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTk1OUU5MkUxQkQxN0ZBNDAwMUFBNDEzIC8qIHh4ZC5wbCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDIwOCw3ICsxMDE5MCw3IEBACiAJCQlidWlsZFBoYXNlcyA9ICgKIAkJ
CQkxNEJENTlCQzBBM0U4RjkwMDBCQUY1OUMgLyogU291cmNlcyAqLywKIAkJCQkxNEJENTlCRDBB
M0U4RjkwMDBCQUY1OUMgLyogRnJhbWV3b3JrcyAqLywKLQkJCQk1REJCMTUxMTEzMUQwQjEzMDA1
NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLywKKwkJCQk1MzY2RkRCMjIyRDU0ODVCMDBC
Rjk0QUYgLyogQ29weSBTdXBwb3J0IFNjcmlwdHMgKi8sCiAJCQkJNURBRkQ2Q0QxNDZCNkI2RTAw
RkJFRkI0IC8qIEluc3RhbGwgU3VwcG9ydCBTY3JpcHQgKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxl
cyA9ICgKQEAgLTEwNTM5LDYgKzEwNTIxLDI0IEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwog
CQkJc2hlbGxTY3JpcHQgPSAiU2NyaXB0cy9jaGVjay14Y2ZpbGVsaXN0cy5zaFxuIjsKIAkJfTsK
KwkJNTM2NkZEQjIyMkQ1NDg1QjAwQkY5NEFGIC8qIENvcHkgU3VwcG9ydCBTY3JpcHRzICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRo
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBT
dXBwb3J0IFNjcmlwdHMiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlv
dXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJyc3lu
YyAtciAke1NSQ1JPT1R9L0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cyAke0JVSUxUX1BST0RVQ1RT
X0RJUn1cbiI7CisJCX07CiAJCTUzQjRCRDA5MUY2OEFGODkwMEQyQkVBMyAvKiBHZW5lcmF0ZSBV
bmlmaWVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKaW5kZXggMWViZTJjMDJiNjRlMmI1NzRjNmZj
Mzk5MGVhNzIwZWUyMDNjNzg4NC4uYzYxNTQzZDVkMDBkMTliZmY2MDQ3YzAxNGM1ODA0MDIyMjZh
NjViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxv
YWRlci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVy
LmpzCkBAIC0zNjksMyArMzY5LDIwIEBAIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RJbXBvcnRNb2R1
bGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogICAgIHRoaXMubGlua0FuZEV2YWx1YXRlTW9k
dWxlKGVudHJ5LmtleSwgZmV0Y2hlcik7CiAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlTmFtZXNw
YWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiB9CisKK2Z1bmN0aW9uIGRlcGVuZGVuY3lLZXlzSWZF
dmFsdWF0ZWQoa2V5KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGxldCBlbnRyeSA9IHRo
aXMucmVnaXN0cnkuQGdldChrZXkpOworICAgIGlmICghZW50cnkgfHwgIWVudHJ5LmV2YWx1YXRl
ZCkKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICBsZXQgZGVwZW5kZW5jaWVzID0gZW50cnku
ZGVwZW5kZW5jaWVzOworICAgIGxldCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOworICAg
IGxldCByZXN1bHQgPSBuZXcgQEFycmF5KGxlbmd0aCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKKyAgICAgICAgcmVzdWx0W2ldID0gZGVwZW5kZW5jaWVzW2ldLmtleTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggNGM2OGI5ZmZkNjBmYWQ4MzQ1YzFlMTBmOWEx
Y2ZhNTk5MTVhNTBjNi4uZmFkN2M3YWJiYTEwMDg2NmQyNmRhYjgwOWE2MzdmM2Q2NThkYTVlMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNw
cApAQCAtODYsNiArODYsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVMb2FkZXI6OnNfaW5m
byA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sICZtb2R1bAogICAgIGxvYWRNb2R1
bGUgICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZSAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMgogICAgIHJlcXVlc3RJbXBvcnRNb2R1bGUgICAgICAgICAgICBKU0J1aWx0
aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwor
ICAgIGRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIGdldE1vZHVsZU5h
bWVzcGFjZU9iamVjdCAgICAgICBtb2R1bGVMb2FkZXJHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3Qg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHBhcnNlTW9kdWxlICAgICAgICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgogICAgIHJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAt
MTI1LDYgKzEyNiwyNiBAQCBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU1vZHVsZUtleShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUga2V5KQogICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIuaW1wbCgpOwogfQogCitKU0FycmF5KiBKU01vZHVsZUxvYWRlcjo6ZGVwZW5k
ZW5jeUtleXNJZkV2YWx1YXRlZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0
KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlcGVuZGVuY3lLZXlzSWZF
dmFsdWF0ZWRQdWJsaWNOYW1lKCkpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7CisKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1l
bnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTQXJyYXkqPih2bSwgcmVzdWx0KTsKK30KKwogSlNWYWx1ZSBK
U01vZHVsZUxvYWRlcjo6cHJvdmlkZUZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXks
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9h
ZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCmlu
ZGV4IGJkYTUxNDNkNzYyYjI3YzA2MjU0ODkyOTJhMTlhZGYzMWIyN2U5ZDEuLmY1NDFhOGM3OWRj
N2U1Y2FmNWJiYzhjOTc2M2U4NjM0YWU4YzFiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBVdGlsaXR5IGZ1bmN0aW9ucy4KICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCog
Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlUmVjb3Jk
KTsKKyAgICBKU0FycmF5KiBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKEV4ZWNTdGF0ZSosIEpT
VmFsdWUga2V5KTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiwgVk0mLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxs
L0NNYWtlTGlzdHMudHh0CmluZGV4IDlhNDlhMzNlNzNlZTc5ZjJhNjY4NjlhYTJjMDMzN2NjODNl
YmJkMGYuLmYxY2FlNWZmZDhjZmQyMGNjNmM0NjdjMzJmYTU1N2YxMGU4MDQxZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKQEAgLTkyLDEyICs5Miw3IEBA
IGlmIChERVZFTE9QRVJfTU9ERSkKICAgICBXRUJLSVRfRVhFQ1VUQUJMRSh0ZXN0ZGZnKQogCiAg
ICAgZmlsZShDT1BZCi0gICAgICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJL3Rlc3RzL3Rl
c3RhcGkuanMiCi0gICAgICAgIERFU1RJTkFUSU9OCi0gICAgICAgICR7Q01BS0VfUlVOVElNRV9P
VVRQVVRfRElSRUNUT1JZfS90ZXN0YXBpU2NyaXB0cwotICAgICkKLSAgICBmaWxlKENPUFkKLSAg
ICAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkvdGVzdHMvdGVzdGFwaS1mdW5jdGlvbi1v
dmVycmlkZXMuanMiCisgICAgICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJL3Rlc3RzL3Rl
c3RhcGlTY3JpcHRzIgogICAgICAgICBERVNUSU5BVElPTgogICAgICAgICAke0NNQUtFX1JVTlRJ
TUVfT1VUUFVUX0RJUkVDVE9SWX0vdGVzdGFwaVNjcmlwdHMKICAgICApCg==
</data>
<flag name="commit-queue"
          id="389821"
          type_id="3"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>