<?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>205671</bug_id>
          
          <creation_ts>2019-12-31 20:01:01 -0800</creation_ts>
          <short_desc>Simplify StringBuilder API/align with makeString by removing appendFixed* functions and using FormatNumber struct instead</short_desc>
          <delta_ts>2020-01-02 11:33:17 -0800</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602043</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-31 20:01:01 -0800</bug_when>
    <thetext>Remove numeric append functions from StringBuilder now that append can is capable of handling them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602044</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-31 20:06:13 -0800</bug_when>
    <thetext>The proposed changes are:
- StringBuilder::appendNumber(...) -&gt; replaced with StringBuilder::append(...)
- StringBuilder::appendFixedPrecisionNumber(...) -&gt; replaced with StringBuilder::append(FormattedNumber::fixedPrecision(...)
- StringBuilder::appendFixedWidthNumber(...) -&gt; replaced with StringBuilder::append(FormattedNumber::fixedWidth(...)

with the goal of simplifying StringBuilder&apos;s API and unifying it more with how makeString(...) works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602046</commentid>
    <comment_count>2</comment_count>
      <attachid>386573</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-31 20:18:41 -0800</bug_when>
    <thetext>Created attachment 386573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602073</commentid>
    <comment_count>3</comment_count>
      <attachid>386579</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-01 09:01:41 -0800</bug_when>
    <thetext>Created attachment 386579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602074</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-01-01 09:02:25 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602086</commentid>
    <comment_count>5</comment_count>
      <attachid>386582</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-01 11:25:46 -0800</bug_when>
    <thetext>Created attachment 386582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602087</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-01 11:41:53 -0800</bug_when>
    <thetext>I think I might scale this back to just the fixed width/precision appends, since I forgot about the UChar vs. uint16_t ambiguity issue, that I am still not sure how best to deal with.

In the latest patch, I casted the one uint16_t I knew about, SecurityOriginData&apos;s port, to uint32_t, but that doesn&apos;t feel like a good solution. Perhaps something like a ForceFormatAsNumber(...) wrapper?

I wonder if we could re-define UChar in WebCore to be a &quot;strong typedef&quot;, (e.g. struct UChar { explicit UChar(); ... private: uint16_t value; }). Would require a lot of changes when dealing with non-WebCore uses... Not sure it would be worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602088</commentid>
    <comment_count>7</comment_count>
      <attachid>386583</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-01 11:43:36 -0800</bug_when>
    <thetext>Created attachment 386583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602089</commentid>
    <comment_count>8</comment_count>
      <attachid>386584</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-01 11:44:50 -0800</bug_when>
    <thetext>Created attachment 386584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602117</commentid>
    <comment_count>9</comment_count>
      <attachid>386591</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-01 16:52:34 -0800</bug_when>
    <thetext>Created attachment 386591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602181</commentid>
    <comment_count>10</comment_count>
      <attachid>386591</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-02 11:32:05 -0800</bug_when>
    <thetext>Comment on attachment 386591
Patch

Clearing flags on attachment: 386591

Committed r253975: &lt;https://trac.webkit.org/changeset/253975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602182</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-02 11:32:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602183</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-02 11:33:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/58280185&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386573</attachid>
            <date>2019-12-31 20:18:41 -0800</date>
            <delta_ts>2020-01-01 09:01:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205671-20191231201840.patch</filename>
            <type>text/plain</type>
            <size>149334</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE5LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhh
dCBhcHBlbmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoK
KyAgICAgICAgKEJhY2t0cmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAq
IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVj
dXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZs
b3dUZXN0LmNwcDoKKyAgICAgICAgKFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0
YW5jZSk6CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcGVuZFVSTEFuZFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNs
aWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcgY29u
c3QpOgorCiAyMDE5LTEyLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaWR5IGEgYml0IG9mIFN0cmluZ0J1aWxkZXIgdXNhZ2UKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDE4ICsyOTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IG1fYnVpbGRlcjsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnIycpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmlzaXRv
ci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQodmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcj
JywgdmlzaXRvci0+aW5kZXgoKSwgJyAnLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSwgIigpIGF0
ICIsIHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5oYXNM
aW5lQW5kQ29sdW1uSW5mbygpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzon
KTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHVudXNlZENvbHVtbjsKICAgICAgICAgICAgICAgICB2aXNpdG9yLT5jb21wdXRl
TGluZUFuZENvbHVtbihsaW5lTnVtYmVyLCB1bnVzZWRDb2x1bW4pOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6JywgbGluZU51bWJlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghdmlzaXRvci0+Y2FsbGVlKCkucmF3UHRyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMiArMTk4
LDEzIEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRp
ZXJBZGp1c3RtZW50OwogCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygp
IHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIp
OworICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGls
ZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BV
VGltZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMo
KSksCisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICAp
OwogCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gQ1BVVGltZTo6Zm9yQ3VycmVudFRocmVhZCgp
OwpAQCAtMjM1LDE5ICsyMzYsMTkgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIHJlY3Vyc2UoaSkgeyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ3VzZSBzdHJpY3QnOyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaWYgKGkgJSAxMDAwID09PSAwKSB7IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGlt
ZSA+Iik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICApIHsgcmV0dXJuOyB9Iik7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICB9Iik7Ci0gICAg
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICByZXR1cm4gcmVjdXJzZShp
ICsgMSk7IH0iKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicmVj
dXJzZSgwKTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgorICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiByZWN1cnNlKGkpIHsiCisgICAgICAgICAgICAgICAgIiAgICAndXNl
IHN0cmljdCc7IgorICAgICAgICAgICAgICAgICIgICAgaWYgKGkgJSAxMDAwID09PSAwKSB7Igor
ICAgICAgICAgICAgICAgICIgICAgICAgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAgICAiICAgICAgICkgeyByZXR1
cm47IH0iCisgICAgICAgICAgICAgICAgIiAgICB9IgorICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHJlY3Vyc2UoaSArIDEpOyB9IgorICAgICAgICAgICAgICAgICJyZWN1cnNlKDApOyIKKyAg
ICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBDUFVUaW1lOjpmb3JDdXJy
ZW50VGhyZWFkKCk7CkBAIC0yNzksMTIgKzI4MCwxMyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUg
PSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVB
ZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0gfSBmb28o
KTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsg
dHJ5IHsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAo
Y3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIsCisgICAgICAgICAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJl
ZC5zZWNvbmRzKCkpLAorICAgICAgICAgICAgICAgICIpIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9
IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2Ny
aXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CiAKQEAgLTMxOCwxMiArMzIwLDEzIEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAgICAgU2Vjb25kcyB0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRpZXJBZGp1c3RtZW50Owog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOwor
ICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJm
dW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAo
dHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGlt
ZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSks
CisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICApOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKIApAQCAtMzU3LDEyICszNjAsMTMgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGlt
aXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hv
dWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0g
Y3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAgICAgICAg
ICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRj
aGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAgICAgICAgICBhdXRv
IHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAg
ICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVm
IHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBjYW5j
ZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwogCkBAIC0zOTYsMTIgKzQwMCwx
MyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICBTZWNvbmRzIHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUgPSA2MDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAg
ICAgICAgIFNlY29uZHMgbWF4QnVzeUxvb3BUaW1lID0gNzUwX21zICsgdGllckFkanVzdG1lbnQ7
CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAg
ICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtYXhCdXN5
TG9vcFRpbWUuc2Vjb25kcygpKTsgLy8gaW4gc2Vjb25kcy4KLSAgICAgICAgICAgIHNjcmlwdEJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb28o
KSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRU
aW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KG1heEJ1c3lMb29wVGltZS5zZWNvbmRzKCkpLCAvLyBpbiBzZWNvbmRzLgorICAgICAgICAgICAg
ICAgICIpIGJyZWFrOyB9IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdS
ZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIGV4
dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gMDsKIApAQCAtNDM5LDEyICs0NDQsMTMgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNv
bmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVz
dG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIg
c3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIp
OwotICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0
aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAg
c2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAg
ICAgICAgICBhdXRvIHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAg
ICAgICAgICAgICAgICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJj
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDggQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFja092
ZXJmbG93T2JqZWN0XwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkdW1teS52YWx1ZU9mKFswXSIpOwot
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDM1MDAwOyBpKyspIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXSIpOwotICAgICAg
ICB9CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsIFsiLCBpLCAnXScpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIik7Iik7CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTggKzQ1Miw5IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDxub2RlSWQ+LCA8c2l6ZUluQnl0ZXM+LCA8bm9kZUNsYXNzTmFtZUluZGV4Piwg
PGZsYWdzPiwgWzxsYWJlbEluZGV4PiwgPGNlbGxFZGRyZXNzPiwgPHdyYXBwZWRBZGRyZXNzPl0K
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIobm9k
ZS5pZGVudGlmaWVyKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIobm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihjbGFzc05hbWVJ
bmRleCk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTnVt
YmVyKGZsYWdzKTsKKyAgICAgICAganNvbi5hcHBlbmQoJywnLCBub2RlLmlkZW50aWZpZXIsICcs
Jywgbm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSksICcsJywgY2xhc3NOYW1lSW5k
ZXgsICcsJywgZmxhZ3MpOwogICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIobGFiZWxJbmRleCk7Ci0gICAgICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcIjB4Iik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcsIGxhYmVsSW5kZXgsICIsXCIweCIpOwogICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNl
KTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIweCIpOwogICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBl
ZEFkZHJlc3MpLCBqc29uLCBMb3dlcmNhc2UpOwpAQCAtNDc4LDEyICs0NjksNyBAQCBTdHJpbmcg
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgIGZpcnN0RWRnZSA9IGZh
bHNlOwogCiAgICAgICAgIC8vIDxmcm9tTm9kZUlkPiwgPHRvTm9kZUlkPiwgPGVkZ2VUeXBlSW5k
ZXg+LCA8ZWRnZUV4dHJhRGF0YT4KLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIoZWRnZS5mcm9t
LmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlLnRvLmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlVHlwZVRvTnVtYmVyKGVkZ2UudHlwZSkp
OwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOworICAgICAgICBqc29uLmFwcGVuZChlZGdlLmZy
b20uaWRlbnRpZmllciwgJywnLCBlZGdlLnRvLmlkZW50aWZpZXIsICcsJywgZWRnZVR5cGVUb051
bWJlcihlZGdlLnR5cGUpLCAnLCcpOwogICAgICAgICBzd2l0Y2ggKGVkZ2UudHlwZSkgewogICAg
ICAgICBjYXNlIEVkZ2VUeXBlOjpQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFZGdlVHlwZTo6VmFy
aWFibGU6IHsKQEAgLTQ5MSwxMSArNDc3LDExIEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVy
Ojpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICBuZXh0RWRnZU5hbWVJbmRleCsrOwogICAgICAgICAgICAgdW5zaWduZWQgZWRn
ZU5hbWVJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlTmFtZUluZGV4KTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKGVkZ2VO
YW1lSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
ZGdlVHlwZTo6SW5kZXg6Ci0gICAgICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlLnUuaW5k
ZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoZWRnZS51LmluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3IgdGhp
cyBlZGdlIHR5cGUuCkBAIC02NDYsNyArNjMyLDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6Ompzb24oRnVuY3RpbwogICAgICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKICAg
ICAgICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1i
ZXIoc25hcHNob3ROb2RlLnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgICAgICBqc29uLmFw
cGVuZChzbmFwc2hvdE5vZGUudmFsdWUoKS5pZGVudGlmaWVyKTsKIAogICAgICAgICAgICAgLy8g
TWF5YmUgd2Ugc2hvdWxkIGp1c3QgYWx3YXlzIGVuY29kZSB0aGUgcm9vdCBuYW1lcy4KICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJvb3ROYW1lID0gcm9vdFR5cGVUb1N0cmluZyhpdC52YWx1ZS5t
YXJrUmVhc29uKTsKQEAgLTY1NCw4ICs2NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRl
cjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgIHVuc2lnbmVkIGxhYmVs
SW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAganNvbi5hcHBlbmQo
JywnKTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5kZXgpOworICAgICAg
ICAgICAganNvbi5hcHBlbmQoJywnLCBsYWJlbEluZGV4KTsKIAogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVhY2hhYmlsaXR5UmVhc29uSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGl0LnZhbHVl
LnJlYWNoYWJpbGl0eUZyb21PcGFxdWVSb290UmVhc29ucykgewpAQCAtNjY0LDggKzY0OSw3IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgICAg
ICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgICAgICByZWFjaGFiaWxpdHlSZWFz
b25JbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIocmVh
Y2hhYmlsaXR5UmVhc29uSW5kZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnLCByZWFj
aGFiaWxpdHlSZWFzb25JbmRleCk7CiAgICAgICAgIH0KIAogICAgICAgICBqc29uLmFwcGVuZCgn
XScpOwpAQCAtNjczLDkgKzY1Nyw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW8KIAogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVi
dWdnaW5nU25hcHNob3QpIHsKICAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBkZXNjcmlwdGlvbnMK
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImxhYmVsc1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBqc29uLmFw
cGVuZCgiLCdcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmRlcmVk
TGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bGFiZWxJbmRleGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTIsMTAgKzM1Miw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjp0b1N0cmluZygp
IGMKICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQg
Y29sdW1uID0gMDsKICAgICAgICAgICAgIGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJh
Y2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIoY29sdW1uKTsKKyAg
ICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5j
cHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTAgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kVVJMQW5kUG9zaXRpb24oU3RyaW5nQgogCiAgICAgYnVpbGRlci5hcHBlbmQo
dXJsKTsKIAotICAgIGlmIChsaW5lTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKLSAgICB9
Ci0KLSAgICBpZiAoY29sdW1uTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
OicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjb2x1bW5OdW1iZXIpOwotICAgIH0K
KyAgICBpZiAobGluZU51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgbGlu
ZU51bWJlcik7CisgICAgaWYgKGNvbHVtbk51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6JywgY29sdW1uTnVtYmVyKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVBy
ZWZpeChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsKQpAQCAtMTgwLDEwICsxNzUsNyBAQCB2b2lk
IENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXCiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBj
YWxsRnJhbWVCdWlsZGVyOwotICAgICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmROdW1i
ZXIoaSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7
Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgICAgIGNhbGxG
cmFtZUJ1aWxkZXIuYXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKICAgICAgICAg
ICAgIGFwcGVuZFVSTEFuZFBvc2l0aW9uKGNhbGxGcmFtZUJ1aWxkZXIsIGNhbGxGcmFtZS5zb3Vy
Y2VVUkwoKSwgY2FsbEZyYW1lLmxpbmVOdW1iZXIoKSwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcigp
KTsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAy
NTM5NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDEzICszNzgsMTMgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcgogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5hc0lu
dDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1
ZS5hc051bWJlcigpOwogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpCiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChudW1iZXIpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAx
LDE2ICsxMDAxLDE2IEBAIHZvaWQgT3B0aW9uUmVhZGVyOjpPcHRpb246OmR1bXAoU3RyaW5nQnUK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdW5zaWduZWQpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X3Vuc2lnbmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXpl
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3NpemUpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3NpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2Rv
dWJsZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obV9kb3VibGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9pbnQzMik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1faW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6Ok9wdGlvblJhbmdlOgogICAgICAgICBidWlsZGVyLmFwcGVuZChtX29wdGlvblJh
bmdlLnJhbmdlU3RyaW5nKCkpOwpAQCAtMTAxOSw5ICsxMDE5LDcgQEAgdm9pZCBPcHRpb25SZWFk
ZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdQogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBt
X29wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24g
PSAiIjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQob3B0aW9uKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInLCBvcHRpb24sICciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDEwICsxMzMsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoVk0mIHZtKSBj
b25zCiAgICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW47CiAgICAgICAgICAgICBjb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogCi0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKTsKKyAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jywg
bGluZSwgJzonLCBjb2x1bW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1
aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTIt
MzEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1l
cmljIGFwcGVuZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBj
YW4gaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9KU09OVmFsdWVzLmNwcDoKKyAgICAgICAgKFdU
Rjo6SlNPTkltcGw6OlZhbHVlOjp3cml0ZUpTT04gY29uc3QpOgorICAgICAgICAqIHd0Zi9NZWRp
YVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVp
bGRlcjo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg6CisgICAgICAgIChXVEY6OkZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24pOgorICAgICAgICAoV1RGOjpGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgp
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVGlkeSBhIGJpdCBvZiBTdHJpbmdCdWlsZGVyIHVzYWdlCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dURi93
dGYvSlNPTlZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lk
IFZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0CiAgICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZShtX3ZhbHVlLm51bWJlcikpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJh
bCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTnVtYmVy
KG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1i
ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL01lZGlhVGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWVkaWFU
aW1lLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDEzICs1ODgsOSBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0
b1N0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRl
ci5hcHBlbmQoJ3snKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV90aW1lVmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3RpbWVTY2FsZSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiID0gIik7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIodG9Eb3VibGUoKSk7CisgICAgaWYgKCFoYXNEb3VibGVWYWx1
ZSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2Fs
ZSwgIiA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odG9Eb3VibGUoKSkpOwogICAgIGlmIChpc0ludmFsaWQoKSkKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGludmFsaWQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnfScpOwpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNzIgKzM5Miw2IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKENGU3RyaW5n
UmVmIHMKIAogI2VuZGlmCiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKGludCBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVy
PihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihs
b25nIGxvbmcgbnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxk
ZXI+KG51bWJlciwgdGhpcyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVy
KHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25l
ZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgcHJlY2lz
aW9uLCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSBwb2xpY3kpCi17Ci0gICAgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb0ZpeGVkUHJlY2lzaW9u
U3RyaW5nKG51bWJlciwgcHJlY2lzaW9uLCBidWZmZXIsIHBvbGljeSA9PSBUcnVuY2F0ZVRyYWls
aW5nWmVyb3MpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24sIFRyYWlsaW5nWmVyb3NU
cnVuY2F0aW5nUG9saWN5IHBvbGljeSkKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZm
ZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVj
aXNpb24sIGJ1ZmZlciwgcG9saWN5ID09IFRydW5jYXRlVHJhaWxpbmdaZXJvcykpOwotfQotCi12
b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihmbG9hdCBudW1iZXIpCi17Ci0gICAgTnVt
YmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb1N0cmluZyhudW1i
ZXIsIGJ1ZmZlcikpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3Vi
bGUgbnVtYmVyKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICBhcHBl
bmQobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5k
KG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikp
OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91Ymxl
IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIs
IGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikpOwotfQotCiBib29sIFN0cmluZ0J1aWxkZXI6OmNhblNo
cmluaygpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJmbG93ZWQoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDIwICsyMTksNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNv
dW50IC0gMSk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihp
bnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIobG9uZyBsb25nKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwotCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZmxvYXQsIHVuc2lnbmVk
IHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVU
cmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVy
b3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBk
ZWNpbWFsUGxhY2VzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTQsNiArOTQsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwog
ICAgIH0KIAorICAgIHN0YXRpYyBGb3JtYXR0ZWROdW1iZXIgZml4ZWRQcmVjaXNpb24oZmxvYXQg
bnVtYmVyLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMgPSA2LCBUcmFpbGluZ1plcm9zVHJ1
bmNhdGluZ1BvbGljeSB0cmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSA9IFRydW5jYXRlVHJh
aWxpbmdaZXJvcykKKyAgICB7CisgICAgICAgIEZvcm1hdHRlZE51bWJlciBudW1iZXJGb3JtYXR0
ZXI7CisgICAgICAgIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBzaWduaWZp
Y2FudEZpZ3VyZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlciwgdHJhaWxpbmdaZXJvc1RydW5j
YXRpbmdQb2xpY3kgPT0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKKyAgICAgICAgbnVtYmVyRm9y
bWF0dGVyLm1fbGVuZ3RoID0gc3RkOjpzdHJsZW4oJm51bWJlckZvcm1hdHRlci5tX2J1ZmZlclsw
XSk7CisgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXR0ZXI7CisgICAgfQorCiAgICAgc3RhdGlj
IEZvcm1hdHRlZE51bWJlciBmaXhlZFdpZHRoKGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIGRlY2lt
YWxQbGFjZXMpCiAgICAgewogICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVy
OwpAQCAtMTAyLDYgKzExMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudW1iZXJGb3Jt
YXR0ZXI7CiAgICAgfQogCisgICAgc3RhdGljIEZvcm1hdHRlZE51bWJlciBmaXhlZFdpZHRoKGZs
b2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKKyAgICB7CisgICAgICAgIEZvcm1h
dHRlZE51bWJlciBudW1iZXJGb3JtYXR0ZXI7CisgICAgICAgIG51bWJlclRvRml4ZWRXaWR0aFN0
cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlcik7Cisg
ICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVuKCZudW1iZXJGb3Jt
YXR0ZXIubV9idWZmZXJbMF0pOworICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOworICAg
IH0KKwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAg
ICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigmbV9idWZmZXJbMF0pOyB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Rl
eHQvVGV4dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9UZXh0
U3RyZWFtLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dURi93dGYvdGV4dC9UZXh0
U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMzcgKzU0LDM3IEBAIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY2hhciAKIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6
b3BlcmF0b3I8PChpbnQgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1f
dGV4dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJl
cihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4
dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChsb25nIGkpCiB7Ci0gICAgbV90ZXh0LmFw
cGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGkp
CiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8
PChsb25nIGxvbmcgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1fdGV4
dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBl
bmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKQEAgLTkzLDcgKzkzLDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChm
bG9hdAogICAgIGlmIChtX2Zvcm1hdHRpbmdGbGFncyAmIEZvcm1hdHRpbmc6Ok51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycykKICAgICAgICAgcmV0dXJuICp0aGlzIDw8IEZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhmKTsKIAotICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGYs
IDIpOworICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGYsIDIp
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBUZXh0U3RyZWFt
JiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGRvdWJsCiAgICAgaWYgKG1fZm9ybWF0dGluZ0ZsYWdz
ICYgRm9ybWF0dGluZzo6TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKQogICAgICAgICByZXR1cm4g
KnRoaXMgPDwgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKGQpOwogCi0gICAgbV90ZXh0
LmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZCwgMik7CisgICAgbV90ZXh0LmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgoZCwgMikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAt
MTI4LDExICsxMjgsMTEgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25z
dAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGb3JtYXROdW1iZXJS
ZXNwZWN0aW5nSW50ZWdlcnMmIG51bWJlclRvRm9ybWF0KQogewogICAgIGlmIChoYXNGcmFjdGlv
bnMobnVtYmVyVG9Gb3JtYXQudmFsdWUpKSB7Ci0gICAgICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKG51bWJlclRvRm9ybWF0LnZhbHVlLCAyKTsKKyAgICAgICAgbV90ZXh0LmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgobnVtYmVyVG9Gb3JtYXQudmFsdWUsIDIpKTsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIo
c3RhdGljX2Nhc3Q8aW50PihudW1iZXJUb0Zvcm1hdC52YWx1ZSkpOworICAgIG1fdGV4dC5hcHBl
bmQoc3RhdGljX2Nhc3Q8aW50PihudW1iZXJUb0Zvcm1hdC52YWx1ZSkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisyMDE5LTEy
LTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbnVt
ZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBlbmQg
Y2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0
b3JlOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhvc3ROYW1lKToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyk6
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVGVybS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmVhdHVy
ZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFZhcmlh
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRWYXJpYXRpb25WYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZTo6a2V5VGV4dCBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9t
Q1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTcHJpbmdUaW1pbmdGdW5jdGlv
blZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZG93bmdyYWRlUmVmZXJyZXJUb1JlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAg
ICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZvcm1h
dEZvckRlYnVnZ2VyIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OmZvcm1hdEZvckRlYnVnZ2VyIGNvbnN0KToKKyAgICAgICAgKiBkb20v
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlciBjb25z
dCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6Z2VuZXJhdGVVbmlxdWVQcmVmaXgpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRh
dGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU2VydmVyTWFwTW91c2VQb3NpdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dDJkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVs
ZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVC
b3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgICogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnVybCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnJlZmVycmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnRvU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmludGVncml0eU1pc21hdGNoRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2
ZXI6OnJvb3RNYXJnaW4gY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRCeXRlTnVtYmVyKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c25hcE9mZnNldHNUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwT2Zmc2V0
UmFuZ2VzVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c25hcFBvcnRPckFyZWFUb1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OmNyZWF0ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRWYXJpYXRp
b25TZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrOjpnZW5lcmF0ZU1vY2tTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJveHlTZXJ2ZXJTdHJp
bmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5vZGVQb3NpdGlvbik6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFBvaW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0
cmluZ0Zyb21QYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgICog
c3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1W
YWx1ZTo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXJzKToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8RmxvYXRQb2ludD46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5VHJhaXRzPEZsb2F0UmVjdD46OnRvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBNYXJrZXJSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6Z2V0Q3VycmVudEN1cnNvckluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kT2Zmc2V0cyk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZl
bnQpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UpOgorCiAyMDE5LTEyLTMxICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbW90ZSBtZWRpYSByZXNvdXJjZSBs
b2FkZXIgZm9yIHRoZSBHUFUgcHJvY2VzcwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JbmRleFZhbHVlU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiw4IEBA
IGNvbnN0IElEQktleURhdGEmIEluZGV4VmFsdWVTdG9yZTo6SXRlcmEKIFN0cmluZyBJbmRleFZh
bHVlU3RvcmU6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBmb3IgKGF1dG8mIGtleSA6IG1fb3JkZXJlZEtleXMpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJLZXk6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChrZXku
bG9nZ2luZ1N0cmluZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgIEVudHJ5
IGhhcyAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9yZWNvcmRzLmdldChrZXkp
LT5nZXRDb3VudCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50cmllcyIp
OwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGtleSA6IG1fb3JkZXJlZEtleXMpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJLZXk6ICIsIGtleS5sb2dnaW5nU3RyaW5nKCksICIgIEVudHJ5IGhhcyAi
LCBtX3JlY29yZHMuZ2V0KGtleSktPmdldENvdW50KCksICIgZW50cmllcyIpOwogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDggQEAgc3Rh
dGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYgogICAgIEFTU0VSVCh1cmwucHJv
dG9jb2xJcygid3NzIikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgYnVpbGRlci5hcHBlbmQodXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsK
LSAgICBpZiAodXJsLnBvcnQoKSAmJiAoKCFzZWN1cmUgJiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9
IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkudmFsdWUoKSAhPSA0NDMpKSkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih1cmwu
cG9ydCgpLnZhbHVlKCkpOwotICAgIH0KKyAgICBpZiAodXJsLnBvcnQoKSAmJiAoKCFzZWN1cmUg
JiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkudmFs
dWUoKSAhPSA0NDMpKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonLCB1cmwucG9ydCgpLnZh
bHVlKCkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0
ZXJzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEwICsx
MDMsOCBAQCBzdGF0aWMgU3RyaW5nIHByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyhjCiAKICAgICBh
dXRvIGFjdGlvbnNTbG90ID0gYWN0aW9ucy5maW5kKCZ2ZXJ0ZXgpOwogICAgIGlmIChhY3Rpb25z
U2xvdCAhPSBhY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDog
YWN0aW9uc1Nsb3QtPnZhbHVlKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihh
Y3Rpb24pOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgfQorICAg
ICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IGFjdGlvbnNTbG90LT52YWx1ZSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGFjdGlvbiwgJywnKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM4
LDkgKzIzOCw3IEBAIGlubGluZSBTdHJpbmcgVGVybTo6dG9TdHJpbmcoKSBjb25zdAogICAgICAg
ICAgICAgICAgIGlmIChpc0FTQ0lJUHJpbnRhYmxlKGMpICYmICFpc0FTQ0lJU3BhY2UoYykpCiAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOwogICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXFwnKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3UnKTsKLSAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoYyk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdcXCcsICd1JywgYyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0Niw4IEBAIFN0cmluZyBDU1NGb250RmVh
dHVyZVZhbHVlOjpjdXN0b21DU1NUZXgKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAvLyBPbWl0IHRoZSB2YWx1ZSBpZiBpdCdzIDEgYXMg
MSBpcyBpbXBsaWVkIGJ5IGRlZmF1bHQuCi0gICAgaWYgKG1fdmFsdWUgIT0gMSkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3Zh
bHVlKTsKLSAgICB9CisgICAgaWYgKG1fdmFsdWUgIT0gMSkKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnLCBtX3ZhbHVlKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAkocmV2
aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDcgQEAgU3RyaW5nIENTU0ZvbnRWYXJp
YXRpb25WYWx1ZTo6Y3VzdG9tQ1NTVAogICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgZm9y
IChjaGFyIGMgOiBtX3RhZykKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJcIiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKG1fdmFsdWUpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcIiAiLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFsdWUpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAkocmV2
aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDcgQEAgU3RyaW5nIFN0eWxlUnVsZUtleWZyYW1l
OjprZXlUZXh0KCkgY29ucwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9rZXlzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAga2V5VGV4dC5hcHBlbmQoJywn
KTsKLSAgICAgICAga2V5VGV4dC5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2tleXMuYXQo
aSkgKiAxMDApOwotICAgICAgICBrZXlUZXh0LmFwcGVuZCgnJScpOworICAgICAgICBrZXlUZXh0
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fa2V5cy5hdChpKSAqIDEw
MCksICclJyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGtleVRleHQudG9TdHJpbmcoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAJKHJldmlz
aW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTdHJpbmcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NU
ZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJjdWJpYy1iZXppZXIoIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihtX3gxKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3kxKTsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihtX3gyKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3kyKTsKLSAgICBidWlsZGVyLmFwcGVuZCgn
KScpOyAgICAKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKCJjdWJpYy1iZXppZXIoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbiht
X3gxKSwgIiwgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3kxKSwgIiwgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3gyKSwgIiwgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihtX3kyKSwgJyknKTsKIH0KIAogYm9vbCBDU1NDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdApAQCAtNTIsMTQgKzQyLDcgQEAgYm9vbCBDU1NDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OgogCiBTdHJpbmcgQ1NTU3RlcHNUaW1pbmdGdW5j
dGlvblZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzdGVwcygiKTsKLSAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihtX3N0ZXBzKTsKLSAgICBpZiAobV9zdGVwQXRTdGFydCkKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHN0YXJ0KSIpOwotICAgIGVsc2UKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIGVuZCkiKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJzdGVwcygiLCBtX3N0ZXBzLCAobV9zdGVwQXRT
dGFydCA/ICIsIHN0YXJ0KSIgOiAiLCBlbmQpIikpOwogfQogCiBib29sIENTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSYg
b3RoZXIpIGNvbnN0CkBAIC02OSwxNyArNTIsNyBAQCBib29sIENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZTo6ZXF1YWxzCiAKIFN0cmluZyBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzcHJpbmcoIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihtX21hc3MpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
YnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3N0aWZmbmVzcyk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KG1fZGFtcGluZyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1faW5pdGlhbFZlbG9jaXR5KTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInNwcmluZygiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fbWFz
cyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3N0aWZmbmVzcyksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2RhbXBpbmcpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9pbml0aWFsVmVsb2NpdHkpLCAnKScpOwogfQog
CiBib29sIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NTcHJp
bmdUaW1pbmdGdW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIxLDE1ICs0MjEsMTQgQEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplKFN0
cmluZ0J1aQogICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJseSBwcmVzZXJ2ZSB0aGUgTnVt
ZXJpY1ZhbHVlVHlwZSBmbGFnCiAgICAgICAgIGlmIChtX251bWVyaWNTaWduID09IFBsdXNTaWdu
KQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJysnKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtZXJpY1ZhbHVlKCkpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQZXJjZW50YWdlVG9rZW46Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobnVtZXJpY1ZhbHVlKCkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnJScpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKG51bWVyaWNWYWx1ZSgpKSwgJyUnKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKICAgICAgICAgLy8gVGhpcyB3aWxsIGluY29ycmVj
dGx5IHNlcmlhbGl6ZSBlLmcuIDRlM2UyIGFzIDQwMDBlMgotICAgICAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihudW1lcmljVmFsdWUoKSkpOwog
ICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NzksMTMgKzc5NzksOSBAQCB2b2lk
IERvY3VtZW50Ojpkb3duZ3JhZGVSZWZlcnJlclRvUmVnaXN0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChyZWZlcnJlclVS
TC5wcm90b2NvbCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjovLyIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKHJlZmVycmVyUmVnaXN0cmFibGVEb21haW5TdHIpOwotICAgIGlmIChyZWZl
cnJlclBvcnQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoKnJlZmVycmVyUG9ydCk7Ci0gICAgfQorICAgIGJ1aWxkZXIuYXBwZW5k
KHJlZmVycmVyVVJMLnByb3RvY29sKCksICI6Ly8iLCByZWZlcnJlclJlZ2lzdHJhYmxlRG9tYWlu
U3RyKTsKKyAgICBpZiAocmVmZXJyZXJQb3J0KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnOics
ICpyZWZlcnJlclBvcnQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CiAKICAgICBtX3JlZmVy
cmVyT3ZlcnJpZGUgPSBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODIsMTAgKzEzODIsOCBAQCB2b2lkIFBvc2l0aW9uOjpm
b3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBiCiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiPG51bGw+Iik7CiAgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIm9mZnNldCAiLCBtX29mZnNldCwgIiBvZiAiKTsKICAgICAgICAgY2hhciBzWzEwMjRd
OwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgib2Zmc2V0ICIpOwotICAgICAgICByZXN1
bHQuYXBwZW5kTnVtYmVyKG1fb2Zmc2V0KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiBvZiAiKTsKICAgICAgICAgZGVwcmVjYXRlZE5vZGUoKS0+Zm9ybWF0Rm9yRGVidWdnZXIocywg
c2l6ZW9mKHMpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTgsMTQgKzE1MTgsMTAgQEAgdm9pZCBSYW5nZTo6
Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZgogCiAgICAgY29uc3QgaW50IEZvcm1hdEJ1ZmZl
clNpemUgPSAxMDI0OwogICAgIGNoYXIgc1tGb3JtYXRCdWZmZXJTaXplXTsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiZnJvbSBvZmZzZXQgIik7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlciht
X3N0YXJ0Lm9mZnNldCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAg
IHJlc3VsdC5hcHBlbmQoImZyb20gb2Zmc2V0ICIsIG1fc3RhcnQub2Zmc2V0KCksICIgb2YgIik7
CiAgICAgc3RhcnRDb250YWluZXIoKS5mb3JtYXRGb3JEZWJ1Z2dlcihzLCBGb3JtYXRCdWZmZXJT
aXplKTsKICAgICByZXN1bHQuYXBwZW5kKHMpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIg
dG8gb2Zmc2V0ICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9lbmQub2Zmc2V0KCkpOwot
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CisgICAgcmVzdWx0LmFwcGVuZCgiIHRv
IG9mZnNldCAiLCBtX2VuZC5vZmZzZXQoKSwgIiBvZiAiKTsKICAgICBlbmRDb250YWluZXIoKS5m
b3JtYXRGb3JEZWJ1Z2dlcihzLCBGb3JtYXRCdWZmZXJTaXplKTsKICAgICByZXN1bHQuYXBwZW5k
KHMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMywxMSArMjMzLDcgQEAg
dm9pZCBUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZQogICAgIGlmIChzLmxlbmd0
aCgpID4gMCkgewogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIjsgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJs
ZW5ndGg9Iik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIocy5sZW5ndGgoKSk7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI7IHZhbHVlPVwiIik7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyInKTsKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgibGVuZ3RoPSIsIHMubGVuZ3RoKCksICI7IHZhbHVlPVwiIiwgcywgJyInKTsKICAgICB9
CiAKICAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
bGVuZ3RoIC0gMSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNiw4ICs1MTYsNyBAQCB2
b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjpnZW5lcmF0ZVVuaXF1ZVByCiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgIGRvIHsKICAgICAgICAgYnVpbGRlci5jbGVhcigpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIk5TIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KCsrbV9wcmVmaXhMZXZlbCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJOUyIsICsrbV9wcmVm
aXhMZXZlbCk7CiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUgPSBidWlsZGVyLnRvQXRv
bVN0cmluZygpOwogICAgICAgICBpZiAoIW5hbWVzcGFjZXMuZ2V0KG5hbWUuaW1wbCgpKSkgewog
ICAgICAgICAgICAgcHJlZml4ZWROYW1lLnNldFByZWZpeChuYW1lKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI1Mzk2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzI0LDE5ICszMjQsMTMgQEAgc3RhdGljIFN0cmluZyBkYXRhRGV0ZWN0
b3JTdHJpbmdGb3JQYXRoKAogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgMToKICAgICAg
ICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0gICAg
Y2FzZSAyOiB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKLSAgICAgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9CisgICAgY2FzZSAyOgorICAgICAgICByZXR1
cm4gbWFrZVN0cmluZyhbcGF0aCBpbmRleEF0UG9zaXRpb246MF0sICcvJywgW3BhdGggaW5kZXhB
dFBvc2l0aW9uOjFdKTsKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5k
ZXhBdFBvc2l0aW9uOjBdKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoW3BhdGggaW5k
ZXhBdFBvc2l0aW9uOjBdKTsKICAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAxIDsgaSA8IGxl
bmd0aCA7IGkrKykgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlv
bjppXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLycsIFtwYXRoIGluZGV4
QXRQb3NpdGlvbjppXSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTAgKzE3MCw3IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBwcm9iYWJseSBwYXNzIFVzZVRyYW5zZm9ybXMgaW4gdGhlIE1hcENvb3JkaW5hdGVzRmxh
Z3MuCiAgICAgYXV0byBhYnNvbHV0ZVBvc2l0aW9uID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpy
ZW5kZXJlcikuYWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9pbnQobW91c2VFdmVudC5wYWdlWCgpLCBt
b3VzZUV2ZW50LnBhZ2VZKCkpKTsKLSAgICB1cmwuYXBwZW5kKCc/Jyk7Ci0gICAgdXJsLmFwcGVu
ZE51bWJlcihzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0aW9uLngoKSkpOwotICAgIHVybC5hcHBl
bmQoJywnKTsKLSAgICB1cmwuYXBwZW5kTnVtYmVyKHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRp
b24ueSgpKSk7CisgICAgdXJsLmFwcGVuZCgnPycsIHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRp
b24ueCgpKSwgJywnLCBzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0aW9uLnkoKSkpOwogfQogCiB2
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzM1LDExICszMzUsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQqIEhUTUxDYW52YXNFbGVtCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHVzZSBtb3JlIHBp
eGVsIG1lbW9yeSB0aGFuIHRoZSBzeXN0ZW0gY2FuIHN1cHBvcnQuCiAgICAgc2l6ZV90IHJlcXVl
c3RlZFBpeGVsTWVtb3J5ID0gNCAqIHdpZHRoKCkgKiBoZWlnaHQoKTsKICAgICBpZiAoYWN0aXZl
UGl4ZWxNZW1vcnkoKSArIHJlcXVlc3RlZFBpeGVsTWVtb3J5ID4gbWF4QWN0aXZlUGl4ZWxNZW1v
cnkoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVk
cyB0aGUgbWF4aW11bSBsaW1pdCAoIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8gMTAyNCk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIE1CKS4iKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJp
bmcoIlRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKCIs
IG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8gMTAyNCwgIiBNQikuIikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTg2MywyMiArODU5LDE0IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmUKIAogICAgIC8vIFBlcmZvcm0gbXVsdGlw
bGljYXRpb24gYXMgZmxvYXRpbmcgcG9pbnQgdG8gYXZvaWQgb3ZlcmZsb3cKICAgICBpZiAoZmxv
YXQod2lkdGgoKSkgKiBoZWlnaHQoKSA+IG1heENhbnZhc0FyZWEpIHsKLSAgICAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkNhbnZhcyBhcmVhIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKHdpZHRoICogaGVpZ2h0
ID4gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKG1heENhbnZhc0FyZWEp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikuIik7Ci0gICAgICAgIGRv
Y3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBtYWtlU3RyaW5nKCJDYW52YXMgYXJlYSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3
aWR0aCAqIGhlaWdodCA+ICIsIG1heENhbnZhc0FyZWEsICIpLiIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIG1vcmUgcGl4ZWwg
bWVtb3J5IHRoYW4gdGhlIHN5c3RlbSBjYW4gc3VwcG9ydC4KICAgICBzaXplX3QgcmVxdWVzdGVk
UGl4ZWxNZW1vcnkgPSA0ICogd2lkdGgoKSAqIGhlaWdodCgpOwogICAgIGlmIChhY3RpdmVQaXhl
bE1lbW9yeSgpICsgcmVxdWVzdGVkUGl4ZWxNZW1vcnkgPiBtYXhBY3RpdmVQaXhlbE1lbW9yeSgp
KSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRo
ZSBtYXhpbXVtIGxpbWl0ICgiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIo
bWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEwMjQgLyAxMDI0KTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgTUIpLiIpOwotICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygi
VG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoIiwgbWF4
QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEwMjQgLyAxMDI0LCAiIE1CKS4iKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcxLDE2ICs1NzEsMTAgQEAgU3RyaW5nIEhU
TUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQQogICAgICAgICAgICAgaWYgKCZjYW5kaWRh
dGUgIT0gJmltYWdlQ2FuZGlkYXRlc1swXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNhbmRp
ZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5kZW5zaXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKSB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihjYW5kaWRhdGUuZGVuc2l0eSk7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgneCcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS5yZXNvdXJjZVdpZHRoICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKSB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRO
dW1iZXIoY2FuZGlkYXRlLnJlc291cmNlV2lkdGgpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ3cnKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuZGVu
c2l0eSAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihjYW5kaWRhdGUuZGVu
c2l0eSksICd4Jyk7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291cmNlV2lkdGggIT0g
VW5pbml0aWFsaXplZERlc2NyaXB0b3IpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICcsIGNhbmRpZGF0ZS5yZXNvdXJjZVdpZHRoLCAndycpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlz
aW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsNyBAQCBTdHJpbmcg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgCiAgICAgaWYgKGZvbnREZXNjcmlwdGlv
bi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGwpCiAgICAgICAgIHNlcmlh
bGl6ZWRGb250LmFwcGVuZExpdGVyYWwoInNtYWxsLWNhcHMgIik7CiAKLSAgICBzZXJpYWxpemVk
Rm9udC5hcHBlbmROdW1iZXIoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpOwot
ICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZExpdGVyYWwoInB4Iik7CisgICAgc2VyaWFsaXplZEZv
bnQuYXBwZW5kKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCAicHgiKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQo
KTsgKytpKSB7CiAgICAgICAgIGlmIChpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTk4LDEzICsyMTk4LDcg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbgogCiAgICAgYXV0byBi
eXRlQXJyYXkgPSBidWZmZXItPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZURhdGFSZWN0
LCBudWxscHRyLCBjb29yZGluYXRlU3lzdGVtKTsKICAgICBpZiAoIWJ5dGVBcnJheSkgewotICAg
ICAgICBTdHJpbmdCdWlsZGVyIGNvbnNvbGVNZXNzYWdlOwotICAgICAgICBjb25zb2xlTWVzc2Fn
ZS5hcHBlbmRMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMuIFJl
cXVlc3RlZCBzaXplIHdhcyAiKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTnVtYmVy
KGltYWdlRGF0YVJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZExp
dGVyYWwoIiB4ICIpOwotICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmROdW1iZXIoaW1hZ2VE
YXRhUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZS50b1N0cmluZygpKTsKKyAgICAgICAg
Y2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5n
KCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMuIFJlcXVlc3RlZCBzaXplIHdh
cyAiLCBpbWFnZURhdGFSZWN0LndpZHRoKCksICIgeCAiLCBpbWFnZURhdGFSZWN0LmhlaWdodCgp
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkocmV2aXNpb24gMjUz
OTY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGll
cyhjb25zdAogICAgIGlmIChjdWUtPnZlcnRpY2FsKCkgPT0gaG9yaXpvbnRhbEtleXdvcmQoKSkK
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHBvc2l0aW9u
LmZpcnN0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGVsc2UgaWYgKGN1ZS0+
dmVydGljYWwoKSA9PSB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKSkKLSAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIG1ha2VTdHJpbmcoImNhbGMoLSIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aCh2aWRlb1NpemUud2lkdGgoKSwgMiksICJweCAt
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChjdWUtPmdldENTU1NpemUoKSwgMiksICJw
eCkiKSk7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBt
YWtlU3RyaW5nKCJjYWxjKC0iLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoc3RhdGljX2Nh
c3Q8ZG91YmxlPih2aWRlb1NpemUud2lkdGgoKSksIDIpLCAicHggLSAiLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkV2lkdGgoc3RhdGljX2Nhc3Q8ZG91YmxlPihjdWUtPmdldENTU1NpemUoKSksIDIp
LCAicHgpIikpOwogCiAgICAgZG91YmxlIGF1dGhvckZvbnRTaXplID0gc3RkOjptaW4odmlkZW9T
aXplLndpZHRoKCksIHZpZGVvU2l6ZS5oZWlnaHQoKSkgKiBERUZBVUxUQ0FQVElPTkZPTlRTSVpF
UEVSQ0VOVEFHRSAvIDEwMC4wOwogICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAJKHJldmlzaW9u
IDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTUgKzEzMyw3IEBAIFVSTCBBZENsaWNrQXR0cmlidXRp
b246OnVybCgpIGNvbnN0CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBVUkwo
KTsKIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoImh0dHBzOi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zb3VyY2UucmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbChhZENsaWNrQXR0cmli
dXRpb25QYXRoUHJlZml4KTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NvbnZlcnNpb24u
dmFsdWUoKS5kYXRhKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVy
LnRvU3RyaW5nKCkgfTsKKyAgICBVUkwgdXJsIHsgVVJMKCksIG1ha2VTdHJpbmcoImh0dHBzOi8v
IiwgbV9zb3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksIGFkQ2xpY2tBdHRyaWJ1dGlv
blBhdGhQcmVmaXgsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICcvJywgbV9jYW1wYWlnbi5p
ZCkgfTsKICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHVybDsKIApAQCAt
MTUzLDEyICsxNDUsNyBAQCBVUkwgQWRDbGlja0F0dHJpYnV0aW9uOjpyZWZlcnJlcigpIGNvbnN0
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBVUkwoKTsKIAotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImh0dHBzOi8vIik7
Ci0gICAgYnVpbGRlci5hcHBlbmQobV9kZXN0aW5hdGlvbi5yZWdpc3RyYWJsZURvbWFpbi5zdHJp
bmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLQotICAgIFVSTCB1cmwgeyBVUkwoKSwg
YnVpbGRlci50b1N0cmluZygpIH07CisgICAgVVJMIHVybCB7IFVSTCgpLCBtYWtlU3RyaW5nKCJo
dHRwczovLyIsIG1fZGVzdGluYXRpb24ucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksICcvJykg
fTsKICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHVybDsKICAgICAKQEAg
LTE3MiwxNCArMTU5LDkgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyhj
bwogICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Y29udmVyc2lvbj0iKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiZjYW1wYWlnbj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NhbXBh
aWduLmlkKTsKLSAgICBpZiAoYmFzZVVSTC5oYXNRdWVyeSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcmJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJhc2VVUkwucXVlcnkoKSk7Ci0g
ICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCI/Y29udmVyc2lvbj0iLCBtX2NvbnZlcnNpb24udmFs
dWUoKS5kYXRhLCAiJmNhbXBhaWduPSIsIG1fY2FtcGFpZ24uaWQpOworICAgIGlmIChiYXNlVVJM
Lmhhc1F1ZXJ5KCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcmJywgYmFzZVVSTC5xdWVyeSgp
KTsKICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKQEAg
LTE5OCwyNiArMTgwLDE2IEBAIGJvb2wgQWRDbGlja0F0dHJpYnV0aW9uOjp3YXNDb252ZXJzaW9u
U2UKIFN0cmluZyBBZENsaWNrQXR0cmlidXRpb246OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTb3VyY2U6
ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc291cmNlLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmlu
ZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuRGVzdGluYXRpb246ICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKG1fZGVzdGluYXRpb24ucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5DYW1wYWlnbiBJRDogIik7Ci0gICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV9jYW1wYWlnbi5pZCk7CisgICAgYnVpbGRlci5hcHBlbmQoIlNv
dXJjZTogIiwgbV9zb3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksICJcbkRlc3RpbmF0
aW9uOiAiLCBtX2Rlc3RpbmF0aW9uLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAiXG5DYW1w
YWlnbiBJRDogIiwgbV9jYW1wYWlnbi5pZCk7CiAgICAgaWYgKG1fY29udmVyc2lvbikgewotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQ29udmVyc2lvbiBkYXRhOiAiKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5Db252ZXJzaW9uIHByaW9yaXR5OiAiKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJzaW9uLnZhbHVlKCkucHJpb3JpdHkp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQ29udmVyc2lvbiBlYXJsaWVzdCB0
aW1lIHRvIHNlbmQ6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5Db252ZXJzaW9uIGRh
dGE6ICIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICJcbkNvbnZlcnNpb24gcHJpb3JpdHk6
ICIsIG1fY29udmVyc2lvbi52YWx1ZSgpLnByaW9yaXR5LCAiXG5Db252ZXJzaW9uIGVhcmxpZXN0
IHRpbWUgdG8gc2VuZDogIik7CiAgICAgICAgIGlmICghbV9lYXJsaWVzdFRpbWVUb1NlbmQpCiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIk5vdCBzZXQiKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSAqbV9lYXJsaWVzdFRpbWVU
b1NlbmQgLSBXYWxsVGltZTo6bm93KCk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgoc2Vj
b25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNVbnRpbFNlbmQgPD0gNDhfaCkgPyAiV2l0
aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4IGhvdXJzIik7CiAgICAgICAgIH0KLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbkNvbnZlcnNpb24gcmVxdWVzdCBzZW50OiAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoKHdhc0NvbnZlcnNpb25TZW50KCkgPyAidHJ1ZSIg
OiAiZmFsc2UiKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkNvbnZlcnNpb24gcmVxdWVz
dCBzZW50OiAiLCAod2FzQ29udmVyc2lvblNlbnQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbk5vIGNvbnZlcnNpb24g
ZGF0YS4iKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDI1Mzk2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIxLDE0ICs0MjEsMTEgQEAgc3RhdGljIGJvb2wgaGFzSGFkUmVj
ZW50VXNlckludGVyYWN0aW9uKAogU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3Ry
aW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJSZWdpc3RyYWJsZSBkb21haW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCByZWdpc3RyYWJsZURv
bWFpbi5zdHJpbmcoKSwgJ1xuJyk7CiAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0
aW9uKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nLCAiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAgIGlmIChoYXNI
YWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vj
b25kc1NpbmNlRXBvY2goKSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0aGlu
IDI0IGhvdXJzIik7CiAgICAgZWxzZQpAQCAtNDYwLDEwICs0NTcsNyBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAi
aXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVu
dFJlc291cmNlIiwgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3Zl
ZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZGF0YVJlY29yZHNSZW1vdmVkKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnXG4nLCAiICAgIGRh
dGFSZWNvcmRzUmVtb3ZlZDogIiwgZGF0YVJlY29yZHNSZW1vdmVkLCAnXG4nKTsKIAogI2lmIEVO
QUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAiZm9u
dHNGYWlsZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCk7CkBAIC00NzMsOCArNDY3LDcgQEAg
U3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKAogICAgIGFwcGVuZFNjcmVl
bkFQSU9wdGlvblNldChidWlsZGVyLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgYXBw
ZW5kSGFzaFNldChidWlsZGVyLCAiY2FudmFzVGV4dFdyaXR0ZW4iLCBjYW52YXNBY3Rpdml0eVJl
Y29yZC50ZXh0V3JpdHRlbik7CiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiY2FudmFzUmVh
ZERhdGEiLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJcblxuIik7CiAjZW5kaWYKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0
eS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUludGVncml0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxNyArMjEyLDEyIEBAIFN0
cmluZyBpbnRlZ3JpdHlNaXNtYXRjaERlc2NyaXB0aW9uKGNvbnMKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIi4gRmFpbGVk
IGludGVncml0eSBtZXRhZGF0YSBjaGVjay4gIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoIkNvbnRl
bnQgbGVuZ3RoOiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi4gRmFpbGVkIGludGVncml0eSBtZXRhZGF0YSBj
aGVjay4gQ29udGVudCBsZW5ndGg6ICIpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9
IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobm8g
Y29udGVudCkiKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBjb250ZW50IGxlbmd0
aDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIocmVzb3VyY2UucmVzcG9uc2UoKS5leHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIiwgRXhwZWN0ZWQgbWV0
YWRhdGE6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGludGVncml0eU1ldGFkYXRhKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBjb250ZW50IGxlbmd0aDogIiwgcmVzb3VyY2UucmVz
cG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSwgIiwgRXhwZWN0ZWQgbWV0YWRhdGE6ICIs
IGludGVncml0eU1ldGFkYXRhKTsKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAko
cmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6OnJvb3RNYXJnaW4oCiAgICAgUGh5c2ljYWxCb3hTaWRlIHNpZGVzWzRd
ID0geyBQaHlzaWNhbEJveFNpZGU6OlRvcCwgUGh5c2ljYWxCb3hTaWRlOjpSaWdodCwgUGh5c2lj
YWxCb3hTaWRlOjpCb3R0b20sIFBoeXNpY2FsQm94U2lkZTo6TGVmdCB9OwogICAgIGZvciAoYXV0
byBzaWRlIDogc2lkZXMpIHsKICAgICAgICAgYXV0byYgbGVuZ3RoID0gbV9yb290TWFyZ2luLmF0
KHNpZGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihsZW5ndGguaW50VmFs
dWUoKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGxlbmd0aC5pbnRWYWx1ZSgpKTsK
ICAgICAgICAgaWYgKGxlbmd0aC50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCclJyk7CiAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsMTQgKzc1LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudAog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByb3RvY29sLCAiZmlsZSIpKQogICAgICAg
ICByZXR1cm4gImZpbGVfXzAiX3M7CiAgICAgCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHByb3RvY29sKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKHBvcnQudmFsdWVPcigwKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2VwYXJhdG9yQ2hhcmFj
dGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2VwYXJhdG9yQ2hhcmFj
dGVyLCBwb3J0LnZhbHVlT3IoMCkpOwogfQogCiBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHJldmlzaW9uIDI1Mzk2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0
Qnl0ZU51bWJlcihzaXplX3QgbnUKICAgICBpZiAobnVtYmVyID49IDEwNDg1NzYpCiAgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChudW1iZXIgLyAx
MDQ4NTc2LiwgMiksICIgTUIiKTsKICAgICBpZiAobnVtYmVyID49IDEwMjQpCi0gICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChudW1iZXIgLyAxMDI0
LCAxKSwgIiBrQiIpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkV2lkdGgobnVtYmVyIC8gMTAyNC4sIDEpLCAiIGtCIik7CiAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKG51bWJlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAkocmV2aXNpb24gMjUz
OTY0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZz
ZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4LDggQEAgc3RhdGljIFN0cmluZyBz
bmFwT2Zmc2V0c1RvU3RyaW5nKGNvbnN0IAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7Ci0gICAgZm9yIChhdXRvJiBvZmZzZXQg
OiBzbmFwT2Zmc2V0cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIo
b2Zmc2V0LnRvRmxvYXQoKSwgMSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
fQorICAgIGZvciAoYXV0byYgb2Zmc2V0IDogc25hcE9mZnNldHMpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChvZmZzZXQudG9GbG9hdCgpLCAxKSwg
JyAnKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CkBAIC05MCwxMyArODgsOCBAQCBzdGF0aWMgU3RyaW5nIHNuYXBPZmZzZXRSYW5n
ZXNUb1N0cmluZyhjCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiWyAiKTsKLSAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzKSB7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRX
aWR0aE51bWJlcihyYW5nZS5zdGFydC50b0Zsb2F0KCksIDEpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRXaWR0aE51bWJl
cihyYW5nZS5lbmQudG9GbG9hdCgpLCAxKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIpICIpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzKQorICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyYW5nZS5zdGFy
dC50b0Zsb2F0KCksIDEpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmFuZ2Uu
ZW5kLnRvRmxvYXQoKSwgMSksICIpICIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTEwNCwxMCArOTcsMTAgQEAgc3RhdGlj
IFN0cmluZyBzbmFwT2Zmc2V0UmFuZ2VzVG9TdHJpbmcoYwogc3RhdGljIFN0cmluZyBzbmFwUG9y
dE9yQXJlYVRvU3RyaW5nKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInt7IiwKLSAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qu
eCgpLCAxKSwgIiwgIiwKLSAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qu
eSgpLCAxKSwgIn0geyIsCi0gICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0
LndpZHRoKCksIDEpLCAiLCAiLAotICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgo
cmVjdC5oZWlnaHQoKSwgMSksICJ9fSIpOworICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgocmVjdC54KCkudG9Eb3VibGUoKSwgMSksICIsICIsCisgICAgICAgIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRXaWR0aChyZWN0LnkoKS50b0RvdWJsZSgpLCAxKSwgIn0geyIsCisgICAgICAg
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0LndpZHRoKCkudG9Eb3VibGUoKSwgMSks
ICIsICIsCisgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0LmhlaWdodCgp
LnRvRG91YmxlKCksIDEpLCAifX0iKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWNpbWFsLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVjaW1hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjUsMTAgKzEwMjUsOCBAQCBT
dHJpbmcgRGVjaW1hbDo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGRpZ2l0c1tpXSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYWRqdXN0ZWRFeHBv
bmVudCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWRqdXN0ZWRFeHBvbmVudCA8IDAg
PyAiZSIgOiAiZSsiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFkanVzdGVk
RXhwb25lbnQpOwotICAgICAgICB9CisgICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50KQorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWRqdXN0ZWRFeHBvbmVudCA8IDAgPyAiZSIgOiAiZSsi
LCBhZGp1c3RlZEV4cG9uZW50KTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJ
KHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDIxICszNDAsMTUgQEAgU3RyaW5nIENvbG9y
Ojpjc3NUZXh0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgicmdiKCIpOwogCi0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4ocmVkKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
YnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVkKCkpLCAiLCAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihncmVlbigpKSwgIiwgIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oYmx1ZSgpKSk7CiAKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihncmVlbigpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotCi0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oYmx1ZSgpKSk7CiAgICAgaWYgKGNvbG9ySGFzQWxwaGEpIHsKICAgICAgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNzZXJpYWxpemluZy1jc3MtdmFsdWVzCi0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgaW50IGFscGhhID0gdGhp
cy0+YWxwaGEoKTsKICAgICAgICAgZmxvYXQgcm91bmRlZCA9IHJvdW5kKGFscGhhICogMTAwIC8g
MjU1LjBmKSAvIDEwMDsKICAgICAgICAgaWYgKHJvdW5kKHJvdW5kZWQgKiAyNTUpICE9IGFscGhh
KQogICAgICAgICAgICAgcm91bmRlZCA9IHJvdW5kKGFscGhhICogMTAwMCAvIDI1NS4wZikgLyAx
MDAwOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJvdW5kZWQp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHJvdW5kZWQpKTsKICAgICB9CiAgICAgICAgIAogICAgIGJ1aWxkZXIuYXBwZW5kKCcp
Jyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE3ICs1
NiwxMSBAQCBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBXVEY6OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCi0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihyZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlZCgpKSwgJyAn
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGdyZWVuKCkpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oYmx1ZSgpKSk7CiAKLSAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKGdyZWVuKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Cisg
ICAgaWYgKCFXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYWxwaGEoKSwgMS4wZikpCisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIgLyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGFs
cGhhKCkpKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoYmx1ZSgp
KTsKLSAgICBpZiAoIVdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBoYSgpLCAxLjBmKSkgewot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAvICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGFscGhhKCkpOwotICAgIH0KICAgICBidWlsZGVyLmFw
cGVuZCgnKScpOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc3LDExICs1NzcsNyBAQCBGbG9hdFJl
Y3QgR3JhcGhpY3NMYXllcjo6YWRqdXN0Q292ZXJhZ2VSCiBTdHJpbmcgR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQog
ewogICAgIC8vIHwgaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXIgaW4gQ1NTLCBz
byB0aGlzIGNhbiBuZXZlciBjb25mbGljdCB3aXRoIGEga2V5ZnJhbWUgaWRlbnRpZmllci4KLSAg
ICBTdHJpbmdCdWlsZGVyIGlkOwotICAgIGlkLmFwcGVuZExpdGVyYWwoIi18dHJhbnNpdGlvbiIp
OwotICAgIGlkLmFwcGVuZE51bWJlcihzdGF0aWNfY2FzdDxpbnQ+KHByb3BlcnR5KSk7Ci0gICAg
aWQuYXBwZW5kKCctJyk7Ci0gICAgcmV0dXJuIGlkLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoIi18dHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PGludD4ocHJvcGVydHkpLCAnLScp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1Rp
bWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2NSwxMiArNzY1LDcgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6
OmNyZQogICAgIGxheWVyLT5zZXRFZGdlQW50aWFsaWFzaW5nTWFzaygwKTsKICAgICBsYXllci0+
c2V0T3BhcXVlKG1fdGlsZXNBcmVPcGFxdWUpOwogCi0gICAgU3RyaW5nQnVpbGRlciBuYW1lQnVp
bGRlcjsKLSAgICBuYW1lQnVpbGRlci5hcHBlbmQoInRpbGUgYXQgIik7Ci0gICAgbmFtZUJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKHRpbGVSZWN0LmxvY2F0aW9uKCkueCgpKTsKLSAgICBuYW1lQnVpbGRl
ci5hcHBlbmQoJywnKTsKLSAgICBuYW1lQnVpbGRlci5hcHBlbmROdW1iZXIodGlsZVJlY3QubG9j
YXRpb24oKS55KCkpOwotICAgIGxheWVyLT5zZXROYW1lKG5hbWVCdWlsZGVyLnRvU3RyaW5nKCkp
OworICAgIGxheWVyLT5zZXROYW1lKG1ha2VTdHJpbmcoInRpbGUgYXQgIiwgdGlsZVJlY3QubG9j
YXRpb24oKS54KCksICcsJywgdGlsZVJlY3QubG9jYXRpb24oKS55KCkpKTsKIAogICAgIGZsb2F0
IHRlbXBvcmFyeVNjYWxlRmFjdG9yID0gb3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKG1fdGlsZUNhY2hlTGF5ZXIp
OwogICAgIG1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IgfD0gdGVtcG9yYXJ5U2Nh
bGVGYWN0b3IgIT0gMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHJldmlz
aW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDEyICs2NDYsNyBA
QCBTdHJpbmcgYnVpbGRWYXJpYXRpb25TZXR0aW5ncyhGVF9GYWNlIGZhCiAgICAgZm9yIChhdXRv
JiB2YXJpYXRpb24gOiB2YXJpYXRpb25zVG9CZUFwcGxpZWQpIHsKICAgICAgICAgaWYgKCFidWls
ZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlvbi5rZXlbMF0pOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZCh2YXJpYXRpb24ua2V5WzFdKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtl
eVsyXSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlvbi5rZXlbM10pOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnPScpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKHZhcmlhdGlvbi52YWx1ZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlh
dGlvbi5rZXlbMF0sIHZhcmlhdGlvbi5rZXlbMV0sIHZhcmlhdGlvbi5rZXlbMl0sIHZhcmlhdGlv
bi5rZXlbM10sICc9JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih2YXJpYXRpb24u
dmFsdWUpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDcgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2s6OmdlbmVyYXRlTQogICAgICAgICBtX2J1ZmZlci5hcHBlbmQoIkF1
ZGlvIFRyYWNrIElEOiAiKTsKICAgICBlbHNlCiAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgiVmlk
ZW8gVHJhY2sgSUQ6ICIpOwotICAgIG1fYnVmZmVyLmFwcGVuZCh0cmFjay5pZCgpKTsKLSAgICBt
X2J1ZmZlci5hcHBlbmQoIiBDb3VudGVyOiAiKTsKLSAgICBtX2J1ZmZlci5hcHBlbmROdW1iZXIo
KyttX2NvdW50ZXIpOwotICAgIG1fYnVmZmVyLmFwcGVuZCgiXHJcbi0tLS0tLS0tLVxyXG4iKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQodHJhY2suaWQoKSwgIiBDb3VudGVyOiAiLCArK21fY291bnRl
ciwgIlxyXG4tLS0tLS0tLS1cclxuIik7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlh
UmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0
cmluZyhTdHJpCiAKICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgIEFTU0VSVChwcm94eVNl
cnZlci5wb3J0KCkgIT0gLTEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHByb3h5U2VydmVy
LnBvcnQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQocHJveHlTZXJ2ZXIucG9ydCgpKTsKIH0KIAog
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFZlY3RvcjxQcm94eVNlcnZlcj4mIHByb3h5U2VydmVycykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJ
KHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY4LDE3ICs3NjgsMTAgQEAgc3RhdGljIFN0
cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiYm9keSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgneycpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0VGFn
TmFtZShuKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2hpbGQg
Iik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihuLT5jb21wdXRlTm9kZUlu
ZGV4KCkpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyIpOwotICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0VGFnTmFtZShuKSk7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG4t
PmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3snLCBnZXRU
YWdOYW1lKG4pLCAnfScpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoImNoaWxkICIsIG4tPmNvbXB1dGVOb2RlSW5kZXgoKSwgIiB7IiwgZ2V0VGFnTmFt
ZShuKSwgJ30nKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiZG9jdW1lbnQiKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVt
YmVyTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0
LmgJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
aWYgKGJ1aWxkZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsKIAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1i
ZXItPnZhbHVlKCkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihudW1iZXItPnZhbHVlKCkpKTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE2
ICs1NywxMiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRGbGFnKFN0cmluZ0J1aWxkZXImIHN0CiAKIHN0
YXRpYyB2b2lkIGFwcGVuZE51bWJlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBmbG9h
dCBudW1iZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihudW1iZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihudW1iZXIpLCAnICcp
OwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRQb2ludChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LngoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJyAnKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBv
aW50LnkoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LngoKSksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihwb2ludC55KCkpLCAnICcpOwogfQog
CiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFy
Z2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw0
MCArNTksMTYgQEAgU3RyaW5nIGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29uc3QgUGF0aCYgcAogICAg
ICAgICBwYXRoLmFwcGx5KFsmYnVpbGRlcl0gKGNvbnN0IFBhdGhFbGVtZW50JiBlbGVtZW50KSB7
CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewogICAgICAgICAgICAgY2FzZSBQ
YXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ00nKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50
LnBvaW50c1swXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueSgp
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnTScsIGVsZW1lbnQucG9pbnRzWzBd
LngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0wnKTsKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnTCcsIGVsZW1lbnQucG9pbnRzWzBdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6
VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnUScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9p
bnRzWzBdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMV0ueCgpKTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1EnLCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxlbWVudC5wb2ludHNbMF0ueSgp
LCAnLCcsIGVsZW1lbnQucG9pbnRzWzFdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1sxXS55KCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6
VHlwZTo6QWRkQ3VydmVUb1BvaW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdD
Jyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNb
MF0ueCgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
ZWxlbWVudC5wb2ludHNbMV0ueSgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LCcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRz
WzJdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1syXS55KCkpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdDJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAn
ICcsIGVsZW1lbnQucG9pbnRzWzBdLnkoKSwgJywnLCBlbGVtZW50LnBvaW50c1sxXS54KCksICcg
JywgZWxlbWVudC5wb2ludHNbMV0ueSgpLCAnLCcsIGVsZW1lbnQucG9pbnRzWzJdLngoKSwgJyAn
LCBlbGVtZW50LnBvaW50c1syXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9p
bnRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5o
CShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDkgKzkzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYg
KGJ1aWxkZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
IAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC0+
eCgpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LT55KCkpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihwb2ludC0+eCgp
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LT55KCkpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAkocmV2aXNpb24gMjUzOTY0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
OSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3Ro
KCkgJiYgYnVpbGRlcltidWlsZGVyLmxlbmd0aCgpIC0gMV0gIT0gJygnKQogICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihudW1iZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKG51bWJlcikpOwogICAgICAgICBhcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcnMoYnVpbGRlciwgbnVtYmVycy4uLik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDI1
Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDExIEBAIHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxGbG9hdFBvaW50PiB7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgRmxvYXRQb2ludCYgdHlwZSkKICAgICB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLngo
KSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS55KCkpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgICAgIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS54KCkpLAorICAgICAgICAgICAgJyAnLAor
ICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLnkoKSkKKyAg
ICAgICAgKTsKICAgICB9CiB9OwogCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8RmxvYXRSZWN0PiB7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmcoY29uc3QgRmxvYXRSZWN0JiB0eXBlKQogICAgIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUu
eCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLnkoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS53
aWR0aCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAg
ICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUueCgpKSwKKyAgICAgICAg
ICAgICcgJywKKyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlw
ZS55KCkpLAorICAgICAgICAgICAgJyAnLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0eXBlLndpZHRoKCkpLAorICAgICAgICAgICAgJyAnLAorICAgICAgICAg
ICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLmhlaWdodCgpKQorICAgICAg
ICApOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4NiwxNSArMTY4NiwxNyBAQCBFeGNlcHRpb25PcjxTdHJp
bmc+IEludGVybmFsczo6ZHVtcE1hcmtlCiAgICAgU3RyaW5nQnVpbGRlciByZWN0U3RyaW5nOwog
ICAgIHJlY3RTdHJpbmcuYXBwZW5kTGl0ZXJhbCgibWFya2VyIHJlY3RzOiAiKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0cykgewotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZCgn
KCcpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJlY3Qu
eCgpKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBy
ZWN0U3RyaW5nLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJlY3QueSgpKTsKLSAgICAgICAg
cmVjdFN0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIHJlY3RTdHJpbmcu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihyZWN0LmhlaWdodCgpKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRMaXRl
cmFsKCIpICIpOworICAgICAgICByZWN0U3RyaW5nLmFwcGVuZCgKKyAgICAgICAgICAgICcoJywK
KyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC54KCkpLAor
ICAgICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24ocmVjdC55KCkpLAorICAgICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC53aWR0aCgpKSwKKyAgICAgICAgICAgICIsICIs
CisgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlY3QuaGVpZ2h0
KCkpLAorICAgICAgICAgICAgIikgIgorICAgICAgICApOwogICAgIH0KICAgICByZXR1cm4gcmVj
dFN0cmluZy50b1N0cmluZygpOwogfQpAQCAtMjIyOCw5ICsyMjMwLDcgQEAgU3RyaW5nIEludGVy
bmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKUwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Z1bmN0
aW9uRXhlY3V0YWJsZSgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWN1
dGFibGUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUp
OwogICAgICAgICBTdHJpbmcgaW5mZXJyZWROYW1lID0gZnVuY0V4ZWN1dGFibGUtPmVjbWFOYW1l
KCkuc3RyaW5nKCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBcIiIp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKGluZmVycmVkTmFtZSk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQoJyInKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiZnVuY3Rpb24gXCIiLCBpbmZlcnJl
ZE5hbWUsICciJyk7CiAgICAgfSBlbHNlIGlmIChleGVjdXRhYmxlLT5pc0V2YWxFeGVjdXRhYmxl
KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJldmFsIik7CiAgICAgZWxzZSBpZiAo
ZXhlY3V0YWJsZS0+aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpKQpAQCAtMjI0MCwxNSArMjI0
MCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKEpTQzo6SlMKICAgICBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiB7ICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc3RhcnRMaW5lKTsKLSAgICByZXN1
bHQuYXBwZW5kKCc6Jyk7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihzdGFydENvbHVtbik7Ci0g
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAtICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIo
ZW5kTGluZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnOicpOwotICAgIHJlc3VsdC5hcHBlbmROdW1i
ZXIoZW5kQ29sdW1uKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIH0iKTsKKyAgICByZXN1
bHQuYXBwZW5kKCIgeyAiLCBzdGFydExpbmUsICc6Jywgc3RhcnRDb2x1bW4sICIgLSAiLCBlbmRM
aW5lLCAnOicsIGVuZENvbHVtbiwgIiB9Iik7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiB9CkBAIC0zNDM4LDI0ICszNDMwLDE0IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJu
YWxzOjpnZXRDdXJyZW4KICAgICBDdXJzb3IgY3Vyc29yID0gZG9jdW1lbnQtPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLmN1cnJlbnRNb3VzZUN1cnNvcigpOwogCiAgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInR5cGU9Iik7Ci0gICAgcmVzdWx0LmFw
cGVuZChjdXJzb3JUeXBlVG9TdHJpbmcoY3Vyc29yLnR5cGUoKSkpOwotICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCIgaG90U3BvdD0iKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKGN1cnNvci5o
b3RTcG90KCkueCgpKTsKLSAgICByZXN1bHQuYXBwZW5kKCcsJyk7Ci0gICAgcmVzdWx0LmFwcGVu
ZE51bWJlcihjdXJzb3IuaG90U3BvdCgpLnkoKSk7CisgICAgcmVzdWx0LmFwcGVuZCgidHlwZT0i
LCBjdXJzb3JUeXBlVG9TdHJpbmcoY3Vyc29yLnR5cGUoKSksICIgaG90U3BvdD0iLCBjdXJzb3Iu
aG90U3BvdCgpLngoKSwgJywnLCBjdXJzb3IuaG90U3BvdCgpLnkoKSk7CiAgICAgaWYgKGN1cnNv
ci5pbWFnZSgpKSB7CiAgICAgICAgIEZsb2F0U2l6ZSBzaXplID0gY3Vyc29yLmltYWdlKCktPnNp
emUoKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBpbWFnZT0iKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHNpemUud2lkdGgoKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoJ3gnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKHNpemUuaGVpZ2h0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIgaW1hZ2U9Iiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihzaXplLndpZHRoKCkpLCAneCcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oc2l6ZS5oZWlnaHQoKSkpOwogICAgIH0KICNpZiBF
TkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQotICAgIGlmIChjdXJzb3IuaW1hZ2VTY2FsZUZhY3Rv
cigpICE9IDEpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBzY2FsZT0iKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGN1cnNvci5pbWFnZVNjYWxl
RmFjdG9yKCksIDgpOwotICAgIH0KKyAgICBpZiAoY3Vyc29yLmltYWdlU2NhbGVGYWN0b3IoKSAh
PSAxKQorICAgICAgICByZXN1bHQuYXBwZW5kKCIgc2NhbGU9IiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpLCA4KSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAjZWxzZQpAQCAtNDM1Myw3ICs0MzM1LDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kT2Zmc2V0cyhTdHJpbmdCdWlsZGVyJgogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBqdXN0U3RhcnRpbmcgPSBmYWxzZTsKIAotICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihjb29yZGluYXRlLnRvVW5zaWduZWQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGNvb3JkaW5hdGUudG9VbnNpZ25lZCgpKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgfSIpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJs
YXlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
Z2VPdmVybGF5Q2xpZW50LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwx
NyArODgsNyBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZGlkTW92ZVRvUGFnCiAKIHZv
aWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiTW9j
a1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCBkaXJ0eVJlY3QgKCIpOwotICAgIG1lc3NhZ2Uu
YXBwZW5kTnVtYmVyKGRpcnR5UmVjdC54KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3QueSgpKTsKLSAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZGlydHlS
ZWN0LndpZHRoKCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBtZXNz
YWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3QuaGVpZ2h0KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5k
TGl0ZXJhbCgiKSIpOwotICAgIG92ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpE
ZWJ1ZywgbWVzc2FnZS50b1N0cmluZygpKTsKKyAgICBvdmVybGF5LnBhZ2UoKS0+bWFpbkZyYW1l
KCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1l
c3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJh
d1JlY3QgZGlydHlSZWN0ICgiLCBkaXJ0eVJlY3QueCgpLCAiLCAiLCBkaXJ0eVJlY3QueSgpLCAi
LCAiLCBkaXJ0eVJlY3Qud2lkdGgoKSwgIiwgIiwgZGlydHlSZWN0LmhlaWdodCgpLCAiKSIpKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIApA
QCAtMTE3LDE0ICsxMDcsNyBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3Qo
UGFnCiAKIGJvb2wgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5
JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIFN0cmlu
Z0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIk1vY2tQYWdlT3Zl
cmxheUNsaWVudDo6bW91c2VFdmVudCBsb2NhdGlvbiAoIik7Ci0gICAgbWVzc2FnZS5hcHBlbmRO
dW1iZXIoZXZlbnQucG9zaXRpb24oKS54KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihldmVudC5wb3NpdGlvbigpLnkoKSk7Ci0g
ICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIpIik7Ci0gICAgb3ZlcmxheS5wYWdlKCktPm1haW5G
cmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3RyaW5nKCkpOwotCisgICAgb3Zlcmxh
eS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtYWtlU3RyaW5nKCJNb2NrUGFn
ZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZlbnQgbG9jYXRpb24gKCIsIGV2ZW50LnBvc2l0aW9uKCku
eCgpLCAiLCAiLCBldmVudC5wb3NpdGlvbigpLnkoKSwgIikiKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAkocmV2aXNpb24gMjUzOTY0KQor
KysgU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDEzICs3OCw3IEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHkKIHZv
aWQgWE1MRXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5n
LCBUZXh0UG9zaXRpb24gcG9zaXRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgLy8g
PHR5cGVTdHJpbmc+IG9uIGxpbmUgPGxpbmVOdW1iZXI+IGF0IGNvbHVtbiA8Y29sdW1uTnVtYmVy
PjogPG1lc3NhZ2U+Ci0gICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZCh0eXBlU3RyaW5nKTsKLSAg
ICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiIG9uIGxpbmUgIik7Ci0gICAgbV9lcnJv
ck1lc3NhZ2VzLmFwcGVuZE51bWJlcihwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSk7Ci0g
ICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIiBhdCBjb2x1bW4gIik7Ci0gICAgbV9l
cnJvck1lc3NhZ2VzLmFwcGVuZE51bWJlcihwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgp
KTsKLSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBtX2Vycm9y
TWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlw
ZVN0cmluZywgIiBvbiBsaW5lICIsIHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0
IGNvbHVtbiAiLCBwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdl
KTsKIH0KIAogc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJv
ckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEyLTMxICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVu
Y3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBlbmQgY2FuIGlzIGNhcGFibGUg
b2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6dG9TdHJpbmcgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OmR1bXBDb250ZW50c1RvRmlsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5
Ojphc0pTT04gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R2FtZXBhZERhdGE6OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJ1aWxkSFRUUEhlYWRl
cnMpOgorCiAyMDE5LTEyLTMxICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHJlbW90ZSBtZWRpYSByZXNvdXJjZSBsb2FkZXIgZm9yIHRoZSBHUFUgcHJvY2Vz
cwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Fk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjAsMTAgKzI2MCw3IEBAIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlcjo6dG9TdHJpbmcKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVW5jb252
ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOlxuIik7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IldlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIoKyt1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0aW9uLnRvU3RyaW5n
KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
ICIsICsrdW5jb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciwgJ1xuJywgYXR0cmlidXRpb24udG9T
dHJpbmcoKSk7CiB9CiAKICAgICB1bnNpZ25lZCBjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciA9
IDA7CkBAIC0yNzQsMTAgKzI3MSw3IEBAIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6
dG9TdHJpbmcKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ29udmVydGVkIEFk
IENsaWNrIEF0dHJpYnV0aW9uczpcbiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJXZWJDb3Jl
OjpBZENsaWNrQXR0cmlidXRpb24gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKCsr
Y29udmVydGVkQXR0cmlidXRpb25OdW1iZXIgKyB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVy
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGF0dHJpYnV0aW9uLnRvU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViQ29y
ZTo6QWRDbGlja0F0dHJpYnV0aW9uICIsICsrY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIgKyB1
bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyLCAnXG4nLCBhdHRyaWJ1dGlvbi50b1N0cmluZygp
KTsKICAgICB9CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihidWlsZGVyLnRvU3RyaW5nKCkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTk4LDcgKzExOTgsNyBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkTGlz
dChjb25zdCBXVEY6Okl0ZXJhCiAgICAgZm9yIChhdXRvIGRvbWFpbklEIDogdmFsdWVzKSB7CiAg
ICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGRvbWFpbklEKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluSUQpOwogICAgIH0KICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwogfQpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgSGFzaE1hcDx1bnNpZ25l
ZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogICAgIGZvciAoYXV0byB2YWx1ZSA6IHJlc3VsdHMu
a2V5cygpKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwogICAgIH0KIAogICAgIGF1
dG8gZG9tYWluSURzT2ZJbnRlcmVzdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTI1MDYsMTQg
KzI1MDYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJSZWdpc3Ry
YWJsZSBkb21haW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbik7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJhYmxlIGRvbWFpbjog
IiwgZG9tYWluLCAnXG4nKTsKICAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgbV9nZXRSZXNvdXJjZURh
dGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbklu
ZGV4KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7CisgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJcbiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAo
aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29uZHMobV9nZXRSZXNvdXJjZURhdGFCeURv
bWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lSW5kZXgpKSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0aGluIDI0
IGhvdXJzIik7CiAgICAgZWxzZQpAQCAtMjU0NiwxMCArMjU0Myw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJp
c1ByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1l
bnQuZ2V0Q29sdW1uSW50KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChJ
c1ZlcnlQcmV2YWxlbnRJbmRleCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDogIik7Ci0gICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQu
Z2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7Ci0gICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxuICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDog
IiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KERh
dGFSZWNvcmRzUmVtb3ZlZEluZGV4KSwgJ1xuJyk7CiAKICAgICByZXNldFN0YXRlbWVudChtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZp
c2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSwxNiArNTc5LDE2IEBAIHZvaWQgQ2Fj
aGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRl
cmFsKCJ7fVxuXSxcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXCJ0
b3RhbHNcIjoge1xuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJcImNh
cGFjaXR5XCI6ICIpOwotICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTnVtYmVyKGNhcGFjaXR5
KTsKKyAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZChjYXBhY2l0eSk7CiAgICAgICAgICAgICBl
cGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZExpdGVyYWwoIlwiY291bnRcIjogIik7Ci0gICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmROdW1i
ZXIodG90YWxzLmNvdW50KTsKKyAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZCh0b3RhbHMuY291
bnQpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAgICAg
ICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJcImJvZHlTaXplXCI6ICIpOwotICAgICAgICAg
ICAgZXBpbG9ndWUuYXBwZW5kTnVtYmVyKHRvdGFscy5ib2R5U2l6ZSk7CisgICAgICAgICAgICBl
cGlsb2d1ZS5hcHBlbmQodG90YWxzLmJvZHlTaXplKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFw
cGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgi
XCJhdmVyYWdlV29ydGhcIjogIik7Ci0gICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcih0b3RhbHMuY291bnQgPyB0b3RhbHMud29ydGggLyB0b3RhbHMuY291bnQg
OiAwKTsKKyAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRvdGFscy5jb3VudCA/IHRvdGFscy53b3J0aCAvIHRvdGFscy5jb3VudCA6IDAp
KTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlxuIik7CiAgICAgICAgICAg
ICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJ9XG59XG4iKTsKICAgICAgICAgICAgIGF1dG8gd3Jp
dGVEYXRhID0gZXBpbG9ndWUudG9TdHJpbmcoKS51dGY4KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiwxNiArMjE2LDE2
IEBAIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCAKICAgICBqc29uLmFw
cGVuZFF1b3RlZEpTT05TdHJpbmcobV9rZXkuaGFzaEFzU3RyaW5nKCkpOwogICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImJvZHlTaXplXCI6
ICIpOwotICAgIGpzb24uYXBwZW5kTnVtYmVyKGluZm8uYm9keVNpemUpOworICAgIGpzb24uYXBw
ZW5kKGluZm8uYm9keVNpemUpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAg
anNvbi5hcHBlbmRMaXRlcmFsKCJcIndvcnRoXCI6ICIpOwotICAgIGpzb24uYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIoaW5mby53b3J0aCk7CisgICAganNvbi5hcHBlbmQoRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihpbmZvLndvcnRoKSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFs
KCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicGFydGl0aW9uXCI6ICIpOwogICAg
IGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5wYXJ0aXRpb24oKSk7CiAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwidGltZXN0
YW1wXCI6ICIpOwotICAgIGpzb24uYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV90aW1lU3Rh
bXAuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSk7CisgICAganNvbi5hcHBlbmQo
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3RpbWVTdGFtcC5zZWNvbmRzU2luY2VF
cG9jaCgpLm1pbGxpc2Vjb25kcygpKSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsK
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiVVJMXCI6ICIpOwogICAgIGpzb24uYXBwZW5kUXVv
dGVkSlNPTlN0cmluZyhtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKQEAgLTIzNCw3ICsyMzQs
NyBAQCB2b2lkIEVudHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwgCiAgICAganNvbi5h
cHBlbmRRdW90ZWRKU09OU3RyaW5nKGluZm8uYm9keUhhc2gpOwogICAgIGpzb24uYXBwZW5kTGl0
ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImJvZHlTaGFyZUNvdW50XCI6
ICIpOwotICAgIGpzb24uYXBwZW5kTnVtYmVyKGluZm8uYm9keVNoYXJlQ291bnQpOworICAgIGpz
b24uYXBwZW5kKGluZm8uYm9keVNoYXJlQ291bnQpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
LFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImhlYWRlcnNcIjoge1xuIik7CiAgICAg
Ym9vbCBmaXJzdEhlYWRlciA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MiwxMSArMTcyLDkg
QEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRDdXJyZW50TWVtbwogICAgIGlmICghbWVt
b3J5U3RhdHMudmFsdWVzLmlzRW1wdHkoKSkgewogICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZChz
ZXBhcmF0b3IpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lbW9yeVN0YXRzLnZh
bHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgc3RhdFN0cmluZy5hcHBlbmQoJ1xuJyk7
Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZChzZXBhcmF0b3IpOwotICAgICAgICAgICAg
c3RhdFN0cmluZy5hcHBlbmQobWVtb3J5U3RhdHMua2V5c1tpXSk7CisgICAgICAgICAgICBzdGF0
U3RyaW5nLmFwcGVuZCgnXG4nLCBzZXBhcmF0b3IsIG1lbW9yeVN0YXRzLmtleXNbaV0pOwogICAg
ICAgICAgICAgYXBwZW5kU3BhY2VzKHN0YXRTdHJpbmcsIDM1IC0gbWVtb3J5U3RhdHMua2V5c1tp
XS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZE51bWJlcihtZW1vcnlT
dGF0cy52YWx1ZXNbaV0pOworICAgICAgICAgICAgc3RhdFN0cmluZy5hcHBlbmQobWVtb3J5U3Rh
dHMudmFsdWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KICAgICBzdGF0U3RyaW5nLmFwcGVuZCgn
XG4nKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEu
Y3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dh
bWVwYWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsMjUgKzkxLDE0IEBAIFN0cmluZyBH
YW1lcGFkRGF0YTo6bG9nZ2luZ1N0cmluZygpIGNvbnMKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2F4aXNWYWx1ZXMuc2l6ZSgpKTsK
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBheGVzLCAiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihtX2J1dHRvblZhbHVlcy5zaXplKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIGJ1dHRvbnNcbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F4aXNWYWx1
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQXhpcyAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihtX2F4aXNWYWx1ZXNbaV0pOwotICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChtX2F4aXNW
YWx1ZXMuc2l6ZSgpLCAiIGF4ZXMsICIsIG1fYnV0dG9uVmFsdWVzLnNpemUoKSwgIiBidXR0b25z
XG4iKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9heGlzVmFsdWVzLnNpemUoKTsg
KytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEF4aXMgIiwgaSwgIjogIiwgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2F4aXNWYWx1ZXNbaV0pKTsKIAogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9idXR0b25WYWx1ZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQnV0dG9uICIp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKG1fYnV0dG9uVmFsdWVzW2ldKTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2J1dHRvblZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBC
dXR0b24gIiwgaSwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2J1dHRv
blZhbHVlc1tpXSkpOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAkocmV2
aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDEzICs0ODUsNyBAQCBjb25zdCBjaGFyKiBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTCiAKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IldlYkJhY2tGb3J3YXJkTGlzdCAweCIpOwogICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBidWlsZGVyKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiAtICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cmllcy5zaXpl
KCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGVudHJpZXMsIGhhcyBjdXJyZW50IGlu
ZGV4ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fY3VycmVudEluZGV4ID8gIllFUyIgOiAiTk8i
KTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0gICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIobV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5kZXggOiAwKTsKLSAgICBidWlsZGVy
LmFwcGVuZCgnKScpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgLSAiLCBtX2VudHJpZXMuc2l6ZSgp
LCAiIGVudHJpZXMsIGhhcyBjdXJyZW50IGluZGV4ICIsIG1fY3VycmVudEluZGV4ID8gIllFUyIg
OiAiTk8iLCAiICgiLCBtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRleCA6IDAsICcpJyk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk0LDE3ICsxOTQsOSBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkSFRUUEhlYWRlcnMo
Y29uc3QgUmVzCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIg
aGVhZGVyOwotICAgIGhlYWRlci5hcHBlbmRMaXRlcmFsKCJIVFRQICIpOwotICAgIGhlYWRlci5h
cHBlbmROdW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgaGVhZGVyLmFwcGVu
ZCgnICcpOwotICAgIGhlYWRlci5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7Ci0g
ICAgaGVhZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBmb3IgKGF1dG8mIGZpZWxkIDogcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkcygpKSB7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoZmllbGQua2V5KTsK
LSAgICAgICAgaGVhZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBl
bmQoZmllbGQudmFsdWUpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKCdcbicpOwotICAgIH0KKyAg
ICBoZWFkZXIuYXBwZW5kKCJIVFRQICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICcgJywg
cmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJ1xuJyk7CisgICAgZm9yIChhdXRvJiBmaWVsZCA6
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkKKyAgICAgICAgaGVhZGVyLmFwcGVuZChmaWVs
ZC5rZXksICI6ICIsIGZpZWxkLnZhbHVlLCAnXG4nKTsKIAogICAgIC8vIElmIHRoZSBjb250ZW50
IGlzIGVuY29kZWQgKG1vc3QgbGlrZWx5IGNvbXByZXNzZWQpLCB0aGVuIGRvbid0IHNlbmQgaXRz
IGxlbmd0aCB0byB0aGUgcGx1Z2luLAogICAgIC8vIHdoaWNoIGlzIG9ubHkgaW50ZXJlc3RlZCBp
biB0aGUgZGVjb2RlZCBsZW5ndGgsIG5vdCB5ZXQga25vd24gYXQgdGhlIG1vbWVudC4KSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1Mzk2NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUz
IEBACisyMDE5LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cg
dGhhdCBhcHBlbmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpkdW1w
UGF0aCk6CisgICAgICAgIChXVFI6OnJhbmdlVG9TdHIpOgorICAgICAgICAoV1RSOjpzdHlsZURl
Y1RvU3RyKToKKyAgICAgICAgKFdUUjo6c2VjdXJpdHlPcmlnaW5Ub1N0cik6CisgICAgICAgIChX
VFI6OmZyYW1lVG9TdHIpOgorICAgICAgICAoV1RSOjpkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBMb2FkRXZlbnQpOgorICAgICAg
ICAoV1RSOjpkdW1wUmVxdWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAg
ICAgICAgKFdUUjo6ZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQp
OgorICAgICAgICAoV1RSOjpkdW1wRXJyb3JEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dCk6CisgICAgICAgIChXVFI6OmR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUp
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZl
UmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmFyVGV4dCk6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdFByb21wdCk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2Vl
ZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3Vs
ZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxk
RW5kRWRpdGluZyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5z
ZXJ0Tm9kZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0
VGV4dCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRGVsZXRlUmFu
Z2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEFwcGx5
U3R5bGUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEJlZ2luRWRpdGlu
Zyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRW5kRWRpdGluZyk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlKToKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVk
U3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpzdHJpbmdBdE9mZnNldCk6CisKIDIwMTkt
MTItMzEgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV0gT3BlbkpQRUcgbWlzc2luZyBpbiBpbnN0YWxsIGRlcGVuZGVuY2llcyBz
Y3JpcHQuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjUzOTY0
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE0ICs4OSw5IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHN0YXRpYyBsb25nIHNlcXVlbmNlSUQgPSAwOwogICAgICAgICBTdHJpbmdC
dWlsZGVyIG1lc3NhZ2VCdWlsZGVyOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJ7XCJpZFwiOiIpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIoKytz
ZXF1ZW5jZUlEKTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0
aG9kXCI6XCJBdXRvbWF0aW9uLiIpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29t
bWFuZCk7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBtZXNz
YWdlQnVpbGRlci5hcHBlbmQoIntcImlkXCI6IiwgKytzZXF1ZW5jZUlELCAiLFwibWV0aG9kXCI6
XCJBdXRvbWF0aW9uLiIsIGNvbW1hbmQsICciJyk7CiAgICAgICAgIGlmICghcGFyYW1ldGVycy5p
c051bGwoKSkgewotICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwi
cGFyYW1zXCI6Iik7Ci0gICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQocGFyYW1ldGVy
cyk7CisgICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoIixcInBhcmFtc1wiOiIsIHBh
cmFtZXRlcnMpOwogICAgICAgICB9CiAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnfScp
OwogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKCJTZW5kTWVzc2FnZVRvQmFja2Vu
ZCIsIGdfdmFyaWFudF9uZXcoIih0dHMpIiwgbV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0LmlkLCBt
ZXNzYWdlQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1Mzk2NCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUs
MTggKzc1LDEzIEBAIHZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMobndfY28KICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3JlcXVlc3RSZXNwb25zZU1hcC5jb250YWlucyhw
YXRoKSwgIlRoaXMgSFRUUFNlcnZlciBkb2VzIG5vdCBrbm93IGhvdyB0byByZXNwb25kIHRvIGEg
cmVxdWVzdCBmb3IgJXMiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAKICAgICAgICAg
YXV0byByZXNwb25zZSA9IG1fcmVxdWVzdFJlc3BvbnNlTWFwLmdldChwYXRoKTsKKyAgICAKICAg
ICAgICAgU3RyaW5nQnVpbGRlciByZXNwb25zZUJ1aWxkZXI7Ci0gICAgICAgIHJlc3BvbnNlQnVp
bGRlci5hcHBlbmQoIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogIik7Ci0gICAg
ICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2UuYm9keS5sZW5ndGgoKSk7
Ci0gICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKLSAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogcmVzcG9uc2UuaGVhZGVyRmllbGRzKSB7Ci0gICAgICAgICAgICByZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKHBhaXIua2V5KTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoIjogIik7Ci0gICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHBhaXIudmFs
dWUpOwotICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwotICAgICAg
ICB9Ci0gICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKLSAgICAgICAgcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZChyZXNwb25zZS5ib2R5KTsKKyAgICAgICAgcmVzcG9uc2VCdWls
ZGVyLmFwcGVuZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAiLCByZXNwb25z
ZS5ib2R5Lmxlbmd0aCgpLCAiXHJcbiIpOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiByZXNw
b25zZS5oZWFkZXJGaWVsZHMpCisgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHBh
aXIua2V5LCAiOiAiLCBwYWlyLnZhbHVlLCAiXHJcbiIpOworICAgICAgICByZXNwb25zZUJ1aWxk
ZXIuYXBwZW5kKCJcclxuIiwgcmVzcG9uc2UuYm9keSk7CisgICAgCiAgICAgICAgIGF1dG8gcmVz
cG9uc2VCb2R5QW5kSGVhZGVyID0gcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nKCkucmVsZWFzZUlt
cGwoKTsKICAgICAgICAgYXV0byByZXNwb25zZURhdGEgPSBhZG9wdE5TKGRpc3BhdGNoX2RhdGFf
Y3JlYXRlKHJlc3BvbnNlQm9keUFuZEhlYWRlci0+Y2hhcmFjdGVyczgoKSwgcmVzcG9uc2VCb2R5
QW5kSGVhZGVyLT5sZW5ndGgoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAg
ICAgICAgICh2b2lkKXJlc3BvbnNlQm9keUFuZEhlYWRlcjsKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYs
MTAgKzk2LDggQEAgc3RhdGljIFdURjo6U3RyaW5nIGR1bXBQYXRoKEpTR2xvYmFsQ29udAogICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0
b1dURlN0cmluZyhub2RlTmFtZSkpOwogCi0gICAgaWYgKHBhcmVudE5vZGUgJiYgSlNWYWx1ZUlz
T2JqZWN0KGNvbnRleHQsIHBhcmVudE5vZGUpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiID4gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGR1bXBQYXRo
KGNvbnRleHQsIChKU09iamVjdFJlZilwYXJlbnROb2RlKSk7Ci0gICAgfQorICAgIGlmIChwYXJl
bnROb2RlICYmIEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBwYXJlbnROb2RlKSkKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiA+ICIsIGR1bXBQYXRoKGNvbnRleHQsIChKU09iamVjdFJl
ZilwYXJlbnROb2RlKSk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwog
fQpAQCAtMTQyLDE2ICsxNDAsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgcmFuZ2VUb1N0cihXS0J1
bmRsZVBhCiAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gcHJvcGVydHlWYWx1ZUludChjb250ZXh0LCBy
YW5nZU9iamVjdCwgInN0YXJ0T2Zmc2V0Iik7CiAgICAgaW50IGVuZE9mZnNldCA9IHByb3BlcnR5
VmFsdWVJbnQoY29udGV4dCwgcmFuZ2VPYmplY3QsICJlbmRPZmZzZXQiKTsKIAotICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
InJhbmdlIGZyb20gIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoc3RhcnRPZmZz
ZXQpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGR1bXBQYXRoKGNvbnRleHQsIHN0YXJ0Tm9kZU9iamVjdCkpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHRvICIpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTnVtYmVyKGVuZE9mZnNldCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgb2YgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZHVtcFBhdGgoY29udGV4dCwgZW5k
Tm9kZU9iamVjdCkpOwotICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoInJhbmdlIGZyb20gIiwgc3RhcnRPZmZzZXQsICIgb2YgIiwgZHVt
cFBhdGgoY29udGV4dCwgc3RhcnROb2RlT2JqZWN0KSwgIiB0byAiLCBlbmRPZmZzZXQsICIgb2Yg
IiwgZHVtcFBhdGgoY29udGV4dCwgZW5kTm9kZU9iamVjdCkpOwogfQogCiBzdGF0aWMgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IE5hdmlnYXRpb25UeXBlVG9TdHJpbmcoV0tGcmFtZU5hdmlnYXRp
b25UeXBlIHR5cGUpCkBAIC0xNzgsMjMgKzE2NywxMiBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgc3R5
bGVEZWNUb1N0cihXS0J1bmRsCiAgICAgLy8gRHVtcFJlbmRlclRyZWUgY2FsbHMgLVtET01DU1NT
dHlsZURlY2xhcmF0aW9uIGRlc2NyaXB0aW9uXSwgd2hpY2gganVzdCBkdW1wcyBjbGFzcyBuYW1l
IGFuZCBvYmplY3QgYWRkcmVzcy4KICAgICAvLyBObyBleGlzdGluZyB0ZXN0cyBhY3R1YWxseSBo
aXQgdGhpcyBjb2RlIHBhdGggYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBiZWNhdXNlIFdl
YkNvcmUgZG9lc24ndCBjYWxsCiAgICAgLy8gdGhlIGVkaXRpbmcgY2xpZW50IGlmIHRoZSBzdHls
aW5nIG9wZXJhdGlvbiBzb3VyY2UgaXMgQ29tbWFuZEZyb21ET00gb3IgQ29tbWFuZEZyb21ET01X
aXRoVXNlckludGVyZmFjZS4KLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBBRERS
RVNTPiIpOwotICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJu
ICI8RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBBRERSRVNTPiJfczsKIH0KIAogc3RhdGljIFdURjo6
U3RyaW5nIHNlY3VyaXR5T3JpZ2luVG9TdHIoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCiB7
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCd7Jyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRXSyhX
S1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKSk7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3Ry
aW5nKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KG9yaWdpbikpKSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TnVtYmVyKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KG9yaWdpbikpOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCd9Jyk7Ci0KLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5
T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKSwgIiwgIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhX
S1NlY3VyaXR5T3JpZ2luQ29weUhvc3Qob3JpZ2luKSkpLCAiLCAiLCBXS1NlY3VyaXR5T3JpZ2lu
R2V0UG9ydChvcmlnaW4pLCAnfScpOwogfQogCiBzdGF0aWMgV1RGOjpTdHJpbmcgZnJhbWVUb1N0
cihXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQpAQCAtMjAyLDE4ICsxODAsMTMgQEAgc3RhdGljIFdU
Rjo6U3RyaW5nIGZyYW1lVG9TdHIoV0tCdW5kbGVGcgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBuYW1lID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weU5hbWUoZnJhbWUpKTsKICAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgaWYgKFdLQnVuZGxlRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpIHsKLSAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQoKSkp
IHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibWFpbiBmcmFtZSBc
IiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkp
OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgfSBlbHNl
CisgICAgICAgIGlmICghV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKQorICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIm1haW4gZnJhbWUgXCIiLCB0b1dURlN0cmluZyhuYW1lKSwg
JyInKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJtYWluIGZyYW1lIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFXS1N0cmluZ0lz
RW1wdHkobmFtZS5nZXQoKSkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiZnJhbWUgXCIiKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RG
U3RyaW5nKG5hbWUpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCciJyk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQoKSkpCisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZnJhbWUgXCIiLCB0b1dURlN0cmluZyhuYW1l
KSwgJyInKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJmcmFtZSAoYW5vbnltb3VzKSIpOwogICAgIH0KQEAgLTQ1NCw5ICs0MjcsNyBAQCBz
dGF0aWMgdm9pZCBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIm1h
aW4gZnJhbWUgXCIiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmco
bmFtZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgibWFpbiBmcmFtZSBcIiIsIHRvV1RGU3RyaW5nKG5hbWUpLCAnIicp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjUsMTggKzQzNiwxNCBAQCBzdGF0aWMg
dm9pZCBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZyYW1lIFwiIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCciJyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImZyYW1lIFwiIiwgdG9XVEZT
dHJpbmcobmFtZSksICciJyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR1bXBMb2FkRXZlbnQoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgY29uc3QgY2hhciogZXZlbnROYW1lKQogewogICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChmcmFtZSwgc3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgLSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChldmVudE5hbWUpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIgLSAiLCBldmVudE5hbWUsICdcbicpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTQ4NiwxMSAr
NDUzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXF1ZXN0RGVzY3JpcHRpbwogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiBmaXJzdFBhcnR5ID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5
Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdCkpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBodHRwTWV0aG9kID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5SFRUUE1ldGhvZChyZXF1
ZXN0KSk7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjxOU1VSTFJlcXVlc3Qg
VVJMICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQodXJsLmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIG1haW4g
ZG9jdW1lbnQgVVJMICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZv
clRlc3RSZXN1bHQoZmlyc3RQYXJ0eS5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCBodHRwIG1ldGhvZCAiKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiPE5T
VVJMUmVxdWVzdCBVUkwgIiwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0KCkpLCAi
LCBtYWluIGRvY3VtZW50IFVSTCAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZpcnN0UGFy
dHkuZ2V0KCkpLCAiLCBodHRwIG1ldGhvZCAiKTsKIAogICAgIGlmIChXS1N0cmluZ0lzRW1wdHko
aHR0cE1ldGhvZC5nZXQoKSkpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
KG5vbmUpIik7CkBAIC01MDcsMTYgKzQ3MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHVtcFJl
c3BvbnNlRGVzY3JpcHRpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKG51
bGwpIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI8TlNVUkxSZXNwb25zZSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRo
U3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybC5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCBodHRwIHN0YXR1cyBjb2RlICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTnVtYmVyKFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShyZXNwb25zZSkpOwotCi0gICAg
aWYgKHNob3VsZER1bXBSZXNwb25zZUhlYWRlcnMpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihJ
bmplY3RlZEJ1bmRsZVBhZ2U6OnJlc3BvbnNlSGVhZGVyQ291bnQocmVzcG9uc2UpKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgaGVhZGVycyIpOwotICAgIH0KKyAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiPE5TVVJMUmVzcG9uc2UgIiwgcGF0aFN1aXRhYmxlRm9yVGVz
dFJlc3VsdCh1cmwuZ2V0KCkpLCAiLCBodHRwIHN0YXR1cyBjb2RlICIsIFdLVVJMUmVzcG9uc2VI
VFRQU3RhdHVzQ29kZShyZXNwb25zZSkpOworCisgICAgaWYgKHNob3VsZER1bXBSZXNwb25zZUhl
YWRlcnMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIEluamVjdGVkQnVuZGxl
UGFnZTo6cmVzcG9uc2VIZWFkZXJDb3VudChyZXNwb25zZSksICIgaGVhZGVycyIpOworCiAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJz4nKTsKIH0KIApAQCAtNTQzLDE3ICs1MDEsMTIgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGR1bXBFcnJvckRlc2NyaXB0aW9uUwogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKGVycm9yRG9tYWluLmdldCgpLCAiV2ViS2l0UG9saWN5RXJyb3Ii
KSkKICAgICAgICAgZXJyb3JEb21haW4gPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJXZWJLaXRFcnJvckRvbWFpbiIpKTsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiPE5TRXJyb3IgZG9tYWluICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRv
V1RGU3RyaW5nKGVycm9yRG9tYWluKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsIGNvZGUgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZXJyb3JDb2RlKTsK
KyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiPE5TRXJyb3IgZG9tYWluICIsIHRvV1RGU3RyaW5n
KGVycm9yRG9tYWluKSwgIiwgY29kZSAiLCBlcnJvckNvZGUpOwogCiAgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CiAg
ICAgaWYgKHVybC5nZXQoKSkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXJs
U3RyaW5nID0gYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdldCgpKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBmYWlsaW5nIFVSTCBcIiIpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
ZmFpbGluZyBVUkwgXCIiLCB0b1dURlN0cmluZyh1cmxTdHJpbmcpLCAnIicpOwogICAgIH0KIAog
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCc+Jyk7CkBAIC03NzcsMTUgKzczMCw5IEBAIHN0YXRp
YyB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKFdLQnUKIAogICAgIGlmIChzaG91bGRJbmNs
dWRlRnJhbWVOYW1lKSB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBuYW1lID0g
YWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weU5hbWUoZnJhbWUpKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJmcmFtZSAnIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHRvV1RGU3RyaW5nKG5hbWUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCInICIpOwotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInNjcm9s
bGVkIHRvICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHgpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoeSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJmcmFtZSAnIiwgdG9XVEZTdHJpbmcobmFtZSksICInICIpOworICAgIH0KKyAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgic2Nyb2xsZWQgdG8gIiwgeCwgJywnLCB5LCAnXG4nKTsKIH0K
IAogc3RhdGljIHZvaWQgZHVtcERlc2NlbmRhbnRGcmFtZVNjcm9sbFBvc2l0aW9ucyhXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpAQCAtMTA1Miw5
ICs5OTksNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllCiAKICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUsIHN0cmluZ0J1aWxkZXIpOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAi
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVy
bCkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIFxuIik7CisgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogIiwgcGF0
aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpLCAiIFxuIik7CiAgICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCkBAIC0xMDgzLDE0ICsx
MDI4LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaERvY3VtZQogICAgICAg
ICBkdW1wTG9hZEV2ZW50KGZyYW1lLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsK
IAogICAgIHVuc2lnbmVkIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyA9IFdLQnVuZGxlRnJhbWVH
ZXRQZW5kaW5nVW5sb2FkQ291bnQoZnJhbWUpOwotICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRF
dmVudHMpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChmcmFtZVRvU3RyKGZyYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gaGFzICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZE51bWJlcihwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBvbnVubG9hZCBoYW5kbGVyKHMpXG4iKTsKLSAgICAgICAgaW5q
ZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0K
KyAgICBpZiAocGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzKQorICAgICAgICBpbmplY3RlZEJ1bmRs
ZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoZnJhbWVUb1N0cihmcmFtZSksICIgLSBoYXMgIiwgcGVu
ZGluZ0ZyYW1lVW5sb2FkRXZlbnRzLCAiIG9udW5sb2FkIGhhbmRsZXIocylcbiIpKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUpCkBAIC0xMjQwLDE0ICsxMTc5LDExIEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlUmVzcG8KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWltZVR5cGVTdHJpbmcgPSBhZG9wdFdLKFdLVVJMUmVzcG9uc2VDb3B5TUlNRVR5cGUocmVz
cG9uc2UpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBoYXMgTUlNRSB0eXBlICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHRvV1RGU3RyaW5nKG1pbWVUeXBlU3RyaW5nKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQodG9XVEZTdHJpbmcodXJsU3RyaW5nKSwgIiBoYXMgTUlNRSB0eXBlICIsIHRvV1RGU3RyaW5n
KG1pbWVUeXBlU3RyaW5nKSk7CiAKICAgICBTdHJpbmcgcGxhdGZvcm1NaW1lVHlwZSA9IHBsYXRm
b3JtUmVzcG9uc2VNaW1lVHlwZShyZXNwb25zZSk7CiAgICAgaWYgKCFwbGF0Zm9ybU1pbWVUeXBl
LmlzRW1wdHkoKSAmJiBwbGF0Zm9ybU1pbWVUeXBlICE9IHRvV1RGU3RyaW5nKG1pbWVUeXBlU3Ry
aW5nKSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBidXQgcGxhdGZv
cm0gcmVzcG9uc2UgaGFzICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwbGF0Zm9y
bU1pbWVUeXBlKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiBidXQgcGxhdGZvcm0g
cmVzcG9uc2UgaGFzICIsIHBsYXRmb3JtTWltZVR5cGUpOwogICAgIH0KIAogICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCdcbicpOwpAQCAtMTMwMSwxMCArMTIzNyw3IEBAIGJvb2wgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpzaG91bGRDYWNoZVJlc3AKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLnRlc3RS
dW5uZXIoKS0+c2hvdWxkRHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTnVtYmVyKGlkZW50aWZpZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIC0gd2lsbENhY2hlUmVzcG9uc2U6IGNhbGxlZFxuIik7Ci0gICAgaW5qZWN0ZWRCdW5k
bGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQobWFrZVN0cmluZyhpZGVudGlmaWVyLCAiIC0gd2lsbENhY2hlUmVzcG9u
c2U6IGNhbGxlZFxuIikpOwogCiAgICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlIGNh
Y2hlIHRoZSByZXNwb25zZS4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNDMsMTEgKzEyNzYsNyBA
QCBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQCiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIFxuIik7CiAgICAgICAgIGR1
bXBSZXF1ZXN0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdCwgc3RyaW5n
QnVpbGRlcik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGlzIG1haW4g
ZnJhbWUgLSAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoV0tCdW5kbGVGcmFtZUlz
TWFpbkZyYW1lKGZyYW1lKSA/ICJ5ZXMiIDogIm5vIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtICIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25HZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzKG5hdmlnYXRpb25BY3Rpb24pID8gInllcyIgOiAibm8iKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgaXMgbWFpbiBmcmFtZSAtICIsIFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkg
PyAieWVzIiA6ICJubyIsICIgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gIiwgV0tCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uR2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMcyhuYXZpZ2F0aW9uQWN0
aW9uKSA/ICJ5ZXMiIDogIm5vIiwgJ1xuJyk7CiAgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1
dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKICAgICB9CiAKQEAgLTEzNjYsMTQgKzEy
OTUsMTEgQEAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUAogICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRXSyhXS1VSTENvcHlT
dHJpbmcodXJsLmdldCgpKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3Ry
aW5nKHVybFN0cmluZykpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiB3aXRoIG5hdmlnYXRpb24gdHlwZSBcJyIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRv
V1RGU3RyaW5nKE5hdmlnYXRpb25UeXBlVG9TdHJpbmcoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
R2V0TmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbikpKSk7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJcJyIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgd2l0aCBu
YXZpZ2F0aW9uIHR5cGUgXCciLCB0b1dURlN0cmluZyhOYXZpZ2F0aW9uVHlwZVRvU3RyaW5nKFdL
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldE5hdmlnYXRpb25UeXBlKG5hdmlnYXRpb25BY3Rpb24p
KSksICJcJyIpOwogICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZj4gaGl0
VGVzdFJlc3VsdFJlZiA9IGFkb3B0V0soV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uQ29weUhpdFRl
c3RSZXN1bHQobmF2aWdhdGlvbkFjdGlvbikpOwogICAgIGlmIChoaXRUZXN0UmVzdWx0UmVmKSB7
CiAgICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlTm9kZUhhbmRsZVJlZj4gbm9kZUhhbmRsZVJl
ZiA9IGFkb3B0V0soV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUoaGl0VGVzdFJl
c3VsdFJlZi5nZXQoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBv
cmlnaW5hdGluZyBmcm9tICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChkdW1wUGF0
aChtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIG5vZGVIYW5kbGVSZWYuZ2V0KCkpKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiBvcmlnaW5hdGluZyBmcm9tICIsIGR1bXBQYXRoKG1fcGFn
ZSwgbV93b3JsZC5nZXQoKSwgbm9kZUhhbmRsZVJlZi5nZXQoKSkpOwogICAgIH0KIAogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwpAQCAtMTM5MywxMiArMTMxOSw4IEBAIFdLQnVuZGxl
UGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVAKIHsKICAgICBhdXRvJiBpbmplY3RlZEJ1
bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5k
bGUudGVzdFJ1bm5lcigpICYmIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+aXNQb2xpY3lE
ZWxlZ2F0ZUVuYWJsZWQoKSAmJiBXS1VSTFJlc3BvbnNlSXNBdHRhY2htZW50KHJlc3BvbnNlKSkg
ewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBmaWxlbmFtZSA9IGFkb3B0V0soV0tVUkxSZXNwb25zZUNvcHlTdWdn
ZXN0ZWRGaWxlbmFtZShyZXNwb25zZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIlBvbGljeSBkZWxlZ2F0ZTogcmVzb3VyY2UgaXMgYW4gYXR0YWNobWVudCwgc3VnZ2Vz
dGVkIGZpbGUgbmFtZSBcJyIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0
cmluZyhmaWxlbmFtZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlwn
XG4iKTsKLSAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1dFRleHQoc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLm91dHB1dFRleHQobWFrZVN0cmluZygiUG9saWN5IGRlbGVnYXRlOiByZXNvdXJjZSBpcyBh
biBhdHRhY2htZW50LCBzdWdnZXN0ZWQgZmlsZSBuYW1lIFwnIiwgdG9XVEZTdHJpbmcoZmlsZW5h
bWUpLCAiXCdcbiIpKTsKICAgICB9CiAKICAgICByZXR1cm4gV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uUGFzc1Rocm91Z2g7CkBAIC0xNDgzLDEzICsxNDA1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OndpbGxBZGRNZXNzYWdlVAogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09OU09MRSBNRVNTQUdFOiAiKTsK
LSAgICBpZiAobGluZU51bWJlcikgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoImxpbmUgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1i
ZXIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgfQot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcpOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdcbicpOworICAgIGlmIChsaW5lTnVtYmVyKQorICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgibGluZSAiLCBsaW5lTnVtYmVyLCAiOiAiKTsKKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtZXNzYWdlU3RyaW5nLCAnXG4nKTsKIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS5k
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSkKICAgICAgICAgaW5qZWN0ZWRCdW5kbGUuZHVtcFRv
U3RkRXJyKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CkBAIC0xNTA2LDExICsxNDI0LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxTZXRTdGF0dXNiYQogICAgIGlmICghaW5qZWN0
ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0
U3RhdHVzVGV4dDoiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhzdGF0
dXNiYXJUZXh0KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVj
dGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiVUkgREVMRUdBVEUgU1RBVFVTIENBTExC
QUNLOiBzZXRTdGF0dXNUZXh0OiIsIHRvV1RGU3RyaW5nKHN0YXR1c2JhclRleHQpLCAnXG4nKSk7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdL
U3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpCkBAIC0xNTE5LDExICsxNDMzLDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaQogICAgIGlmICghaW5q
ZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJBTEVSVDogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2Fn
ZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRs
ZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkFMRVJUOiAiLCB0b1dURlN0cmluZyhtZXNzYWdlKSwg
J1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRD
b25maXJtKFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpCkBAIC0xNTMyLDIy
ICsxNDQyLDEyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmkKICAg
ICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiQ09ORklSTTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcobWVzc2FnZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGlu
amVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBp
bmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkNPTkZJUk06ICIsIHRvV1RGU3Ry
aW5nKG1lc3NhZ2UpLCAnXG4nKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxs
UnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZh
dWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUFJPTVBUOiAiKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGRlZmF1bHQgdGV4dDogIik7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSk7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJ1xuJyk7Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1dFRl
eHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJQUk9NUFQ6ICIsIHRvV1RGU3RyaW5nKG1lc3Nh
Z2UpLCAiLCBkZWZhdWx0IHRleHQ6ICIsIHRvV1RGU3RyaW5nKGRlZmF1bHRWYWx1ZSksICdcbicp
KTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0
ZXNOZWVkZWQpCkBAIC0xNTYwLDEzICsxNDYwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZFJlYWNoQXBwbGljYQogICAgICAgICAvLyBhYm92ZSBvciBiZWxvdyBhIHRocmVzaG9sZC4K
ICAgICAgICAgaW50NjRfdCB0cnVuY2F0ZWRTcGFjZU5lZWRlZCA9ICh0b3RhbEJ5dGVzTmVlZGVk
IC8gMTAwMDApICogMTAwMDA7CiAKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIEFQUExJ
Q0FUSU9OIENBQ0hFIENBTExCQUNLOiBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YUZvclNlY3VyaXR5T3JpZ2luOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZWN1
cml0eU9yaWdpblRvU3RyKG9yaWdpbikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiB0b3RhbFNwYWNlTmVlZGVkOn4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIodHJ1bmNhdGVkU3BhY2VOZWVkZWQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VT
dHJpbmcoIlVJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBleGNlZWRlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOiIsIHNlY3VyaXR5T3Jp
Z2luVG9TdHIob3JpZ2luKSwgIiB0b3RhbFNwYWNlTmVlZGVkOn4iLCB0cnVuY2F0ZWRTcGFjZU5l
ZWRlZCwgJ1xuJykpOwogICAgIH0KIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVy
KCktPnNob3VsZERpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKSkKQEAg
LTE1NzksMTUgKzE0NzMsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBs
aWNhCiB1aW50NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEo
V0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tT
dHJpbmdSZWYgZGF0YWJhc2VEaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhQnl0ZXMs
IHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZUJ5dGVzLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlQnl0ZXMpCiB7CiAgICAgYXV0byYg
aW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKGlu
amVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkp
IHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNl
ZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjoiKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoc2VjdXJpdHlPcmlnaW5Ub1N0cihvcmlnaW4pKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZGF0YWJhc2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKHRvV1RGU3RyaW5nKGRhdGFiYXNlTmFtZSkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVz
dFJ1bm5lcigpLT5zaG91bGREdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxM
QkFDSzogZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Iiwgc2VjdXJpdHlP
cmlnaW5Ub1N0cihvcmlnaW4pLCAiIGRhdGFiYXNlOiIsIHRvV1RGU3RyaW5nKGRhdGFiYXNlTmFt
ZSksICdcbicpKTsKIAogICAgIHVpbnQ2NF90IGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAy
NDsKICAgICBkb3VibGUgdGVzdERlZmF1bHRRdW90YSA9IGluamVjdGVkQnVuZGxlLnRlc3RSdW5u
ZXIoKS0+ZGF0YWJhc2VEZWZhdWx0UXVvdGEoKTsKQEAgLTE2MDEsMTEgKzE0ODgsNyBAQCB1aW50
NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhCiAgICAgICAgIGlmIChkZWZhdWx0
UXVvdGEgPCBleHBlY3RlZFVzYWdlQnl0ZXMgJiYgZXhwZWN0ZWRVc2FnZUJ5dGVzIDw9IG1heFF1
b3RhKSB7CiAgICAgICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVkVXNhZ2VCeXRlczsKIAotICAg
ICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5j
cmVhc2VkIHF1b3RhIHRvICIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1i
ZXIobmV3UXVvdGEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKSk7CisgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmco
IlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gIiwgbmV3
UXVvdGEsICdcbicpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gbmV3UXVvdGE7CkBA
IC0xNjc0LDEzICsxNTU3LDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2lu
RWRpdAogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3Vs
ZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5k
bGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAo
aW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygp
KQorICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3Bh
Z2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVk
QnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE2OTAs
MTMgKzE1NjksOSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRW5kRWRpdGluCiAg
ICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVk
aXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTog
c2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0
VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRC
dW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6
IHNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxk
LmdldCgpLCByYW5nZSksICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0
UnVubmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xNzEyLDE3ICsxNTg3LDkg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydE5vZAogICAgICAgICAiV2Vi
Vmlld0luc2VydEFjdGlvbkRyb3BwZWQiLAogICAgIH07CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5k
bGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChkdW1wUGF0aChtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIG5v
ZGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcmVwbGFjaW5nRE9N
UmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdl
LCBtX3dvcmxkLmdldCgpLCByYW5nZVRvUmVwbGFjZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBnaXZlbkFjdGlvbjoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0pOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2Vy
dE5vZGU6IiwgZHVtcFBhdGgobV9wYWdlLCBtX3dvcmxkLmdldCgpLCBub2RlKSwgIiByZXBsYWNp
bmdET01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2VUb1Jl
cGxhY2UpLCAiIGdpdmVuQWN0aW9uOiIsIGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dLCAnXG4n
KSk7CisKICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxv
d0VkaXRpbmcoKTsKIH0KIApAQCAtMTczOCwxNyArMTYwNSw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpzaG91bGRJbnNlcnRUZXgKICAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9w
cGVkIiwKICAgICB9OwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hv
dWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBE
RUxFR0FURTogc2hvdWxkSW5zZXJ0VGV4dDoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQodG9XVEZTdHJpbmcodGV4dCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiByZXBsYWNpbmdET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
cmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBsYWNlKSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdpdmVuQWN0aW9uOiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmpl
Y3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisg
ICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxF
R0FURTogc2hvdWxkSW5zZXJ0VGV4dDoiLCB0b1dURlN0cmluZyh0ZXh0KSwgIiByZXBsYWNpbmdE
T01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2VUb1JlcGxh
Y2UpLCAiIGdpdmVuQWN0aW9uOiIsIGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dLCAnXG4nKSk7
CisKICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0Vk
aXRpbmcoKTsKIH0KIApAQCAtMTc1OCwxMyArMTYxNyw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpzaG91bGREZWxldGVSYW4KICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5p
bmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVz
dFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZToiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJh
bmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmpl
Y3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQor
ICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygi
RURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3Bh
Z2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVk
QnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE3ODMs
MTkgKzE2MzgsOSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQ2hhbmdlU2VsCiAg
ICAgICAgICJUUlVFIgogICAgIH07CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5l
cigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxk
ZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwg
ZnJvbVJhbmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHRvRE9N
UmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdl
LCBtX3dvcmxkLmdldCgpLCB0b1JhbmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIGFmZmluaXR5OiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhZmZp
bml0eXN0cmluZ1thZmZpbml0eV0pOyAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgc3RpbGxTZWxlY3Rpbmc6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGJv
b2xzdHJpbmdbc3RpbGxTZWxlY3RpbmddKTsgCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgZnJvbVJhbmdl
KSwgIiB0b0RPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCB0b1Jh
bmdlKSwgIiBhZmZpbml0eToiLCBhZmZpbml0eXN0cmluZ1thZmZpbml0eV0sICIgc3RpbGxTZWxl
Y3Rpbmc6IiwgYm9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10sICdcbicpKTsKKwogICAgIHJldHVy
biBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQog
CkBAIC0xODA1LDE1ICsxNjUwLDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEFw
cGx5U3R5bAogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEFwcGx5U3R5bGU6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHN0eWxlRGVjVG9TdHIoc3R5bGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgdG9FbGVtZW50c0luRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0
ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAg
ICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdB
VEU6IHNob3VsZEFwcGx5U3R5bGU6Iiwgc3R5bGVEZWNUb1N0cihzdHlsZSksICIgdG9FbGVtZW50
c0luRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSwg
J1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxk
QWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE4MjUsMTEgKzE2NjQsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkQmVnaW5FZGl0aW5nCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0
UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6Iik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSkp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVk
aXRpbmc6IiwgdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSksICdcbicpKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEVuZEVkaXRpbmcoV0tTdHJpbmdSZWYgbm90aWZpY2F0
aW9uTmFtZSkKQEAgLTE4NDAsMTEgKzE2NzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRW5kRWRpdGluZyhXCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOiIpOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtl
U3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzoiLCB0b1dURlN0
cmluZyhub3RpZmljYXRpb25OYW1lKSwgJ1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZTo6ZGlkQ2hhbmdlKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUpCkBAIC0xODU1LDEx
ICsxNjg2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZShXS1N0cgogICAg
IGlmICghaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxi
YWNrcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlOiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5n
KG5vdGlmaWNhdGlvbk5hbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAg
ICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Cisg
ICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlOiIsIHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpLCAnXG4n
KSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oV0tT
dHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSkKQEAgLTE4NzAsMTEgKzE2OTcsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0CiAgICAgaWYgKCFpbmplY3RlZEJ1bmRs
ZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0
aW9uTmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVk
QnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3Rl
ZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246IiwgdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSksICdcbicp
KTsKIH0KIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw3IEBAIFN0cmluZyBhdHRy
aWJ1dGVTZXRUb1N0cmluZyhBdGtBdHRyaWJ1dGUKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgZm9yIChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0
dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0
dHJpYnV0ZSogYXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRl
cy0+ZGF0YSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZS0+bmFtZSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0
ZS0+dmFsdWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGUtPm5hbWUsICc6Jywg
YXR0cmlidXRlLT52YWx1ZSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLT5uZXh0KQogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yKTsKICAgICB9CkBAIC01NjAsOCArNTU4LDcg
QEAgU3RyaW5nIGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNzaWJpbGl0eQogewogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKGVsZW1lbnQtPnJvbGUoKS0+
c3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5k
KGVsZW1lbnQtPnJvbGUoKS0+c3RyaW5nKCksICdcbicpOwogCiAgICAgLy8gRm9yIHRoZSBwYXJl
bnQgd2UgcHJpbnQgaXRzIHJvbGUgYW5kIGl0cyBuYW1lLCBpZiBhdmFpbGFibGUuCiAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJBWFBhcmVudDogIik7CkBAIC01NzAsOTMgKzU2Nyw0NSBAQCBT
dHJpbmcgYXR0cmlidXRlc09mRWxlbWVudChBY2Nlc3NpYmlsaXR5CiAgICAgaWYgKGF0a1BhcmVu
dCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChyb2xlVG9TdHJpbmcoYXRrUGFyZW50KSk7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIHBhcmVudE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1lKGF0a1Bh
cmVudCk7Ci0gICAgICAgIGlmIChwYXJlbnROYW1lICYmIHBhcmVudE5hbWVbMF0pIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHBhcmVudE5hbWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChwYXJlbnROYW1lICYm
IHBhcmVudE5hbWVbMF0pCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiAiLCBwYXJlbnRO
YW1lKTsKICAgICB9IGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCki
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQVhDaGlsZHJlbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+Y2hp
bGRyZW5Db3VudCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiQVhQb3NpdGlvbjogIHsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihlbGVtZW50LT54KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihlbGVtZW50LT55KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9XG4iKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQVhTaXplOiB7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
ZWxlbWVudC0+d2lkdGgoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KGVsZW1lbnQtPmhlaWdodCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyk7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgfVxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYQ2hpbGRyZW46ICIs
IGVsZW1lbnQtPmNoaWxkcmVuQ291bnQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFY
UG9zaXRpb246ICB7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+
eCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyksICIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24oZWxlbWVudC0+eSgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyksICIgfVxuIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIkFYU2l6ZTogeyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKGVsZW1lbnQtPndpZHRoKCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSwgIiwgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT5oZWlnaHQoKSwgNiwgS2VlcFRy
YWlsaW5nWmVyb3MpLCAiIH1cbiIpOwogCiAgICAgU3RyaW5nIHRpdGxlID0gZWxlbWVudC0+dGl0
bGUoKS0+c3RyaW5nKCk7CiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQodGl0bGUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQodGl0bGUsICdcbicpOwogICAgIH0KIAogICAgIFN0cmluZyBkZXNj
cmlwdGlvbiA9IGVsZW1lbnQtPmRlc2NyaXB0aW9uKCktPnN0cmluZygpOwotICAgIGlmICghZGVz
Y3JpcHRpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRlc2NyaXB0aW9u
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9Cisg
ICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRl
c2NyaXB0aW9uLnV0ZjgoKS5kYXRhKCksICdcbicpOwogCiAgICAgU3RyaW5nIHZhbHVlID0gZWxl
bWVudC0+c3RyaW5nVmFsdWUoKS0+c3RyaW5nKCk7Ci0gICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICB9Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYRm9jdXNhYmxl
OiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0ZvY3VzYWJsZSgpKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUsICdcbicpOwogCi0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJBWEZvY3VzZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQt
PmlzRm9jdXNlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiQVhTZWxlY3RhYmxlOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihlbGVtZW50LT5pc1NlbGVjdGFibGUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0K
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYU2VsZWN0ZWQ6ICIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzU2VsZWN0ZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYTXVsdGlTZWxlY3RhYmxlOiAi
KTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc011bHRpU2VsZWN0YWJsZSgp
KTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQVhFbmFibGVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0Vu
YWJsZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkFYRXhwYW5kZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1l
bnQtPmlzRXhwYW5kZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIkFYUmVxdWlyZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQtPmlzUmVxdWlyZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0K
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYQ2hlY2tlZDogIik7Ci0gICAgYnVpbGRlci5h
cHBlbmROdW1iZXIoZWxlbWVudC0+aXNDaGVja2VkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEZvY3VzYWJsZTogIiwgZWxlbWVudC0+aXNGb2N1
c2FibGUoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRm9jdXNlZDogIiwgZWxlbWVu
dC0+aXNGb2N1c2VkKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFNlbGVjdGFibGU6
ICIsIGVsZW1lbnQtPmlzU2VsZWN0YWJsZSgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
QVhTZWxlY3RlZDogIiwgZWxlbWVudC0+aXNTZWxlY3RlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiQVhNdWx0aVNlbGVjdGFibGU6ICIsIGVsZW1lbnQtPmlzTXVsdGlTZWxlY3RhYmxl
KCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEVuYWJsZWQ6ICIsIGVsZW1lbnQtPmlz
RW5hYmxlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhFeHBhbmRlZDogIiwgZWxl
bWVudC0+aXNFeHBhbmRlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhSZXF1aXJl
ZDogIiwgZWxlbWVudC0+aXNSZXF1aXJlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
QVhDaGVja2VkOiAiLCBlbGVtZW50LT5pc0NoZWNrZWQoKSwgJ1xuJyk7CiAKICAgICBTdHJpbmcg
dXJsID0gZWxlbWVudC0+dXJsKCktPnN0cmluZygpOwotICAgIGlmICghdXJsLmlzRW1wdHkoKSkg
ewotICAgICAgICBidWlsZGVyLmFwcGVuZCh1cmwpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICB9CisgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQorICAgICAgICBidWlsZGVyLmFw
cGVuZCh1cmwsICdcbicpOwogCiAgICAgLy8gV2UgYXBwZW5kIHRoZSBBVEsgc3BlY2lmaWMgYXR0
cmlidXRlcyBhcyBhIHNpbmdsZSBsaW5lIGF0IHRoZSBlbmQuCi0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJBWFBsYXRmb3JtQXR0cmlidXRlczogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZ2V0
QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKS5nZXQo
KSwgT2JqZWN0QXR0cmlidXRlVHlwZSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFBsYXRmb3Jt
QXR0cmlidXRlczogIiwgZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoZWxlbWVudC0+cGxhdGZv
cm1VSUVsZW1lbnQoKS5nZXQoKSwgT2JqZWN0QXR0cmlidXRlVHlwZSkpOwogCiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTY2NSwxMCArNjE0LDggQEAgc3RhdGljIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVTdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKIAotICAgIGZvciAoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGVsZW1lbnRzLmJlZ2luKCk7IGl0ICE9IGVsZW1lbnRzLmVuZCgp
OyArK2l0KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZXNPZkVsZW1lbnQoY29u
c3RfY2FzdDxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4oaXQtPmdldCgpKSkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuLS0tLS0tLS0tLS0tXG4iKTsKLSAgICB9CisgICAgZm9y
IChWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gZWxlbWVudHMuYmVnaW4oKTsgaXQgIT0gZWxlbWVudHMuZW5kKCk7ICsraXQpCisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZXNPZkVsZW1lbnQoY29uc3RfY2FzdDxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Kj4oaXQtPmdldCgpKSksICJcbi0tLS0tLS0tLS0tLVxuIik7CiAKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogfQpAQCAtMTcyMiw4ICsxNjY5LDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAog
ICAgIC8vIFRoZSBkZWZhdWx0IHRleHQgYXR0cmlidXRlcyBhcHBseSB0byB0aGUgZW50aXJlIGVs
ZW1lbnQuCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcblx0RGVmYXVsdCB0ZXh0IGF0dHJp
YnV0ZXM6XG5cdFx0Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlU2V0VG9TdHJpbmco
Z2V0QXR0cmlidXRlU2V0KG1fZWxlbWVudC5nZXQoKSwgVGV4dEF0dHJpYnV0ZVR5cGUpLCAiXG5c
dFx0IikpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcblx0RGVmYXVsdCB0ZXh0IGF0dHJpYnV0ZXM6
XG5cdFx0IiwgYXR0cmlidXRlU2V0VG9TdHJpbmcoZ2V0QXR0cmlidXRlU2V0KG1fZWxlbWVudC5n
ZXQoKSwgVGV4dEF0dHJpYnV0ZVR5cGUpLCAiXG5cdFx0IikpOwogCiAgICAgLy8gVGhlIGF0dHJp
YnV0ZSBydW4gcHJvdmlkZXMgYXR0cmlidXRlcyBzcGVjaWZpYyB0byB0aGUgcmFuZ2Ugb2YgdGV4
dCBhdCB0aGUgc3BlY2lmaWVkIG9mZnNldC4KICAgICBBdGtUZXh0KiB0ZXh0ID0gQVRLX1RFWFQo
bV9lbGVtZW50LmdldCgpKTsKQEAgLTE3MzEsMTAgKzE2NzcsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbG9jYXRpb247
IGkgPCBsb2NhdGlvbiArIGxlbmd0aDsgaSA9IGVuZCkgewogICAgICAgICBBdGtBdHRyaWJ1dGVT
ZXQqIGF0dHJpYnV0ZVNldCA9IGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcyh0ZXh0LCBpLCAm
c3RhcnQsICZlbmQpOwogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdWJzdHJpbmcocmVwbGFj
ZUNoYXJhY3RlcnNGb3JSZXN1bHRzKGF0a190ZXh0X2dldF90ZXh0KHRleHQsIHN0YXJ0LCBlbmQp
KSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5cdFJhbmdlIGF0dHJpYnV0ZXMg
Zm9yICciKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Vic3RyaW5nLmdldCgpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCInOlxuXHRcdCIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZChhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdHRyaWJ1dGVTZXQsICJcblx0XHQiKSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcblx0UmFuZ2UgYXR0cmlidXRlcyBmb3IgJyIsIHN1YnN0cmlu
Zy5nZXQoKSwgIic6XG5cdFx0IiwgYXR0cmlidXRlU2V0VG9TdHJpbmcoYXR0cmlidXRlU2V0LCAi
XG5cdFx0IikpOwogICAgIH0KIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yMjc4LDcgKzIyMjEs
NiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXRPZmZzZXQoCiAgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAgICAgZ2ludCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0OwotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAogICAgIEF0
a1RleHRHcmFudWxhcml0eSBncmFudWxhcml0eTsKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CkBA
IC0yMjk4LDEzICsyMjQwLDggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0T2Zm
c2V0KAogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsK
ICAgICB9CiAKLSAgICBidWlsZGVyLmFwcGVuZChhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNl
dChBVEtfVEVYVChlbGVtZW50LmdldCgpKSwgb2Zmc2V0LCBncmFudWxhcml0eSwgJnN0YXJ0T2Zm
c2V0LCAmZW5kT2Zmc2V0KSk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIoc3RhcnRPZmZzZXQpOwotICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbmRPZmZzZXQpOwotICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgYXV0byBzdHJpbmcgPSBtYWtlU3RyaW5nKGF0a190ZXh0X2dl
dF9zdHJpbmdfYXRfb2Zmc2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGdyYW51
bGFyaXR5LCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpLCAiLCAiLCBzdGFydE9mZnNldCwgIiwg
IiwgZW5kT2Zmc2V0KTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
c3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386579</attachid>
            <date>2020-01-01 09:01:41 -0800</date>
            <delta_ts>2020-01-01 11:25:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205671-20200101090140.patch</filename>
            <type>text/plain</type>
            <size>160333</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE5LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhh
dCBhcHBlbmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoK
KyAgICAgICAgKEJhY2t0cmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAq
IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVj
dXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZs
b3dUZXN0LmNwcDoKKyAgICAgICAgKFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0
YW5jZSk6CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcGVuZFVSTEFuZFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNs
aWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcgY29u
c3QpOgorCiAyMDE5LTEyLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaWR5IGEgYml0IG9mIFN0cmluZ0J1aWxkZXIgdXNhZ2UKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDE4ICsyOTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IG1fYnVpbGRlcjsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnIycpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmlzaXRv
ci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQodmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcj
JywgdmlzaXRvci0+aW5kZXgoKSwgJyAnLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSwgIigpIGF0
ICIsIHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5oYXNM
aW5lQW5kQ29sdW1uSW5mbygpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzon
KTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHVudXNlZENvbHVtbjsKICAgICAgICAgICAgICAgICB2aXNpdG9yLT5jb21wdXRl
TGluZUFuZENvbHVtbihsaW5lTnVtYmVyLCB1bnVzZWRDb2x1bW4pOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6JywgbGluZU51bWJlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghdmlzaXRvci0+Y2FsbGVlKCkucmF3UHRyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMiArMTk4
LDEzIEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRp
ZXJBZGp1c3RtZW50OwogCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygp
IHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIp
OworICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGls
ZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BV
VGltZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMo
KSksCisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICAp
OwogCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gQ1BVVGltZTo6Zm9yQ3VycmVudFRocmVhZCgp
OwpAQCAtMjM1LDE5ICsyMzYsMTkgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIHJlY3Vyc2UoaSkgeyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ3VzZSBzdHJpY3QnOyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaWYgKGkgJSAxMDAwID09PSAwKSB7IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGlt
ZSA+Iik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICApIHsgcmV0dXJuOyB9Iik7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICB9Iik7Ci0gICAg
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICByZXR1cm4gcmVjdXJzZShp
ICsgMSk7IH0iKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicmVj
dXJzZSgwKTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgorICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiByZWN1cnNlKGkpIHsiCisgICAgICAgICAgICAgICAgIiAgICAndXNl
IHN0cmljdCc7IgorICAgICAgICAgICAgICAgICIgICAgaWYgKGkgJSAxMDAwID09PSAwKSB7Igor
ICAgICAgICAgICAgICAgICIgICAgICAgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAgICAiICAgICAgICkgeyByZXR1
cm47IH0iCisgICAgICAgICAgICAgICAgIiAgICB9IgorICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHJlY3Vyc2UoaSArIDEpOyB9IgorICAgICAgICAgICAgICAgICJyZWN1cnNlKDApOyIKKyAg
ICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBDUFVUaW1lOjpmb3JDdXJy
ZW50VGhyZWFkKCk7CkBAIC0yNzksMTIgKzI4MCwxMyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUg
PSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVB
ZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0gfSBmb28o
KTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsg
dHJ5IHsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAo
Y3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIsCisgICAgICAgICAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJl
ZC5zZWNvbmRzKCkpLAorICAgICAgICAgICAgICAgICIpIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9
IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2Ny
aXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CiAKQEAgLTMxOCwxMiArMzIwLDEzIEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAgICAgU2Vjb25kcyB0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRpZXJBZGp1c3RtZW50Owog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOwor
ICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJm
dW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAo
dHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGlt
ZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSks
CisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICApOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKIApAQCAtMzU3LDEyICszNjAsMTMgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGlt
aXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hv
dWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0g
Y3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAgICAgICAg
ICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRj
aGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAgICAgICAgICBhdXRv
IHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAg
ICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVm
IHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBjYW5j
ZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwogCkBAIC0zOTYsMTIgKzQwMCwx
MyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICBTZWNvbmRzIHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUgPSA2MDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAg
ICAgICAgIFNlY29uZHMgbWF4QnVzeUxvb3BUaW1lID0gNzUwX21zICsgdGllckFkanVzdG1lbnQ7
CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAg
ICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtYXhCdXN5
TG9vcFRpbWUuc2Vjb25kcygpKTsgLy8gaW4gc2Vjb25kcy4KLSAgICAgICAgICAgIHNjcmlwdEJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb28o
KSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRU
aW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KG1heEJ1c3lMb29wVGltZS5zZWNvbmRzKCkpLCAvLyBpbiBzZWNvbmRzLgorICAgICAgICAgICAg
ICAgICIpIGJyZWFrOyB9IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdS
ZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIGV4
dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gMDsKIApAQCAtNDM5LDEyICs0NDQsMTMgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNv
bmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVz
dG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIg
c3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIp
OwotICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0
aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAg
c2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAg
ICAgICAgICBhdXRvIHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAg
ICAgICAgICAgICAgICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJj
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDggQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFja092
ZXJmbG93T2JqZWN0XwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkdW1teS52YWx1ZU9mKFswXSIpOwot
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDM1MDAwOyBpKyspIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXSIpOwotICAgICAg
ICB9CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsIFsiLCBpLCAnXScpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIik7Iik7CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTggKzQ1Miw5IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDxub2RlSWQ+LCA8c2l6ZUluQnl0ZXM+LCA8bm9kZUNsYXNzTmFtZUluZGV4Piwg
PGZsYWdzPiwgWzxsYWJlbEluZGV4PiwgPGNlbGxFZGRyZXNzPiwgPHdyYXBwZWRBZGRyZXNzPl0K
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIobm9k
ZS5pZGVudGlmaWVyKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIobm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihjbGFzc05hbWVJ
bmRleCk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTnVt
YmVyKGZsYWdzKTsKKyAgICAgICAganNvbi5hcHBlbmQoJywnLCBub2RlLmlkZW50aWZpZXIsICcs
Jywgbm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSksICcsJywgY2xhc3NOYW1lSW5k
ZXgsICcsJywgZmxhZ3MpOwogICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIobGFiZWxJbmRleCk7Ci0gICAgICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcIjB4Iik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcsIGxhYmVsSW5kZXgsICIsXCIweCIpOwogICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNl
KTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIweCIpOwogICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBl
ZEFkZHJlc3MpLCBqc29uLCBMb3dlcmNhc2UpOwpAQCAtNDc4LDEyICs0NjksNyBAQCBTdHJpbmcg
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgIGZpcnN0RWRnZSA9IGZh
bHNlOwogCiAgICAgICAgIC8vIDxmcm9tTm9kZUlkPiwgPHRvTm9kZUlkPiwgPGVkZ2VUeXBlSW5k
ZXg+LCA8ZWRnZUV4dHJhRGF0YT4KLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIoZWRnZS5mcm9t
LmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlLnRvLmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlVHlwZVRvTnVtYmVyKGVkZ2UudHlwZSkp
OwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOworICAgICAgICBqc29uLmFwcGVuZChlZGdlLmZy
b20uaWRlbnRpZmllciwgJywnLCBlZGdlLnRvLmlkZW50aWZpZXIsICcsJywgZWRnZVR5cGVUb051
bWJlcihlZGdlLnR5cGUpLCAnLCcpOwogICAgICAgICBzd2l0Y2ggKGVkZ2UudHlwZSkgewogICAg
ICAgICBjYXNlIEVkZ2VUeXBlOjpQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFZGdlVHlwZTo6VmFy
aWFibGU6IHsKQEAgLTQ5MSwxMSArNDc3LDExIEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVy
Ojpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICBuZXh0RWRnZU5hbWVJbmRleCsrOwogICAgICAgICAgICAgdW5zaWduZWQgZWRn
ZU5hbWVJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlTmFtZUluZGV4KTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKGVkZ2VO
YW1lSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
ZGdlVHlwZTo6SW5kZXg6Ci0gICAgICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlLnUuaW5k
ZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoZWRnZS51LmluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3IgdGhp
cyBlZGdlIHR5cGUuCkBAIC02NDYsNyArNjMyLDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6Ompzb24oRnVuY3RpbwogICAgICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKICAg
ICAgICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1i
ZXIoc25hcHNob3ROb2RlLnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgICAgICBqc29uLmFw
cGVuZChzbmFwc2hvdE5vZGUudmFsdWUoKS5pZGVudGlmaWVyKTsKIAogICAgICAgICAgICAgLy8g
TWF5YmUgd2Ugc2hvdWxkIGp1c3QgYWx3YXlzIGVuY29kZSB0aGUgcm9vdCBuYW1lcy4KICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJvb3ROYW1lID0gcm9vdFR5cGVUb1N0cmluZyhpdC52YWx1ZS5t
YXJrUmVhc29uKTsKQEAgLTY1NCw4ICs2NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRl
cjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgIHVuc2lnbmVkIGxhYmVs
SW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAganNvbi5hcHBlbmQo
JywnKTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5kZXgpOworICAgICAg
ICAgICAganNvbi5hcHBlbmQoJywnLCBsYWJlbEluZGV4KTsKIAogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVhY2hhYmlsaXR5UmVhc29uSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGl0LnZhbHVl
LnJlYWNoYWJpbGl0eUZyb21PcGFxdWVSb290UmVhc29ucykgewpAQCAtNjY0LDggKzY0OSw3IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgICAg
ICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgICAgICByZWFjaGFiaWxpdHlSZWFz
b25JbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIocmVh
Y2hhYmlsaXR5UmVhc29uSW5kZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnLCByZWFj
aGFiaWxpdHlSZWFzb25JbmRleCk7CiAgICAgICAgIH0KIAogICAgICAgICBqc29uLmFwcGVuZCgn
XScpOwpAQCAtNjczLDkgKzY1Nyw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW8KIAogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVi
dWdnaW5nU25hcHNob3QpIHsKICAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBkZXNjcmlwdGlvbnMK
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImxhYmVsc1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBqc29uLmFw
cGVuZCgiLCdcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmRlcmVk
TGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bGFiZWxJbmRleGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTIsMTAgKzM1Miw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjp0b1N0cmluZygp
IGMKICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQg
Y29sdW1uID0gMDsKICAgICAgICAgICAgIGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJh
Y2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIoY29sdW1uKTsKKyAg
ICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5j
cHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTAgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kVVJMQW5kUG9zaXRpb24oU3RyaW5nQgogCiAgICAgYnVpbGRlci5hcHBlbmQo
dXJsKTsKIAotICAgIGlmIChsaW5lTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKLSAgICB9
Ci0KLSAgICBpZiAoY29sdW1uTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
OicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjb2x1bW5OdW1iZXIpOwotICAgIH0K
KyAgICBpZiAobGluZU51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgbGlu
ZU51bWJlcik7CisgICAgaWYgKGNvbHVtbk51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6JywgY29sdW1uTnVtYmVyKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVBy
ZWZpeChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsKQpAQCAtMTgwLDEwICsxNzUsNyBAQCB2b2lk
IENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXCiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBj
YWxsRnJhbWVCdWlsZGVyOwotICAgICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmROdW1i
ZXIoaSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7
Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgICAgIGNhbGxG
cmFtZUJ1aWxkZXIuYXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKICAgICAgICAg
ICAgIGFwcGVuZFVSTEFuZFBvc2l0aW9uKGNhbGxGcmFtZUJ1aWxkZXIsIGNhbGxGcmFtZS5zb3Vy
Y2VVUkwoKSwgY2FsbEZyYW1lLmxpbmVOdW1iZXIoKSwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcigp
KTsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAy
NTM5NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDEzICszNzgsMTMgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcgogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5hc0lu
dDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1
ZS5hc051bWJlcigpOwogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpCiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChudW1iZXIpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAx
LDE2ICsxMDAxLDE2IEBAIHZvaWQgT3B0aW9uUmVhZGVyOjpPcHRpb246OmR1bXAoU3RyaW5nQnUK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdW5zaWduZWQpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X3Vuc2lnbmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXpl
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3NpemUpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3NpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2Rv
dWJsZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obV9kb3VibGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9pbnQzMik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1faW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6Ok9wdGlvblJhbmdlOgogICAgICAgICBidWlsZGVyLmFwcGVuZChtX29wdGlvblJh
bmdlLnJhbmdlU3RyaW5nKCkpOwpAQCAtMTAxOSw5ICsxMDE5LDcgQEAgdm9pZCBPcHRpb25SZWFk
ZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdQogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBt
X29wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24g
PSAiIjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQob3B0aW9uKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInLCBvcHRpb24sICciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDEwICsxMzMsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoVk0mIHZtKSBj
b25zCiAgICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW47CiAgICAgICAgICAgICBjb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogCi0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKTsKKyAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jywg
bGluZSwgJzonLCBjb2x1bW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1
aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTIt
MzEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1l
cmljIGFwcGVuZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBj
YW4gaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9KU09OVmFsdWVzLmNwcDoKKyAgICAgICAgKFdU
Rjo6SlNPTkltcGw6OlZhbHVlOjp3cml0ZUpTT04gY29uc3QpOgorICAgICAgICAqIHd0Zi9NZWRp
YVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVp
bGRlcjo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg6CisgICAgICAgIChXVEY6OkZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24pOgorICAgICAgICAoV1RGOjpGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgp
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVGlkeSBhIGJpdCBvZiBTdHJpbmdCdWlsZGVyIHVzYWdlCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dURi93
dGYvSlNPTlZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lk
IFZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0CiAgICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZShtX3ZhbHVlLm51bWJlcikpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJh
bCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTnVtYmVy
KG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1i
ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL01lZGlhVGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWVkaWFU
aW1lLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDEzICs1ODgsOSBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0
b1N0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRl
ci5hcHBlbmQoJ3snKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV90aW1lVmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3RpbWVTY2FsZSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiID0gIik7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIodG9Eb3VibGUoKSk7CisgICAgaWYgKCFoYXNEb3VibGVWYWx1
ZSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2Fs
ZSwgIiA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odG9Eb3VibGUoKSkpOwogICAgIGlmIChpc0ludmFsaWQoKSkKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGludmFsaWQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnfScpOwpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNzIgKzM5Miw2IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKENGU3RyaW5n
UmVmIHMKIAogI2VuZGlmCiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKGludCBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVy
PihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihs
b25nIGxvbmcgbnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxk
ZXI+KG51bWJlciwgdGhpcyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVy
KHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25l
ZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgcHJlY2lz
aW9uLCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSBwb2xpY3kpCi17Ci0gICAgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb0ZpeGVkUHJlY2lzaW9u
U3RyaW5nKG51bWJlciwgcHJlY2lzaW9uLCBidWZmZXIsIHBvbGljeSA9PSBUcnVuY2F0ZVRyYWls
aW5nWmVyb3MpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24sIFRyYWlsaW5nWmVyb3NU
cnVuY2F0aW5nUG9saWN5IHBvbGljeSkKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZm
ZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVj
aXNpb24sIGJ1ZmZlciwgcG9saWN5ID09IFRydW5jYXRlVHJhaWxpbmdaZXJvcykpOwotfQotCi12
b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihmbG9hdCBudW1iZXIpCi17Ci0gICAgTnVt
YmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb1N0cmluZyhudW1i
ZXIsIGJ1ZmZlcikpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3Vi
bGUgbnVtYmVyKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICBhcHBl
bmQobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5k
KG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikp
OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91Ymxl
IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIs
IGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikpOwotfQotCiBib29sIFN0cmluZ0J1aWxkZXI6OmNhblNo
cmluaygpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJmbG93ZWQoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDIwICsyMTksNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNv
dW50IC0gMSk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihp
bnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIobG9uZyBsb25nKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwotCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZmxvYXQsIHVuc2lnbmVk
IHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVU
cmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVy
b3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBk
ZWNpbWFsUGxhY2VzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTQsNiArOTQsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwog
ICAgIH0KIAorICAgIHN0YXRpYyBGb3JtYXR0ZWROdW1iZXIgZml4ZWRQcmVjaXNpb24oZmxvYXQg
bnVtYmVyLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMgPSA2LCBUcmFpbGluZ1plcm9zVHJ1
bmNhdGluZ1BvbGljeSB0cmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSA9IFRydW5jYXRlVHJh
aWxpbmdaZXJvcykKKyAgICB7CisgICAgICAgIEZvcm1hdHRlZE51bWJlciBudW1iZXJGb3JtYXR0
ZXI7CisgICAgICAgIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBzaWduaWZp
Y2FudEZpZ3VyZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlciwgdHJhaWxpbmdaZXJvc1RydW5j
YXRpbmdQb2xpY3kgPT0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKKyAgICAgICAgbnVtYmVyRm9y
bWF0dGVyLm1fbGVuZ3RoID0gc3RkOjpzdHJsZW4oJm51bWJlckZvcm1hdHRlci5tX2J1ZmZlclsw
XSk7CisgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXR0ZXI7CisgICAgfQorCiAgICAgc3RhdGlj
IEZvcm1hdHRlZE51bWJlciBmaXhlZFdpZHRoKGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIGRlY2lt
YWxQbGFjZXMpCiAgICAgewogICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVy
OwpAQCAtMTAyLDYgKzExMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudW1iZXJGb3Jt
YXR0ZXI7CiAgICAgfQogCisgICAgc3RhdGljIEZvcm1hdHRlZE51bWJlciBmaXhlZFdpZHRoKGZs
b2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKKyAgICB7CisgICAgICAgIEZvcm1h
dHRlZE51bWJlciBudW1iZXJGb3JtYXR0ZXI7CisgICAgICAgIG51bWJlclRvRml4ZWRXaWR0aFN0
cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlcik7Cisg
ICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVuKCZudW1iZXJGb3Jt
YXR0ZXIubV9idWZmZXJbMF0pOworICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOworICAg
IH0KKwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAg
ICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigmbV9idWZmZXJbMF0pOyB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Rl
eHQvVGV4dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9UZXh0
U3RyZWFtLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dURi93dGYvdGV4dC9UZXh0
U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMzcgKzU0LDM3IEBAIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY2hhciAKIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6
b3BlcmF0b3I8PChpbnQgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1f
dGV4dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJl
cihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4
dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChsb25nIGkpCiB7Ci0gICAgbV90ZXh0LmFw
cGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGkp
CiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8
PChsb25nIGxvbmcgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1fdGV4
dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBl
bmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKQEAgLTkzLDcgKzkzLDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChm
bG9hdAogICAgIGlmIChtX2Zvcm1hdHRpbmdGbGFncyAmIEZvcm1hdHRpbmc6Ok51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycykKICAgICAgICAgcmV0dXJuICp0aGlzIDw8IEZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhmKTsKIAotICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGYs
IDIpOworICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGYsIDIp
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBUZXh0U3RyZWFt
JiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGRvdWJsCiAgICAgaWYgKG1fZm9ybWF0dGluZ0ZsYWdz
ICYgRm9ybWF0dGluZzo6TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKQogICAgICAgICByZXR1cm4g
KnRoaXMgPDwgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKGQpOwogCi0gICAgbV90ZXh0
LmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZCwgMik7CisgICAgbV90ZXh0LmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgoZCwgMikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAt
MTI4LDExICsxMjgsMTEgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25z
dAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGb3JtYXROdW1iZXJS
ZXNwZWN0aW5nSW50ZWdlcnMmIG51bWJlclRvRm9ybWF0KQogewogICAgIGlmIChoYXNGcmFjdGlv
bnMobnVtYmVyVG9Gb3JtYXQudmFsdWUpKSB7Ci0gICAgICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKG51bWJlclRvRm9ybWF0LnZhbHVlLCAyKTsKKyAgICAgICAgbV90ZXh0LmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgobnVtYmVyVG9Gb3JtYXQudmFsdWUsIDIpKTsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIo
c3RhdGljX2Nhc3Q8aW50PihudW1iZXJUb0Zvcm1hdC52YWx1ZSkpOworICAgIG1fdGV4dC5hcHBl
bmQoc3RhdGljX2Nhc3Q8aW50PihudW1iZXJUb0Zvcm1hdC52YWx1ZSkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisyMDE5LTEy
LTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbnVt
ZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBlbmQg
Y2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0
b3JlOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhvc3ROYW1lKToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyk6
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVGVybS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmVhdHVy
ZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFZhcmlh
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRWYXJpYXRpb25WYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZTo6a2V5VGV4dCBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9t
Q1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTcHJpbmdUaW1pbmdGdW5jdGlv
blZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZG93bmdyYWRlUmVmZXJyZXJUb1JlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAg
ICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZvcm1h
dEZvckRlYnVnZ2VyIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OmZvcm1hdEZvckRlYnVnZ2VyIGNvbnN0KToKKyAgICAgICAgKiBkb20v
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlciBjb25z
dCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6Z2VuZXJhdGVVbmlxdWVQcmVmaXgpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRh
dGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU2VydmVyTWFwTW91c2VQb3NpdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dDJkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVs
ZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVC
b3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgICogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnVybCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnJlZmVycmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnRvU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmludGVncml0eU1pc21hdGNoRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2
ZXI6OnJvb3RNYXJnaW4gY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRCeXRlTnVtYmVyKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c25hcE9mZnNldHNUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwT2Zmc2V0
UmFuZ2VzVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c25hcFBvcnRPckFyZWFUb1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OmNyZWF0ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRWYXJpYXRp
b25TZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrOjpnZW5lcmF0ZU1vY2tTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJveHlTZXJ2ZXJTdHJp
bmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5vZGVQb3NpdGlvbik6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFBvaW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0
cmluZ0Zyb21QYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgICog
c3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1W
YWx1ZTo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXJzKToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8RmxvYXRQb2ludD46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5VHJhaXRzPEZsb2F0UmVjdD46OnRvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBNYXJrZXJSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6Z2V0Q3VycmVudEN1cnNvckluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kT2Zmc2V0cyk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZl
bnQpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UpOgorCiAyMDE5LTEyLTMxICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbW90ZSBtZWRpYSByZXNvdXJjZSBs
b2FkZXIgZm9yIHRoZSBHUFUgcHJvY2VzcwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JbmRleFZhbHVlU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiw4IEBA
IGNvbnN0IElEQktleURhdGEmIEluZGV4VmFsdWVTdG9yZTo6SXRlcmEKIFN0cmluZyBJbmRleFZh
bHVlU3RvcmU6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBmb3IgKGF1dG8mIGtleSA6IG1fb3JkZXJlZEtleXMpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJLZXk6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChrZXku
bG9nZ2luZ1N0cmluZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgIEVudHJ5
IGhhcyAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9yZWNvcmRzLmdldChrZXkp
LT5nZXRDb3VudCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50cmllcyIp
OwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGtleSA6IG1fb3JkZXJlZEtleXMpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJLZXk6ICIsIGtleS5sb2dnaW5nU3RyaW5nKCksICIgIEVudHJ5IGhhcyAi
LCBtX3JlY29yZHMuZ2V0KGtleSktPmdldENvdW50KCksICIgZW50cmllcyIpOwogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDggQEAgc3Rh
dGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYgogICAgIEFTU0VSVCh1cmwucHJv
dG9jb2xJcygid3NzIikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgYnVpbGRlci5hcHBlbmQodXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsK
LSAgICBpZiAodXJsLnBvcnQoKSAmJiAoKCFzZWN1cmUgJiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9
IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkudmFsdWUoKSAhPSA0NDMpKSkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih1cmwu
cG9ydCgpLnZhbHVlKCkpOwotICAgIH0KKyAgICBpZiAodXJsLnBvcnQoKSAmJiAoKCFzZWN1cmUg
JiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkudmFs
dWUoKSAhPSA0NDMpKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonLCB1cmwucG9ydCgpLnZh
bHVlKCkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0
ZXJzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEwICsx
MDMsOCBAQCBzdGF0aWMgU3RyaW5nIHByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyhjCiAKICAgICBh
dXRvIGFjdGlvbnNTbG90ID0gYWN0aW9ucy5maW5kKCZ2ZXJ0ZXgpOwogICAgIGlmIChhY3Rpb25z
U2xvdCAhPSBhY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDog
YWN0aW9uc1Nsb3QtPnZhbHVlKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihh
Y3Rpb24pOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgfQorICAg
ICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IGFjdGlvbnNTbG90LT52YWx1ZSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGFjdGlvbiwgJywnKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM4
LDkgKzIzOCw3IEBAIGlubGluZSBTdHJpbmcgVGVybTo6dG9TdHJpbmcoKSBjb25zdAogICAgICAg
ICAgICAgICAgIGlmIChpc0FTQ0lJUHJpbnRhYmxlKGMpICYmICFpc0FTQ0lJU3BhY2UoYykpCiAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOwogICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXFwnKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3UnKTsKLSAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoYyk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdcXCcsICd1JywgYyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0Niw4IEBAIFN0cmluZyBDU1NGb250RmVh
dHVyZVZhbHVlOjpjdXN0b21DU1NUZXgKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAvLyBPbWl0IHRoZSB2YWx1ZSBpZiBpdCdzIDEgYXMg
MSBpcyBpbXBsaWVkIGJ5IGRlZmF1bHQuCi0gICAgaWYgKG1fdmFsdWUgIT0gMSkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3Zh
bHVlKTsKLSAgICB9CisgICAgaWYgKG1fdmFsdWUgIT0gMSkKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnLCBtX3ZhbHVlKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAkocmV2
aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDcgQEAgU3RyaW5nIENTU0ZvbnRWYXJp
YXRpb25WYWx1ZTo6Y3VzdG9tQ1NTVAogICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgZm9y
IChjaGFyIGMgOiBtX3RhZykKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJcIiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKG1fdmFsdWUpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcIiAiLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFsdWUpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAkocmV2
aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDcgQEAgU3RyaW5nIFN0eWxlUnVsZUtleWZyYW1l
OjprZXlUZXh0KCkgY29ucwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9rZXlzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAga2V5VGV4dC5hcHBlbmQoJywn
KTsKLSAgICAgICAga2V5VGV4dC5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2tleXMuYXQo
aSkgKiAxMDApOwotICAgICAgICBrZXlUZXh0LmFwcGVuZCgnJScpOworICAgICAgICBrZXlUZXh0
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fa2V5cy5hdChpKSAqIDEw
MCksICclJyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGtleVRleHQudG9TdHJpbmcoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAJKHJldmlz
aW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTdHJpbmcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NU
ZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJjdWJpYy1iZXppZXIoIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihtX3gxKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3kxKTsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihtX3gyKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3kyKTsKLSAgICBidWlsZGVyLmFwcGVuZCgn
KScpOyAgICAKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKCJjdWJpYy1iZXppZXIoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbiht
X3gxKSwgIiwgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3kxKSwgIiwgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3gyKSwgIiwgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihtX3kyKSwgJyknKTsKIH0KIAogYm9vbCBDU1NDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdApAQCAtNTIsMTQgKzQyLDcgQEAgYm9vbCBDU1NDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OgogCiBTdHJpbmcgQ1NTU3RlcHNUaW1pbmdGdW5j
dGlvblZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzdGVwcygiKTsKLSAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihtX3N0ZXBzKTsKLSAgICBpZiAobV9zdGVwQXRTdGFydCkKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHN0YXJ0KSIpOwotICAgIGVsc2UKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIGVuZCkiKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJzdGVwcygiLCBtX3N0ZXBzLCAobV9zdGVwQXRT
dGFydCA/ICIsIHN0YXJ0KSIgOiAiLCBlbmQpIikpOwogfQogCiBib29sIENTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSYg
b3RoZXIpIGNvbnN0CkBAIC02OSwxNyArNTIsNyBAQCBib29sIENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZTo6ZXF1YWxzCiAKIFN0cmluZyBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzcHJpbmcoIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihtX21hc3MpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
YnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3N0aWZmbmVzcyk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KG1fZGFtcGluZyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1faW5pdGlhbFZlbG9jaXR5KTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInNwcmluZygiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fbWFz
cyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3N0aWZmbmVzcyksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2RhbXBpbmcpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9pbml0aWFsVmVsb2NpdHkpLCAnKScpOwogfQog
CiBib29sIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NTcHJp
bmdUaW1pbmdGdW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIxLDE1ICs0MjEsMTQgQEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplKFN0
cmluZ0J1aQogICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJseSBwcmVzZXJ2ZSB0aGUgTnVt
ZXJpY1ZhbHVlVHlwZSBmbGFnCiAgICAgICAgIGlmIChtX251bWVyaWNTaWduID09IFBsdXNTaWdu
KQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJysnKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtZXJpY1ZhbHVlKCkpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQZXJjZW50YWdlVG9rZW46Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobnVtZXJpY1ZhbHVlKCkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnJScpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKG51bWVyaWNWYWx1ZSgpKSwgJyUnKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKICAgICAgICAgLy8gVGhpcyB3aWxsIGluY29ycmVj
dGx5IHNlcmlhbGl6ZSBlLmcuIDRlM2UyIGFzIDQwMDBlMgotICAgICAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihudW1lcmljVmFsdWUoKSkpOwog
ICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NzksMTMgKzc5NzksOSBAQCB2b2lk
IERvY3VtZW50Ojpkb3duZ3JhZGVSZWZlcnJlclRvUmVnaXN0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChyZWZlcnJlclVS
TC5wcm90b2NvbCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjovLyIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKHJlZmVycmVyUmVnaXN0cmFibGVEb21haW5TdHIpOwotICAgIGlmIChyZWZl
cnJlclBvcnQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoKnJlZmVycmVyUG9ydCk7Ci0gICAgfQorICAgIGJ1aWxkZXIuYXBwZW5k
KHJlZmVycmVyVVJMLnByb3RvY29sKCksICI6Ly8iLCByZWZlcnJlclJlZ2lzdHJhYmxlRG9tYWlu
U3RyKTsKKyAgICBpZiAocmVmZXJyZXJQb3J0KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnOics
ICpyZWZlcnJlclBvcnQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CiAKICAgICBtX3JlZmVy
cmVyT3ZlcnJpZGUgPSBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODIsMTAgKzEzODIsOCBAQCB2b2lkIFBvc2l0aW9uOjpm
b3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBiCiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiPG51bGw+Iik7CiAgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIm9mZnNldCAiLCBtX29mZnNldCwgIiBvZiAiKTsKICAgICAgICAgY2hhciBzWzEwMjRd
OwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgib2Zmc2V0ICIpOwotICAgICAgICByZXN1
bHQuYXBwZW5kTnVtYmVyKG1fb2Zmc2V0KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiBvZiAiKTsKICAgICAgICAgZGVwcmVjYXRlZE5vZGUoKS0+Zm9ybWF0Rm9yRGVidWdnZXIocywg
c2l6ZW9mKHMpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTgsMTQgKzE1MTgsMTAgQEAgdm9pZCBSYW5nZTo6
Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZgogCiAgICAgY29uc3QgaW50IEZvcm1hdEJ1ZmZl
clNpemUgPSAxMDI0OwogICAgIGNoYXIgc1tGb3JtYXRCdWZmZXJTaXplXTsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiZnJvbSBvZmZzZXQgIik7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlciht
X3N0YXJ0Lm9mZnNldCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAg
IHJlc3VsdC5hcHBlbmQoImZyb20gb2Zmc2V0ICIsIG1fc3RhcnQub2Zmc2V0KCksICIgb2YgIik7
CiAgICAgc3RhcnRDb250YWluZXIoKS5mb3JtYXRGb3JEZWJ1Z2dlcihzLCBGb3JtYXRCdWZmZXJT
aXplKTsKICAgICByZXN1bHQuYXBwZW5kKHMpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIg
dG8gb2Zmc2V0ICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9lbmQub2Zmc2V0KCkpOwot
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CisgICAgcmVzdWx0LmFwcGVuZCgiIHRv
IG9mZnNldCAiLCBtX2VuZC5vZmZzZXQoKSwgIiBvZiAiKTsKICAgICBlbmRDb250YWluZXIoKS5m
b3JtYXRGb3JEZWJ1Z2dlcihzLCBGb3JtYXRCdWZmZXJTaXplKTsKICAgICByZXN1bHQuYXBwZW5k
KHMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMywxMSArMjMzLDcgQEAg
dm9pZCBUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZQogICAgIGlmIChzLmxlbmd0
aCgpID4gMCkgewogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIjsgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJs
ZW5ndGg9Iik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIocy5sZW5ndGgoKSk7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI7IHZhbHVlPVwiIik7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyInKTsKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgibGVuZ3RoPSIsIHMubGVuZ3RoKCksICI7IHZhbHVlPVwiIiwgcywgJyInKTsKICAgICB9
CiAKICAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
bGVuZ3RoIC0gMSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNiw4ICs1MTYsNyBAQCB2
b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjpnZW5lcmF0ZVVuaXF1ZVByCiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgIGRvIHsKICAgICAgICAgYnVpbGRlci5jbGVhcigpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIk5TIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KCsrbV9wcmVmaXhMZXZlbCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJOUyIsICsrbV9wcmVm
aXhMZXZlbCk7CiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUgPSBidWlsZGVyLnRvQXRv
bVN0cmluZygpOwogICAgICAgICBpZiAoIW5hbWVzcGFjZXMuZ2V0KG5hbWUuaW1wbCgpKSkgewog
ICAgICAgICAgICAgcHJlZml4ZWROYW1lLnNldFByZWZpeChuYW1lKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI1Mzk2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzI0LDE5ICszMjQsMTMgQEAgc3RhdGljIFN0cmluZyBkYXRhRGV0ZWN0
b3JTdHJpbmdGb3JQYXRoKAogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgMToKICAgICAg
ICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0gICAg
Y2FzZSAyOiB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKLSAgICAgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9CisgICAgY2FzZSAyOgorICAgICAgICByZXR1
cm4gbWFrZVN0cmluZyhbcGF0aCBpbmRleEF0UG9zaXRpb246MF0sICcvJywgW3BhdGggaW5kZXhB
dFBvc2l0aW9uOjFdKTsKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoW3BhdGggaW5k
ZXhBdFBvc2l0aW9uOjBdKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoW3BhdGggaW5k
ZXhBdFBvc2l0aW9uOjBdKTsKICAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAxIDsgaSA8IGxl
bmd0aCA7IGkrKykgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlv
bjppXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLycsIFtwYXRoIGluZGV4
QXRQb3NpdGlvbjppXSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTAgKzE3MCw3IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBwcm9iYWJseSBwYXNzIFVzZVRyYW5zZm9ybXMgaW4gdGhlIE1hcENvb3JkaW5hdGVzRmxh
Z3MuCiAgICAgYXV0byBhYnNvbHV0ZVBvc2l0aW9uID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpy
ZW5kZXJlcikuYWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9pbnQobW91c2VFdmVudC5wYWdlWCgpLCBt
b3VzZUV2ZW50LnBhZ2VZKCkpKTsKLSAgICB1cmwuYXBwZW5kKCc/Jyk7Ci0gICAgdXJsLmFwcGVu
ZE51bWJlcihzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0aW9uLngoKSkpOwotICAgIHVybC5hcHBl
bmQoJywnKTsKLSAgICB1cmwuYXBwZW5kTnVtYmVyKHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRp
b24ueSgpKSk7CisgICAgdXJsLmFwcGVuZCgnPycsIHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRp
b24ueCgpKSwgJywnLCBzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0aW9uLnkoKSkpOwogfQogCiB2
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzM1LDExICszMzUsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQqIEhUTUxDYW52YXNFbGVtCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHVzZSBtb3JlIHBp
eGVsIG1lbW9yeSB0aGFuIHRoZSBzeXN0ZW0gY2FuIHN1cHBvcnQuCiAgICAgc2l6ZV90IHJlcXVl
c3RlZFBpeGVsTWVtb3J5ID0gNCAqIHdpZHRoKCkgKiBoZWlnaHQoKTsKICAgICBpZiAoYWN0aXZl
UGl4ZWxNZW1vcnkoKSArIHJlcXVlc3RlZFBpeGVsTWVtb3J5ID4gbWF4QWN0aXZlUGl4ZWxNZW1v
cnkoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVk
cyB0aGUgbWF4aW11bSBsaW1pdCAoIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8gMTAyNCk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIE1CKS4iKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJp
bmcoIlRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKCIs
IG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8gMTAyNCwgIiBNQikuIikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTg2MywyMiArODU5LDE0IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmUKIAogICAgIC8vIFBlcmZvcm0gbXVsdGlw
bGljYXRpb24gYXMgZmxvYXRpbmcgcG9pbnQgdG8gYXZvaWQgb3ZlcmZsb3cKICAgICBpZiAoZmxv
YXQod2lkdGgoKSkgKiBoZWlnaHQoKSA+IG1heENhbnZhc0FyZWEpIHsKLSAgICAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkNhbnZhcyBhcmVhIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKHdpZHRoICogaGVpZ2h0
ID4gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKG1heENhbnZhc0FyZWEp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikuIik7Ci0gICAgICAgIGRv
Y3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBtYWtlU3RyaW5nKCJDYW52YXMgYXJlYSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3
aWR0aCAqIGhlaWdodCA+ICIsIG1heENhbnZhc0FyZWEsICIpLiIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIG1vcmUgcGl4ZWwg
bWVtb3J5IHRoYW4gdGhlIHN5c3RlbSBjYW4gc3VwcG9ydC4KICAgICBzaXplX3QgcmVxdWVzdGVk
UGl4ZWxNZW1vcnkgPSA0ICogd2lkdGgoKSAqIGhlaWdodCgpOwogICAgIGlmIChhY3RpdmVQaXhl
bE1lbW9yeSgpICsgcmVxdWVzdGVkUGl4ZWxNZW1vcnkgPiBtYXhBY3RpdmVQaXhlbE1lbW9yeSgp
KSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRo
ZSBtYXhpbXVtIGxpbWl0ICgiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIo
bWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEwMjQgLyAxMDI0KTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgTUIpLiIpOwotICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygi
VG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoIiwgbWF4
QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEwMjQgLyAxMDI0LCAiIE1CKS4iKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcxLDE2ICs1NzEsMTAgQEAgU3RyaW5nIEhU
TUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQQogICAgICAgICAgICAgaWYgKCZjYW5kaWRh
dGUgIT0gJmltYWdlQ2FuZGlkYXRlc1swXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNhbmRp
ZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5kZW5zaXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKSB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihjYW5kaWRhdGUuZGVuc2l0eSk7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgneCcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS5yZXNvdXJjZVdpZHRoICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKSB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRO
dW1iZXIoY2FuZGlkYXRlLnJlc291cmNlV2lkdGgpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ3cnKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuZGVu
c2l0eSAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihjYW5kaWRhdGUuZGVu
c2l0eSksICd4Jyk7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291cmNlV2lkdGggIT0g
VW5pbml0aWFsaXplZERlc2NyaXB0b3IpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICcsIGNhbmRpZGF0ZS5yZXNvdXJjZVdpZHRoLCAndycpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlz
aW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsNyBAQCBTdHJpbmcg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgCiAgICAgaWYgKGZvbnREZXNjcmlwdGlv
bi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGwpCiAgICAgICAgIHNlcmlh
bGl6ZWRGb250LmFwcGVuZExpdGVyYWwoInNtYWxsLWNhcHMgIik7CiAKLSAgICBzZXJpYWxpemVk
Rm9udC5hcHBlbmROdW1iZXIoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpOwot
ICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZExpdGVyYWwoInB4Iik7CisgICAgc2VyaWFsaXplZEZv
bnQuYXBwZW5kKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCAicHgiKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQo
KTsgKytpKSB7CiAgICAgICAgIGlmIChpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTk4LDEzICsyMTk4LDcg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbgogCiAgICAgYXV0byBi
eXRlQXJyYXkgPSBidWZmZXItPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZURhdGFSZWN0
LCBudWxscHRyLCBjb29yZGluYXRlU3lzdGVtKTsKICAgICBpZiAoIWJ5dGVBcnJheSkgewotICAg
ICAgICBTdHJpbmdCdWlsZGVyIGNvbnNvbGVNZXNzYWdlOwotICAgICAgICBjb25zb2xlTWVzc2Fn
ZS5hcHBlbmRMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMuIFJl
cXVlc3RlZCBzaXplIHdhcyAiKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTnVtYmVy
KGltYWdlRGF0YVJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZExp
dGVyYWwoIiB4ICIpOwotICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmROdW1iZXIoaW1hZ2VE
YXRhUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZS50b1N0cmluZygpKTsKKyAgICAgICAg
Y2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5n
KCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMuIFJlcXVlc3RlZCBzaXplIHdh
cyAiLCBpbWFnZURhdGFSZWN0LndpZHRoKCksICIgeCAiLCBpbWFnZURhdGFSZWN0LmhlaWdodCgp
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkocmV2aXNpb24gMjUz
OTY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGll
cyhjb25zdAogICAgIGlmIChjdWUtPnZlcnRpY2FsKCkgPT0gaG9yaXpvbnRhbEtleXdvcmQoKSkK
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHBvc2l0aW9u
LmZpcnN0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGVsc2UgaWYgKGN1ZS0+
dmVydGljYWwoKSA9PSB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKSkKLSAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIG1ha2VTdHJpbmcoImNhbGMoLSIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aCh2aWRlb1NpemUud2lkdGgoKSwgMiksICJweCAt
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChjdWUtPmdldENTU1NpemUoKSwgMiksICJw
eCkiKSk7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBt
YWtlU3RyaW5nKCJjYWxjKC0iLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoc3RhdGljX2Nh
c3Q8ZG91YmxlPih2aWRlb1NpemUud2lkdGgoKSksIDIpLCAicHggLSAiLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkV2lkdGgoc3RhdGljX2Nhc3Q8ZG91YmxlPihjdWUtPmdldENTU1NpemUoKSksIDIp
LCAicHgpIikpOwogCiAgICAgZG91YmxlIGF1dGhvckZvbnRTaXplID0gc3RkOjptaW4odmlkZW9T
aXplLndpZHRoKCksIHZpZGVvU2l6ZS5oZWlnaHQoKSkgKiBERUZBVUxUQ0FQVElPTkZPTlRTSVpF
UEVSQ0VOVEFHRSAvIDEwMC4wOwogICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAJKHJldmlzaW9u
IDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTUgKzEzMyw3IEBAIFVSTCBBZENsaWNrQXR0cmlidXRp
b246OnVybCgpIGNvbnN0CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBVUkwo
KTsKIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoImh0dHBzOi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zb3VyY2UucmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbChhZENsaWNrQXR0cmli
dXRpb25QYXRoUHJlZml4KTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NvbnZlcnNpb24u
dmFsdWUoKS5kYXRhKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnLycpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVy
LnRvU3RyaW5nKCkgfTsKKyAgICBVUkwgdXJsIHsgVVJMKCksIG1ha2VTdHJpbmcoImh0dHBzOi8v
IiwgbV9zb3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksIGFkQ2xpY2tBdHRyaWJ1dGlv
blBhdGhQcmVmaXgsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICcvJywgbV9jYW1wYWlnbi5p
ZCkgfTsKICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHVybDsKIApAQCAt
MTUzLDEyICsxNDUsNyBAQCBVUkwgQWRDbGlja0F0dHJpYnV0aW9uOjpyZWZlcnJlcigpIGNvbnN0
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBVUkwoKTsKIAotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImh0dHBzOi8vIik7
Ci0gICAgYnVpbGRlci5hcHBlbmQobV9kZXN0aW5hdGlvbi5yZWdpc3RyYWJsZURvbWFpbi5zdHJp
bmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLQotICAgIFVSTCB1cmwgeyBVUkwoKSwg
YnVpbGRlci50b1N0cmluZygpIH07CisgICAgVVJMIHVybCB7IFVSTCgpLCBtYWtlU3RyaW5nKCJo
dHRwczovLyIsIG1fZGVzdGluYXRpb24ucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksICcvJykg
fTsKICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHVybDsKICAgICAKQEAg
LTE3MiwxNCArMTU5LDkgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyhj
bwogICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Y29udmVyc2lvbj0iKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiZjYW1wYWlnbj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NhbXBh
aWduLmlkKTsKLSAgICBpZiAoYmFzZVVSTC5oYXNRdWVyeSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcmJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJhc2VVUkwucXVlcnkoKSk7Ci0g
ICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCI/Y29udmVyc2lvbj0iLCBtX2NvbnZlcnNpb24udmFs
dWUoKS5kYXRhLCAiJmNhbXBhaWduPSIsIG1fY2FtcGFpZ24uaWQpOworICAgIGlmIChiYXNlVVJM
Lmhhc1F1ZXJ5KCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcmJywgYmFzZVVSTC5xdWVyeSgp
KTsKICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKQEAg
LTE5OCwyNiArMTgwLDE2IEBAIGJvb2wgQWRDbGlja0F0dHJpYnV0aW9uOjp3YXNDb252ZXJzaW9u
U2UKIFN0cmluZyBBZENsaWNrQXR0cmlidXRpb246OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTb3VyY2U6
ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc291cmNlLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmlu
ZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuRGVzdGluYXRpb246ICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKG1fZGVzdGluYXRpb24ucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5DYW1wYWlnbiBJRDogIik7Ci0gICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV9jYW1wYWlnbi5pZCk7CisgICAgYnVpbGRlci5hcHBlbmQoIlNv
dXJjZTogIiwgbV9zb3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksICJcbkRlc3RpbmF0
aW9uOiAiLCBtX2Rlc3RpbmF0aW9uLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAiXG5DYW1w
YWlnbiBJRDogIiwgbV9jYW1wYWlnbi5pZCk7CiAgICAgaWYgKG1fY29udmVyc2lvbikgewotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQ29udmVyc2lvbiBkYXRhOiAiKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5Db252ZXJzaW9uIHByaW9yaXR5OiAiKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJzaW9uLnZhbHVlKCkucHJpb3JpdHkp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQ29udmVyc2lvbiBlYXJsaWVzdCB0
aW1lIHRvIHNlbmQ6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5Db252ZXJzaW9uIGRh
dGE6ICIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICJcbkNvbnZlcnNpb24gcHJpb3JpdHk6
ICIsIG1fY29udmVyc2lvbi52YWx1ZSgpLnByaW9yaXR5LCAiXG5Db252ZXJzaW9uIGVhcmxpZXN0
IHRpbWUgdG8gc2VuZDogIik7CiAgICAgICAgIGlmICghbV9lYXJsaWVzdFRpbWVUb1NlbmQpCiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIk5vdCBzZXQiKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSAqbV9lYXJsaWVzdFRpbWVU
b1NlbmQgLSBXYWxsVGltZTo6bm93KCk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgoc2Vj
b25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNVbnRpbFNlbmQgPD0gNDhfaCkgPyAiV2l0
aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4IGhvdXJzIik7CiAgICAgICAgIH0KLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbkNvbnZlcnNpb24gcmVxdWVzdCBzZW50OiAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoKHdhc0NvbnZlcnNpb25TZW50KCkgPyAidHJ1ZSIg
OiAiZmFsc2UiKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkNvbnZlcnNpb24gcmVxdWVz
dCBzZW50OiAiLCAod2FzQ29udmVyc2lvblNlbnQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbk5vIGNvbnZlcnNpb24g
ZGF0YS4iKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDI1Mzk2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIxLDE0ICs0MjEsMTEgQEAgc3RhdGljIGJvb2wgaGFzSGFkUmVj
ZW50VXNlckludGVyYWN0aW9uKAogU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3Ry
aW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJSZWdpc3RyYWJsZSBkb21haW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCByZWdpc3RyYWJsZURv
bWFpbi5zdHJpbmcoKSwgJ1xuJyk7CiAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0
aW9uKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nLCAiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAgIGlmIChoYXNI
YWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vj
b25kc1NpbmNlRXBvY2goKSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0aGlu
IDI0IGhvdXJzIik7CiAgICAgZWxzZQpAQCAtNDYwLDEwICs0NTcsNyBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAi
aXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVu
dFJlc291cmNlIiwgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3Zl
ZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZGF0YVJlY29yZHNSZW1vdmVkKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnXG4nLCAiICAgIGRh
dGFSZWNvcmRzUmVtb3ZlZDogIiwgZGF0YVJlY29yZHNSZW1vdmVkLCAnXG4nKTsKIAogI2lmIEVO
QUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAiZm9u
dHNGYWlsZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCk7CkBAIC00NzMsOCArNDY3LDcgQEAg
U3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKAogICAgIGFwcGVuZFNjcmVl
bkFQSU9wdGlvblNldChidWlsZGVyLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgYXBw
ZW5kSGFzaFNldChidWlsZGVyLCAiY2FudmFzVGV4dFdyaXR0ZW4iLCBjYW52YXNBY3Rpdml0eVJl
Y29yZC50ZXh0V3JpdHRlbik7CiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiY2FudmFzUmVh
ZERhdGEiLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJcblxuIik7CiAjZW5kaWYKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0
eS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUludGVncml0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxNyArMjEyLDEyIEBAIFN0
cmluZyBpbnRlZ3JpdHlNaXNtYXRjaERlc2NyaXB0aW9uKGNvbnMKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIi4gRmFpbGVk
IGludGVncml0eSBtZXRhZGF0YSBjaGVjay4gIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoIkNvbnRl
bnQgbGVuZ3RoOiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi4gRmFpbGVkIGludGVncml0eSBtZXRhZGF0YSBj
aGVjay4gQ29udGVudCBsZW5ndGg6ICIpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9
IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobm8g
Y29udGVudCkiKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBjb250ZW50IGxlbmd0
aDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIocmVzb3VyY2UucmVzcG9uc2UoKS5leHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIiwgRXhwZWN0ZWQgbWV0
YWRhdGE6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGludGVncml0eU1ldGFkYXRhKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBjb250ZW50IGxlbmd0aDogIiwgcmVzb3VyY2UucmVz
cG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSwgIiwgRXhwZWN0ZWQgbWV0YWRhdGE6ICIs
IGludGVncml0eU1ldGFkYXRhKTsKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAko
cmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6OnJvb3RNYXJnaW4oCiAgICAgUGh5c2ljYWxCb3hTaWRlIHNpZGVzWzRd
ID0geyBQaHlzaWNhbEJveFNpZGU6OlRvcCwgUGh5c2ljYWxCb3hTaWRlOjpSaWdodCwgUGh5c2lj
YWxCb3hTaWRlOjpCb3R0b20sIFBoeXNpY2FsQm94U2lkZTo6TGVmdCB9OwogICAgIGZvciAoYXV0
byBzaWRlIDogc2lkZXMpIHsKICAgICAgICAgYXV0byYgbGVuZ3RoID0gbV9yb290TWFyZ2luLmF0
KHNpZGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihsZW5ndGguaW50VmFs
dWUoKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGxlbmd0aC5pbnRWYWx1ZSgpKTsK
ICAgICAgICAgaWYgKGxlbmd0aC50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCclJyk7CiAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsMTQgKzc1LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudAog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByb3RvY29sLCAiZmlsZSIpKQogICAgICAg
ICByZXR1cm4gImZpbGVfXzAiX3M7CiAgICAgCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHByb3RvY29sKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKHBvcnQudmFsdWVPcigwKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2VwYXJhdG9yQ2hhcmFj
dGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2VwYXJhdG9yQ2hhcmFj
dGVyLCBwb3J0LnZhbHVlT3IoMCkpOwogfQogCiBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHJldmlzaW9uIDI1Mzk2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0
Qnl0ZU51bWJlcihzaXplX3QgbnUKICAgICBpZiAobnVtYmVyID49IDEwNDg1NzYpCiAgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChudW1iZXIgLyAx
MDQ4NTc2LiwgMiksICIgTUIiKTsKICAgICBpZiAobnVtYmVyID49IDEwMjQpCi0gICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChudW1iZXIgLyAxMDI0
LCAxKSwgIiBrQiIpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkV2lkdGgobnVtYmVyIC8gMTAyNC4sIDEpLCAiIGtCIik7CiAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKG51bWJlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAkocmV2aXNpb24gMjUz
OTY0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZz
ZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4LDggQEAgc3RhdGljIFN0cmluZyBz
bmFwT2Zmc2V0c1RvU3RyaW5nKGNvbnN0IAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7Ci0gICAgZm9yIChhdXRvJiBvZmZzZXQg
OiBzbmFwT2Zmc2V0cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIo
b2Zmc2V0LnRvRmxvYXQoKSwgMSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
fQorICAgIGZvciAoYXV0byYgb2Zmc2V0IDogc25hcE9mZnNldHMpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChvZmZzZXQudG9GbG9hdCgpLCAxKSwg
JyAnKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CkBAIC05MCwxMyArODgsOCBAQCBzdGF0aWMgU3RyaW5nIHNuYXBPZmZzZXRSYW5n
ZXNUb1N0cmluZyhjCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiWyAiKTsKLSAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzKSB7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRX
aWR0aE51bWJlcihyYW5nZS5zdGFydC50b0Zsb2F0KCksIDEpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRXaWR0aE51bWJl
cihyYW5nZS5lbmQudG9GbG9hdCgpLCAxKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIpICIpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzKQorICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyYW5nZS5zdGFy
dC50b0Zsb2F0KCksIDEpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmFuZ2Uu
ZW5kLnRvRmxvYXQoKSwgMSksICIpICIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTEwNCwxMCArOTcsMTAgQEAgc3RhdGlj
IFN0cmluZyBzbmFwT2Zmc2V0UmFuZ2VzVG9TdHJpbmcoYwogc3RhdGljIFN0cmluZyBzbmFwUG9y
dE9yQXJlYVRvU3RyaW5nKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInt7IiwKLSAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qu
eCgpLCAxKSwgIiwgIiwKLSAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qu
eSgpLCAxKSwgIn0geyIsCi0gICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0
LndpZHRoKCksIDEpLCAiLCAiLAotICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgo
cmVjdC5oZWlnaHQoKSwgMSksICJ9fSIpOworICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgocmVjdC54KCkudG9Eb3VibGUoKSwgMSksICIsICIsCisgICAgICAgIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRXaWR0aChyZWN0LnkoKS50b0RvdWJsZSgpLCAxKSwgIn0geyIsCisgICAgICAg
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0LndpZHRoKCkudG9Eb3VibGUoKSwgMSks
ICIsICIsCisgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0LmhlaWdodCgp
LnRvRG91YmxlKCksIDEpLCAifX0iKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWNpbWFsLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVjaW1hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjUsMTAgKzEwMjUsOCBAQCBT
dHJpbmcgRGVjaW1hbDo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGRpZ2l0c1tpXSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYWRqdXN0ZWRFeHBv
bmVudCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWRqdXN0ZWRFeHBvbmVudCA8IDAg
PyAiZSIgOiAiZSsiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFkanVzdGVk
RXhwb25lbnQpOwotICAgICAgICB9CisgICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50KQorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWRqdXN0ZWRFeHBvbmVudCA8IDAgPyAiZSIgOiAiZSsi
LCBhZGp1c3RlZEV4cG9uZW50KTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJ
KHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDIxICszNDAsMTUgQEAgU3RyaW5nIENvbG9y
Ojpjc3NUZXh0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgicmdiKCIpOwogCi0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4ocmVkKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
YnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVkKCkpLCAiLCAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihncmVlbigpKSwgIiwgIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oYmx1ZSgpKSk7CiAKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihncmVlbigpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotCi0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oYmx1ZSgpKSk7CiAgICAgaWYgKGNvbG9ySGFzQWxwaGEpIHsKICAgICAgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNzZXJpYWxpemluZy1jc3MtdmFsdWVzCi0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgaW50IGFscGhhID0gdGhp
cy0+YWxwaGEoKTsKICAgICAgICAgZmxvYXQgcm91bmRlZCA9IHJvdW5kKGFscGhhICogMTAwIC8g
MjU1LjBmKSAvIDEwMDsKICAgICAgICAgaWYgKHJvdW5kKHJvdW5kZWQgKiAyNTUpICE9IGFscGhh
KQogICAgICAgICAgICAgcm91bmRlZCA9IHJvdW5kKGFscGhhICogMTAwMCAvIDI1NS4wZikgLyAx
MDAwOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJvdW5kZWQp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHJvdW5kZWQpKTsKICAgICB9CiAgICAgICAgIAogICAgIGJ1aWxkZXIuYXBwZW5kKCcp
Jyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE3ICs1
NiwxMSBAQCBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBXVEY6OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCi0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihyZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlZCgpKSwgJyAn
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGdyZWVuKCkpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oYmx1ZSgpKSk7CiAKLSAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKGdyZWVuKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Cisg
ICAgaWYgKCFXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYWxwaGEoKSwgMS4wZikpCisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIgLyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGFs
cGhhKCkpKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoYmx1ZSgp
KTsKLSAgICBpZiAoIVdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBoYSgpLCAxLjBmKSkgewot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAvICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGFscGhhKCkpOwotICAgIH0KICAgICBidWlsZGVyLmFw
cGVuZCgnKScpOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc3LDExICs1NzcsNyBAQCBGbG9hdFJl
Y3QgR3JhcGhpY3NMYXllcjo6YWRqdXN0Q292ZXJhZ2VSCiBTdHJpbmcgR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQog
ewogICAgIC8vIHwgaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXIgaW4gQ1NTLCBz
byB0aGlzIGNhbiBuZXZlciBjb25mbGljdCB3aXRoIGEga2V5ZnJhbWUgaWRlbnRpZmllci4KLSAg
ICBTdHJpbmdCdWlsZGVyIGlkOwotICAgIGlkLmFwcGVuZExpdGVyYWwoIi18dHJhbnNpdGlvbiIp
OwotICAgIGlkLmFwcGVuZE51bWJlcihzdGF0aWNfY2FzdDxpbnQ+KHByb3BlcnR5KSk7Ci0gICAg
aWQuYXBwZW5kKCctJyk7Ci0gICAgcmV0dXJuIGlkLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoIi18dHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PGludD4ocHJvcGVydHkpLCAnLScp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1Rp
bWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2NSwxMiArNzY1LDcgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6
OmNyZQogICAgIGxheWVyLT5zZXRFZGdlQW50aWFsaWFzaW5nTWFzaygwKTsKICAgICBsYXllci0+
c2V0T3BhcXVlKG1fdGlsZXNBcmVPcGFxdWUpOwogCi0gICAgU3RyaW5nQnVpbGRlciBuYW1lQnVp
bGRlcjsKLSAgICBuYW1lQnVpbGRlci5hcHBlbmQoInRpbGUgYXQgIik7Ci0gICAgbmFtZUJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKHRpbGVSZWN0LmxvY2F0aW9uKCkueCgpKTsKLSAgICBuYW1lQnVpbGRl
ci5hcHBlbmQoJywnKTsKLSAgICBuYW1lQnVpbGRlci5hcHBlbmROdW1iZXIodGlsZVJlY3QubG9j
YXRpb24oKS55KCkpOwotICAgIGxheWVyLT5zZXROYW1lKG5hbWVCdWlsZGVyLnRvU3RyaW5nKCkp
OworICAgIGxheWVyLT5zZXROYW1lKG1ha2VTdHJpbmcoInRpbGUgYXQgIiwgdGlsZVJlY3QubG9j
YXRpb24oKS54KCksICcsJywgdGlsZVJlY3QubG9jYXRpb24oKS55KCkpKTsKIAogICAgIGZsb2F0
IHRlbXBvcmFyeVNjYWxlRmFjdG9yID0gb3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKG1fdGlsZUNhY2hlTGF5ZXIp
OwogICAgIG1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IgfD0gdGVtcG9yYXJ5U2Nh
bGVGYWN0b3IgIT0gMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCShyZXZpc2lv
biAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA0LDM3ICs3MDQsMzcgQEAg
c3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoU3RyaW5nQnVpbGRlciYgYgogc3RhdGljIHZvaWQgcHJp
bnRUcmFuc2Zvcm0oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ0FUcmFuc2Zvcm0zRCYg
dHJhbnNmb3JtKQogewogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7Ci0gICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTExKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodHJhbnNmb3JtLm0xMik7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEyKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
LSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMTMpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTE0KTsKKyAgICBidWlsZGVyLmFwcGVuZChG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgiOyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KHRyYW5zZm9ybS5tMjEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0g
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTIyKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9y
bS5tMjIpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0yMyk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIzKSk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRy
YW5zZm9ybS5tMjQpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yNCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCI7ICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0zMSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMxKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMzIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMikpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFu
c2Zvcm0ubTMzKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMzMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1
aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0zNCk7CisgICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTQxKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNm
b3JtLm00Mik7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQyKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tNDMpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00Mykp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcih0cmFuc2Zvcm0ubTQ0KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnXScpOwogfQogCkBAIC03ODUsMjcgKzc4NSwyNyBAQCBzdGF0aWMgdm9pZCBwcmludExheWVy
KFN0cmluZ0J1aWxkZXImIGJ1CiAgICAgYnVpbGRlci5hcHBlbmQoIigiKTsKICAgICBidWlsZGVy
LmFwcGVuZChsYXllclR5cGVOYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZCgiIFsiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGxheWVyUG9zaXRpb24ueCgpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyUG9z
aXRpb24ueCgpKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGxheWVyUG9zaXRpb24ueSgpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyUG9zaXRpb24ueSgpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKGxheWVyUG9zaXRpb24ueigpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyUG9zaXRpb24ueigpKSk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoIl0gWyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
bGF5ZXJCb3VuZHMueCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKGxheWVyQm91bmRzLngoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7
Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckJvdW5kcy55KCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5
ZXJCb3VuZHMueSgpKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGxheWVyQm91bmRzLndpZHRoKCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJCb3VuZHMud2lk
dGgoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihsYXllckJvdW5kcy5oZWlnaHQoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy5oZWlnaHQoKSkp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCJdIFsiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKGxheWVyQW5jaG9yUG9pbnQueCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueCgpKSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKGxheWVyQW5jaG9yUG9pbnQueSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueSgpKSk7CiAgICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KGxheWVyQW5jaG9yUG9pbnQueigpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueigpKSk7CiAgICAgYnVpbGRlci5h
cHBlbmQoIl0gc3VwZXJsYXllcj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGF5ZXItPnN1cGVybGF5ZXIoKSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsYXll
ci0+c3VwZXJsYXllcigpKSk7CiAKICAgICAvLyBQcmludCBuYW1lIGlmIG5lZWRlZAogICAgIFN0
cmluZyBsYXllck5hbWUgPSBDQUNGTGF5ZXJHZXROYW1lKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
OwpAQCAtODIyLDcgKzgyMiw3IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRl
ciYgYnUKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIHByaW50SW5kZW50
KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGJvcmRlcldp
ZHRoICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGJvcmRl
cldpZHRoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihib3JkZXJXaWR0aCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAg
IH0KIApAQCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVp
bGRlciYgYnUKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIHByaW50SW5k
ZW50KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKG9wYWNp
dHkgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJP
cGFjaXR5KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihsYXllck9wYWNpdHkpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAg
ICB9CiAKQEAgLTg4Miw5ICs4ODIsOSBAQCBzdGF0aWMgdm9pZCBwcmludExheWVyKFN0cmluZ0J1
aWxkZXImIGJ1CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgICAg
IHByaW50SW5kZW50KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIihjb250ZW50cyAoaW1hZ2UgWyIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIoQ0dJbWFnZUdldFdpZHRoKGltYWdlQ29udGVudHMpKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKENHSW1hZ2VHZXRXaWR0aChpbWFnZUNvbnRlbnRzKSk7CiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoQ0dJ
bWFnZUdldEhlaWdodChpbWFnZUNvbnRlbnRzKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJdKSkiKTsKICAgICAgICAgfQogCkBAIC04OTQsOSArODk0LDkgQEAgc3RhdGljIHZv
aWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgICAgICAgICBwcmludEluZGVudChidWlsZGVyLCBpbmRlbnQgKyAxKTsK
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoY29udGVudHMgKGJhY2tpbmctc3RvcmUgWyIp
OwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoQ0dJbWFnZUdldFdpZHRoKGltYWdl
Q29udGVudHMpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKENHSW1hZ2VHZXRXaWR0aChp
bWFnZUNvbnRlbnRzKSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoQ0dJbWFnZUdldEhlaWdodChpbWFnZUNvbnRlbnRz
KSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29u
dGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJdKSkiKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTkyNywxNSArOTI3LDE1IEBAIFN0cmluZyBQbGF0Zm9ybUNBTGF5ZXJXaW46Omxh
eWVyVHJlZUFzU3QKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFw
cGVuZCgiXG5cbioqIFJlbmRlciB0cmVlIGF0IHRpbWUgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29u
ZHMoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgKGJvdW5kcyAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJvb3RCb3VuZHMub3JpZ2luLngpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm9vdEJvdW5kcy5vcmln
aW4ueCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIocm9vdEJvdW5kcy5vcmlnaW4ueSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLm9yaWdpbi55KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKHJvb3RCb3VuZHMuc2l6ZS53aWR0aCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLnNpemUud2lkdGgpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgneCcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIocm9vdEJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLnNpemUuaGVpZ2h0KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoIikgKipcblxuIik7CiAKICAgICAvLyBQcmludCBsYXllciB0cmVlIGZy
b20gdGhlIHJvb3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHJldmlzaW9u
IDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDEyICs2NDYsNyBAQCBT
dHJpbmcgYnVpbGRWYXJpYXRpb25TZXR0aW5ncyhGVF9GYWNlIGZhCiAgICAgZm9yIChhdXRvJiB2
YXJpYXRpb24gOiB2YXJpYXRpb25zVG9CZUFwcGxpZWQpIHsKICAgICAgICAgaWYgKCFidWlsZGVy
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHZhcmlhdGlvbi5rZXlbMF0pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCh2
YXJpYXRpb24ua2V5WzFdKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtleVsy
XSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlvbi5rZXlbM10pOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnPScpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKHZhcmlhdGlvbi52YWx1ZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlv
bi5rZXlbMF0sIHZhcmlhdGlvbi5rZXlbMV0sIHZhcmlhdGlvbi5rZXlbMl0sIHZhcmlhdGlvbi5r
ZXlbM10sICc9JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih2YXJpYXRpb24udmFs
dWUpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDcgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2s6OmdlbmVyYXRlTQogICAgICAgICBtX2J1ZmZlci5hcHBlbmQoIkF1ZGlv
IFRyYWNrIElEOiAiKTsKICAgICBlbHNlCiAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgiVmlkZW8g
VHJhY2sgSUQ6ICIpOwotICAgIG1fYnVmZmVyLmFwcGVuZCh0cmFjay5pZCgpKTsKLSAgICBtX2J1
ZmZlci5hcHBlbmQoIiBDb3VudGVyOiAiKTsKLSAgICBtX2J1ZmZlci5hcHBlbmROdW1iZXIoKytt
X2NvdW50ZXIpOwotICAgIG1fYnVmZmVyLmFwcGVuZCgiXHJcbi0tLS0tLS0tLVxyXG4iKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQodHJhY2suaWQoKSwgIiBDb3VudGVyOiAiLCArK21fY291bnRlciwg
IlxyXG4tLS0tLS0tLS1cclxuIik7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmlu
ZyhTdHJpCiAKICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgIEFTU0VSVChwcm94eVNlcnZl
ci5wb3J0KCkgIT0gLTEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHByb3h5U2VydmVyLnBv
cnQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQocHJveHlTZXJ2ZXIucG9ydCgpKTsKIH0KIAogU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFZlY3RvcjxQcm94eVNlcnZlcj4mIHByb3h5U2VydmVycykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY4LDE3ICs3NjgsMTAgQEAgc3RhdGljIFN0cmlu
ZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiYm9keSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgneycpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0VGFnTmFt
ZShuKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2hpbGQgIik7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihuLT5jb21wdXRlTm9kZUluZGV4
KCkpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyIpOwotICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0VGFnTmFtZShuKSk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnfScpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG4tPmlz
U2hhZG93Um9vdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3snLCBnZXRUYWdO
YW1lKG4pLCAnfScpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoImNoaWxkICIsIG4tPmNvbXB1dGVOb2RlSW5kZXgoKSwgIiB7IiwgZ2V0VGFnTmFtZShu
KSwgJ30nKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiZG9jdW1lbnQiKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVy
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJ
KHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYg
KGJ1aWxkZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
IAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1iZXIt
PnZhbHVlKCkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihudW1iZXItPnZhbHVlKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFN0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE2ICs1
NywxMiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRGbGFnKFN0cmluZ0J1aWxkZXImIHN0CiAKIHN0YXRp
YyB2b2lkIGFwcGVuZE51bWJlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBmbG9hdCBu
dW1iZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihu
dW1iZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihudW1iZXIpLCAnICcpOwog
fQogCiBzdGF0aWMgdm9pZCBhcHBlbmRQb2ludChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LngoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50
LnkoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LngoKSksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihwb2ludC55KCkpLCAnICcpOwogfQogCiB2
b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0
UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw0MCAr
NTksMTYgQEAgU3RyaW5nIGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29uc3QgUGF0aCYgcAogICAgICAg
ICBwYXRoLmFwcGx5KFsmYnVpbGRlcl0gKGNvbnN0IFBhdGhFbGVtZW50JiBlbGVtZW50KSB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewogICAgICAgICAgICAgY2FzZSBQYXRo
RWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ00nKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBv
aW50c1swXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueSgpKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnTScsIGVsZW1lbnQucG9pbnRzWzBdLngo
KSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0wnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
ZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
TCcsIGVsZW1lbnQucG9pbnRzWzBdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlw
ZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
UScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRz
WzBdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOwotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMV0ueCgpKTsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1EnLCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxlbWVudC5wb2ludHNbMF0ueSgpLCAn
LCcsIGVsZW1lbnQucG9pbnRzWzFdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1sxXS55KCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlw
ZTo6QWRkQ3VydmVUb1BvaW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdDJyk7
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0u
eCgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxl
bWVudC5wb2ludHNbMV0ueSgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzJd
LngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1syXS55KCkpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdDJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAnICcs
IGVsZW1lbnQucG9pbnRzWzBdLnkoKSwgJywnLCBlbGVtZW50LnBvaW50c1sxXS54KCksICcgJywg
ZWxlbWVudC5wb2ludHNbMV0ueSgpLCAnLCcsIGVsZW1lbnQucG9pbnRzWzJdLngoKSwgJyAnLCBl
bGVtZW50LnBvaW50c1syXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdaJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oCShy
ZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDkgKzkzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGJ1
aWxkZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKIAot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC0+eCgp
KTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LT55KCkpOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihwb2ludC0+eCgpKSwg
JyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LT55KCkpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw3
ICsyMzksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkg
JiYgYnVpbGRlcltidWlsZGVyLmxlbmd0aCgpIC0gMV0gIT0gJygnKQogICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihudW1iZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKG51bWJlcikpOwogICAgICAgICBhcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cnMoYnVpbGRlciwgbnVtYmVycy4uLik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDI1Mzk2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDExIEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRy
YWl0czxGbG9hdFBvaW50PiB7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgRmxvYXRQb2ludCYgdHlwZSkKICAgICB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLngoKSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIodHlwZS55KCkpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgICAgIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS54KCkpLAorICAgICAgICAgICAgJyAnLAorICAg
ICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLnkoKSkKKyAgICAg
ICAgKTsKICAgICB9CiB9OwogCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCBzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8RmxvYXRSZWN0PiB7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgRmxvYXRSZWN0JiB0eXBlKQogICAgIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUueCgp
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcih0eXBlLnkoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS53aWR0
aCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgICAg
ICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUueCgpKSwKKyAgICAgICAgICAg
ICcgJywKKyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS55
KCkpLAorICAgICAgICAgICAgJyAnLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbih0eXBlLndpZHRoKCkpLAorICAgICAgICAgICAgJyAnLAorICAgICAgICAgICAg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLmhlaWdodCgpKQorICAgICAgICAp
OwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY4NiwxNSArMTY4NiwxNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+
IEludGVybmFsczo6ZHVtcE1hcmtlCiAgICAgU3RyaW5nQnVpbGRlciByZWN0U3RyaW5nOwogICAg
IHJlY3RTdHJpbmcuYXBwZW5kTGl0ZXJhbCgibWFya2VyIHJlY3RzOiAiKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHJlY3QgOiByZWN0cykgewotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZCgnKCcp
OwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJlY3QueCgp
KTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICByZWN0
U3RyaW5nLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJlY3QueSgpKTsKLSAgICAgICAgcmVj
dFN0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKHJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihyZWN0LmhlaWdodCgpKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRMaXRlcmFs
KCIpICIpOworICAgICAgICByZWN0U3RyaW5nLmFwcGVuZCgKKyAgICAgICAgICAgICcoJywKKyAg
ICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC54KCkpLAorICAg
ICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNp
b24ocmVjdC55KCkpLAorICAgICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC53aWR0aCgpKSwKKyAgICAgICAgICAgICIsICIsCisg
ICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlY3QuaGVpZ2h0KCkp
LAorICAgICAgICAgICAgIikgIgorICAgICAgICApOwogICAgIH0KICAgICByZXR1cm4gcmVjdFN0
cmluZy50b1N0cmluZygpOwogfQpAQCAtMjIyOCw5ICsyMjMwLDcgQEAgU3RyaW5nIEludGVybmFs
czo6cGFyc2VyTWV0YURhdGEoSlNDOjpKUwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Z1bmN0aW9u
RXhlY3V0YWJsZSgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWN1dGFi
bGUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwog
ICAgICAgICBTdHJpbmcgaW5mZXJyZWROYW1lID0gZnVuY0V4ZWN1dGFibGUtPmVjbWFOYW1lKCku
c3RyaW5nKCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBcIiIpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKGluZmVycmVkTmFtZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoJyInKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiZnVuY3Rpb24gXCIiLCBpbmZlcnJlZE5h
bWUsICciJyk7CiAgICAgfSBlbHNlIGlmIChleGVjdXRhYmxlLT5pc0V2YWxFeGVjdXRhYmxlKCkp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJldmFsIik7CiAgICAgZWxzZSBpZiAoZXhl
Y3V0YWJsZS0+aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpKQpAQCAtMjI0MCwxNSArMjI0MCw3
IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKEpTQzo6SlMKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiB7ICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc3RhcnRMaW5lKTsKLSAgICByZXN1bHQu
YXBwZW5kKCc6Jyk7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihzdGFydENvbHVtbik7Ci0gICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiAtICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoZW5k
TGluZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnOicpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIo
ZW5kQ29sdW1uKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIH0iKTsKKyAgICByZXN1bHQu
YXBwZW5kKCIgeyAiLCBzdGFydExpbmUsICc6Jywgc3RhcnRDb2x1bW4sICIgLSAiLCBlbmRMaW5l
LCAnOicsIGVuZENvbHVtbiwgIiB9Iik7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CiB9CkBAIC0zNDM4LDI0ICszNDMwLDE0IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxz
OjpnZXRDdXJyZW4KICAgICBDdXJzb3IgY3Vyc29yID0gZG9jdW1lbnQtPmZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLmN1cnJlbnRNb3VzZUN1cnNvcigpOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInR5cGU9Iik7Ci0gICAgcmVzdWx0LmFwcGVu
ZChjdXJzb3JUeXBlVG9TdHJpbmcoY3Vyc29yLnR5cGUoKSkpOwotICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIgaG90U3BvdD0iKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKGN1cnNvci5ob3RT
cG90KCkueCgpKTsKLSAgICByZXN1bHQuYXBwZW5kKCcsJyk7Ci0gICAgcmVzdWx0LmFwcGVuZE51
bWJlcihjdXJzb3IuaG90U3BvdCgpLnkoKSk7CisgICAgcmVzdWx0LmFwcGVuZCgidHlwZT0iLCBj
dXJzb3JUeXBlVG9TdHJpbmcoY3Vyc29yLnR5cGUoKSksICIgaG90U3BvdD0iLCBjdXJzb3IuaG90
U3BvdCgpLngoKSwgJywnLCBjdXJzb3IuaG90U3BvdCgpLnkoKSk7CiAgICAgaWYgKGN1cnNvci5p
bWFnZSgpKSB7CiAgICAgICAgIEZsb2F0U2l6ZSBzaXplID0gY3Vyc29yLmltYWdlKCktPnNpemUo
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBpbWFnZT0iKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHNpemUud2lkdGgoKSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoJ3gnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHNpemUuaGVpZ2h0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIgaW1hZ2U9IiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihzaXplLndpZHRoKCkpLCAneCcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oc2l6ZS5oZWlnaHQoKSkpOwogICAgIH0KICNpZiBFTkFC
TEUoTU9VU0VfQ1VSU09SX1NDQUxFKQotICAgIGlmIChjdXJzb3IuaW1hZ2VTY2FsZUZhY3Rvcigp
ICE9IDEpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBzY2FsZT0iKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGN1cnNvci5pbWFnZVNjYWxlRmFj
dG9yKCksIDgpOwotICAgIH0KKyAgICBpZiAoY3Vyc29yLmltYWdlU2NhbGVGYWN0b3IoKSAhPSAx
KQorICAgICAgICByZXN1bHQuYXBwZW5kKCIgc2NhbGU9IiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpLCA4KSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAjZWxzZQpAQCAtNDM1Myw3ICs0MzM1LDcgQEAgc3Rh
dGljIHZvaWQgYXBwZW5kT2Zmc2V0cyhTdHJpbmdCdWlsZGVyJgogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBqdXN0U3RhcnRpbmcgPSBmYWxzZTsKIAotICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihjb29yZGluYXRlLnRvVW5zaWduZWQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNv
b3JkaW5hdGUudG9VbnNpZ25lZCgpKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgfSIpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VP
dmVybGF5Q2xpZW50LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNyAr
ODgsNyBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZGlkTW92ZVRvUGFnCiAKIHZvaWQg
TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAg
U3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiTW9ja1Bh
Z2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCBkaXJ0eVJlY3QgKCIpOwotICAgIG1lc3NhZ2UuYXBw
ZW5kTnVtYmVyKGRpcnR5UmVjdC54KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3QueSgpKTsKLSAgICBtZXNzYWdl
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZGlydHlSZWN0
LndpZHRoKCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBtZXNzYWdl
LmFwcGVuZE51bWJlcihkaXJ0eVJlY3QuaGVpZ2h0KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0
ZXJhbCgiKSIpOwotICAgIG92ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpEZWJ1
ZywgbWVzc2FnZS50b1N0cmluZygpKTsKKyAgICBvdmVybGF5LnBhZ2UoKS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3Nh
Z2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1Jl
Y3QgZGlydHlSZWN0ICgiLCBkaXJ0eVJlY3QueCgpLCAiLCAiLCBkaXJ0eVJlY3QueSgpLCAiLCAi
LCBkaXJ0eVJlY3Qud2lkdGgoKSwgIiwgIiwgZGlydHlSZWN0LmhlaWdodCgpLCAiKSIpKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIApAQCAt
MTE3LDE0ICsxMDcsNyBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QoUGFn
CiAKIGJvb2wgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBv
dmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIFN0cmluZ0J1
aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIk1vY2tQYWdlT3Zlcmxh
eUNsaWVudDo6bW91c2VFdmVudCBsb2NhdGlvbiAoIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1i
ZXIoZXZlbnQucG9zaXRpb24oKS54KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihldmVudC5wb3NpdGlvbigpLnkoKSk7Ci0gICAg
bWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIpIik7Ci0gICAgb3ZlcmxheS5wYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBN
ZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3RyaW5nKCkpOwotCisgICAgb3ZlcmxheS5w
YWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtYWtlU3RyaW5nKCJNb2NrUGFnZU92
ZXJsYXlDbGllbnQ6Om1vdXNlRXZlbnQgbG9jYXRpb24gKCIsIGV2ZW50LnBvc2l0aW9uKCkueCgp
LCAiLCAiLCBldmVudC5wb3NpdGlvbigpLnkoKSwgIikiKSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysg
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEz
ICs3OCw3IEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHkKIHZvaWQg
WE1MRXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBU
ZXh0UG9zaXRpb24gcG9zaXRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgLy8gPHR5
cGVTdHJpbmc+IG9uIGxpbmUgPGxpbmVOdW1iZXI+IGF0IGNvbHVtbiA8Y29sdW1uTnVtYmVyPjog
PG1lc3NhZ2U+Ci0gICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZCh0eXBlU3RyaW5nKTsKLSAgICBt
X2Vycm9yTWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiIG9uIGxpbmUgIik7Ci0gICAgbV9lcnJvck1l
c3NhZ2VzLmFwcGVuZE51bWJlcihwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSk7Ci0gICAg
bV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIiBhdCBjb2x1bW4gIik7Ci0gICAgbV9lcnJv
ck1lc3NhZ2VzLmFwcGVuZE51bWJlcihwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKTsK
LSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBtX2Vycm9yTWVz
c2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlwZVN0
cmluZywgIiBvbiBsaW5lICIsIHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0IGNv
bHVtbiAiLCBwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdlKTsK
IH0KIAogc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhl
YWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKSW5k
ZXg6IFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBsb25nIFNlc3Npb25Ib3N0OjpzZW5kQ29tbWFuZFRvQmFja2VuZChjCiAgICAgbV9jb21tYW5k
UmVxdWVzdHMuYWRkKHNlcXVlbmNlSUQsIFdURk1vdmUocmVzcG9uc2VIYW5kbGVyKSk7CiAgICAg
U3RyaW5nQnVpbGRlciBtZXNzYWdlQnVpbGRlcjsKICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJ7XCJpZFwiOiIpOwotICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZE51bWJlcihzZXF1
ZW5jZUlEKTsKKyAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoc2VxdWVuY2VJRCk7CiAgICAgbWVz
c2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9kXCI6XCJBdXRvbWF0aW9uLiIpOwog
ICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChjb21tYW5kKTsKICAgICBtZXNzYWdlQnVpbGRlci5h
cHBlbmQoJyInKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEyLTMx
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbnVtZXJp
YyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBlbmQgY2Fu
IGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6
dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkVudHJ5Ojphc0pTT04gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9HYW1lcGFkL0dh
bWVwYWREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2FtZXBhZERhdGE6OmxvZ2dpbmdTdHJp
bmcgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9G
aWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJ1
aWxkSFRUUEhlYWRlcnMpOgorCiAyMDE5LTEyLTMxICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHJlbW90ZSBtZWRpYSByZXNvdXJjZSBsb2FkZXIgZm9yIHRo
ZSBHUFUgcHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTM5NjQp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsMTAgKzI2MCw3IEBAIHZvaWQgQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlcjo6dG9TdHJpbmcKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiVW5jb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOlxuIik7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIldlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoKyt1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0
aW9uLnRvU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViQ29yZTo6QWRDbGlj
a0F0dHJpYnV0aW9uICIsICsrdW5jb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciwgJ1xuJywgYXR0
cmlidXRpb24udG9TdHJpbmcoKSk7CiB9CiAKICAgICB1bnNpZ25lZCBjb252ZXJ0ZWRBdHRyaWJ1
dGlvbk51bWJlciA9IDA7CkBAIC0yNzQsMTAgKzI3MSw3IEBAIHZvaWQgQWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlcjo6dG9TdHJpbmcKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
Q29udmVydGVkIEFkIENsaWNrIEF0dHJpYnV0aW9uczpcbiIpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKCsrY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIgKyB1bmNvbnZlcnRlZEF0dHJp
YnV0aW9uTnVtYmVyKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGF0dHJpYnV0aW9uLnRvU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uICIsICsrY29udmVydGVkQXR0cmlidXRp
b25OdW1iZXIgKyB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyLCAnXG4nLCBhdHRyaWJ1dGlv
bi50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihidWlsZGVyLnRv
U3RyaW5nKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk4LDcgKzExOTgsNyBAQCBzdGF0aWMgU3Ry
aW5nIGJ1aWxkTGlzdChjb25zdCBXVEY6Okl0ZXJhCiAgICAgZm9yIChhdXRvIGRvbWFpbklEIDog
dmFsdWVzKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGRvbWFpbklEKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluSUQpOwogICAgIH0KICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgSGFz
aE1hcDx1bnNpZ25lZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogICAgIGZvciAoYXV0byB2YWx1
ZSA6IHJlc3VsdHMua2V5cygpKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKHZhbHVlKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwogICAg
IH0KIAogICAgIGF1dG8gZG9tYWluSURzT2ZJbnRlcmVzdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsK
QEAgLTI1MDYsMTQgKzI1MDYsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJSZWdpc3RyYWJsZSBkb21haW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbik7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJh
YmxlIGRvbWFpbjogIiwgZG9tYWluLCAnXG4nKTsKICAgICAKICAgICAvLyBVc2VyIGludGVyYWN0
aW9uCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgbV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KEhhZFVzZXJJ
bnRlcmFjdGlvbkluZGV4KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7CisgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAi
KTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29uZHMobV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpKSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgid2l0aGluIDI0IGhvdXJzIik7CiAgICAgZWxzZQpAQCAtMjU0NiwxMCArMjU0Myw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKICAgICBhcHBlbmRCb29sZWFu
KGJ1aWxkZXIsICJpc1ByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFp
bk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2
YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50Lmdl
dENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDog
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7Ci0gICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxuICAgIGRhdGFSZWNv
cmRzUmVtb3ZlZDogIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSwgJ1xuJyk7CiAKICAgICByZXNldFN0
YXRlbWVudChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSwxNiArNTc5LDE2
IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgICAgICBlcGlsb2d1
ZS5hcHBlbmRMaXRlcmFsKCJ7fVxuXSxcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5k
TGl0ZXJhbCgiXCJ0b3RhbHNcIjoge1xuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRM
aXRlcmFsKCJcImNhcGFjaXR5XCI6ICIpOwotICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTnVt
YmVyKGNhcGFjaXR5KTsKKyAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZChjYXBhY2l0eSk7CiAg
ICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICAgICAgICAgIGVw
aWxvZ3VlLmFwcGVuZExpdGVyYWwoIlwiY291bnRcIjogIik7Ci0gICAgICAgICAgICBlcGlsb2d1
ZS5hcHBlbmROdW1iZXIodG90YWxzLmNvdW50KTsKKyAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZCh0b3RhbHMuY291bnQpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiLFxu
Iik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJcImJvZHlTaXplXCI6ICIp
OwotICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTnVtYmVyKHRvdGFscy5ib2R5U2l6ZSk7Cisg
ICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmQodG90YWxzLmJvZHlTaXplKTsKICAgICAgICAgICAg
IGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBw
ZW5kTGl0ZXJhbCgiXCJhdmVyYWdlV29ydGhcIjogIik7Ci0gICAgICAgICAgICBlcGlsb2d1ZS5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0b3RhbHMuY291bnQgPyB0b3RhbHMud29ydGggLyB0
b3RhbHMuY291bnQgOiAwKTsKKyAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRvdGFscy5jb3VudCA/IHRvdGFscy53b3J0aCAvIHRvdGFs
cy5jb3VudCA6IDApKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlxuIik7
CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJ9XG59XG4iKTsKICAgICAgICAg
ICAgIGF1dG8gd3JpdGVEYXRhID0gZXBpbG9ndWUudG9TdHJpbmcoKS51dGY4KCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
NiwxNiArMjE2LDE2IEBAIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCAK
ICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcobV9rZXkuaGFzaEFzU3RyaW5nKCkpOwog
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImJvZHlTaXplXCI6ICIpOwotICAgIGpzb24uYXBwZW5kTnVtYmVyKGluZm8uYm9keVNpemUpOwor
ICAgIGpzb24uYXBwZW5kKGluZm8uYm9keVNpemUpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
LFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIndvcnRoXCI6ICIpOwotICAgIGpzb24u
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoaW5mby53b3J0aCk7CisgICAganNvbi5hcHBlbmQo
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihpbmZvLndvcnRoKSk7CiAgICAganNvbi5h
cHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicGFydGl0aW9u
XCI6ICIpOwogICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5wYXJ0aXRpb24o
KSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVy
YWwoIlwidGltZXN0YW1wXCI6ICIpOwotICAgIGpzb24uYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIobV90aW1lU3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSk7CisgICAg
anNvbi5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3RpbWVTdGFtcC5z
ZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSk7CiAgICAganNvbi5hcHBlbmRMaXRl
cmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiVVJMXCI6ICIpOwogICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKQEAg
LTIzNCw3ICsyMzQsNyBAQCB2b2lkIEVudHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwg
CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGluZm8uYm9keUhhc2gpOwogICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImJvZHlT
aGFyZUNvdW50XCI6ICIpOwotICAgIGpzb24uYXBwZW5kTnVtYmVyKGluZm8uYm9keVNoYXJlQ291
bnQpOworICAgIGpzb24uYXBwZW5kKGluZm8uYm9keVNoYXJlQ291bnQpOwogICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImhlYWRlcnNcIjog
e1xuIik7CiAgICAgYm9vbCBmaXJzdEhlYWRlciA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
MiwxMSArMTcyLDkgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRDdXJyZW50TWVtbwog
ICAgIGlmICghbWVtb3J5U3RhdHMudmFsdWVzLmlzRW1wdHkoKSkgewogICAgICAgICBzdGF0U3Ry
aW5nLmFwcGVuZChzZXBhcmF0b3IpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1l
bW9yeVN0YXRzLnZhbHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgc3RhdFN0cmluZy5h
cHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZChzZXBhcmF0b3IpOwot
ICAgICAgICAgICAgc3RhdFN0cmluZy5hcHBlbmQobWVtb3J5U3RhdHMua2V5c1tpXSk7CisgICAg
ICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZCgnXG4nLCBzZXBhcmF0b3IsIG1lbW9yeVN0YXRzLmtl
eXNbaV0pOwogICAgICAgICAgICAgYXBwZW5kU3BhY2VzKHN0YXRTdHJpbmcsIDM1IC0gbWVtb3J5
U3RhdHMua2V5c1tpXS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZE51
bWJlcihtZW1vcnlTdGF0cy52YWx1ZXNbaV0pOworICAgICAgICAgICAgc3RhdFN0cmluZy5hcHBl
bmQobWVtb3J5U3RhdHMudmFsdWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KICAgICBzdGF0U3Ry
aW5nLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2Ft
ZXBhZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQv
R2FtZXBhZERhdGEuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsMjUgKzkxLDE0
IEBAIFN0cmluZyBHYW1lcGFkRGF0YTo6bG9nZ2luZ1N0cmluZygpIGNvbnMKIHsKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2F4aXNWYWx1
ZXMuc2l6ZSgpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBheGVzLCAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihtX2J1dHRvblZhbHVlcy5zaXplKCkpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIGJ1dHRvbnNcbiIpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2F4aXNWYWx1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgQXhpcyAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihtX2F4aXNWYWx1ZXNbaV0pOwotICAgIH0KKyAgICBidWlsZGVyLmFw
cGVuZChtX2F4aXNWYWx1ZXMuc2l6ZSgpLCAiIGF4ZXMsICIsIG1fYnV0dG9uVmFsdWVzLnNpemUo
KSwgIiBidXR0b25zXG4iKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9heGlzVmFs
dWVzLnNpemUoKTsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEF4aXMgIiwgaSwgIjog
IiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2F4aXNWYWx1ZXNbaV0pKTsKIAog
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9i
dXR0b25WYWx1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgQnV0dG9uICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKG1fYnV0dG9uVmFsdWVzW2ldKTsKLSAgICB9CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2J1dHRvblZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiBCdXR0b24gIiwgaSwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbihtX2J1dHRvblZhbHVlc1tpXSkpOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDEzICs0ODUsNyBAQCBj
b25zdCBjaGFyKiBXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTCiAKICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIldlYkJhY2tGb3J3YXJkTGlzdCAweCIpOwogICAgIGFwcGVuZFVuc2lnbmVk
QXNIZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBidWlsZGVyKTsKLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1f
ZW50cmllcy5zaXplKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGVudHJpZXMsIGhh
cyBjdXJyZW50IGluZGV4ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fY3VycmVudEluZGV4ID8g
IllFUyIgOiAiTk8iKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0gICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5kZXggOiAwKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgnKScpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgLSAiLCBtX2Vu
dHJpZXMuc2l6ZSgpLCAiIGVudHJpZXMsIGhhcyBjdXJyZW50IGluZGV4ICIsIG1fY3VycmVudElu
ZGV4ID8gIllFUyIgOiAiTk8iLCAiICgiLCBtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRl
eCA6IDAsICcpJyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCShyZXZp
c2lvbiAyNTM5NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5NiwxNCArMzU5NiwxMCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhCiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKICAgICAgICAgaWYgKCFleGNlcHRpb25EZXRhaWxzLnNvdXJjZVVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGV4Y2VwdGlvbkRldGFpbHMuc291cmNl
VVJMKTsKLSAgICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzLmxpbmVOdW1iZXIgPiAwKSB7
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihleGNlcHRpb25EZXRhaWxzLmxpbmVOdW1iZXIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMuY29sdW1uTnVtYmVyID4g
MCkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJl
ciA+IDApCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonLCBleGNlcHRpb25EZXRh
aWxzLmxpbmVOdW1iZXIpOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMuY29sdW1u
TnVtYmVyID4gMCkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicsIGV4Y2VwdGlv
bkRldGFpbHMuY29sdW1uTnVtYmVyKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOiAiKTsKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZChleGNlcHRpb25EZXRh
aWxzLm1lc3NhZ2UpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAko
cmV2aXNpb24gMjUzOTY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkg
Pj0gNDAwKSB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGVycm9yTWVzc2FnZTsKICAgICAg
ICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJj
ZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiKTsKLSAgICAgICAgICAg
IGVycm9yTWVzc2FnZS5hcHBlbmROdW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Cisg
ICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
OwogICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIiAoIik7CiAgICAgICAg
ICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kKHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpOwogICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZCgnKScpOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDI1Mzk2NCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTQsMTcgKzE5NCw5IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQSGVh
ZGVycyhjb25zdCBSZXMKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVp
bGRlciBoZWFkZXI7Ci0gICAgaGVhZGVyLmFwcGVuZExpdGVyYWwoIkhUVFAgIik7Ci0gICAgaGVh
ZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBoZWFkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgaGVhZGVyLmFwcGVuZChyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgp
KTsKLSAgICBoZWFkZXIuYXBwZW5kKCdcbicpOwotICAgIGZvciAoYXV0byYgZmllbGQgOiByZXNw
b25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgaGVhZGVyLmFwcGVuZChmaWVsZC5r
ZXkpOwotICAgICAgICBoZWFkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgaGVhZGVy
LmFwcGVuZChmaWVsZC52YWx1ZSk7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
fQorICAgIGhlYWRlci5hcHBlbmQoIkhUVFAgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
JyAnLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnXG4nKTsKKyAgICBmb3IgKGF1dG8mIGZp
ZWxkIDogcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKQorICAgICAgICBoZWFkZXIuYXBwZW5k
KGZpZWxkLmtleSwgIjogIiwgZmllbGQudmFsdWUsICdcbicpOwogCiAgICAgLy8gSWYgdGhlIGNv
bnRlbnQgaXMgZW5jb2RlZCAobW9zdCBsaWtlbHkgY29tcHJlc3NlZCksIHRoZW4gZG9uJ3Qgc2Vu
ZCBpdHMgbGVuZ3RoIHRvIHRoZSBwbHVnaW4sCiAgICAgLy8gd2hpY2ggaXMgb25seSBpbnRlcmVz
dGVkIGluIHRoZSBkZWNvZGVkIGxlbmd0aCwgbm90IHlldCBrbm93biBhdCB0aGUgbW9tZW50LgpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAJKHJl
dmlzaW9uIDI1Mzk2NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3Rp
Y3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgSFJFU1VMVCBXZWJLaXRT
dGF0aXN0aWNzOjpjb21DbGFzc05hbWVDbwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
ICAgIGZvciAoYXV0byYgc2xvdCA6IGdDbGFzc05hbWVDb3VudCgpKSB7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKHNsb3QudmFsdWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZChzbG90
LnZhbHVlKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1x0Jyk7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHNsb3Qua2V5KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTM5NjQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBA
QAorMjAxOS0xMi0zMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIG51bWVyaWMgYXBwZW5kIGZ1bmN0aW9ucyBmcm9tIFN0cmluZ0J1aWxkZXIgbm93IHRo
YXQgYXBwZW5kIGNhbiBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIHRoZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTY3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6ZHVtcFBh
dGgpOgorICAgICAgICAoV1RSOjpyYW5nZVRvU3RyKToKKyAgICAgICAgKFdUUjo6c3R5bGVEZWNU
b1N0cik6CisgICAgICAgIChXVFI6OnNlY3VyaXR5T3JpZ2luVG9TdHIpOgorICAgICAgICAoV1RS
OjpmcmFtZVRvU3RyKToKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wTG9hZEV2ZW50KToKKyAgICAgICAg
KFdUUjo6ZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAg
ICAgIChXVFI6OmR1bXBSZXNwb25zZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToK
KyAgICAgICAgKFdUUjo6ZHVtcEVycm9yRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQp
OgorICAgICAgICAoV1RSOjpkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNo
b3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6d2lsbFNldFN0YXR1c2JhclRleHQpOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRFeGNlZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRC
ZWdpbkVkaXRpbmcpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEVu
ZEVkaXRpbmcpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2Vy
dE5vZGUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydFRl
eHQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZERlbGV0ZVJhbmdl
KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRBcHBseVN0
eWxlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRCZWdpbkVkaXRpbmcp
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEVuZEVkaXRpbmcpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZSk6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6c3RyaW5nQXRPZmZzZXQpOgorCiAyMDE5LTEy
LTMxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXUEVdIE9wZW5KUEVHIG1pc3NpbmcgaW4gaW5zdGFsbCBkZXBlbmRlbmNpZXMgc2Ny
aXB0LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI1Mzk2NCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNl
c3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNCArODksOSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBzdGF0aWMgbG9uZyBzZXF1ZW5jZUlEID0gMDsKICAgICAgICAgU3RyaW5nQnVp
bGRlciBtZXNzYWdlQnVpbGRlcjsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgie1wiaWRcIjoiKTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKCsrc2Vx
dWVuY2VJRCk7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcIm1ldGhv
ZFwiOlwiQXV0b21hdGlvbi4iKTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKGNvbW1h
bmQpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgbWVzc2Fn
ZUJ1aWxkZXIuYXBwZW5kKCJ7XCJpZFwiOiIsICsrc2VxdWVuY2VJRCwgIixcIm1ldGhvZFwiOlwi
QXV0b21hdGlvbi4iLCBjb21tYW5kLCAnIicpOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcInBh
cmFtc1wiOiIpOwotICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMp
OworICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCIsXCJwYXJhbXNcIjoiLCBwYXJh
bWV0ZXJzKTsKICAgICAgICAgfQogICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoJ30nKTsK
ICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZSgiU2VuZE1lc3NhZ2VUb0JhY2tlbmQi
LCBnX3ZhcmlhbnRfbmV3KCIodHRzKSIsIG1fY29ubmVjdGlvbklELCBtX3RhcmdldC5pZCwgbWVz
c2FnZUJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNTM5NjQpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDE4
ICs3NSwxMyBAQCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZXF1ZXN0UmVzcG9uc2VNYXAuY29udGFpbnMocGF0
aCksICJUaGlzIEhUVFBTZXJ2ZXIgZG9lcyBub3Qga25vdyBob3cgdG8gcmVzcG9uZCB0byBhIHJl
cXVlc3QgZm9yICVzIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgCiAgICAgICAgIGF1
dG8gcmVzcG9uc2UgPSBtX3JlcXVlc3RSZXNwb25zZU1hcC5nZXQocGF0aCk7CisgICAgCiAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgcmVzcG9uc2VCdWlsZGVyOwotICAgICAgICByZXNwb25zZUJ1aWxk
ZXIuYXBwZW5kKCJIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6ICIpOwotICAgICAg
ICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3BvbnNlLmJvZHkubGVuZ3RoKCkpOwot
ICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Ci0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IHJlc3BvbnNlLmhlYWRlckZpZWxkcykgewotICAgICAgICAgICAgcmVzcG9uc2VC
dWlsZGVyLmFwcGVuZChwYWlyLmtleSk7Ci0gICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBw
ZW5kKCI6ICIpOwotICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChwYWlyLnZhbHVl
KTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKLSAgICAgICAg
fQotICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Ci0gICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQocmVzcG9uc2UuYm9keSk7CisgICAgICAgIHJlc3BvbnNlQnVpbGRl
ci5hcHBlbmQoIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogIiwgcmVzcG9uc2Uu
Ym9keS5sZW5ndGgoKSwgIlxyXG4iKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcmVzcG9u
c2UuaGVhZGVyRmllbGRzKQorICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChwYWly
LmtleSwgIjogIiwgcGFpci52YWx1ZSwgIlxyXG4iKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZCgiXHJcbiIsIHJlc3BvbnNlLmJvZHkpOworICAgIAogICAgICAgICBhdXRvIHJlc3Bv
bnNlQm9keUFuZEhlYWRlciA9IHJlc3BvbnNlQnVpbGRlci50b1N0cmluZygpLnJlbGVhc2VJbXBs
KCk7CiAgICAgICAgIGF1dG8gcmVzcG9uc2VEYXRhID0gYWRvcHROUyhkaXNwYXRjaF9kYXRhX2Ny
ZWF0ZShyZXNwb25zZUJvZHlBbmRIZWFkZXItPmNoYXJhY3RlcnM4KCksIHJlc3BvbnNlQm9keUFu
ZEhlYWRlci0+bGVuZ3RoKCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAg
ICAgICAodm9pZClyZXNwb25zZUJvZHlBbmRIZWFkZXI7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCShyZXZpc2lvbiAyNTM5NjQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDEw
ICs5Niw4IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkdW1wUGF0aChKU0dsb2JhbENvbnQKICAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9X
VEZTdHJpbmcobm9kZU5hbWUpKTsKIAotICAgIGlmIChwYXJlbnROb2RlICYmIEpTVmFsdWVJc09i
amVjdChjb250ZXh0LCBwYXJlbnROb2RlKSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiA+ICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChkdW1wUGF0aChj
b250ZXh0LCAoSlNPYmplY3RSZWYpcGFyZW50Tm9kZSkpOwotICAgIH0KKyAgICBpZiAocGFyZW50
Tm9kZSAmJiBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgcGFyZW50Tm9kZSkpCisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgPiAiLCBkdW1wUGF0aChjb250ZXh0LCAoSlNPYmplY3RSZWYp
cGFyZW50Tm9kZSkpOwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0K
QEAgLTE0MiwxNiArMTQwLDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIHJhbmdlVG9TdHIoV0tCdW5k
bGVQYQogICAgIGludCBzdGFydE9mZnNldCA9IHByb3BlcnR5VmFsdWVJbnQoY29udGV4dCwgcmFu
Z2VPYmplY3QsICJzdGFydE9mZnNldCIpOwogICAgIGludCBlbmRPZmZzZXQgPSBwcm9wZXJ0eVZh
bHVlSW50KGNvbnRleHQsIHJhbmdlT2JqZWN0LCAiZW5kT2Zmc2V0Iik7CiAKLSAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJy
YW5nZSBmcm9tICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHN0YXJ0T2Zmc2V0
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChkdW1wUGF0aChjb250ZXh0LCBzdGFydE5vZGVPYmplY3QpKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB0byAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZE51bWJlcihlbmRPZmZzZXQpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IG9mICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGR1bXBQYXRoKGNvbnRleHQsIGVuZE5v
ZGVPYmplY3QpKTsKLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJyYW5nZSBmcm9tICIsIHN0YXJ0T2Zmc2V0LCAiIG9mICIsIGR1bXBQ
YXRoKGNvbnRleHQsIHN0YXJ0Tm9kZU9iamVjdCksICIgdG8gIiwgZW5kT2Zmc2V0LCAiIG9mICIs
IGR1bXBQYXRoKGNvbnRleHQsIGVuZE5vZGVPYmplY3QpKTsKIH0KIAogc3RhdGljIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBOYXZpZ2F0aW9uVHlwZVRvU3RyaW5nKFdLRnJhbWVOYXZpZ2F0aW9u
VHlwZSB0eXBlKQpAQCAtMTc4LDIzICsxNjcsMTIgQEAgc3RhdGljIFdURjo6U3RyaW5nIHN0eWxl
RGVjVG9TdHIoV0tCdW5kbAogICAgIC8vIER1bXBSZW5kZXJUcmVlIGNhbGxzIC1bRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiBkZXNjcmlwdGlvbl0sIHdoaWNoIGp1c3QgZHVtcHMgY2xhc3MgbmFtZSBh
bmQgb2JqZWN0IGFkZHJlc3MuCiAgICAgLy8gTm8gZXhpc3RpbmcgdGVzdHMgYWN0dWFsbHkgaGl0
IHRoaXMgY29kZSBwYXRoIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgYmVjYXVzZSBXZWJD
b3JlIGRvZXNuJ3QgY2FsbAogICAgIC8vIHRoZSBlZGl0aW5nIGNsaWVudCBpZiB0aGUgc3R5bGlu
ZyBvcGVyYXRpb24gc291cmNlIGlzIENvbW1hbmRGcm9tRE9NIG9yIENvbW1hbmRGcm9tRE9NV2l0
aFVzZXJJbnRlcmZhY2UuCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPERPTUNTU1N0eWxlRGVjbGFyYXRpb24gQUREUkVT
Uz4iKTsKLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiAi
PERPTUNTU1N0eWxlRGVjbGFyYXRpb24gQUREUkVTUz4iX3M7CiB9CiAKIHN0YXRpYyBXVEY6OlN0
cmluZyBzZWN1cml0eU9yaWdpblRvU3RyKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQogewot
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgneycpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKGFkb3B0V0soV0tT
ZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChvcmlnaW4pKSkpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
ZyhhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4pKSkpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChvcmlnaW4pKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnfScpOwotCi0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygneycsIHRvV1RGU3RyaW5nKGFkb3B0V0soV0tTZWN1cml0eU9y
aWdpbkNvcHlQcm90b2NvbChvcmlnaW4pKSksICIsICIsIHRvV1RGU3RyaW5nKGFkb3B0V0soV0tT
ZWN1cml0eU9yaWdpbkNvcHlIb3N0KG9yaWdpbikpKSwgIiwgIiwgV0tTZWN1cml0eU9yaWdpbkdl
dFBvcnQob3JpZ2luKSwgJ30nKTsKIH0KIAogc3RhdGljIFdURjo6U3RyaW5nIGZyYW1lVG9TdHIo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKQEAgLTIwMiwxOCArMTgwLDEzIEBAIHN0YXRpYyBXVEY6
OlN0cmluZyBmcmFtZVRvU3RyKFdLQnVuZGxlRnIKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbmFtZSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlOYW1lKGZyYW1lKSk7CiAgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGlmIChXS0J1bmRsZUZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKSB7Ci0gICAgICAgIGlmICghV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIm1haW4gZnJhbWUgXCIi
KTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5hbWUpKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIH0gZWxzZQor
ICAgICAgICBpZiAoIVdLU3RyaW5nSXNFbXB0eShuYW1lLmdldCgpKSkKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJtYWluIGZyYW1lIFwiIiwgdG9XVEZTdHJpbmcobmFtZSksICci
Jyk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgibWFpbiBmcmFtZSIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghV0tTdHJpbmdJc0Vt
cHR5KG5hbWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoImZyYW1lIFwiIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0
cmluZyhuYW1lKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnIicpOwotICAg
ICAgICB9CisgICAgICAgIGlmICghV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKQorICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImZyYW1lIFwiIiwgdG9XVEZTdHJpbmcobmFtZSks
ICciJyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiZnJhbWUgKGFub255bW91cykiKTsKICAgICB9CkBAIC00NTQsOSArNDI3LDcgQEAgc3Rh
dGljIHZvaWQgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtYWlu
IGZyYW1lIFwiIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5h
bWUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIm1haW4gZnJhbWUgXCIiLCB0b1dURlN0cmluZyhuYW1lKSwgJyInKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY1LDE4ICs0MzYsMTQgQEAgc3RhdGljIHZv
aWQgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmcmFtZSBcIiIpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5hbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnIicpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJmcmFtZSBcIiIsIHRvV1RGU3Ry
aW5nKG5hbWUpLCAnIicpOwogfQogCiBzdGF0aWMgdm9pZCBkdW1wTG9hZEV2ZW50KFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSkKIHsKICAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQoZnJhbWUsIHN0cmluZ0J1aWxkZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIC0gIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZXZlbnROYW1lKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
IC0gIiwgZXZlbnROYW1lLCAnXG4nKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
b3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCkBAIC00ODYsMTEgKzQ1
Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkdW1wUmVxdWVzdERlc2NyaXB0aW8KICAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gZmlyc3RQYXJ0eSA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weUZp
cnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gaHR0cE1ldGhvZCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weUhUVFBNZXRob2QocmVxdWVz
dCkpOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8TlNVUkxSZXF1ZXN0IFVS
TCAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0
KHVybC5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBtYWluIGRv
Y3VtZW50IFVSTCAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGZpcnN0UGFydHkuZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgaHR0cCBtZXRob2QgIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjxOU1VS
TFJlcXVlc3QgVVJMICIsIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdldCgpKSwgIiwg
bWFpbiBkb2N1bWVudCBVUkwgIiwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChmaXJzdFBhcnR5
LmdldCgpKSwgIiwgaHR0cCBtZXRob2QgIik7CiAKICAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KGh0
dHBNZXRob2QuZ2V0KCkpKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIihu
b25lKSIpOwpAQCAtNTA3LDE2ICs0NzAsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXNw
b25zZURlc2NyaXB0aQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIihudWxs
KSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiPE5TVVJMUmVzcG9uc2UgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1
aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgaHR0cCBzdGF0dXMgY29kZSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZE51bWJlcihXS1VSTFJlc3BvbnNlSFRUUFN0YXR1c0NvZGUocmVzcG9uc2UpKTsKLQotICAgIGlm
IChzaG91bGREdW1wUmVzcG9uc2VIZWFkZXJzKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpyZXNwb25zZUhlYWRlckNvdW50KHJlc3BvbnNlKSk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGhlYWRlcnMiKTsKLSAgICB9CisgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIjxOU1VSTFJlc3BvbnNlICIsIHBhdGhTdWl0YWJsZUZvclRlc3RS
ZXN1bHQodXJsLmdldCgpKSwgIiwgaHR0cCBzdGF0dXMgY29kZSAiLCBXS1VSTFJlc3BvbnNlSFRU
UFN0YXR1c0NvZGUocmVzcG9uc2UpKTsKKworICAgIGlmIChzaG91bGREdW1wUmVzcG9uc2VIZWFk
ZXJzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OnJlc3BvbnNlSGVhZGVyQ291bnQocmVzcG9uc2UpLCAiIGhlYWRlcnMiKTsKKwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCc+Jyk7CiB9CiAKQEAgLTU0MywxNyArNTAxLDEyIEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBkdW1wRXJyb3JEZXNjcmlwdGlvblMKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhlcnJvckRvbWFpbi5nZXQoKSwgIldlYktpdFBvbGljeUVycm9yIikp
CiAgICAgICAgIGVycm9yRG9tYWluID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiV2ViS2l0RXJyb3JEb21haW4iKSk7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIjxOU0Vycm9yIGRvbWFpbiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dU
RlN0cmluZyhlcnJvckRvbWFpbikpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCBjb2RlICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGVycm9yQ29kZSk7Cisg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjxOU0Vycm9yIGRvbWFpbiAiLCB0b1dURlN0cmluZyhl
cnJvckRvbWFpbiksICIsIGNvZGUgIiwgZXJyb3JDb2RlKTsKIAogICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVmPiB1cmwgPSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvcikpOwogICAg
IGlmICh1cmwuZ2V0KCkpIHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVybFN0
cmluZyA9IGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybC5nZXQoKSkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZmFpbGluZyBVUkwgXCIiKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcodXJsU3RyaW5nKSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCciJyk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIGZh
aWxpbmcgVVJMIFwiIiwgdG9XVEZTdHJpbmcodXJsU3RyaW5nKSwgJyInKTsKICAgICB9CiAKICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnPicpOwpAQCAtNzc3LDE1ICs3MzAsOSBAQCBzdGF0aWMg
dm9pZCBkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbihXS0J1CiAKICAgICBpZiAoc2hvdWxkSW5jbHVk
ZUZyYW1lTmFtZSkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbmFtZSA9IGFk
b3B0V0soV0tCdW5kbGVGcmFtZUNvcHlOYW1lKGZyYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiZnJhbWUgJyIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCh0b1dURlN0cmluZyhuYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiJyAiKTsKLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzY3JvbGxl
ZCB0byAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcih4KTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnLCcpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHkpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiZnJhbWUgJyIsIHRvV1RGU3RyaW5nKG5hbWUpLCAiJyAiKTsKKyAgICB9CisgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoInNjcm9sbGVkIHRvICIsIHgsICcsJywgeSwgJ1xuJyk7CiB9CiAK
IHN0YXRpYyB2b2lkIGR1bXBEZXNjZW5kYW50RnJhbWVTY3JvbGxQb3NpdGlvbnMoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKQEAgLTEwNTIsOSAr
OTk5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xpZQogCiAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGR1bXBGcmFtZURlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogIik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwp
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBcbiIpOworICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICIsIHBhdGhT
dWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSwgIiBcbiIpOwogICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKIH0KIApAQCAtMTA4MywxNCArMTAy
OCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWUKICAgICAgICAg
ZHVtcExvYWRFdmVudChmcmFtZSwgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lIik7CiAK
ICAgICB1bnNpZ25lZCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMgPSBXS0J1bmRsZUZyYW1lR2V0
UGVuZGluZ1VubG9hZENvdW50KGZyYW1lKTsKLSAgICBpZiAocGVuZGluZ0ZyYW1lVW5sb2FkRXZl
bnRzKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoZnJhbWVUb1N0cihmcmFtZSkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiAtIGhhcyAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIocGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgb251bmxvYWQgaGFuZGxlcihzKVxuIik7Ci0gICAgICAgIGluamVj
dGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9Cisg
ICAgaWYgKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cykKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChtYWtlU3RyaW5nKGZyYW1lVG9TdHIoZnJhbWUpLCAiIC0gaGFzICIsIHBlbmRp
bmdGcmFtZVVubG9hZEV2ZW50cywgIiBvbnVubG9hZCBoYW5kbGVyKHMpXG4iKSk7CiB9CiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lKQpAQCAtMTI0MCwxNCArMTE3OSwxMSBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVJlc3BvCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1pbWVUeXBlU3RyaW5nID0gYWRvcHRXSyhXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKHJlc3Bv
bnNlKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQodG9XVEZTdHJpbmcodXJsU3RyaW5nKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgaGFzIE1JTUUgdHlwZSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCh0b1dURlN0cmluZyhtaW1lVHlwZVN0cmluZykpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHRvV1RGU3RyaW5nKHVybFN0cmluZyksICIgaGFzIE1JTUUgdHlwZSAiLCB0b1dURlN0cmluZyht
aW1lVHlwZVN0cmluZykpOwogCiAgICAgU3RyaW5nIHBsYXRmb3JtTWltZVR5cGUgPSBwbGF0Zm9y
bVJlc3BvbnNlTWltZVR5cGUocmVzcG9uc2UpOwogICAgIGlmICghcGxhdGZvcm1NaW1lVHlwZS5p
c0VtcHR5KCkgJiYgcGxhdGZvcm1NaW1lVHlwZSAhPSB0b1dURlN0cmluZyhtaW1lVHlwZVN0cmlu
ZykpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgYnV0IHBsYXRmb3Jt
IHJlc3BvbnNlIGhhcyAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGxhdGZvcm1N
aW1lVHlwZSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgYnV0IHBsYXRmb3JtIHJl
c3BvbnNlIGhhcyAiLCBwbGF0Zm9ybU1pbWVUeXBlKTsKICAgICB9CiAKICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKQEAgLTEzMDEsMTAgKzEyMzcsNyBAQCBib29sIEluamVjdGVkQnVu
ZGxlUGFnZTo6c2hvdWxkQ2FjaGVSZXNwCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBXaWxsQ2FjaGVSZXNwb25zZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZE51bWJlcihpZGVudGlmaWVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiAtIHdpbGxDYWNoZVJlc3BvbnNlOiBjYWxsZWRcbiIpOwotICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRs
ZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoaWRlbnRpZmllciwgIiAtIHdpbGxDYWNoZVJlc3BvbnNl
OiBjYWxsZWRcbiIpKTsKIAogICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSBjYWNo
ZSB0aGUgcmVzcG9uc2UuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzQzLDExICsxMjc2LDcgQEAg
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUAogICAgICAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiBcbiIpOwogICAgICAgICBkdW1w
UmVxdWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QsIHN0cmluZ0J1
aWxkZXIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpcyBtYWluIGZy
YW1lIC0gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlRnJhbWVJc01h
aW5GcmFtZShmcmFtZSkgPyAieWVzIiA6ICJubyIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSAiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0U2hvdWxkT3Bl
bkV4dGVybmFsVVJMcyhuYXZpZ2F0aW9uQWN0aW9uKSA/ICJ5ZXMiIDogIm5vIik7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiIGlzIG1haW4gZnJhbWUgLSAiLCBXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpID8g
InllcyIgOiAibm8iLCAiIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtICIsIFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbkdldFNob3VsZE9wZW5FeHRlcm5hbFVSTHMobmF2aWdhdGlvbkFjdGlv
bikgPyAieWVzIiA6ICJubyIsICdcbicpOwogICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRU
ZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogCkBAIC0xMzY2LDE0ICsxMjk1
LDExIEBAIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVAKICAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0V0soV0tVUkxDb3B5U3Ry
aW5nKHVybC5nZXQoKSkpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
Zyh1cmxTdHJpbmcpKTsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
d2l0aCBuYXZpZ2F0aW9uIHR5cGUgXCciKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dU
RlN0cmluZyhOYXZpZ2F0aW9uVHlwZVRvU3RyaW5nKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdl
dE5hdmlnYXRpb25UeXBlKG5hdmlnYXRpb25BY3Rpb24pKSkpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiXCciKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIHdpdGggbmF2
aWdhdGlvbiB0eXBlIFwnIiwgdG9XVEZTdHJpbmcoTmF2aWdhdGlvblR5cGVUb1N0cmluZyhXS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb25HZXROYXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uQWN0aW9uKSkp
LCAiXCciKTsKICAgICBXS1JldGFpblB0cjxXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY+IGhpdFRl
c3RSZXN1bHRSZWYgPSBhZG9wdFdLKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlIaXRUZXN0
UmVzdWx0KG5hdmlnYXRpb25BY3Rpb24pKTsKICAgICBpZiAoaGl0VGVzdFJlc3VsdFJlZikgewog
ICAgICAgICBXS1JldGFpblB0cjxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+IG5vZGVIYW5kbGVSZWYg
PSBhZG9wdFdLKFdLQnVuZGxlSGl0VGVzdFJlc3VsdENvcHlOb2RlSGFuZGxlKGhpdFRlc3RSZXN1
bHRSZWYuZ2V0KCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgb3Jp
Z2luYXRpbmcgZnJvbSAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZHVtcFBhdGgo
bV9wYWdlLCBtX3dvcmxkLmdldCgpLCBub2RlSGFuZGxlUmVmLmdldCgpKSk7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgb3JpZ2luYXRpbmcgZnJvbSAiLCBkdW1wUGF0aChtX3BhZ2Us
IG1fd29ybGQuZ2V0KCksIG5vZGVIYW5kbGVSZWYuZ2V0KCkpKTsKICAgICB9CiAKICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKQEAgLTEzOTMsMTIgKzEzMTksOCBAQCBXS0J1bmRsZVBh
Z2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQCiB7CiAgICAgYXV0byYgaW5qZWN0ZWRCdW5k
bGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7CiAgICAgaWYgKGluamVjdGVkQnVuZGxl
LnRlc3RSdW5uZXIoKSAmJiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPmlzUG9saWN5RGVs
ZWdhdGVFbmFibGVkKCkgJiYgV0tVUkxSZXNwb25zZUlzQXR0YWNobWVudChyZXNwb25zZSkpIHsK
LSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZmlsZW5hbWUgPSBhZG9wdFdLKFdLVVJMUmVzcG9uc2VDb3B5U3VnZ2Vz
dGVkRmlsZW5hbWUocmVzcG9uc2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJQb2xpY3kgZGVsZWdhdGU6IHJlc291cmNlIGlzIGFuIGF0dGFjaG1lbnQsIHN1Z2dlc3Rl
ZCBmaWxlIG5hbWUgXCciKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJp
bmcoZmlsZW5hbWUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcJ1xu
Iik7Ci0gICAgICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5vdXRwdXRUZXh0KHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlBvbGljeSBkZWxlZ2F0ZTogcmVzb3VyY2UgaXMgYW4g
YXR0YWNobWVudCwgc3VnZ2VzdGVkIGZpbGUgbmFtZSBcJyIsIHRvV1RGU3RyaW5nKGZpbGVuYW1l
KSwgIlwnXG4iKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlv
blBhc3NUaHJvdWdoOwpAQCAtMTQ4MywxMyArMTQwNSw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjp3aWxsQWRkTWVzc2FnZVQKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkNPTlNPTEUgTUVTU0FHRTogIik7Ci0g
ICAgaWYgKGxpbmVOdW1iZXIpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJsaW5lICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVy
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgIH0KLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXNzYWdlU3RyaW5nKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnXG4nKTsKKyAgICBpZiAobGluZU51bWJlcikKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoImxpbmUgIiwgbGluZU51bWJlciwgIjogIik7CisgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWVzc2FnZVN0cmluZywgJ1xuJyk7CiAKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCiAgICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0
ZEVycihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwpAQCAtMTUwNiwxMSArMTQyNCw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmEKICAgICBpZiAoIWluamVjdGVk
QnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcFN0YXR1c0NhbGxiYWNrcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0
YXR1c1RleHQ6Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoc3RhdHVz
YmFyVGV4dCkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVk
QnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3Rl
ZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFD
Szogc2V0U3RhdHVzVGV4dDoiLCB0b1dURlN0cmluZyhzdGF0dXNiYXJUZXh0KSwgJ1xuJykpOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRBbGVydChXS1N0
cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKQpAQCAtMTUxOSwxMSArMTQzMyw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmkKICAgICBpZiAoIWluamVj
dGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
QUxFUlQ6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1lc3NhZ2Up
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChtYWtlU3RyaW5nKCJBTEVSVDogIiwgdG9XVEZTdHJpbmcobWVzc2FnZSksICdc
bicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29u
ZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKQpAQCAtMTUzMiwyMiAr
MTQ0MiwxMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpCiAgICAg
aWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkNPTkZJUk06ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3Ry
aW5nKG1lc3NhZ2UpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmpl
Y3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5q
ZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJDT05GSVJNOiAiLCB0b1dURlN0cmlu
ZyhtZXNzYWdlKSwgJ1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1
bkphdmFTY3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVs
dFZhbHVlLCBXS0J1bmRsZUZyYW1lUmVmKQogewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlBST01QVDogIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2FnZSkpOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBkZWZhdWx0IHRleHQ6ICIpOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKHRvV1RGU3RyaW5nKGRlZmF1bHRWYWx1ZSkpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5vdXRwdXRUZXh0
KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLm91dHB1dFRleHQobWFrZVN0cmluZygiUFJPTVBUOiAiLCB0b1dURlN0cmluZyhtZXNzYWdl
KSwgIiwgZGVmYXVsdCB0ZXh0OiAiLCB0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUpLCAnXG4nKSk7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVz
TmVlZGVkKQpAQCAtMTU2MCwxMyArMTQ2MCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRSZWFjaEFwcGxpY2EKICAgICAgICAgLy8gYWJvdmUgb3IgYmVsb3cgYSB0aHJlc2hvbGQuCiAg
ICAgICAgIGludDY0X3QgdHJ1bmNhdGVkU3BhY2VOZWVkZWQgPSAodG90YWxCeXRlc05lZWRlZCAv
IDEwMDAwKSAqIDEwMDAwOwogCi0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVSSBERUxFR0FURSBBUFBMSUNB
VElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFG
b3JTZWN1cml0eU9yaWdpbjoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VjdXJp
dHlPcmlnaW5Ub1N0cihvcmlnaW4pKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgdG90YWxTcGFjZU5lZWRlZDp+Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TnVtYmVyKHRydW5jYXRlZFNwYWNlTmVlZGVkKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpKTsKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3Ry
aW5nKCJVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVkZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjoiLCBzZWN1cml0eU9yaWdp
blRvU3RyKG9yaWdpbiksICIgdG90YWxTcGFjZU5lZWRlZDp+IiwgdHJ1bmNhdGVkU3BhY2VOZWVk
ZWQsICdcbicpKTsKICAgICB9CiAKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigp
LT5zaG91bGREaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCkpCkBAIC0x
NTc5LDE1ICsxNDczLDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGlj
YQogdWludDY0X3QgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdL
U2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1N0cmluZ1JlZiBkYXRhYmFzZU5hbWUsIFdLU3Ry
aW5nUmVmIGRhdGFiYXNlRGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1
aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2VCeXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNl
VXNhZ2VCeXRlcywgdWludDY0X3QgZXhwZWN0ZWRVc2FnZUJ5dGVzKQogewogICAgIGF1dG8mIGlu
amVjdGVkQnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChpbmpl
Y3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBEYXRhYmFzZUNhbGxiYWNrcygpKSB7
Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVk
ZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKHNlY3VyaXR5T3JpZ2luVG9TdHIob3JpZ2luKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGRhdGFiYXNlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCh0b1dURlN0cmluZyhkYXRhYmFzZU5hbWUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5n
QnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RS
dW5uZXIoKS0+c2hvdWxkRHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVk
QnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJB
Q0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOiIsIHNlY3VyaXR5T3Jp
Z2luVG9TdHIob3JpZ2luKSwgIiBkYXRhYmFzZToiLCB0b1dURlN0cmluZyhkYXRhYmFzZU5hbWUp
LCAnXG4nKSk7CiAKICAgICB1aW50NjRfdCBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7
CiAgICAgZG91YmxlIHRlc3REZWZhdWx0UXVvdGEgPSBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVy
KCktPmRhdGFiYXNlRGVmYXVsdFF1b3RhKCk7CkBAIC0xNjAxLDExICsxNDg4LDcgQEAgdWludDY0
X3QgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRFeGNlZWREYQogICAgICAgICBpZiAoZGVmYXVsdFF1
b3RhIDwgZXhwZWN0ZWRVc2FnZUJ5dGVzICYmIGV4cGVjdGVkVXNhZ2VCeXRlcyA8PSBtYXhRdW90
YSkgewogICAgICAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFVzYWdlQnl0ZXM7CiAKLSAgICAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3Jl
YXNlZCBxdW90YSB0byAiKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KG5ld1F1b3RhKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAg
ICAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkpOworICAgICAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJV
SSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICIsIG5ld1F1
b3RhLCAnXG4nKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG5ld1F1b3RhOwpAQCAt
MTY3NCwxMyArMTU1Nyw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRCZWdpbkVk
aXQKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRE
dW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOiIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGlu
amVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkK
KyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdl
LCBtX3dvcmxkLmdldCgpLCByYW5nZSksICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xNjkwLDEz
ICsxNTY5LDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEVuZEVkaXRpbgogICAg
IGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRl
eHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVkQnVu
ZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAg
aW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5n
ZXQoKSwgcmFuZ2UpLCAnXG4nKSk7CisKICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApAQCAtMTcxMiwxNyArMTU4Nyw5IEBA
IGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRJbnNlcnROb2QKICAgICAgICAgIldlYlZp
ZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiwKICAgICB9OwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxl
LnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZToiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoZHVtcFBhdGgobV9wYWdlLCBtX3dvcmxkLmdldCgpLCBub2Rl
KSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHJlcGxhY2luZ0RPTVJh
bmdlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwg
bV93b3JsZC5nZXQoKSwgcmFuZ2VUb1JlcGxhY2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgZ2l2ZW5BY3Rpb246Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVp
bGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5u
ZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5k
bGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRO
b2RlOiIsIGR1bXBQYXRoKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgbm9kZSksICIgcmVwbGFjaW5n
RE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBs
YWNlKSwgIiBnaXZlbkFjdGlvbjoiLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSwgJ1xuJykp
OworCiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dF
ZGl0aW5nKCk7CiB9CiAKQEAgLTE3MzgsMTcgKzE2MDUsOSBAQCBib29sIEluamVjdGVkQnVuZGxl
UGFnZTo6c2hvdWxkSW5zZXJ0VGV4CiAgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBl
ZCIsCiAgICAgfTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3Vs
ZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZEluc2VydFRleHQ6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHRvV1RGU3RyaW5nKHRleHQpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgcmVwbGFjaW5nRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJh
bmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZVRvUmVwbGFjZSkpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBnaXZlbkFjdGlvbjoiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0pOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0
ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAg
ICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdB
VEU6IHNob3VsZEluc2VydFRleHQ6IiwgdG9XVEZTdHJpbmcodGV4dCksICIgcmVwbGFjaW5nRE9N
UmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBsYWNl
KSwgIiBnaXZlbkFjdGlvbjoiLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSwgJ1xuJykpOwor
CiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0
aW5nKCk7CiB9CiAKQEAgLTE3NTgsMTMgKzE2MTcsOSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFn
ZTo6c2hvdWxkRGVsZXRlUmFuCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5n
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RS
dW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5n
ZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAg
ICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxi
YWNrcygpKQorICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdl
LCBtX3dvcmxkLmdldCgpLCByYW5nZSksICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xNzgzLDE5
ICsxNjM4LDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZENoYW5nZVNlbAogICAg
ICAgICAiVFJVRSIKICAgICB9OwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIo
KS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIGZy
b21SYW5nZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB0b0RPTVJh
bmdlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwg
bV93b3JsZC5nZXQoKSwgdG9SYW5nZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBhZmZpbml0eToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYWZmaW5p
dHlzdHJpbmdbYWZmaW5pdHldKTsgCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHN0aWxsU2VsZWN0aW5nOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChib29s
c3RyaW5nW3N0aWxsU2VsZWN0aW5nXSk7IAotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRw
dXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIGZyb21SYW5nZSks
ICIgdG9ET01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgdG9SYW5n
ZSksICIgYWZmaW5pdHk6IiwgYWZmaW5pdHlzdHJpbmdbYWZmaW5pdHldLCAiIHN0aWxsU2VsZWN0
aW5nOiIsIGJvb2xzdHJpbmdbc3RpbGxTZWxlY3RpbmddLCAnXG4nKSk7CisKICAgICByZXR1cm4g
aW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApA
QCAtMTgwNSwxNSArMTY1MCw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRBcHBs
eVN0eWwKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91
bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5n
QnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRBcHBseVN0eWxlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChzdHlsZURlY1RvU3RyKHN0eWxlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHRvRWxlbWVudHNJbkRPTVJhbmdlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1
dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVk
QnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAg
ICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRBcHBseVN0eWxlOiIsIHN0eWxlRGVjVG9TdHIoc3R5bGUpLCAiIHRvRWxlbWVudHNJ
bkRPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSksICdc
bicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFs
bG93RWRpdGluZygpOwogfQogCkBAIC0xODI1LDExICsxNjY0LDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZEJlZ2luRWRpdGluZwogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOiIpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1bmRsZS5vdXRw
dXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0
aW5nOiIsIHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpLCAnXG4nKSk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRFbmRFZGl0aW5nKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlv
bk5hbWUpCkBAIC0xODQwLDExICsxNjc1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRp
ZEVuZEVkaXRpbmcoVwogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91
bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzoiKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh0b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1lKSk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0
cmluZygiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6IiwgdG9XVEZTdHJp
bmcobm90aWZpY2F0aW9uTmFtZSksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OmRpZENoYW5nZShXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQpAQCAtMTg1NSwxMSAr
MTY4Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2UoV0tTdHIKICAgICBp
ZiAoIWluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFj
a3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZToiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhu
b3RpZmljYXRpb25OYW1lKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
aW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAg
IGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZToiLCB0b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1lKSwgJ1xuJykp
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKFdLU3Ry
aW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUpCkBAIC0xODcwLDExICsxNjk3LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZVNlbGVjdAogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUu
dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlv
bk5hbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRC
dW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOiIsIHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpLCAnXG4nKSk7
CiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAkocmV2aXNpb24gMjUzOTY0KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw5ICsyMjMsNyBAQCBTdHJpbmcgYXR0cmli
dXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
ICAgIGZvciAoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRy
aWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgewogICAgICAgICBBdGtBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMt
PmRhdGEpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGUtPm5hbWUpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGUt
PnZhbHVlKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlLT5uYW1lLCAnOicsIGF0
dHJpYnV0ZS0+dmFsdWUpOwogICAgICAgICBpZiAoYXR0cmlidXRlcy0+bmV4dCkKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHNlcGFyYXRvcik7CiAgICAgfQpAQCAtNTYwLDggKzU1OCw3IEBA
IFN0cmluZyBhdHRyaWJ1dGVzT2ZFbGVtZW50KEFjY2Vzc2liaWxpdHkKIHsKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZChlbGVtZW50LT5yb2xlKCktPnN0
cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZChl
bGVtZW50LT5yb2xlKCktPnN0cmluZygpLCAnXG4nKTsKIAogICAgIC8vIEZvciB0aGUgcGFyZW50
IHdlIHByaW50IGl0cyByb2xlIGFuZCBpdHMgbmFtZSwgaWYgYXZhaWxhYmxlLgogICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiQVhQYXJlbnQ6ICIpOwpAQCAtNTcwLDkzICs1NjcsNDUgQEAgU3Ry
aW5nIGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNzaWJpbGl0eQogICAgIGlmIChhdGtQYXJlbnQp
IHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocm9sZVRvU3RyaW5nKGF0a1BhcmVudCkpOwogICAg
ICAgICBjb25zdCBjaGFyKiBwYXJlbnROYW1lID0gYXRrX29iamVjdF9nZXRfbmFtZShhdGtQYXJl
bnQpOwotICAgICAgICBpZiAocGFyZW50TmFtZSAmJiBwYXJlbnROYW1lWzBdKSB7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChwYXJlbnROYW1lKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocGFyZW50TmFtZSAmJiBw
YXJlbnROYW1lWzBdKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjogIiwgcGFyZW50TmFt
ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKG51bGwpIik7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IkFYQ2hpbGRyZW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmNoaWxk
cmVuQ291bnQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIkFYUG9zaXRpb246ICB7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIoZWxlbWVudC0+eCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyk7Ci0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIoZWxlbWVudC0+eSgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyk7Ci0gICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgfVxuIik7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IkFYU2l6ZTogeyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGVs
ZW1lbnQtPndpZHRoKCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihl
bGVtZW50LT5oZWlnaHQoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIH1cbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWENoaWxkcmVuOiAiLCBl
bGVtZW50LT5jaGlsZHJlbkNvdW50KCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFBv
c2l0aW9uOiAgeyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVsZW1lbnQtPngo
KSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKGVsZW1lbnQtPnkoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpLCAiIH1cbiIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCJBWFNpemU6IHsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbihlbGVtZW50LT53aWR0aCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyksICIsICIsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+aGVpZ2h0KCksIDYsIEtlZXBUcmFp
bGluZ1plcm9zKSwgIiB9XG4iKTsKIAogICAgIFN0cmluZyB0aXRsZSA9IGVsZW1lbnQtPnRpdGxl
KCktPnN0cmluZygpOwogICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHRpdGxlKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKHRpdGxlLCAnXG4nKTsKICAgICB9CiAKICAgICBTdHJpbmcgZGVzY3Jp
cHRpb24gPSBlbGVtZW50LT5kZXNjcmlwdGlvbigpLT5zdHJpbmcoKTsKLSAgICBpZiAoIWRlc2Ny
aXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZChkZXNjcmlwdGlvbi51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAg
IGlmICghZGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChkZXNj
cmlwdGlvbi51dGY4KCkuZGF0YSgpLCAnXG4nKTsKIAogICAgIFN0cmluZyB2YWx1ZSA9IGVsZW1l
bnQtPnN0cmluZ1ZhbHVlKCktPnN0cmluZygpOwotICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0gICAgfQotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWEZvY3VzYWJsZTog
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNGb2N1c2FibGUoKSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLCAnXG4nKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiQVhGb2N1c2VkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5p
c0ZvY3VzZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIkFYU2VsZWN0YWJsZTogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
ZWxlbWVudC0+aXNTZWxlY3RhYmxlKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFNlbGVjdGVkOiAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihlbGVtZW50LT5pc1NlbGVjdGVkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWE11bHRpU2VsZWN0YWJsZTogIik7
Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNNdWx0aVNlbGVjdGFibGUoKSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IkFYRW5hYmxlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNFbmFi
bGVkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJBWEV4cGFuZGVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50
LT5pc0V4cGFuZGVkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJBWFJlcXVpcmVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihlbGVtZW50LT5pc1JlcXVpcmVkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWENoZWNrZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGVsZW1lbnQtPmlzQ2hlY2tlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhGb2N1c2FibGU6ICIsIGVsZW1lbnQtPmlzRm9jdXNh
YmxlKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEZvY3VzZWQ6ICIsIGVsZW1lbnQt
PmlzRm9jdXNlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhTZWxlY3RhYmxlOiAi
LCBlbGVtZW50LT5pc1NlbGVjdGFibGUoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFY
U2VsZWN0ZWQ6ICIsIGVsZW1lbnQtPmlzU2VsZWN0ZWQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5h
cHBlbmQoIkFYTXVsdGlTZWxlY3RhYmxlOiAiLCBlbGVtZW50LT5pc011bHRpU2VsZWN0YWJsZSgp
LCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhFbmFibGVkOiAiLCBlbGVtZW50LT5pc0Vu
YWJsZWQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRXhwYW5kZWQ6ICIsIGVsZW1l
bnQtPmlzRXhwYW5kZWQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYUmVxdWlyZWQ6
ICIsIGVsZW1lbnQtPmlzUmVxdWlyZWQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFY
Q2hlY2tlZDogIiwgZWxlbWVudC0+aXNDaGVja2VkKCksICdcbicpOwogCiAgICAgU3RyaW5nIHVy
bCA9IGVsZW1lbnQtPnVybCgpLT5zdHJpbmcoKTsKLSAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQodXJsKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7Ci0gICAgfQorICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQodXJsLCAnXG4nKTsKIAogICAgIC8vIFdlIGFwcGVuZCB0aGUgQVRLIHNwZWNpZmljIGF0dHJp
YnV0ZXMgYXMgYSBzaW5nbGUgbGluZSBhdCB0aGUgZW5kLgotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGdldEF0
a0F0dHJpYnV0ZVNldEFzU3RyaW5nKGVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkuZ2V0KCks
IE9iamVjdEF0dHJpYnV0ZVR5cGUpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhQbGF0Zm9ybUF0
dHJpYnV0ZXM6ICIsIGdldEF0a0F0dHJpYnV0ZVNldEFzU3RyaW5nKGVsZW1lbnQtPnBsYXRmb3Jt
VUlFbGVtZW50KCkuZ2V0KCksIE9iamVjdEF0dHJpYnV0ZVR5cGUpKTsKIAogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC02NjUsMTAgKzYxNCw4IEBAIHN0YXRpYyBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gY3JlYXRlU3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBlbGVtZW50cy5iZWdpbigpOyBpdCAhPSBlbGVtZW50cy5lbmQoKTsg
KytpdCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGVzT2ZFbGVtZW50KGNvbnN0
X2Nhc3Q8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+KGl0LT5nZXQoKSkpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJcbi0tLS0tLS0tLS0tLVxuIik7Ci0gICAgfQorICAgIGZvciAo
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGVsZW1lbnRzLmJlZ2luKCk7IGl0ICE9IGVsZW1lbnRzLmVuZCgpOyArK2l0KQorICAgICAg
ICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGVzT2ZFbGVtZW50KGNvbnN0X2Nhc3Q8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudCo+KGl0LT5nZXQoKSkpLCAiXG4tLS0tLS0tLS0tLS1cbiIpOwogCiAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIH0KQEAgLTE3MjIsOCArMTY2OSw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUkKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKICAg
ICAvLyBUaGUgZGVmYXVsdCB0ZXh0IGF0dHJpYnV0ZXMgYXBwbHkgdG8gdGhlIGVudGlyZSBlbGVt
ZW50LgotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5cdERlZmF1bHQgdGV4dCBhdHRyaWJ1
dGVzOlxuXHRcdCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZVNldFRvU3RyaW5nKGdl
dEF0dHJpYnV0ZVNldChtX2VsZW1lbnQuZ2V0KCksIFRleHRBdHRyaWJ1dGVUeXBlKSwgIlxuXHRc
dCIpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXG5cdERlZmF1bHQgdGV4dCBhdHRyaWJ1dGVzOlxu
XHRcdCIsIGF0dHJpYnV0ZVNldFRvU3RyaW5nKGdldEF0dHJpYnV0ZVNldChtX2VsZW1lbnQuZ2V0
KCksIFRleHRBdHRyaWJ1dGVUeXBlKSwgIlxuXHRcdCIpKTsKIAogICAgIC8vIFRoZSBhdHRyaWJ1
dGUgcnVuIHByb3ZpZGVzIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8gdGhlIHJhbmdlIG9mIHRleHQg
YXQgdGhlIHNwZWNpZmllZCBvZmZzZXQuCiAgICAgQXRrVGV4dCogdGV4dCA9IEFUS19URVhUKG1f
ZWxlbWVudC5nZXQoKSk7CkBAIC0xNzMxLDEwICsxNjc3LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSQogICAgIGZvciAodW5zaWduZWQgaSA9IGxvY2F0aW9uOyBp
IDwgbG9jYXRpb24gKyBsZW5ndGg7IGkgPSBlbmQpIHsKICAgICAgICAgQXRrQXR0cmlidXRlU2V0
KiBhdHRyaWJ1dGVTZXQgPSBhdGtfdGV4dF9nZXRfcnVuX2F0dHJpYnV0ZXModGV4dCwgaSwgJnN0
YXJ0LCAmZW5kKTsKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Vic3RyaW5nKHJlcGxhY2VD
aGFyYWN0ZXJzRm9yUmVzdWx0cyhhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0LCBzdGFydCwgZW5kKSkp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuXHRSYW5nZSBhdHRyaWJ1dGVzIGZv
ciAnIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN1YnN0cmluZy5nZXQoKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJzpcblx0XHQiKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXR0cmlidXRlU2V0VG9TdHJpbmcoYXR0cmlidXRlU2V0LCAiXG5cdFx0IikpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXG5cdFJhbmdlIGF0dHJpYnV0ZXMgZm9yICciLCBzdWJzdHJpbmcu
Z2V0KCksICInOlxuXHRcdCIsIGF0dHJpYnV0ZVNldFRvU3RyaW5nKGF0dHJpYnV0ZVNldCwgIlxu
XHRcdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjI3OCw3ICsyMjIxLDYg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0T2Zmc2V0KAogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIGdpbnQgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICBBdGtU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CiAgICAgc3dpdGNoIChib3VuZGFyeSkgewpAQCAt
MjI5OCwxMyArMjI0MCw4IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdBdE9mZnNl
dCgKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAg
ICAgfQogCi0gICAgYnVpbGRlci5hcHBlbmQoYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQo
QVRLX1RFWFQoZWxlbWVudC5nZXQoKSksIG9mZnNldCwgZ3JhbnVsYXJpdHksICZzdGFydE9mZnNl
dCwgJmVuZE9mZnNldCkpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHN0YXJ0T2Zmc2V0KTsKLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZW5kT2Zmc2V0KTsKLSAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIGF1dG8gc3RyaW5nID0gbWFrZVN0cmluZyhhdGtfdGV4dF9nZXRf
c3RyaW5nX2F0X29mZnNldChBVEtfVEVYVChlbGVtZW50LmdldCgpKSwgb2Zmc2V0LCBncmFudWxh
cml0eSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KSwgIiwgIiwgc3RhcnRPZmZzZXQsICIsICIs
IGVuZE9mZnNldCk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0
cmluZy51dGY4KCkuZGF0YSgpKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCBvZmZzZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386582</attachid>
            <date>2020-01-01 11:25:46 -0800</date>
            <delta_ts>2020-01-01 11:43:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205671-20200101112545.patch</filename>
            <type>text/plain</type>
            <size>161933</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE5LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhh
dCBhcHBlbmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoK
KyAgICAgICAgKEJhY2t0cmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAq
IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVj
dXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZs
b3dUZXN0LmNwcDoKKyAgICAgICAgKFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0
YW5jZSk6CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcGVuZFVSTEFuZFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNs
aWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcgY29u
c3QpOgorCiAyMDE5LTEyLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaWR5IGEgYml0IG9mIFN0cmluZ0J1aWxkZXIgdXNhZ2UKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDE4ICsyOTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IG1fYnVpbGRlcjsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnIycpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmlzaXRv
ci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQodmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcj
JywgdmlzaXRvci0+aW5kZXgoKSwgJyAnLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSwgIigpIGF0
ICIsIHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5oYXNM
aW5lQW5kQ29sdW1uSW5mbygpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzon
KTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHVudXNlZENvbHVtbjsKICAgICAgICAgICAgICAgICB2aXNpdG9yLT5jb21wdXRl
TGluZUFuZENvbHVtbihsaW5lTnVtYmVyLCB1bnVzZWRDb2x1bW4pOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6JywgbGluZU51bWJlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghdmlzaXRvci0+Y2FsbGVlKCkucmF3UHRyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMiArMTk4
LDEzIEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRp
ZXJBZGp1c3RtZW50OwogCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygp
IHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIp
OworICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGls
ZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BV
VGltZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMo
KSksCisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICAp
OwogCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gQ1BVVGltZTo6Zm9yQ3VycmVudFRocmVhZCgp
OwpAQCAtMjM1LDE5ICsyMzYsMTkgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIHJlY3Vyc2UoaSkgeyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ3VzZSBzdHJpY3QnOyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaWYgKGkgJSAxMDAwID09PSAwKSB7IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGlt
ZSA+Iik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICApIHsgcmV0dXJuOyB9Iik7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICB9Iik7Ci0gICAg
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICByZXR1cm4gcmVjdXJzZShp
ICsgMSk7IH0iKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicmVj
dXJzZSgwKTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgorICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiByZWN1cnNlKGkpIHsiCisgICAgICAgICAgICAgICAgIiAgICAndXNl
IHN0cmljdCc7IgorICAgICAgICAgICAgICAgICIgICAgaWYgKGkgJSAxMDAwID09PSAwKSB7Igor
ICAgICAgICAgICAgICAgICIgICAgICAgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAgICAiICAgICAgICkgeyByZXR1
cm47IH0iCisgICAgICAgICAgICAgICAgIiAgICB9IgorICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHJlY3Vyc2UoaSArIDEpOyB9IgorICAgICAgICAgICAgICAgICJyZWN1cnNlKDApOyIKKyAg
ICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBDUFVUaW1lOjpmb3JDdXJy
ZW50VGhyZWFkKCk7CkBAIC0yNzksMTIgKzI4MCwxMyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUg
PSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVB
ZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0gfSBmb28o
KTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsg
dHJ5IHsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAo
Y3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIsCisgICAgICAgICAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJl
ZC5zZWNvbmRzKCkpLAorICAgICAgICAgICAgICAgICIpIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9
IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2Ny
aXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CiAKQEAgLTMxOCwxMiArMzIwLDEzIEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAgICAgU2Vjb25kcyB0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRpZXJBZGp1c3RtZW50Owog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOwor
ICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJm
dW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAo
dHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGlt
ZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSks
CisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICApOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKIApAQCAtMzU3LDEyICszNjAsMTMgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGlt
aXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hv
dWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0g
Y3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAgICAgICAg
ICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRj
aGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAgICAgICAgICBhdXRv
IHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAg
ICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVm
IHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBjYW5j
ZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwogCkBAIC0zOTYsMTIgKzQwMCwx
MyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICBTZWNvbmRzIHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUgPSA2MDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAg
ICAgICAgIFNlY29uZHMgbWF4QnVzeUxvb3BUaW1lID0gNzUwX21zICsgdGllckFkanVzdG1lbnQ7
CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAg
ICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtYXhCdXN5
TG9vcFRpbWUuc2Vjb25kcygpKTsgLy8gaW4gc2Vjb25kcy4KLSAgICAgICAgICAgIHNjcmlwdEJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb28o
KSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRU
aW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KG1heEJ1c3lMb29wVGltZS5zZWNvbmRzKCkpLCAvLyBpbiBzZWNvbmRzLgorICAgICAgICAgICAg
ICAgICIpIGJyZWFrOyB9IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdS
ZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIGV4
dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gMDsKIApAQCAtNDM5LDEyICs0NDQsMTMgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNv
bmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVz
dG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIg
c3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIp
OwotICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0
aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAg
c2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAg
ICAgICAgICBhdXRvIHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAg
ICAgICAgICAgICAgICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJj
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDggQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFja092
ZXJmbG93T2JqZWN0XwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkdW1teS52YWx1ZU9mKFswXSIpOwot
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDM1MDAwOyBpKyspIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXSIpOwotICAgICAg
ICB9CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsIFsiLCBpLCAnXScpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIik7Iik7CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTggKzQ1Miw5IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDxub2RlSWQ+LCA8c2l6ZUluQnl0ZXM+LCA8bm9kZUNsYXNzTmFtZUluZGV4Piwg
PGZsYWdzPiwgWzxsYWJlbEluZGV4PiwgPGNlbGxFZGRyZXNzPiwgPHdyYXBwZWRBZGRyZXNzPl0K
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIobm9k
ZS5pZGVudGlmaWVyKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIobm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihjbGFzc05hbWVJ
bmRleCk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTnVt
YmVyKGZsYWdzKTsKKyAgICAgICAganNvbi5hcHBlbmQoJywnLCBub2RlLmlkZW50aWZpZXIsICcs
Jywgbm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSksICcsJywgY2xhc3NOYW1lSW5k
ZXgsICcsJywgZmxhZ3MpOwogICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIobGFiZWxJbmRleCk7Ci0gICAgICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcIjB4Iik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcsIGxhYmVsSW5kZXgsICIsXCIweCIpOwogICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNl
KTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIweCIpOwogICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBl
ZEFkZHJlc3MpLCBqc29uLCBMb3dlcmNhc2UpOwpAQCAtNDc4LDEyICs0NjksNyBAQCBTdHJpbmcg
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgIGZpcnN0RWRnZSA9IGZh
bHNlOwogCiAgICAgICAgIC8vIDxmcm9tTm9kZUlkPiwgPHRvTm9kZUlkPiwgPGVkZ2VUeXBlSW5k
ZXg+LCA8ZWRnZUV4dHJhRGF0YT4KLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIoZWRnZS5mcm9t
LmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlLnRvLmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlVHlwZVRvTnVtYmVyKGVkZ2UudHlwZSkp
OwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOworICAgICAgICBqc29uLmFwcGVuZChlZGdlLmZy
b20uaWRlbnRpZmllciwgJywnLCBlZGdlLnRvLmlkZW50aWZpZXIsICcsJywgZWRnZVR5cGVUb051
bWJlcihlZGdlLnR5cGUpLCAnLCcpOwogICAgICAgICBzd2l0Y2ggKGVkZ2UudHlwZSkgewogICAg
ICAgICBjYXNlIEVkZ2VUeXBlOjpQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFZGdlVHlwZTo6VmFy
aWFibGU6IHsKQEAgLTQ5MSwxMSArNDc3LDExIEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVy
Ojpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICBuZXh0RWRnZU5hbWVJbmRleCsrOwogICAgICAgICAgICAgdW5zaWduZWQgZWRn
ZU5hbWVJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlTmFtZUluZGV4KTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKGVkZ2VO
YW1lSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
ZGdlVHlwZTo6SW5kZXg6Ci0gICAgICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlLnUuaW5k
ZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoZWRnZS51LmluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3IgdGhp
cyBlZGdlIHR5cGUuCkBAIC02NDYsNyArNjMyLDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6Ompzb24oRnVuY3RpbwogICAgICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKICAg
ICAgICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1i
ZXIoc25hcHNob3ROb2RlLnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgICAgICBqc29uLmFw
cGVuZChzbmFwc2hvdE5vZGUudmFsdWUoKS5pZGVudGlmaWVyKTsKIAogICAgICAgICAgICAgLy8g
TWF5YmUgd2Ugc2hvdWxkIGp1c3QgYWx3YXlzIGVuY29kZSB0aGUgcm9vdCBuYW1lcy4KICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJvb3ROYW1lID0gcm9vdFR5cGVUb1N0cmluZyhpdC52YWx1ZS5t
YXJrUmVhc29uKTsKQEAgLTY1NCw4ICs2NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRl
cjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgIHVuc2lnbmVkIGxhYmVs
SW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAganNvbi5hcHBlbmQo
JywnKTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5kZXgpOworICAgICAg
ICAgICAganNvbi5hcHBlbmQoJywnLCBsYWJlbEluZGV4KTsKIAogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVhY2hhYmlsaXR5UmVhc29uSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGl0LnZhbHVl
LnJlYWNoYWJpbGl0eUZyb21PcGFxdWVSb290UmVhc29ucykgewpAQCAtNjY0LDggKzY0OSw3IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgICAg
ICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgICAgICByZWFjaGFiaWxpdHlSZWFz
b25JbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIocmVh
Y2hhYmlsaXR5UmVhc29uSW5kZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnLCByZWFj
aGFiaWxpdHlSZWFzb25JbmRleCk7CiAgICAgICAgIH0KIAogICAgICAgICBqc29uLmFwcGVuZCgn
XScpOwpAQCAtNjczLDkgKzY1Nyw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW8KIAogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVi
dWdnaW5nU25hcHNob3QpIHsKICAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBkZXNjcmlwdGlvbnMK
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImxhYmVsc1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBqc29uLmFw
cGVuZCgiLCdcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmRlcmVk
TGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bGFiZWxJbmRleGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTIsMTAgKzM1Miw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjp0b1N0cmluZygp
IGMKICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQg
Y29sdW1uID0gMDsKICAgICAgICAgICAgIGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJh
Y2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIoY29sdW1uKTsKKyAg
ICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5j
cHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTAgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kVVJMQW5kUG9zaXRpb24oU3RyaW5nQgogCiAgICAgYnVpbGRlci5hcHBlbmQo
dXJsKTsKIAotICAgIGlmIChsaW5lTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKLSAgICB9
Ci0KLSAgICBpZiAoY29sdW1uTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
OicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjb2x1bW5OdW1iZXIpOwotICAgIH0K
KyAgICBpZiAobGluZU51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgbGlu
ZU51bWJlcik7CisgICAgaWYgKGNvbHVtbk51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6JywgY29sdW1uTnVtYmVyKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVBy
ZWZpeChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsKQpAQCAtMTgwLDEwICsxNzUsNyBAQCB2b2lk
IENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXCiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBj
YWxsRnJhbWVCdWlsZGVyOwotICAgICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmROdW1i
ZXIoaSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7
Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgICAgIGNhbGxG
cmFtZUJ1aWxkZXIuYXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKICAgICAgICAg
ICAgIGFwcGVuZFVSTEFuZFBvc2l0aW9uKGNhbGxGcmFtZUJ1aWxkZXIsIGNhbGxGcmFtZS5zb3Vy
Y2VVUkwoKSwgY2FsbEZyYW1lLmxpbmVOdW1iZXIoKSwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcigp
KTsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAy
NTM5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDEzICszNzgsMTMgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcgogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5hc0lu
dDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1
ZS5hc051bWJlcigpOwogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpCiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChudW1iZXIpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAx
LDE2ICsxMDAxLDE2IEBAIHZvaWQgT3B0aW9uUmVhZGVyOjpPcHRpb246OmR1bXAoU3RyaW5nQnUK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdW5zaWduZWQpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X3Vuc2lnbmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXpl
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3NpemUpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3NpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2Rv
dWJsZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obV9kb3VibGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9pbnQzMik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1faW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6Ok9wdGlvblJhbmdlOgogICAgICAgICBidWlsZGVyLmFwcGVuZChtX29wdGlvblJh
bmdlLnJhbmdlU3RyaW5nKCkpOwpAQCAtMTAxOSw5ICsxMDE5LDcgQEAgdm9pZCBPcHRpb25SZWFk
ZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdQogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBt
X29wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24g
PSAiIjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQob3B0aW9uKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInLCBvcHRpb24sICciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDEwICsxMzMsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoVk0mIHZtKSBj
b25zCiAgICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW47CiAgICAgICAgICAgICBjb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogCi0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKTsKKyAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jywg
bGluZSwgJzonLCBjb2x1bW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1
aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTIt
MzEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1l
cmljIGFwcGVuZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBj
YW4gaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9KU09OVmFsdWVzLmNwcDoKKyAgICAgICAgKFdU
Rjo6SlNPTkltcGw6OlZhbHVlOjp3cml0ZUpTT04gY29uc3QpOgorICAgICAgICAqIHd0Zi9NZWRp
YVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVp
bGRlcjo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg6CisgICAgICAgIChXVEY6OkZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24pOgorICAgICAgICAoV1RGOjpGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgp
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVGlkeSBhIGJpdCBvZiBTdHJpbmdCdWlsZGVyIHVzYWdlCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93
dGYvSlNPTlZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lk
IFZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0CiAgICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZShtX3ZhbHVlLm51bWJlcikpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJh
bCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTnVtYmVy
KG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1i
ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL01lZGlhVGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWVkaWFU
aW1lLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDEzICs1ODgsOSBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0
b1N0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRl
ci5hcHBlbmQoJ3snKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV90aW1lVmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3RpbWVTY2FsZSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiID0gIik7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIodG9Eb3VibGUoKSk7CisgICAgaWYgKCFoYXNEb3VibGVWYWx1
ZSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2Fs
ZSwgIiA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odG9Eb3VibGUoKSkpOwogICAgIGlmIChpc0ludmFsaWQoKSkKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGludmFsaWQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnfScpOwpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTM5Njcp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNzIgKzM5Miw2IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKENGU3RyaW5n
UmVmIHMKIAogI2VuZGlmCiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKGludCBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVy
PihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihs
b25nIGxvbmcgbnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxk
ZXI+KG51bWJlciwgdGhpcyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVy
KHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25l
ZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgcHJlY2lz
aW9uLCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSBwb2xpY3kpCi17Ci0gICAgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb0ZpeGVkUHJlY2lzaW9u
U3RyaW5nKG51bWJlciwgcHJlY2lzaW9uLCBidWZmZXIsIHBvbGljeSA9PSBUcnVuY2F0ZVRyYWls
aW5nWmVyb3MpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24sIFRyYWlsaW5nWmVyb3NU
cnVuY2F0aW5nUG9saWN5IHBvbGljeSkKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZm
ZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVj
aXNpb24sIGJ1ZmZlciwgcG9saWN5ID09IFRydW5jYXRlVHJhaWxpbmdaZXJvcykpOwotfQotCi12
b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihmbG9hdCBudW1iZXIpCi17Ci0gICAgTnVt
YmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb1N0cmluZyhudW1i
ZXIsIGJ1ZmZlcikpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3Vi
bGUgbnVtYmVyKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICBhcHBl
bmQobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5k
KG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikp
OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91Ymxl
IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIs
IGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikpOwotfQotCiBib29sIFN0cmluZ0J1aWxkZXI6OmNhblNo
cmluaygpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJmbG93ZWQoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDIwICsyMTksNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNv
dW50IC0gMSk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihp
bnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIobG9uZyBsb25nKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwotCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZmxvYXQsIHVuc2lnbmVk
IHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVU
cmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVy
b3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBk
ZWNpbWFsUGxhY2VzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNiArODMsMjkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKKy8q
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlPgorc3RydWN0IEZvcmNlTnVtYmVyIHsKKyAg
ICBOdW1iZXIgbnVtYmVyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRm9yY2VOdW1iZXJUeXBl
PgorY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8Rm9yY2VOdW1iZXI8Rm9yY2VOdW1iZXJUeXBlPiwg
dm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyKEZvcmNlTnVtYmVyIG51bWJl
cikKKyAgICAgICAgOiBtX3VuZGVybHlpbmdBZGFwdGVyKG51bWJlci5udW1iZXIpCisgICAgewor
ICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWlu
Z0FkYXB0ZXIubGVuZ3RoKCk7IH0KKyAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5kZXJseWluZ0FkYXB0ZXIuaXM4Qml0KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0
IHsgbV91bmRlcmx5aW5nQWRhcHRlci53cml0ZVRvKGRlc3RpbmF0aW9uKTsgfQorCitwcml2YXRl
OgorICAgIFN0cmluZ1R5cGVBZGFwdGVyPEZvcmNlTnVtYmVyVHlwZT4gbV91bmRlcmx5aW5nQWRh
cHRlcjsKK307CisqLworCiBjbGFzcyBGb3JtYXR0ZWROdW1iZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNiArMTE3LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG51bWJlckZvcm1hdHRlcjsKICAgICB9CiAKKyAgICBzdGF0aWMgRm9ybWF0dGVk
TnVtYmVyIGZpeGVkUHJlY2lzaW9uKGZsb2F0IG51bWJlciwgdW5zaWduZWQgc2lnbmlmaWNhbnRG
aWd1cmVzID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgdHJhaWxpbmdaZXJvc1Ry
dW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpCisgICAgeworICAgICAgICBG
b3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOworICAgICAgICBudW1iZXJUb0ZpeGVkUHJl
Y2lzaW9uU3RyaW5nKG51bWJlciwgc2lnbmlmaWNhbnRGaWd1cmVzLCBudW1iZXJGb3JtYXR0ZXIu
bV9idWZmZXIsIHRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID09IFRydW5jYXRlVHJhaWxp
bmdaZXJvcyk7CisgICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVu
KCZudW1iZXJGb3JtYXR0ZXIubV9idWZmZXJbMF0pOworICAgICAgICByZXR1cm4gbnVtYmVyRm9y
bWF0dGVyOworICAgIH0KKwogICAgIHN0YXRpYyBGb3JtYXR0ZWROdW1iZXIgZml4ZWRXaWR0aChk
b3VibGUgbnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQogICAgIHsKICAgICAgICAgRm9y
bWF0dGVkTnVtYmVyIG51bWJlckZvcm1hdHRlcjsKQEAgLTEwMiw2ICsxMzMsMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwogICAgIH0KIAorICAgIHN0YXRpYyBG
b3JtYXR0ZWROdW1iZXIgZml4ZWRXaWR0aChmbG9hdCBudW1iZXIsIHVuc2lnbmVkIGRlY2ltYWxQ
bGFjZXMpCisgICAgeworICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOwor
ICAgICAgICBudW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmcobnVtYmVyLCBkZWNpbWFsUGxhY2VzLCBu
dW1iZXJGb3JtYXR0ZXIubV9idWZmZXIpOworICAgICAgICBudW1iZXJGb3JtYXR0ZXIubV9sZW5n
dGggPSBzdGQ6OnN0cmxlbigmbnVtYmVyRm9ybWF0dGVyLm1fYnVmZmVyWzBdKTsKKyAgICAgICAg
cmV0dXJuIG51bWJlckZvcm1hdHRlcjsKKyAgICB9CisKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIGNvbnN0IExDaGFyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fYnVmZmVyWzBdKTsg
fQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5jcHAJKHJldmlzaW9uIDI1Mzk2NykK
KysrIFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDM3ICs1NCwzNyBAQCBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNoYXIg
CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoaW50IGkpCiB7Ci0gICAgbV90
ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBp
KQogewotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9y
PDwobG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFw
cGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06
Om9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIo
aSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRT
dHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwobG9uZyBsb25nIGkpCiB7Ci0gICAgbV90ZXh0
LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhp
czsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBsb25n
IGxvbmcgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1fdGV4dC5hcHBl
bmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC05Myw3ICs5Myw3IEBAIFRleHRTdHJl
YW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoZmxvYXQKICAgICBpZiAobV9mb3JtYXR0aW5nRmxh
Z3MgJiBGb3JtYXR0aW5nOjpOdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMpCiAgICAgICAgIHJldHVy
biAqdGhpcyA8PCBGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMoZik7CiAKLSAgICBtX3Rl
eHQuYXBwZW5kRml4ZWRXaWR0aE51bWJlcihmLCAyKTsKKyAgICBtX3RleHQuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRXaWR0aChmLCAyKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBA
IC0xMDIsNyArMTAyLDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChkb3Vi
bAogICAgIGlmIChtX2Zvcm1hdHRpbmdGbGFncyAmIEZvcm1hdHRpbmc6Ok51bWJlclJlc3BlY3Rp
bmdJbnRlZ2VycykKICAgICAgICAgcmV0dXJuICp0aGlzIDw8IEZvcm1hdE51bWJlclJlc3BlY3Rp
bmdJbnRlZ2VycyhkKTsKIAotICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGQsIDIp
OworICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGQsIDIpKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEyOCwxMSArMTI4LDExIEBAIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9w
ZXJhdG9yPDwoY29uc3QgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzJiBudW1iZXJUb0Zv
cm1hdCkKIHsKICAgICBpZiAoaGFzRnJhY3Rpb25zKG51bWJlclRvRm9ybWF0LnZhbHVlKSkgewot
ICAgICAgICBtX3RleHQuYXBwZW5kRml4ZWRXaWR0aE51bWJlcihudW1iZXJUb0Zvcm1hdC52YWx1
ZSwgMik7CisgICAgICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KG51bWJlclRvRm9ybWF0LnZhbHVlLCAyKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKHN0YXRpY19jYXN0PGludD4obnVtYmVyVG9Gb3Jt
YXQudmFsdWUpKTsKKyAgICBtX3RleHQuYXBwZW5kKHN0YXRpY19jYXN0PGludD4obnVtYmVyVG9G
b3JtYXQudmFsdWUpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDExNSBAQAorMjAxOS0xMi0zMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG51bWVyaWMgYXBwZW5kIGZ1bmN0aW9ucyBmcm9tIFN0
cmluZ0J1aWxkZXIgbm93IHRoYXQgYXBwZW5kIGNhbiBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIHRo
ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTY3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpob3N0TmFtZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29t
YmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L1Rlcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjp0b1N0
cmluZyBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250VmFyaWF0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAg
ICAqIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxl
S2V5ZnJhbWU6OmtleVRleHQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvd25ncmFkZVJlZmVycmVy
VG9SZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpmb3JtYXRGb3JEZWJ1Z2dlciBjb25zdCk6CisgICAgICAg
ICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpmb3JtYXRGb3JEZWJ1
Z2dlciBjb25zdCk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dDo6Zm9ybWF0Rm9yRGVidWdnZXIgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6Omdl
bmVyYXRlVW5pcXVlUHJlZml4KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW06CisgICAgICAgIChXZWJDb3JlOjpkYXRhRGV0ZWN0b3JTdHJpbmdGb3JQYXRoKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNv
bnRleHQyZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0
ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
b250IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAg
ICAgICAqIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWRDbGlja0F0dHJpYnV0aW9uOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRDbGlj
a0F0dHJpYnV0aW9uOjpyZWZlcnJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNr
QXR0cmlidXRpb246OnVybEZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRD
bGlja0F0dHJpYnV0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUlu
dGVncml0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlZ3JpdHlNaXNtYXRjaERlc2NyaXB0
aW9uKToKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpyb290TWFyZ2luIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Zm9ybWF0Qnl0ZU51bWJlcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNu
YXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBPZmZzZXRzVG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6c25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBQb3J0T3JBcmVhVG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0RlY2lt
YWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dG9TdHJpbmcgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRl
ZENvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNzc1RleHQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkVmFyaWF0aW9uU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZFByb3h5U2VydmVyU3RyaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlUG9zaXRpb24pOgorICAg
ICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE51bWJlcik6CisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRQb2ludCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tUGF0aCk6CisgICAgICAgICogc3Zn
L1NWR1BvaW50TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVycyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UG9pbnQ+Ojp0b1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxGbG9hdFJlY3Q+Ojp0b1N0cmlu
Zyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpkdW1wTWFya2VyUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpwYXJzZXJNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEN1cnJl
bnRDdXJzb3JJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE9mZnNldHMpOgorICAgICAg
ICAqIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1BhZ2VPdmVybGF5Q2xpZW50Ojptb3VzZUV2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKToK
KwogMjAyMC0wMS0wMSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2VydmljZVdvcmtlckpvYkRhdGEgc2hvdWxkIGhhdmUgYSBtb3ZlIGNvbnN0cnVjdG9yCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwMiwxMyArNDAyLDggQEAgY29uc3QgSURCS2V5RGF0YSYgSW5kZXhWYWx1
ZVN0b3JlOjpJdGVyYQogU3RyaW5nIEluZGV4VmFsdWVTdG9yZTo6bG9nZ2luZ1N0cmluZygpIGNv
bnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byYga2V5IDog
bV9vcmRlcmVkS2V5cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIktleTogIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGtleS5sb2dnaW5nU3RyaW5nKCkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgRW50cnkgaGFzICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX3JlY29yZHMuZ2V0KGtleSktPmdldENvdW50KCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBlbnRyaWVzIik7Ci0gICAgfQorICAgIGZvciAoYXV0byYga2V5
IDogbV9vcmRlcmVkS2V5cykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIktleTogIiwga2V5Lmxv
Z2dpbmdTdHJpbmcoKSwgIiAgRW50cnkgaGFzICIsIG1fcmVjb3Jkcy5nZXQoa2V5KS0+Z2V0Q291
bnQoKSwgIiBlbnRyaWVzIik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MywxMCArODMsOCBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVS
TCYgdXJsLCBiCiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzKCJ3c3MiKSA9PSBzZWN1cmUpOwog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwotICAgIGlmICh1cmwucG9ydCgpICYmICgoIXNl
Y3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0gODApIHx8IChzZWN1cmUgJiYgdXJsLnBvcnQo
KS52YWx1ZSgpICE9IDQ0MykpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHVybC5wb3J0KCkudmFsdWUoKSk7Ci0gICAgfQorICAg
IGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0gODAp
IHx8IChzZWN1cmUgJiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9IDQ0MykpKQorICAgICAgICBidWls
ZGVyLmFwcGVuZCgnOicsIHVybC5wb3J0KCkudmFsdWUoKSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29tYmluZWRVUkxGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMyw4IEBAIHN0YXRpYyBTdHJpbmcgcHJlZml4
VHJlZVZlcnRleFRvU3RyaW5nKGMKIAogICAgIGF1dG8gYWN0aW9uc1Nsb3QgPSBhY3Rpb25zLmZp
bmQoJnZlcnRleCk7CiAgICAgaWYgKGFjdGlvbnNTbG90ICE9IGFjdGlvbnMuZW5kKCkpIHsKLSAg
ICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBhY3Rpb25zU2xvdC0+dmFsdWUpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFjdGlvbik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnLCcpOwotICAgICAgICB9CisgICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDog
YWN0aW9uc1Nsb3QtPnZhbHVlKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWN0aW9uLCAn
LCcpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVy
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0u
aAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
VGVybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsOSArMjM4LDcgQEAgaW5saW5lIFN0cmluZyBU
ZXJtOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlQcmludGFi
bGUoYykgJiYgIWlzQVNDSUlTcGFjZShjKSkKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoYyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdcXCcpOwotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
dScpOwotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xcJywgJ3UnLCBjKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
MTAgKzQ2LDggQEAgU3RyaW5nIENTU0ZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNTU1RleAogICAg
ICAgICBidWlsZGVyLmFwcGVuZChjKTsKICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgIC8v
IE9taXQgdGhlIHZhbHVlIGlmIGl0J3MgMSBhcyAxIGlzIGltcGxpZWQgYnkgZGVmYXVsdC4KLSAg
ICBpZiAobV92YWx1ZSAhPSAxKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsdWUpOwotICAgIH0KKyAgICBpZiAobV92YWx1
ZSAhPSAxKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIG1fdmFsdWUpOwogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250VmFyaWF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250VmFyaWF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
OCArNDYsNyBAQCBTdHJpbmcgQ1NTRm9udFZhcmlhdGlvblZhbHVlOjpjdXN0b21DU1NUCiAgICAg
YnVpbGRlci5hcHBlbmQoJyInKTsKICAgICBmb3IgKGNoYXIgYyA6IG1fdGFnKQogICAgICAgICBi
dWlsZGVyLmFwcGVuZChjKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV92YWx1ZSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoIlwiICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV92YWx1ZSkp
OwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMs
NyBAQCBTdHJpbmcgU3R5bGVSdWxlS2V5ZnJhbWU6OmtleVRleHQoKSBjb25zCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2tleXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAg
ICAgICAgICAgICBrZXlUZXh0LmFwcGVuZCgnLCcpOwotICAgICAgICBrZXlUZXh0LmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKG1fa2V5cy5hdChpKSAqIDEwMCk7Ci0gICAgICAgIGtleVRleHQu
YXBwZW5kKCclJyk7CisgICAgICAgIGtleVRleHQuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24obV9rZXlzLmF0KGkpICogMTAwKSwgJyUnKTsKICAgICB9CiAKICAgICByZXR1
cm4ga2V5VGV4dC50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
aW1pbmdGdW5jdGlvblZhbHVlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwx
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImN1YmljLWJlemllcigi
KTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1feDEpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKG1feTEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1feDIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KG1feTIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7ICAgIAotICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImN1YmljLWJlemllcigiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1feDEpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKG1feTEpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKG1feDIpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1feTIpLCAn
KScpOwogfQogCiBib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxz
KGNvbnN0IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CkBA
IC01MiwxNCArNDIsNyBAQCBib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6
CiAKIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBj
b25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoInN0ZXBzKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fc3RlcHMpOwotICAg
IGlmIChtX3N0ZXBBdFN0YXJ0KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgc3Rh
cnQpIik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZW5kKSIp
OwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
InN0ZXBzKCIsIG1fc3RlcHMsIChtX3N0ZXBBdFN0YXJ0ID8gIiwgc3RhcnQpIiA6ICIsIGVuZCki
KSk7CiB9CiAKIGJvb2wgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTY5LDE3ICs1Miw3
IEBAIGJvb2wgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMKIAogU3RyaW5nIENT
U1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInNwcmlu
ZygiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fbWFzcyk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKG1fc3RpZmZuZXNzKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9kYW1waW5nKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9pbml0
aWFsVmVsb2NpdHkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygic3ByaW5nKCIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9tYXNzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKG1fc3RpZmZuZXNzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKG1fZGFtcGluZyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbiht
X2luaXRpYWxWZWxvY2l0eSksICcpJyk7CiB9CiAKIGJvb2wgQ1NTU3ByaW5nVGltaW5nRnVuY3Rp
b25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVy
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTUgKzQyMSwxNCBAQCB2b2lk
IENTU1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpCiAgICAgICAgIC8vIFRoZXNlIHdv
bid0IHByb3Blcmx5IHByZXNlcnZlIHRoZSBOdW1lcmljVmFsdWVUeXBlIGZsYWcKICAgICAgICAg
aWYgKG1fbnVtZXJpY1NpZ24gPT0gUGx1c1NpZ24pCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWVy
aWNWYWx1ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihudW1lcmljVmFsdWUoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBl
cmNlbnRhZ2VUb2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihudW1lcmljVmFsdWUoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtZXJpY1Zh
bHVlKCkpLCAnJScpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpbWVuc2lvblRva2VuOgog
ICAgICAgICAvLyBUaGlzIHdpbGwgaW5jb3JyZWN0bHkgc2VyaWFsaXplIGUuZy4gNGUzZTIgYXMg
NDAwMGUyCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobnVtZXJp
Y1ZhbHVlKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKG51bWVyaWNWYWx1ZSgpKSk7CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIo
dmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBV
bmljb2RlUmFuZ2VUb2tlbjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzk3OSwxMyArNzk3OSw5IEBAIHZvaWQgRG9jdW1lbnQ6OmRvd25ncmFkZVJlZmVycmVy
VG9SZWdpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKHJlZmVycmVyVVJMLnByb3RvY29sKCkpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVmZXJyZXJSZWdpc3Ry
YWJsZURvbWFpblN0cik7Ci0gICAgaWYgKHJlZmVycmVyUG9ydCkgewotICAgICAgICBidWlsZGVy
LmFwcGVuZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigqcmVmZXJyZXJQb3J0
KTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQocmVmZXJyZXJVUkwucHJvdG9jb2woKSwgIjov
LyIsIHJlZmVycmVyUmVnaXN0cmFibGVEb21haW5TdHIpOworICAgIGlmIChyZWZlcnJlclBvcnQp
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgKnJlZmVycmVyUG9ydCk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJy8nKTsKIAogICAgIG1fcmVmZXJyZXJPdmVycmlkZSA9IGJ1aWxkZXIudG9TdHJp
bmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4Miwx
MCArMTM4Miw4IEBAIHZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGIKICAg
ICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI8bnVsbD4iKTsK
ICAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgib2Zmc2V0ICIsIG1fb2Zmc2V0LCAi
IG9mICIpOwogICAgICAgICBjaGFyIHNbMTAyNF07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJvZmZzZXQgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9vZmZzZXQpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwogICAgICAgICBkZXByZWNhdGVk
Tm9kZSgpLT5mb3JtYXRGb3JEZWJ1Z2dlcihzLCBzaXplb2YocykpOwogICAgICAgICByZXN1bHQu
YXBwZW5kKHMpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkocmV2aXNpb24gMjUzOTY3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUx
OCwxNCArMTUxOCwxMCBAQCB2b2lkIFJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZm
CiAKICAgICBjb25zdCBpbnQgRm9ybWF0QnVmZmVyU2l6ZSA9IDEwMjQ7CiAgICAgY2hhciBzW0Zv
cm1hdEJ1ZmZlclNpemVdOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tIG9mZnNldCAi
KTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fc3RhcnQub2Zmc2V0KCkpOwotICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CisgICAgcmVzdWx0LmFwcGVuZCgiZnJvbSBvZmZzZXQg
IiwgbV9zdGFydC5vZmZzZXQoKSwgIiBvZiAiKTsKICAgICBzdGFydENvbnRhaW5lcigpLmZvcm1h
dEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1ZmZlclNpemUpOwogICAgIHJlc3VsdC5hcHBlbmQocyk7
Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB0byBvZmZzZXQgIik7Ci0gICAgcmVzdWx0LmFw
cGVuZE51bWJlcihtX2VuZC5vZmZzZXQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBv
ZiAiKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgdG8gb2Zmc2V0ICIsIG1fZW5kLm9mZnNldCgpLCAi
IG9mICIpOwogICAgIGVuZENvbnRhaW5lcigpLmZvcm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1
ZmZlclNpemUpOwogICAgIHJlc3VsdC5hcHBlbmQocyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMzLDExICsyMzMsNyBAQCB2b2lkIFRleHQ6OmZvcm1hdEZvckRlYnVnZ2Vy
KGNoYXIqIGJ1ZmZlCiAgICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIGlmIChyZXN1
bHQubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiOyAiKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImxlbmd0aD0iKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZE51bWJlcihzLmxlbmd0aCgpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIjsg
dmFsdWU9XCIiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgnIicpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJsZW5ndGg9Iiwgcy5sZW5ndGgoKSwg
IjsgdmFsdWU9XCIiLCBzLCAnIicpOwogICAgIH0KIAogICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1
bHQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsZW5ndGggLSAxKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShyZXZpc2lvbiAyNTM5Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTE2LDggKzUxNiw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmdlbmVy
YXRlVW5pcXVlUHIKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZG8gewogICAgICAg
ICBidWlsZGVyLmNsZWFyKCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTlMiKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoKyttX3ByZWZpeExldmVsKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoIk5TIiwgKyttX3ByZWZpeExldmVsKTsKICAgICAgICAgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSA9IGJ1aWxkZXIudG9BdG9tU3RyaW5nKCk7CiAgICAgICAgIGlmICghbmFt
ZXNwYWNlcy5nZXQobmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBwcmVmaXhlZE5hbWUuc2V0
UHJlZml4KG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0
YURldGVjdGlvbi5tbQkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsMTkgKzMyNCwx
MyBAQCBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoW3Bh
dGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihb
cGF0aCBpbmRleEF0UG9zaXRpb246MF0pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9z
aXRpb246MV0pOwotICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAg
IH0KKyAgICBjYXNlIDI6CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQ
b3NpdGlvbjowXSwgJy8nLCBbcGF0aCBpbmRleEF0UG9zaXRpb246MV0pOwogICAgIGRlZmF1bHQ6
IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246MF0pOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChbcGF0aCBpbmRleEF0UG9zaXRpb246MF0pOwogICAgICAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDEgOyBpIDwgbGVuZ3RoIDsgaSsrKSB7Ci0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcvJywgW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKTsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCwxMCArMTcwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2VydmVyTWFwTW91c2VQb3Np
dGlvbgogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHBhc3MgVXNlVHJhbnNm
b3JtcyBpbiB0aGUgTWFwQ29vcmRpbmF0ZXNGbGFncy4KICAgICBhdXRvIGFic29sdXRlUG9zaXRp
b24gPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5hYnNvbHV0ZVRvTG9jYWwoRmxv
YXRQb2ludChtb3VzZUV2ZW50LnBhZ2VYKCksIG1vdXNlRXZlbnQucGFnZVkoKSkpOwotICAgIHVy
bC5hcHBlbmQoJz8nKTsKLSAgICB1cmwuYXBwZW5kTnVtYmVyKHN0ZDo6bHJvdW5kKGFic29sdXRl
UG9zaXRpb24ueCgpKSk7Ci0gICAgdXJsLmFwcGVuZCgnLCcpOwotICAgIHVybC5hcHBlbmROdW1i
ZXIoc3RkOjpscm91bmQoYWJzb2x1dGVQb3NpdGlvbi55KCkpKTsKKyAgICB1cmwuYXBwZW5kKCc/
Jywgc3RkOjpscm91bmQoYWJzb2x1dGVQb3NpdGlvbi54KCkpLCAnLCcsIHN0ZDo6bHJvdW5kKGFi
c29sdXRlUG9zaXRpb24ueSgpKSk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsMTEgKzMz
NSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogSFRNTENhbnZhc0VsZW0KICAgICAvLyBN
YWtlIHN1cmUgd2UgZG9uJ3QgdXNlIG1vcmUgcGl4ZWwgbWVtb3J5IHRoYW4gdGhlIHN5c3RlbSBj
YW4gc3VwcG9ydC4KICAgICBzaXplX3QgcmVxdWVzdGVkUGl4ZWxNZW1vcnkgPSA0ICogd2lkdGgo
KSAqIGhlaWdodCgpOwogICAgIGlmIChhY3RpdmVQaXhlbE1lbW9yeSgpICsgcmVxdWVzdGVkUGl4
ZWxNZW1vcnkgPiBtYXhBY3RpdmVQaXhlbE1lbW9yeSgpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxk
ZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJU
b3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgiKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAv
IDEwMjQgLyAxMDI0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgTUIp
LiIpOwotICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Cisg
ICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiVG90YWwgY2FudmFzIG1lbW9yeSB1c2Ug
ZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoIiwgbWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEw
MjQgLyAxMDI0LCAiIE1CKS4iKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtODYzLDIyICs4NTksMTQgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VC
dWZmZQogCiAgICAgLy8gUGVyZm9ybSBtdWx0aXBsaWNhdGlvbiBhcyBmbG9hdGluZyBwb2ludCB0
byBhdm9pZCBvdmVyZmxvdwogICAgIGlmIChmbG9hdCh3aWR0aCgpKSAqIGhlaWdodCgpID4gbWF4
Q2FudmFzQXJlYSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUg
bWF4aW11bSBsaW1pdCAod2lkdGggKiBoZWlnaHQgPiAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIobWF4Q2FudmFzQXJlYSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiKS4iKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkpOworICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIkNhbnZhcyBhcmVh
IGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKHdpZHRoICogaGVpZ2h0ID4gIiwgbWF4Q2FudmFz
QXJlYSwgIikuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIC8vIE1ha2Ug
c3VyZSB3ZSBkb24ndCB1c2UgbW9yZSBwaXhlbCBtZW1vcnkgdGhhbiB0aGUgc3lzdGVtIGNhbiBz
dXBwb3J0LgogICAgIHNpemVfdCByZXF1ZXN0ZWRQaXhlbE1lbW9yeSA9IDQgKiB3aWR0aCgpICog
aGVpZ2h0KCk7CiAgICAgaWYgKGFjdGl2ZVBpeGVsTWVtb3J5KCkgKyByZXF1ZXN0ZWRQaXhlbE1l
bW9yeSA+IG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBz
dHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlRvdGFs
IGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKCIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihtYXhBY3RpdmVQaXhlbE1lbW9yeSgpIC8gMTAy
NCAvIDEwMjQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBNQikuIik7
Ci0gICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNl
ZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgiLCBtYXhBY3RpdmVQaXhlbE1lbW9yeSgpIC8gMTAyNCAv
IDEwMjQsICIgTUIpLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NzEsMTYgKzU3MSwxMCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxz
SW5BCiAgICAgICAgICAgICBpZiAoJmNhbmRpZGF0ZSAhPSAmaW1hZ2VDYW5kaWRhdGVzWzBdKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChVUkwoYmFzZSwgY2FuZGlkYXRlLnN0cmluZy50b1N0cmluZygpKS5zdHJp
bmcoKSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlbnNpdHkgIT0gVW5pbml0aWFsaXpl
ZERlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGNhbmRpZGF0ZS5k
ZW5zaXR5KTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd4Jyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291cmNlV2lkdGggIT0gVW5pbml0aWFs
aXplZERlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihjYW5kaWRhdGUucmVzb3VyY2VXaWR0
aCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndycpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5zaXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlw
dG9yKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKGNhbmRpZGF0ZS5kZW5zaXR5KSwgJ3gnKTsKKyAgICAgICAgICAgIGlm
IChjYW5kaWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgY2FuZGlkYXRlLnJlc291cmNlV2lkdGgs
ICd3Jyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDggKzEwNSw3IEBAIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZv
bnQoKSAKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9udFZhcmlh
bnRDYXBzOjpTbWFsbCkKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgic21h
bGwtY2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJlcihmb250RGVzY3Jp
cHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7Ci0gICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0
ZXJhbCgicHgiKTsKKyAgICBzZXJpYWxpemVkRm9udC5hcHBlbmQoZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksICJweCIpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZvbnREZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxOTgsMTMgKzIxOTgsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VE
YXRhPj4gQ2FudmFzUmVuCiAKICAgICBhdXRvIGJ5dGVBcnJheSA9IGJ1ZmZlci0+Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKGltYWdlRGF0YVJlY3QsIG51bGxwdHIsIGNvb3JkaW5hdGVTeXN0ZW0p
OwogICAgIGlmICghYnl0ZUFycmF5KSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgY29uc29sZU1l
c3NhZ2U7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZExpdGVyYWwoIlVuYWJsZSB0byBn
ZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcy4gUmVxdWVzdGVkIHNpemUgd2FzICIpOwotICAgICAg
ICBjb25zb2xlTWVzc2FnZS5hcHBlbmROdW1iZXIoaW1hZ2VEYXRhUmVjdC53aWR0aCgpKTsKLSAg
ICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiIHggIik7Ci0gICAgICAgIGNvbnNv
bGVNZXNzYWdlLmFwcGVuZE51bWJlcihpbWFnZURhdGFSZWN0LmhlaWdodCgpKTsKLQotICAgICAg
ICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVN
ZXNzYWdlLnRvU3RyaW5nKCkpOworICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIlVuYWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBm
cm9tIGNhbnZhcy4gUmVxdWVzdGVkIHNpemUgd2FzICIsIGltYWdlRGF0YVJlY3Qud2lkdGgoKSwg
IiB4ICIsIGltYWdlRGF0YVJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0CiAgICAgaWYgKGN1ZS0+dmVydGlj
YWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpKQogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5TGVmdCwgcG9zaXRpb24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVS
Q0VOVEFHRSk7CiAgICAgZWxzZSBpZiAoY3VlLT52ZXJ0aWNhbCgpID09IHZlcnRpY2FsR3Jvd2lu
Z1JpZ2h0S2V5d29yZCgpKQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgbWFrZVN0cmluZygiY2FsYygtIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KHZpZGVvU2l6ZS53aWR0aCgpLCAyKSwgInB4IC0gIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdp
ZHRoKGN1ZS0+Z2V0Q1NTU2l6ZSgpLCAyKSwgInB4KSIpKTsKKyAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIG1ha2VTdHJpbmcoImNhbGMoLSIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChzdGF0aWNfY2FzdDxkb3VibGU+KHZpZGVvU2l6ZS53aWR0aCgp
KSwgMiksICJweCAtICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChzdGF0aWNfY2FzdDxk
b3VibGU+KGN1ZS0+Z2V0Q1NTU2l6ZSgpKSwgMiksICJweCkiKSk7CiAKICAgICBkb3VibGUgYXV0
aG9yRm9udFNpemUgPSBzdGQ6Om1pbih2aWRlb1NpemUud2lkdGgoKSwgdmlkZW9TaXplLmhlaWdo
dCgpKSAqIERFRkFVTFRDQVBUSU9ORk9OVFNJWkVQRVJDRU5UQUdFIC8gMTAwLjA7CiAgICAgZG91
YmxlIG11bHRpcGxpZXIgPSAxLjA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRD
bGlja0F0dHJpYnV0aW9uLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxNSAr
MTMzLDcgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsKCkgY29uc3QKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVy
LmFwcGVuZChtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKGFkQ2xpY2tBdHRyaWJ1dGlvblBhdGhQcmVmaXgpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCcvJyk7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jYW1wYWlnbi5pZCk7Ci0K
LSAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OworICAgIFVSTCB1cmwg
eyBVUkwoKSwgbWFrZVN0cmluZygiaHR0cHM6Ly8iLCBtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSwgYWRDbGlja0F0dHJpYnV0aW9uUGF0aFByZWZpeCwgbV9jb252ZXJzaW9uLnZh
bHVlKCkuZGF0YSwgJy8nLCBtX2NhbXBhaWduLmlkKSB9OwogICAgIGlmICh1cmwuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gdXJsOwogCkBAIC0xNTMsMTIgKzE0NSw3IEBAIFVSTCBBZENsaWNr
QXR0cmlidXRpb246OnJlZmVycmVyKCkgY29uc3QKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIFVSTCgpOwogCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX2Rlc3Rp
bmF0aW9uLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVyLnRvU3RyaW5nKCkgfTsKKyAgICBV
UkwgdXJsIHsgVVJMKCksIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgbV9kZXN0aW5hdGlvbi5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSwgJy8nKSB9OwogICAgIGlmICh1cmwuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gdXJsOwogICAgIApAQCAtMTcyLDE0ICsxNTksOSBAQCBVUkwgQWRDbGlj
a0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nKGNvCiAgICAgICAgIHJldHVybiBVUkwoKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIj9j
b252ZXJzaW9uPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1
ZSgpLmRhdGEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJmNhbXBhaWduPSIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOwotICAgIGlmIChiYXNlVVJMLmhh
c1F1ZXJ5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyYnKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYmFzZVVSTC5xdWVyeSgpKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIj9j
b252ZXJzaW9uPSIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICImY2FtcGFpZ249IiwgbV9j
YW1wYWlnbi5pZCk7CisgICAgaWYgKGJhc2VVUkwuaGFzUXVlcnkoKSkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyYnLCBiYXNlVVJMLnF1ZXJ5KCkpOwogICAgIHJldHVybiBVUkwoYmFzZVVSTCwg
YnVpbGRlci50b1N0cmluZygpKTsKIH0KIApAQCAtMTk4LDI2ICsxODAsMTYgQEAgYm9vbCBBZENs
aWNrQXR0cmlidXRpb246Ondhc0NvbnZlcnNpb25TZQogU3RyaW5nIEFkQ2xpY2tBdHRyaWJ1dGlv
bjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlNvdXJjZTogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9z
b3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXG5EZXN0aW5hdGlvbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9kZXN0aW5hdGlv
bi5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJcbkNhbXBhaWduIElEOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NhbXBhaWdu
LmlkKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiU291cmNlOiAiLCBtX3NvdXJjZS5yZWdpc3RyYWJs
ZURvbWFpbi5zdHJpbmcoKSwgIlxuRGVzdGluYXRpb246ICIsIG1fZGVzdGluYXRpb24ucmVnaXN0
cmFibGVEb21haW4uc3RyaW5nKCksICJcbkNhbXBhaWduIElEOiAiLCBtX2NhbXBhaWduLmlkKTsK
ICAgICBpZiAobV9jb252ZXJzaW9uKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XG5Db252ZXJzaW9uIGRhdGE6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2Nv
bnZlcnNpb24udmFsdWUoKS5kYXRhKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJc
bkNvbnZlcnNpb24gcHJpb3JpdHk6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlciht
X2NvbnZlcnNpb24udmFsdWUoKS5wcmlvcml0eSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXG5Db252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJcbkNvbnZlcnNpb24gZGF0YTogIiwgbV9jb252ZXJzaW9uLnZhbHVlKCku
ZGF0YSwgIlxuQ29udmVyc2lvbiBwcmlvcml0eTogIiwgbV9jb252ZXJzaW9uLnZhbHVlKCkucHJp
b3JpdHksICJcbkNvbnZlcnNpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKICAgICAgICAg
aWYgKCFtX2VhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiTm90IHNldCIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gc2Vjb25k
c1VudGlsU2VuZCA9ICptX2VhcmxpZXN0VGltZVRvU2VuZCAtIFdhbGxUaW1lOjpub3coKTsKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChzZWNvbmRzVW50aWxTZW5kID49IDI0X2ggJiYgc2Vj
b25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJXaXRoaW4gMjQtNDggaG91cnMiIDogIk91dHNpZGUg
MjQtNDggaG91cnMiKTsKICAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IlxuQ29udmVyc2lvbiByZXF1ZXN0IHNlbnQ6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgo
d2FzQ29udmVyc2lvblNlbnQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxuQ29udmVyc2lvbiByZXF1ZXN0IHNlbnQ6ICIsICh3YXNDb252ZXJzaW9uU2Vu
dCgpID8gInRydWUiIDogImZhbHNlIikpOwogICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlxuTm8gY29udmVyc2lvbiBkYXRhLiIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTQgKzQy
MSwxMSBAQCBzdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oCiBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlJlZ2lzdHJhYmxlIGRv
bWFpbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3Ry
YWJsZSBkb21haW46ICIsIHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAnXG4nKTsKIAogICAg
IC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2Vy
SW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb246ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicsICIgICAgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvbjogIik7CiAgICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpKSkKICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRoaW4gMjQgaG91cnMiKTsKICAgICBlbHNlCkBAIC00
NjAsMTAgKzQ1Nyw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygK
ICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJlc291cmNlIiwgaXNQcmV2
YWxlbnRSZXNvdXJjZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBpc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihkYXRhUmVjb3Jkc1JlbW92ZWQpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicsICIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBkYXRhUmVj
b3Jkc1JlbW92ZWQsICdcbicpOwogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAg
ICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVk
VG9Mb2FkKTsKQEAgLTQ3Myw4ICs0NjcsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6dG9TdHJpbmcoCiAgICAgYXBwZW5kU2NyZWVuQVBJT3B0aW9uU2V0KGJ1aWxkZXIsIHNjcmVl
bkZ1bmN0aW9uc0FjY2Vzc2VkKTsKICAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNU
ZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuKTsKICAgICBhcHBl
bmRCb29sZWFuKGJ1aWxkZXIsICJjYW52YXNSZWFkRGF0YSIsIGNhbnZhc0FjdGl2aXR5UmVjb3Jk
Lndhc0RhdGFSZWFkKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuXG4iKTsKICNlbmRpZgog
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEyLDE3ICsyMTIsMTIgQEAgU3RyaW5nIGludGVncml0eU1pc21hdGNoRGVzY3Jp
cHRpb24oY29ucwogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIu
YXBwZW5kKHJlc291cmNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgiLiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLiAi
KTsKLSAgICBidWlsZGVyLmFwcGVuZCgiQ29udGVudCBsZW5ndGg6ICIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHJlc291cmNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
LiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLiBDb250ZW50IGxlbmd0aDogIik7CiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkK
LSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocmVzb3VyY2VCdWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogICAgIGVsc2UK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihubyBjb250ZW50KSIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCIsIEV4cGVjdGVkIGNvbnRlbnQgbGVuZ3RoOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihyZXNvdXJjZS5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBtZXRhZGF0YTogIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQoaW50ZWdyaXR5TWV0YWRhdGEpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIsIEV4cGVjdGVkIGNv
bnRlbnQgbGVuZ3RoOiAiLCByZXNvdXJjZS5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpLCAiLCBFeHBlY3RlZCBtZXRhZGF0YTogIiwgaW50ZWdyaXR5TWV0YWRhdGEpOwogCiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM2LDcgKzEzNiw3IEBAIFN0cmluZyBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdE1hcmdpbigK
ICAgICBQaHlzaWNhbEJveFNpZGUgc2lkZXNbNF0gPSB7IFBoeXNpY2FsQm94U2lkZTo6VG9wLCBQ
aHlzaWNhbEJveFNpZGU6OlJpZ2h0LCBQaHlzaWNhbEJveFNpZGU6OkJvdHRvbSwgUGh5c2ljYWxC
b3hTaWRlOjpMZWZ0IH07CiAgICAgZm9yIChhdXRvIHNpZGUgOiBzaWRlcykgewogICAgICAgICBh
dXRvJiBsZW5ndGggPSBtX3Jvb3RNYXJnaW4uYXQoc2lkZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTnVtYmVyKGxlbmd0aC5pbnRWYWx1ZSgpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobGVuZ3RoLmludFZhbHVlKCkpOwogICAgICAgICBpZiAobGVuZ3RoLnR5cGUoKSA9
PSBQZXJjZW50KQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyUnKTsKICAgICAg
ICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNSArNzQsOCBAQCBTdHJpbmcgU2VjdXJp
dHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50CiAgICAgLy8gdG8gYXZvaWQgYnJlYWtpbmcgZXhp
c3RpbmcgcGVyc2lzdGVudCBzdGF0ZS4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShw
cm90b2NvbCwgImZpbGUiKSkKICAgICAgICAgcmV0dXJuICJmaWxlX18wIl9zOwotICAgIAotICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChw
cm90b2NvbCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZSho
b3N0KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihwb3J0LnZhbHVlT3IoMCkpOwotICAgIAotICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbWFrZVN0cmlu
Zyhwcm90b2NvbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxl
TmFtZShob3N0KSwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9y
dC52YWx1ZU9yKDApKSk7CiB9CiAKIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZGVudGlmaWVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkocmV2aXNpb24gMjUzOTY3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRCeXRlTnVt
YmVyKHNpemVfdCBudQogICAgIGlmIChudW1iZXIgPj0gMTA0ODU3NikKICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG51bWJlciAvIDEwNDg1NzYu
LCAyKSwgIiBNQiIpOwogICAgIGlmIChudW1iZXIgPj0gMTAyNCkKLSAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG51bWJlciAvIDEwMjQsIDEpLCAi
IGtCIik7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChudW1iZXIgLyAxMDI0LiwgMSksICIga0IiKTsKICAgICByZXR1cm4gU3RyaW5nOjpudW1i
ZXIobnVtYmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMCArNzgsOCBAQCBzdGF0aWMgU3RyaW5nIHNuYXBPZmZz
ZXRzVG9TdHJpbmcoY29uc3QgCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyAiKTsKLSAgICBmb3IgKGF1dG8mIG9mZnNldCA6IHNuYXBP
ZmZzZXRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRXaWR0aE51bWJlcihvZmZzZXQu
dG9GbG9hdCgpLCAxKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvJiBvZmZzZXQgOiBzbmFwT2Zmc2V0cykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG9mZnNldC50b0Zsb2F0KCksIDEpLCAnICcpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
IH0KQEAgLTkwLDEzICs4OCw4IEBAIHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldFJhbmdlc1RvU3Ry
aW5nKGMKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJbICIpOwotICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpIHsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFdpZHRoTnVt
YmVyKHJhbmdlLnN0YXJ0LnRvRmxvYXQoKSwgMSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKHJhbmdl
LmVuZC50b0Zsb2F0KCksIDEpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIikgIik7
Ci0gICAgfQorICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcoJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJhbmdlLnN0YXJ0LnRvRmxv
YXQoKSwgMSksICIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyYW5nZS5lbmQudG9G
bG9hdCgpLCAxKSwgIikgIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtMTA0LDEwICs5NywxMCBAQCBzdGF0aWMgU3RyaW5n
IHNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyhjCiBzdGF0aWMgU3RyaW5nIHNuYXBQb3J0T3JBcmVh
VG9TdHJpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gbWFrZVN0cmlu
Zygie3siLAotICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmVjdC54KCksIDEp
LCAiLCAiLAotICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmVjdC55KCksIDEp
LCAifSB7IiwKLSAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qud2lkdGgo
KSwgMSksICIsICIsCi0gICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0Lmhl
aWdodCgpLCAxKSwgIn19Iik7CisgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChy
ZWN0LngoKS50b0RvdWJsZSgpLCAxKSwgIiwgIiwKKyAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFdpZHRoKHJlY3QueSgpLnRvRG91YmxlKCksIDEpLCAifSB7IiwKKyAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qud2lkdGgoKS50b0RvdWJsZSgpLCAxKSwgIiwgIiwK
KyAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3QuaGVpZ2h0KCkudG9Eb3Vi
bGUoKSwgMSksICJ9fSIpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlY2ltYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rl
Y2ltYWwuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNSwxMCArMTAyNSw4IEBAIFN0cmluZyBE
ZWNpbWFsOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ZGlnaXRzW2ldKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50KSB7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/ICJlIiA6
ICJlKyIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYWRqdXN0ZWRFeHBvbmVu
dCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/ICJlIiA6ICJlKyIsIGFkanVz
dGVkRXhwb25lbnQpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsMjEgKzM0MCwxNSBAQCBTdHJpbmcgQ29sb3I6OmNzc1Rl
eHQoKSBjb25zdAogICAgIGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJyZ2Io
Iik7CiAKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihyZWQoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihyZWQoKSksICIsICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGdyZWVuKCkpLCAiLCAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihibHVlKCkpKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGdyZWVuKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
Ci0KLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihi
bHVlKCkpKTsKICAgICBpZiAoY29sb3JIYXNBbHBoYSkgewogICAgICAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3NlcmlhbGl6aW5nLWNzcy12YWx1ZXMKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICBpbnQgYWxwaGEgPSB0aGlzLT5hbHBo
YSgpOwogICAgICAgICBmbG9hdCByb3VuZGVkID0gcm91bmQoYWxwaGEgKiAxMDAgLyAyNTUuMGYp
IC8gMTAwOwogICAgICAgICBpZiAocm91bmQocm91bmRlZCAqIDI1NSkgIT0gYWxwaGEpCiAgICAg
ICAgICAgICByb3VuZGVkID0gcm91bmQoYWxwaGEgKiAxMDAwIC8gMjU1LjBmKSAvIDEwMDA7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocm91bmRlZCk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
cm91bmRlZCkpOwogICAgIH0KICAgICAgICAgCiAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbmRlZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTcgKzU2LDExIEBA
IFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdU
Rjo6ZW1wdHlTdHJpbmcoKTsKICAgICB9CiAKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKHJlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVkKCkpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZ3JlZW4oKSksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihibHVlKCkpKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIoZ3JlZW4oKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBpZiAo
IVdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBoYSgpLCAxLjBmKSkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiAvICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oYWxwaGEoKSkp
OwogCi0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihibHVlKCkpOwotICAg
IGlmICghV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhKCksIDEuMGYpKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC8gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIoYWxwaGEoKSk7Ci0gICAgfQogICAgIGJ1aWxkZXIuYXBwZW5kKCcp
Jyk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHJldmlzaW9u
IDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsMTEgKzU3Nyw3IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0xheWVyOjphZGp1c3RDb3ZlcmFnZVIKIFN0cmluZyBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAgICAg
Ly8gfCBpcyBub3QgYSB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlciBpbiBDU1MsIHNvIHRoaXMg
Y2FuIG5ldmVyIGNvbmZsaWN0IHdpdGggYSBrZXlmcmFtZSBpZGVudGlmaWVyLgotICAgIFN0cmlu
Z0J1aWxkZXIgaWQ7Ci0gICAgaWQuYXBwZW5kTGl0ZXJhbCgiLXx0cmFuc2l0aW9uIik7Ci0gICAg
aWQuYXBwZW5kTnVtYmVyKHN0YXRpY19jYXN0PGludD4ocHJvcGVydHkpKTsKLSAgICBpZC5hcHBl
bmQoJy0nKTsKLSAgICByZXR1cm4gaWQudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZygiLXx0cmFuc2l0aW9uIiwgc3RhdGljX2Nhc3Q8aW50Pihwcm9wZXJ0eSksICctJyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoTW9ub3RvbmljVGltZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY1
LDEyICs3NjUsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlCiAg
ICAgbGF5ZXItPnNldEVkZ2VBbnRpYWxpYXNpbmdNYXNrKDApOwogICAgIGxheWVyLT5zZXRPcGFx
dWUobV90aWxlc0FyZU9wYXF1ZSk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIG5hbWVCdWlsZGVyOwot
ICAgIG5hbWVCdWlsZGVyLmFwcGVuZCgidGlsZSBhdCAiKTsKLSAgICBuYW1lQnVpbGRlci5hcHBl
bmROdW1iZXIodGlsZVJlY3QubG9jYXRpb24oKS54KCkpOwotICAgIG5hbWVCdWlsZGVyLmFwcGVu
ZCgnLCcpOwotICAgIG5hbWVCdWlsZGVyLmFwcGVuZE51bWJlcih0aWxlUmVjdC5sb2NhdGlvbigp
LnkoKSk7Ci0gICAgbGF5ZXItPnNldE5hbWUobmFtZUJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAg
bGF5ZXItPnNldE5hbWUobWFrZVN0cmluZygidGlsZSBhdCAiLCB0aWxlUmVjdC5sb2NhdGlvbigp
LngoKSwgJywnLCB0aWxlUmVjdC5sb2NhdGlvbigpLnkoKSkpOwogCiAgICAgZmxvYXQgdGVtcG9y
YXJ5U2NhbGVGYWN0b3IgPSBvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckNv
bnRlbnRzU2NhbGVNdWx0aXBsaWVyRm9yTmV3VGlsZXMobV90aWxlQ2FjaGVMYXllcik7CiAgICAg
bV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvciB8PSB0ZW1wb3JhcnlTY2FsZUZhY3Rv
ciAhPSAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHJldmlzaW9uIDI1Mzk2
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDQsMzcgKzcwNCwzNyBAQCBzdGF0aWMg
dm9pZCBwcmludEluZGVudChTdHJpbmdCdWlsZGVyJiBiCiBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cm0pCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMTEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMSkpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFu
c2Zvcm0ubTEyKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMTIpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1
aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0xMyk7CisgICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEz
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMTQpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCkpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCI7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNm
b3JtLm0yMSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIxKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMjIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMikp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcih0cmFuc2Zvcm0ubTIzKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjMpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3Jt
Lm0yNCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTI0KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTMxKTsKKyAgICBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpKTsK
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIodHJhbnNmb3JtLm0zMik7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMyKSk7CiAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5t
MzMpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
dHJhbnNmb3JtLm0zMykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTM0KTsKKyAgICBidWlsZGVyLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgiOyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKHRyYW5zZm9ybS5tNDEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTQy
KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tNDIpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm00Myk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRyYW5zZm9ybS5tNDQpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00NCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7
CiB9CiAKQEAgLTc4NSwyNyArNzg1LDI3IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5n
QnVpbGRlciYgYnUKICAgICBidWlsZGVyLmFwcGVuZCgiKCIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KGxheWVyVHlwZU5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgWyIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJQb3NpdGlvbi54KCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJQb3NpdGlvbi54
KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIobGF5ZXJQb3NpdGlvbi55KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJQb3NpdGlvbi55KCkpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIobGF5ZXJQb3NpdGlvbi56KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJQb3NpdGlvbi56KCkpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgiXSBbIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckJv
dW5kcy54KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obGF5ZXJCb3VuZHMueCgpKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGxheWVyQm91bmRzLnkoKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5k
cy55KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJCb3VuZHMud2lkdGgoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy53aWR0aCgpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKGxheWVyQm91bmRzLmhlaWdodCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQm91bmRzLmhlaWdodCgpKSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoIl0gWyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIobGF5ZXJBbmNob3JQb2ludC54KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJBbmNob3JQb2ludC54KCkpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
bGF5ZXJBbmNob3JQb2ludC55KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJBbmNob3JQb2ludC55KCkpKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJB
bmNob3JQb2ludC56KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24obGF5ZXJBbmNob3JQb2ludC56KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgi
XSBzdXBlcmxheWVyPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihsYXllci0+c3VwZXJsYXllcigpKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxheWVyLT5zdXBl
cmxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG5hbWUgaWYgbmVlZGVkCiAgICAgU3RyaW5nIGxh
eWVyTmFtZSA9IENBQ0ZMYXllckdldE5hbWUobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CkBAIC04
MjIsNyArODIyLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidQog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgcHJpbnRJbmRlbnQoYnVpbGRl
ciwgaW5kZW50ICsgMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoYm9yZGVyV2lkdGggIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoYm9yZGVyV2lkdGgp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KGJvcmRlcldpZHRoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgfQogCkBA
IC04NTEsNyArODUxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBi
dQogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgcHJpbnRJbmRlbnQoYnVp
bGRlciwgaW5kZW50ICsgMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIob3BhY2l0eSAiKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllck9wYWNpdHkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KGxheWVyT3BhY2l0eSkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgIH0KIApA
QCAtODgyLDkgKzg4Miw5IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYg
YnUKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgICAgICAgICAgcHJpbnRJ
bmRlbnQoYnVpbGRlciwgaW5kZW50ICsgMSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
KGNvbnRlbnRzIChpbWFnZSBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihD
R0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250ZW50cykpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoQ0dJbWFnZUdldFdpZHRoKGltYWdlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlQ29udGVudHMpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Il0pKSIpOwogICAgICAgICB9CiAKQEAgLTg5NCw5ICs4OTQsOSBAQCBzdGF0aWMgdm9pZCBwcmlu
dExheWVyKFN0cmluZ0J1aWxkZXImIGJ1CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKICAgICAgICAgICAgIHByaW50SW5kZW50KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIihjb250ZW50cyAoYmFja2luZy1zdG9yZSBbIik7Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250ZW50
cykpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoQ0dJbWFnZUdldFdpZHRoKGltYWdlQ29u
dGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29udGVudHMpKTsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykp
OwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIl0pKSIpOwogICAgICAgICB9CiAgICAgfQpA
QCAtOTI3LDE1ICs5MjcsMTUgQEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcldpbjo6bGF5ZXJUcmVl
QXNTdAogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJc
blxuKiogUmVuZGVyIHRyZWUgYXQgdGltZSAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kcygpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoIiAoYm91bmRzICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIocm9vdEJvdW5kcy5vcmlnaW4ueCk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLm9yaWdpbi54KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihyb290Qm91bmRzLm9yaWdpbi55KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMub3JpZ2luLnkpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIocm9vdEJvdW5kcy5zaXplLndpZHRoKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMuc2l6ZS53aWR0aCkpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCd4Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihy
b290Qm91bmRzLnNpemUuaGVpZ2h0KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMuc2l6ZS5oZWlnaHQpKTsKICAgICBidWlsZGVy
LmFwcGVuZCgiKSAqKlxuXG4iKTsKIAogICAgIC8vIFByaW50IGxheWVyIHRyZWUgZnJvbSB0aGUg
cm9vdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAkocmV2aXNpb24gMjUzOTY3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDYsMTIgKzY0Niw3IEBAIFN0cmluZyBi
dWlsZFZhcmlhdGlvblNldHRpbmdzKEZUX0ZhY2UgZmEKICAgICBmb3IgKGF1dG8mIHZhcmlhdGlv
biA6IHZhcmlhdGlvbnNUb0JlQXBwbGllZCkgewogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQodmFyaWF0aW9uLmtleVswXSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlv
bi5rZXlbMV0pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YXJpYXRpb24ua2V5WzJdKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtleVszXSk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCc9Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
dmFyaWF0aW9uLnZhbHVlKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtleVsw
XSwgdmFyaWF0aW9uLmtleVsxXSwgdmFyaWF0aW9uLmtleVsyXSwgdmFyaWF0aW9uLmtleVszXSwg
Jz0nLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHZhcmlhdGlvbi52YWx1ZSkpOwog
ICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMCArNTAsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlTW9jazo6Z2VuZXJhdGVNCiAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgiQXVkaW8gVHJhY2sg
SUQ6ICIpOwogICAgIGVsc2UKICAgICAgICAgbV9idWZmZXIuYXBwZW5kKCJWaWRlbyBUcmFjayBJ
RDogIik7Ci0gICAgbV9idWZmZXIuYXBwZW5kKHRyYWNrLmlkKCkpOwotICAgIG1fYnVmZmVyLmFw
cGVuZCgiIENvdW50ZXI6ICIpOwotICAgIG1fYnVmZmVyLmFwcGVuZE51bWJlcigrK21fY291bnRl
cik7Ci0gICAgbV9idWZmZXIuYXBwZW5kKCJcclxuLS0tLS0tLS0tXHJcbiIpOworICAgIG1fYnVm
ZmVyLmFwcGVuZCh0cmFjay5pZCgpLCAiIENvdW50ZXI6ICIsICsrbV9jb3VudGVyLCAiXHJcbi0t
LS0tLS0tLVxyXG4iKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm94eVNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFByb3h5U2VydmVyU3RyaW5nKFN0cmkK
IAogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgQVNTRVJUKHByb3h5U2VydmVyLnBvcnQo
KSAhPSAtMSk7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIocHJveHlTZXJ2ZXIucG9ydCgpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChwcm94eVNlcnZlci5wb3J0KCkpOwogfQogCiBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NjgsMTcgKzc2OCwxMCBAQCBzdGF0aWMgU3RyaW5nIG5vZGVQ
b3NpdGlvbihOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJib2R5Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAobi0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCd7Jyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRUYWdOYW1lKG4pKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjaGlsZCAiKTsKLSAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG4tPmNvbXB1dGVOb2RlSW5kZXgoKSk7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7Iik7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChnZXRUYWdOYW1lKG4pKTsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9Jyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobi0+aXNTaGFkb3dS
b290KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgneycsIGdldFRhZ05hbWUobiks
ICd9Jyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
Y2hpbGQgIiwgbi0+Y29tcHV0ZU5vZGVJbmRleCgpLCAiIHsiLCBnZXRUYWdOYW1lKG4pLCAnfScp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJkb2N1
bWVudCIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAkocmV2aXNp
b24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoYnVpbGRl
ci5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWJlci0+dmFsdWUo
KSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKG51bWJlci0+dmFsdWUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5n
QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTdHJpbmdCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTYgKzU3LDEyIEBA
IHN0YXRpYyB2b2lkIGFwcGVuZEZsYWcoU3RyaW5nQnVpbGRlciYgc3QKIAogc3RhdGljIHZvaWQg
YXBwZW5kTnVtYmVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIGZsb2F0IG51bWJlcikK
IHsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWJlcik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG51bWJlciksICcgJyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGFwcGVuZFBvaW50KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIocG9pbnQueCgpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocG9pbnQueSgpKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9pbnQueCgpKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LnkoKSksICcgJyk7CiB9CiAKIHZvaWQgU1ZH
UGF0aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwg
Ym9vbCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDQwICs1OSwxNiBA
QCBTdHJpbmcgYnVpbGRTdHJpbmdGcm9tUGF0aChjb25zdCBQYXRoJiBwCiAgICAgICAgIHBhdGgu
YXBwbHkoWyZidWlsZGVyXSAoY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAgICAg
ICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50
OjpUeXBlOjpNb3ZlVG9Qb2ludDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnTScp
OwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBd
LngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdNJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAnICcs
IGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2ludDoKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnTCcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50
LnBvaW50c1swXS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdMJywgZWxl
bWVudC5wb2ludHNbMF0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRR
dWFkQ3VydmVUb1BvaW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdRJyk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgp
KTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC5wb2ludHNbMV0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnUScsIGVs
ZW1lbnQucG9pbnRzWzBdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCksICcsJywgZWxl
bWVudC5wb2ludHNbMV0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRD
dXJ2ZVRvUG9pbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0MnKTsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQucG9pbnRzWzFdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBv
aW50c1sxXS55KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMl0ueCgpKTsK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzJdLnkoKSk7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ0MnLCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxlbWVu
dC5wb2ludHNbMF0ueSgpLCAnLCcsIGVsZW1lbnQucG9pbnRzWzFdLngoKSwgJyAnLCBlbGVtZW50
LnBvaW50c1sxXS55KCksICcsJywgZWxlbWVudC5wb2ludHNbMl0ueCgpLCAnICcsIGVsZW1lbnQu
cG9pbnRzWzJdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFBhdGhFbGVtZW50OjpUeXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJ1onKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHJldmlzaW9u
IDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtOTMsOSArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoYnVpbGRlci5s
ZW5ndGgoKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogCi0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LT54KCkpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIocG9pbnQtPnkoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LT54KCkpLCAnICcsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9pbnQtPnkoKSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSAmJiBidWls
ZGVyW2J1aWxkZXIubGVuZ3RoKCkgLSAxXSAhPSAnKCcpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51
bWJlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obnVtYmVyKSk7CiAgICAgICAgIGFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVycyhidWls
ZGVyLCBudW1iZXJzLi4uKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDExICsxMzksMTEgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZs
b2F0UG9pbnQ+IHsKICAgICB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBGbG9h
dFBvaW50JiB0eXBlKQogICAgIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUueCgpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcih0eXBlLnkoKSk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0eXBlLngoKSksCisgICAgICAgICAgICAnICcsCisgICAgICAgICAg
ICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUueSgpKQorICAgICAgICApOwog
ICAgIH0KIH07CiAKQEAgLTE2NiwxNSArMTY2LDE1IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxGbG9hdFJlY3Q+IHsKICAgICB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBG
bG9hdFJlY3QmIHR5cGUpCiAgICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS54KCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKHR5cGUueSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLndpZHRoKCkpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHR5cGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgICAgIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS54KCkpLAorICAgICAgICAgICAgJyAnLAor
ICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLnkoKSksCisg
ICAgICAgICAgICAnICcsCisgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKHR5cGUud2lkdGgoKSksCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUuaGVpZ2h0KCkpCisgICAgICAgICk7CiAgICAg
fQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjg2LDE1ICsxNjg2LDE3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJu
YWxzOjpkdW1wTWFya2UKICAgICBTdHJpbmdCdWlsZGVyIHJlY3RTdHJpbmc7CiAgICAgcmVjdFN0
cmluZy5hcHBlbmRMaXRlcmFsKCJtYXJrZXIgcmVjdHM6ICIpOwogICAgIGZvciAoY29uc3QgYXV0
byYgcmVjdCA6IHJlY3RzKSB7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kKCcoJyk7Ci0gICAg
ICAgIHJlY3RTdHJpbmcuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocmVjdC54KCkpOwotICAg
ICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJpbmcu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocmVjdC55KCkpOwotICAgICAgICByZWN0U3RyaW5n
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIocmVjdC53aWR0aCgpKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRMaXRl
cmFsKCIsICIpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIikgIik7
CisgICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kKAorICAgICAgICAgICAgJygnLAorICAgICAgICAg
ICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyZWN0LngoKSksCisgICAgICAgICAg
ICAiLCAiLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyZWN0
LnkoKSksCisgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihyZWN0LndpZHRoKCkpLAorICAgICAgICAgICAgIiwgIiwKKyAgICAgICAg
ICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC5oZWlnaHQoKSksCisgICAg
ICAgICAgICAiKSAiCisgICAgICAgICk7CiAgICAgfQogICAgIHJldHVybiByZWN0U3RyaW5nLnRv
U3RyaW5nKCk7CiB9CkBAIC0yMjI4LDkgKzIyMzAsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpwYXJz
ZXJNZXRhRGF0YShKU0M6OkpTCiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzRnVuY3Rpb25FeGVjdXRh
YmxlKCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlY3V0YWJsZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAg
IFN0cmluZyBpbmZlcnJlZE5hbWUgPSBmdW5jRXhlY3V0YWJsZS0+ZWNtYU5hbWUoKS5zdHJpbmco
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIFwiIik7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoaW5mZXJyZWROYW1lKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicp
OworICAgICAgICByZXN1bHQuYXBwZW5kKCJmdW5jdGlvbiBcIiIsIGluZmVycmVkTmFtZSwgJyIn
KTsKICAgICB9IGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImV2YWwiKTsKICAgICBlbHNlIGlmIChleGVjdXRhYmxl
LT5pc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkpCkBAIC0yMjQwLDE1ICsyMjQwLDcgQEAgU3Ry
aW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKUwogICAgIGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7
Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihzdGFydExpbmUpOwotICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHN0YXJ0Q29sdW1uKTsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihlbmRMaW5lKTsK
LSAgICByZXN1bHQuYXBwZW5kKCc6Jyk7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihlbmRDb2x1
bW4pOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgfSIpOworICAgIHJlc3VsdC5hcHBlbmQo
IiB7ICIsIHN0YXJ0TGluZSwgJzonLCBzdGFydENvbHVtbiwgIiAtICIsIGVuZExpbmUsICc6Jywg
ZW5kQ29sdW1uLCAiIH0iKTsKIAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KQEAg
LTM0MzgsMjQgKzM0MzAsMTQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmdldEN1
cnJlbgogICAgIEN1cnNvciBjdXJzb3IgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCkuY3VycmVudE1vdXNlQ3Vyc29yKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidHlwZT0iKTsKLSAgICByZXN1bHQuYXBwZW5kKGN1cnNv
clR5cGVUb1N0cmluZyhjdXJzb3IudHlwZSgpKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiBob3RTcG90PSIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoY3Vyc29yLmhvdFNwb3QoKS54
KCkpOwotICAgIHJlc3VsdC5hcHBlbmQoJywnKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKGN1
cnNvci5ob3RTcG90KCkueSgpKTsKKyAgICByZXN1bHQuYXBwZW5kKCJ0eXBlPSIsIGN1cnNvclR5
cGVUb1N0cmluZyhjdXJzb3IudHlwZSgpKSwgIiBob3RTcG90PSIsIGN1cnNvci5ob3RTcG90KCku
eCgpLCAnLCcsIGN1cnNvci5ob3RTcG90KCkueSgpKTsKICAgICBpZiAoY3Vyc29yLmltYWdlKCkp
IHsKICAgICAgICAgRmxvYXRTaXplIHNpemUgPSBjdXJzb3IuaW1hZ2UoKS0+c2l6ZSgpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGltYWdlPSIpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgneCcpOwotICAgICAgICByZXN1bHQuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoc2l6
ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiBpbWFnZT0iLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHNpemUud2lkdGgoKSksICd4JywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihzaXplLmhlaWdodCgpKSk7CiAgICAgfQogI2lmIEVOQUJMRShNT1VT
RV9DVVJTT1JfU0NBTEUpCi0gICAgaWYgKGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCkgIT0gMSkg
ewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHNjYWxlPSIpOwotICAgICAgICByZXN1
bHQuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoY3Vyc29yLmltYWdlU2NhbGVGYWN0b3IoKSwg
OCk7Ci0gICAgfQorICAgIGlmIChjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpICE9IDEpCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIiBzY2FsZT0iLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCksIDgpKTsKICNlbmRpZgogICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKICNlbHNlCkBAIC00MzUzLDcgKzQzMzUsNyBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGp1c3RTdGFydGluZyA9IGZhbHNlOwogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGNv
b3JkaW5hdGUudG9VbnNpZ25lZCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29vcmRpbmF0
ZS50b1Vuc2lnbmVkKCkpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9Iik7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tQYWdlT3ZlcmxheUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE3ICs4OCw3IEBA
IHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkaWRNb3ZlVG9QYWcKIAogdm9pZCBNb2NrUGFn
ZU92ZXJsYXlDbGllbnQ6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBTdHJpbmdC
dWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJNb2NrUGFnZU92ZXJs
YXlDbGllbnQ6OmRyYXdSZWN0IGRpcnR5UmVjdCAoIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1i
ZXIoZGlydHlSZWN0LngoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
IG1lc3NhZ2UuYXBwZW5kTnVtYmVyKGRpcnR5UmVjdC55KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3Qud2lkdGgo
KSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIG1lc3NhZ2UuYXBwZW5k
TnVtYmVyKGRpcnR5UmVjdC5oZWlnaHQoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIp
Iik7Ci0gICAgb3ZlcmxheS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNz
YWdlLnRvU3RyaW5nKCkpOworICAgIG92ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWFrZVN0cmluZygiTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCBkaXJ0
eVJlY3QgKCIsIGRpcnR5UmVjdC54KCksICIsICIsIGRpcnR5UmVjdC55KCksICIsICIsIGRpcnR5
UmVjdC53aWR0aCgpLCAiLCAiLCBkaXJ0eVJlY3QuaGVpZ2h0KCksICIpIikpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCkBAIC0xMTcsMTQg
KzEwNyw3IEBAIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWcKIAogYm9v
bCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXks
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBt
ZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiTW9ja1BhZ2VPdmVybGF5Q2xpZW50
Ojptb3VzZUV2ZW50IGxvY2F0aW9uICgiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihldmVu
dC5wb3NpdGlvbigpLngoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
IG1lc3NhZ2UuYXBwZW5kTnVtYmVyKGV2ZW50LnBvc2l0aW9uKCkueSgpKTsKLSAgICBtZXNzYWdl
LmFwcGVuZExpdGVyYWwoIikiKTsKLSAgICBvdmVybGF5LnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VM
ZXZlbDo6RGVidWcsIG1lc3NhZ2UudG9TdHJpbmcoKSk7Ci0KKyAgICBvdmVybGF5LnBhZ2UoKS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1vY2tQYWdlT3ZlcmxheUNs
aWVudDo6bW91c2VFdmVudCBsb2NhdGlvbiAoIiwgZXZlbnQucG9zaXRpb24oKS54KCksICIsICIs
IGV2ZW50LnBvc2l0aW9uKCkueSgpLCAiKSIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTMgKzc4LDcg
QEAgdm9pZCBYTUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlwZSB0eQogdm9pZCBYTUxFcnJv
cnM6OmFwcGVuZEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQb3Np
dGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICAvLyA8dHlwZVN0cmlu
Zz4gb24gbGluZSA8bGluZU51bWJlcj4gYXQgY29sdW1uIDxjb2x1bW5OdW1iZXI+OiA8bWVzc2Fn
ZT4KLSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJpbmcpOwotICAgIG1fZXJyb3JN
ZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCIgb24gbGluZSAiKTsKLSAgICBtX2Vycm9yTWVzc2FnZXMu
YXBwZW5kTnVtYmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKTsKLSAgICBtX2Vycm9y
TWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiIGF0IGNvbHVtbiAiKTsKLSAgICBtX2Vycm9yTWVzc2Fn
ZXMuYXBwZW5kTnVtYmVyKHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpOwotICAgIG1f
ZXJyb3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5h
cHBlbmQobWVzc2FnZSk7CisgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZCh0eXBlU3RyaW5nLCAi
IG9uIGxpbmUgIiwgcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksICIgYXQgY29sdW1uICIs
IHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCksICI6ICIsIG1lc3NhZ2UpOwogfQogCiBz
dGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2VzKQpJbmRleDogU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uSG9zdC5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbkhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGxvbmcg
U2Vzc2lvbkhvc3Q6OnNlbmRDb21tYW5kVG9CYWNrZW5kKGMKICAgICBtX2NvbW1hbmRSZXF1ZXN0
cy5hZGQoc2VxdWVuY2VJRCwgV1RGTW92ZShyZXNwb25zZUhhbmRsZXIpKTsKICAgICBTdHJpbmdC
dWlsZGVyIG1lc3NhZ2VCdWlsZGVyOwogICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IntcImlkXCI6Iik7Ci0gICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHNlcXVlbmNlSUQp
OworICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChzZXF1ZW5jZUlEKTsKICAgICBtZXNzYWdlQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIik7CiAgICAgbWVz
c2FnZUJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQpOwogICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgn
IicpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMTItMzEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1lcmljIGFwcGVu
ZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBjYW4gaXMgY2Fw
YWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjp0b1N0cmlu
ZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmFzSlNPTiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERh
dGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpHYW1lcGFkRGF0YTo6bG9nZ2luZ1N0cmluZyBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YnVpbGRIVFRQ
SGVhZGVycyk6CisKIDIwMTktMTItMzEgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgcmVtb3RlIG1lZGlhIHJlc291cmNlIGxvYWRlciBmb3IgdGhlIEdQVSBw
cm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MCwxMCArMjYwLDcgQEAgdm9pZCBBZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyOjp0b1N0cmluZwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJV
bmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6XG4iKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcigrK3VuY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRpb24udG9T
dHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJDb3JlOjpBZENsaWNrQXR0cmli
dXRpb24gIiwgKyt1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyLCAnXG4nLCBhdHRyaWJ1dGlv
bi50b1N0cmluZygpKTsKIH0KIAogICAgIHVuc2lnbmVkIGNvbnZlcnRlZEF0dHJpYnV0aW9uTnVt
YmVyID0gMDsKQEAgLTI3NCwxMCArMjcxLDcgQEAgdm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyOjp0b1N0cmluZwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDb252ZXJ0
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOlxuIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIldl
YkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoKytjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciArIHVuY29udmVydGVkQXR0cmlidXRpb25O
dW1iZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXR0cmlidXRpb24udG9TdHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJX
ZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gIiwgKytjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJl
ciArIHVuY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIsICdcbicsIGF0dHJpYnV0aW9uLnRvU3Ry
aW5nKCkpOwogICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGJ1aWxkZXIudG9TdHJpbmco
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTgsNyArMTE5OCw3IEBAIHN0YXRpYyBTdHJpbmcgYnVp
bGRMaXN0KGNvbnN0IFdURjo6SXRlcmEKICAgICBmb3IgKGF1dG8gZG9tYWluSUQgOiB2YWx1ZXMp
IHsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZG9tYWlu
SUQpOworICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW5JRCk7CiAgICAgfQogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBIYXNoTWFwPHVu
c2lnbmVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzCiAgICAgZm9yIChhdXRvIHZhbHVlIDogcmVz
dWx0cy5rZXlzKCkpIHsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIodmFsdWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7CiAgICAgfQogCiAg
ICAgYXV0byBkb21haW5JRHNPZkludGVyZXN0ID0gYnVpbGRlci50b1N0cmluZygpOwpAQCAtMjUw
NiwxNCArMjUwNiwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlJl
Z2lzdHJhYmxlIGRvbWFpbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZG9tYWluKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9t
YWluOiAiLCBkb21haW4sICdcbicpOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAg
ICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291
cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoSGFkVXNlckludGVyYWN0
aW9uSW5kZXgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIlxuICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAg
IGlmIChoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWVJbmRleCkpKSkKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRo
aW4gMjQgaG91cnMiKTsKICAgICBlbHNlCkBAIC0yNTQ2LDEwICsyNTQzLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRl
ciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJl
c291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpKTsKLSAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXG4gICAgZGF0YVJlY29yZHNSZW1v
dmVkOiAiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5J
bnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpLCAnXG4nKTsKIAogICAgIHJlc2V0U3RhdGVtZW50
KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDE2ICs1NzksMTYgQEAgdm9p
ZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZExpdGVyYWwoInt9XG5dLFxuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFs
KCJcInRvdGFsc1wiOiB7XG4iKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwo
IlwiY2FwYWNpdHlcIjogIik7Ci0gICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmROdW1iZXIoY2Fw
YWNpdHkpOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKGNhcGFjaXR5KTsKICAgICAgICAg
ICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUu
YXBwZW5kTGl0ZXJhbCgiXCJjb3VudFwiOiAiKTsKLSAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZE51bWJlcih0b3RhbHMuY291bnQpOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKHRvdGFs
cy5jb3VudCk7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAg
ICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlwiYm9keVNpemVcIjogIik7Ci0gICAg
ICAgICAgICBlcGlsb2d1ZS5hcHBlbmROdW1iZXIodG90YWxzLmJvZHlTaXplKTsKKyAgICAgICAg
ICAgIGVwaWxvZ3VlLmFwcGVuZCh0b3RhbHMuYm9keVNpemUpOwogICAgICAgICAgICAgZXBpbG9n
dWUuYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRl
cmFsKCJcImF2ZXJhZ2VXb3J0aFwiOiAiKTsKLSAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKHRvdGFscy5jb3VudCA/IHRvdGFscy53b3J0aCAvIHRvdGFscy5j
b3VudCA6IDApOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odG90YWxzLmNvdW50ID8gdG90YWxzLndvcnRoIC8gdG90YWxzLmNvdW50
IDogMCkpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAg
ICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0
byB3cml0ZURhdGEgPSBlcGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDE2ICsy
MTYsMTYgQEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0cmluZ0J1aWxkZXImIGpzb24sIAogICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5oYXNoQXNTdHJpbmcoKSk7CiAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiYm9keVNp
emVcIjogIik7Ci0gICAganNvbi5hcHBlbmROdW1iZXIoaW5mby5ib2R5U2l6ZSk7CisgICAganNv
bi5hcHBlbmQoaW5mby5ib2R5U2l6ZSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsK
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwid29ydGhcIjogIik7Ci0gICAganNvbi5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihpbmZvLndvcnRoKTsKKyAgICBqc29uLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGluZm8ud29ydGgpKTsKICAgICBqc29uLmFwcGVuZExp
dGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJwYXJ0aXRpb25cIjogIik7
CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKG1fa2V5LnBhcnRpdGlvbigpKTsKICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJ0
aW1lc3RhbXBcIjogIik7Ci0gICAganNvbi5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3Rp
bWVTdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKTsKKyAgICBqc29uLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdGltZVN0YW1wLnNlY29uZHNT
aW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixc
biIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJVUkxcIjogIik7CiAgICAganNvbi5hcHBl
bmRRdW90ZWRKU09OU3RyaW5nKG1fcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwpAQCAtMjM0LDcg
KzIzNCw3IEBAIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCAKICAgICBq
c29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoaW5mby5ib2R5SGFzaCk7CiAgICAganNvbi5hcHBl
bmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiYm9keVNoYXJlQ291
bnRcIjogIik7Ci0gICAganNvbi5hcHBlbmROdW1iZXIoaW5mby5ib2R5U2hhcmVDb3VudCk7Cisg
ICAganNvbi5hcHBlbmQoaW5mby5ib2R5U2hhcmVDb3VudCk7CiAgICAganNvbi5hcHBlbmRMaXRl
cmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaGVhZGVyc1wiOiB7XG4iKTsK
ICAgICBib29sIGZpcnN0SGVhZGVyID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDExICsx
NzIsOSBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVuZEN1cnJlbnRNZW1vCiAgICAgaWYg
KCFtZW1vcnlTdGF0cy52YWx1ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHN0YXRTdHJpbmcuYXBw
ZW5kKHNlcGFyYXRvcik7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVtb3J5U3Rh
dHMudmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kKHNlcGFyYXRvcik7Ci0gICAgICAg
ICAgICBzdGF0U3RyaW5nLmFwcGVuZChtZW1vcnlTdGF0cy5rZXlzW2ldKTsKKyAgICAgICAgICAg
IHN0YXRTdHJpbmcuYXBwZW5kKCdcbicsIHNlcGFyYXRvciwgbWVtb3J5U3RhdHMua2V5c1tpXSk7
CiAgICAgICAgICAgICBhcHBlbmRTcGFjZXMoc3RhdFN0cmluZywgMzUgLSBtZW1vcnlTdGF0cy5r
ZXlzW2ldLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kTnVtYmVyKG1l
bW9yeVN0YXRzLnZhbHVlc1tpXSk7CisgICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZChtZW1v
cnlTdGF0cy52YWx1ZXNbaV0pOwogICAgICAgICB9CiAgICAgfQogICAgIHN0YXRTdHJpbmcuYXBw
ZW5kKCdcbicpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFk
RGF0YS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVw
YWQvR2FtZXBhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSwyNSArOTEsMTQgQEAgU3Ry
aW5nIEdhbWVwYWREYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29ucwogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fYXhpc1ZhbHVlcy5zaXpl
KCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGF4ZXMsICIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKG1fYnV0dG9uVmFsdWVzLnNpemUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgYnV0dG9uc1xuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXhp
c1ZhbHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBB
eGlzICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKG1fYXhpc1ZhbHVlc1tpXSk7Ci0gICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKG1f
YXhpc1ZhbHVlcy5zaXplKCksICIgYXhlcywgIiwgbV9idXR0b25WYWx1ZXMuc2l6ZSgpLCAiIGJ1
dHRvbnNcbiIpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F4aXNWYWx1ZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgQXhpcyAiLCBpLCAiOiAiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fYXhpc1ZhbHVlc1tpXSkpOwogCiAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2J1dHRvblZh
bHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBCdXR0
b24gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGkpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIobV9idXR0b25WYWx1ZXNbaV0pOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fYnV0dG9uVmFsdWVzLnNpemUoKTsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiIEJ1dHRvbiAiLCBpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1f
YnV0dG9uVmFsdWVzW2ldKSk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsMTMgKzQ4NSw3IEBAIGNvbnN0IGNo
YXIqIFdlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1MKIAogICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiV2ViQmFja0ZvcndhcmRMaXN0IDB4Iik7CiAgICAgYXBwZW5kVW5zaWduZWRBc0hleChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIGJ1aWxkZXIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyaWVz
LnNpemUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50cmllcywgaGFzIGN1cnJl
bnQgaW5kZXggIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9jdXJyZW50SW5kZXggPyAiWUVTIiA6
ICJOTyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgiKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRleCA6IDApOwotICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIiAtICIsIG1fZW50cmllcy5z
aXplKCksICIgZW50cmllcywgaGFzIGN1cnJlbnQgaW5kZXggIiwgbV9jdXJyZW50SW5kZXggPyAi
WUVTIiA6ICJOTyIsICIgKCIsIG1fY3VycmVudEluZGV4ID8gKm1fY3VycmVudEluZGV4IDogMCwg
JyknKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAJKHJldmlzaW9uIDI1
Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTk2LDE0ICszNTk2LDEwIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2EKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwogICAgICAgICBpZiAoIWV4Y2VwdGlvbkRldGFpbHMuc291cmNlVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZXhjZXB0aW9uRGV0YWlscy5zb3VyY2VVUkwpOwot
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlciA+IDApIHsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlcik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIgPiAwKSB7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlcik7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyID4gMCkK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicsIGV4Y2VwdGlvbkRldGFpbHMubGlu
ZU51bWJlcik7CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIg
PiAwKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgZXhjZXB0aW9uRGV0YWls
cy5jb2x1bW5OdW1iZXIpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIp
OwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGV4Y2VwdGlvbkRldGFpbHMubWVz
c2FnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCShyZXZpc2lv
biAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAp
IHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZXJyb3JNZXNzYWdlOwogICAgICAgICAgICAg
ZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUg
c2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIpOwotICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlLmFwcGVuZE51bWJlcihyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICAgICAg
ICAgIGVycm9yTWVzc2FnZS5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiICgiKTsKICAgICAgICAgICAgIGVy
cm9yTWVzc2FnZS5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7CiAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UuYXBwZW5kKCcpJyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NCwxNyArMTk0LDkgQEAgc3RhdGljIFN0cmluZyBidWlsZEhUVFBIZWFkZXJzKGNv
bnN0IFJlcwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGhl
YWRlcjsKLSAgICBoZWFkZXIuYXBwZW5kTGl0ZXJhbCgiSFRUUCAiKTsKLSAgICBoZWFkZXIuYXBw
ZW5kTnVtYmVyKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwotICAgIGhlYWRlci5hcHBlbmQo
JyAnKTsKLSAgICBoZWFkZXIuYXBwZW5kKHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpOwotICAg
IGhlYWRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgZm9yIChhdXRvJiBmaWVsZCA6IHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZHMoKSkgewotICAgICAgICBoZWFkZXIuYXBwZW5kKGZpZWxkLmtleSk7Ci0g
ICAgICAgIGhlYWRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5k
KGZpZWxkLnZhbHVlKTsKLSAgICAgICAgaGVhZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAg
aGVhZGVyLmFwcGVuZCgiSFRUUCAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAnICcsIHJl
c3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICdcbicpOworICAgIGZvciAoYXV0byYgZmllbGQgOiBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpCisgICAgICAgIGhlYWRlci5hcHBlbmQoZmllbGQu
a2V5LCAiOiAiLCBmaWVsZC52YWx1ZSwgJ1xuJyk7CiAKICAgICAvLyBJZiB0aGUgY29udGVudCBp
cyBlbmNvZGVkIChtb3N0IGxpa2VseSBjb21wcmVzc2VkKSwgdGhlbiBkb24ndCBzZW5kIGl0cyBs
ZW5ndGggdG8gdGhlIHBsdWdpbiwKICAgICAvLyB3aGljaCBpcyBvbmx5IGludGVyZXN0ZWQgaW4g
dGhlIGRlY29kZWQgbGVuZ3RoLCBub3QgeWV0IGtub3duIGF0IHRoZSBtb21lbnQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBIUkVTVUxUIFdlYktpdFN0YXRpc3Rp
Y3M6OmNvbUNsYXNzTmFtZUNvCiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9y
IChhdXRvJiBzbG90IDogZ0NsYXNzTmFtZUNvdW50KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIoc2xvdC52YWx1ZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNsb3QudmFsdWUp
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXHQnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
c2xvdC5rZXkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE5
LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
bnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBl
bmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpy
ZXNwb25kVG9SZXF1ZXN0cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpkdW1wUGF0aCk6Cisg
ICAgICAgIChXVFI6OnJhbmdlVG9TdHIpOgorICAgICAgICAoV1RSOjpzdHlsZURlY1RvU3RyKToK
KyAgICAgICAgKFdUUjo6c2VjdXJpdHlPcmlnaW5Ub1N0cik6CisgICAgICAgIChXVFI6OmZyYW1l
VG9TdHIpOgorICAgICAgICAoV1RSOjpkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBMb2FkRXZlbnQpOgorICAgICAgICAoV1RSOjpk
dW1wUmVxdWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdU
Ujo6ZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAg
ICAoV1RSOjpkdW1wRXJyb3JEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAg
ICAgIChXVFI6OmR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQ2Fj
aGVSZXNwb25zZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmFyVGV4dCk6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2luRWRp
dGluZyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRW5kRWRpdGlu
Zyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0Tm9kZSk6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0VGV4dCk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRGVsZXRlUmFuZ2UpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Up
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEFwcGx5U3R5bGUpOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEJlZ2luRWRpdGluZyk6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRW5kRWRpdGluZyk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9y
UmFuZ2UpOgorICAgICAgICAoV1RSOjpzdHJpbmdBdE9mZnNldCk6CisKIDIwMTktMTItMzEgIENh
cmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV0gT3BlbkpQRUcgbWlzc2luZyBpbiBpbnN0YWxsIGRlcGVuZGVuY2llcyBzY3JpcHQuCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNw
cAkocmV2aXNpb24gMjUzOTY3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMjMgQEAgVEVTVChT
dHJpbmdCdWlsZGVyVGVzdCwgQXBwZW5kKQogICAgIH0KIH0KIAorVEVTVChTdHJpbmdCdWlsZGVy
VGVzdCwgQXBwZW5kTnVtYmVycykKK3sKKyAgICB7CisgICAgICAgIC8vIFRlc3QgVUNoYXIgdnMu
IHVpbnQxNl90CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgCisgICAg
ICAgIFVDaGFyIGNoYXJhY3RlciA9ICdhJzsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYSk7Cisg
ICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJhIiwgYnVpbGRlcik7CisgICAgICAgIAorICAg
ICAgICB1aW50MTZfdCBudW1iZXIgPSAxMDsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtYmVy
KTsKKyAgICAgICAgCisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJhMTAiLCBidWlsZGVy
KTsKKyAgICB9Cit9CisKIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFZhcmlhZGljQXBwZW5kKQog
ewogICAgIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
QXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lvbiAyNTM5
NjcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRp
b25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTQgKzg5LDkgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgc3RhdGljIGxvbmcgc2VxdWVuY2VJRCA9IDA7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIntcImlkXCI6Iik7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZE51bWJlcigr
K3NlcXVlbmNlSUQpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsXCJt
ZXRob2RcIjpcIkF1dG9tYXRpb24uIik7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChj
b21tYW5kKTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCciJyk7CisgICAgICAgIG1l
c3NhZ2VCdWlsZGVyLmFwcGVuZCgie1wiaWRcIjoiLCArK3NlcXVlbmNlSUQsICIsXCJtZXRob2Rc
IjpcIkF1dG9tYXRpb24uIiwgY29tbWFuZCwgJyInKTsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJz
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
XCJwYXJhbXNcIjoiKTsKLSAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChwYXJhbWV0
ZXJzKTsKKyAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgiLFwicGFyYW1zXCI6Iiwg
cGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCd9
Jyk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoIlNlbmRNZXNzYWdlVG9CYWNr
ZW5kIiwgZ192YXJpYW50X25ldygiKHR0cykiLCBtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXQuaWQs
IG1lc3NhZ2VCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjUzOTY3KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
NSwxOCArNzUsMTMgQEAgdm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhud19jbwog
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVxdWVzdFJlc3BvbnNlTWFwLmNvbnRhaW5z
KHBhdGgpLCAiVGhpcyBIVFRQU2VydmVyIGRvZXMgbm90IGtub3cgaG93IHRvIHJlc3BvbmQgdG8g
YSByZXF1ZXN0IGZvciAlcyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIAogICAgICAg
ICBhdXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9uc2VNYXAuZ2V0KHBhdGgpOworICAgIAog
ICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKLSAgICAgICAgcmVzcG9uc2VC
dWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAiKTsKLSAg
ICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5ib2R5Lmxlbmd0aCgp
KTsKLSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwotICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiByZXNwb25zZS5oZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQocGFpci5rZXkpOwotICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZCgiOiAiKTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQocGFpci52
YWx1ZSk7Ci0gICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwotICAgICAgICBy
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHJlc3BvbnNlLmJvZHkpOworICAgICAgICByZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6ICIsIHJlc3Bv
bnNlLmJvZHkubGVuZ3RoKCksICJcclxuIik7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHJl
c3BvbnNlLmhlYWRlckZpZWxkcykKKyAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQo
cGFpci5rZXksICI6ICIsIHBhaXIudmFsdWUsICJcclxuIik7CisgICAgICAgIHJlc3BvbnNlQnVp
bGRlci5hcHBlbmQoIlxyXG4iLCByZXNwb25zZS5ib2R5KTsKKyAgICAKICAgICAgICAgYXV0byBy
ZXNwb25zZUJvZHlBbmRIZWFkZXIgPSByZXNwb25zZUJ1aWxkZXIudG9TdHJpbmcoKS5yZWxlYXNl
SW1wbCgpOwogICAgICAgICBhdXRvIHJlc3BvbnNlRGF0YSA9IGFkb3B0TlMoZGlzcGF0Y2hfZGF0
YV9jcmVhdGUocmVzcG9uc2VCb2R5QW5kSGVhZGVyLT5jaGFyYWN0ZXJzOCgpLCByZXNwb25zZUJv
ZHlBbmRIZWFkZXItPmxlbmd0aCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAg
ICAgICAgICAgKHZvaWQpcmVzcG9uc2VCb2R5QW5kSGVhZGVyOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NiwxMCArOTYsOCBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZHVtcFBhdGgoSlNHbG9iYWxDb250CiAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHRvV1RGU3RyaW5nKG5vZGVOYW1lKSk7CiAKLSAgICBpZiAocGFyZW50Tm9kZSAmJiBKU1ZhbHVl
SXNPYmplY3QoY29udGV4dCwgcGFyZW50Tm9kZSkpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgPiAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZHVtcFBh
dGgoY29udGV4dCwgKEpTT2JqZWN0UmVmKXBhcmVudE5vZGUpKTsKLSAgICB9CisgICAgaWYgKHBh
cmVudE5vZGUgJiYgSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHBhcmVudE5vZGUpKQorICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID4gIiwgZHVtcFBhdGgoY29udGV4dCwgKEpTT2JqZWN0
UmVmKXBhcmVudE5vZGUpKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiB9CkBAIC0xNDIsMTYgKzE0MCw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyByYW5nZVRvU3RyKFdL
QnVuZGxlUGEKICAgICBpbnQgc3RhcnRPZmZzZXQgPSBwcm9wZXJ0eVZhbHVlSW50KGNvbnRleHQs
IHJhbmdlT2JqZWN0LCAic3RhcnRPZmZzZXQiKTsKICAgICBpbnQgZW5kT2Zmc2V0ID0gcHJvcGVy
dHlWYWx1ZUludChjb250ZXh0LCByYW5nZU9iamVjdCwgImVuZE9mZnNldCIpOwogCi0gICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgicmFuZ2UgZnJvbSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihzdGFydE9m
ZnNldCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgb2YgIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoZHVtcFBhdGgoY29udGV4dCwgc3RhcnROb2RlT2JqZWN0KSk7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdG8gIik7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIoZW5kT2Zmc2V0KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBvZiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChkdW1wUGF0aChjb250ZXh0LCBl
bmROb2RlT2JqZWN0KSk7Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygicmFuZ2UgZnJvbSAiLCBzdGFydE9mZnNldCwgIiBvZiAiLCBk
dW1wUGF0aChjb250ZXh0LCBzdGFydE5vZGVPYmplY3QpLCAiIHRvICIsIGVuZE9mZnNldCwgIiBv
ZiAiLCBkdW1wUGF0aChjb250ZXh0LCBlbmROb2RlT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gTmF2aWdhdGlvblR5cGVUb1N0cmluZyhXS0ZyYW1lTmF2aWdh
dGlvblR5cGUgdHlwZSkKQEAgLTE3OCwyMyArMTY3LDEyIEBAIHN0YXRpYyBXVEY6OlN0cmluZyBz
dHlsZURlY1RvU3RyKFdLQnVuZGwKICAgICAvLyBEdW1wUmVuZGVyVHJlZSBjYWxscyAtW0RPTUNT
U1N0eWxlRGVjbGFyYXRpb24gZGVzY3JpcHRpb25dLCB3aGljaCBqdXN0IGR1bXBzIGNsYXNzIG5h
bWUgYW5kIG9iamVjdCBhZGRyZXNzLgogICAgIC8vIE5vIGV4aXN0aW5nIHRlc3RzIGFjdHVhbGx5
IGhpdCB0aGlzIGNvZGUgcGF0aCBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGJlY2F1c2Ug
V2ViQ29yZSBkb2Vzbid0IGNhbGwKICAgICAvLyB0aGUgZWRpdGluZyBjbGllbnQgaWYgdGhlIHN0
eWxpbmcgb3BlcmF0aW9uIHNvdXJjZSBpcyBDb21tYW5kRnJvbURPTSBvciBDb21tYW5kRnJvbURP
TVdpdGhVc2VySW50ZXJmYWNlLgotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjxET01DU1NTdHlsZURlY2xhcmF0aW9uIEFE
RFJFU1M+Iik7Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1
cm4gIjxET01DU1NTdHlsZURlY2xhcmF0aW9uIEFERFJFU1M+Il9zOwogfQogCiBzdGF0aWMgV1RG
OjpTdHJpbmcgc2VjdXJpdHlPcmlnaW5Ub1N0cihXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbikK
IHsKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoJ3snKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhhZG9wdFdL
KFdLU2VjdXJpdHlPcmlnaW5Db3B5UHJvdG9jb2wob3JpZ2luKSkpKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weUhvc3Qob3JpZ2luKSkpKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIoV0tTZWN1cml0eU9yaWdpbkdldFBvcnQob3JpZ2luKSk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJ30nKTsKLQotICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLU2VjdXJp
dHlPcmlnaW5Db3B5UHJvdG9jb2wob3JpZ2luKSkpLCAiLCAiLCB0b1dURlN0cmluZyhhZG9wdFdL
KFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4pKSksICIsICIsIFdLU2VjdXJpdHlPcmln
aW5HZXRQb3J0KG9yaWdpbiksICd9Jyk7CiB9CiAKIHN0YXRpYyBXVEY6OlN0cmluZyBmcmFtZVRv
U3RyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCkBAIC0yMDIsMTggKzE4MCwxMyBAQCBzdGF0aWMg
V1RGOjpTdHJpbmcgZnJhbWVUb1N0cihXS0J1bmRsZUZyCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG5hbWUgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5TmFtZShmcmFtZSkpOwogICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBpZiAoV0tCdW5kbGVGcmFtZUlzTWFp
bkZyYW1lKGZyYW1lKSkgewotICAgICAgICBpZiAoIVdLU3RyaW5nSXNFbXB0eShuYW1lLmdldCgp
KSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtYWluIGZyYW1l
IFwiIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhuYW1l
KSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnIicpOwotICAgICAgICB9IGVs
c2UKKyAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQoKSkpCisgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgibWFpbiBmcmFtZSBcIiIsIHRvV1RGU3RyaW5nKG5hbWUp
LCAnIicpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIm1haW4gZnJhbWUiKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIVdLU3RyaW5n
SXNFbXB0eShuYW1lLmdldCgpKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJmcmFtZSBcIiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9X
VEZTdHJpbmcobmFtZSkpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyInKTsK
LSAgICAgICAgfQorICAgICAgICBpZiAoIVdLU3RyaW5nSXNFbXB0eShuYW1lLmdldCgpKSkKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJmcmFtZSBcIiIsIHRvV1RGU3RyaW5nKG5h
bWUpLCAnIicpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoImZyYW1lIChhbm9ueW1vdXMpIik7CiAgICAgfQpAQCAtNDU0LDkgKzQyNyw3IEBA
IHN0YXRpYyB2b2lkIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGUKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
bWFpbiBmcmFtZSBcIiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
ZyhuYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCciJyk7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJtYWluIGZyYW1lIFwiIiwgdG9XVEZTdHJpbmcobmFtZSksICci
Jyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NSwxOCArNDM2LDE0IEBAIHN0YXRp
YyB2b2lkIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnJhbWUgXCIiKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhuYW1lKSk7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJyInKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZnJhbWUgXCIiLCB0b1dU
RlN0cmluZyhuYW1lKSwgJyInKTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcExvYWRFdmVudChXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCBjaGFyKiBldmVudE5hbWUpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiAtICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGV2ZW50TmFtZSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAtICIsIGV2ZW50TmFtZSwgJ1xuJyk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKIH0KIApAQCAtNDg2LDEx
ICs0NTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHVtcFJlcXVlc3REZXNjcmlwdGlvCiAgICAg
V0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZpcnN0UGFydHkgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENv
cHlGaXJzdFBhcnR5Rm9yQ29va2llcyhyZXF1ZXN0KSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGh0dHBNZXRob2QgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKHJl
cXVlc3QpKTsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPE5TVVJMUmVxdWVz
dCBVUkwgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJl
c3VsdCh1cmwuZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgbWFp
biBkb2N1bWVudCBVUkwgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChmaXJzdFBhcnR5LmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsIGh0dHAgbWV0aG9kICIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI8
TlNVUkxSZXF1ZXN0IFVSTCAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybC5nZXQoKSks
ICIsIG1haW4gZG9jdW1lbnQgVVJMICIsIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoZmlyc3RQ
YXJ0eS5nZXQoKSksICIsIGh0dHAgbWV0aG9kICIpOwogCiAgICAgaWYgKFdLU3RyaW5nSXNFbXB0
eShodHRwTWV0aG9kLmdldCgpKSkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIobm9uZSkiKTsKQEAgLTUwNywxNiArNDcwLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkdW1w
UmVzcG9uc2VEZXNjcmlwdGkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIo
bnVsbCkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIjxOU1VSTFJlc3BvbnNlICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBh
dGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmROdW1iZXIoV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlKSk7Ci0KLSAg
ICBpZiAoc2hvdWxkRHVtcFJlc3BvbnNlSGVhZGVycykgewotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KEluamVjdGVkQnVuZGxlUGFnZTo6cmVzcG9uc2VIZWFkZXJDb3VudChyZXNwb25zZSkpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBoZWFkZXJzIik7Ci0gICAgfQorICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI8TlNVUkxSZXNwb25zZSAiLCBwYXRoU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KHVybC5nZXQoKSksICIsIGh0dHAgc3RhdHVzIGNvZGUgIiwgV0tVUkxSZXNwb25z
ZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlKSk7CisKKyAgICBpZiAoc2hvdWxkRHVtcFJlc3BvbnNl
SGVhZGVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpyZXNwb25zZUhlYWRlckNvdW50KHJlc3BvbnNlKSwgIiBoZWFkZXJzIik7CisKICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnPicpOwogfQogCkBAIC01NDMsMTcgKzUwMSwxMiBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZHVtcEVycm9yRGVzY3JpcHRpb25TCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoZXJyb3JEb21haW4uZ2V0KCksICJXZWJLaXRQb2xpY3lFcnJv
ciIpKQogICAgICAgICBlcnJvckRvbWFpbiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIldlYktpdEVycm9yRG9tYWluIikpOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI8TlNFcnJvciBkb21haW4gIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
dG9XVEZTdHJpbmcoZXJyb3JEb21haW4pKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgY29kZSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihlcnJvckNvZGUp
OworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI8TlNFcnJvciBkb21haW4gIiwgdG9XVEZTdHJp
bmcoZXJyb3JEb21haW4pLCAiLCBjb2RlICIsIGVycm9yQ29kZSk7CiAKICAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3IpKTsK
ICAgICBpZiAodXJsLmdldCgpKSB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1
cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGZhaWxpbmcgVVJMIFwiIik7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHVybFN0cmluZykpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCBmYWlsaW5nIFVSTCBcIiIsIHRvV1RGU3RyaW5nKHVybFN0cmluZyksICciJyk7CiAgICAgfQog
CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJz4nKTsKQEAgLTc3NywxNSArNzMwLDkgQEAgc3Rh
dGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV0tCdQogCiAgICAgaWYgKHNob3VsZElu
Y2x1ZGVGcmFtZU5hbWUpIHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG5hbWUg
PSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5TmFtZShmcmFtZSkpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoImZyYW1lICciKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIicgIik7Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic2Ny
b2xsZWQgdG8gIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoeCk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcih5
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoImZyYW1lICciLCB0b1dURlN0cmluZyhuYW1lKSwgIicgIik7CisgICAgfQorICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzY3JvbGxlZCB0byAiLCB4LCAnLCcsIHksICdcbicpOwog
fQogCiBzdGF0aWMgdm9pZCBkdW1wRGVzY2VuZGFudEZyYW1lU2Nyb2xsUG9zaXRpb25zKFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCkBAIC0xMDUy
LDkgKzk5OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWUKIAog
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBkdW1wRnJhbWVEZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSwgc3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6
ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQo
dXJsKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgXG4iKTsKKyAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAiLCBw
YXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCksICIgXG4iKTsKICAgICBpbmplY3RlZEJ1bmRs
ZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTEwODMsMTQg
KzEwMjgsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9jdW1lCiAgICAg
ICAgIGR1bXBMb2FkRXZlbnQoZnJhbWUsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSIp
OwogCiAgICAgdW5zaWduZWQgcGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzID0gV0tCdW5kbGVGcmFt
ZUdldFBlbmRpbmdVbmxvYWRDb3VudChmcmFtZSk7Ci0gICAgaWYgKHBlbmRpbmdGcmFtZVVubG9h
ZEV2ZW50cykgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZyYW1lVG9TdHIoZnJhbWUpKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSBoYXMgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTnVtYmVyKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9udW5sb2FkIGhhbmRsZXIocylcbiIpOwotICAgICAgICBp
bmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAg
fQorICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpCisgICAgICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQobWFrZVN0cmluZyhmcmFtZVRvU3RyKGZyYW1lKSwgIiAtIGhhcyAiLCBw
ZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMsICIgb251bmxvYWQgaGFuZGxlcihzKVxuIikpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKQEAgLTEyNDAsMTQgKzExNzksMTEgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwbwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtaW1lVHlwZVN0cmluZyA9IGFkb3B0V0soV0tVUkxSZXNwb25zZUNvcHlNSU1FVHlwZShy
ZXNwb25zZSkpOwogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHVybFN0cmluZykpOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIGhhcyBNSU1FIHR5cGUgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQodG9XVEZTdHJpbmcobWltZVR5cGVTdHJpbmcpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpLCAiIGhhcyBNSU1FIHR5cGUgIiwgdG9XVEZTdHJp
bmcobWltZVR5cGVTdHJpbmcpKTsKIAogICAgIFN0cmluZyBwbGF0Zm9ybU1pbWVUeXBlID0gcGxh
dGZvcm1SZXNwb25zZU1pbWVUeXBlKHJlc3BvbnNlKTsKICAgICBpZiAoIXBsYXRmb3JtTWltZVR5
cGUuaXNFbXB0eSgpICYmIHBsYXRmb3JtTWltZVR5cGUgIT0gdG9XVEZTdHJpbmcobWltZVR5cGVT
dHJpbmcpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGJ1dCBwbGF0
Zm9ybSByZXNwb25zZSBoYXMgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBsYXRm
b3JtTWltZVR5cGUpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIGJ1dCBwbGF0Zm9y
bSByZXNwb25zZSBoYXMgIiwgcGxhdGZvcm1NaW1lVHlwZSk7CiAgICAgfQogCiAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJ1xuJyk7CkBAIC0xMzAxLDEwICsxMjM3LDcgQEAgYm9vbCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OnNob3VsZENhY2hlUmVzcAogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUudGVz
dFJ1bm5lcigpLT5zaG91bGREdW1wV2lsbENhY2hlUmVzcG9uc2UoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmROdW1iZXIoaWRlbnRpZmllcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgLSB3aWxsQ2FjaGVSZXNwb25zZTogY2FsbGVkXG4iKTsKLSAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRC
dW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKGlkZW50aWZpZXIsICIgLSB3aWxsQ2FjaGVSZXNw
b25zZTogY2FsbGVkXG4iKSk7CiAKICAgICAvLyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0aGUg
Y2FjaGUgdGhlIHJlc3BvbnNlLgogICAgIHJldHVybiB0cnVlOwpAQCAtMTM0MywxMSArMTI3Niw3
IEBAIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1bmRsZVAKICAgICAgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gXG4iKTsKICAgICAgICAg
ZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LCBzdHJp
bmdCdWlsZGVyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgaXMgbWFp
biBmcmFtZSAtICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChXS0J1bmRsZUZyYW1l
SXNNYWluRnJhbWUoZnJhbWUpID8gInllcyIgOiAibm8iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMobmF2aWdhdGlvbkFjdGlvbikgPyAieWVzIiA6ICJubyIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiBpcyBtYWluIGZyYW1lIC0gIiwgV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1l
KSA/ICJ5ZXMiIDogIm5vIiwgIiBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSAiLCBXS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb25HZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzKG5hdmlnYXRpb25B
Y3Rpb24pID8gInllcyIgOiAibm8iLCAnXG4nKTsKICAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIH0KIApAQCAtMTM2NiwxNCAr
MTI5NSwxMSBAQCBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQCiAgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29w
eVN0cmluZyh1cmwuZ2V0KCkpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcodXJsU3RyaW5nKSk7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHdpdGggbmF2aWdhdGlvbiB0eXBlIFwnIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
dG9XVEZTdHJpbmcoTmF2aWdhdGlvblR5cGVUb1N0cmluZyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b25HZXROYXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uQWN0aW9uKSkpKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIlwnIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiB3aXRo
IG5hdmlnYXRpb24gdHlwZSBcJyIsIHRvV1RGU3RyaW5nKE5hdmlnYXRpb25UeXBlVG9TdHJpbmco
V0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0TmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlv
bikpKSwgIlwnIik7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmPiBo
aXRUZXN0UmVzdWx0UmVmID0gYWRvcHRXSyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0
VGVzdFJlc3VsdChuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgaWYgKGhpdFRlc3RSZXN1bHRSZWYp
IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiBub2RlSGFuZGxl
UmVmID0gYWRvcHRXSyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRsZShoaXRUZXN0
UmVzdWx0UmVmLmdldCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IG9yaWdpbmF0aW5nIGZyb20gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGR1bXBQ
YXRoKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgbm9kZUhhbmRsZVJlZi5nZXQoKSkpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIG9yaWdpbmF0aW5nIGZyb20gIiwgZHVtcFBhdGgobV9w
YWdlLCBtX3dvcmxkLmdldCgpLCBub2RlSGFuZGxlUmVmLmdldCgpKSk7CiAgICAgfQogCiAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CkBAIC0xMzkzLDEyICsxMzE5LDggQEAgV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUAogewogICAgIGF1dG8mIGluamVjdGVk
QnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwogICAgIGlmIChpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCkgJiYgaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1BvbGlj
eURlbGVnYXRlRW5hYmxlZCgpICYmIFdLVVJMUmVzcG9uc2VJc0F0dGFjaG1lbnQocmVzcG9uc2Up
KSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGZpbGVuYW1lID0gYWRvcHRXSyhXS1VSTFJlc3BvbnNlQ29weVN1
Z2dlc3RlZEZpbGVuYW1lKHJlc3BvbnNlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiUG9saWN5IGRlbGVnYXRlOiByZXNvdXJjZSBpcyBhbiBhdHRhY2htZW50LCBzdWdn
ZXN0ZWQgZmlsZSBuYW1lIFwnIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RG
U3RyaW5nKGZpbGVuYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XCdcbiIpOwotICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0VGV4dChz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJQb2xpY3kgZGVsZWdhdGU6IHJlc291cmNlIGlz
IGFuIGF0dGFjaG1lbnQsIHN1Z2dlc3RlZCBmaWxlIG5hbWUgXCciLCB0b1dURlN0cmluZyhmaWxl
bmFtZSksICJcJ1xuIikpOwogICAgIH0KIAogICAgIHJldHVybiBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb25QYXNzVGhyb3VnaDsKQEAgLTE0ODMsMTMgKzE0MDUsOSBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUCiAKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDT05TT0xFIE1FU1NBR0U6ICIp
OwotICAgIGlmIChsaW5lTnVtYmVyKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgibGluZSAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobGluZU51
bWJlcik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICB9
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2FnZVN0cmluZyk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJ1xuJyk7CisgICAgaWYgKGxpbmVOdW1iZXIpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJsaW5lICIsIGxpbmVOdW1iZXIsICI6ICIpOworICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcsICdcbicpOwogCiAgICAgaWYgKGluamVjdGVkQnVuZGxl
LmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpKQogICAgICAgICBpbmplY3RlZEJ1bmRsZS5kdW1w
VG9TdGRFcnIoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKQEAgLTE1MDYsMTEgKzE0MjQsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNldFN0YXR1c2JhCiAgICAgaWYgKCFpbmpl
Y3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBTdGF0dXNDYWxsYmFja3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBz
ZXRTdGF0dXNUZXh0OiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHN0
YXR1c2JhclRleHQpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmpl
Y3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5q
ZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FM
TEJBQ0s6IHNldFN0YXR1c1RleHQ6IiwgdG9XVEZTdHJpbmcoc3RhdHVzYmFyVGV4dCksICdcbicp
KTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0QWxlcnQo
V0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZikKQEAgLTE1MTksMTEgKzE0MzMs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpCiAgICAgaWYgKCFp
bmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkFMRVJUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNz
YWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5k
bGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQUxFUlQ6ICIsIHRvV1RGU3RyaW5nKG1lc3NhZ2Up
LCAnXG4nKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlw
dENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZikKQEAgLTE1MzIs
MjIgKzE0NDIsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaQog
ICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJDT05GSVJNOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dU
RlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
aW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAg
IGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQ09ORklSTTogIiwgdG9XVEZT
dHJpbmcobWVzc2FnZSksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6Ondp
bGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRl
ZmF1bHRWYWx1ZSwgV0tCdW5kbGVGcmFtZVJlZikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJQUk9NUFQ6ICIpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1lc3NhZ2UpKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZGVmYXVsdCB0ZXh0OiAiKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUpKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0
VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlBST01QVDogIiwgdG9XVEZTdHJpbmcobWVz
c2FnZSksICIsIGRlZmF1bHQgdGV4dDogIiwgdG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSwgJ1xu
JykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxC
eXRlc05lZWRlZCkKQEAgLTE1NjAsMTMgKzE0NjAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkUmVhY2hBcHBsaWNhCiAgICAgICAgIC8vIGFib3ZlIG9yIGJlbG93IGEgdGhyZXNob2xk
LgogICAgICAgICBpbnQ2NF90IHRydW5jYXRlZFNwYWNlTmVlZGVkID0gKHRvdGFsQnl0ZXNOZWVk
ZWQgLyAxMDAwMCkgKiAxMDAwMDsKIAotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUgQVBQ
TElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNl
Y3VyaXR5T3JpZ2luVG9TdHIob3JpZ2luKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIHRvdGFsU3BhY2VOZWVkZWQ6fiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZE51bWJlcih0cnVuY2F0ZWRTcGFjZU5lZWRlZCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFr
ZVN0cmluZygiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Iiwgc2VjdXJpdHlP
cmlnaW5Ub1N0cihvcmlnaW4pLCAiIHRvdGFsU3BhY2VOZWVkZWQ6fiIsIHRydW5jYXRlZFNwYWNl
TmVlZGVkLCAnXG4nKSk7CiAgICAgfQogCiAgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5u
ZXIoKS0+c2hvdWxkRGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpKQpA
QCAtMTU3OSwxNSArMTQ3Myw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWFjaEFw
cGxpY2EKIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90
YShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tTdHJpbmdSZWYgZGF0YWJhc2VOYW1lLCBX
S1N0cmluZ1JlZiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRl
cywgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRh
YmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2VCeXRlcykKIHsKICAgICBhdXRv
JiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKLSAgICBpZiAo
aW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRGF0YWJhc2VDYWxsYmFja3Mo
KSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4
Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChzZWN1cml0eU9yaWdpblRvU3RyKG9yaWdpbikpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBkYXRhYmFzZToiKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZGF0YWJhc2VOYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50
ZXN0UnVubmVyKCktPnNob3VsZER1bXBEYXRhYmFzZUNhbGxiYWNrcygpKQorICAgICAgICBpbmpl
Y3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlVJIERFTEVHQVRFIERBVEFCQVNFIENB
TExCQUNLOiBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjoiLCBzZWN1cml0
eU9yaWdpblRvU3RyKG9yaWdpbiksICIgZGF0YWJhc2U6IiwgdG9XVEZTdHJpbmcoZGF0YWJhc2VO
YW1lKSwgJ1xuJykpOwogCiAgICAgdWludDY0X3QgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAx
MDI0OwogICAgIGRvdWJsZSB0ZXN0RGVmYXVsdFF1b3RhID0gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5kYXRhYmFzZURlZmF1bHRRdW90YSgpOwpAQCAtMTYwMSwxMSArMTQ4OCw3IEBAIHVp
bnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGEKICAgICAgICAgaWYgKGRlZmF1
bHRRdW90YSA8IGV4cGVjdGVkVXNhZ2VCeXRlcyAmJiBleHBlY3RlZFVzYWdlQnl0ZXMgPD0gbWF4
UXVvdGEpIHsKICAgICAgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRVc2FnZUJ5dGVzOwogCi0g
ICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBp
bmNyZWFzZWQgcXVvdGEgdG8gIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihuZXdRdW90YSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsK
LSAgICAgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0
cmluZygpKTsKKyAgICAgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmlu
ZygiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAiLCBu
ZXdRdW90YSwgJ1xuJykpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBuZXdRdW90YTsK
QEAgLTE2NzQsMTMgKzE1NTcsOSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQmVn
aW5FZGl0CiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hv
dWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBE
RUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlm
IChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElO
RyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZToiLCByYW5nZVRvU3RyKG1f
cGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpLCAnXG4nKSk7CisKICAgICByZXR1cm4gaW5qZWN0
ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApAQCAtMTY5
MCwxMyArMTU2OSw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRFbmRFZGl0aW4K
ICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1w
RWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRw
dXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmplY3Rl
ZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAg
ICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FU
RTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29y
bGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRl
c3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE3MTIsMTcgKzE1ODcs
OSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0Tm9kCiAgICAgICAgICJX
ZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZCIsCiAgICAgfTsKIAotICAgIGlmIChpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6Iik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGR1bXBQYXRoKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwg
bm9kZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiByZXBsYWNpbmdE
T01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3Bh
Z2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBsYWNlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIGdpdmVuQWN0aW9uOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0
UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVk
QnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxkSW5z
ZXJ0Tm9kZToiLCBkdW1wUGF0aChtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIG5vZGUpLCAiIHJlcGxh
Y2luZ0RPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZVRv
UmVwbGFjZSksICIgZ2l2ZW5BY3Rpb246IiwgaW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0sICdc
bicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFs
bG93RWRpdGluZygpOwogfQogCkBAIC0xNzM4LDE3ICsxNjA1LDkgQEAgYm9vbCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OnNob3VsZEluc2VydFRleAogICAgICAgICAiV2ViVmlld0luc2VydEFjdGlvbkRy
b3BwZWQiLAogICAgIH07CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0b1dURlN0cmluZyh0ZXh0KSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHJlcGxhY2luZ0RPTVJhbmdlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2VUb1JlcGxhY2UpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ2l2ZW5BY3Rpb246Iik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGlu
amVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkK
KyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiIsIHRvV1RGU3RyaW5nKHRleHQpLCAiIHJlcGxhY2lu
Z0RPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZVRvUmVw
bGFjZSksICIgZ2l2ZW5BY3Rpb246IiwgaW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0sICdcbicp
KTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFsbG93
RWRpdGluZygpOwogfQogCkBAIC0xNzU4LDEzICsxNjE3LDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OnNob3VsZERlbGV0ZVJhbgogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVu
bmluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50
ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwg
cmFuZ2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGlu
amVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9
CisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdD
YWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5n
KCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZToiLCByYW5nZVRvU3RyKG1f
cGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpLCAnXG4nKSk7CisKICAgICByZXR1cm4gaW5qZWN0
ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApAQCAtMTc4
MywxOSArMTYzOCw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRDaGFuZ2VTZWwK
ICAgICAgICAgIlRSVUUiCiAgICAgfTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6Iik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgp
LCBmcm9tUmFuZ2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdG9E
T01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3Bh
Z2UsIG1fd29ybGQuZ2V0KCksIHRvUmFuZ2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgYWZmaW5pdHk6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFm
ZmluaXR5c3RyaW5nW2FmZmluaXR5XSk7IAotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBzdGlsbFNlbGVjdGluZzoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ym9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10pOyAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIo
KS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCBmcm9tUmFu
Z2UpLCAiIHRvRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHRv
UmFuZ2UpLCAiIGFmZmluaXR5OiIsIGFmZmluaXR5c3RyaW5nW2FmZmluaXR5XSwgIiBzdGlsbFNl
bGVjdGluZzoiLCBib29sc3RyaW5nW3N0aWxsU2VsZWN0aW5nXSwgJ1xuJykpOworCiAgICAgcmV0
dXJuIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9
CiAKQEAgLTE4MDUsMTUgKzE2NTAsOSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxk
QXBwbHlTdHlsCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0
cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElO
RyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoc3R5bGVEZWNUb1N0cihzdHlsZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB0b0VsZW1lbnRzSW5ET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmpl
Y3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisg
ICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxF
R0FURTogc2hvdWxkQXBwbHlTdHlsZToiLCBzdHlsZURlY1RvU3RyKHN0eWxlKSwgIiB0b0VsZW1l
bnRzSW5ET01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2Up
LCAnXG4nKSk7CisKICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91
bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApAQCAtMTgyNSwxMSArMTY2NCw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRCZWdpbkVkaXRpbmcKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLnRl
c3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzoi
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1l
KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2lu
RWRpdGluZzoiLCB0b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1lKSwgJ1xuJykpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRW5kRWRpdGluZyhXS1N0cmluZ1JlZiBub3RpZmlj
YXRpb25OYW1lKQpAQCAtMTg0MCwxMSArMTY3NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRFbmRFZGl0aW5nKFcKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6Iik7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSkpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1h
a2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOiIsIHRvV1RG
U3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpLCAnXG4nKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRDaGFuZ2UoV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSkKQEAgLTE4NTUs
MTEgKzE2ODYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlKFdLU3RyCiAg
ICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJp
bmcobm90aWZpY2F0aW9uTmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsK
KyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6IiwgdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSksICdc
bicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbihX
S1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQpAQCAtMTg3MCwxMSArMTY5Nyw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3QKICAgICBpZiAoIWluamVjdGVkQnVu
ZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjoiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhub3RpZmlj
YXRpb25OYW1lKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVj
dGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjoiLCB0b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1lKSwgJ1xu
JykpOwogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOSArMjIzLDcgQEAgU3RyaW5nIGF0
dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJpYnV0ZQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsg
YXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRr
QXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1
dGVzLT5kYXRhKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlLT5uYW1lKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmli
dXRlLT52YWx1ZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZS0+bmFtZSwgJzon
LCBhdHRyaWJ1dGUtPnZhbHVlKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5leHQpCiAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOwogICAgIH0KQEAgLTU2MCw4ICs1NTgs
NyBAQCBTdHJpbmcgYXR0cmlidXRlc09mRWxlbWVudChBY2Nlc3NpYmlsaXR5CiB7CiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogCi0gICAgYnVpbGRlci5hcHBlbmQoZWxlbWVudC0+cm9sZSgp
LT5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBl
bmQoZWxlbWVudC0+cm9sZSgpLT5zdHJpbmcoKSwgJ1xuJyk7CiAKICAgICAvLyBGb3IgdGhlIHBh
cmVudCB3ZSBwcmludCBpdHMgcm9sZSBhbmQgaXRzIG5hbWUsIGlmIGF2YWlsYWJsZS4KICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYUGFyZW50OiAiKTsKQEAgLTU3MCw5MyArNTY3LDQ1IEBA
IFN0cmluZyBhdHRyaWJ1dGVzT2ZFbGVtZW50KEFjY2Vzc2liaWxpdHkKICAgICBpZiAoYXRrUGFy
ZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJvbGVUb1N0cmluZyhhdGtQYXJlbnQpKTsK
ICAgICAgICAgY29uc3QgY2hhciogcGFyZW50TmFtZSA9IGF0a19vYmplY3RfZ2V0X25hbWUoYXRr
UGFyZW50KTsKLSAgICAgICAgaWYgKHBhcmVudE5hbWUgJiYgcGFyZW50TmFtZVswXSkgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQocGFyZW50TmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHBhcmVudE5hbWUg
JiYgcGFyZW50TmFtZVswXSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIsIHBhcmVu
dE5hbWUpOwogICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihudWxs
KSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJBWENoaWxkcmVuOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5j
aGlsZHJlbkNvdW50KCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJBWFBvc2l0aW9uOiAgeyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKGVsZW1lbnQtPngoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKGVsZW1lbnQtPnkoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIH1cbiIpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJBWFNpemU6IHsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihlbGVtZW50LT53aWR0aCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyk7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIoZWxlbWVudC0+aGVpZ2h0KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiB9XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhDaGlsZHJlbjog
IiwgZWxlbWVudC0+Y2hpbGRyZW5Db3VudCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
QVhQb3NpdGlvbjogIHsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50
LT54KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSwgIiwgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihlbGVtZW50LT55KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSwgIiB9XG4iKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiQVhTaXplOiB7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24oZWxlbWVudC0+d2lkdGgoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpLCAiLCAiLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVsZW1lbnQtPmhlaWdodCgpLCA2LCBLZWVw
VHJhaWxpbmdaZXJvcyksICIgfVxuIik7CiAKICAgICBTdHJpbmcgdGl0bGUgPSBlbGVtZW50LT50
aXRsZSgpLT5zdHJpbmcoKTsKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICBi
dWlsZGVyLmFwcGVuZCh0aXRsZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCh0aXRsZSwgJ1xuJyk7CiAgICAgfQogCiAgICAgU3RyaW5nIGRl
c2NyaXB0aW9uID0gZWxlbWVudC0+ZGVzY3JpcHRpb24oKS0+c3RyaW5nKCk7Ci0gICAgaWYgKCFk
ZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZGVzY3JpcHRp
b24udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIH0K
KyAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
ZGVzY3JpcHRpb24udXRmOCgpLmRhdGEoKSwgJ1xuJyk7CiAKICAgICBTdHJpbmcgdmFsdWUgPSBl
bGVtZW50LT5zdHJpbmdWYWx1ZSgpLT5zdHJpbmcoKTsKLSAgICBpZiAoIXZhbHVlLmlzRW1wdHko
KSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwotICAgIH0KLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhGb2N1c2Fi
bGU6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzRm9jdXNhYmxlKCkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQor
ICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSwgJ1xuJyk7CiAKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkFYRm9jdXNlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC0+aXNGb2N1c2VkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJBWFNlbGVjdGFibGU6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQtPmlzU2VsZWN0YWJsZSgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
LQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhTZWxlY3RlZDogIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNTZWxlY3RlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhNdWx0aVNlbGVjdGFibGU6
ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzTXVsdGlTZWxlY3RhYmxl
KCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJBWEVuYWJsZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlz
RW5hYmxlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiQVhFeHBhbmRlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxl
bWVudC0+aXNFeHBhbmRlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhSZXF1aXJlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIoZWxlbWVudC0+aXNSZXF1aXJlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
LQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhDaGVja2VkOiAiKTsKLSAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0NoZWNrZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRm9jdXNhYmxlOiAiLCBlbGVtZW50LT5pc0Zv
Y3VzYWJsZSgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhGb2N1c2VkOiAiLCBlbGVt
ZW50LT5pc0ZvY3VzZWQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYU2VsZWN0YWJs
ZTogIiwgZWxlbWVudC0+aXNTZWxlY3RhYmxlKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCJBWFNlbGVjdGVkOiAiLCBlbGVtZW50LT5pc1NlbGVjdGVkKCksICdcbicpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCJBWE11bHRpU2VsZWN0YWJsZTogIiwgZWxlbWVudC0+aXNNdWx0aVNlbGVjdGFi
bGUoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRW5hYmxlZDogIiwgZWxlbWVudC0+
aXNFbmFibGVkKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEV4cGFuZGVkOiAiLCBl
bGVtZW50LT5pc0V4cGFuZGVkKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFJlcXVp
cmVkOiAiLCBlbGVtZW50LT5pc1JlcXVpcmVkKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCJBWENoZWNrZWQ6ICIsIGVsZW1lbnQtPmlzQ2hlY2tlZCgpLCAnXG4nKTsKIAogICAgIFN0cmlu
ZyB1cmwgPSBlbGVtZW50LT51cmwoKS0+c3RyaW5nKCk7Ci0gICAgaWYgKCF1cmwuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVybCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIH0KKyAgICBpZiAoIXVybC5pc0VtcHR5KCkpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHVybCwgJ1xuJyk7CiAKICAgICAvLyBXZSBhcHBlbmQgdGhlIEFUSyBzcGVjaWZpYyBh
dHRyaWJ1dGVzIGFzIGEgc2luZ2xlIGxpbmUgYXQgdGhlIGVuZC4KLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkFYUGxhdGZvcm1BdHRyaWJ1dGVzOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChn
ZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyhlbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpLmdl
dCgpLCBPYmplY3RBdHRyaWJ1dGVUeXBlKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYUGxhdGZv
cm1BdHRyaWJ1dGVzOiAiLCBnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyhlbGVtZW50LT5wbGF0
Zm9ybVVJRWxlbWVudCgpLmdldCgpLCBPYmplY3RBdHRyaWJ1dGVUeXBlKSk7CiAKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtNjY1LDEwICs2MTQsOCBAQCBzdGF0aWMgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNyZWF0ZVN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogCi0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWxlbWVudHMuYmVnaW4oKTsgaXQgIT0gZWxlbWVudHMuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlc09mRWxlbWVudChj
b25zdF9jYXN0PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPihpdC0+Z2V0KCkpKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG4tLS0tLS0tLS0tLS1cbiIpOwotICAgIH0KKyAgICBm
b3IgKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBlbGVtZW50cy5iZWdpbigpOyBpdCAhPSBlbGVtZW50cy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlc09mRWxlbWVudChjb25zdF9jYXN0PEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqPihpdC0+Z2V0KCkpKSwgIlxuLS0tLS0tLS0tLS0tXG4iKTsKIAog
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiB9CkBAIC0xNzIyLDggKzE2NjksNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
CiAgICAgLy8gVGhlIGRlZmF1bHQgdGV4dCBhdHRyaWJ1dGVzIGFwcGx5IHRvIHRoZSBlbnRpcmUg
ZWxlbWVudC4KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuXHREZWZhdWx0IHRleHQgYXR0
cmlidXRlczpcblx0XHQiKTsKLSAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGVTZXRUb1N0cmlu
ZyhnZXRBdHRyaWJ1dGVTZXQobV9lbGVtZW50LmdldCgpLCBUZXh0QXR0cmlidXRlVHlwZSksICJc
blx0XHQiKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxuXHREZWZhdWx0IHRleHQgYXR0cmlidXRl
czpcblx0XHQiLCBhdHRyaWJ1dGVTZXRUb1N0cmluZyhnZXRBdHRyaWJ1dGVTZXQobV9lbGVtZW50
LmdldCgpLCBUZXh0QXR0cmlidXRlVHlwZSksICJcblx0XHQiKSk7CiAKICAgICAvLyBUaGUgYXR0
cmlidXRlIHJ1biBwcm92aWRlcyBhdHRyaWJ1dGVzIHNwZWNpZmljIHRvIHRoZSByYW5nZSBvZiB0
ZXh0IGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgogICAgIEF0a1RleHQqIHRleHQgPSBBVEtfVEVY
VChtX2VsZW1lbnQuZ2V0KCkpOwpAQCAtMTczMSwxMCArMTY3Nyw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsb2NhdGlv
bjsgaSA8IGxvY2F0aW9uICsgbGVuZ3RoOyBpID0gZW5kKSB7CiAgICAgICAgIEF0a0F0dHJpYnV0
ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX3RleHRfZ2V0X3J1bl9hdHRyaWJ1dGVzKHRleHQsIGks
ICZzdGFydCwgJmVuZCk7CiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN1YnN0cmluZyhyZXBs
YWNlQ2hhcmFjdGVyc0ZvclJlc3VsdHMoYXRrX3RleHRfZ2V0X3RleHQodGV4dCwgc3RhcnQsIGVu
ZCkpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcblx0UmFuZ2UgYXR0cmlidXRl
cyBmb3IgJyIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChzdWJzdHJpbmcuZ2V0KCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIic6XG5cdFx0Iik7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGF0dHJpYnV0ZVNldFRvU3RyaW5nKGF0dHJpYnV0ZVNldCwgIlxuXHRcdCIpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIlxuXHRSYW5nZSBhdHRyaWJ1dGVzIGZvciAnIiwgc3Vic3Ry
aW5nLmdldCgpLCAiJzpcblx0XHQiLCBhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdHRyaWJ1dGVTZXQs
ICJcblx0XHQiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTIyNzgsNyArMjIy
MSw2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdBdE9mZnNldCgKICAgICAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKICAgICBnaW50IHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAg
QXRrVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5OwogICAgIHN3aXRjaCAoYm91bmRhcnkpIHsK
QEAgLTIyOTgsMTMgKzIyNDAsOCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXRP
ZmZzZXQoCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OwogICAgIH0KIAotICAgIGJ1aWxkZXIuYXBwZW5kKGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zm
c2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGdyYW51bGFyaXR5LCAmc3RhcnRP
ZmZzZXQsICZlbmRPZmZzZXQpKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
LSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGFydE9mZnNldCk7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVuZE9mZnNldCk7Ci0g
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIHN0cmluZyA9IG1ha2VTdHJpbmcoYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQoQVRLX1RFWFQoZWxlbWVudC5nZXQoKSksIG9mZnNldCwgZ3Jh
bnVsYXJpdHksICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCksICIsICIsIHN0YXJ0T2Zmc2V0LCAi
LCAiLCBlbmRPZmZzZXQpOworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhzdHJpbmcudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQgb2Zmc2V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386583</attachid>
            <date>2020-01-01 11:43:36 -0800</date>
            <delta_ts>2020-01-01 11:44:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205671-20200101114335.patch</filename>
            <type>text/plain</type>
            <size>161181</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE5LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhh
dCBhcHBlbmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoK
KyAgICAgICAgKEJhY2t0cmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAq
IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVj
dXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZs
b3dUZXN0LmNwcDoKKyAgICAgICAgKFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0
YW5jZSk6CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcGVuZFVSTEFuZFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNs
aWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcgY29u
c3QpOgorCiAyMDE5LTEyLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaWR5IGEgYml0IG9mIFN0cmluZ0J1aWxkZXIgdXNhZ2UKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDE4ICsyOTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IG1fYnVpbGRlcjsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnIycpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmlzaXRv
ci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQodmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcj
JywgdmlzaXRvci0+aW5kZXgoKSwgJyAnLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSwgIigpIGF0
ICIsIHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5oYXNM
aW5lQW5kQ29sdW1uSW5mbygpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzon
KTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHVudXNlZENvbHVtbjsKICAgICAgICAgICAgICAgICB2aXNpdG9yLT5jb21wdXRl
TGluZUFuZENvbHVtbihsaW5lTnVtYmVyLCB1bnVzZWRDb2x1bW4pOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6JywgbGluZU51bWJlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghdmlzaXRvci0+Y2FsbGVlKCkucmF3UHRyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMiArMTk4
LDEzIEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRp
ZXJBZGp1c3RtZW50OwogCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygp
IHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIp
OworICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGls
ZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BV
VGltZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMo
KSksCisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICAp
OwogCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gQ1BVVGltZTo6Zm9yQ3VycmVudFRocmVhZCgp
OwpAQCAtMjM1LDE5ICsyMzYsMTkgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIHJlY3Vyc2UoaSkgeyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ3VzZSBzdHJpY3QnOyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaWYgKGkgJSAxMDAwID09PSAwKSB7IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGlt
ZSA+Iik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICApIHsgcmV0dXJuOyB9Iik7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICB9Iik7Ci0gICAg
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICByZXR1cm4gcmVjdXJzZShp
ICsgMSk7IH0iKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicmVj
dXJzZSgwKTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgorICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiByZWN1cnNlKGkpIHsiCisgICAgICAgICAgICAgICAgIiAgICAndXNl
IHN0cmljdCc7IgorICAgICAgICAgICAgICAgICIgICAgaWYgKGkgJSAxMDAwID09PSAwKSB7Igor
ICAgICAgICAgICAgICAgICIgICAgICAgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAgICAiICAgICAgICkgeyByZXR1
cm47IH0iCisgICAgICAgICAgICAgICAgIiAgICB9IgorICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHJlY3Vyc2UoaSArIDEpOyB9IgorICAgICAgICAgICAgICAgICJyZWN1cnNlKDApOyIKKyAg
ICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBDUFVUaW1lOjpmb3JDdXJy
ZW50VGhyZWFkKCk7CkBAIC0yNzksMTIgKzI4MCwxMyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUg
PSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVB
ZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0gfSBmb28o
KTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsg
dHJ5IHsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAo
Y3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIsCisgICAgICAgICAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJl
ZC5zZWNvbmRzKCkpLAorICAgICAgICAgICAgICAgICIpIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9
IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2Ny
aXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CiAKQEAgLTMxOCwxMiArMzIwLDEzIEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAgICAgU2Vjb25kcyB0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRpZXJBZGp1c3RtZW50Owog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOwor
ICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJm
dW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAo
dHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGlt
ZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSks
CisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICApOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKIApAQCAtMzU3LDEyICszNjAsMTMgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGlt
aXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hv
dWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0g
Y3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAgICAgICAg
ICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRj
aGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAgICAgICAgICBhdXRv
IHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAg
ICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVm
IHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBjYW5j
ZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwogCkBAIC0zOTYsMTIgKzQwMCwx
MyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICBTZWNvbmRzIHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUgPSA2MDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAg
ICAgICAgIFNlY29uZHMgbWF4QnVzeUxvb3BUaW1lID0gNzUwX21zICsgdGllckFkanVzdG1lbnQ7
CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAg
ICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtYXhCdXN5
TG9vcFRpbWUuc2Vjb25kcygpKTsgLy8gaW4gc2Vjb25kcy4KLSAgICAgICAgICAgIHNjcmlwdEJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb28o
KSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRU
aW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KG1heEJ1c3lMb29wVGltZS5zZWNvbmRzKCkpLCAvLyBpbiBzZWNvbmRzLgorICAgICAgICAgICAg
ICAgICIpIGJyZWFrOyB9IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdS
ZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIGV4
dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gMDsKIApAQCAtNDM5LDEyICs0NDQsMTMgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNv
bmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVz
dG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIg
c3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIp
OwotICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0
aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAg
c2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAg
ICAgICAgICBhdXRvIHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAg
ICAgICAgICAgICAgICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJj
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDggQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFja092
ZXJmbG93T2JqZWN0XwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkdW1teS52YWx1ZU9mKFswXSIpOwot
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDM1MDAwOyBpKyspIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXSIpOwotICAgICAg
ICB9CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsIFsiLCBpLCAnXScpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIik7Iik7CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTggKzQ1Miw5IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDxub2RlSWQ+LCA8c2l6ZUluQnl0ZXM+LCA8bm9kZUNsYXNzTmFtZUluZGV4Piwg
PGZsYWdzPiwgWzxsYWJlbEluZGV4PiwgPGNlbGxFZGRyZXNzPiwgPHdyYXBwZWRBZGRyZXNzPl0K
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIobm9k
ZS5pZGVudGlmaWVyKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIobm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihjbGFzc05hbWVJ
bmRleCk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTnVt
YmVyKGZsYWdzKTsKKyAgICAgICAganNvbi5hcHBlbmQoJywnLCBub2RlLmlkZW50aWZpZXIsICcs
Jywgbm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSksICcsJywgY2xhc3NOYW1lSW5k
ZXgsICcsJywgZmxhZ3MpOwogICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIobGFiZWxJbmRleCk7Ci0gICAgICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcIjB4Iik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcsIGxhYmVsSW5kZXgsICIsXCIweCIpOwogICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNl
KTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIweCIpOwogICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBl
ZEFkZHJlc3MpLCBqc29uLCBMb3dlcmNhc2UpOwpAQCAtNDc4LDEyICs0NjksNyBAQCBTdHJpbmcg
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgIGZpcnN0RWRnZSA9IGZh
bHNlOwogCiAgICAgICAgIC8vIDxmcm9tTm9kZUlkPiwgPHRvTm9kZUlkPiwgPGVkZ2VUeXBlSW5k
ZXg+LCA8ZWRnZUV4dHJhRGF0YT4KLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIoZWRnZS5mcm9t
LmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlLnRvLmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlVHlwZVRvTnVtYmVyKGVkZ2UudHlwZSkp
OwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOworICAgICAgICBqc29uLmFwcGVuZChlZGdlLmZy
b20uaWRlbnRpZmllciwgJywnLCBlZGdlLnRvLmlkZW50aWZpZXIsICcsJywgZWRnZVR5cGVUb051
bWJlcihlZGdlLnR5cGUpLCAnLCcpOwogICAgICAgICBzd2l0Y2ggKGVkZ2UudHlwZSkgewogICAg
ICAgICBjYXNlIEVkZ2VUeXBlOjpQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFZGdlVHlwZTo6VmFy
aWFibGU6IHsKQEAgLTQ5MSwxMSArNDc3LDExIEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVy
Ojpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICBuZXh0RWRnZU5hbWVJbmRleCsrOwogICAgICAgICAgICAgdW5zaWduZWQgZWRn
ZU5hbWVJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlTmFtZUluZGV4KTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKGVkZ2VO
YW1lSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
ZGdlVHlwZTo6SW5kZXg6Ci0gICAgICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlLnUuaW5k
ZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoZWRnZS51LmluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3IgdGhp
cyBlZGdlIHR5cGUuCkBAIC02NDYsNyArNjMyLDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6Ompzb24oRnVuY3RpbwogICAgICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKICAg
ICAgICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1i
ZXIoc25hcHNob3ROb2RlLnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgICAgICBqc29uLmFw
cGVuZChzbmFwc2hvdE5vZGUudmFsdWUoKS5pZGVudGlmaWVyKTsKIAogICAgICAgICAgICAgLy8g
TWF5YmUgd2Ugc2hvdWxkIGp1c3QgYWx3YXlzIGVuY29kZSB0aGUgcm9vdCBuYW1lcy4KICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJvb3ROYW1lID0gcm9vdFR5cGVUb1N0cmluZyhpdC52YWx1ZS5t
YXJrUmVhc29uKTsKQEAgLTY1NCw4ICs2NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRl
cjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgIHVuc2lnbmVkIGxhYmVs
SW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAganNvbi5hcHBlbmQo
JywnKTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5kZXgpOworICAgICAg
ICAgICAganNvbi5hcHBlbmQoJywnLCBsYWJlbEluZGV4KTsKIAogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVhY2hhYmlsaXR5UmVhc29uSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGl0LnZhbHVl
LnJlYWNoYWJpbGl0eUZyb21PcGFxdWVSb290UmVhc29ucykgewpAQCAtNjY0LDggKzY0OSw3IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgICAg
ICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgICAgICByZWFjaGFiaWxpdHlSZWFz
b25JbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIocmVh
Y2hhYmlsaXR5UmVhc29uSW5kZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnLCByZWFj
aGFiaWxpdHlSZWFzb25JbmRleCk7CiAgICAgICAgIH0KIAogICAgICAgICBqc29uLmFwcGVuZCgn
XScpOwpAQCAtNjczLDkgKzY1Nyw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW8KIAogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVi
dWdnaW5nU25hcHNob3QpIHsKICAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBkZXNjcmlwdGlvbnMK
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImxhYmVsc1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBqc29uLmFw
cGVuZCgiLCdcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmRlcmVk
TGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bGFiZWxJbmRleGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTIsMTAgKzM1Miw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjp0b1N0cmluZygp
IGMKICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQg
Y29sdW1uID0gMDsKICAgICAgICAgICAgIGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJh
Y2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIoY29sdW1uKTsKKyAg
ICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5j
cHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTAgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kVVJMQW5kUG9zaXRpb24oU3RyaW5nQgogCiAgICAgYnVpbGRlci5hcHBlbmQo
dXJsKTsKIAotICAgIGlmIChsaW5lTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKLSAgICB9
Ci0KLSAgICBpZiAoY29sdW1uTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
OicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjb2x1bW5OdW1iZXIpOwotICAgIH0K
KyAgICBpZiAobGluZU51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgbGlu
ZU51bWJlcik7CisgICAgaWYgKGNvbHVtbk51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6JywgY29sdW1uTnVtYmVyKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVBy
ZWZpeChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsKQpAQCAtMTgwLDEwICsxNzUsNyBAQCB2b2lk
IENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXCiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBj
YWxsRnJhbWVCdWlsZGVyOwotICAgICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmROdW1i
ZXIoaSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7
Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgICAgIGNhbGxG
cmFtZUJ1aWxkZXIuYXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKICAgICAgICAg
ICAgIGFwcGVuZFVSTEFuZFBvc2l0aW9uKGNhbGxGcmFtZUJ1aWxkZXIsIGNhbGxGcmFtZS5zb3Vy
Y2VVUkwoKSwgY2FsbEZyYW1lLmxpbmVOdW1iZXIoKSwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcigp
KTsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAy
NTM5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDEzICszNzgsMTMgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcgogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5hc0lu
dDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1
ZS5hc051bWJlcigpOwogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpCiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChudW1iZXIpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAx
LDE2ICsxMDAxLDE2IEBAIHZvaWQgT3B0aW9uUmVhZGVyOjpPcHRpb246OmR1bXAoU3RyaW5nQnUK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdW5zaWduZWQpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X3Vuc2lnbmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXpl
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3NpemUpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3NpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2Rv
dWJsZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obV9kb3VibGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9pbnQzMik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1faW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6Ok9wdGlvblJhbmdlOgogICAgICAgICBidWlsZGVyLmFwcGVuZChtX29wdGlvblJh
bmdlLnJhbmdlU3RyaW5nKCkpOwpAQCAtMTAxOSw5ICsxMDE5LDcgQEAgdm9pZCBPcHRpb25SZWFk
ZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdQogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBt
X29wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24g
PSAiIjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQob3B0aW9uKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInLCBvcHRpb24sICciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDEwICsxMzMsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoVk0mIHZtKSBj
b25zCiAgICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW47CiAgICAgICAgICAgICBjb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogCi0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKTsKKyAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jywg
bGluZSwgJzonLCBjb2x1bW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1
aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTIt
MzEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1l
cmljIGFwcGVuZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBj
YW4gaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9KU09OVmFsdWVzLmNwcDoKKyAgICAgICAgKFdU
Rjo6SlNPTkltcGw6OlZhbHVlOjp3cml0ZUpTT04gY29uc3QpOgorICAgICAgICAqIHd0Zi9NZWRp
YVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVp
bGRlcjo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg6CisgICAgICAgIChXVEY6OkZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24pOgorICAgICAgICAoV1RGOjpGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgp
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVGlkeSBhIGJpdCBvZiBTdHJpbmdCdWlsZGVyIHVzYWdlCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93
dGYvSlNPTlZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lk
IFZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0CiAgICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZShtX3ZhbHVlLm51bWJlcikpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJh
bCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTnVtYmVy
KG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1i
ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL01lZGlhVGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWVkaWFU
aW1lLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDEzICs1ODgsOSBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0
b1N0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRl
ci5hcHBlbmQoJ3snKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV90aW1lVmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3RpbWVTY2FsZSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiID0gIik7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIodG9Eb3VibGUoKSk7CisgICAgaWYgKCFoYXNEb3VibGVWYWx1
ZSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2Fs
ZSwgIiA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odG9Eb3VibGUoKSkpOwogICAgIGlmIChpc0ludmFsaWQoKSkKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGludmFsaWQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnfScpOwpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTM5Njcp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNzIgKzM5Miw2IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKENGU3RyaW5n
UmVmIHMKIAogI2VuZGlmCiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKGludCBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVy
PihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihs
b25nIGxvbmcgbnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxk
ZXI+KG51bWJlciwgdGhpcyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVy
KHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25l
ZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgcHJlY2lz
aW9uLCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSBwb2xpY3kpCi17Ci0gICAgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb0ZpeGVkUHJlY2lzaW9u
U3RyaW5nKG51bWJlciwgcHJlY2lzaW9uLCBidWZmZXIsIHBvbGljeSA9PSBUcnVuY2F0ZVRyYWls
aW5nWmVyb3MpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24sIFRyYWlsaW5nWmVyb3NU
cnVuY2F0aW5nUG9saWN5IHBvbGljeSkKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZm
ZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVj
aXNpb24sIGJ1ZmZlciwgcG9saWN5ID09IFRydW5jYXRlVHJhaWxpbmdaZXJvcykpOwotfQotCi12
b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihmbG9hdCBudW1iZXIpCi17Ci0gICAgTnVt
YmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb1N0cmluZyhudW1i
ZXIsIGJ1ZmZlcikpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3Vi
bGUgbnVtYmVyKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICBhcHBl
bmQobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5k
KG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikp
OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91Ymxl
IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIs
IGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikpOwotfQotCiBib29sIFN0cmluZ0J1aWxkZXI6OmNhblNo
cmluaygpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJmbG93ZWQoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDIwICsyMTksNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNv
dW50IC0gMSk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihp
bnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIobG9uZyBsb25nKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwotCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZmxvYXQsIHVuc2lnbmVk
IHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVU
cmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVy
b3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBk
ZWNpbWFsUGxhY2VzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNiArODMsMjkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKKy8q
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlPgorc3RydWN0IEZvcmNlTnVtYmVyIHsKKyAg
ICBOdW1iZXIgbnVtYmVyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRm9yY2VOdW1iZXJUeXBl
PgorY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8Rm9yY2VOdW1iZXI8Rm9yY2VOdW1iZXJUeXBlPiwg
dm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyKEZvcmNlTnVtYmVyIG51bWJl
cikKKyAgICAgICAgOiBtX3VuZGVybHlpbmdBZGFwdGVyKG51bWJlci5udW1iZXIpCisgICAgewor
ICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWlu
Z0FkYXB0ZXIubGVuZ3RoKCk7IH0KKyAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5kZXJseWluZ0FkYXB0ZXIuaXM4Qml0KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0
IHsgbV91bmRlcmx5aW5nQWRhcHRlci53cml0ZVRvKGRlc3RpbmF0aW9uKTsgfQorCitwcml2YXRl
OgorICAgIFN0cmluZ1R5cGVBZGFwdGVyPEZvcmNlTnVtYmVyVHlwZT4gbV91bmRlcmx5aW5nQWRh
cHRlcjsKK307CisqLworCiBjbGFzcyBGb3JtYXR0ZWROdW1iZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNiArMTE3LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG51bWJlckZvcm1hdHRlcjsKICAgICB9CiAKKyAgICBzdGF0aWMgRm9ybWF0dGVk
TnVtYmVyIGZpeGVkUHJlY2lzaW9uKGZsb2F0IG51bWJlciwgdW5zaWduZWQgc2lnbmlmaWNhbnRG
aWd1cmVzID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgdHJhaWxpbmdaZXJvc1Ry
dW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpCisgICAgeworICAgICAgICBG
b3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOworICAgICAgICBudW1iZXJUb0ZpeGVkUHJl
Y2lzaW9uU3RyaW5nKG51bWJlciwgc2lnbmlmaWNhbnRGaWd1cmVzLCBudW1iZXJGb3JtYXR0ZXIu
bV9idWZmZXIsIHRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID09IFRydW5jYXRlVHJhaWxp
bmdaZXJvcyk7CisgICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVu
KCZudW1iZXJGb3JtYXR0ZXIubV9idWZmZXJbMF0pOworICAgICAgICByZXR1cm4gbnVtYmVyRm9y
bWF0dGVyOworICAgIH0KKwogICAgIHN0YXRpYyBGb3JtYXR0ZWROdW1iZXIgZml4ZWRXaWR0aChk
b3VibGUgbnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQogICAgIHsKICAgICAgICAgRm9y
bWF0dGVkTnVtYmVyIG51bWJlckZvcm1hdHRlcjsKQEAgLTEwMiw2ICsxMzMsMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwogICAgIH0KIAorICAgIHN0YXRpYyBG
b3JtYXR0ZWROdW1iZXIgZml4ZWRXaWR0aChmbG9hdCBudW1iZXIsIHVuc2lnbmVkIGRlY2ltYWxQ
bGFjZXMpCisgICAgeworICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOwor
ICAgICAgICBudW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmcobnVtYmVyLCBkZWNpbWFsUGxhY2VzLCBu
dW1iZXJGb3JtYXR0ZXIubV9idWZmZXIpOworICAgICAgICBudW1iZXJGb3JtYXR0ZXIubV9sZW5n
dGggPSBzdGQ6OnN0cmxlbigmbnVtYmVyRm9ybWF0dGVyLm1fYnVmZmVyWzBdKTsKKyAgICAgICAg
cmV0dXJuIG51bWJlckZvcm1hdHRlcjsKKyAgICB9CisKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIGNvbnN0IExDaGFyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fYnVmZmVyWzBdKTsg
fQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5jcHAJKHJldmlzaW9uIDI1Mzk2NykK
KysrIFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDM3ICs1NCwzNyBAQCBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNoYXIg
CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoaW50IGkpCiB7Ci0gICAgbV90
ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBp
KQogewotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9y
PDwobG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFw
cGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06
Om9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIo
aSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRT
dHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwobG9uZyBsb25nIGkpCiB7Ci0gICAgbV90ZXh0
LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhp
czsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBsb25n
IGxvbmcgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1fdGV4dC5hcHBl
bmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC05Myw3ICs5Myw3IEBAIFRleHRTdHJl
YW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoZmxvYXQKICAgICBpZiAobV9mb3JtYXR0aW5nRmxh
Z3MgJiBGb3JtYXR0aW5nOjpOdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMpCiAgICAgICAgIHJldHVy
biAqdGhpcyA8PCBGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMoZik7CiAKLSAgICBtX3Rl
eHQuYXBwZW5kRml4ZWRXaWR0aE51bWJlcihmLCAyKTsKKyAgICBtX3RleHQuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRXaWR0aChmLCAyKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBA
IC0xMDIsNyArMTAyLDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChkb3Vi
bAogICAgIGlmIChtX2Zvcm1hdHRpbmdGbGFncyAmIEZvcm1hdHRpbmc6Ok51bWJlclJlc3BlY3Rp
bmdJbnRlZ2VycykKICAgICAgICAgcmV0dXJuICp0aGlzIDw8IEZvcm1hdE51bWJlclJlc3BlY3Rp
bmdJbnRlZ2VycyhkKTsKIAotICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGQsIDIp
OworICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGQsIDIpKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEyOCwxMSArMTI4LDExIEBAIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9w
ZXJhdG9yPDwoY29uc3QgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzJiBudW1iZXJUb0Zv
cm1hdCkKIHsKICAgICBpZiAoaGFzRnJhY3Rpb25zKG51bWJlclRvRm9ybWF0LnZhbHVlKSkgewot
ICAgICAgICBtX3RleHQuYXBwZW5kRml4ZWRXaWR0aE51bWJlcihudW1iZXJUb0Zvcm1hdC52YWx1
ZSwgMik7CisgICAgICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KG51bWJlclRvRm9ybWF0LnZhbHVlLCAyKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKHN0YXRpY19jYXN0PGludD4obnVtYmVyVG9Gb3Jt
YXQudmFsdWUpKTsKKyAgICBtX3RleHQuYXBwZW5kKHN0YXRpY19jYXN0PGludD4obnVtYmVyVG9G
b3JtYXQudmFsdWUpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDExNSBAQAorMjAxOS0xMi0zMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG51bWVyaWMgYXBwZW5kIGZ1bmN0aW9ucyBmcm9tIFN0
cmluZ0J1aWxkZXIgbm93IHRoYXQgYXBwZW5kIGNhbiBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIHRo
ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTY3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpob3N0TmFtZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29t
YmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L1Rlcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjp0b1N0
cmluZyBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250VmFyaWF0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAg
ICAqIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxl
S2V5ZnJhbWU6OmtleVRleHQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvd25ncmFkZVJlZmVycmVy
VG9SZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpmb3JtYXRGb3JEZWJ1Z2dlciBjb25zdCk6CisgICAgICAg
ICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpmb3JtYXRGb3JEZWJ1
Z2dlciBjb25zdCk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dDo6Zm9ybWF0Rm9yRGVidWdnZXIgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6Omdl
bmVyYXRlVW5pcXVlUHJlZml4KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW06CisgICAgICAgIChXZWJDb3JlOjpkYXRhRGV0ZWN0b3JTdHJpbmdGb3JQYXRoKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNv
bnRleHQyZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0
ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
b250IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAg
ICAgICAqIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWRDbGlja0F0dHJpYnV0aW9uOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRDbGlj
a0F0dHJpYnV0aW9uOjpyZWZlcnJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNr
QXR0cmlidXRpb246OnVybEZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWRD
bGlja0F0dHJpYnV0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUlu
dGVncml0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlZ3JpdHlNaXNtYXRjaERlc2NyaXB0
aW9uKToKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpyb290TWFyZ2luIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Zm9ybWF0Qnl0ZU51bWJlcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNu
YXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBPZmZzZXRzVG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6c25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBQb3J0T3JBcmVhVG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0RlY2lt
YWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dG9TdHJpbmcgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRl
ZENvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNzc1RleHQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkVmFyaWF0aW9uU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZFByb3h5U2VydmVyU3RyaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlUG9zaXRpb24pOgorICAg
ICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE51bWJlcik6CisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRQb2ludCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tUGF0aCk6CisgICAgICAgICogc3Zn
L1NWR1BvaW50TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVycyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UG9pbnQ+Ojp0b1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxGbG9hdFJlY3Q+Ojp0b1N0cmlu
Zyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpkdW1wTWFya2VyUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpwYXJzZXJNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEN1cnJl
bnRDdXJzb3JJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE9mZnNldHMpOgorICAgICAg
ICAqIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1BhZ2VPdmVybGF5Q2xpZW50Ojptb3VzZUV2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKToK
KwogMjAyMC0wMS0wMSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2VydmljZVdvcmtlckpvYkRhdGEgc2hvdWxkIGhhdmUgYSBtb3ZlIGNvbnN0cnVjdG9yCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwMiwxMyArNDAyLDggQEAgY29uc3QgSURCS2V5RGF0YSYgSW5kZXhWYWx1
ZVN0b3JlOjpJdGVyYQogU3RyaW5nIEluZGV4VmFsdWVTdG9yZTo6bG9nZ2luZ1N0cmluZygpIGNv
bnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byYga2V5IDog
bV9vcmRlcmVkS2V5cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIktleTogIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGtleS5sb2dnaW5nU3RyaW5nKCkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgRW50cnkgaGFzICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX3JlY29yZHMuZ2V0KGtleSktPmdldENvdW50KCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBlbnRyaWVzIik7Ci0gICAgfQorICAgIGZvciAoYXV0byYga2V5
IDogbV9vcmRlcmVkS2V5cykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIktleTogIiwga2V5Lmxv
Z2dpbmdTdHJpbmcoKSwgIiAgRW50cnkgaGFzICIsIG1fcmVjb3Jkcy5nZXQoa2V5KS0+Z2V0Q291
bnQoKSwgIiBlbnRyaWVzIik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MywxMCArODMsOCBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVS
TCYgdXJsLCBiCiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzKCJ3c3MiKSA9PSBzZWN1cmUpOwog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwotICAgIGlmICh1cmwucG9ydCgpICYmICgoIXNl
Y3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0gODApIHx8IChzZWN1cmUgJiYgdXJsLnBvcnQo
KS52YWx1ZSgpICE9IDQ0MykpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHVybC5wb3J0KCkudmFsdWUoKSk7Ci0gICAgfQorICAg
IGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0gODAp
IHx8IChzZWN1cmUgJiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9IDQ0MykpKQorICAgICAgICBidWls
ZGVyLmFwcGVuZCgnOicsIHVybC5wb3J0KCkudmFsdWUoKSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29tYmluZWRVUkxGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMyw4IEBAIHN0YXRpYyBTdHJpbmcgcHJlZml4
VHJlZVZlcnRleFRvU3RyaW5nKGMKIAogICAgIGF1dG8gYWN0aW9uc1Nsb3QgPSBhY3Rpb25zLmZp
bmQoJnZlcnRleCk7CiAgICAgaWYgKGFjdGlvbnNTbG90ICE9IGFjdGlvbnMuZW5kKCkpIHsKLSAg
ICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBhY3Rpb25zU2xvdC0+dmFsdWUpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFjdGlvbik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnLCcpOwotICAgICAgICB9CisgICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDog
YWN0aW9uc1Nsb3QtPnZhbHVlKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWN0aW9uLCAn
LCcpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVy
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0u
aAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
VGVybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsOSArMjM4LDcgQEAgaW5saW5lIFN0cmluZyBU
ZXJtOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlQcmludGFi
bGUoYykgJiYgIWlzQVNDSUlTcGFjZShjKSkKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoYyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdcXCcpOwotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
dScpOwotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xcJywgJ3UnLCBjKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
MTAgKzQ2LDggQEAgU3RyaW5nIENTU0ZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNTU1RleAogICAg
ICAgICBidWlsZGVyLmFwcGVuZChjKTsKICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgIC8v
IE9taXQgdGhlIHZhbHVlIGlmIGl0J3MgMSBhcyAxIGlzIGltcGxpZWQgYnkgZGVmYXVsdC4KLSAg
ICBpZiAobV92YWx1ZSAhPSAxKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsdWUpOwotICAgIH0KKyAgICBpZiAobV92YWx1
ZSAhPSAxKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIG1fdmFsdWUpOwogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250VmFyaWF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250VmFyaWF0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
OCArNDYsNyBAQCBTdHJpbmcgQ1NTRm9udFZhcmlhdGlvblZhbHVlOjpjdXN0b21DU1NUCiAgICAg
YnVpbGRlci5hcHBlbmQoJyInKTsKICAgICBmb3IgKGNoYXIgYyA6IG1fdGFnKQogICAgICAgICBi
dWlsZGVyLmFwcGVuZChjKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV92YWx1ZSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoIlwiICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV92YWx1ZSkp
OwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMs
NyBAQCBTdHJpbmcgU3R5bGVSdWxlS2V5ZnJhbWU6OmtleVRleHQoKSBjb25zCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2tleXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAg
ICAgICAgICAgICBrZXlUZXh0LmFwcGVuZCgnLCcpOwotICAgICAgICBrZXlUZXh0LmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKG1fa2V5cy5hdChpKSAqIDEwMCk7Ci0gICAgICAgIGtleVRleHQu
YXBwZW5kKCclJyk7CisgICAgICAgIGtleVRleHQuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24obV9rZXlzLmF0KGkpICogMTAwKSwgJyUnKTsKICAgICB9CiAKICAgICByZXR1
cm4ga2V5VGV4dC50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
aW1pbmdGdW5jdGlvblZhbHVlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwx
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImN1YmljLWJlemllcigi
KTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1feDEpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKG1feTEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1feDIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KG1feTIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7ICAgIAotICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImN1YmljLWJlemllcigiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1feDEpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKG1feTEpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKG1feDIpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1feTIpLCAn
KScpOwogfQogCiBib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxz
KGNvbnN0IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CkBA
IC01MiwxNCArNDIsNyBAQCBib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6
CiAKIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBj
b25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoInN0ZXBzKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fc3RlcHMpOwotICAg
IGlmIChtX3N0ZXBBdFN0YXJ0KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgc3Rh
cnQpIik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZW5kKSIp
OwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
InN0ZXBzKCIsIG1fc3RlcHMsIChtX3N0ZXBBdFN0YXJ0ID8gIiwgc3RhcnQpIiA6ICIsIGVuZCki
KSk7CiB9CiAKIGJvb2wgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTY5LDE3ICs1Miw3
IEBAIGJvb2wgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMKIAogU3RyaW5nIENT
U1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInNwcmlu
ZygiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fbWFzcyk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKG1fc3RpZmZuZXNzKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9kYW1waW5nKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9pbml0
aWFsVmVsb2NpdHkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygic3ByaW5nKCIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9tYXNzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKG1fc3RpZmZuZXNzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKG1fZGFtcGluZyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbiht
X2luaXRpYWxWZWxvY2l0eSksICcpJyk7CiB9CiAKIGJvb2wgQ1NTU3ByaW5nVGltaW5nRnVuY3Rp
b25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVy
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTUgKzQyMSwxNCBAQCB2b2lk
IENTU1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpCiAgICAgICAgIC8vIFRoZXNlIHdv
bid0IHByb3Blcmx5IHByZXNlcnZlIHRoZSBOdW1lcmljVmFsdWVUeXBlIGZsYWcKICAgICAgICAg
aWYgKG1fbnVtZXJpY1NpZ24gPT0gUGx1c1NpZ24pCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWVy
aWNWYWx1ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihudW1lcmljVmFsdWUoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBl
cmNlbnRhZ2VUb2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihudW1lcmljVmFsdWUoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtZXJpY1Zh
bHVlKCkpLCAnJScpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpbWVuc2lvblRva2VuOgog
ICAgICAgICAvLyBUaGlzIHdpbGwgaW5jb3JyZWN0bHkgc2VyaWFsaXplIGUuZy4gNGUzZTIgYXMg
NDAwMGUyCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobnVtZXJp
Y1ZhbHVlKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKG51bWVyaWNWYWx1ZSgpKSk7CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIo
dmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBV
bmljb2RlUmFuZ2VUb2tlbjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzk3OSwxMyArNzk3OSw5IEBAIHZvaWQgRG9jdW1lbnQ6OmRvd25ncmFkZVJlZmVycmVy
VG9SZWdpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKHJlZmVycmVyVVJMLnByb3RvY29sKCkpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVmZXJyZXJSZWdpc3Ry
YWJsZURvbWFpblN0cik7Ci0gICAgaWYgKHJlZmVycmVyUG9ydCkgewotICAgICAgICBidWlsZGVy
LmFwcGVuZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigqcmVmZXJyZXJQb3J0
KTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQocmVmZXJyZXJVUkwucHJvdG9jb2woKSwgIjov
LyIsIHJlZmVycmVyUmVnaXN0cmFibGVEb21haW5TdHIpOworICAgIGlmIChyZWZlcnJlclBvcnQp
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgKnJlZmVycmVyUG9ydCk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJy8nKTsKIAogICAgIG1fcmVmZXJyZXJPdmVycmlkZSA9IGJ1aWxkZXIudG9TdHJp
bmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4Miwx
MCArMTM4Miw4IEBAIHZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGIKICAg
ICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI8bnVsbD4iKTsK
ICAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgib2Zmc2V0ICIsIG1fb2Zmc2V0LCAi
IG9mICIpOwogICAgICAgICBjaGFyIHNbMTAyNF07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJvZmZzZXQgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9vZmZzZXQpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwogICAgICAgICBkZXByZWNhdGVk
Tm9kZSgpLT5mb3JtYXRGb3JEZWJ1Z2dlcihzLCBzaXplb2YocykpOwogICAgICAgICByZXN1bHQu
YXBwZW5kKHMpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkocmV2aXNpb24gMjUzOTY3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUx
OCwxNCArMTUxOCwxMCBAQCB2b2lkIFJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZm
CiAKICAgICBjb25zdCBpbnQgRm9ybWF0QnVmZmVyU2l6ZSA9IDEwMjQ7CiAgICAgY2hhciBzW0Zv
cm1hdEJ1ZmZlclNpemVdOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tIG9mZnNldCAi
KTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fc3RhcnQub2Zmc2V0KCkpOwotICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CisgICAgcmVzdWx0LmFwcGVuZCgiZnJvbSBvZmZzZXQg
IiwgbV9zdGFydC5vZmZzZXQoKSwgIiBvZiAiKTsKICAgICBzdGFydENvbnRhaW5lcigpLmZvcm1h
dEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1ZmZlclNpemUpOwogICAgIHJlc3VsdC5hcHBlbmQocyk7
Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB0byBvZmZzZXQgIik7Ci0gICAgcmVzdWx0LmFw
cGVuZE51bWJlcihtX2VuZC5vZmZzZXQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBv
ZiAiKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgdG8gb2Zmc2V0ICIsIG1fZW5kLm9mZnNldCgpLCAi
IG9mICIpOwogICAgIGVuZENvbnRhaW5lcigpLmZvcm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1
ZmZlclNpemUpOwogICAgIHJlc3VsdC5hcHBlbmQocyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMzLDExICsyMzMsNyBAQCB2b2lkIFRleHQ6OmZvcm1hdEZvckRlYnVnZ2Vy
KGNoYXIqIGJ1ZmZlCiAgICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIGlmIChyZXN1
bHQubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiOyAiKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImxlbmd0aD0iKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZE51bWJlcihzLmxlbmd0aCgpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIjsg
dmFsdWU9XCIiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgnIicpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJsZW5ndGg9Iiwgcy5sZW5ndGgoKSwg
IjsgdmFsdWU9XCIiLCBzLCAnIicpOwogICAgIH0KIAogICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1
bHQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsZW5ndGggLSAxKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShyZXZpc2lvbiAyNTM5Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTE2LDggKzUxNiw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmdlbmVy
YXRlVW5pcXVlUHIKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZG8gewogICAgICAg
ICBidWlsZGVyLmNsZWFyKCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTlMiKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoKyttX3ByZWZpeExldmVsKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoIk5TIiwgKyttX3ByZWZpeExldmVsKTsKICAgICAgICAgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSA9IGJ1aWxkZXIudG9BdG9tU3RyaW5nKCk7CiAgICAgICAgIGlmICghbmFt
ZXNwYWNlcy5nZXQobmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBwcmVmaXhlZE5hbWUuc2V0
UHJlZml4KG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0
YURldGVjdGlvbi5tbQkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsMTkgKzMyNCwx
MyBAQCBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoW3Bh
dGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihb
cGF0aCBpbmRleEF0UG9zaXRpb246MF0pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9z
aXRpb246MV0pOwotICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAg
IH0KKyAgICBjYXNlIDI6CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKFtwYXRoIGluZGV4QXRQ
b3NpdGlvbjowXSwgJy8nLCBbcGF0aCBpbmRleEF0UG9zaXRpb246MV0pOwogICAgIGRlZmF1bHQ6
IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246MF0pOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChbcGF0aCBpbmRleEF0UG9zaXRpb246MF0pOwogICAgICAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDEgOyBpIDwgbGVuZ3RoIDsgaSsrKSB7Ci0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnLycpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIoW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcvJywgW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKTsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCwxMCArMTcwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2VydmVyTWFwTW91c2VQb3Np
dGlvbgogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHBhc3MgVXNlVHJhbnNm
b3JtcyBpbiB0aGUgTWFwQ29vcmRpbmF0ZXNGbGFncy4KICAgICBhdXRvIGFic29sdXRlUG9zaXRp
b24gPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5hYnNvbHV0ZVRvTG9jYWwoRmxv
YXRQb2ludChtb3VzZUV2ZW50LnBhZ2VYKCksIG1vdXNlRXZlbnQucGFnZVkoKSkpOwotICAgIHVy
bC5hcHBlbmQoJz8nKTsKLSAgICB1cmwuYXBwZW5kTnVtYmVyKHN0ZDo6bHJvdW5kKGFic29sdXRl
UG9zaXRpb24ueCgpKSk7Ci0gICAgdXJsLmFwcGVuZCgnLCcpOwotICAgIHVybC5hcHBlbmROdW1i
ZXIoc3RkOjpscm91bmQoYWJzb2x1dGVQb3NpdGlvbi55KCkpKTsKKyAgICB1cmwuYXBwZW5kKCc/
Jywgc3RkOjpscm91bmQoYWJzb2x1dGVQb3NpdGlvbi54KCkpLCAnLCcsIHN0ZDo6bHJvdW5kKGFi
c29sdXRlUG9zaXRpb24ueSgpKSk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsMTEgKzMz
NSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogSFRNTENhbnZhc0VsZW0KICAgICAvLyBN
YWtlIHN1cmUgd2UgZG9uJ3QgdXNlIG1vcmUgcGl4ZWwgbWVtb3J5IHRoYW4gdGhlIHN5c3RlbSBj
YW4gc3VwcG9ydC4KICAgICBzaXplX3QgcmVxdWVzdGVkUGl4ZWxNZW1vcnkgPSA0ICogd2lkdGgo
KSAqIGhlaWdodCgpOwogICAgIGlmIChhY3RpdmVQaXhlbE1lbW9yeSgpICsgcmVxdWVzdGVkUGl4
ZWxNZW1vcnkgPiBtYXhBY3RpdmVQaXhlbE1lbW9yeSgpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxk
ZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJU
b3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgiKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAv
IDEwMjQgLyAxMDI0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgTUIp
LiIpOwotICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Cisg
ICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiVG90YWwgY2FudmFzIG1lbW9yeSB1c2Ug
ZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoIiwgbWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEw
MjQgLyAxMDI0LCAiIE1CKS4iKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtODYzLDIyICs4NTksMTQgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VC
dWZmZQogCiAgICAgLy8gUGVyZm9ybSBtdWx0aXBsaWNhdGlvbiBhcyBmbG9hdGluZyBwb2ludCB0
byBhdm9pZCBvdmVyZmxvdwogICAgIGlmIChmbG9hdCh3aWR0aCgpKSAqIGhlaWdodCgpID4gbWF4
Q2FudmFzQXJlYSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUg
bWF4aW11bSBsaW1pdCAod2lkdGggKiBoZWlnaHQgPiAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIobWF4Q2FudmFzQXJlYSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiKS4iKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkpOworICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIkNhbnZhcyBhcmVh
IGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKHdpZHRoICogaGVpZ2h0ID4gIiwgbWF4Q2FudmFz
QXJlYSwgIikuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIC8vIE1ha2Ug
c3VyZSB3ZSBkb24ndCB1c2UgbW9yZSBwaXhlbCBtZW1vcnkgdGhhbiB0aGUgc3lzdGVtIGNhbiBz
dXBwb3J0LgogICAgIHNpemVfdCByZXF1ZXN0ZWRQaXhlbE1lbW9yeSA9IDQgKiB3aWR0aCgpICog
aGVpZ2h0KCk7CiAgICAgaWYgKGFjdGl2ZVBpeGVsTWVtb3J5KCkgKyByZXF1ZXN0ZWRQaXhlbE1l
bW9yeSA+IG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBz
dHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlRvdGFs
IGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKCIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihtYXhBY3RpdmVQaXhlbE1lbW9yeSgpIC8gMTAy
NCAvIDEwMjQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBNQikuIik7
Ci0gICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNl
ZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgiLCBtYXhBY3RpdmVQaXhlbE1lbW9yeSgpIC8gMTAyNCAv
IDEwMjQsICIgTUIpLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NzEsMTYgKzU3MSwxMCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxz
SW5BCiAgICAgICAgICAgICBpZiAoJmNhbmRpZGF0ZSAhPSAmaW1hZ2VDYW5kaWRhdGVzWzBdKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChVUkwoYmFzZSwgY2FuZGlkYXRlLnN0cmluZy50b1N0cmluZygpKS5zdHJp
bmcoKSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlbnNpdHkgIT0gVW5pbml0aWFsaXpl
ZERlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGNhbmRpZGF0ZS5k
ZW5zaXR5KTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd4Jyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291cmNlV2lkdGggIT0gVW5pbml0aWFs
aXplZERlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihjYW5kaWRhdGUucmVzb3VyY2VXaWR0
aCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndycpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5zaXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlw
dG9yKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKGNhbmRpZGF0ZS5kZW5zaXR5KSwgJ3gnKTsKKyAgICAgICAgICAgIGlm
IChjYW5kaWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgY2FuZGlkYXRlLnJlc291cmNlV2lkdGgs
ICd3Jyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDggKzEwNSw3IEBAIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZv
bnQoKSAKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9udFZhcmlh
bnRDYXBzOjpTbWFsbCkKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgic21h
bGwtY2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJlcihmb250RGVzY3Jp
cHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7Ci0gICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0
ZXJhbCgicHgiKTsKKyAgICBzZXJpYWxpemVkRm9udC5hcHBlbmQoZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksICJweCIpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZvbnREZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxOTgsMTMgKzIxOTgsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VE
YXRhPj4gQ2FudmFzUmVuCiAKICAgICBhdXRvIGJ5dGVBcnJheSA9IGJ1ZmZlci0+Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKGltYWdlRGF0YVJlY3QsIG51bGxwdHIsIGNvb3JkaW5hdGVTeXN0ZW0p
OwogICAgIGlmICghYnl0ZUFycmF5KSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgY29uc29sZU1l
c3NhZ2U7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZExpdGVyYWwoIlVuYWJsZSB0byBn
ZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcy4gUmVxdWVzdGVkIHNpemUgd2FzICIpOwotICAgICAg
ICBjb25zb2xlTWVzc2FnZS5hcHBlbmROdW1iZXIoaW1hZ2VEYXRhUmVjdC53aWR0aCgpKTsKLSAg
ICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiIHggIik7Ci0gICAgICAgIGNvbnNv
bGVNZXNzYWdlLmFwcGVuZE51bWJlcihpbWFnZURhdGFSZWN0LmhlaWdodCgpKTsKLQotICAgICAg
ICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVN
ZXNzYWdlLnRvU3RyaW5nKCkpOworICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIlVuYWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBm
cm9tIGNhbnZhcy4gUmVxdWVzdGVkIHNpemUgd2FzICIsIGltYWdlRGF0YVJlY3Qud2lkdGgoKSwg
IiB4ICIsIGltYWdlRGF0YVJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0CiAgICAgaWYgKGN1ZS0+dmVydGlj
YWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpKQogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5TGVmdCwgcG9zaXRpb24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVS
Q0VOVEFHRSk7CiAgICAgZWxzZSBpZiAoY3VlLT52ZXJ0aWNhbCgpID09IHZlcnRpY2FsR3Jvd2lu
Z1JpZ2h0S2V5d29yZCgpKQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgbWFrZVN0cmluZygiY2FsYygtIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KHZpZGVvU2l6ZS53aWR0aCgpLCAyKSwgInB4IC0gIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdp
ZHRoKGN1ZS0+Z2V0Q1NTU2l6ZSgpLCAyKSwgInB4KSIpKTsKKyAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIG1ha2VTdHJpbmcoImNhbGMoLSIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChzdGF0aWNfY2FzdDxkb3VibGU+KHZpZGVvU2l6ZS53aWR0aCgp
KSwgMiksICJweCAtICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChzdGF0aWNfY2FzdDxk
b3VibGU+KGN1ZS0+Z2V0Q1NTU2l6ZSgpKSwgMiksICJweCkiKSk7CiAKICAgICBkb3VibGUgYXV0
aG9yRm9udFNpemUgPSBzdGQ6Om1pbih2aWRlb1NpemUud2lkdGgoKSwgdmlkZW9TaXplLmhlaWdo
dCgpKSAqIERFRkFVTFRDQVBUSU9ORk9OVFNJWkVQRVJDRU5UQUdFIC8gMTAwLjA7CiAgICAgZG91
YmxlIG11bHRpcGxpZXIgPSAxLjA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRD
bGlja0F0dHJpYnV0aW9uLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxNSAr
MTMzLDcgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsKCkgY29uc3QKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVy
LmFwcGVuZChtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKGFkQ2xpY2tBdHRyaWJ1dGlvblBhdGhQcmVmaXgpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCcvJyk7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jYW1wYWlnbi5pZCk7Ci0K
LSAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OworICAgIFVSTCB1cmwg
eyBVUkwoKSwgbWFrZVN0cmluZygiaHR0cHM6Ly8iLCBtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSwgYWRDbGlja0F0dHJpYnV0aW9uUGF0aFByZWZpeCwgbV9jb252ZXJzaW9uLnZh
bHVlKCkuZGF0YSwgJy8nLCBtX2NhbXBhaWduLmlkKSB9OwogICAgIGlmICh1cmwuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gdXJsOwogCkBAIC0xNTMsMTIgKzE0NSw3IEBAIFVSTCBBZENsaWNr
QXR0cmlidXRpb246OnJlZmVycmVyKCkgY29uc3QKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIFVSTCgpOwogCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX2Rlc3Rp
bmF0aW9uLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVyLnRvU3RyaW5nKCkgfTsKKyAgICBV
UkwgdXJsIHsgVVJMKCksIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgbV9kZXN0aW5hdGlvbi5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSwgJy8nKSB9OwogICAgIGlmICh1cmwuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gdXJsOwogICAgIApAQCAtMTcyLDE0ICsxNTksOSBAQCBVUkwgQWRDbGlj
a0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nKGNvCiAgICAgICAgIHJldHVybiBVUkwoKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIj9j
b252ZXJzaW9uPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1
ZSgpLmRhdGEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJmNhbXBhaWduPSIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOwotICAgIGlmIChiYXNlVVJMLmhh
c1F1ZXJ5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyYnKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYmFzZVVSTC5xdWVyeSgpKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIj9j
b252ZXJzaW9uPSIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICImY2FtcGFpZ249IiwgbV9j
YW1wYWlnbi5pZCk7CisgICAgaWYgKGJhc2VVUkwuaGFzUXVlcnkoKSkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyYnLCBiYXNlVVJMLnF1ZXJ5KCkpOwogICAgIHJldHVybiBVUkwoYmFzZVVSTCwg
YnVpbGRlci50b1N0cmluZygpKTsKIH0KIApAQCAtMTk4LDI2ICsxODAsMTYgQEAgYm9vbCBBZENs
aWNrQXR0cmlidXRpb246Ondhc0NvbnZlcnNpb25TZQogU3RyaW5nIEFkQ2xpY2tBdHRyaWJ1dGlv
bjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlNvdXJjZTogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9z
b3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXG5EZXN0aW5hdGlvbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9kZXN0aW5hdGlv
bi5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJcbkNhbXBhaWduIElEOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NhbXBhaWdu
LmlkKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiU291cmNlOiAiLCBtX3NvdXJjZS5yZWdpc3RyYWJs
ZURvbWFpbi5zdHJpbmcoKSwgIlxuRGVzdGluYXRpb246ICIsIG1fZGVzdGluYXRpb24ucmVnaXN0
cmFibGVEb21haW4uc3RyaW5nKCksICJcbkNhbXBhaWduIElEOiAiLCBtX2NhbXBhaWduLmlkKTsK
ICAgICBpZiAobV9jb252ZXJzaW9uKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XG5Db252ZXJzaW9uIGRhdGE6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2Nv
bnZlcnNpb24udmFsdWUoKS5kYXRhKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJc
bkNvbnZlcnNpb24gcHJpb3JpdHk6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlciht
X2NvbnZlcnNpb24udmFsdWUoKS5wcmlvcml0eSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXG5Db252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJcbkNvbnZlcnNpb24gZGF0YTogIiwgbV9jb252ZXJzaW9uLnZhbHVlKCku
ZGF0YSwgIlxuQ29udmVyc2lvbiBwcmlvcml0eTogIiwgbV9jb252ZXJzaW9uLnZhbHVlKCkucHJp
b3JpdHksICJcbkNvbnZlcnNpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKICAgICAgICAg
aWYgKCFtX2VhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiTm90IHNldCIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gc2Vjb25k
c1VudGlsU2VuZCA9ICptX2VhcmxpZXN0VGltZVRvU2VuZCAtIFdhbGxUaW1lOjpub3coKTsKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChzZWNvbmRzVW50aWxTZW5kID49IDI0X2ggJiYgc2Vj
b25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJXaXRoaW4gMjQtNDggaG91cnMiIDogIk91dHNpZGUg
MjQtNDggaG91cnMiKTsKICAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IlxuQ29udmVyc2lvbiByZXF1ZXN0IHNlbnQ6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgo
d2FzQ29udmVyc2lvblNlbnQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxuQ29udmVyc2lvbiByZXF1ZXN0IHNlbnQ6ICIsICh3YXNDb252ZXJzaW9uU2Vu
dCgpID8gInRydWUiIDogImZhbHNlIikpOwogICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlxuTm8gY29udmVyc2lvbiBkYXRhLiIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTQgKzQy
MSwxMSBAQCBzdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oCiBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlJlZ2lzdHJhYmxlIGRv
bWFpbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3Ry
YWJsZSBkb21haW46ICIsIHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAnXG4nKTsKIAogICAg
IC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2Vy
SW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb246ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicsICIgICAgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvbjogIik7CiAgICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpKSkKICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRoaW4gMjQgaG91cnMiKTsKICAgICBlbHNlCkBAIC00
NjAsMTAgKzQ1Nyw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygK
ICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJlc291cmNlIiwgaXNQcmV2
YWxlbnRSZXNvdXJjZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBpc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihkYXRhUmVjb3Jkc1JlbW92ZWQpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicsICIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBkYXRhUmVj
b3Jkc1JlbW92ZWQsICdcbicpOwogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAg
ICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVk
VG9Mb2FkKTsKQEAgLTQ3Myw4ICs0NjcsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6dG9TdHJpbmcoCiAgICAgYXBwZW5kU2NyZWVuQVBJT3B0aW9uU2V0KGJ1aWxkZXIsIHNjcmVl
bkZ1bmN0aW9uc0FjY2Vzc2VkKTsKICAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNU
ZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuKTsKICAgICBhcHBl
bmRCb29sZWFuKGJ1aWxkZXIsICJjYW52YXNSZWFkRGF0YSIsIGNhbnZhc0FjdGl2aXR5UmVjb3Jk
Lndhc0RhdGFSZWFkKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuXG4iKTsKICNlbmRpZgog
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEyLDE3ICsyMTIsMTIgQEAgU3RyaW5nIGludGVncml0eU1pc21hdGNoRGVzY3Jp
cHRpb24oY29ucwogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIu
YXBwZW5kKHJlc291cmNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgiLiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLiAi
KTsKLSAgICBidWlsZGVyLmFwcGVuZCgiQ29udGVudCBsZW5ndGg6ICIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHJlc291cmNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
LiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLiBDb250ZW50IGxlbmd0aDogIik7CiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkK
LSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocmVzb3VyY2VCdWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogICAgIGVsc2UK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihubyBjb250ZW50KSIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCIsIEV4cGVjdGVkIGNvbnRlbnQgbGVuZ3RoOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihyZXNvdXJjZS5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBtZXRhZGF0YTogIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQoaW50ZWdyaXR5TWV0YWRhdGEpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIsIEV4cGVjdGVkIGNv
bnRlbnQgbGVuZ3RoOiAiLCByZXNvdXJjZS5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpLCAiLCBFeHBlY3RlZCBtZXRhZGF0YTogIiwgaW50ZWdyaXR5TWV0YWRhdGEpOwogCiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM2LDcgKzEzNiw3IEBAIFN0cmluZyBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdE1hcmdpbigK
ICAgICBQaHlzaWNhbEJveFNpZGUgc2lkZXNbNF0gPSB7IFBoeXNpY2FsQm94U2lkZTo6VG9wLCBQ
aHlzaWNhbEJveFNpZGU6OlJpZ2h0LCBQaHlzaWNhbEJveFNpZGU6OkJvdHRvbSwgUGh5c2ljYWxC
b3hTaWRlOjpMZWZ0IH07CiAgICAgZm9yIChhdXRvIHNpZGUgOiBzaWRlcykgewogICAgICAgICBh
dXRvJiBsZW5ndGggPSBtX3Jvb3RNYXJnaW4uYXQoc2lkZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTnVtYmVyKGxlbmd0aC5pbnRWYWx1ZSgpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobGVuZ3RoLmludFZhbHVlKCkpOwogICAgICAgICBpZiAobGVuZ3RoLnR5cGUoKSA9
PSBQZXJjZW50KQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyUnKTsKICAgICAg
ICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNSArNzQsOCBAQCBTdHJpbmcgU2VjdXJp
dHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50CiAgICAgLy8gdG8gYXZvaWQgYnJlYWtpbmcgZXhp
c3RpbmcgcGVyc2lzdGVudCBzdGF0ZS4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShw
cm90b2NvbCwgImZpbGUiKSkKICAgICAgICAgcmV0dXJuICJmaWxlX18wIl9zOwotICAgIAotICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChw
cm90b2NvbCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZSho
b3N0KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihwb3J0LnZhbHVlT3IoMCkpOwotICAgIAotICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbWFrZVN0cmlu
Zyhwcm90b2NvbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxl
TmFtZShob3N0KSwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9y
dC52YWx1ZU9yKDApKSk7CiB9CiAKIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZGVudGlmaWVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkocmV2aXNpb24gMjUzOTY3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRCeXRlTnVt
YmVyKHNpemVfdCBudQogICAgIGlmIChudW1iZXIgPj0gMTA0ODU3NikKICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG51bWJlciAvIDEwNDg1NzYu
LCAyKSwgIiBNQiIpOwogICAgIGlmIChudW1iZXIgPj0gMTAyNCkKLSAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG51bWJlciAvIDEwMjQsIDEpLCAi
IGtCIik7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChudW1iZXIgLyAxMDI0LiwgMSksICIga0IiKTsKICAgICByZXR1cm4gU3RyaW5nOjpudW1i
ZXIobnVtYmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMCArNzgsOCBAQCBzdGF0aWMgU3RyaW5nIHNuYXBPZmZz
ZXRzVG9TdHJpbmcoY29uc3QgCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyAiKTsKLSAgICBmb3IgKGF1dG8mIG9mZnNldCA6IHNuYXBP
ZmZzZXRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRXaWR0aE51bWJlcihvZmZzZXQu
dG9GbG9hdCgpLCAxKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvJiBvZmZzZXQgOiBzbmFwT2Zmc2V0cykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG9mZnNldC50b0Zsb2F0KCksIDEpLCAnICcpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
IH0KQEAgLTkwLDEzICs4OCw4IEBAIHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldFJhbmdlc1RvU3Ry
aW5nKGMKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJbICIpOwotICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpIHsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFdpZHRoTnVt
YmVyKHJhbmdlLnN0YXJ0LnRvRmxvYXQoKSwgMSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKHJhbmdl
LmVuZC50b0Zsb2F0KCksIDEpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIikgIik7
Ci0gICAgfQorICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcoJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJhbmdlLnN0YXJ0LnRvRmxv
YXQoKSwgMSksICIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyYW5nZS5lbmQudG9G
bG9hdCgpLCAxKSwgIikgIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtMTA0LDEwICs5NywxMCBAQCBzdGF0aWMgU3RyaW5n
IHNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyhjCiBzdGF0aWMgU3RyaW5nIHNuYXBQb3J0T3JBcmVh
VG9TdHJpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gbWFrZVN0cmlu
Zygie3siLAotICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmVjdC54KCksIDEp
LCAiLCAiLAotICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmVjdC55KCksIDEp
LCAifSB7IiwKLSAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qud2lkdGgo
KSwgMSksICIsICIsCi0gICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChyZWN0Lmhl
aWdodCgpLCAxKSwgIn19Iik7CisgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChy
ZWN0LngoKS50b0RvdWJsZSgpLCAxKSwgIiwgIiwKKyAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFdpZHRoKHJlY3QueSgpLnRvRG91YmxlKCksIDEpLCAifSB7IiwKKyAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3Qud2lkdGgoKS50b0RvdWJsZSgpLCAxKSwgIiwgIiwK
KyAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3QuaGVpZ2h0KCkudG9Eb3Vi
bGUoKSwgMSksICJ9fSIpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlY2ltYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rl
Y2ltYWwuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNSwxMCArMTAyNSw4IEBAIFN0cmluZyBE
ZWNpbWFsOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ZGlnaXRzW2ldKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50KSB7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/ICJlIiA6
ICJlKyIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYWRqdXN0ZWRFeHBvbmVu
dCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/ICJlIiA6ICJlKyIsIGFkanVz
dGVkRXhwb25lbnQpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsMjEgKzM0MCwxNSBAQCBTdHJpbmcgQ29sb3I6OmNzc1Rl
eHQoKSBjb25zdAogICAgIGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJyZ2Io
Iik7CiAKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihyZWQoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihyZWQoKSksICIsICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGdyZWVuKCkpLCAiLCAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihibHVlKCkpKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGdyZWVuKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
Ci0KLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihi
bHVlKCkpKTsKICAgICBpZiAoY29sb3JIYXNBbHBoYSkgewogICAgICAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3NlcmlhbGl6aW5nLWNzcy12YWx1ZXMKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICBpbnQgYWxwaGEgPSB0aGlzLT5hbHBo
YSgpOwogICAgICAgICBmbG9hdCByb3VuZGVkID0gcm91bmQoYWxwaGEgKiAxMDAgLyAyNTUuMGYp
IC8gMTAwOwogICAgICAgICBpZiAocm91bmQocm91bmRlZCAqIDI1NSkgIT0gYWxwaGEpCiAgICAg
ICAgICAgICByb3VuZGVkID0gcm91bmQoYWxwaGEgKiAxMDAwIC8gMjU1LjBmKSAvIDEwMDA7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocm91bmRlZCk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
cm91bmRlZCkpOwogICAgIH0KICAgICAgICAgCiAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbmRlZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTcgKzU2LDExIEBA
IFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdU
Rjo6ZW1wdHlTdHJpbmcoKTsKICAgICB9CiAKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKHJlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVkKCkpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZ3JlZW4oKSksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihibHVlKCkpKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIoZ3JlZW4oKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBpZiAo
IVdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBoYSgpLCAxLjBmKSkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiAvICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oYWxwaGEoKSkp
OwogCi0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihibHVlKCkpOwotICAg
IGlmICghV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhKCksIDEuMGYpKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC8gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIoYWxwaGEoKSk7Ci0gICAgfQogICAgIGJ1aWxkZXIuYXBwZW5kKCcp
Jyk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHJldmlzaW9u
IDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsMTEgKzU3Nyw3IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0xheWVyOjphZGp1c3RDb3ZlcmFnZVIKIFN0cmluZyBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAgICAg
Ly8gfCBpcyBub3QgYSB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlciBpbiBDU1MsIHNvIHRoaXMg
Y2FuIG5ldmVyIGNvbmZsaWN0IHdpdGggYSBrZXlmcmFtZSBpZGVudGlmaWVyLgotICAgIFN0cmlu
Z0J1aWxkZXIgaWQ7Ci0gICAgaWQuYXBwZW5kTGl0ZXJhbCgiLXx0cmFuc2l0aW9uIik7Ci0gICAg
aWQuYXBwZW5kTnVtYmVyKHN0YXRpY19jYXN0PGludD4ocHJvcGVydHkpKTsKLSAgICBpZC5hcHBl
bmQoJy0nKTsKLSAgICByZXR1cm4gaWQudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZygiLXx0cmFuc2l0aW9uIiwgc3RhdGljX2Nhc3Q8aW50Pihwcm9wZXJ0eSksICctJyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoTW9ub3RvbmljVGltZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY1
LDEyICs3NjUsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlCiAg
ICAgbGF5ZXItPnNldEVkZ2VBbnRpYWxpYXNpbmdNYXNrKDApOwogICAgIGxheWVyLT5zZXRPcGFx
dWUobV90aWxlc0FyZU9wYXF1ZSk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIG5hbWVCdWlsZGVyOwot
ICAgIG5hbWVCdWlsZGVyLmFwcGVuZCgidGlsZSBhdCAiKTsKLSAgICBuYW1lQnVpbGRlci5hcHBl
bmROdW1iZXIodGlsZVJlY3QubG9jYXRpb24oKS54KCkpOwotICAgIG5hbWVCdWlsZGVyLmFwcGVu
ZCgnLCcpOwotICAgIG5hbWVCdWlsZGVyLmFwcGVuZE51bWJlcih0aWxlUmVjdC5sb2NhdGlvbigp
LnkoKSk7Ci0gICAgbGF5ZXItPnNldE5hbWUobmFtZUJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAg
bGF5ZXItPnNldE5hbWUobWFrZVN0cmluZygidGlsZSBhdCAiLCB0aWxlUmVjdC5sb2NhdGlvbigp
LngoKSwgJywnLCB0aWxlUmVjdC5sb2NhdGlvbigpLnkoKSkpOwogCiAgICAgZmxvYXQgdGVtcG9y
YXJ5U2NhbGVGYWN0b3IgPSBvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckNv
bnRlbnRzU2NhbGVNdWx0aXBsaWVyRm9yTmV3VGlsZXMobV90aWxlQ2FjaGVMYXllcik7CiAgICAg
bV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvciB8PSB0ZW1wb3JhcnlTY2FsZUZhY3Rv
ciAhPSAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHJldmlzaW9uIDI1Mzk2
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDQsMzcgKzcwNCwzNyBAQCBzdGF0aWMg
dm9pZCBwcmludEluZGVudChTdHJpbmdCdWlsZGVyJiBiCiBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cm0pCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMTEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMSkpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFu
c2Zvcm0ubTEyKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMTIpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1
aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0xMyk7CisgICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEz
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMTQpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCkpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCI7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNm
b3JtLm0yMSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIxKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMjIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMikp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcih0cmFuc2Zvcm0ubTIzKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjMpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3Jt
Lm0yNCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTI0KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTMxKTsKKyAgICBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpKTsK
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIodHJhbnNmb3JtLm0zMik7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMyKSk7CiAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5t
MzMpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
dHJhbnNmb3JtLm0zMykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTM0KTsKKyAgICBidWlsZGVyLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgiOyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKHRyYW5zZm9ybS5tNDEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTQy
KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tNDIpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm00Myk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRyYW5zZm9ybS5tNDQpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00NCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7
CiB9CiAKQEAgLTc4NSwyNyArNzg1LDI3IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5n
QnVpbGRlciYgYnUKICAgICBidWlsZGVyLmFwcGVuZCgiKCIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KGxheWVyVHlwZU5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgWyIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJQb3NpdGlvbi54KCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJQb3NpdGlvbi54
KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIobGF5ZXJQb3NpdGlvbi55KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJQb3NpdGlvbi55KCkpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIobGF5ZXJQb3NpdGlvbi56KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJQb3NpdGlvbi56KCkpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgiXSBbIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckJv
dW5kcy54KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obGF5ZXJCb3VuZHMueCgpKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGxheWVyQm91bmRzLnkoKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5k
cy55KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJCb3VuZHMud2lkdGgoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy53aWR0aCgpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKGxheWVyQm91bmRzLmhlaWdodCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQm91bmRzLmhlaWdodCgpKSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoIl0gWyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIobGF5ZXJBbmNob3JQb2ludC54KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJBbmNob3JQb2ludC54KCkpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
bGF5ZXJBbmNob3JQb2ludC55KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJBbmNob3JQb2ludC55KCkpKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJB
bmNob3JQb2ludC56KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24obGF5ZXJBbmNob3JQb2ludC56KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgi
XSBzdXBlcmxheWVyPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihsYXllci0+c3VwZXJsYXllcigpKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxheWVyLT5zdXBl
cmxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG5hbWUgaWYgbmVlZGVkCiAgICAgU3RyaW5nIGxh
eWVyTmFtZSA9IENBQ0ZMYXllckdldE5hbWUobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CkBAIC04
MjIsNyArODIyLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidQog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgcHJpbnRJbmRlbnQoYnVpbGRl
ciwgaW5kZW50ICsgMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoYm9yZGVyV2lkdGggIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoYm9yZGVyV2lkdGgp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KGJvcmRlcldpZHRoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgfQogCkBA
IC04NTEsNyArODUxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBi
dQogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgcHJpbnRJbmRlbnQoYnVp
bGRlciwgaW5kZW50ICsgMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIob3BhY2l0eSAiKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllck9wYWNpdHkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KGxheWVyT3BhY2l0eSkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgIH0KIApA
QCAtODgyLDkgKzg4Miw5IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYg
YnUKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgICAgICAgICAgcHJpbnRJ
bmRlbnQoYnVpbGRlciwgaW5kZW50ICsgMSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
KGNvbnRlbnRzIChpbWFnZSBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihD
R0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250ZW50cykpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoQ0dJbWFnZUdldFdpZHRoKGltYWdlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlQ29udGVudHMpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Il0pKSIpOwogICAgICAgICB9CiAKQEAgLTg5NCw5ICs4OTQsOSBAQCBzdGF0aWMgdm9pZCBwcmlu
dExheWVyKFN0cmluZ0J1aWxkZXImIGJ1CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKICAgICAgICAgICAgIHByaW50SW5kZW50KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIihjb250ZW50cyAoYmFja2luZy1zdG9yZSBbIik7Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250ZW50
cykpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoQ0dJbWFnZUdldFdpZHRoKGltYWdlQ29u
dGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29udGVudHMpKTsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykp
OwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIl0pKSIpOwogICAgICAgICB9CiAgICAgfQpA
QCAtOTI3LDE1ICs5MjcsMTUgQEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcldpbjo6bGF5ZXJUcmVl
QXNTdAogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJc
blxuKiogUmVuZGVyIHRyZWUgYXQgdGltZSAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kcygpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoIiAoYm91bmRzICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIocm9vdEJvdW5kcy5vcmlnaW4ueCk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLm9yaWdpbi54KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihyb290Qm91bmRzLm9yaWdpbi55KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMub3JpZ2luLnkpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIocm9vdEJvdW5kcy5zaXplLndpZHRoKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMuc2l6ZS53aWR0aCkpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCd4Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihy
b290Qm91bmRzLnNpemUuaGVpZ2h0KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMuc2l6ZS5oZWlnaHQpKTsKICAgICBidWlsZGVy
LmFwcGVuZCgiKSAqKlxuXG4iKTsKIAogICAgIC8vIFByaW50IGxheWVyIHRyZWUgZnJvbSB0aGUg
cm9vdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAkocmV2aXNpb24gMjUzOTY3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDYsMTIgKzY0Niw3IEBAIFN0cmluZyBi
dWlsZFZhcmlhdGlvblNldHRpbmdzKEZUX0ZhY2UgZmEKICAgICBmb3IgKGF1dG8mIHZhcmlhdGlv
biA6IHZhcmlhdGlvbnNUb0JlQXBwbGllZCkgewogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQodmFyaWF0aW9uLmtleVswXSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlv
bi5rZXlbMV0pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YXJpYXRpb24ua2V5WzJdKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtleVszXSk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCc9Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
dmFyaWF0aW9uLnZhbHVlKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtleVsw
XSwgdmFyaWF0aW9uLmtleVsxXSwgdmFyaWF0aW9uLmtleVsyXSwgdmFyaWF0aW9uLmtleVszXSwg
Jz0nLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHZhcmlhdGlvbi52YWx1ZSkpOwog
ICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMCArNTAsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlTW9jazo6Z2VuZXJhdGVNCiAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgiQXVkaW8gVHJhY2sg
SUQ6ICIpOwogICAgIGVsc2UKICAgICAgICAgbV9idWZmZXIuYXBwZW5kKCJWaWRlbyBUcmFjayBJ
RDogIik7Ci0gICAgbV9idWZmZXIuYXBwZW5kKHRyYWNrLmlkKCkpOwotICAgIG1fYnVmZmVyLmFw
cGVuZCgiIENvdW50ZXI6ICIpOwotICAgIG1fYnVmZmVyLmFwcGVuZE51bWJlcigrK21fY291bnRl
cik7Ci0gICAgbV9idWZmZXIuYXBwZW5kKCJcclxuLS0tLS0tLS0tXHJcbiIpOworICAgIG1fYnVm
ZmVyLmFwcGVuZCh0cmFjay5pZCgpLCAiIENvdW50ZXI6ICIsICsrbV9jb3VudGVyLCAiXHJcbi0t
LS0tLS0tLVxyXG4iKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm94eVNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFByb3h5U2VydmVyU3RyaW5nKFN0cmkK
IAogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgQVNTRVJUKHByb3h5U2VydmVyLnBvcnQo
KSAhPSAtMSk7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIocHJveHlTZXJ2ZXIucG9ydCgpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChwcm94eVNlcnZlci5wb3J0KCkpOwogfQogCiBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NjgsMTcgKzc2OCwxMCBAQCBzdGF0aWMgU3RyaW5nIG5vZGVQ
b3NpdGlvbihOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJib2R5Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAobi0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCd7Jyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRUYWdOYW1lKG4pKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjaGlsZCAiKTsKLSAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG4tPmNvbXB1dGVOb2RlSW5kZXgoKSk7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7Iik7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChnZXRUYWdOYW1lKG4pKTsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd9Jyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobi0+aXNTaGFkb3dS
b290KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgneycsIGdldFRhZ05hbWUobiks
ICd9Jyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
Y2hpbGQgIiwgbi0+Y29tcHV0ZU5vZGVJbmRleCgpLCAiIHsiLCBnZXRUYWdOYW1lKG4pLCAnfScp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJkb2N1
bWVudCIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAkocmV2aXNp
b24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoYnVpbGRl
ci5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWJlci0+dmFsdWUo
KSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKG51bWJlci0+dmFsdWUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5n
QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTdHJpbmdCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTYgKzU3LDEyIEBA
IHN0YXRpYyB2b2lkIGFwcGVuZEZsYWcoU3RyaW5nQnVpbGRlciYgc3QKIAogc3RhdGljIHZvaWQg
YXBwZW5kTnVtYmVyKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIGZsb2F0IG51bWJlcikK
IHsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWJlcik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG51bWJlciksICcgJyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGFwcGVuZFBvaW50KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIocG9pbnQueCgpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocG9pbnQueSgpKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9pbnQueCgpKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LnkoKSksICcgJyk7CiB9CiAKIHZvaWQgU1ZH
UGF0aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwg
Ym9vbCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDQwICs1OSwxNiBA
QCBTdHJpbmcgYnVpbGRTdHJpbmdGcm9tUGF0aChjb25zdCBQYXRoJiBwCiAgICAgICAgIHBhdGgu
YXBwbHkoWyZidWlsZGVyXSAoY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAgICAg
ICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50
OjpUeXBlOjpNb3ZlVG9Qb2ludDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnTScp
OwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBd
LngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdNJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAnICcs
IGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2ludDoKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnTCcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50
LnBvaW50c1swXS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdMJywgZWxl
bWVudC5wb2ludHNbMF0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRR
dWFkQ3VydmVUb1BvaW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdRJyk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgp
KTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC5wb2ludHNbMV0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnUScsIGVs
ZW1lbnQucG9pbnRzWzBdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCksICcsJywgZWxl
bWVudC5wb2ludHNbMV0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRD
dXJ2ZVRvUG9pbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0MnKTsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQucG9pbnRzWzFdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBv
aW50c1sxXS55KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMl0ueCgpKTsK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzJdLnkoKSk7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ0MnLCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxlbWVu
dC5wb2ludHNbMF0ueSgpLCAnLCcsIGVsZW1lbnQucG9pbnRzWzFdLngoKSwgJyAnLCBlbGVtZW50
LnBvaW50c1sxXS55KCksICcsJywgZWxlbWVudC5wb2ludHNbMl0ueCgpLCAnICcsIGVsZW1lbnQu
cG9pbnRzWzJdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFBhdGhFbGVtZW50OjpUeXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJ1onKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHJldmlzaW9u
IDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtOTMsOSArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoYnVpbGRlci5s
ZW5ndGgoKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogCi0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LT54KCkpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIocG9pbnQtPnkoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LT54KCkpLCAnICcsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9pbnQtPnkoKSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSAmJiBidWls
ZGVyW2J1aWxkZXIubGVuZ3RoKCkgLSAxXSAhPSAnKCcpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51
bWJlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obnVtYmVyKSk7CiAgICAgICAgIGFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVycyhidWls
ZGVyLCBudW1iZXJzLi4uKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDExICsxMzksMTEgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZs
b2F0UG9pbnQ+IHsKICAgICB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBGbG9h
dFBvaW50JiB0eXBlKQogICAgIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUueCgpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcih0eXBlLnkoKSk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0eXBlLngoKSksCisgICAgICAgICAgICAnICcsCisgICAgICAgICAg
ICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUueSgpKQorICAgICAgICApOwog
ICAgIH0KIH07CiAKQEAgLTE2NiwxNSArMTY2LDE1IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxGbG9hdFJlY3Q+IHsKICAgICB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBG
bG9hdFJlY3QmIHR5cGUpCiAgICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS54KCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKHR5cGUueSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0eXBlLndpZHRoKCkpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHR5cGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgICAgIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS54KCkpLAorICAgICAgICAgICAgJyAnLAor
ICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLnkoKSksCisg
ICAgICAgICAgICAnICcsCisgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKHR5cGUud2lkdGgoKSksCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUuaGVpZ2h0KCkpCisgICAgICAgICk7CiAgICAg
fQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjg2LDE1ICsxNjg2LDE3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJu
YWxzOjpkdW1wTWFya2UKICAgICBTdHJpbmdCdWlsZGVyIHJlY3RTdHJpbmc7CiAgICAgcmVjdFN0
cmluZy5hcHBlbmRMaXRlcmFsKCJtYXJrZXIgcmVjdHM6ICIpOwogICAgIGZvciAoY29uc3QgYXV0
byYgcmVjdCA6IHJlY3RzKSB7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kKCcoJyk7Ci0gICAg
ICAgIHJlY3RTdHJpbmcuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocmVjdC54KCkpOwotICAg
ICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJpbmcu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocmVjdC55KCkpOwotICAgICAgICByZWN0U3RyaW5n
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIocmVjdC53aWR0aCgpKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRMaXRl
cmFsKCIsICIpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIikgIik7
CisgICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kKAorICAgICAgICAgICAgJygnLAorICAgICAgICAg
ICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyZWN0LngoKSksCisgICAgICAgICAg
ICAiLCAiLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyZWN0
LnkoKSksCisgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihyZWN0LndpZHRoKCkpLAorICAgICAgICAgICAgIiwgIiwKKyAgICAgICAg
ICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC5oZWlnaHQoKSksCisgICAg
ICAgICAgICAiKSAiCisgICAgICAgICk7CiAgICAgfQogICAgIHJldHVybiByZWN0U3RyaW5nLnRv
U3RyaW5nKCk7CiB9CkBAIC0yMjI4LDkgKzIyMzAsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpwYXJz
ZXJNZXRhRGF0YShKU0M6OkpTCiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzRnVuY3Rpb25FeGVjdXRh
YmxlKCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlY3V0YWJsZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAg
IFN0cmluZyBpbmZlcnJlZE5hbWUgPSBmdW5jRXhlY3V0YWJsZS0+ZWNtYU5hbWUoKS5zdHJpbmco
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIFwiIik7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoaW5mZXJyZWROYW1lKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicp
OworICAgICAgICByZXN1bHQuYXBwZW5kKCJmdW5jdGlvbiBcIiIsIGluZmVycmVkTmFtZSwgJyIn
KTsKICAgICB9IGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImV2YWwiKTsKICAgICBlbHNlIGlmIChleGVjdXRhYmxl
LT5pc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkpCkBAIC0yMjQwLDE1ICsyMjQwLDcgQEAgU3Ry
aW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKUwogICAgIGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7
Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihzdGFydExpbmUpOwotICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHN0YXJ0Q29sdW1uKTsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihlbmRMaW5lKTsK
LSAgICByZXN1bHQuYXBwZW5kKCc6Jyk7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihlbmRDb2x1
bW4pOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgfSIpOworICAgIHJlc3VsdC5hcHBlbmQo
IiB7ICIsIHN0YXJ0TGluZSwgJzonLCBzdGFydENvbHVtbiwgIiAtICIsIGVuZExpbmUsICc6Jywg
ZW5kQ29sdW1uLCAiIH0iKTsKIAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KQEAg
LTM0MzgsMjQgKzM0MzAsMTQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmdldEN1
cnJlbgogICAgIEN1cnNvciBjdXJzb3IgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCkuY3VycmVudE1vdXNlQ3Vyc29yKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidHlwZT0iKTsKLSAgICByZXN1bHQuYXBwZW5kKGN1cnNv
clR5cGVUb1N0cmluZyhjdXJzb3IudHlwZSgpKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiBob3RTcG90PSIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoY3Vyc29yLmhvdFNwb3QoKS54
KCkpOwotICAgIHJlc3VsdC5hcHBlbmQoJywnKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKGN1
cnNvci5ob3RTcG90KCkueSgpKTsKKyAgICByZXN1bHQuYXBwZW5kKCJ0eXBlPSIsIGN1cnNvclR5
cGVUb1N0cmluZyhjdXJzb3IudHlwZSgpKSwgIiBob3RTcG90PSIsIGN1cnNvci5ob3RTcG90KCku
eCgpLCAnLCcsIGN1cnNvci5ob3RTcG90KCkueSgpKTsKICAgICBpZiAoY3Vyc29yLmltYWdlKCkp
IHsKICAgICAgICAgRmxvYXRTaXplIHNpemUgPSBjdXJzb3IuaW1hZ2UoKS0+c2l6ZSgpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGltYWdlPSIpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgneCcpOwotICAgICAgICByZXN1bHQuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoc2l6
ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiBpbWFnZT0iLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHNpemUud2lkdGgoKSksICd4JywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihzaXplLmhlaWdodCgpKSk7CiAgICAgfQogI2lmIEVOQUJMRShNT1VT
RV9DVVJTT1JfU0NBTEUpCi0gICAgaWYgKGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCkgIT0gMSkg
ewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHNjYWxlPSIpOwotICAgICAgICByZXN1
bHQuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoY3Vyc29yLmltYWdlU2NhbGVGYWN0b3IoKSwg
OCk7Ci0gICAgfQorICAgIGlmIChjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpICE9IDEpCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIiBzY2FsZT0iLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCksIDgpKTsKICNlbmRpZgogICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKICNlbHNlCkBAIC00MzUzLDcgKzQzMzUsNyBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGp1c3RTdGFydGluZyA9IGZhbHNlOwogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGNv
b3JkaW5hdGUudG9VbnNpZ25lZCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29vcmRpbmF0
ZS50b1Vuc2lnbmVkKCkpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9Iik7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tQYWdlT3ZlcmxheUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE3ICs4OCw3IEBA
IHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkaWRNb3ZlVG9QYWcKIAogdm9pZCBNb2NrUGFn
ZU92ZXJsYXlDbGllbnQ6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBTdHJpbmdC
dWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJNb2NrUGFnZU92ZXJs
YXlDbGllbnQ6OmRyYXdSZWN0IGRpcnR5UmVjdCAoIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1i
ZXIoZGlydHlSZWN0LngoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
IG1lc3NhZ2UuYXBwZW5kTnVtYmVyKGRpcnR5UmVjdC55KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3Qud2lkdGgo
KSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIG1lc3NhZ2UuYXBwZW5k
TnVtYmVyKGRpcnR5UmVjdC5oZWlnaHQoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIp
Iik7Ci0gICAgb3ZlcmxheS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNz
YWdlLnRvU3RyaW5nKCkpOworICAgIG92ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWFrZVN0cmluZygiTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCBkaXJ0
eVJlY3QgKCIsIGRpcnR5UmVjdC54KCksICIsICIsIGRpcnR5UmVjdC55KCksICIsICIsIGRpcnR5
UmVjdC53aWR0aCgpLCAiLCAiLCBkaXJ0eVJlY3QuaGVpZ2h0KCksICIpIikpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCkBAIC0xMTcsMTQg
KzEwNyw3IEBAIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWcKIAogYm9v
bCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXks
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBt
ZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiTW9ja1BhZ2VPdmVybGF5Q2xpZW50
Ojptb3VzZUV2ZW50IGxvY2F0aW9uICgiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihldmVu
dC5wb3NpdGlvbigpLngoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
IG1lc3NhZ2UuYXBwZW5kTnVtYmVyKGV2ZW50LnBvc2l0aW9uKCkueSgpKTsKLSAgICBtZXNzYWdl
LmFwcGVuZExpdGVyYWwoIikiKTsKLSAgICBvdmVybGF5LnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VM
ZXZlbDo6RGVidWcsIG1lc3NhZ2UudG9TdHJpbmcoKSk7Ci0KKyAgICBvdmVybGF5LnBhZ2UoKS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1vY2tQYWdlT3ZlcmxheUNs
aWVudDo6bW91c2VFdmVudCBsb2NhdGlvbiAoIiwgZXZlbnQucG9zaXRpb24oKS54KCksICIsICIs
IGV2ZW50LnBvc2l0aW9uKCkueSgpLCAiKSIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTMgKzc4LDcg
QEAgdm9pZCBYTUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlwZSB0eQogdm9pZCBYTUxFcnJv
cnM6OmFwcGVuZEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQb3Np
dGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICAvLyA8dHlwZVN0cmlu
Zz4gb24gbGluZSA8bGluZU51bWJlcj4gYXQgY29sdW1uIDxjb2x1bW5OdW1iZXI+OiA8bWVzc2Fn
ZT4KLSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJpbmcpOwotICAgIG1fZXJyb3JN
ZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCIgb24gbGluZSAiKTsKLSAgICBtX2Vycm9yTWVzc2FnZXMu
YXBwZW5kTnVtYmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKTsKLSAgICBtX2Vycm9y
TWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiIGF0IGNvbHVtbiAiKTsKLSAgICBtX2Vycm9yTWVzc2Fn
ZXMuYXBwZW5kTnVtYmVyKHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpOwotICAgIG1f
ZXJyb3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5h
cHBlbmQobWVzc2FnZSk7CisgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZCh0eXBlU3RyaW5nLCAi
IG9uIGxpbmUgIiwgcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksICIgYXQgY29sdW1uICIs
IHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCksICI6ICIsIG1lc3NhZ2UpOwogfQogCiBz
dGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2VzKQpJbmRleDogU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uSG9zdC5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbkhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGxvbmcg
U2Vzc2lvbkhvc3Q6OnNlbmRDb21tYW5kVG9CYWNrZW5kKGMKICAgICBtX2NvbW1hbmRSZXF1ZXN0
cy5hZGQoc2VxdWVuY2VJRCwgV1RGTW92ZShyZXNwb25zZUhhbmRsZXIpKTsKICAgICBTdHJpbmdC
dWlsZGVyIG1lc3NhZ2VCdWlsZGVyOwogICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IntcImlkXCI6Iik7Ci0gICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHNlcXVlbmNlSUQp
OworICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChzZXF1ZW5jZUlEKTsKICAgICBtZXNzYWdlQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIik7CiAgICAgbWVz
c2FnZUJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQpOwogICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgn
IicpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMTItMzEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1lcmljIGFwcGVu
ZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBjYW4gaXMgY2Fw
YWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjp0b1N0cmlu
ZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmFzSlNPTiBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERh
dGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpHYW1lcGFkRGF0YTo6bG9nZ2luZ1N0cmluZyBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YnVpbGRIVFRQ
SGVhZGVycyk6CisKIDIwMTktMTItMzEgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgcmVtb3RlIG1lZGlhIHJlc291cmNlIGxvYWRlciBmb3IgdGhlIEdQVSBw
cm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MCwxMCArMjYwLDcgQEAgdm9pZCBBZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyOjp0b1N0cmluZwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJV
bmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6XG4iKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcigrK3VuY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRpb24udG9T
dHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJDb3JlOjpBZENsaWNrQXR0cmli
dXRpb24gIiwgKyt1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyLCAnXG4nLCBhdHRyaWJ1dGlv
bi50b1N0cmluZygpKTsKIH0KIAogICAgIHVuc2lnbmVkIGNvbnZlcnRlZEF0dHJpYnV0aW9uTnVt
YmVyID0gMDsKQEAgLTI3NCwxMCArMjcxLDcgQEAgdm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyOjp0b1N0cmluZwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDb252ZXJ0
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOlxuIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIldl
YkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoKytjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlciArIHVuY29udmVydGVkQXR0cmlidXRpb25O
dW1iZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXR0cmlidXRpb24udG9TdHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJX
ZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gIiwgKytjb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJl
ciArIHVuY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIsICdcbicsIGF0dHJpYnV0aW9uLnRvU3Ry
aW5nKCkpOwogICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGJ1aWxkZXIudG9TdHJpbmco
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTgsNyArMTE5OCw3IEBAIHN0YXRpYyBTdHJpbmcgYnVp
bGRMaXN0KGNvbnN0IFdURjo6SXRlcmEKICAgICBmb3IgKGF1dG8gZG9tYWluSUQgOiB2YWx1ZXMp
IHsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZG9tYWlu
SUQpOworICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW5JRCk7CiAgICAgfQogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBIYXNoTWFwPHVu
c2lnbmVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzCiAgICAgZm9yIChhdXRvIHZhbHVlIDogcmVz
dWx0cy5rZXlzKCkpIHsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIodmFsdWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7CiAgICAgfQogCiAg
ICAgYXV0byBkb21haW5JRHNPZkludGVyZXN0ID0gYnVpbGRlci50b1N0cmluZygpOwpAQCAtMjUw
NiwxNCArMjUwNiwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlJl
Z2lzdHJhYmxlIGRvbWFpbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZG9tYWluKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9t
YWluOiAiLCBkb21haW4sICdcbicpOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAg
ICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291
cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoSGFkVXNlckludGVyYWN0
aW9uSW5kZXgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIlxuICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAg
IGlmIChoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWVJbmRleCkpKSkKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRo
aW4gMjQgaG91cnMiKTsKICAgICBlbHNlCkBAIC0yNTQ2LDEwICsyNTQzLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRl
ciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJl
c291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpKTsKLSAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXG4gICAgZGF0YVJlY29yZHNSZW1v
dmVkOiAiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5J
bnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpLCAnXG4nKTsKIAogICAgIHJlc2V0U3RhdGVtZW50
KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDE2ICs1NzksMTYgQEAgdm9p
ZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZExpdGVyYWwoInt9XG5dLFxuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFs
KCJcInRvdGFsc1wiOiB7XG4iKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwo
IlwiY2FwYWNpdHlcIjogIik7Ci0gICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmROdW1iZXIoY2Fw
YWNpdHkpOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKGNhcGFjaXR5KTsKICAgICAgICAg
ICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUu
YXBwZW5kTGl0ZXJhbCgiXCJjb3VudFwiOiAiKTsKLSAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZE51bWJlcih0b3RhbHMuY291bnQpOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKHRvdGFs
cy5jb3VudCk7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAg
ICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlwiYm9keVNpemVcIjogIik7Ci0gICAg
ICAgICAgICBlcGlsb2d1ZS5hcHBlbmROdW1iZXIodG90YWxzLmJvZHlTaXplKTsKKyAgICAgICAg
ICAgIGVwaWxvZ3VlLmFwcGVuZCh0b3RhbHMuYm9keVNpemUpOwogICAgICAgICAgICAgZXBpbG9n
dWUuYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRl
cmFsKCJcImF2ZXJhZ2VXb3J0aFwiOiAiKTsKLSAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKHRvdGFscy5jb3VudCA/IHRvdGFscy53b3J0aCAvIHRvdGFscy5j
b3VudCA6IDApOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odG90YWxzLmNvdW50ID8gdG90YWxzLndvcnRoIC8gdG90YWxzLmNvdW50
IDogMCkpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAg
ICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0
byB3cml0ZURhdGEgPSBlcGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDE2ICsy
MTYsMTYgQEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0cmluZ0J1aWxkZXImIGpzb24sIAogICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5oYXNoQXNTdHJpbmcoKSk7CiAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiYm9keVNp
emVcIjogIik7Ci0gICAganNvbi5hcHBlbmROdW1iZXIoaW5mby5ib2R5U2l6ZSk7CisgICAganNv
bi5hcHBlbmQoaW5mby5ib2R5U2l6ZSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsK
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwid29ydGhcIjogIik7Ci0gICAganNvbi5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihpbmZvLndvcnRoKTsKKyAgICBqc29uLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGluZm8ud29ydGgpKTsKICAgICBqc29uLmFwcGVuZExp
dGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJwYXJ0aXRpb25cIjogIik7
CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKG1fa2V5LnBhcnRpdGlvbigpKTsKICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJ0
aW1lc3RhbXBcIjogIik7Ci0gICAganNvbi5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3Rp
bWVTdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKTsKKyAgICBqc29uLmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdGltZVN0YW1wLnNlY29uZHNT
aW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixc
biIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJVUkxcIjogIik7CiAgICAganNvbi5hcHBl
bmRRdW90ZWRKU09OU3RyaW5nKG1fcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwpAQCAtMjM0LDcg
KzIzNCw3IEBAIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCAKICAgICBq
c29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoaW5mby5ib2R5SGFzaCk7CiAgICAganNvbi5hcHBl
bmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiYm9keVNoYXJlQ291
bnRcIjogIik7Ci0gICAganNvbi5hcHBlbmROdW1iZXIoaW5mby5ib2R5U2hhcmVDb3VudCk7Cisg
ICAganNvbi5hcHBlbmQoaW5mby5ib2R5U2hhcmVDb3VudCk7CiAgICAganNvbi5hcHBlbmRMaXRl
cmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaGVhZGVyc1wiOiB7XG4iKTsK
ICAgICBib29sIGZpcnN0SGVhZGVyID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYk1lbW9yeVNhbXBsZXIuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDExICsx
NzIsOSBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVuZEN1cnJlbnRNZW1vCiAgICAgaWYg
KCFtZW1vcnlTdGF0cy52YWx1ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHN0YXRTdHJpbmcuYXBw
ZW5kKHNlcGFyYXRvcik7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVtb3J5U3Rh
dHMudmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kKHNlcGFyYXRvcik7Ci0gICAgICAg
ICAgICBzdGF0U3RyaW5nLmFwcGVuZChtZW1vcnlTdGF0cy5rZXlzW2ldKTsKKyAgICAgICAgICAg
IHN0YXRTdHJpbmcuYXBwZW5kKCdcbicsIHNlcGFyYXRvciwgbWVtb3J5U3RhdHMua2V5c1tpXSk7
CiAgICAgICAgICAgICBhcHBlbmRTcGFjZXMoc3RhdFN0cmluZywgMzUgLSBtZW1vcnlTdGF0cy5r
ZXlzW2ldLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kTnVtYmVyKG1l
bW9yeVN0YXRzLnZhbHVlc1tpXSk7CisgICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZChtZW1v
cnlTdGF0cy52YWx1ZXNbaV0pOwogICAgICAgICB9CiAgICAgfQogICAgIHN0YXRTdHJpbmcuYXBw
ZW5kKCdcbicpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFk
RGF0YS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVw
YWQvR2FtZXBhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSwyNSArOTEsMTQgQEAgU3Ry
aW5nIEdhbWVwYWREYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29ucwogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fYXhpc1ZhbHVlcy5zaXpl
KCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGF4ZXMsICIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKG1fYnV0dG9uVmFsdWVzLnNpemUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgYnV0dG9uc1xuIik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXhp
c1ZhbHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBB
eGlzICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKG1fYXhpc1ZhbHVlc1tpXSk7Ci0gICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKG1f
YXhpc1ZhbHVlcy5zaXplKCksICIgYXhlcywgIiwgbV9idXR0b25WYWx1ZXMuc2l6ZSgpLCAiIGJ1
dHRvbnNcbiIpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F4aXNWYWx1ZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgQXhpcyAiLCBpLCAiOiAiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fYXhpc1ZhbHVlc1tpXSkpOwogCiAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2J1dHRvblZh
bHVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBCdXR0
b24gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGkpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIobV9idXR0b25WYWx1ZXNbaV0pOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fYnV0dG9uVmFsdWVzLnNpemUoKTsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiIEJ1dHRvbiAiLCBpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1f
YnV0dG9uVmFsdWVzW2ldKSk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsMTMgKzQ4NSw3IEBAIGNvbnN0IGNo
YXIqIFdlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1MKIAogICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiV2ViQmFja0ZvcndhcmRMaXN0IDB4Iik7CiAgICAgYXBwZW5kVW5zaWduZWRBc0hleChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIGJ1aWxkZXIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyaWVz
LnNpemUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50cmllcywgaGFzIGN1cnJl
bnQgaW5kZXggIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9jdXJyZW50SW5kZXggPyAiWUVTIiA6
ICJOTyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgiKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRleCA6IDApOwotICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIiAtICIsIG1fZW50cmllcy5z
aXplKCksICIgZW50cmllcywgaGFzIGN1cnJlbnQgaW5kZXggIiwgbV9jdXJyZW50SW5kZXggPyAi
WUVTIiA6ICJOTyIsICIgKCIsIG1fY3VycmVudEluZGV4ID8gKm1fY3VycmVudEluZGV4IDogMCwg
JyknKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAJKHJldmlzaW9uIDI1
Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTk2LDE0ICszNTk2LDEwIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2EKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwogICAgICAgICBpZiAoIWV4Y2VwdGlvbkRldGFpbHMuc291cmNlVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZXhjZXB0aW9uRGV0YWlscy5zb3VyY2VVUkwpOwot
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlciA+IDApIHsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlcik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIgPiAwKSB7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlcik7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyID4gMCkK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicsIGV4Y2VwdGlvbkRldGFpbHMubGlu
ZU51bWJlcik7CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIg
PiAwKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgZXhjZXB0aW9uRGV0YWls
cy5jb2x1bW5OdW1iZXIpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIp
OwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGV4Y2VwdGlvbkRldGFpbHMubWVz
c2FnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCShyZXZpc2lv
biAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAp
IHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZXJyb3JNZXNzYWdlOwogICAgICAgICAgICAg
ZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUg
c2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIpOwotICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlLmFwcGVuZE51bWJlcihyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICAgICAg
ICAgIGVycm9yTWVzc2FnZS5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiICgiKTsKICAgICAgICAgICAgIGVy
cm9yTWVzc2FnZS5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7CiAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UuYXBwZW5kKCcpJyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NCwxNyArMTk0LDkgQEAgc3RhdGljIFN0cmluZyBidWlsZEhUVFBIZWFkZXJzKGNv
bnN0IFJlcwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGhl
YWRlcjsKLSAgICBoZWFkZXIuYXBwZW5kTGl0ZXJhbCgiSFRUUCAiKTsKLSAgICBoZWFkZXIuYXBw
ZW5kTnVtYmVyKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwotICAgIGhlYWRlci5hcHBlbmQo
JyAnKTsKLSAgICBoZWFkZXIuYXBwZW5kKHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpOwotICAg
IGhlYWRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgZm9yIChhdXRvJiBmaWVsZCA6IHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZHMoKSkgewotICAgICAgICBoZWFkZXIuYXBwZW5kKGZpZWxkLmtleSk7Ci0g
ICAgICAgIGhlYWRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5k
KGZpZWxkLnZhbHVlKTsKLSAgICAgICAgaGVhZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAg
aGVhZGVyLmFwcGVuZCgiSFRUUCAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAnICcsIHJl
c3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICdcbicpOworICAgIGZvciAoYXV0byYgZmllbGQgOiBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpCisgICAgICAgIGhlYWRlci5hcHBlbmQoZmllbGQu
a2V5LCAiOiAiLCBmaWVsZC52YWx1ZSwgJ1xuJyk7CiAKICAgICAvLyBJZiB0aGUgY29udGVudCBp
cyBlbmNvZGVkIChtb3N0IGxpa2VseSBjb21wcmVzc2VkKSwgdGhlbiBkb24ndCBzZW5kIGl0cyBs
ZW5ndGggdG8gdGhlIHBsdWdpbiwKICAgICAvLyB3aGljaCBpcyBvbmx5IGludGVyZXN0ZWQgaW4g
dGhlIGRlY29kZWQgbGVuZ3RoLCBub3QgeWV0IGtub3duIGF0IHRoZSBtb21lbnQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBIUkVTVUxUIFdlYktpdFN0YXRpc3Rp
Y3M6OmNvbUNsYXNzTmFtZUNvCiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9y
IChhdXRvJiBzbG90IDogZ0NsYXNzTmFtZUNvdW50KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIoc2xvdC52YWx1ZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNsb3QudmFsdWUp
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXHQnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
c2xvdC5rZXkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE5
LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
bnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBl
bmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpy
ZXNwb25kVG9SZXF1ZXN0cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpkdW1wUGF0aCk6Cisg
ICAgICAgIChXVFI6OnJhbmdlVG9TdHIpOgorICAgICAgICAoV1RSOjpzdHlsZURlY1RvU3RyKToK
KyAgICAgICAgKFdUUjo6c2VjdXJpdHlPcmlnaW5Ub1N0cik6CisgICAgICAgIChXVFI6OmZyYW1l
VG9TdHIpOgorICAgICAgICAoV1RSOjpkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBMb2FkRXZlbnQpOgorICAgICAgICAoV1RSOjpk
dW1wUmVxdWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdU
Ujo6ZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAg
ICAoV1RSOjpkdW1wRXJyb3JEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAg
ICAgIChXVFI6OmR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQ2Fj
aGVSZXNwb25zZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmFyVGV4dCk6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2luRWRp
dGluZyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRW5kRWRpdGlu
Zyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0Tm9kZSk6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0VGV4dCk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRGVsZXRlUmFuZ2UpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Up
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEFwcGx5U3R5bGUpOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEJlZ2luRWRpdGluZyk6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRW5kRWRpdGluZyk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9y
UmFuZ2UpOgorICAgICAgICAoV1RSOjpzdHJpbmdBdE9mZnNldCk6CisKIDIwMTktMTItMzEgIENh
cmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV0gT3BlbkpQRUcgbWlzc2luZyBpbiBpbnN0YWxsIGRlcGVuZGVuY2llcyBzY3JpcHQuCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25T
ZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE0ICs4OSw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHN0YXRpYyBsb25nIHNlcXVlbmNlSUQgPSAwOwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1l
c3NhZ2VCdWlsZGVyOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7XCJp
ZFwiOiIpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIoKytzZXF1ZW5jZUlE
KTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9kXCI6XCJB
dXRvbWF0aW9uLiIpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29tbWFuZCk7Ci0g
ICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBtZXNzYWdlQnVpbGRl
ci5hcHBlbmQoIntcImlkXCI6IiwgKytzZXF1ZW5jZUlELCAiLFwibWV0aG9kXCI6XCJBdXRvbWF0
aW9uLiIsIGNvbW1hbmQsICciJyk7CiAgICAgICAgIGlmICghcGFyYW1ldGVycy5pc051bGwoKSkg
ewotICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwicGFyYW1zXCI6
Iik7Ci0gICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQocGFyYW1ldGVycyk7CisgICAg
ICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoIixcInBhcmFtc1wiOiIsIHBhcmFtZXRlcnMp
OwogICAgICAgICB9CiAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnfScpOwogICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKCJTZW5kTWVzc2FnZVRvQmFja2VuZCIsIGdfdmFy
aWFudF9uZXcoIih0dHMpIiwgbV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0LmlkLCBtZXNzYWdlQnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1Mzk2NykKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsMTggKzc1LDEz
IEBAIHZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMobndfY28KICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX3JlcXVlc3RSZXNwb25zZU1hcC5jb250YWlucyhwYXRoKSwgIlRo
aXMgSFRUUFNlcnZlciBkb2VzIG5vdCBrbm93IGhvdyB0byByZXNwb25kIHRvIGEgcmVxdWVzdCBm
b3IgJXMiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAKICAgICAgICAgYXV0byByZXNw
b25zZSA9IG1fcmVxdWVzdFJlc3BvbnNlTWFwLmdldChwYXRoKTsKKyAgICAKICAgICAgICAgU3Ry
aW5nQnVpbGRlciByZXNwb25zZUJ1aWxkZXI7Ci0gICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBl
bmQoIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogIik7Ci0gICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2UuYm9keS5sZW5ndGgoKSk7Ci0gICAgICAg
IHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogcmVzcG9uc2UuaGVhZGVyRmllbGRzKSB7Ci0gICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKHBhaXIua2V5KTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIjog
Iik7Ci0gICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHBhaXIudmFsdWUpOwotICAg
ICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwotICAgICAgICB9Ci0gICAg
ICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKLSAgICAgICAgcmVzcG9uc2VCdWls
ZGVyLmFwcGVuZChyZXNwb25zZS5ib2R5KTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVu
ZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAiLCByZXNwb25zZS5ib2R5Lmxl
bmd0aCgpLCAiXHJcbiIpOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiByZXNwb25zZS5oZWFk
ZXJGaWVsZHMpCisgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHBhaXIua2V5LCAi
OiAiLCBwYWlyLnZhbHVlLCAiXHJcbiIpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KCJcclxuIiwgcmVzcG9uc2UuYm9keSk7CisgICAgCiAgICAgICAgIGF1dG8gcmVzcG9uc2VCb2R5
QW5kSGVhZGVyID0gcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nKCkucmVsZWFzZUltcGwoKTsKICAg
ICAgICAgYXV0byByZXNwb25zZURhdGEgPSBhZG9wdE5TKGRpc3BhdGNoX2RhdGFfY3JlYXRlKHJl
c3BvbnNlQm9keUFuZEhlYWRlci0+Y2hhcmFjdGVyczgoKSwgcmVzcG9uc2VCb2R5QW5kSGVhZGVy
LT5sZW5ndGgoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgICAgICh2
b2lkKXJlc3BvbnNlQm9keUFuZEhlYWRlcjsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAgKzk2LDgg
QEAgc3RhdGljIFdURjo6U3RyaW5nIGR1bXBQYXRoKEpTR2xvYmFsQ29udAogICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
Zyhub2RlTmFtZSkpOwogCi0gICAgaWYgKHBhcmVudE5vZGUgJiYgSlNWYWx1ZUlzT2JqZWN0KGNv
bnRleHQsIHBhcmVudE5vZGUpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiID4gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGR1bXBQYXRoKGNvbnRleHQs
IChKU09iamVjdFJlZilwYXJlbnROb2RlKSk7Ci0gICAgfQorICAgIGlmIChwYXJlbnROb2RlICYm
IEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBwYXJlbnROb2RlKSkKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiA+ICIsIGR1bXBQYXRoKGNvbnRleHQsIChKU09iamVjdFJlZilwYXJlbnRO
b2RlKSk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtMTQy
LDE2ICsxNDAsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgcmFuZ2VUb1N0cihXS0J1bmRsZVBhCiAg
ICAgaW50IHN0YXJ0T2Zmc2V0ID0gcHJvcGVydHlWYWx1ZUludChjb250ZXh0LCByYW5nZU9iamVj
dCwgInN0YXJ0T2Zmc2V0Iik7CiAgICAgaW50IGVuZE9mZnNldCA9IHByb3BlcnR5VmFsdWVJbnQo
Y29udGV4dCwgcmFuZ2VPYmplY3QsICJlbmRPZmZzZXQiKTsKIAotICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInJhbmdlIGZy
b20gIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoc3RhcnRPZmZzZXQpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGR1bXBQYXRoKGNvbnRleHQsIHN0YXJ0Tm9kZU9iamVjdCkpOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHRvICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKGVuZE9mZnNldCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgb2YgIik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZHVtcFBhdGgoY29udGV4dCwgZW5kTm9kZU9iamVj
dCkpOwotICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInJhbmdlIGZyb20gIiwgc3RhcnRPZmZzZXQsICIgb2YgIiwgZHVtcFBhdGgoY29u
dGV4dCwgc3RhcnROb2RlT2JqZWN0KSwgIiB0byAiLCBlbmRPZmZzZXQsICIgb2YgIiwgZHVtcFBh
dGgoY29udGV4dCwgZW5kTm9kZU9iamVjdCkpOwogfQogCiBzdGF0aWMgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IE5hdmlnYXRpb25UeXBlVG9TdHJpbmcoV0tGcmFtZU5hdmlnYXRpb25UeXBlIHR5
cGUpCkBAIC0xNzgsMjMgKzE2NywxMiBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgc3R5bGVEZWNUb1N0
cihXS0J1bmRsCiAgICAgLy8gRHVtcFJlbmRlclRyZWUgY2FsbHMgLVtET01DU1NTdHlsZURlY2xh
cmF0aW9uIGRlc2NyaXB0aW9uXSwgd2hpY2gganVzdCBkdW1wcyBjbGFzcyBuYW1lIGFuZCBvYmpl
Y3QgYWRkcmVzcy4KICAgICAvLyBObyBleGlzdGluZyB0ZXN0cyBhY3R1YWxseSBoaXQgdGhpcyBj
b2RlIHBhdGggYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBiZWNhdXNlIFdlYkNvcmUgZG9l
c24ndCBjYWxsCiAgICAgLy8gdGhlIGVkaXRpbmcgY2xpZW50IGlmIHRoZSBzdHlsaW5nIG9wZXJh
dGlvbiBzb3VyY2UgaXMgQ29tbWFuZEZyb21ET00gb3IgQ29tbWFuZEZyb21ET01XaXRoVXNlcklu
dGVyZmFjZS4KLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI8RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBBRERSRVNTPiIpOwot
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuICI8RE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiBBRERSRVNTPiJfczsKIH0KIAogc3RhdGljIFdURjo6U3RyaW5nIHNl
Y3VyaXR5T3JpZ2luVG9TdHIoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCiB7Ci0gICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCd7Jyk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5
T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKGFkb3B0
V0soV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KG9yaWdpbikpKSk7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKFdL
U2VjdXJpdHlPcmlnaW5HZXRQb3J0KG9yaWdpbikpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCd9Jyk7Ci0KLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVy
biBtYWtlU3RyaW5nKCd7JywgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29w
eVByb3RvY29sKG9yaWdpbikpKSwgIiwgIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5
T3JpZ2luQ29weUhvc3Qob3JpZ2luKSkpLCAiLCAiLCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChv
cmlnaW4pLCAnfScpOwogfQogCiBzdGF0aWMgV1RGOjpTdHJpbmcgZnJhbWVUb1N0cihXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lKQpAQCAtMjAyLDE4ICsxODAsMTMgQEAgc3RhdGljIFdURjo6U3RyaW5n
IGZyYW1lVG9TdHIoV0tCdW5kbGVGcgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBuYW1l
ID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weU5hbWUoZnJhbWUpKTsKICAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgaWYgKFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFt
ZSkpIHsKLSAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQoKSkpIHsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibWFpbiBmcmFtZSBcIiIpOwotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAg
IGlmICghV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKQorICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIm1haW4gZnJhbWUgXCIiLCB0b1dURlN0cmluZyhuYW1lKSwgJyInKTsKKyAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtYWlu
IGZyYW1lIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFt
ZS5nZXQoKSkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnJh
bWUgXCIiKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5h
bWUpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQoKSkpCisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiZnJhbWUgXCIiLCB0b1dURlN0cmluZyhuYW1lKSwgJyInKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJm
cmFtZSAoYW5vbnltb3VzKSIpOwogICAgIH0KQEAgLTQ1NCw5ICs0MjcsNyBAQCBzdGF0aWMgdm9p
ZCBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIm1haW4gZnJhbWUg
XCIiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgibWFpbiBmcmFtZSBcIiIsIHRvV1RGU3RyaW5nKG5hbWUpLCAnIicpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NjUsMTggKzQzNiwxNCBAQCBzdGF0aWMgdm9pZCBkdW1w
RnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZyYW1lIFwiIik7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCci
Jyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImZyYW1lIFwiIiwgdG9XVEZTdHJpbmcobmFt
ZSksICciJyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR1bXBMb2FkRXZlbnQoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgY29uc3QgY2hhciogZXZlbnROYW1lKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKICAgICBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChmcmFtZSwgc3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgLSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChldmVudE5hbWUpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgLSAiLCBl
dmVudE5hbWUsICdcbicpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5vdXRwdXRU
ZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTQ4NiwxMSArNDUzLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXF1ZXN0RGVzY3JpcHRpbwogICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiBmaXJzdFBhcnR5ID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5Rmlyc3RQYXJ0
eUZvckNvb2tpZXMocmVxdWVzdCkpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBodHRw
TWV0aG9kID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5SFRUUE1ldGhvZChyZXF1ZXN0KSk7CiAK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjxOU1VSTFJlcXVlc3QgVVJMICIpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdl
dCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIG1haW4gZG9jdW1lbnQg
VVJMICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQoZmlyc3RQYXJ0eS5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCBodHRwIG1ldGhvZCAiKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiPE5TVVJMUmVxdWVz
dCBVUkwgIiwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0KCkpLCAiLCBtYWluIGRv
Y3VtZW50IFVSTCAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZpcnN0UGFydHkuZ2V0KCkp
LCAiLCBodHRwIG1ldGhvZCAiKTsKIAogICAgIGlmIChXS1N0cmluZ0lzRW1wdHkoaHR0cE1ldGhv
ZC5nZXQoKSkpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKG5vbmUpIik7
CkBAIC01MDcsMTYgKzQ3MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHVtcFJlc3BvbnNlRGVz
Y3JpcHRpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKG51bGwpIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8
TlNVUkxSZXNwb25zZSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3VpdGFibGVG
b3JUZXN0UmVzdWx0KHVybC5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCBodHRwIHN0YXR1cyBjb2RlICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShyZXNwb25zZSkpOwotCi0gICAgaWYgKHNob3Vs
ZER1bXBSZXNwb25zZUhlYWRlcnMpIHsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihJbmplY3RlZEJ1
bmRsZVBhZ2U6OnJlc3BvbnNlSGVhZGVyQ291bnQocmVzcG9uc2UpKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgaGVhZGVycyIpOwotICAgIH0KKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiPE5TVVJMUmVzcG9uc2UgIiwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1
cmwuZ2V0KCkpLCAiLCBodHRwIHN0YXR1cyBjb2RlICIsIFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVz
Q29kZShyZXNwb25zZSkpOworCisgICAgaWYgKHNob3VsZER1bXBSZXNwb25zZUhlYWRlcnMpCisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIEluamVjdGVkQnVuZGxlUGFnZTo6cmVz
cG9uc2VIZWFkZXJDb3VudChyZXNwb25zZSksICIgaGVhZGVycyIpOworCiAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJz4nKTsKIH0KIApAQCAtNTQzLDE3ICs1MDEsMTIgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGR1bXBFcnJvckRlc2NyaXB0aW9uUwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGVycm9yRG9tYWluLmdldCgpLCAiV2ViS2l0UG9saWN5RXJyb3IiKSkKICAgICAg
ICAgZXJyb3JEb21haW4gPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJX
ZWJLaXRFcnJvckRvbWFpbiIpKTsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
PE5TRXJyb3IgZG9tYWluICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5n
KGVycm9yRG9tYWluKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGNvZGUg
Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZXJyb3JDb2RlKTsKKyAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiPE5TRXJyb3IgZG9tYWluICIsIHRvV1RGU3RyaW5nKGVycm9yRG9t
YWluKSwgIiwgY29kZSAiLCBlcnJvckNvZGUpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+
IHVybCA9IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CiAgICAgaWYgKHVy
bC5nZXQoKSkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXJsU3RyaW5nID0g
YWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdldCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCBmYWlsaW5nIFVSTCBcIiIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJyInKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgZmFpbGluZyBV
UkwgXCIiLCB0b1dURlN0cmluZyh1cmxTdHJpbmcpLCAnIicpOwogICAgIH0KIAogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCc+Jyk7CkBAIC03NzcsMTUgKzczMCw5IEBAIHN0YXRpYyB2b2lkIGR1
bXBGcmFtZVNjcm9sbFBvc2l0aW9uKFdLQnUKIAogICAgIGlmIChzaG91bGRJbmNsdWRlRnJhbWVO
YW1lKSB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBuYW1lID0gYWRvcHRXSyhX
S0J1bmRsZUZyYW1lQ29weU5hbWUoZnJhbWUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJmcmFtZSAnIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RG
U3RyaW5nKG5hbWUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCInICIp
OwotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInNjcm9sbGVkIHRvICIp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHgpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCcsJyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoeSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJm
cmFtZSAnIiwgdG9XVEZTdHJpbmcobmFtZSksICInICIpOworICAgIH0KKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgic2Nyb2xsZWQgdG8gIiwgeCwgJywnLCB5LCAnXG4nKTsKIH0KIAogc3RhdGlj
IHZvaWQgZHVtcERlc2NlbmRhbnRGcmFtZVNjcm9sbFBvc2l0aW9ucyhXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpAQCAtMTA1Miw5ICs5OTksNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllCiAKICAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoZnJhbWUsIHN0cmluZ0J1aWxkZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAiKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCkpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIFxuIik7CisgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogIiwgcGF0aFN1aXRhYmxl
Rm9yVGVzdFJlc3VsdCh1cmwpLCAiIFxuIik7CiAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4
dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCkBAIC0xMDgzLDE0ICsxMDI4LDggQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaERvY3VtZQogICAgICAgICBkdW1wTG9h
ZEV2ZW50KGZyYW1lLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsKIAogICAgIHVu
c2lnbmVkIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyA9IFdLQnVuZGxlRnJhbWVHZXRQZW5kaW5n
VW5sb2FkQ291bnQoZnJhbWUpOwotICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpIHsK
LSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChmcmFtZVRvU3RyKGZyYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIC0gaGFzICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJl
cihwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBvbnVubG9hZCBoYW5kbGVyKHMpXG4iKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5k
bGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAo
cGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzKQorICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRU
ZXh0KG1ha2VTdHJpbmcoZnJhbWVUb1N0cihmcmFtZSksICIgLSBoYXMgIiwgcGVuZGluZ0ZyYW1l
VW5sb2FkRXZlbnRzLCAiIG9udW5sb2FkIGhhbmRsZXIocylcbiIpKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUpCkBAIC0xMjQwLDE0ICsxMTc5LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpkaWRSZWNlaXZlUmVzcG8KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWltZVR5
cGVTdHJpbmcgPSBhZG9wdFdLKFdLVVJMUmVzcG9uc2VDb3B5TUlNRVR5cGUocmVzcG9uc2UpKTsK
IAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBoYXMgTUlNRSB0eXBlICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RG
U3RyaW5nKG1pbWVUeXBlU3RyaW5nKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcodXJsU3RyaW5nKSwgIiBoYXMgTUlNRSB0eXBlICIsIHRvV1RGU3RyaW5nKG1pbWVUeXBl
U3RyaW5nKSk7CiAKICAgICBTdHJpbmcgcGxhdGZvcm1NaW1lVHlwZSA9IHBsYXRmb3JtUmVzcG9u
c2VNaW1lVHlwZShyZXNwb25zZSk7CiAgICAgaWYgKCFwbGF0Zm9ybU1pbWVUeXBlLmlzRW1wdHko
KSAmJiBwbGF0Zm9ybU1pbWVUeXBlICE9IHRvV1RGU3RyaW5nKG1pbWVUeXBlU3RyaW5nKSkgewot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBidXQgcGxhdGZvcm0gcmVzcG9u
c2UgaGFzICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwbGF0Zm9ybU1pbWVUeXBl
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiBidXQgcGxhdGZvcm0gcmVzcG9uc2Ug
aGFzICIsIHBsYXRmb3JtTWltZVR5cGUpOwogICAgIH0KIAogICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCdcbicpOwpAQCAtMTMwMSwxMCArMTIzNyw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpzaG91bGRDYWNoZVJlc3AKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TnVtYmVyKGlkZW50aWZpZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0g
d2lsbENhY2hlUmVzcG9uc2U6IGNhbGxlZFxuIik7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0
VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1
dFRleHQobWFrZVN0cmluZyhpZGVudGlmaWVyLCAiIC0gd2lsbENhY2hlUmVzcG9uc2U6IGNhbGxl
ZFxuIikpOwogCiAgICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlIGNhY2hlIHRoZSBy
ZXNwb25zZS4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNDMsMTEgKzEyNzYsNyBAQCBXS0J1bmRs
ZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQCiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIFxuIik7CiAgICAgICAgIGR1bXBSZXF1ZXN0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdCwgc3RyaW5nQnVpbGRlcik7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGlzIG1haW4gZnJhbWUgLSAi
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSA/ICJ5ZXMiIDogIm5vIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtICIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25HZXRTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzKG5hdmlnYXRpb25BY3Rpb24pID8gInllcyIgOiAibm8iKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgaXMg
bWFpbiBmcmFtZSAtICIsIFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkgPyAieWVzIiA6
ICJubyIsICIgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gIiwgV0tCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uR2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMcyhuYXZpZ2F0aW9uQWN0aW9uKSA/ICJ5
ZXMiIDogIm5vIiwgJ1xuJyk7CiAgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpKTsKICAgICB9CiAKQEAgLTEzNjYsMTQgKzEyOTUsMTEgQEAg
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUAogICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJs
LmdldCgpKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHVybFN0
cmluZykpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB3aXRoIG5h
dmlnYXRpb24gdHlwZSBcJyIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5n
KE5hdmlnYXRpb25UeXBlVG9TdHJpbmcoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0TmF2aWdh
dGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbikpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcJyIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgd2l0aCBuYXZpZ2F0aW9u
IHR5cGUgXCciLCB0b1dURlN0cmluZyhOYXZpZ2F0aW9uVHlwZVRvU3RyaW5nKFdLQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbkdldE5hdmlnYXRpb25UeXBlKG5hdmlnYXRpb25BY3Rpb24pKSksICJcJyIp
OwogICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZj4gaGl0VGVzdFJlc3Vs
dFJlZiA9IGFkb3B0V0soV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uQ29weUhpdFRlc3RSZXN1bHQo
bmF2aWdhdGlvbkFjdGlvbikpOwogICAgIGlmIChoaXRUZXN0UmVzdWx0UmVmKSB7CiAgICAgICAg
IFdLUmV0YWluUHRyPFdLQnVuZGxlTm9kZUhhbmRsZVJlZj4gbm9kZUhhbmRsZVJlZiA9IGFkb3B0
V0soV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUoaGl0VGVzdFJlc3VsdFJlZi5n
ZXQoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBvcmlnaW5hdGlu
ZyBmcm9tICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChkdW1wUGF0aChtX3BhZ2Us
IG1fd29ybGQuZ2V0KCksIG5vZGVIYW5kbGVSZWYuZ2V0KCkpKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiBvcmlnaW5hdGluZyBmcm9tICIsIGR1bXBQYXRoKG1fcGFnZSwgbV93b3Js
ZC5nZXQoKSwgbm9kZUhhbmRsZVJlZi5nZXQoKSkpOwogICAgIH0KIAogICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdcbicpOwpAQCAtMTM5MywxMiArMTMxOSw4IEBAIFdLQnVuZGxlUGFnZVBvbGlj
eUFjdGlvbiBJbmplY3RlZEJ1bmRsZVAKIHsKICAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpICYmIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+aXNQb2xpY3lEZWxlZ2F0ZUVu
YWJsZWQoKSAmJiBXS1VSTFJlc3BvbnNlSXNBdHRhY2htZW50KHJlc3BvbnNlKSkgewotICAgICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBmaWxlbmFtZSA9IGFkb3B0V0soV0tVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxl
bmFtZShyZXNwb25zZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlBv
bGljeSBkZWxlZ2F0ZTogcmVzb3VyY2UgaXMgYW4gYXR0YWNobWVudCwgc3VnZ2VzdGVkIGZpbGUg
bmFtZSBcJyIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhmaWxl
bmFtZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlwnXG4iKTsKLSAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1
dFRleHQobWFrZVN0cmluZygiUG9saWN5IGRlbGVnYXRlOiByZXNvdXJjZSBpcyBhbiBhdHRhY2ht
ZW50LCBzdWdnZXN0ZWQgZmlsZSBuYW1lIFwnIiwgdG9XVEZTdHJpbmcoZmlsZW5hbWUpLCAiXCdc
biIpKTsKICAgICB9CiAKICAgICByZXR1cm4gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Ro
cm91Z2g7CkBAIC0xNDgzLDEzICsxNDA1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6Ondp
bGxBZGRNZXNzYWdlVAogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09OU09MRSBNRVNTQUdFOiAiKTsKLSAgICBpZiAo
bGluZU51bWJlcikgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImxpbmUg
Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgfQotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCdcbicpOworICAgIGlmIChsaW5lTnVtYmVyKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgibGluZSAiLCBsaW5lTnVtYmVyLCAiOiAiKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
ZXNzYWdlU3RyaW5nLCAnXG4nKTsKIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS5kdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIoKSkKICAgICAgICAgaW5qZWN0ZWRCdW5kbGUuZHVtcFRvU3RkRXJyKHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CkBAIC0xNTA2LDExICsxNDI0LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OndpbGxTZXRTdGF0dXNiYQogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUu
dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4
dDoiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhzdGF0dXNiYXJUZXh0
KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQobWFrZVN0cmluZygiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRT
dGF0dXNUZXh0OiIsIHRvV1RGU3RyaW5nKHN0YXR1c2JhclRleHQpLCAnXG4nKSk7CiB9CiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpCkBAIC0xNTE5LDExICsxNDMzLDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaQogICAgIGlmICghaW5qZWN0ZWRCdW5k
bGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBTEVSVDog
Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2FnZSkpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRl
eHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRU
ZXh0KG1ha2VTdHJpbmcoIkFMRVJUOiAiLCB0b1dURlN0cmluZyhtZXNzYWdlKSwgJ1xuJykpOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdL
U3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpCkBAIC0xNTMyLDIyICsxNDQyLDEy
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmkKICAgICBpZiAoIWlu
amVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQ09ORklSTTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVz
c2FnZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkNPTkZJUk06ICIsIHRvV1RGU3RyaW5nKG1lc3Nh
Z2UpLCAnXG4nKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNj
cmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUs
IFdLQnVuZGxlRnJhbWVSZWYpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUFJPTVBUOiAiKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIGRlZmF1bHQgdGV4dDogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQodG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1dFRleHQoc3RyaW5n
QnVpbGRlci50b1N0cmluZygpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0
cHV0VGV4dChtYWtlU3RyaW5nKCJQUk9NUFQ6ICIsIHRvV1RGU3RyaW5nKG1lc3NhZ2UpLCAiLCBk
ZWZhdWx0IHRleHQ6ICIsIHRvV1RGU3RyaW5nKGRlZmF1bHRWYWx1ZSksICdcbicpKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQp
CkBAIC0xNTYwLDEzICsxNDYwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNo
QXBwbGljYQogICAgICAgICAvLyBhYm92ZSBvciBiZWxvdyBhIHRocmVzaG9sZC4KICAgICAgICAg
aW50NjRfdCB0cnVuY2F0ZWRTcGFjZU5lZWRlZCA9ICh0b3RhbEJ5dGVzTmVlZGVkIC8gMTAwMDAp
ICogMTAwMDA7CiAKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENB
Q0hFIENBTExCQUNLOiBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3Vy
aXR5T3JpZ2luOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZWN1cml0eU9yaWdp
blRvU3RyKG9yaWdpbikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB0
b3RhbFNwYWNlTmVlZGVkOn4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIo
dHJ1bmNhdGVkU3BhY2VOZWVkZWQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4n
KTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlVJ
IERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBleGNlZWRlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOiIsIHNlY3VyaXR5T3JpZ2luVG9TdHIo
b3JpZ2luKSwgIiB0b3RhbFNwYWNlTmVlZGVkOn4iLCB0cnVuY2F0ZWRTcGFjZU5lZWRlZCwgJ1xu
JykpOwogICAgIH0KIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3Vs
ZERpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKSkKQEAgLTE1NzksMTUg
KzE0NzMsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhCiB1aW50
NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4sIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYg
ZGF0YWJhc2VEaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhQnl0ZXMsIHVpbnQ2NF90
IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5
dGVzLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlQnl0ZXMpCiB7CiAgICAgYXV0byYgaW5qZWN0ZWRC
dW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKGluamVjdGVkQnVu
ZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpIHsKLSAgICAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFi
YXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoc2VjdXJpdHlPcmlnaW5Ub1N0cihvcmlnaW4pKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgZGF0YWJhc2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHRvV1RGU3RyaW5nKGRhdGFiYXNlTmFtZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUu
b3V0cHV0VGV4dChtYWtlU3RyaW5nKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhj
ZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Iiwgc2VjdXJpdHlPcmlnaW5Ub1N0
cihvcmlnaW4pLCAiIGRhdGFiYXNlOiIsIHRvV1RGU3RyaW5nKGRhdGFiYXNlTmFtZSksICdcbicp
KTsKIAogICAgIHVpbnQ2NF90IGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKICAgICBk
b3VibGUgdGVzdERlZmF1bHRRdW90YSA9IGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+ZGF0
YWJhc2VEZWZhdWx0UXVvdGEoKTsKQEAgLTE2MDEsMTEgKzE0ODgsNyBAQCB1aW50NjRfdCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhCiAgICAgICAgIGlmIChkZWZhdWx0UXVvdGEgPCBl
eHBlY3RlZFVzYWdlQnl0ZXMgJiYgZXhwZWN0ZWRVc2FnZUJ5dGVzIDw9IG1heFF1b3RhKSB7CiAg
ICAgICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVkVXNhZ2VCeXRlczsKIAotICAgICAgICAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1
b3RhIHRvICIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobmV3UXVv
dGEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Cisg
ICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlVJIERFTEVH
QVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gIiwgbmV3UXVvdGEsICdc
bicpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gbmV3UXVvdGE7CkBAIC0xNjc0LDEz
ICsxNTU3LDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2luRWRpdAogICAg
IGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0
VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRC
dW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6
IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29y
bGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRl
c3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE2OTAsMTMgKzE1Njks
OSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkRW5kRWRpdGluCiAgICAgaWYgKCFp
bmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogc2hvdWxkRW5k
RWRpdGluZ0luRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdl
VG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVz
dFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBpbmplY3Rl
ZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVu
ZEVkaXRpbmdJbkRPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCBy
YW5nZSksICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCkt
PnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xNzEyLDE3ICsxNTg3LDkgQEAgYm9vbCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydE5vZAogICAgICAgICAiV2ViVmlld0luc2Vy
dEFjdGlvbkRyb3BwZWQiLAogICAgIH07CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChkdW1wUGF0aChtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIG5vZGUpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcmVwbGFjaW5nRE9NUmFuZ2U6Iik7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxk
LmdldCgpLCByYW5nZVRvUmVwbGFjZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBnaXZlbkFjdGlvbjoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5z
ZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0pOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRw
dXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6Iiwg
ZHVtcFBhdGgobV9wYWdlLCBtX3dvcmxkLmdldCgpLCBub2RlKSwgIiByZXBsYWNpbmdET01SYW5n
ZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2VUb1JlcGxhY2UpLCAi
IGdpdmVuQWN0aW9uOiIsIGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dLCAnXG4nKSk7CisKICAg
ICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmco
KTsKIH0KIApAQCAtMTczOCwxNyArMTYwNSw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpz
aG91bGRJbnNlcnRUZXgKICAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiwKICAg
ICB9OwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVk
aXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTog
c2hvdWxkSW5zZXJ0VGV4dDoiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcodGV4dCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiByZXBs
YWNpbmdET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0
cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBsYWNlKSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdpdmVuQWN0aW9uOiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0
KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRs
ZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIGlu
amVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogc2hv
dWxkSW5zZXJ0VGV4dDoiLCB0b1dURlN0cmluZyh0ZXh0KSwgIiByZXBsYWNpbmdET01SYW5nZToi
LCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2VUb1JlcGxhY2UpLCAiIGdp
dmVuQWN0aW9uOiIsIGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dLCAnXG4nKSk7CisKICAgICBy
ZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsK
IH0KIApAQCAtMTc1OCwxMyArMTYxNyw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91
bGREZWxldGVSYW4KICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElU
SU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRs
ZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChp
bmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkp
CisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBE
RUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29y
bGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRl
c3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE3ODMsMTkgKzE2Mzgs
OSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQ2hhbmdlU2VsCiAgICAgICAgICJU
UlVFIgogICAgIH07CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91
bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5n
QnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgZnJvbVJhbmdl
KSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHRvRE9NUmFuZ2U6Iik7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxk
LmdldCgpLCB0b1JhbmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IGFmZmluaXR5OiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhZmZpbml0eXN0cmlu
Z1thZmZpbml0eV0pOyAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc3Rp
bGxTZWxlY3Rpbmc6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGJvb2xzdHJpbmdb
c3RpbGxTZWxlY3RpbmddKTsgCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KSk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
bWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgZnJvbVJhbmdlKSwgIiB0b0RP
TVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCB0b1JhbmdlKSwgIiBh
ZmZpbml0eToiLCBhZmZpbml0eXN0cmluZ1thZmZpbml0eV0sICIgc3RpbGxTZWxlY3Rpbmc6Iiwg
Ym9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10sICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3Rl
ZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xODA1
LDE1ICsxNjUwLDkgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEFwcGx5U3R5bAog
ICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6
IHNob3VsZEFwcGx5U3R5bGU6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHN0eWxl
RGVjVG9TdHIoc3R5bGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
dG9FbGVtZW50c0luRE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJh
bmdlVG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGUu
dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBpbmpl
Y3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEFwcGx5U3R5bGU6Iiwgc3R5bGVEZWNUb1N0cihzdHlsZSksICIgdG9FbGVtZW50c0luRE9NUmFu
Z2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOwor
CiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0
aW5nKCk7CiB9CiAKQEAgLTE4MjUsMTEgKzE2NjQsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkQmVnaW5FZGl0aW5nCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6Iik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSkpOwotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
c3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0
KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6Iiwg
dG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZEVuZEVkaXRpbmcoV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSkK
QEAgLTE4NDAsMTEgKzE2NzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRW5kRWRp
dGluZyhXCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzoiLCB0b1dURlN0cmluZyhub3Rp
ZmljYXRpb25OYW1lKSwgJ1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlk
Q2hhbmdlKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUpCkBAIC0xODU1LDExICsxNjg2LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZShXS1N0cgogICAgIGlmICghaW5q
ZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5vdGlmaWNh
dGlvbk5hbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3Rl
ZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlOiIsIHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpLCAnXG4nKSk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oV0tTdHJpbmdSZWYg
bm90aWZpY2F0aW9uTmFtZSkKQEAgLTE4NzAsMTEgKzE2OTcsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0CiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246Iik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSkp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246IiwgdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSksICdcbicpKTsKIH0KIAog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw3IEBAIFN0cmluZyBhdHRyaWJ1dGVTZXRU
b1N0cmluZyhBdGtBdHRyaWJ1dGUKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9y
IChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7
IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSog
YXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZS0+bmFtZSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZS0+dmFsdWUp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGUtPm5hbWUsICc6JywgYXR0cmlidXRl
LT52YWx1ZSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLT5uZXh0KQogICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoc2VwYXJhdG9yKTsKICAgICB9CkBAIC01NjAsOCArNTU4LDcgQEAgU3RyaW5n
IGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNzaWJpbGl0eQogewogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKGVsZW1lbnQtPnJvbGUoKS0+c3RyaW5nKCkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKGVsZW1lbnQt
PnJvbGUoKS0+c3RyaW5nKCksICdcbicpOwogCiAgICAgLy8gRm9yIHRoZSBwYXJlbnQgd2UgcHJp
bnQgaXRzIHJvbGUgYW5kIGl0cyBuYW1lLCBpZiBhdmFpbGFibGUuCiAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJBWFBhcmVudDogIik7CkBAIC01NzAsOTMgKzU2Nyw0NSBAQCBTdHJpbmcgYXR0
cmlidXRlc09mRWxlbWVudChBY2Nlc3NpYmlsaXR5CiAgICAgaWYgKGF0a1BhcmVudCkgewogICAg
ICAgICBidWlsZGVyLmFwcGVuZChyb2xlVG9TdHJpbmcoYXRrUGFyZW50KSk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIHBhcmVudE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1lKGF0a1BhcmVudCk7Ci0g
ICAgICAgIGlmIChwYXJlbnROYW1lICYmIHBhcmVudE5hbWVbMF0pIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBh
cmVudE5hbWUpOwotICAgICAgICB9CisgICAgICAgIGlmIChwYXJlbnROYW1lICYmIHBhcmVudE5h
bWVbMF0pCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiAiLCBwYXJlbnROYW1lKTsKICAg
ICB9IGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhDaGls
ZHJlbjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+Y2hpbGRyZW5Db3Vu
dCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiQVhQb3NpdGlvbjogIHsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihlbGVtZW50LT54KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihlbGVtZW50LT55KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiB9XG4iKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhTaXpl
OiB7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZWxlbWVudC0+
d2lkdGgoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGVsZW1lbnQt
PmhlaWdodCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgfVxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYQ2hpbGRyZW46ICIsIGVsZW1lbnQt
PmNoaWxkcmVuQ291bnQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYUG9zaXRpb246
ICB7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+eCgpLCA2LCBL
ZWVwVHJhaWxpbmdaZXJvcyksICIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
ZWxlbWVudC0+eSgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyksICIgfVxuIik7CisgICAgYnVpbGRl
ci5hcHBlbmQoIkFYU2l6ZTogeyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVs
ZW1lbnQtPndpZHRoKCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSwgIiwgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT5oZWlnaHQoKSwgNiwgS2VlcFRyYWlsaW5nWmVy
b3MpLCAiIH1cbiIpOwogCiAgICAgU3RyaW5nIHRpdGxlID0gZWxlbWVudC0+dGl0bGUoKS0+c3Ry
aW5nKCk7CiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQodGl0bGUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQodGl0bGUsICdcbicpOwogICAgIH0KIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9
IGVsZW1lbnQtPmRlc2NyaXB0aW9uKCktPnN0cmluZygpOwotICAgIGlmICghZGVzY3JpcHRpb24u
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRlc2NyaXB0aW9uLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAgaWYgKCFk
ZXNjcmlwdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRlc2NyaXB0aW9u
LnV0ZjgoKS5kYXRhKCksICdcbicpOwogCiAgICAgU3RyaW5nIHZhbHVlID0gZWxlbWVudC0+c3Ry
aW5nVmFsdWUoKS0+c3RyaW5nKCk7Ci0gICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
LSAgICB9Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYRm9jdXNhYmxlOiAiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0ZvY3VzYWJsZSgpKTsKLSAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQodmFsdWUsICdcbicpOwogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJB
WEZvY3VzZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzRm9jdXNl
ZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiQVhTZWxlY3RhYmxlOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50
LT5pc1NlbGVjdGFibGUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIkFYU2VsZWN0ZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQtPmlzU2VsZWN0ZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0K
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYTXVsdGlTZWxlY3RhYmxlOiAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc011bHRpU2VsZWN0YWJsZSgpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhFbmFi
bGVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0VuYWJsZWQoKSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IkFYRXhwYW5kZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzRXhw
YW5kZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkFYUmVxdWlyZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1l
bnQtPmlzUmVxdWlyZWQoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIkFYQ2hlY2tlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoZWxlbWVudC0+aXNDaGVja2VkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCJBWEZvY3VzYWJsZTogIiwgZWxlbWVudC0+aXNGb2N1c2FibGUoKSwg
J1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRm9jdXNlZDogIiwgZWxlbWVudC0+aXNGb2N1
c2VkKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFNlbGVjdGFibGU6ICIsIGVsZW1l
bnQtPmlzU2VsZWN0YWJsZSgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhTZWxlY3Rl
ZDogIiwgZWxlbWVudC0+aXNTZWxlY3RlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
QVhNdWx0aVNlbGVjdGFibGU6ICIsIGVsZW1lbnQtPmlzTXVsdGlTZWxlY3RhYmxlKCksICdcbicp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEVuYWJsZWQ6ICIsIGVsZW1lbnQtPmlzRW5hYmxlZCgp
LCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhFeHBhbmRlZDogIiwgZWxlbWVudC0+aXNF
eHBhbmRlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhSZXF1aXJlZDogIiwgZWxl
bWVudC0+aXNSZXF1aXJlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhDaGVja2Vk
OiAiLCBlbGVtZW50LT5pc0NoZWNrZWQoKSwgJ1xuJyk7CiAKICAgICBTdHJpbmcgdXJsID0gZWxl
bWVudC0+dXJsKCktPnN0cmluZygpOwotICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCh1cmwpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAg
ICB9CisgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCh1cmws
ICdcbicpOwogCiAgICAgLy8gV2UgYXBwZW5kIHRoZSBBVEsgc3BlY2lmaWMgYXR0cmlidXRlcyBh
cyBhIHNpbmdsZSBsaW5lIGF0IHRoZSBlbmQuCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJB
WFBsYXRmb3JtQXR0cmlidXRlczogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZ2V0QXRrQXR0cmli
dXRlU2V0QXNTdHJpbmcoZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKS5nZXQoKSwgT2JqZWN0
QXR0cmlidXRlVHlwZSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFBsYXRmb3JtQXR0cmlidXRl
czogIiwgZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1l
bnQoKS5nZXQoKSwgT2JqZWN0QXR0cmlidXRlVHlwZSkpOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KQEAgLTY2NSwxMCArNjE0LDggQEAgc3RhdGljIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBjcmVhdGVTdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAotICAg
IGZvciAoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IGVsZW1lbnRzLmJlZ2luKCk7IGl0ICE9IGVsZW1lbnRzLmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZXNPZkVsZW1lbnQoY29uc3RfY2FzdDxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4oaXQtPmdldCgpKSkpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlxuLS0tLS0tLS0tLS0tXG4iKTsKLSAgICB9CisgICAgZm9yIChWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWxl
bWVudHMuYmVnaW4oKTsgaXQgIT0gZWxlbWVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGF0dHJpYnV0ZXNPZkVsZW1lbnQoY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Kj4oaXQtPmdldCgpKSksICJcbi0tLS0tLS0tLS0tLVxuIik7CiAKICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogfQpAQCAtMTcyMiw4ICsxNjY5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAogICAgIC8vIFRo
ZSBkZWZhdWx0IHRleHQgYXR0cmlidXRlcyBhcHBseSB0byB0aGUgZW50aXJlIGVsZW1lbnQuCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcblx0RGVmYXVsdCB0ZXh0IGF0dHJpYnV0ZXM6XG5c
dFx0Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlU2V0VG9TdHJpbmcoZ2V0QXR0cmli
dXRlU2V0KG1fZWxlbWVudC5nZXQoKSwgVGV4dEF0dHJpYnV0ZVR5cGUpLCAiXG5cdFx0IikpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcblx0RGVmYXVsdCB0ZXh0IGF0dHJpYnV0ZXM6XG5cdFx0Iiwg
YXR0cmlidXRlU2V0VG9TdHJpbmcoZ2V0QXR0cmlidXRlU2V0KG1fZWxlbWVudC5nZXQoKSwgVGV4
dEF0dHJpYnV0ZVR5cGUpLCAiXG5cdFx0IikpOwogCiAgICAgLy8gVGhlIGF0dHJpYnV0ZSBydW4g
cHJvdmlkZXMgYXR0cmlidXRlcyBzcGVjaWZpYyB0byB0aGUgcmFuZ2Ugb2YgdGV4dCBhdCB0aGUg
c3BlY2lmaWVkIG9mZnNldC4KICAgICBBdGtUZXh0KiB0ZXh0ID0gQVRLX1RFWFQobV9lbGVtZW50
LmdldCgpKTsKQEAgLTE3MzEsMTAgKzE2NzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbG9jYXRpb247IGkgPCBsb2Nh
dGlvbiArIGxlbmd0aDsgaSA9IGVuZCkgewogICAgICAgICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJp
YnV0ZVNldCA9IGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcyh0ZXh0LCBpLCAmc3RhcnQsICZl
bmQpOwogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdWJzdHJpbmcocmVwbGFjZUNoYXJhY3Rl
cnNGb3JSZXN1bHRzKGF0a190ZXh0X2dldF90ZXh0KHRleHQsIHN0YXJ0LCBlbmQpKSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5cdFJhbmdlIGF0dHJpYnV0ZXMgZm9yICciKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Vic3RyaW5nLmdldCgpKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCInOlxuXHRcdCIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRy
aWJ1dGVTZXRUb1N0cmluZyhhdHRyaWJ1dGVTZXQsICJcblx0XHQiKSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcblx0UmFuZ2UgYXR0cmlidXRlcyBmb3IgJyIsIHN1YnN0cmluZy5nZXQoKSwg
Iic6XG5cdFx0IiwgYXR0cmlidXRlU2V0VG9TdHJpbmcoYXR0cmlidXRlU2V0LCAiXG5cdFx0Iikp
OwogICAgIH0KIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yMjc4LDcgKzIyMjEsNiBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXRPZmZzZXQoCiAgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAgICAgZ2ludCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0OwotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAogICAgIEF0a1RleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eTsKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CkBAIC0yMjk4LDEz
ICsyMjQwLDggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0T2Zmc2V0KAogICAg
ICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKICAgICB9CiAK
LSAgICBidWlsZGVyLmFwcGVuZChhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVEtfVEVY
VChlbGVtZW50LmdldCgpKSwgb2Zmc2V0LCBncmFudWxhcml0eSwgJnN0YXJ0T2Zmc2V0LCAmZW5k
T2Zmc2V0KSk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoc3RhcnRPZmZzZXQpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbmRPZmZzZXQpOwotICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgYXV0byBzdHJpbmcgPSBtYWtlU3RyaW5nKGF0a190ZXh0X2dldF9zdHJpbmdf
YXRfb2Zmc2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGdyYW51bGFyaXR5LCAm
c3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpLCAiLCAiLCBzdGFydE9mZnNldCwgIiwgIiwgZW5kT2Zm
c2V0KTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nLnV0
ZjgoKS5kYXRhKCkpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386584</attachid>
            <date>2020-01-01 11:44:50 -0800</date>
            <delta_ts>2020-01-01 16:39:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205671-20200101114449.patch</filename>
            <type>text/plain</type>
            <size>160412</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE5LTEyLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgbnVtZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhh
dCBhcHBlbmQgY2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoK
KyAgICAgICAgKEJhY2t0cmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAq
IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVj
dXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZs
b3dUZXN0LmNwcDoKKyAgICAgICAgKFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0
YW5jZSk6CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcGVuZFVSTEFuZFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNs
aWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcgY29u
c3QpOgorCiAyMDE5LTEyLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaWR5IGEgYml0IG9mIFN0cmluZ0J1aWxkZXIgdXNhZ2UKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDE4ICsyOTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IG1fYnVpbGRlcjsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnIycpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmlzaXRv
ci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQodmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcj
JywgdmlzaXRvci0+aW5kZXgoKSwgJyAnLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSwgIigpIGF0
ICIsIHZpc2l0b3ItPnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5oYXNM
aW5lQW5kQ29sdW1uSW5mbygpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzon
KTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHVudXNlZENvbHVtbjsKICAgICAgICAgICAgICAgICB2aXNpdG9yLT5jb21wdXRl
TGluZUFuZENvbHVtbihsaW5lTnVtYmVyLCB1bnVzZWRDb2x1bW4pOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6JywgbGluZU51bWJlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghdmlzaXRvci0+Y2FsbGVlKCkucmF3UHRyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMiArMTk4
LDEzIEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRp
ZXJBZGp1c3RtZW50OwogCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygp
IHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIp
OworICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGls
ZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BV
VGltZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMo
KSksCisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICAp
OwogCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gQ1BVVGltZTo6Zm9yQ3VycmVudFRocmVhZCgp
OwpAQCAtMjM1LDE5ICsyMzYsMTkgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIHJlY3Vyc2UoaSkgeyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ3VzZSBzdHJpY3QnOyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaWYgKGkgJSAxMDAwID09PSAwKSB7IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGlt
ZSA+Iik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICApIHsgcmV0dXJuOyB9Iik7
Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICB9Iik7Ci0gICAg
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICByZXR1cm4gcmVjdXJzZShp
ICsgMSk7IH0iKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicmVj
dXJzZSgwKTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IgorICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiByZWN1cnNlKGkpIHsiCisgICAgICAgICAgICAgICAgIiAgICAndXNl
IHN0cmljdCc7IgorICAgICAgICAgICAgICAgICIgICAgaWYgKGkgJSAxMDAwID09PSAwKSB7Igor
ICAgICAgICAgICAgICAgICIgICAgICAgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAgICAiICAgICAgICkgeyByZXR1
cm47IH0iCisgICAgICAgICAgICAgICAgIiAgICB9IgorICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHJlY3Vyc2UoaSArIDEpOyB9IgorICAgICAgICAgICAgICAgICJyZWN1cnNlKDApOyIKKyAg
ICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBDUFVUaW1lOjpmb3JDdXJy
ZW50VGhyZWFkKCk7CkBAIC0yNzksMTIgKzI4MCwxMyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUg
PSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVB
ZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0gfSBmb28o
KTsiKTsKKyAgICAgICAgICAgIGF1dG8gc291cmNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsg
dHJ5IHsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAo
Y3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIsCisgICAgICAgICAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJl
ZC5zZWNvbmRzKCkpLAorICAgICAgICAgICAgICAgICIpIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9
IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2Ny
aXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CiAKQEAgLTMxOCwxMiArMzIwLDEzIEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgewogICAgICAgICAgICAgU2Vjb25kcyB0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCA9IDMwMF9tcyArIHRpZXJBZGp1c3RtZW50Owog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKTsKLSAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOwor
ICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJm
dW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAo
dHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGlt
ZSgpIC0gc3RhcnRUaW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMoKSks
CisgICAgICAgICAgICAgICAgIikgYnJlYWs7IH0gfSBmb28oKTsiCisgICAgICAgICAgICApOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzb3VyY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOwogICAgICAgICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKIApAQCAtMzU3LDEyICszNjAsMTMgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGlt
aXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hv
dWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0g
Y3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAgICAgICAg
ICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRj
aGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAgICAgICAgICBhdXRv
IHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvbygpIHsg
dmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUg
PiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAgICAgICAgICAgICAg
ICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVm
IHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJjZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBjYW5j
ZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwogCkBAIC0zOTYsMTIgKzQwMCwx
MyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICBTZWNvbmRzIHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUgPSA2MDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAg
ICAgICAgIFNlY29uZHMgbWF4QnVzeUxvb3BUaW1lID0gNzUwX21zICsgdGllckFkanVzdG1lbnQ7
CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAg
ICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtYXhCdXN5
TG9vcFRpbWUuc2Vjb25kcygpKTsgLy8gaW4gc2Vjb25kcy4KLSAgICAgICAgICAgIHNjcmlwdEJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb28o
KSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRU
aW1lID4gIiwKKyAgICAgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KG1heEJ1c3lMb29wVGltZS5zZWNvbmRzKCkpLCAvLyBpbiBzZWNvbmRzLgorICAgICAgICAgICAg
ICAgICIpIGJyZWFrOyB9IH0gZm9vKCk7IgorICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgSlNTdHJpbmdS
ZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc291cmNlLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIGV4
dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gMDsKIApAQCAtNDM5LDEyICs0NDQsMTMgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICB7CiAgICAgICAgICAgICBTZWNv
bmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVz
dG1lbnQ7CiAKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAg
ICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIg
c3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIp
OwotICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0
aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNvbmRzKCkpOwotICAgICAgICAgICAg
c2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisgICAg
ICAgICAgICBhdXRvIHNvdXJjZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiLAorICAgICAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vjb25kcygpKSwKKyAg
ICAgICAgICAgICAgICAiKSBicmVhazsgfSB9IGZvbygpOyIKKyAgICAgICAgICAgICk7CiAKLSAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNvdXJj
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDggQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFja092
ZXJmbG93T2JqZWN0XwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkdW1teS52YWx1ZU9mKFswXSIpOwot
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDM1MDAwOyBpKyspIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBbIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXSIpOwotICAgICAg
ICB9CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsIFsiLCBpLCAnXScpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIik7Iik7CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTggKzQ1Miw5IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDxub2RlSWQ+LCA8c2l6ZUluQnl0ZXM+LCA8bm9kZUNsYXNzTmFtZUluZGV4Piwg
PGZsYWdzPiwgWzxsYWJlbEluZGV4PiwgPGNlbGxFZGRyZXNzPiwgPHdyYXBwZWRBZGRyZXNzPl0K
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIobm9k
ZS5pZGVudGlmaWVyKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIobm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihjbGFzc05hbWVJ
bmRleCk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTnVt
YmVyKGZsYWdzKTsKKyAgICAgICAganNvbi5hcHBlbmQoJywnLCBub2RlLmlkZW50aWZpZXIsICcs
Jywgbm9kZS5jZWxsLT5lc3RpbWF0ZWRTaXplSW5CeXRlcyh2bSksICcsJywgY2xhc3NOYW1lSW5k
ZXgsICcsJywgZmxhZ3MpOwogICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIobGFiZWxJbmRleCk7Ci0gICAgICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcIjB4Iik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcsIGxhYmVsSW5kZXgsICIsXCIweCIpOwogICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNl
KTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIweCIpOwogICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBl
ZEFkZHJlc3MpLCBqc29uLCBMb3dlcmNhc2UpOwpAQCAtNDc4LDEyICs0NjksNyBAQCBTdHJpbmcg
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgIGZpcnN0RWRnZSA9IGZh
bHNlOwogCiAgICAgICAgIC8vIDxmcm9tTm9kZUlkPiwgPHRvTm9kZUlkPiwgPGVkZ2VUeXBlSW5k
ZXg+LCA8ZWRnZUV4dHJhRGF0YT4KLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIoZWRnZS5mcm9t
LmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlLnRvLmlkZW50aWZpZXIpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcp
OwotICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlVHlwZVRvTnVtYmVyKGVkZ2UudHlwZSkp
OwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOworICAgICAgICBqc29uLmFwcGVuZChlZGdlLmZy
b20uaWRlbnRpZmllciwgJywnLCBlZGdlLnRvLmlkZW50aWZpZXIsICcsJywgZWRnZVR5cGVUb051
bWJlcihlZGdlLnR5cGUpLCAnLCcpOwogICAgICAgICBzd2l0Y2ggKGVkZ2UudHlwZSkgewogICAg
ICAgICBjYXNlIEVkZ2VUeXBlOjpQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFZGdlVHlwZTo6VmFy
aWFibGU6IHsKQEAgLTQ5MSwxMSArNDc3LDExIEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVy
Ojpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICBuZXh0RWRnZU5hbWVJbmRleCsrOwogICAgICAgICAgICAgdW5zaWduZWQgZWRn
ZU5hbWVJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBqc29uLmFw
cGVuZE51bWJlcihlZGdlTmFtZUluZGV4KTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKGVkZ2VO
YW1lSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
ZGdlVHlwZTo6SW5kZXg6Ci0gICAgICAgICAgICBqc29uLmFwcGVuZE51bWJlcihlZGdlLnUuaW5k
ZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoZWRnZS51LmluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3IgdGhp
cyBlZGdlIHR5cGUuCkBAIC02NDYsNyArNjMyLDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6Ompzb24oRnVuY3RpbwogICAgICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKICAg
ICAgICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1i
ZXIoc25hcHNob3ROb2RlLnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgICAgICBqc29uLmFw
cGVuZChzbmFwc2hvdE5vZGUudmFsdWUoKS5pZGVudGlmaWVyKTsKIAogICAgICAgICAgICAgLy8g
TWF5YmUgd2Ugc2hvdWxkIGp1c3QgYWx3YXlzIGVuY29kZSB0aGUgcm9vdCBuYW1lcy4KICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJvb3ROYW1lID0gcm9vdFR5cGVUb1N0cmluZyhpdC52YWx1ZS5t
YXJrUmVhc29uKTsKQEAgLTY1NCw4ICs2NDAsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRl
cjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgIHVuc2lnbmVkIGxhYmVs
SW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAganNvbi5hcHBlbmQo
JywnKTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5kZXgpOworICAgICAg
ICAgICAganNvbi5hcHBlbmQoJywnLCBsYWJlbEluZGV4KTsKIAogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVhY2hhYmlsaXR5UmVhc29uSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGl0LnZhbHVl
LnJlYWNoYWJpbGl0eUZyb21PcGFxdWVSb290UmVhc29ucykgewpAQCAtNjY0LDggKzY0OSw3IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgICAg
ICAgICAgbmV4dExhYmVsSW5kZXgrKzsKICAgICAgICAgICAgICAgICByZWFjaGFiaWxpdHlSZWFz
b25JbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIocmVh
Y2hhYmlsaXR5UmVhc29uSW5kZXgpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnLCByZWFj
aGFiaWxpdHlSZWFzb25JbmRleCk7CiAgICAgICAgIH0KIAogICAgICAgICBqc29uLmFwcGVuZCgn
XScpOwpAQCAtNjczLDkgKzY1Nyw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW8KIAogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVi
dWdnaW5nU25hcHNob3QpIHsKICAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBkZXNjcmlwdGlvbnMK
LSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImxhYmVsc1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBqc29uLmFw
cGVuZCgiLCdcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmRlcmVk
TGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bGFiZWxJbmRleGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTIsMTAgKzM1Miw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjp0b1N0cmluZygp
IGMKICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQg
Y29sdW1uID0gMDsKICAgICAgICAgICAgIGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJh
Y2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIoY29sdW1uKTsKKyAg
ICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5j
cHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTAgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kVVJMQW5kUG9zaXRpb24oU3RyaW5nQgogCiAgICAgYnVpbGRlci5hcHBlbmQo
dXJsKTsKIAotICAgIGlmIChsaW5lTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKLSAgICB9
Ci0KLSAgICBpZiAoY29sdW1uTnVtYmVyID4gMCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
OicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjb2x1bW5OdW1iZXIpOwotICAgIH0K
KyAgICBpZiAobGluZU51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgbGlu
ZU51bWJlcik7CisgICAgaWYgKGNvbHVtbk51bWJlciA+IDApCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6JywgY29sdW1uTnVtYmVyKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVBy
ZWZpeChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsKQpAQCAtMTgwLDEwICsxNzUsNyBAQCB2b2lk
IENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXCiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBj
YWxsRnJhbWVCdWlsZGVyOwotICAgICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmROdW1i
ZXIoaSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7
Ci0gICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgICAgIGNhbGxG
cmFtZUJ1aWxkZXIuYXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKICAgICAgICAg
ICAgIGFwcGVuZFVSTEFuZFBvc2l0aW9uKGNhbGxGcmFtZUJ1aWxkZXIsIGNhbGxGcmFtZS5zb3Vy
Y2VVUkwoKSwgY2FsbEZyYW1lLmxpbmVOdW1iZXIoKSwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcigp
KTsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAy
NTM5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDEzICszNzgsMTMgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcgogCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5hc0lu
dDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1
ZS5hc051bWJlcigpOwogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpCiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChudW1iZXIpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAx
LDE2ICsxMDAxLDE2IEBAIHZvaWQgT3B0aW9uUmVhZGVyOjpPcHRpb246OmR1bXAoU3RyaW5nQnUK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdW5zaWduZWQpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X3Vuc2lnbmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXpl
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3NpemUpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3NpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2Rv
dWJsZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obV9kb3VibGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9pbnQzMik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1faW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6Ok9wdGlvblJhbmdlOgogICAgICAgICBidWlsZGVyLmFwcGVuZChtX29wdGlvblJh
bmdlLnJhbmdlU3RyaW5nKCkpOwpAQCAtMTAxOSw5ICsxMDE5LDcgQEAgdm9pZCBPcHRpb25SZWFk
ZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdQogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBt
X29wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24g
PSAiIjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQob3B0aW9uKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInLCBvcHRpb24sICciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDEwICsxMzMsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoVk0mIHZtKSBj
b25zCiAgICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW47CiAgICAgICAgICAgICBjb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogCi0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmROdW1iZXIoY29sdW1uKTsKKyAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jywg
bGluZSwgJzonLCBjb2x1bW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmFjZUJ1
aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTIt
MzEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1l
cmljIGFwcGVuZCBmdW5jdGlvbnMgZnJvbSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBj
YW4gaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9KU09OVmFsdWVzLmNwcDoKKyAgICAgICAgKFdU
Rjo6SlNPTkltcGw6OlZhbHVlOjp3cml0ZUpTT04gY29uc3QpOgorICAgICAgICAqIHd0Zi9NZWRp
YVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVp
bGRlcjo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg6CisgICAgICAgIChXVEY6OkZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24pOgorICAgICAgICAoV1RGOjpGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgp
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KToKKwogMjAxOS0xMi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVGlkeSBhIGJpdCBvZiBTdHJpbmdCdWlsZGVyIHVzYWdlCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93
dGYvSlNPTlZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lk
IFZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0CiAgICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZShtX3ZhbHVlLm51bWJlcikpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJh
bCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTnVtYmVy
KG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1i
ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL01lZGlhVGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWVkaWFU
aW1lLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDEzICs1ODgsOSBAQCBTdHJpbmcgTWVkaWFUaW1lOjp0
b1N0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRl
ci5hcHBlbmQoJ3snKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobV90aW1lVmFsdWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LycpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3RpbWVTY2FsZSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiID0gIik7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIodG9Eb3VibGUoKSk7CisgICAgaWYgKCFoYXNEb3VibGVWYWx1
ZSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2Fs
ZSwgIiA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odG9Eb3VibGUoKSkpOwogICAgIGlmIChpc0ludmFsaWQoKSkKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGludmFsaWQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnfScpOwpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTM5Njcp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNzIgKzM5Miw2IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKENGU3RyaW5n
UmVmIHMKIAogI2VuZGlmCiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKGludCBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBu
dW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVy
LCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQg
bG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVy
PihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihs
b25nIGxvbmcgbnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxk
ZXI+KG51bWJlciwgdGhpcyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVy
KHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCi17Ci0gICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25l
ZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgcHJlY2lz
aW9uLCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSBwb2xpY3kpCi17Ci0gICAgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb0ZpeGVkUHJlY2lzaW9u
U3RyaW5nKG51bWJlciwgcHJlY2lzaW9uLCBidWZmZXIsIHBvbGljeSA9PSBUcnVuY2F0ZVRyYWls
aW5nWmVyb3MpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24sIFRyYWlsaW5nWmVyb3NU
cnVuY2F0aW5nUG9saWN5IHBvbGljeSkKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZm
ZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVj
aXNpb24sIGJ1ZmZlciwgcG9saWN5ID09IFRydW5jYXRlVHJhaWxpbmdaZXJvcykpOwotfQotCi12
b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihmbG9hdCBudW1iZXIpCi17Ci0gICAgTnVt
YmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChudW1iZXJUb1N0cmluZyhudW1i
ZXIsIGJ1ZmZlcikpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3Vi
bGUgbnVtYmVyKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICBhcHBl
bmQobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKLX0KLQotdm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1h
bFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5k
KG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikp
OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91Ymxl
IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKLXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIs
IGRlY2ltYWxQbGFjZXMsIGJ1ZmZlcikpOwotfQotCiBib29sIFN0cmluZ0J1aWxkZXI6OmNhblNo
cmluaygpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJmbG93ZWQoKSkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDIwICsyMTksNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNv
dW50IC0gMSk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihp
bnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIobG9uZyBsb25nKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwotCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZmxvYXQsIHVuc2lnbmVk
IHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVU
cmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVy
b3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBk
ZWNpbWFsUGxhY2VzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7Ci0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTQsNiArOTQsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwog
ICAgIH0KIAorICAgIHN0YXRpYyBGb3JtYXR0ZWROdW1iZXIgZml4ZWRQcmVjaXNpb24oZmxvYXQg
bnVtYmVyLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMgPSA2LCBUcmFpbGluZ1plcm9zVHJ1
bmNhdGluZ1BvbGljeSB0cmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSA9IFRydW5jYXRlVHJh
aWxpbmdaZXJvcykKKyAgICB7CisgICAgICAgIEZvcm1hdHRlZE51bWJlciBudW1iZXJGb3JtYXR0
ZXI7CisgICAgICAgIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBzaWduaWZp
Y2FudEZpZ3VyZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlciwgdHJhaWxpbmdaZXJvc1RydW5j
YXRpbmdQb2xpY3kgPT0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKKyAgICAgICAgbnVtYmVyRm9y
bWF0dGVyLm1fbGVuZ3RoID0gc3RkOjpzdHJsZW4oJm51bWJlckZvcm1hdHRlci5tX2J1ZmZlclsw
XSk7CisgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXR0ZXI7CisgICAgfQorCiAgICAgc3RhdGlj
IEZvcm1hdHRlZE51bWJlciBmaXhlZFdpZHRoKGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIGRlY2lt
YWxQbGFjZXMpCiAgICAgewogICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVy
OwpAQCAtMTAyLDYgKzExMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudW1iZXJGb3Jt
YXR0ZXI7CiAgICAgfQogCisgICAgc3RhdGljIEZvcm1hdHRlZE51bWJlciBmaXhlZFdpZHRoKGZs
b2F0IG51bWJlciwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKKyAgICB7CisgICAgICAgIEZvcm1h
dHRlZE51bWJlciBudW1iZXJGb3JtYXR0ZXI7CisgICAgICAgIG51bWJlclRvRml4ZWRXaWR0aFN0
cmluZyhudW1iZXIsIGRlY2ltYWxQbGFjZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlcik7Cisg
ICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVuKCZudW1iZXJGb3Jt
YXR0ZXIubV9idWZmZXJbMF0pOworICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOworICAg
IH0KKwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAg
ICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigmbV9idWZmZXJbMF0pOyB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Rl
eHQvVGV4dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9UZXh0
U3RyZWFtLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dURi93dGYvdGV4dC9UZXh0
U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMzcgKzU0LDM3IEBAIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY2hhciAKIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6
b3BlcmF0b3I8PChpbnQgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1f
dGV4dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJl
cihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4
dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChsb25nIGkpCiB7Ci0gICAgbV90ZXh0LmFw
cGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGkp
CiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8
PChsb25nIGxvbmcgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAgIG1fdGV4
dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBl
bmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKQEAgLTkzLDcgKzkzLDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChm
bG9hdAogICAgIGlmIChtX2Zvcm1hdHRpbmdGbGFncyAmIEZvcm1hdHRpbmc6Ok51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycykKICAgICAgICAgcmV0dXJuICp0aGlzIDw8IEZvcm1hdE51bWJlclJlc3Bl
Y3RpbmdJbnRlZ2VycyhmKTsKIAotICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGYs
IDIpOworICAgIG1fdGV4dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGYsIDIp
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBUZXh0U3RyZWFt
JiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGRvdWJsCiAgICAgaWYgKG1fZm9ybWF0dGluZ0ZsYWdz
ICYgRm9ybWF0dGluZzo6TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKQogICAgICAgICByZXR1cm4g
KnRoaXMgPDwgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKGQpOwogCi0gICAgbV90ZXh0
LmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZCwgMik7CisgICAgbV90ZXh0LmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgoZCwgMikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAt
MTI4LDExICsxMjgsMTEgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25z
dAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGb3JtYXROdW1iZXJS
ZXNwZWN0aW5nSW50ZWdlcnMmIG51bWJlclRvRm9ybWF0KQogewogICAgIGlmIChoYXNGcmFjdGlv
bnMobnVtYmVyVG9Gb3JtYXQudmFsdWUpKSB7Ci0gICAgICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdp
ZHRoTnVtYmVyKG51bWJlclRvRm9ybWF0LnZhbHVlLCAyKTsKKyAgICAgICAgbV90ZXh0LmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgobnVtYmVyVG9Gb3JtYXQudmFsdWUsIDIpKTsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIG1fdGV4dC5hcHBlbmROdW1iZXIo
c3RhdGljX2Nhc3Q8aW50PihudW1iZXJUb0Zvcm1hdC52YWx1ZSkpOworICAgIG1fdGV4dC5hcHBl
bmQoc3RhdGljX2Nhc3Q8aW50PihudW1iZXJUb0Zvcm1hdC52YWx1ZSkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisyMDE5LTEy
LTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbnVt
ZXJpYyBhcHBlbmQgZnVuY3Rpb25zIGZyb20gU3RyaW5nQnVpbGRlciBub3cgdGhhdCBhcHBlbmQg
Y2FuIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0
b3JlOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhvc3ROYW1lKToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyk6
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVGVybS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmVhdHVy
ZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFZhcmlh
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRWYXJpYXRpb25WYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZTo6a2V5VGV4dCBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9t
Q1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTcHJpbmdUaW1pbmdGdW5jdGlv
blZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZG93bmdyYWRlUmVmZXJyZXJUb1JlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAg
ICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZvcm1h
dEZvckRlYnVnZ2VyIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OmZvcm1hdEZvckRlYnVnZ2VyIGNvbnN0KToKKyAgICAgICAgKiBkb20v
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlciBjb25z
dCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6Z2VuZXJhdGVVbmlxdWVQcmVmaXgpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRh
dGFEZXRlY3RvclN0cmluZ0ZvclBhdGgpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU2VydmVyTWFwTW91c2VQb3NpdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlQ29udGV4dDJkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVs
ZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVC
b3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgICogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnVybCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnJlZmVycmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnRvU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmludGVncml0eU1pc21hdGNoRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2
ZXI6OnJvb3RNYXJnaW4gY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRCeXRlTnVtYmVyKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c25hcE9mZnNldHNUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwT2Zmc2V0
UmFuZ2VzVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c25hcFBvcnRPckFyZWFUb1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OmNyZWF0ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRWYXJpYXRp
b25TZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrOjpnZW5lcmF0ZU1vY2tTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJveHlTZXJ2ZXJTdHJp
bmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5vZGVQb3NpdGlvbik6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFBvaW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0
cmluZ0Zyb21QYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgICog
c3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1W
YWx1ZTo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXJzKToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8RmxvYXRQb2ludD46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5VHJhaXRzPEZsb2F0UmVjdD46OnRvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBNYXJrZXJSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6Z2V0Q3VycmVudEN1cnNvckluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kT2Zmc2V0cyk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZl
bnQpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UpOgorCiAyMDIwLTAxLTAxICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBzaG91
bGQgaGF2ZSBhIG1vdmUgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCShy
ZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyLDEzICs0MDIsOCBA
QCBjb25zdCBJREJLZXlEYXRhJiBJbmRleFZhbHVlU3RvcmU6Okl0ZXJhCiBTdHJpbmcgSW5kZXhW
YWx1ZVN0b3JlOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgZm9yIChhdXRvJiBrZXkgOiBtX29yZGVyZWRLZXlzKSB7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiS2V5OiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoa2V5
LmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICBFbnRy
eSBoYXMgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcmVjb3Jkcy5nZXQoa2V5
KS0+Z2V0Q291bnQoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGVudHJpZXMi
KTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBrZXkgOiBtX29yZGVyZWRLZXlzKQorICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiS2V5OiAiLCBrZXkubG9nZ2luZ1N0cmluZygpLCAiICBFbnRyeSBoYXMg
IiwgbV9yZWNvcmRzLmdldChrZXkpLT5nZXRDb3VudCgpLCAiIGVudHJpZXMiKTsKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAko
cmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4Myw4IEBAIHN0
YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29uc3QgVVJMJiB1cmwsIGIKICAgICBBU1NFUlQodXJsLnBy
b3RvY29sSXMoIndzcyIpID09IHNlY3VyZSk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
ICAgIGJ1aWxkZXIuYXBwZW5kKHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7
Ci0gICAgaWYgKHVybC5wb3J0KCkgJiYgKCghc2VjdXJlICYmIHVybC5wb3J0KCkudmFsdWUoKSAh
PSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0gNDQzKSkpIHsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodXJs
LnBvcnQoKS52YWx1ZSgpKTsKLSAgICB9CisgICAgaWYgKHVybC5wb3J0KCkgJiYgKCghc2VjdXJl
ICYmIHVybC5wb3J0KCkudmFsdWUoKSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9ydCgpLnZh
bHVlKCkgIT0gNDQzKSkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgdXJsLnBvcnQoKS52
YWx1ZSgpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmls
dGVycy5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxMCAr
MTAzLDggQEAgc3RhdGljIFN0cmluZyBwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcoYwogCiAgICAg
YXV0byBhY3Rpb25zU2xvdCA9IGFjdGlvbnMuZmluZCgmdmVydGV4KTsKICAgICBpZiAoYWN0aW9u
c1Nsb3QgIT0gYWN0aW9ucy5lbmQoKSkgewotICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6
IGFjdGlvbnNTbG90LT52YWx1ZSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
YWN0aW9uKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBhY3Rpb25zU2xvdC0+dmFsdWUpCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChhY3Rpb24sICcsJyk7CiAgICAgfQogICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
OCw5ICsyMzgsNyBAQCBpbmxpbmUgU3RyaW5nIFRlcm06OnRvU3RyaW5nKCkgY29uc3QKICAgICAg
ICAgICAgICAgICBpZiAoaXNBU0NJSVByaW50YWJsZShjKSAmJiAhaXNBU0NJSVNwYWNlKGMpKQog
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xcJyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCd1Jyk7Ci0gICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGMpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnXFwnLCAndScsIGMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAko
cmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0dXJlVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMCArNDYsOCBAQCBTdHJpbmcgQ1NTRm9udEZl
YXR1cmVWYWx1ZTo6Y3VzdG9tQ1NTVGV4CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgLy8gT21pdCB0aGUgdmFsdWUgaWYgaXQncyAxIGFz
IDEgaXMgaW1wbGllZCBieSBkZWZhdWx0LgotICAgIGlmIChtX3ZhbHVlICE9IDEpIHsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92
YWx1ZSk7Ci0gICAgfQorICAgIGlmIChtX3ZhbHVlICE9IDEpCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJywgbV92YWx1ZSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAJKHJl
dmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFyaWF0aW9uVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw3IEBAIFN0cmluZyBDU1NGb250VmFy
aWF0aW9uVmFsdWU6OmN1c3RvbUNTU1QKICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgIGZv
ciAoY2hhciBjIDogbV90YWcpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiXCIgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihtX3ZhbHVlKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXCIgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihtX3ZhbHVlKSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAJKHJl
dmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw3IEBAIFN0cmluZyBTdHlsZVJ1bGVLZXlmcmFt
ZTo6a2V5VGV4dCgpIGNvbnMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fa2V5cy5zaXpl
KCk7ICsraSkgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIGtleVRleHQuYXBwZW5kKCcs
Jyk7Ci0gICAgICAgIGtleVRleHQuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9rZXlzLmF0
KGkpICogMTAwKTsKLSAgICAgICAga2V5VGV4dC5hcHBlbmQoJyUnKTsKKyAgICAgICAga2V5VGV4
dC5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2tleXMuYXQoaSkgKiAx
MDApLCAnJScpOwogICAgIH0KIAogICAgIHJldHVybiBrZXlUZXh0LnRvU3RyaW5nKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCShyZXZp
c2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NT
VGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiY3ViaWMtYmV6aWVyKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIobV94MSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV95MSk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIobV94Mik7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV95Mik7Ci0gICAgYnVpbGRlci5hcHBlbmQo
JyknKTsgICAgCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZygiY3ViaWMtYmV6aWVyKCIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
bV94MSksICIsICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV95MSksICIsICIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV94MiksICIsICIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24obV95MiksICcpJyk7CiB9CiAKIGJvb2wgQ1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTUyLDE0ICs0Miw3IEBAIGJvb2wgQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjoKIAogU3RyaW5nIENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic3RlcHMoIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIobV9zdGVwcyk7Ci0gICAgaWYgKG1fc3RlcEF0U3RhcnQpCi0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBzdGFydCkiKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBlbmQpIik7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygic3RlcHMoIiwgbV9zdGVwcywgKG1fc3RlcEF0
U3RhcnQgPyAiLCBzdGFydCkiIDogIiwgZW5kKSIpKTsKIH0KIAogYm9vbCBDU1NTdGVwc1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUm
IG90aGVyKSBjb25zdApAQCAtNjksMTcgKzUyLDcgQEAgYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmVxdWFscwogCiBTdHJpbmcgQ1NTU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic3ByaW5nKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIobV9tYXNzKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9zdGlmZm5lc3MpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihtX2RhbXBpbmcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2luaXRpYWxWZWxvY2l0eSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoJyknKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKCJzcHJpbmcoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX21h
c3MpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9zdGlmZm5lc3MpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9kYW1waW5nKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1faW5pdGlhbFZlbG9jaXR5KSwgJyknKTsKIH0K
IAogYm9vbCBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU3By
aW5nVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyMSwxNSArNDIxLDE0IEBAIHZvaWQgQ1NTUGFyc2VyVG9rZW46OnNlcmlhbGl6ZShT
dHJpbmdCdWkKICAgICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51
bWVyaWNWYWx1ZVR5cGUgZmxhZwogICAgICAgICBpZiAobV9udW1lcmljU2lnbiA9PSBQbHVzU2ln
bikKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcrJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG51bWVyaWNWYWx1ZSgpKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgotICAgICAgICBidWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihudW1lcmljVmFsdWUoKSksICclJyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CiAgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJl
Y3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAwZTIKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtZXJpY1ZhbHVlKCkpKTsK
ICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVuaWNvZGVSYW5nZVRva2VuOgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTc5LDEzICs3OTc5LDkgQEAgdm9p
ZCBEb2N1bWVudDo6ZG93bmdyYWRlUmVmZXJyZXJUb1JlZ2lzdAogICAgICAgICByZXR1cm47CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVmZXJyZXJV
UkwucHJvdG9jb2woKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChyZWZlcnJlclJlZ2lzdHJhYmxlRG9tYWluU3RyKTsKLSAgICBpZiAocmVm
ZXJyZXJQb3J0KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKCpyZWZlcnJlclBvcnQpOwotICAgIH0KKyAgICBidWlsZGVyLmFwcGVu
ZChyZWZlcnJlclVSTC5wcm90b2NvbCgpLCAiOi8vIiwgcmVmZXJyZXJSZWdpc3RyYWJsZURvbWFp
blN0cik7CisgICAgaWYgKHJlZmVycmVyUG9ydCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzon
LCAqcmVmZXJyZXJQb3J0KTsKICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwogCiAgICAgbV9yZWZl
cnJlck92ZXJyaWRlID0gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgyLDEwICsxMzgyLDggQEAgdm9pZCBQb3NpdGlvbjo6
Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYgogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIjxudWxsPiIpOwogICAgIGVsc2UgeworICAgICAgICByZXN1bHQu
YXBwZW5kKCJvZmZzZXQgIiwgbV9vZmZzZXQsICIgb2YgIik7CiAgICAgICAgIGNoYXIgc1sxMDI0
XTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIm9mZnNldCAiKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZE51bWJlcihtX29mZnNldCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCIgb2YgIik7CiAgICAgICAgIGRlcHJlY2F0ZWROb2RlKCktPmZvcm1hdEZvckRlYnVnZ2VyKHMs
IHNpemVvZihzKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocyk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE4LDE0ICsxNTE4LDEwIEBAIHZvaWQgUmFuZ2U6
OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmYKIAogICAgIGNvbnN0IGludCBGb3JtYXRCdWZm
ZXJTaXplID0gMTAyNDsKICAgICBjaGFyIHNbRm9ybWF0QnVmZmVyU2l6ZV07Ci0gICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoImZyb20gb2Zmc2V0ICIpOwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIo
bV9zdGFydC5vZmZzZXQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKKyAg
ICByZXN1bHQuYXBwZW5kKCJmcm9tIG9mZnNldCAiLCBtX3N0YXJ0Lm9mZnNldCgpLCAiIG9mICIp
OwogICAgIHN0YXJ0Q29udGFpbmVyKCkuZm9ybWF0Rm9yRGVidWdnZXIocywgRm9ybWF0QnVmZmVy
U2l6ZSk7CiAgICAgcmVzdWx0LmFwcGVuZChzKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
IHRvIG9mZnNldCAiKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fZW5kLm9mZnNldCgpKTsK
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAgIHJlc3VsdC5hcHBlbmQoIiB0
byBvZmZzZXQgIiwgbV9lbmQub2Zmc2V0KCksICIgb2YgIik7CiAgICAgZW5kQ29udGFpbmVyKCku
Zm9ybWF0Rm9yRGVidWdnZXIocywgRm9ybWF0QnVmZmVyU2l6ZSk7CiAgICAgcmVzdWx0LmFwcGVu
ZChzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsMTEgKzIzMyw3IEBA
IHZvaWQgVGV4dDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmUKICAgICBpZiAocy5sZW5n
dGgoKSA+IDApIHsKICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCI7ICIpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
bGVuZ3RoPSIpOwotICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHMubGVuZ3RoKCkpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiOyB2YWx1ZT1cIiIpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKHMpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCciJyk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoImxlbmd0aD0iLCBzLmxlbmd0aCgpLCAiOyB2YWx1ZT1cIiIsIHMsICciJyk7CiAgICAg
fQogCiAgICAgc3RybmNweShidWZmZXIsIHJlc3VsdC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGxlbmd0aCAtIDEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1
bXVsYXRvci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWFya3VwQWNjdW11bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsOCArNTE2LDcgQEAg
dm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6Z2VuZXJhdGVVbmlxdWVQcgogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICBkbyB7CiAgICAgICAgIGJ1aWxkZXIuY2xlYXIoKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJOUyIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cigrK21fcHJlZml4TGV2ZWwpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiTlMiLCArK21fcHJl
Zml4TGV2ZWwpOwogICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lID0gYnVpbGRlci50b0F0
b21TdHJpbmcoKTsKICAgICAgICAgaWYgKCFuYW1lc3BhY2VzLmdldChuYW1lLmltcGwoKSkpIHsK
ICAgICAgICAgICAgIHByZWZpeGVkTmFtZS5zZXRQcmVmaXgobmFtZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lvbiAyNTM5
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyNCwxOSArMzI0LDEzIEBAIHN0YXRpYyBTdHJpbmcgZGF0YURldGVj
dG9yU3RyaW5nRm9yUGF0aCgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIDE6CiAgICAg
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRpb246MF0pOwotICAg
IGNhc2UgMjogewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTnVtYmVyKFtwYXRoIGluZGV4QXRQb3NpdGlvbjoxXSk7Ci0gICAgICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfQorICAgIGNhc2UgMjoKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdLCAnLycsIFtwYXRoIGluZGV4
QXRQb3NpdGlvbjoxXSk7CiAgICAgZGVmYXVsdDogewogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0
cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKFtwYXRoIGlu
ZGV4QXRQb3NpdGlvbjowXSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFtwYXRoIGlu
ZGV4QXRQb3NpdGlvbjowXSk7CiAgICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMSA7IGkgPCBs
ZW5ndGggOyBpKyspIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcvJyk7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9zaXRp
b246aV0pOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nLCBbcGF0aCBpbmRl
eEF0UG9zaXRpb246aV0pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEwICsxNzAsNyBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBvc2l0aW9uCiAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgcGFzcyBVc2VUcmFuc2Zvcm1zIGluIHRoZSBNYXBDb29yZGluYXRlc0Zs
YWdzLgogICAgIGF1dG8gYWJzb2x1dGVQb3NpdGlvbiA9IGRvd25jYXN0PFJlbmRlckltYWdlPigq
cmVuZGVyZXIpLmFic29sdXRlVG9Mb2NhbChGbG9hdFBvaW50KG1vdXNlRXZlbnQucGFnZVgoKSwg
bW91c2VFdmVudC5wYWdlWSgpKSk7Ci0gICAgdXJsLmFwcGVuZCgnPycpOwotICAgIHVybC5hcHBl
bmROdW1iZXIoc3RkOjpscm91bmQoYWJzb2x1dGVQb3NpdGlvbi54KCkpKTsKLSAgICB1cmwuYXBw
ZW5kKCcsJyk7Ci0gICAgdXJsLmFwcGVuZE51bWJlcihzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0
aW9uLnkoKSkpOworICAgIHVybC5hcHBlbmQoJz8nLCBzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0
aW9uLngoKSksICcsJywgc3RkOjpscm91bmQoYWJzb2x1dGVQb3NpdGlvbi55KCkpKTsKIH0KIAog
dm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNp
b24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSwxMSArMzM1LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKiBIVE1MQ2FudmFzRWxlbQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgbW9yZSBw
aXhlbCBtZW1vcnkgdGhhbiB0aGUgc3lzdGVtIGNhbiBzdXBwb3J0LgogICAgIHNpemVfdCByZXF1
ZXN0ZWRQaXhlbE1lbW9yeSA9IDQgKiB3aWR0aCgpICogaGVpZ2h0KCk7CiAgICAgaWYgKGFjdGl2
ZVBpeGVsTWVtb3J5KCkgKyByZXF1ZXN0ZWRQaXhlbE1lbW9yeSA+IG1heEFjdGl2ZVBpeGVsTWVt
b3J5KCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2Vl
ZHMgdGhlIG1heGltdW0gbGltaXQgKCIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihtYXhBY3RpdmVQaXhlbE1lbW9yeSgpIC8gMTAyNCAvIDEwMjQpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBNQikuIik7Ci0gICAgICAgIGRvY3VtZW50KCkuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
c3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3Ry
aW5nKCJUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgi
LCBtYXhBY3RpdmVQaXhlbE1lbW9yeSgpIC8gMTAyNCAvIDEwMjQsICIgTUIpLiIpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC04NjMsMjIgKzg1OSwxNCBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAKICAgICAvLyBQZXJmb3JtIG11bHRp
cGxpY2F0aW9uIGFzIGZsb2F0aW5nIHBvaW50IHRvIGF2b2lkIG92ZXJmbG93CiAgICAgaWYgKGZs
b2F0KHdpZHRoKCkpICogaGVpZ2h0KCkgPiBtYXhDYW52YXNBcmVhKSB7Ci0gICAgICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJDYW52YXMgYXJlYSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3aWR0aCAqIGhlaWdo
dCA+ICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihtYXhDYW52YXNBcmVh
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpLiIpOwotICAgICAgICBk
b2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgbWFrZVN0cmluZygiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAo
d2lkdGggKiBoZWlnaHQgPiAiLCBtYXhDYW52YXNBcmVhLCAiKS4iKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHVzZSBtb3JlIHBpeGVs
IG1lbW9yeSB0aGFuIHRoZSBzeXN0ZW0gY2FuIHN1cHBvcnQuCiAgICAgc2l6ZV90IHJlcXVlc3Rl
ZFBpeGVsTWVtb3J5ID0gNCAqIHdpZHRoKCkgKiBoZWlnaHQoKTsKICAgICBpZiAoYWN0aXZlUGl4
ZWxNZW1vcnkoKSArIHJlcXVlc3RlZFBpeGVsTWVtb3J5ID4gbWF4QWN0aXZlUGl4ZWxNZW1vcnko
KSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVkcyB0
aGUgbWF4aW11bSBsaW1pdCAoIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8gMTAyNCk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIE1CKS4iKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmco
IlRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKCIsIG1h
eEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8gMTAyNCwgIiBNQikuIikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MSwxNiArNTcxLDEwIEBAIFN0cmluZyBI
VE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkEKICAgICAgICAgICAgIGlmICgmY2FuZGlk
YXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoIiwgIik7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFVSTChiYXNlLCBjYW5k
aWRhdGUuc3RyaW5nLnRvU3RyaW5nKCkpLnN0cmluZygpKTsKLSAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUuZGVuc2l0eSAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikgewotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIoY2FuZGlkYXRlLmRlbnNpdHkpOwotICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ3gnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikgewotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TnVtYmVyKGNhbmRpZGF0ZS5yZXNvdXJjZVdpZHRoKTsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd3Jyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRl
bnNpdHkgIT0gVW5pbml0aWFsaXplZERlc2NyaXB0b3IpCisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oY2FuZGlkYXRlLmRl
bnNpdHkpLCAneCcpOworICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5yZXNvdXJjZVdpZHRoICE9
IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAnLCBjYW5kaWRhdGUucmVzb3VyY2VXaWR0aCwgJ3cnKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOCArMTA1LDcgQEAgU3RyaW5n
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udCgpIAogICAgIGlmIChmb250RGVzY3JpcHRp
b24udmFyaWFudENhcHMoKSA9PSBGb250VmFyaWFudENhcHM6OlNtYWxsKQogICAgICAgICBzZXJp
YWxpemVkRm9udC5hcHBlbmRMaXRlcmFsKCJzbWFsbC1jYXBzICIpOwogCi0gICAgc2VyaWFsaXpl
ZEZvbnQuYXBwZW5kTnVtYmVyKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKTsK
LSAgICBzZXJpYWxpemVkRm9udC5hcHBlbmRMaXRlcmFsKCJweCIpOworICAgIHNlcmlhbGl6ZWRG
b250LmFwcGVuZChmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgInB4Iik7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9udERlc2NyaXB0aW9uLmZhbWlseUNvdW50
KCk7ICsraSkgewogICAgICAgICBpZiAoaSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShy
ZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5OCwxMyArMjE5OCw3
IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBDYW52YXNSZW4KIAogICAgIGF1dG8g
Ynl0ZUFycmF5ID0gYnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VEYXRhUmVj
dCwgbnVsbHB0ciwgY29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKLSAg
ICAgICAgU3RyaW5nQnVpbGRlciBjb25zb2xlTWVzc2FnZTsKLSAgICAgICAgY29uc29sZU1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzLiBS
ZXF1ZXN0ZWQgc2l6ZSB3YXMgIik7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZE51bWJl
cihpbWFnZURhdGFSZWN0LndpZHRoKCkpOwotICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmRM
aXRlcmFsKCIgeCAiKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTnVtYmVyKGltYWdl
RGF0YVJlY3QuaGVpZ2h0KCkpOwotCi0gICAgICAgIGNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UudG9TdHJpbmcoKSk7CisgICAgICAg
IGNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmlu
ZygiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzLiBSZXF1ZXN0ZWQgc2l6ZSB3
YXMgIiwgaW1hZ2VEYXRhUmVjdC53aWR0aCgpLCAiIHggIiwgaW1hZ2VEYXRhUmVjdC5oZWlnaHQo
KSkpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAJKHJldmlzaW9uIDI1
Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRp
ZXMoY29uc3QKICAgICBpZiAoY3VlLT52ZXJ0aWNhbCgpID09IGhvcml6b250YWxLZXl3b3JkKCkp
CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBwb3NpdGlv
bi5maXJzdCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICBlbHNlIGlmIChjdWUt
PnZlcnRpY2FsKCkgPT0gdmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKCkpCi0gICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBtYWtlU3RyaW5nKCJjYWxjKC0i
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgodmlkZW9TaXplLndpZHRoKCksIDIpLCAicHgg
LSAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoY3VlLT5nZXRDU1NTaXplKCksIDIpLCAi
cHgpIikpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwg
bWFrZVN0cmluZygiY2FsYygtIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHN0YXRpY19j
YXN0PGRvdWJsZT4odmlkZW9TaXplLndpZHRoKCkpLCAyKSwgInB4IC0gIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFdpZHRoKHN0YXRpY19jYXN0PGRvdWJsZT4oY3VlLT5nZXRDU1NTaXplKCkpLCAy
KSwgInB4KSIpKTsKIAogICAgIGRvdWJsZSBhdXRob3JGb250U2l6ZSA9IHN0ZDo6bWluKHZpZGVv
U2l6ZS53aWR0aCgpLCB2aWRlb1NpemUuaGVpZ2h0KCkpICogREVGQVVMVENBUFRJT05GT05UU0la
RVBFUkNFTlRBR0UgLyAxMDAuMDsKICAgICBkb3VibGUgbXVsdGlwbGllciA9IDEuMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCShyZXZpc2lv
biAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDE1ICsxMzMsNyBAQCBVUkwgQWRDbGlja0F0dHJpYnV0
aW9uOjp1cmwoKSBjb25zdAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gVVJM
KCk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJodHRwczovLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc291cmNlLnJlZ2lzdHJhYmxl
RG9tYWluLnN0cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoYWRDbGlja0F0dHJp
YnV0aW9uUGF0aFByZWZpeCk7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJzaW9u
LnZhbHVlKCkuZGF0YSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2NhbXBhaWduLmlkKTsKLQotICAgIFVSTCB1cmwgeyBVUkwoKSwgYnVpbGRl
ci50b1N0cmluZygpIH07CisgICAgVVJMIHVybCB7IFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwczov
LyIsIG1fc291cmNlLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCBhZENsaWNrQXR0cmlidXRp
b25QYXRoUHJlZml4LCBtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhLCAnLycsIG1fY2FtcGFpZ24u
aWQpIH07CiAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB1cmw7CiAKQEAg
LTE1MywxMiArMTQ1LDcgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6cmVmZXJyZXIoKSBjb25z
dAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJodHRwczovLyIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fZGVzdGluYXRpb24ucmVnaXN0cmFibGVEb21haW4uc3Ry
aW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7Ci0KLSAgICBVUkwgdXJsIHsgVVJMKCks
IGJ1aWxkZXIudG9TdHJpbmcoKSB9OworICAgIFVSTCB1cmwgeyBVUkwoKSwgbWFrZVN0cmluZygi
aHR0cHM6Ly8iLCBtX2Rlc3RpbmF0aW9uLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAnLycp
IH07CiAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgCkBA
IC0xNzIsMTQgKzE1OSw5IEBAIFVSTCBBZENsaWNrQXR0cmlidXRpb246OnVybEZvclRlc3Rpbmco
Y28KICAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiP2NvbnZlcnNpb249Iik7Ci0gICAgYnVpbGRlci5h
cHBlbmROdW1iZXIobV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSk7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCImY2FtcGFpZ249Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jYW1w
YWlnbi5pZCk7Ci0gICAgaWYgKGJhc2VVUkwuaGFzUXVlcnkoKSkgewotICAgICAgICBidWlsZGVy
LmFwcGVuZCgnJicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChiYXNlVVJMLnF1ZXJ5KCkpOwot
ICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiP2NvbnZlcnNpb249IiwgbV9jb252ZXJzaW9uLnZh
bHVlKCkuZGF0YSwgIiZjYW1wYWlnbj0iLCBtX2NhbXBhaWduLmlkKTsKKyAgICBpZiAoYmFzZVVS
TC5oYXNRdWVyeSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnJicsIGJhc2VVUkwucXVlcnko
KSk7CiAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCkBA
IC0xOTgsMjYgKzE4MCwxNiBAQCBib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6d2FzQ29udmVyc2lv
blNlCiBTdHJpbmcgQWRDbGlja0F0dHJpYnV0aW9uOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU291cmNl
OiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFpbi5zdHJp
bmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbkRlc3RpbmF0aW9uOiAiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZChtX2Rlc3RpbmF0aW9uLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygp
KTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQ2FtcGFpZ24gSUQ6ICIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJT
b3VyY2U6ICIsIG1fc291cmNlLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAiXG5EZXN0aW5h
dGlvbjogIiwgbV9kZXN0aW5hdGlvbi5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSwgIlxuQ2Ft
cGFpZ24gSUQ6ICIsIG1fY2FtcGFpZ24uaWQpOwogICAgIGlmIChtX2NvbnZlcnNpb24pIHsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbkNvbnZlcnNpb24gZGF0YTogIik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQ29udmVyc2lvbiBwcmlvcml0eTogIik7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1ZSgpLnByaW9yaXR5
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbkNvbnZlcnNpb24gZWFybGllc3Qg
dGltZSB0byBzZW5kOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuQ29udmVyc2lvbiBk
YXRhOiAiLCBtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhLCAiXG5Db252ZXJzaW9uIHByaW9yaXR5
OiAiLCBtX2NvbnZlcnNpb24udmFsdWUoKS5wcmlvcml0eSwgIlxuQ29udmVyc2lvbiBlYXJsaWVz
dCB0aW1lIHRvIHNlbmQ6ICIpOwogICAgICAgICBpZiAoIW1fZWFybGllc3RUaW1lVG9TZW5kKQog
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJOb3Qgc2V0Iik7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gKm1fZWFybGllc3RUaW1l
VG9TZW5kIC0gV2FsbFRpbWU6Om5vdygpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKHNl
Y29uZHNVbnRpbFNlbmQgPj0gMjRfaCAmJiBzZWNvbmRzVW50aWxTZW5kIDw9IDQ4X2gpID8gIldp
dGhpbiAyNC00OCBob3VycyIgOiAiT3V0c2lkZSAyNC00OCBob3VycyIpOwogICAgICAgICB9Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5Db252ZXJzaW9uIHJlcXVlc3Qgc2VudDog
Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCh3YXNDb252ZXJzaW9uU2VudCgpID8gInRydWUi
IDogImZhbHNlIikpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5Db252ZXJzaW9uIHJlcXVl
c3Qgc2VudDogIiwgKHdhc0NvbnZlcnNpb25TZW50KCkgPyAidHJ1ZSIgOiAiZmFsc2UiKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5ObyBjb252ZXJzaW9u
IGRhdGEuIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyNTM5
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyMSwxNCArNDIxLDExIEBAIHN0YXRpYyBib29sIGhhc0hhZFJl
Y2VudFVzZXJJbnRlcmFjdGlvbigKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0
cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiUmVnaXN0cmFibGUgZG9tYWluOiAiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7
CisgICAgYnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJhYmxlIGRvbWFpbjogIiwgcmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCksICdcbicpOwogCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGFw
cGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFj
dGlvbik7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7CisgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJywgIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAoaGFz
SGFkUmVjZW50VXNlckludGVyYWN0aW9uKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNl
Y29uZHNTaW5jZUVwb2NoKCkpKQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIndpdGhp
biAyNCBob3VycyIpOwogICAgIGVsc2UKQEAgLTQ2MCwxMCArNDU3LDcgQEAgU3RyaW5nIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKAogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwg
ImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1ByZXZhbGVudFJlc291cmNlKTsKICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZSIsIGlzVmVyeVByZXZhbGVudFJlc291cmNlKTsKLSAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBkYXRhUmVjb3Jkc1JlbW92
ZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGRhdGFSZWNvcmRzUmVtb3ZlZCk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoJ1xuJywgIiAgICBk
YXRhUmVjb3Jkc1JlbW92ZWQ6ICIsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgJ1xuJyk7CiAKICNpZiBF
TkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQogICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgImZv
bnRzRmFpbGVkVG9Mb2FkIiwgZm9udHNGYWlsZWRUb0xvYWQpOwpAQCAtNDczLDggKzQ2Nyw3IEBA
IFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygKICAgICBhcHBlbmRTY3Jl
ZW5BUElPcHRpb25TZXQoYnVpbGRlciwgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogICAgIGFw
cGVuZEhhc2hTZXQoYnVpbGRlciwgImNhbnZhc1RleHRXcml0dGVuIiwgY2FudmFzQWN0aXZpdHlS
ZWNvcmQudGV4dFdyaXR0ZW4pOwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImNhbnZhc1Jl
YWREYXRhIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiXG5cbiIpOwogI2VuZGlmCiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3Jp
dHkuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VJbnRlZ3JpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTcgKzIxMiwxMiBAQCBT
dHJpbmcgaW50ZWdyaXR5TWlzbWF0Y2hEZXNjcmlwdGlvbihjb25zCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwogCi0gICAgYnVpbGRlci5hcHBlbmQocmVzb3VyY2UudXJsKCkuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCIuIEZhaWxl
ZCBpbnRlZ3JpdHkgbWV0YWRhdGEgY2hlY2suICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJDb250
ZW50IGxlbmd0aDogIik7CisgICAgYnVpbGRlci5hcHBlbmQocmVzb3VyY2UudXJsKCkuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuIEZhaWxlZCBpbnRlZ3JpdHkgbWV0YWRhdGEg
Y2hlY2suIENvbnRlbnQgbGVuZ3RoOiAiKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIg
PSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihyZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CiAgICAgZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKG5v
IGNvbnRlbnQpIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoIiwgRXhwZWN0ZWQgY29udGVudCBsZW5n
dGg6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc291cmNlLnJlc3BvbnNlKCkuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCIsIEV4cGVjdGVkIG1l
dGFkYXRhOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChpbnRlZ3JpdHlNZXRhZGF0YSk7CisgICAg
YnVpbGRlci5hcHBlbmQoIiwgRXhwZWN0ZWQgY29udGVudCBsZW5ndGg6ICIsIHJlc291cmNlLnJl
c3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICIsIEV4cGVjdGVkIG1ldGFkYXRhOiAi
LCBpbnRlZ3JpdHlNZXRhZGF0YSk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgU3RyaW5nIEludGVy
c2VjdGlvbk9ic2VydmVyOjpyb290TWFyZ2luKAogICAgIFBoeXNpY2FsQm94U2lkZSBzaWRlc1s0
XSA9IHsgUGh5c2ljYWxCb3hTaWRlOjpUb3AsIFBoeXNpY2FsQm94U2lkZTo6UmlnaHQsIFBoeXNp
Y2FsQm94U2lkZTo6Qm90dG9tLCBQaHlzaWNhbEJveFNpZGU6OkxlZnQgfTsKICAgICBmb3IgKGF1
dG8gc2lkZSA6IHNpZGVzKSB7CiAgICAgICAgIGF1dG8mIGxlbmd0aCA9IG1fcm9vdE1hcmdpbi5h
dChzaWRlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobGVuZ3RoLmludFZh
bHVlKCkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChsZW5ndGguaW50VmFsdWUoKSk7
CiAgICAgICAgIGlmIChsZW5ndGgudHlwZSgpID09IFBlcmNlbnQpCiAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnJScpOwogICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDE1ICs3NCw4IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnQK
ICAgICAvLyB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBwZXJzaXN0ZW50IHN0YXRlLgogICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByb3RvY29sLCAiZmlsZSIpKQogICAgICAgICBy
ZXR1cm4gImZpbGVfXzAiX3M7Ci0gICAgCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHByb3RvY29sKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKEZp
bGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KHBvcnQudmFsdWVPcigwKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0
ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0
ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3J0LnZhbHVlT3IoMCkpKTsKIH0KIAogT3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29h
Lm1tCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291
cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBA
QCBzdGF0aWMgU3RyaW5nIGZvcm1hdEJ5dGVOdW1iZXIoc2l6ZV90IG51CiAgICAgaWYgKG51bWJl
ciA+PSAxMDQ4NTc2KQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkV2lkdGgobnVtYmVyIC8gMTA0ODU3Ni4sIDIpLCAiIE1CIik7CiAgICAgaWYgKG51bWJl
ciA+PSAxMDI0KQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkV2lkdGgobnVtYmVyIC8gMTAyNCwgMSksICIga0IiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG51bWJlciAvIDEwMjQuLCAxKSwgIiBr
QiIpOwogICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihudW1iZXIpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEwICs3
OCw4IEBAIHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldHNUb1N0cmluZyhjb25zdCAKIHsKICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbICIpOwot
ICAgIGZvciAoYXV0byYgb2Zmc2V0IDogc25hcE9mZnNldHMpIHsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRGaXhlZFdpZHRoTnVtYmVyKG9mZnNldC50b0Zsb2F0KCksIDEpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIG9mZnNldCA6IHNuYXBPZmZz
ZXRzKQorICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgo
b2Zmc2V0LnRvRmxvYXQoKSwgMSksICcgJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtOTAsMTMgKzg4LDggQEAgc3RhdGlj
IFN0cmluZyBzbmFwT2Zmc2V0UmFuZ2VzVG9TdHJpbmcoYwogewogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7Ci0gICAgZm9yIChhdXRv
JiByYW5nZSA6IHJhbmdlcykgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIocmFuZ2Uuc3RhcnQudG9GbG9hdCgpLCAx
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIocmFuZ2UuZW5kLnRvRmxvYXQoKSwgMSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSAiKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiByYW5n
ZSA6IHJhbmdlcykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkV2lkdGgocmFuZ2Uuc3RhcnQudG9GbG9hdCgpLCAxKSwgIiwgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFdpZHRoKHJhbmdlLmVuZC50b0Zsb2F0KCksIDEpLCAiKSAiKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnXScpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0x
MDQsMTAgKzk3LDEwIEBAIHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKGMK
IHN0YXRpYyBTdHJpbmcgc25hcFBvcnRPckFyZWFUb1N0cmluZyhjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0KQogewogICAgIHJldHVybiBtYWtlU3RyaW5nKCJ7eyIsCi0gICAgICAgIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRXaWR0aChyZWN0LngoKSwgMSksICIsICIsCi0gICAgICAgIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRXaWR0aChyZWN0LnkoKSwgMSksICJ9IHsiLAotICAgICAgICBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkV2lkdGgocmVjdC53aWR0aCgpLCAxKSwgIiwgIiwKLSAgICAgICAgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3QuaGVpZ2h0KCksIDEpLCAifX0iKTsKKyAgICAgICAg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKHJlY3QueCgpLnRvRG91YmxlKCksIDEpLCAiLCAi
LAorICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmVjdC55KCkudG9Eb3VibGUo
KSwgMSksICJ9IHsiLAorICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmVjdC53
aWR0aCgpLnRvRG91YmxlKCksIDEpLCAiLCAiLAorICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkV2lkdGgocmVjdC5oZWlnaHQoKS50b0RvdWJsZSgpLCAxKSwgIn19Iik7CiB9CiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAJKHJldmlzaW9uIDI1Mzk2NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDI1LDEwICsxMDI1LDggQEAgU3RyaW5nIERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNbaV0pOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUrIik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihhZGp1c3RlZEV4cG9uZW50KTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
YWRqdXN0ZWRFeHBvbmVudCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFkanVzdGVkRXhw
b25lbnQgPCAwID8gImUiIDogImUrIiwgYWRqdXN0ZWRFeHBvbmVudCk7CiAgICAgfQogICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MCwyMSAr
MzQwLDE1IEBAIFN0cmluZyBDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgZWxzZQogICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInJnYigiKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlZCgpKSk7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KHJlZCgpKSwgIiwgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZ3JlZW4oKSks
ICIsICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGJsdWUoKSkpOwogCi0gICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZ3JlZW4oKSkpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGJsdWUoKSkpOwogICAgIGlmIChjb2xvckhhc0Fs
cGhhKSB7CiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jc2VyaWFs
aXppbmctY3NzLXZhbHVlcwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAg
ICAgICAgIGludCBhbHBoYSA9IHRoaXMtPmFscGhhKCk7CiAgICAgICAgIGZsb2F0IHJvdW5kZWQg
PSByb3VuZChhbHBoYSAqIDEwMCAvIDI1NS4wZikgLyAxMDA7CiAgICAgICAgIGlmIChyb3VuZChy
b3VuZGVkICogMjU1KSAhPSBhbHBoYSkKICAgICAgICAgICAgIHJvdW5kZWQgPSByb3VuZChhbHBo
YSAqIDEwMDAgLyAyNTUuMGYpIC8gMTAwMDsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihyb3VuZGVkKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb3VuZGVkKSk7CiAgICAgfQogICAgICAgICAK
ICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NiwxNyArNTYsMTEgQEAgU3RyaW5nIEV4dGVuZGVkQ29sb3I6OmNzc1Rl
eHQoKSBjb25zdAogICAgICAgICByZXR1cm4gV1RGOjplbXB0eVN0cmluZygpOwogICAgIH0KIAot
ICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocmVkKCkpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihyZWQoKSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihn
cmVlbigpKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGJsdWUoKSkpOwog
Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihncmVlbigpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgIGlmICghV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFs
cGhhKCksIDEuMGYpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiIC8gIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihhbHBoYSgpKSk7CiAKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKGJsdWUoKSk7Ci0gICAgaWYgKCFXVEY6OmFyZUVzc2VudGlhbGx5RXF1
YWwoYWxwaGEoKSwgMS4wZikpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLyAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihhbHBoYSgpKTsK
LSAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
NywxMSArNTc3LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvdmVyYWdlUgog
U3RyaW5nIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSkKIHsKICAgICAvLyB8IGlzIG5vdCBhIHZhbGlkIGlkZW50aWZp
ZXIgY2hhcmFjdGVyIGluIENTUywgc28gdGhpcyBjYW4gbmV2ZXIgY29uZmxpY3Qgd2l0aCBhIGtl
eWZyYW1lIGlkZW50aWZpZXIuCi0gICAgU3RyaW5nQnVpbGRlciBpZDsKLSAgICBpZC5hcHBlbmRM
aXRlcmFsKCItfHRyYW5zaXRpb24iKTsKLSAgICBpZC5hcHBlbmROdW1iZXIoc3RhdGljX2Nhc3Q8
aW50Pihwcm9wZXJ0eSkpOwotICAgIGlkLmFwcGVuZCgnLScpOwotICAgIHJldHVybiBpZC50b1N0
cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCItfHRyYW5zaXRpb24iLCBzdGF0aWNfY2Fz
dDxpbnQ+KHByb3BlcnR5KSwgJy0nKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyOjpzdXNwZW5k
QW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjUz
OTY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsMTIgKzc2NSw3IEBAIFJlZjxQbGF0Zm9ybUNB
TGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmUKICAgICBsYXllci0+c2V0RWRnZUFudGlhbGlhc2lu
Z01hc2soMCk7CiAgICAgbGF5ZXItPnNldE9wYXF1ZShtX3RpbGVzQXJlT3BhcXVlKTsKIAotICAg
IFN0cmluZ0J1aWxkZXIgbmFtZUJ1aWxkZXI7Ci0gICAgbmFtZUJ1aWxkZXIuYXBwZW5kKCJ0aWxl
IGF0ICIpOwotICAgIG5hbWVCdWlsZGVyLmFwcGVuZE51bWJlcih0aWxlUmVjdC5sb2NhdGlvbigp
LngoKSk7Ci0gICAgbmFtZUJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgbmFtZUJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKHRpbGVSZWN0LmxvY2F0aW9uKCkueSgpKTsKLSAgICBsYXllci0+c2V0TmFtZShu
YW1lQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBsYXllci0+c2V0TmFtZShtYWtlU3RyaW5nKCJ0
aWxlIGF0ICIsIHRpbGVSZWN0LmxvY2F0aW9uKCkueCgpLCAnLCcsIHRpbGVSZWN0LmxvY2F0aW9u
KCkueSgpKSk7CiAKICAgICBmbG9hdCB0ZW1wb3JhcnlTY2FsZUZhY3RvciA9IG93bmluZ0dyYXBo
aWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdU
aWxlcyhtX3RpbGVDYWNoZUxheWVyKTsKICAgICBtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxl
RmFjdG9yIHw9IHRlbXBvcmFyeVNjYWxlRmFjdG9yICE9IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwNCwzNyArNzA0LDM3IEBAIHN0YXRpYyB2b2lkIHByaW50SW5kZW50KFN0cmluZ0J1aWxk
ZXImIGIKIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IGNvbnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSkKIHsKICAgICBidWlsZGVyLmFwcGVuZCgn
WycpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0x
MSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0
cmFuc2Zvcm0ubTExKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMTIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMikpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcih0cmFuc2Zvcm0ubTEzKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcp
OwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0xNCk7
CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFu
c2Zvcm0ubTE0KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTIxKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIodHJhbnNmb3JtLm0yMik7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIyKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
LSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMjMpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0yMykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTI0KTsKKyAgICBidWlsZGVyLmFwcGVuZChG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgiOyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KHRyYW5zZm9ybS5tMzEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0g
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTMyKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9y
bS5tMzIpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0zMyk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRy
YW5zZm9ybS5tMzQpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0zNCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCI7ICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm00MSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTQxKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tNDIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MikpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFu
c2Zvcm0ubTQzKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tNDMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1
aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm00NCk7CisgICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQ0
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKIH0KIApAQCAtNzg1LDI3ICs3ODUsMjcgQEAg
c3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidQogICAgIGJ1aWxkZXIuYXBw
ZW5kKCIoIik7CiAgICAgYnVpbGRlci5hcHBlbmQobGF5ZXJUeXBlTmFtZSk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoIiBbIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihs
YXllclBvc2l0aW9uLngoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLngoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllclBvc2l0aW9u
LnkoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bihsYXllclBvc2l0aW9uLnkoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVp
bGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllclBvc2l0aW9uLnooKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0
aW9uLnooKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJdIFsiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGxheWVyQm91bmRzLngoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy54KCkpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIobGF5ZXJCb3VuZHMueSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQm91bmRzLnkoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckJvdW5k
cy53aWR0aCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKGxheWVyQm91bmRzLndpZHRoKCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJCb3VuZHMuaGVpZ2h0
KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
bGF5ZXJCb3VuZHMuaGVpZ2h0KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiXSBbIik7Ci0gICAg
YnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckFuY2hvclBvaW50LngoKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXll
ckFuY2hvclBvaW50LngoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckFuY2hvclBvaW50LnkoKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckFuY2hv
clBvaW50LnkoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckFuY2hvclBvaW50LnooKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckFuY2hvclBvaW50
LnooKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJdIHN1cGVybGF5ZXI9Iik7Ci0gICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxheWVy
LT5zdXBlcmxheWVyKCkpKTsKKyAgICBidWlsZGVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4obGF5ZXItPnN1cGVybGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQg
bmFtZSBpZiBuZWVkZWQKICAgICBTdHJpbmcgbGF5ZXJOYW1lID0gQ0FDRkxheWVyR2V0TmFtZShs
YXllci0+cGxhdGZvcm1MYXllcigpKTsKQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMgdm9pZCBw
cmludExheWVyKFN0cmluZ0J1aWxkZXImIGJ1CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OwogICAgICAgICBwcmludEluZGVudChidWlsZGVyLCBpbmRlbnQgKyAxKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIihib3JkZXJXaWR0aCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihib3JkZXJXaWR0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oYm9yZGVyV2lkdGgpKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyknKTsKICAgICB9CiAKQEAgLTg1MSw3ICs4NTEsNyBAQCBzdGF0aWMgdm9p
ZCBwcmludExheWVyKFN0cmluZ0J1aWxkZXImIGJ1CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwogICAgICAgICBwcmludEluZGVudChidWlsZGVyLCBpbmRlbnQgKyAxKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIihvcGFjaXR5ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKGxheWVyT3BhY2l0eSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJPcGFjaXR5KSk7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgfQogCkBAIC04ODIsOSArODgyLDkgQEAgc3RhdGljIHZv
aWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgICAgICAgICBwcmludEluZGVudChidWlsZGVyLCBpbmRlbnQgKyAxKTsK
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoY29udGVudHMgKGltYWdlIFsiKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKENHSW1hZ2VHZXRXaWR0aChpbWFnZUNvbnRlbnRz
KSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250
ZW50cykpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoQ0dJbWFnZUdldEhlaWdodChpbWFnZUNvbnRlbnRzKSk7
CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXSkpIik7CiAgICAgICAgIH0KIApAQCAtODk0
LDkgKzg5NCw5IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnUKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgICAgICAgICAgcHJpbnRJbmRlbnQo
YnVpbGRlciwgaW5kZW50ICsgMSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGNvbnRl
bnRzIChiYWNraW5nLXN0b3JlIFsiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KENHSW1hZ2VHZXRXaWR0aChpbWFnZUNvbnRlbnRzKSk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250ZW50cykpOwogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoQ0dJ
bWFnZUdldEhlaWdodChpbWFnZUNvbnRlbnRzKSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiXSkpIik7CiAgICAgICAgIH0KICAgICB9CkBAIC05MjcsMTUgKzkyNywxNSBAQCBTdHJpbmcg
UGxhdGZvcm1DQUxheWVyV2luOjpsYXllclRyZWVBc1N0CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQoIlxuXG4qKiBSZW5kZXIgdHJlZSBhdCB0aW1lICIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoTW9ub3RvbmljVGltZTo6
bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oTW9ub3RvbmljVGltZTo6bm93KCkuc2Vj
b25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiIChib3Vu
ZHMgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihyb290Qm91bmRz
Lm9yaWdpbi54KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHJvb3RCb3VuZHMub3JpZ2luLngpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsK
LSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJvb3RCb3VuZHMub3JpZ2lu
LnkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
cm9vdEJvdW5kcy5vcmlnaW4ueSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVp
bGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihyb290Qm91bmRzLnNpemUud2lkdGgpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm9vdEJv
dW5kcy5zaXplLndpZHRoKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ3gnKTsKLSAgICBidWlsZGVy
LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJvb3RCb3VuZHMuc2l6ZS5oZWlnaHQpOworICAg
IGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm9vdEJvdW5k
cy5zaXplLmhlaWdodCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIpICoqXG5cbiIpOwogCiAgICAg
Ly8gUHJpbnQgbGF5ZXIgdHJlZSBmcm9tIHRoZSByb290CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0NiwxMiArNjQ2LDcgQEAgU3RyaW5nIGJ1aWxkVmFyaWF0aW9uU2V0dGluZ3MoRlRfRmFj
ZSBmYQogICAgIGZvciAoYXV0byYgdmFyaWF0aW9uIDogdmFyaWF0aW9uc1RvQmVBcHBsaWVkKSB7
CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnLCcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YXJpYXRpb24ua2V5WzBdKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQodmFyaWF0aW9uLmtleVsxXSk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHZhcmlhdGlvbi5rZXlbMl0pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YXJpYXRp
b24ua2V5WzNdKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJz0nKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih2YXJpYXRpb24udmFsdWUpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCh2YXJpYXRpb24ua2V5WzBdLCB2YXJpYXRpb24ua2V5WzFdLCB2YXJpYXRp
b24ua2V5WzJdLCB2YXJpYXRpb24ua2V5WzNdLCAnPScsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odmFyaWF0aW9uLnZhbHVlKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCShy
ZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1
MCw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU0KICAgICAgICAg
bV9idWZmZXIuYXBwZW5kKCJBdWRpbyBUcmFjayBJRDogIik7CiAgICAgZWxzZQogICAgICAgICBt
X2J1ZmZlci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAiKTsKLSAgICBtX2J1ZmZlci5hcHBlbmQo
dHJhY2suaWQoKSk7Ci0gICAgbV9idWZmZXIuYXBwZW5kKCIgQ291bnRlcjogIik7Ci0gICAgbV9i
dWZmZXIuYXBwZW5kTnVtYmVyKCsrbV9jb3VudGVyKTsKLSAgICBtX2J1ZmZlci5hcHBlbmQoIlxy
XG4tLS0tLS0tLS1cclxuIik7CisgICAgbV9idWZmZXIuYXBwZW5kKHRyYWNrLmlkKCksICIgQ291
bnRlcjogIiwgKyttX2NvdW50ZXIsICJcclxuLS0tLS0tLS0tXHJcbiIpOwogfQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YSgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAko
cmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94
eVNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHZvaWQg
YXBwZW5kUHJveHlTZXJ2ZXJTdHJpbmcoU3RyaQogCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsK
ICAgICBBU1NFUlQocHJveHlTZXJ2ZXIucG9ydCgpICE9IC0xKTsKLSAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihwcm94eVNlcnZlci5wb3J0KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHByb3h5U2Vy
dmVyLnBvcnQoKSk7CiB9CiAKIFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2
ZXI+JiBwcm94eVNlcnZlcnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2OCwxNyAr
NzY4LDEwIEBAIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImJvZHkiKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuLT5pc1NoYWRvd1Jvb3QoKSkg
ewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3snKTsKLSAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGdldFRhZ05hbWUobikpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ30nKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoImNoaWxkICIpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmROdW1i
ZXIobi0+Y29tcHV0ZU5vZGVJbmRleCgpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiIHsiKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGdldFRhZ05hbWUo
bikpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChuLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd7JywgZ2V0VGFnTmFtZShuKSwgJ30nKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJjaGlsZCAiLCBuLT5jb21wdXRlTm9kZUluZGV4
KCksICIgeyIsIGdldFRhZ05hbWUobiksICd9Jyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImRvY3VtZW50Iik7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQogICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIobnVtYmVyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtYmVyLT52YWx1ZSgpKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTM5
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NywxNiArNTcsMTIgQEAgc3RhdGljIHZvaWQgYXBwZW5kRmxhZyhTdHJp
bmdCdWlsZGVyJiBzdAogCiBzdGF0aWMgdm9pZCBhcHBlbmROdW1iZXIoU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlciwgZmxvYXQgbnVtYmVyKQogewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIobnVtYmVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
ICcpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obnVtYmVyKSwgJyAnKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kUG9pbnQoU3RyaW5n
QnVpbGRlciYgc3RyaW5nQnVpbGRlciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC54KCkpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihwb2ludC55KCkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcg
Jyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbihwb2ludC54KCkpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9p
bnQueSgpKSwgJyAnKTsKIH0KIAogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bW92ZVRvKGNv
bnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHJldmlzaW9u
IDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNDAgKzU5LDE2IEBAIFN0cmluZyBidWlsZFN0cmluZ0Zyb21QYXRo
KGNvbnN0IFBhdGgmIHAKICAgICAgICAgcGF0aC5hcHBseShbJmJ1aWxkZXJdIChjb25zdCBQYXRo
RWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50OgotICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdNJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgpKTsKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVs
ZW1lbnQucG9pbnRzWzBdLnkoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ00n
LCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6
OkFkZExpbmVUb1BvaW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdMJyk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgp
KTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ0wnLCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxl
bWVudC5wb2ludHNbMF0ueSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1YWRDdXJ2ZVRvUG9pbnQ6Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ1EnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC5wb2ludHNbMF0ueSgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzFdLngo
KSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS55KCkpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdRJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAnICcsIGVs
ZW1lbnQucG9pbnRzWzBdLnkoKSwgJywnLCBlbGVtZW50LnBvaW50c1sxXS54KCksICcgJywgZWxl
bWVudC5wb2ludHNbMV0ueSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnQycpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBv
aW50c1swXS55KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMV0ueCgpKTsK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihlbGVtZW50LnBvaW50c1syXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5w
b2ludHNbMl0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnQycsIGVsZW1l
bnQucG9pbnRzWzBdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1swXS55KCksICcsJywgZWxlbWVu
dC5wb2ludHNbMV0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzFdLnkoKSwgJywnLCBlbGVtZW50
LnBvaW50c1syXS54KCksICcgJywgZWxlbWVudC5wb2ludHNbMl0ueSgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkNsb3NlU3Vi
cGF0aDoKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnWicpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2ludExpc3QuaAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvaW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIocG9pbnQtPngoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcp
OwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC0+
eSgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24ocG9pbnQtPngoKSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bihwb2ludC0+eSgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgJKHJldmlz
aW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IGlmIChidWlsZGVyLmxlbmd0aCgpICYmIGJ1aWxkZXJbYnVpbGRlci5sZW5ndGgoKSAtIDFdICE9
ICcoJykKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobnVtYmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihudW1iZXIpKTsKICAgICAgICAgYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXJzKGJ1aWxkZXIsIG51bWJlcnMuLi4pOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRy
YWl0cy5oCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTEgKzEzOSwxMSBA
QCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD4gewogICAgIH0KICAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IEZsb2F0UG9pbnQmIHR5cGUpCiAgICAgewotICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIodHlwZS54KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUueSgpKTsKLSAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
CisgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHR5cGUueCgpKSwK
KyAgICAgICAgICAgICcgJywKKyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHlwZS55KCkpCisgICAgICAgICk7CiAgICAgfQogfTsKIApAQCAtMTY2LDE1ICsxNjYs
MTUgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4gewogICAgIH0KICAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IEZsb2F0UmVjdCYgdHlwZSkKICAgICB7Ci0gICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcih0eXBlLngoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS55KCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKHR5cGUud2lkdGgoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS5oZWlnaHQo
KSk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0
eXBlLngoKSksCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHR5cGUueSgpKSwKKyAgICAgICAgICAgICcgJywKKyAgICAgICAgICAg
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS53aWR0aCgpKSwKKyAgICAgICAg
ICAgICcgJywKKyAgICAgICAgICAgIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlw
ZS5oZWlnaHQoKSkKKyAgICAgICAgKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODYsMTUgKzE2ODYsMTcg
QEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmR1bXBNYXJrZQogICAgIFN0cmluZ0J1
aWxkZXIgcmVjdFN0cmluZzsKICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIm1hcmtlciBy
ZWN0czogIik7CiAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVjdHMpIHsKLSAgICAgICAg
cmVjdFN0cmluZy5hcHBlbmQoJygnKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihyZWN0LngoKSk7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihy
ZWN0LnkoKSk7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAg
ICAgcmVjdFN0cmluZy5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihyZWN0LndpZHRoKCkpOwot
ICAgICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJp
bmcuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIHJl
Y3RTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiKSAiKTsKKyAgICAgICAgcmVjdFN0cmluZy5hcHBlbmQo
CisgICAgICAgICAgICAnKCcsCisgICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHJlY3QueCgpKSwKKyAgICAgICAgICAgICIsICIsCisgICAgICAgICAgICBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlY3QueSgpKSwKKyAgICAgICAgICAgICIsICIsCisg
ICAgICAgICAgICBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlY3Qud2lkdGgoKSks
CisgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihyZWN0LmhlaWdodCgpKSwKKyAgICAgICAgICAgICIpICIKKyAgICAgICAgKTsKICAg
ICB9CiAgICAgcmV0dXJuIHJlY3RTdHJpbmcudG9TdHJpbmcoKTsKIH0KQEAgLTIyMjgsOSArMjIz
MCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKEpTQzo6SlMKICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFibGUoKSkgewogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmNFeGVjdXRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgU3RyaW5nIGluZmVycmVkTmFtZSA9IGZ1bmNF
eGVjdXRhYmxlLT5lY21hTmFtZSgpLnN0cmluZygpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiZnVuY3Rpb24gXCIiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChpbmZlcnJlZE5hbWUp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKCciJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoImZ1
bmN0aW9uIFwiIiwgaW5mZXJyZWROYW1lLCAnIicpOwogICAgIH0gZWxzZSBpZiAoZXhlY3V0YWJs
ZS0+aXNFdmFsRXhlY3V0YWJsZSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZXZh
bCIpOwogICAgIGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUo
KSkKQEAgLTIyNDAsMTUgKzIyNDAsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0
YShKU0M6OkpTCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyAiKTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHN0
YXJ0TGluZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnOicpOwotICAgIHJlc3VsdC5hcHBlbmROdW1i
ZXIoc3RhcnRDb2x1bW4pOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgLSAiKTsKLSAgICBy
ZXN1bHQuYXBwZW5kTnVtYmVyKGVuZExpbmUpOwotICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAg
ICByZXN1bHQuYXBwZW5kTnVtYmVyKGVuZENvbHVtbik7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiB9Iik7CisgICAgcmVzdWx0LmFwcGVuZCgiIHsgIiwgc3RhcnRMaW5lLCAnOicsIHN0YXJ0
Q29sdW1uLCAiIC0gIiwgZW5kTGluZSwgJzonLCBlbmRDb2x1bW4sICIgfSIpOwogCiAgICAgcmV0
dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQpAQCAtMzQzOCwyNCArMzQzMCwxNCBAQCBFeGNlcHRp
b25PcjxTdHJpbmc+IEludGVybmFsczo6Z2V0Q3VycmVuCiAgICAgQ3Vyc29yIGN1cnNvciA9IGRv
Y3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5jdXJyZW50TW91c2VDdXJzb3IoKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ0eXBl
PSIpOwotICAgIHJlc3VsdC5hcHBlbmQoY3Vyc29yVHlwZVRvU3RyaW5nKGN1cnNvci50eXBlKCkp
KTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGhvdFNwb3Q9Iik7Ci0gICAgcmVzdWx0LmFw
cGVuZE51bWJlcihjdXJzb3IuaG90U3BvdCgpLngoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnLCcp
OwotICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoY3Vyc29yLmhvdFNwb3QoKS55KCkpOworICAgIHJl
c3VsdC5hcHBlbmQoInR5cGU9IiwgY3Vyc29yVHlwZVRvU3RyaW5nKGN1cnNvci50eXBlKCkpLCAi
IGhvdFNwb3Q9IiwgY3Vyc29yLmhvdFNwb3QoKS54KCksICcsJywgY3Vyc29yLmhvdFNwb3QoKS55
KCkpOwogICAgIGlmIChjdXJzb3IuaW1hZ2UoKSkgewogICAgICAgICBGbG9hdFNpemUgc2l6ZSA9
IGN1cnNvci5pbWFnZSgpLT5zaXplKCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIg
aW1hZ2U9Iik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihzaXpl
LndpZHRoKCkpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCd4Jyk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihzaXplLmhlaWdodCgpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgiIGltYWdlPSIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oc2l6ZS53
aWR0aCgpKSwgJ3gnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHNpemUuaGVpZ2h0
KCkpKTsKICAgICB9CiAjaWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKLSAgICBpZiAoY3Vy
c29yLmltYWdlU2NhbGVGYWN0b3IoKSAhPSAxKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCIgc2NhbGU9Iik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpLCA4KTsKLSAgICB9CisgICAgaWYgKGN1cnNvci5p
bWFnZVNjYWxlRmFjdG9yKCkgIT0gMSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiIHNjYWxlPSIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oY3Vyc29yLmltYWdlU2NhbGVGYWN0b3Io
KSwgOCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogI2Vsc2UKQEAg
LTQzNTMsNyArNDMzNSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE9mZnNldHMoU3RyaW5nQnVpbGRl
ciYKICAgICAgICAgZWxzZQogICAgICAgICAgICAganVzdFN0YXJ0aW5nID0gZmFsc2U7CiAKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoY29vcmRpbmF0ZS50b1Vuc2lnbmVkKCkpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChjb29yZGluYXRlLnRvVW5zaWduZWQoKSk7CiAgICAgfQogICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIH0iKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAJKHJldmlzaW9uIDI1Mzk2NykK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODgsMTcgKzg4LDcgQEAgdm9pZCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6
OmRpZE1vdmVUb1BhZwogCiB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdl
LmFwcGVuZExpdGVyYWwoIk1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QgZGlydHlSZWN0
ICgiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3QueCgpKTsKLSAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZGlydHlS
ZWN0LnkoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIG1lc3NhZ2Uu
YXBwZW5kTnVtYmVyKGRpcnR5UmVjdC53aWR0aCgpKTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVy
YWwoIiwgIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZGlydHlSZWN0LmhlaWdodCgpKTsK
LSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIikiKTsKLSAgICBvdmVybGF5LnBhZ2UoKS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3Ro
ZXIsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UudG9TdHJpbmcoKSk7CisgICAgb3Zlcmxh
eS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtYWtlU3RyaW5nKCJNb2NrUGFn
ZU92ZXJsYXlDbGllbnQ6OmRyYXdSZWN0IGRpcnR5UmVjdCAoIiwgZGlydHlSZWN0LngoKSwgIiwg
IiwgZGlydHlSZWN0LnkoKSwgIiwgIiwgZGlydHlSZWN0LndpZHRoKCksICIsICIsIGRpcnR5UmVj
dC5oZWlnaHQoKSwgIikiKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CiAKQEAgLTExNywxNCArMTA3LDcgQEAgdm9pZCBNb2NrUGFnZU92ZXJs
YXlDbGllbnQ6OmRyYXdSZWN0KFBhZwogCiBib29sIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6bW91
c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRM
aXRlcmFsKCJNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZlbnQgbG9jYXRpb24gKCIpOwot
ICAgIG1lc3NhZ2UuYXBwZW5kTnVtYmVyKGV2ZW50LnBvc2l0aW9uKCkueCgpKTsKLSAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZXZlbnQu
cG9zaXRpb24oKS55KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiKSIpOwotICAgIG92
ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZS50b1N0cmlu
ZygpKTsKLQorICAgIG92ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpEZWJ1Zywg
bWFrZVN0cmluZygiTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojptb3VzZUV2ZW50IGxvY2F0aW9uICgi
LCBldmVudC5wb3NpdGlvbigpLngoKSwgIiwgIiwgZXZlbnQucG9zaXRpb24oKS55KCksICIpIikp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEVy
cm9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAJ
KHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCwxMyArNzgsNyBAQCB2b2lkIFhNTEVycm9yczo6aGFuZGxlRXJy
b3IoRXJyb3JUeXBlIHR5CiB2b2lkIFhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKGNvbnN0
IFN0cmluZyYgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9uIHBvc2l0aW9uLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKQogewogICAgIC8vIDx0eXBlU3RyaW5nPiBvbiBsaW5lIDxsaW5lTnVtYmVyPiBhdCBj
b2x1bW4gPGNvbHVtbk51bWJlcj46IDxtZXNzYWdlPgotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBl
bmQodHlwZVN0cmluZyk7Ci0gICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIiBvbiBs
aW5lICIpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmROdW1iZXIocG9zaXRpb24ubV9saW5l
Lm9uZUJhc2VkSW50KCkpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCIgYXQg
Y29sdW1uICIpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmROdW1iZXIocG9zaXRpb24ubV9j
b2x1bW4ub25lQmFzZWRJbnQoKSk7Ci0gICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwo
IjogIik7Ci0gICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKyAgICBtX2Vycm9y
TWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJpbmcsICIgb24gbGluZSAiLCBwb3NpdGlvbi5tX2xpbmUu
b25lQmFzZWRJbnQoKSwgIiBhdCBjb2x1bW4gIiwgcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJ
bnQoKSwgIjogIiwgbWVzc2FnZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNy
ZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZXMpCkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmNwcAkocmV2aXNp
b24gMjUzOTY3KQorKysgU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbG9uZyBTZXNzaW9uSG9zdDo6c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoYwogICAgIG1fY29tbWFuZFJlcXVlc3RzLmFkZChzZXF1ZW5jZUlELCBXVEZNb3ZlKHJl
c3BvbnNlSGFuZGxlcikpOwogICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7CiAgICAg
bWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie1wiaWRcIjoiKTsKLSAgICBtZXNzYWdlQnVp
bGRlci5hcHBlbmROdW1iZXIoc2VxdWVuY2VJRCk7CisgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5k
KHNlcXVlbmNlSUQpOwogICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcIm1ldGhv
ZFwiOlwiQXV0b21hdGlvbi4iKTsKICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29tbWFuZCk7
CiAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCciJyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjUzOTY3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNiBAQAorMjAxOS0xMi0zMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIG51bWVyaWMgYXBwZW5kIGZ1bmN0aW9ucyBmcm9tIFN0cmluZ0J1aWxk
ZXIgbm93IHRoYXQgYXBwZW5kIGNhbiBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIHRoZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTY3MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YXNKU09OIGNvbnN0KToKKyAgICAg
ICAgKiBTaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdh
bWVwYWREYXRhOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVt
b3J5U2FtcGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OmFwcGVu
ZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6bG9n
Z2luZ1N0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpidWlsZEhUVFBIZWFkZXJzKToKKwogMjAxOS0xMi0zMSAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCByZW1vdGUgbWVkaWEg
cmVzb3VyY2UgbG9hZGVyIGZvciB0aGUgR1BVIHByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2Vy
LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDEwICsy
NjAsNyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5nCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlVuY29udmVydGVkIEFkIENsaWNrIEF0dHJpYnV0
aW9uczpcbiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJXZWJDb3JlOjpBZENsaWNrQXR0cmli
dXRpb24gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKCsrdW5jb252ZXJ0ZWRBdHRy
aWJ1dGlvbk51bWJlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlvbi50b1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIldlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiAiLCArK3VuY29udmVydGVkQXR0cmli
dXRpb25OdW1iZXIsICdcbicsIGF0dHJpYnV0aW9uLnRvU3RyaW5nKCkpOwogfQogCiAgICAgdW5z
aWduZWQgY29udmVydGVkQXR0cmlidXRpb25OdW1iZXIgPSAwOwpAQCAtMjc0LDEwICsyNzEsNyBA
QCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5nCiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6XG4i
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uICIp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigrK2NvbnZlcnRlZEF0dHJpYnV0aW9uTnVt
YmVyICsgdW5jb252ZXJ0ZWRBdHRyaWJ1dGlvbk51bWJlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlvbi50b1N0cmluZygp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIldlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiAi
LCArK2NvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyICsgdW5jb252ZXJ0ZWRBdHRyaWJ1dGlvbk51
bWJlciwgJ1xuJywgYXR0cmlidXRpb24udG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYnVpbGRlci50b1N0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAkocmV2aXNpb24gMjUz
OTY3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5OCw3
ICsxMTk4LDcgQEAgc3RhdGljIFN0cmluZyBidWlsZExpc3QoY29uc3QgV1RGOjpJdGVyYQogICAg
IGZvciAoYXV0byBkb21haW5JRCA6IHZhbHVlcykgewogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihkb21haW5JRCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGRvbWFpbklEKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAg
LTEyNDgsNyArMTI0OCw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MKICAgICBmb3IgKGF1dG8gdmFsdWUgOiByZXN1bHRzLmtleXMoKSkgewogICAgICAgICBpZiAo
IWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiAKICAgICBhdXRvIGRvbWFpbklEc09mSW50ZXJlc3Qg
PSBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0yNTA2LDE0ICsyNTA2LDExIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUmVnaXN0cmFibGUgZG9tYWluOiAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChkb21haW4pOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIGRvbWFpbiwgJ1xuJyk7CiAgICAg
CiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhh
ZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
LmdldENvbHVtbkludChIYWRVc2VySW50ZXJhY3Rpb25JbmRleCkpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb246ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG4gICAgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbjogIik7CiAgICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRlcmFj
dGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENv
bHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQogICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIndpdGhpbiAyNCBob3VycyIpOwogICAgIGVsc2UKQEAg
LTI1NDYsMTAgKzI1NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1f
Z2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChJc1ByZXZh
bGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAg
ICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChEYXRhUmVjb3Jk
c1JlbW92ZWRJbmRleCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJcbiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCks
ICdcbicpOwogCiAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NzksMTYgKzU3OSwxNiBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUo
KQogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgie31cbl0sXG4iKTsKICAgICAg
ICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlwidG90YWxzXCI6IHtcbiIpOwogICAgICAg
ICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXCJjYXBhY2l0eVwiOiAiKTsKLSAgICAgICAg
ICAgIGVwaWxvZ3VlLmFwcGVuZE51bWJlcihjYXBhY2l0eSk7CisgICAgICAgICAgICBlcGlsb2d1
ZS5hcHBlbmQoY2FwYWNpdHkpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgi
LFxuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJcImNvdW50XCI6ICIp
OwotICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTnVtYmVyKHRvdGFscy5jb3VudCk7CisgICAg
ICAgICAgICBlcGlsb2d1ZS5hcHBlbmQodG90YWxzLmNvdW50KTsKICAgICAgICAgICAgIGVwaWxv
Z3VlLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0
ZXJhbCgiXCJib2R5U2l6ZVwiOiAiKTsKLSAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZE51bWJl
cih0b3RhbHMuYm9keVNpemUpOworICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKHRvdGFscy5i
b2R5U2l6ZSk7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAg
ICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlwiYXZlcmFnZVdvcnRoXCI6ICIpOwot
ICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodG90YWxzLmNv
dW50ID8gdG90YWxzLndvcnRoIC8gdG90YWxzLmNvdW50IDogMCk7CisgICAgICAgICAgICBlcGls
b2d1ZS5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0b3RhbHMuY291bnQg
PyB0b3RhbHMud29ydGggLyB0b3RhbHMuY291bnQgOiAwKSk7CiAgICAgICAgICAgICBlcGlsb2d1
ZS5hcHBlbmRMaXRlcmFsKCJcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJh
bCgifVxufVxuIik7CiAgICAgICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGVwaWxvZ3VlLnRvU3Ry
aW5nKCkudXRmOCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsMTYgKzIxNiwxNiBAQCB2b2lkIEVudHJ5Ojphc0pTT04o
U3RyaW5nQnVpbGRlciYganNvbiwgCiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKG1f
a2V5Lmhhc2hBc1N0cmluZygpKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJib2R5U2l6ZVwiOiAiKTsKLSAgICBqc29uLmFwcGVuZE51
bWJlcihpbmZvLmJvZHlTaXplKTsKKyAgICBqc29uLmFwcGVuZChpbmZvLmJvZHlTaXplKTsKICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJ3
b3J0aFwiOiAiKTsKLSAgICBqc29uLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGluZm8ud29y
dGgpOworICAgIGpzb24uYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oaW5m
by53b3J0aCkpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBl
bmRMaXRlcmFsKCJcInBhcnRpdGlvblwiOiAiKTsKICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05T
dHJpbmcobV9rZXkucGFydGl0aW9uKCkpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7
CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInRpbWVzdGFtcFwiOiAiKTsKLSAgICBqc29uLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fdGltZVN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCku
bWlsbGlzZWNvbmRzKCkpOworICAgIGpzb24uYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24obV90aW1lU3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkp
OwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFs
KCJcIlVSTFwiOiAiKTsKICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcobV9yZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBFbnRyeTo6YXNKU09O
KFN0cmluZ0J1aWxkZXImIGpzb24sIAogICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhp
bmZvLmJvZHlIYXNoKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiXCJib2R5U2hhcmVDb3VudFwiOiAiKTsKLSAgICBqc29uLmFwcGVuZE51
bWJlcihpbmZvLmJvZHlTaGFyZUNvdW50KTsKKyAgICBqc29uLmFwcGVuZChpbmZvLmJvZHlTaGFy
ZUNvdW50KTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5k
TGl0ZXJhbCgiXCJoZWFkZXJzXCI6IHtcbiIpOwogICAgIGJvb2wgZmlyc3RIZWFkZXIgPSB0cnVl
OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAJKHJldmlz
aW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTEgKzE3Miw5IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxl
cjo6YXBwZW5kQ3VycmVudE1lbW8KICAgICBpZiAoIW1lbW9yeVN0YXRzLnZhbHVlcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgc3RhdFN0cmluZy5hcHBlbmQoc2VwYXJhdG9yKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtZW1vcnlTdGF0cy52YWx1ZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kKCdcbicpOwotICAgICAgICAgICAgc3RhdFN0cmlu
Zy5hcHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kKG1lbW9y
eVN0YXRzLmtleXNbaV0pOworICAgICAgICAgICAgc3RhdFN0cmluZy5hcHBlbmQoJ1xuJywgc2Vw
YXJhdG9yLCBtZW1vcnlTdGF0cy5rZXlzW2ldKTsKICAgICAgICAgICAgIGFwcGVuZFNwYWNlcyhz
dGF0U3RyaW5nLCAzNSAtIG1lbW9yeVN0YXRzLmtleXNbaV0ubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgc3RhdFN0cmluZy5hcHBlbmROdW1iZXIobWVtb3J5U3RhdHMudmFsdWVzW2ldKTsKKyAgICAg
ICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kKG1lbW9yeVN0YXRzLnZhbHVlc1tpXSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgc3RhdFN0cmluZy5hcHBlbmQoJ1xuJyk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcAkocmV2aXNpb24gMjUzOTY3KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDI1ICs5MSwxNCBAQCBTdHJpbmcgR2FtZXBhZERhdGE6OmxvZ2dpbmdTdHJp
bmcoKSBjb25zCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCi0gICAgYnVpbGRlci5h
cHBlbmROdW1iZXIobV9heGlzVmFsdWVzLnNpemUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgYXhlcywgIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9idXR0b25WYWx1ZXMu
c2l6ZSgpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBidXR0b25zXG4iKTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9heGlzVmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIEF4aXMgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9heGlzVmFsdWVzW2ldKTsK
LSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQobV9heGlzVmFsdWVzLnNpemUoKSwgIiBheGVzLCAi
LCBtX2J1dHRvblZhbHVlcy5zaXplKCksICIgYnV0dG9uc1xuIik7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYXhpc1ZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiBBeGlzICIsIGksICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
bV9heGlzVmFsdWVzW2ldKSk7CiAKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fYnV0dG9uVmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIEJ1dHRvbiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIoaSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2J1dHRvblZhbHVlc1tpXSk7
Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9idXR0b25WYWx1ZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgQnV0dG9uICIsIGksICI6ICIsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9idXR0b25WYWx1ZXNbaV0pKTsKIAogICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4NSwxMyArNDg1LDcgQEAgY29uc3QgY2hhciogV2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dn
aW5nUwogCiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJXZWJCYWNrRm9yd2FyZExpc3QgMHgi
KTsKICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0
aGlzKSwgYnVpbGRlcik7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChtX2N1cnJlbnRJbmRleCA/ICJZRVMiIDogIk5PIik7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY3VycmVudEluZGV4ID8g
Km1fY3VycmVudEluZGV4IDogMCk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgiIC0gIiwgbV9lbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzLCBoYXMgY3VycmVu
dCBpbmRleCAiLCBtX2N1cnJlbnRJbmRleCA/ICJZRVMiIDogIk5PIiwgIiAoIiwgbV9jdXJyZW50
SW5kZXggPyAqbV9jdXJyZW50SW5kZXggOiAwLCAnKScpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OTYs
MTQgKzM1OTYsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYQog
ICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGlmICghZXhjZXB0aW9uRGV0
YWlscy5zb3VyY2VVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChl
eGNlcHRpb25EZXRhaWxzLnNvdXJjZVVSTCk7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0
YWlscy5saW5lTnVtYmVyID4gMCkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6
Jyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZXhjZXB0aW9uRGV0YWls
cy5saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChleGNlcHRpb25E
ZXRhaWxzLmNvbHVtbk51bWJlciA+IDApIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGV4Y2VwdGlvbkRl
dGFpbHMuY29sdW1uTnVtYmVyKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChleGNl
cHRpb25EZXRhaWxzLmxpbmVOdW1iZXIgPiAwKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6JywgZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIGlmIChl
eGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlciA+IDApCisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJzonLCBleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlcik7CiAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI1Mzk2NykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChyZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICAgICAgU3RyaW5nQnVpbGRl
ciBlcnJvck1lc3NhZ2U7CiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgi
RmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0
dXMgb2YgIik7Ci0gICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTnVtYmVyKHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOworICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChyZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmRM
aXRlcmFsKCIgKCIpOwogICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChyZXNwb25zZS5o
dHRwU3RhdHVzVGV4dCgpKTsKICAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmQoJyknKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDE3ICsxOTQsOSBAQCBzdGF0
aWMgU3RyaW5nIGJ1aWxkSFRUUEhlYWRlcnMoY29uc3QgUmVzCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaGVhZGVyOwotICAgIGhlYWRlci5hcHBlbmRMaXRl
cmFsKCJIVFRQICIpOwotICAgIGhlYWRlci5hcHBlbmROdW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7Ci0gICAgaGVhZGVyLmFwcGVuZCgnICcpOwotICAgIGhlYWRlci5hcHBlbmQocmVz
cG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7Ci0gICAgaGVhZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBm
b3IgKGF1dG8mIGZpZWxkIDogcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSB7Ci0gICAgICAg
IGhlYWRlci5hcHBlbmQoZmllbGQua2V5KTsKLSAgICAgICAgaGVhZGVyLmFwcGVuZExpdGVyYWwo
IjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoZmllbGQudmFsdWUpOwotICAgICAgICBoZWFk
ZXIuYXBwZW5kKCdcbicpOwotICAgIH0KKyAgICBoZWFkZXIuYXBwZW5kKCJIVFRQICIsIHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCksICcgJywgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJ1xu
Jyk7CisgICAgZm9yIChhdXRvJiBmaWVsZCA6IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkK
KyAgICAgICAgaGVhZGVyLmFwcGVuZChmaWVsZC5rZXksICI6ICIsIGZpZWxkLnZhbHVlLCAnXG4n
KTsKIAogICAgIC8vIElmIHRoZSBjb250ZW50IGlzIGVuY29kZWQgKG1vc3QgbGlrZWx5IGNvbXBy
ZXNzZWQpLCB0aGVuIGRvbid0IHNlbmQgaXRzIGxlbmd0aCB0byB0aGUgcGx1Z2luLAogICAgIC8v
IHdoaWNoIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZGVjb2RlZCBsZW5ndGgsIG5vdCB5ZXQg
a25vd24gYXQgdGhlIG1vbWVudC4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1
MSw3IEBAIEhSRVNVTFQgV2ViS2l0U3RhdGlzdGljczo6Y29tQ2xhc3NOYW1lQ28KIAogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKGF1dG8mIHNsb3QgOiBnQ2xhc3NOYW1lQ291
bnQoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzbG90LnZhbHVlKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoc2xvdC52YWx1ZSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdc
dCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChzbG90LmtleSk7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTY3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMTItMzEgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBudW1lcmljIGFwcGVuZCBmdW5jdGlvbnMgZnJv
bSBTdHJpbmdCdWlsZGVyIG5vdyB0aGF0IGFwcGVuZCBjYW4gaXMgY2FwYWJsZSBvZiBoYW5kbGlu
ZyB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6
CisgICAgICAgIChXVFI6OmR1bXBQYXRoKToKKyAgICAgICAgKFdUUjo6cmFuZ2VUb1N0cik6Cisg
ICAgICAgIChXVFI6OnN0eWxlRGVjVG9TdHIpOgorICAgICAgICAoV1RSOjpzZWN1cml0eU9yaWdp
blRvU3RyKToKKyAgICAgICAgKFdUUjo6ZnJhbWVUb1N0cik6CisgICAgICAgIChXVFI6OmR1bXBG
cmFtZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6ZHVt
cExvYWRFdmVudCk6CisgICAgICAgIChXVFI6OmR1bXBSZXF1ZXN0RGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wUmVzcG9uc2VEZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBFcnJvckRlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lU2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxTZXRTdGF0dXNiYXJU
ZXh0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlw
dEFsZXJ0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNj
cmlwdENvbmZpcm0pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5K
YXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRS
ZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlUGFnZTo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpzaG91bGRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpzaG91bGREZWxldGVSYW5nZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6c2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRD
aGFuZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZVNlbGVj
dGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OnN0cmlu
Z0F0T2Zmc2V0KToKKwogMjAxOS0xMi0zMSAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxj
bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBPcGVuSlBFRyBtaXNzaW5nIGluIGlu
c3RhbGwgZGVwZW5kZW5jaWVzIHNjcmlwdC4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24u
Y3BwCShyZXZpc2lvbiAyNTM5NjcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTQg
Kzg5LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljIGxvbmcgc2VxdWVuY2VJRCA9
IDA7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7Ci0gICAgICAgIG1lc3Nh
Z2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIntcImlkXCI6Iik7Ci0gICAgICAgIG1lc3NhZ2VCdWls
ZGVyLmFwcGVuZE51bWJlcigrK3NlcXVlbmNlSUQpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIik7Ci0gICAgICAgIG1lc3Nh
Z2VCdWlsZGVyLmFwcGVuZChjb21tYW5kKTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5k
KCciJyk7CisgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgie1wiaWRcIjoiLCArK3NlcXVl
bmNlSUQsICIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIiwgY29tbWFuZCwgJyInKTsKICAgICAg
ICAgaWYgKCFwYXJhbWV0ZXJzLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtZXNzYWdlQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsXCJwYXJhbXNcIjoiKTsKLSAgICAgICAgICAgIG1lc3NhZ2VCdWls
ZGVyLmFwcGVuZChwYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVu
ZCgiLFwicGFyYW1zXCI6IiwgcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICAgICAgbWVzc2Fn
ZUJ1aWxkZXIuYXBwZW5kKCd9Jyk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2Uo
IlNlbmRNZXNzYWdlVG9CYWNrZW5kIiwgZ192YXJpYW50X25ldygiKHR0cykiLCBtX2Nvbm5lY3Rp
b25JRCwgbV90YXJnZXQuaWQsIG1lc3NhZ2VCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNp
b24gMjUzOTY3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03NSwxOCArNzUsMTMgQEAgdm9pZCBIVFRQU2VydmVyOjpyZXNwb25k
VG9SZXF1ZXN0cyhud19jbwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVxdWVzdFJl
c3BvbnNlTWFwLmNvbnRhaW5zKHBhdGgpLCAiVGhpcyBIVFRQU2VydmVyIGRvZXMgbm90IGtub3cg
aG93IHRvIHJlc3BvbmQgdG8gYSByZXF1ZXN0IGZvciAlcyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIAogICAgICAgICBhdXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9uc2VNYXAu
Z2V0KHBhdGgpOworICAgIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsK
LSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRl
bnQtTGVuZ3RoOiAiKTsKLSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNw
b25zZS5ib2R5Lmxlbmd0aCgpKTsKLSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJc
biIpOwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiByZXNwb25zZS5oZWFkZXJGaWVsZHMpIHsK
LSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQocGFpci5rZXkpOwotICAgICAgICAg
ICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiOiAiKTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVp
bGRlci5hcHBlbmQocGFpci52YWx1ZSk7Ci0gICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBw
ZW5kKCJcclxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgi
XHJcbiIpOwotICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHJlc3BvbnNlLmJvZHkpOwor
ICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVu
dC1MZW5ndGg6ICIsIHJlc3BvbnNlLmJvZHkubGVuZ3RoKCksICJcclxuIik7CisgICAgICAgIGZv
ciAoYXV0byYgcGFpciA6IHJlc3BvbnNlLmhlYWRlckZpZWxkcykKKyAgICAgICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQocGFpci5rZXksICI6ICIsIHBhaXIudmFsdWUsICJcclxuIik7Cisg
ICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iLCByZXNwb25zZS5ib2R5KTsKKyAg
ICAKICAgICAgICAgYXV0byByZXNwb25zZUJvZHlBbmRIZWFkZXIgPSByZXNwb25zZUJ1aWxkZXIu
dG9TdHJpbmcoKS5yZWxlYXNlSW1wbCgpOwogICAgICAgICBhdXRvIHJlc3BvbnNlRGF0YSA9IGFk
b3B0TlMoZGlzcGF0Y2hfZGF0YV9jcmVhdGUocmVzcG9uc2VCb2R5QW5kSGVhZGVyLT5jaGFyYWN0
ZXJzOCgpLCByZXNwb25zZUJvZHlBbmRIZWFkZXItPmxlbmd0aCgpLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewogICAgICAgICAgICAgKHZvaWQpcmVzcG9uc2VCb2R5QW5kSGVhZGVyOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMjUzOTY3KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NiwxMCArOTYsOCBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZHVtcFBh
dGgoSlNHbG9iYWxDb250CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG5vZGVOYW1lKSk7CiAKLSAgICBpZiAocGFy
ZW50Tm9kZSAmJiBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgcGFyZW50Tm9kZSkpIHsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgPiAiKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoZHVtcFBhdGgoY29udGV4dCwgKEpTT2JqZWN0UmVmKXBhcmVudE5vZGUpKTsK
LSAgICB9CisgICAgaWYgKHBhcmVudE5vZGUgJiYgSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHBh
cmVudE5vZGUpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID4gIiwgZHVtcFBhdGgo
Y29udGV4dCwgKEpTT2JqZWN0UmVmKXBhcmVudE5vZGUpKTsKIAogICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0xNDIsMTYgKzE0MCw3IEBAIHN0YXRpYyBXVEY6OlN0
cmluZyByYW5nZVRvU3RyKFdLQnVuZGxlUGEKICAgICBpbnQgc3RhcnRPZmZzZXQgPSBwcm9wZXJ0
eVZhbHVlSW50KGNvbnRleHQsIHJhbmdlT2JqZWN0LCAic3RhcnRPZmZzZXQiKTsKICAgICBpbnQg
ZW5kT2Zmc2V0ID0gcHJvcGVydHlWYWx1ZUludChjb250ZXh0LCByYW5nZU9iamVjdCwgImVuZE9m
ZnNldCIpOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgicmFuZ2UgZnJvbSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZE51bWJlcihzdGFydE9mZnNldCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgb2YgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZHVtcFBhdGgoY29udGV4dCwgc3Rh
cnROb2RlT2JqZWN0KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdG8gIik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZW5kT2Zmc2V0KTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChk
dW1wUGF0aChjb250ZXh0LCBlbmROb2RlT2JqZWN0KSk7Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicmFuZ2UgZnJvbSAiLCBzdGFy
dE9mZnNldCwgIiBvZiAiLCBkdW1wUGF0aChjb250ZXh0LCBzdGFydE5vZGVPYmplY3QpLCAiIHRv
ICIsIGVuZE9mZnNldCwgIiBvZiAiLCBkdW1wUGF0aChjb250ZXh0LCBlbmROb2RlT2JqZWN0KSk7
CiB9CiAKIHN0YXRpYyBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gTmF2aWdhdGlvblR5cGVUb1N0
cmluZyhXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdHlwZSkKQEAgLTE3OCwyMyArMTY3LDEyIEBAIHN0
YXRpYyBXVEY6OlN0cmluZyBzdHlsZURlY1RvU3RyKFdLQnVuZGwKICAgICAvLyBEdW1wUmVuZGVy
VHJlZSBjYWxscyAtW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gZGVzY3JpcHRpb25dLCB3aGljaCBq
dXN0IGR1bXBzIGNsYXNzIG5hbWUgYW5kIG9iamVjdCBhZGRyZXNzLgogICAgIC8vIE5vIGV4aXN0
aW5nIHRlc3RzIGFjdHVhbGx5IGhpdCB0aGlzIGNvZGUgcGF0aCBhdCB0aGUgdGltZSBvZiB0aGlz
IHdyaXRpbmcsIGJlY2F1c2UgV2ViQ29yZSBkb2Vzbid0IGNhbGwKICAgICAvLyB0aGUgZWRpdGlu
ZyBjbGllbnQgaWYgdGhlIHN0eWxpbmcgb3BlcmF0aW9uIHNvdXJjZSBpcyBDb21tYW5kRnJvbURP
TSBvciBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlLgotICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjxET01DU1NT
dHlsZURlY2xhcmF0aW9uIEFERFJFU1M+Iik7Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gIjxET01DU1NTdHlsZURlY2xhcmF0aW9uIEFERFJFU1M+Il9z
OwogfQogCiBzdGF0aWMgV1RGOjpTdHJpbmcgc2VjdXJpdHlPcmlnaW5Ub1N0cihXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ3snKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0
b1dURlN0cmluZyhhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5UHJvdG9jb2wob3JpZ2luKSkp
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weUhvc3Qo
b3JpZ2luKSkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoV0tTZWN1cml0eU9yaWdpbkdldFBvcnQob3JpZ2lu
KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ30nKTsKLQotICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b1dURlN0cmlu
ZyhhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5UHJvdG9jb2wob3JpZ2luKSkpLCAiLCAiLCB0
b1dURlN0cmluZyhhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4pKSksICIs
ICIsIFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KG9yaWdpbiksICd9Jyk7CiB9CiAKIHN0YXRpYyBX
VEY6OlN0cmluZyBmcmFtZVRvU3RyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCkBAIC0yMDIsMTgg
KzE4MCwxMyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZnJhbWVUb1N0cihXS0J1bmRsZUZyCiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG5hbWUgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5
TmFtZShmcmFtZSkpOwogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBpZiAo
V0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkgewotICAgICAgICBpZiAoIVdLU3RyaW5n
SXNFbXB0eShuYW1lLmdldCgpKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJtYWluIGZyYW1lIFwiIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCh0b1dURlN0cmluZyhuYW1lKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
IicpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5n
ZXQoKSkpCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgibWFpbiBmcmFtZSBcIiIs
IHRvV1RGU3RyaW5nKG5hbWUpLCAnIicpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIm1haW4gZnJhbWUiKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAoIVdLU3RyaW5nSXNFbXB0eShuYW1lLmdldCgpKSkgewotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmcmFtZSBcIiIpOwotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIVdLU3RyaW5nSXNFbXB0
eShuYW1lLmdldCgpKSkKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJmcmFtZSBc
IiIsIHRvV1RGU3RyaW5nKG5hbWUpLCAnIicpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZyYW1lIChhbm9ueW1vdXMpIik7CiAgICAgfQpA
QCAtNDU0LDkgKzQyNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFi
bGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibWFpbiBmcmFtZSBcIiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCh0b1dURlN0cmluZyhuYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCciJyk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJtYWluIGZyYW1lIFwiIiwgdG9X
VEZTdHJpbmcobmFtZSksICciJyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NSwx
OCArNDM2LDE0IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
ZnJhbWUgXCIiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhuYW1lKSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiZnJhbWUgXCIiLCB0b1dURlN0cmluZyhuYW1lKSwgJyInKTsKIH0KIAogc3RhdGljIHZvaWQg
ZHVtcExvYWRFdmVudChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCBjaGFyKiBldmVudE5h
bWUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGR1bXBGcmFtZURl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtICIpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGV2ZW50TmFtZSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiAtICIsIGV2ZW50TmFtZSwgJ1xuJyk7CiAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygp
KTsKIH0KIApAQCAtNDg2LDExICs0NTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHVtcFJlcXVl
c3REZXNjcmlwdGlvCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZpcnN0UGFydHkgPSBhZG9w
dFdLKFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhyZXF1ZXN0KSk7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0dHBNZXRob2QgPSBhZG9wdFdLKFdLVVJMUmVxdWVz
dENvcHlIVFRQTWV0aG9kKHJlcXVlc3QpKTsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiPE5TVVJMUmVxdWVzdCBVUkwgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0
aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgbWFpbiBkb2N1bWVudCBVUkwgIik7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChmaXJzdFBhcnR5LmdldCgpKSk7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGh0dHAgbWV0aG9kICIpOworICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCI8TlNVUkxSZXF1ZXN0IFVSTCAiLCBwYXRoU3VpdGFibGVGb3JUZXN0
UmVzdWx0KHVybC5nZXQoKSksICIsIG1haW4gZG9jdW1lbnQgVVJMICIsIHBhdGhTdWl0YWJsZUZv
clRlc3RSZXN1bHQoZmlyc3RQYXJ0eS5nZXQoKSksICIsIGh0dHAgbWV0aG9kICIpOwogCiAgICAg
aWYgKFdLU3RyaW5nSXNFbXB0eShodHRwTWV0aG9kLmdldCgpKSkKICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIobm9uZSkiKTsKQEAgLTUwNywxNiArNDcwLDExIEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBkdW1wUmVzcG9uc2VEZXNjcmlwdGkKICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjxOU1VSTFJlc3BvbnNlICIpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdldCgpKSk7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2Rl
KHJlc3BvbnNlKSk7Ci0KLSAgICBpZiAoc2hvdWxkRHVtcFJlc3BvbnNlSGVhZGVycykgewotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTnVtYmVyKEluamVjdGVkQnVuZGxlUGFnZTo6cmVzcG9uc2VIZWFkZXJDb3Vu
dChyZXNwb25zZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBoZWFk
ZXJzIik7Ci0gICAgfQorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI8TlNVUkxSZXNwb25zZSAi
LCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybC5nZXQoKSksICIsIGh0dHAgc3RhdHVzIGNv
ZGUgIiwgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlKSk7CisKKyAgICBpZiAo
c2hvdWxkRHVtcFJlc3BvbnNlSGVhZGVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiwgIiwgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNwb25zZUhlYWRlckNvdW50KHJlc3BvbnNlKSwg
IiBoZWFkZXJzIik7CisKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnPicpOwogfQogCkBAIC01
NDMsMTcgKzUwMSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHVtcEVycm9yRGVzY3JpcHRpb25T
CiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoZXJyb3JEb21haW4uZ2V0KCks
ICJXZWJLaXRQb2xpY3lFcnJvciIpKQogICAgICAgICBlcnJvckRvbWFpbiA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdEVycm9yRG9tYWluIikpOwogCi0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8TlNFcnJvciBkb21haW4gIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZXJyb3JEb21haW4pKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgY29kZSAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZE51bWJlcihlcnJvckNvZGUpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI8TlNFcnJvciBk
b21haW4gIiwgdG9XVEZTdHJpbmcoZXJyb3JEb21haW4pLCAiLCBjb2RlICIsIGVycm9yQ29kZSk7
CiAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS0Vycm9yQ29weUZh
aWxpbmdVUkwoZXJyb3IpKTsKICAgICBpZiAodXJsLmdldCgpKSB7CiAgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwu
Z2V0KCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGZhaWxpbmcg
VVJMIFwiIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHVybFN0
cmluZykpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiLCBmYWlsaW5nIFVSTCBcIiIsIHRvV1RGU3RyaW5nKHVybFN0cmlu
ZyksICciJyk7CiAgICAgfQogCiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJz4nKTsKQEAgLTc3
NywxNSArNzMwLDkgQEAgc3RhdGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV0tCdQog
CiAgICAgaWYgKHNob3VsZEluY2x1ZGVGcmFtZU5hbWUpIHsKICAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG5hbWUgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5TmFtZShmcmFtZSkp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImZyYW1lICciKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIicgIik7Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgic2Nyb2xsZWQgdG8gIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRO
dW1iZXIoeCk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZE51bWJlcih5KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImZyYW1lICciLCB0b1dURlN0cmluZyhuYW1lKSwg
IicgIik7CisgICAgfQorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzY3JvbGxlZCB0byAiLCB4
LCAnLCcsIHksICdcbicpOwogfQogCiBzdGF0aWMgdm9pZCBkdW1wRGVzY2VuZGFudEZyYW1lU2Ny
b2xsUG9zaXRpb25zKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmlu
Z0J1aWxkZXIpCkBAIC0xMDUyLDkgKzk5OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3
aWxsUGVyZm9ybUNsaWUKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBk
dW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSwgc3RyaW5nQnVp
bGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkw6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0
YWJsZUZvclRlc3RSZXN1bHQodXJsKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgXG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMOiAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCksICIgXG4iKTsK
ICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7
CiB9CiAKQEAgLTEwODMsMTQgKzEwMjgsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlk
RmluaXNoRG9jdW1lCiAgICAgICAgIGR1bXBMb2FkRXZlbnQoZnJhbWUsICJkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZSIpOwogCiAgICAgdW5zaWduZWQgcGVuZGluZ0ZyYW1lVW5sb2FkRXZl
bnRzID0gV0tCdW5kbGVGcmFtZUdldFBlbmRpbmdVbmxvYWRDb3VudChmcmFtZSk7Ci0gICAgaWYg
KHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cykgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZyYW1lVG9TdHIoZnJhbWUp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSBoYXMgIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9udW5sb2FkIGhhbmRsZXIo
cylcbiIpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpCisg
ICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZyhmcmFtZVRvU3RyKGZy
YW1lKSwgIiAtIGhhcyAiLCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMsICIgb251bmxvYWQgaGFu
ZGxlcihzKVxuIikpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkSGFuZGxlT25s
b2FkRXZlbnRzRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKQEAgLTEyNDAsMTQgKzEx
NzksMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwbwogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtaW1lVHlwZVN0cmluZyA9IGFkb3B0V0soV0tVUkxSZXNw
b25zZUNvcHlNSU1FVHlwZShyZXNwb25zZSkpOwogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHVybFN0cmluZykp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGhhcyBNSU1FIHR5cGUgIik7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWltZVR5cGVTdHJpbmcpKTsKKyAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpLCAiIGhhcyBNSU1F
IHR5cGUgIiwgdG9XVEZTdHJpbmcobWltZVR5cGVTdHJpbmcpKTsKIAogICAgIFN0cmluZyBwbGF0
Zm9ybU1pbWVUeXBlID0gcGxhdGZvcm1SZXNwb25zZU1pbWVUeXBlKHJlc3BvbnNlKTsKICAgICBp
ZiAoIXBsYXRmb3JtTWltZVR5cGUuaXNFbXB0eSgpICYmIHBsYXRmb3JtTWltZVR5cGUgIT0gdG9X
VEZTdHJpbmcobWltZVR5cGVTdHJpbmcpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIGJ1dCBwbGF0Zm9ybSByZXNwb25zZSBoYXMgIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHBsYXRmb3JtTWltZVR5cGUpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiIGJ1dCBwbGF0Zm9ybSByZXNwb25zZSBoYXMgIiwgcGxhdGZvcm1NaW1lVHlwZSk7CiAg
ICAgfQogCiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CkBAIC0xMzAxLDEwICsxMjM3
LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZENhY2hlUmVzcAogICAgIGlmICgh
aW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wV2lsbENhY2hlUmVzcG9uc2Uo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoaWRlbnRpZmllcik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxsQ2FjaGVSZXNwb25zZTogY2FsbGVkXG4i
KTsKLSAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KSk7CisgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKGlkZW50aWZpZXIs
ICIgLSB3aWxsQ2FjaGVSZXNwb25zZTogY2FsbGVkXG4iKSk7CiAKICAgICAvLyBUaGUgZGVmYXVs
dCBiZWhhdmlvciBpcyB0aGUgY2FjaGUgdGhlIHJlc3BvbnNlLgogICAgIHJldHVybiB0cnVlOwpA
QCAtMTM0MywxMSArMTI3Niw3IEBAIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBJbmplY3RlZEJ1
bmRsZVAKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24gXG4iKTsKICAgICAgICAgZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChyZXF1ZXN0LCBzdHJpbmdCdWlsZGVyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgaXMgbWFpbiBmcmFtZSAtICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpID8gInllcyIgOiAibm8iKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2hvdWxkIG9wZW4gVVJMcyBleHRl
cm5hbGx5IC0gIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbkdldFNob3VsZE9wZW5FeHRlcm5hbFVSTHMobmF2aWdhdGlvbkFjdGlvbikgPyAi
eWVzIiA6ICJubyIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiBpcyBtYWluIGZyYW1lIC0gIiwgV0tCdW5kbGVGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSA/ICJ5ZXMiIDogIm5vIiwgIiBzaG91bGQgb3BlbiBVUkxzIGV4
dGVybmFsbHkgLSAiLCBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25HZXRTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzKG5hdmlnYXRpb25BY3Rpb24pID8gInllcyIgOiAibm8iLCAnXG4nKTsKICAgICAgICAg
aW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogICAg
IH0KIApAQCAtMTM2NiwxNCArMTI5NSwxMSBAQCBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5q
ZWN0ZWRCdW5kbGVQCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcg
PSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKTsKICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQodG9XVEZTdHJpbmcodXJsU3RyaW5nKSk7CiAgICAgfQotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHdpdGggbmF2aWdhdGlvbiB0eXBlIFwnIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoTmF2aWdhdGlvblR5cGVUb1N0cmluZyhXS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb25HZXROYXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uQWN0aW9uKSkp
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlwnIik7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiB3aXRoIG5hdmlnYXRpb24gdHlwZSBcJyIsIHRvV1RGU3RyaW5nKE5hdmln
YXRpb25UeXBlVG9TdHJpbmcoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0TmF2aWdhdGlvblR5
cGUobmF2aWdhdGlvbkFjdGlvbikpKSwgIlwnIik7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVI
aXRUZXN0UmVzdWx0UmVmPiBoaXRUZXN0UmVzdWx0UmVmID0gYWRvcHRXSyhXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb25Db3B5SGl0VGVzdFJlc3VsdChuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgaWYg
KGhpdFRlc3RSZXN1bHRSZWYpIHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVOb2RlSGFu
ZGxlUmVmPiBub2RlSGFuZGxlUmVmID0gYWRvcHRXSyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5
Tm9kZUhhbmRsZShoaXRUZXN0UmVzdWx0UmVmLmdldCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIG9yaWdpbmF0aW5nIGZyb20gIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGR1bXBQYXRoKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgbm9kZUhhbmRsZVJl
Zi5nZXQoKSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIG9yaWdpbmF0aW5nIGZy
b20gIiwgZHVtcFBhdGgobV9wYWdlLCBtX3dvcmxkLmdldCgpLCBub2RlSGFuZGxlUmVmLmdldCgp
KSk7CiAgICAgfQogCiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CkBAIC0xMzkzLDEy
ICsxMzE5LDggQEAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUAogewog
ICAgIGF1dG8mIGluamVjdGVkQnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwog
ICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCkgJiYgaW5qZWN0ZWRCdW5kbGUudGVz
dFJ1bm5lcigpLT5pc1BvbGljeURlbGVnYXRlRW5hYmxlZCgpICYmIFdLVVJMUmVzcG9uc2VJc0F0
dGFjaG1lbnQocmVzcG9uc2UpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZpbGVuYW1lID0gYWRvcHRXSyhX
S1VSTFJlc3BvbnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1lKHJlc3BvbnNlKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUG9saWN5IGRlbGVnYXRlOiByZXNvdXJjZSBpcyBh
biBhdHRhY2htZW50LCBzdWdnZXN0ZWQgZmlsZSBuYW1lIFwnIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKGZpbGVuYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiXCdcbiIpOwotICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJQb2xpY3kgZGVs
ZWdhdGU6IHJlc291cmNlIGlzIGFuIGF0dGFjaG1lbnQsIHN1Z2dlc3RlZCBmaWxlIG5hbWUgXCci
LCB0b1dURlN0cmluZyhmaWxlbmFtZSksICJcJ1xuIikpOwogICAgIH0KIAogICAgIHJldHVybiBX
S0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhyb3VnaDsKQEAgLTE0ODMsMTMgKzE0MDUsOSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUCiAKICAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJD
T05TT0xFIE1FU1NBR0U6ICIpOwotICAgIGlmIChsaW5lTnVtYmVyKSB7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibGluZSAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmROdW1iZXIobGluZU51bWJlcik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOiAiKTsKLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2FnZVN0cmlu
Zyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgaWYgKGxpbmVOdW1iZXIp
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJsaW5lICIsIGxpbmVOdW1iZXIsICI6ICIp
OworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcsICdcbicpOwogCiAgICAg
aWYgKGluamVjdGVkQnVuZGxlLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpKQogICAgICAgICBp
bmplY3RlZEJ1bmRsZS5kdW1wVG9TdGRFcnIoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKQEAg
LTE1MDYsMTEgKzE0MjQsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNldFN0YXR1
c2JhCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBTdGF0
dXNDYWxsYmFja3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUg
U1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHRvV1RGU3RyaW5nKHN0YXR1c2JhclRleHQpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKSk7CisgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJVSSBE
RUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6IiwgdG9XVEZTdHJpbmcoc3Rh
dHVzYmFyVGV4dCksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxS
dW5KYXZhU2NyaXB0QWxlcnQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZikK
QEAgLTE1MTksMTEgKzE0MzMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkph
dmFTY3JpCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkFMRVJUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7
Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkp
OworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQUxFUlQ6ICIsIHRv
V1RGU3RyaW5nKG1lc3NhZ2UpLCAnXG4nKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
Ojp3aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVG
cmFtZVJlZikKQEAgLTE1MzIsMjIgKzE0NDIsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OndpbGxSdW5KYXZhU2NyaQogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDT05GSVJNOiAiKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygi
Q09ORklSTTogIiwgdG9XVEZTdHJpbmcobWVzc2FnZSksICdcbicpKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3Nh
Z2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tCdW5kbGVGcmFtZVJlZikKIHsKLSAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJQUk9NUFQ6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1l
c3NhZ2UpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZGVmYXVsdCB0ZXh0
OiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUp
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlBST01QVDog
IiwgdG9XVEZTdHJpbmcobWVzc2FnZSksICIsIGRlZmF1bHQgdGV4dDogIiwgdG9XVEZTdHJpbmco
ZGVmYXVsdFZhbHVlKSwgJ1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlk
UmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tTZWN1cml0eU9yaWdpblJlZiBvcmln
aW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKQEAgLTE1NjAsMTMgKzE0NjAsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhCiAgICAgICAgIC8vIGFib3ZlIG9y
IGJlbG93IGEgdGhyZXNob2xkLgogICAgICAgICBpbnQ2NF90IHRydW5jYXRlZFNwYWNlTmVlZGVk
ID0gKHRvdGFsQnl0ZXNOZWVkZWQgLyAxMDAwMCkgKiAxMDAwMDsKIAotICAgICAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Iik7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHNlY3VyaXR5T3JpZ2luVG9TdHIob3JpZ2luKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHRvdGFsU3BhY2VOZWVkZWQ6fiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcih0cnVuY2F0ZWRTcGFjZU5lZWRlZCk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUg
Q0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlP
cmlnaW46Iiwgc2VjdXJpdHlPcmlnaW5Ub1N0cihvcmlnaW4pLCAiIHRvdGFsU3BhY2VOZWVkZWQ6
fiIsIHRydW5jYXRlZFNwYWNlTmVlZGVkLCAnXG4nKSk7CiAgICAgfQogCiAgICAgaWYgKGluamVj
dGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0
aW9uQ2FjaGVRdW90YSgpKQpAQCAtMTU3OSwxNSArMTQ3Myw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRSZWFjaEFwcGxpY2EKIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlk
RXhjZWVkRGF0YWJhc2VRdW90YShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tTdHJpbmdS
ZWYgZGF0YWJhc2VOYW1lLCBXS1N0cmluZ1JlZiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGFCeXRlcywgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIHVp
bnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2VC
eXRlcykKIHsKICAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKTsKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1w
RGF0YWJhc2VDYWxsYmFja3MoKSkgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUgREFU
QUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOiIp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZWN1cml0eU9yaWdpblRvU3RyKG9yaWdp
bikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBkYXRhYmFzZToiKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZGF0YWJhc2VOYW1lKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlm
IChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBEYXRhYmFzZUNhbGxiYWNr
cygpKQorICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlVJIERF
TEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0
eU9yaWdpbjoiLCBzZWN1cml0eU9yaWdpblRvU3RyKG9yaWdpbiksICIgZGF0YWJhc2U6IiwgdG9X
VEZTdHJpbmcoZGF0YWJhc2VOYW1lKSwgJ1xuJykpOwogCiAgICAgdWludDY0X3QgZGVmYXVsdFF1
b3RhID0gNSAqIDEwMjQgKiAxMDI0OwogICAgIGRvdWJsZSB0ZXN0RGVmYXVsdFF1b3RhID0gaW5q
ZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5kYXRhYmFzZURlZmF1bHRRdW90YSgpOwpAQCAtMTYw
MSwxMSArMTQ4OCw3IEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGEK
ICAgICAgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkVXNhZ2VCeXRlcyAmJiBleHBlY3Rl
ZFVzYWdlQnl0ZXMgPD0gbWF4UXVvdGEpIHsKICAgICAgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0
ZWRVc2FnZUJ5dGVzOwogCi0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIERB
VEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gIik7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZE51bWJlcihuZXdRdW90YSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
c3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQobWFrZVN0cmluZygiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3Jl
YXNlZCBxdW90YSB0byAiLCBuZXdRdW90YSwgJ1xuJykpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBuZXdRdW90YTsKQEAgLTE2NzQsMTMgKzE1NTcsOSBAQCBib29sIEluamVjdGVkQnVu
ZGxlUGFnZTo6c2hvdWxkQmVnaW5FZGl0CiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RS
dW5uaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGluamVjdGVkQnVuZGxl
LnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZToi
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29y
bGQuZ2V0KCksIHJhbmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KSk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
bWFrZVN0cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5n
ZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpLCAnXG4nKSk7CisK
ICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRp
bmcoKTsKIH0KIApAQCAtMTY5MCwxMyArMTU2OSw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpzaG91bGRFbmRFZGl0aW4KICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmco
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZToiKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCks
IHJhbmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBp
bmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAg
fQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5n
Q2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmlu
ZygiRURJVElORyBERUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6IiwgcmFuZ2VU
b1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSwgJ1xuJykpOworCiAgICAgcmV0dXJu
IGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAK
QEAgLTE3MTIsMTcgKzE1ODcsOSBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5z
ZXJ0Tm9kCiAgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZCIsCiAgICAgfTsKIAot
ICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZElu
c2VydE5vZGU6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGR1bXBQYXRoKG1fcGFn
ZSwgbV93b3JsZC5nZXQoKSwgbm9kZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiByZXBsYWNpbmdET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBsYWNlKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdpdmVuQWN0aW9uOiIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBpbmplY3RlZEJ1bmRs
ZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgfQorICAgIGlmIChp
bmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkp
CisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBE
RUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZToiLCBkdW1wUGF0aChtX3BhZ2UsIG1fd29ybGQuZ2V0
KCksIG5vZGUpLCAiIHJlcGxhY2luZ0RPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dv
cmxkLmdldCgpLCByYW5nZVRvUmVwbGFjZSksICIgZ2l2ZW5BY3Rpb246IiwgaW5zZXJ0YWN0aW9u
c3RyaW5nW2FjdGlvbl0sICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0
UnVubmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xNzM4LDE3ICsxNjA1LDkg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydFRleAogICAgICAgICAiV2Vi
Vmlld0luc2VydEFjdGlvbkRyb3BwZWQiLAogICAgIH07CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5k
bGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh0ZXh0KSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHJlcGxhY2luZ0RPTVJhbmdlOiIpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFu
Z2VUb1JlcGxhY2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ2l2
ZW5BY3Rpb246Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluc2VydGFjdGlvbnN0
cmluZ1thY3Rpb25dKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
ICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsK
LSAgICB9CisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVk
aXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtl
U3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiIsIHRvV1RGU3RyaW5n
KHRleHQpLCAiIHJlcGxhY2luZ0RPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dvcmxk
LmdldCgpLCByYW5nZVRvUmVwbGFjZSksICIgZ2l2ZW5BY3Rpb246IiwgaW5zZXJ0YWN0aW9uc3Ry
aW5nW2FjdGlvbl0sICdcbicpKTsKKwogICAgIHJldHVybiBpbmplY3RlZEJ1bmRsZS50ZXN0UnVu
bmVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC0xNzU4LDEzICsxNjE3LDkgQEAg
Ym9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZERlbGV0ZVJhbgogICAgIGlmICghaW5qZWN0
ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkpIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURP
TVJhbmdlOiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyYW5nZVRvU3RyKG1fcGFn
ZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50
b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5n
ZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpLCAnXG4nKSk7CisK
ICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRp
bmcoKTsKIH0KIApAQCAtMTc4MywxOSArMTYzOCw5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpzaG91bGRDaGFuZ2VTZWwKICAgICAgICAgIlRSVUUiCiAgICAgfTsKIAotICAgIGlmIChpbmpl
Y3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsK
LSAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJhbmdlVG9TdHIobV9w
YWdlLCBtX3dvcmxkLmdldCgpLCBmcm9tUmFuZ2UpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgdG9ET01SYW5nZToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHRvUmFuZ2UpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgYWZmaW5pdHk6Iik7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGFmZmluaXR5c3RyaW5nW2FmZmluaXR5XSk7IAotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzdGlsbFNlbGVjdGluZzoiKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoYm9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10pOyAKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1
dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9CisgICAgaWYgKGluamVjdGVk
QnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAg
ICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiIsIHJhbmdlVG9TdHIobV9wYWdlLCBtX3dv
cmxkLmdldCgpLCBmcm9tUmFuZ2UpLCAiIHRvRE9NUmFuZ2U6IiwgcmFuZ2VUb1N0cihtX3BhZ2Us
IG1fd29ybGQuZ2V0KCksIHRvUmFuZ2UpLCAiIGFmZmluaXR5OiIsIGFmZmluaXR5c3RyaW5nW2Fm
ZmluaXR5XSwgIiBzdGlsbFNlbGVjdGluZzoiLCBib29sc3RyaW5nW3N0aWxsU2VsZWN0aW5nXSwg
J1xuJykpOworCiAgICAgcmV0dXJuIGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxk
QWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTE4MDUsMTUgKzE2NTAsOSBAQCBib29sIEluamVjdGVk
QnVuZGxlUGFnZTo6c2hvdWxkQXBwbHlTdHlsCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rl
c3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGluamVjdGVkQnVu
ZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZToiKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc3R5bGVEZWNUb1N0cihzdHlsZSkpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB0b0VsZW1lbnRzSW5ET01SYW5nZToiKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmFuZ2VUb1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0
KCksIHJhbmdlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0g
ICAgfQorICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0
cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZToiLCBzdHlsZURlY1RvU3Ry
KHN0eWxlKSwgIiB0b0VsZW1lbnRzSW5ET01SYW5nZToiLCByYW5nZVRvU3RyKG1fcGFnZSwgbV93
b3JsZC5nZXQoKSwgcmFuZ2UpLCAnXG4nKSk7CisKICAgICByZXR1cm4gaW5qZWN0ZWRCdW5kbGUu
dGVzdFJ1bm5lcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApAQCAtMTgyNSwxMSArMTY2
NCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRCZWdpbkVkaXRpbmcKICAgICBpZiAo
IWluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEJlZ2luRWRpdGluZzoiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
Zyhub3RpZmljYXRpb25OYW1lKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwor
ICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzoiLCB0b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1l
KSwgJ1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRW5kRWRpdGluZyhX
S1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQpAQCAtMTg0MCwxMSArMTY3NSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRFbmRFZGl0aW5nKFcKICAgICBpZiAoIWluamVjdGVkQnVu
ZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRp
bmc6Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0aW9u
TmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRF
bmRFZGl0aW5nOiIsIHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUpLCAnXG4nKSk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2UoV0tTdHJpbmdSZWYgbm90aWZpY2F0
aW9uTmFtZSkKQEAgLTE4NTUsMTEgKzE2ODYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkQ2hhbmdlKFdLU3RyCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6Iik7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQodG9XVEZTdHJpbmcobm90aWZpY2F0aW9uTmFtZSkpOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVp
bGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJp
bmcoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6IiwgdG9XVEZTdHJpbmcobm90
aWZpY2F0aW9uTmFtZSksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRp
ZENoYW5nZVNlbGVjdGlvbihXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQpAQCAtMTg3MCwx
MSArMTY5Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFuZ2VTZWxlY3QKICAg
ICBpZiAoIWluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjoiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0
b1dURlN0cmluZyhub3RpZmljYXRpb25OYW1lKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjoiLCB0b1dURlN0cmluZyhub3Rp
ZmljYXRpb25OYW1lKSwgJ1xuJykpOwogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEF0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAJKHJldmlz
aW9uIDI1Mzk2NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOSAr
MjIzLDcgQEAgU3RyaW5nIGF0dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJpYnV0ZQogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRl
cyA9IGF0dHJpYnV0ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5l
eHQpIHsKICAgICAgICAgQXRrQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtB
dHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0
cmlidXRlLT5uYW1lKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoYXR0cmlidXRlLT52YWx1ZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0
dHJpYnV0ZS0+bmFtZSwgJzonLCBhdHRyaWJ1dGUtPnZhbHVlKTsKICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMtPm5leHQpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOwogICAg
IH0KQEAgLTU2MCw4ICs1NTgsNyBAQCBTdHJpbmcgYXR0cmlidXRlc09mRWxlbWVudChBY2Nlc3Np
YmlsaXR5CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCi0gICAgYnVpbGRlci5hcHBl
bmQoZWxlbWVudC0+cm9sZSgpLT5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7
CisgICAgYnVpbGRlci5hcHBlbmQoZWxlbWVudC0+cm9sZSgpLT5zdHJpbmcoKSwgJ1xuJyk7CiAK
ICAgICAvLyBGb3IgdGhlIHBhcmVudCB3ZSBwcmludCBpdHMgcm9sZSBhbmQgaXRzIG5hbWUsIGlm
IGF2YWlsYWJsZS4KICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYUGFyZW50OiAiKTsKQEAg
LTU3MCw5MyArNTY3LDQ1IEBAIFN0cmluZyBhdHRyaWJ1dGVzT2ZFbGVtZW50KEFjY2Vzc2liaWxp
dHkKICAgICBpZiAoYXRrUGFyZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJvbGVUb1N0
cmluZyhhdGtQYXJlbnQpKTsKICAgICAgICAgY29uc3QgY2hhciogcGFyZW50TmFtZSA9IGF0a19v
YmplY3RfZ2V0X25hbWUoYXRrUGFyZW50KTsKLSAgICAgICAgaWYgKHBhcmVudE5hbWUgJiYgcGFy
ZW50TmFtZVswXSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFyZW50TmFtZSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKHBhcmVudE5hbWUgJiYgcGFyZW50TmFtZVswXSkKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI6ICIsIHBhcmVudE5hbWUpOwogICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIihudWxsKSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCi0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWENoaWxkcmVuOiAiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihlbGVtZW50LT5jaGlsZHJlbkNvdW50KCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFBvc2l0aW9uOiAgeyAiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGVsZW1lbnQtPngoKSwgNiwgS2Vl
cFRyYWlsaW5nWmVyb3MpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGVsZW1lbnQtPnkoKSwgNiwgS2VlcFRy
YWlsaW5nWmVyb3MpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIH1cbiIpOwotCi0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFNpemU6IHsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihlbGVtZW50LT53aWR0aCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJv
cyk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIoZWxlbWVudC0+aGVpZ2h0KCksIDYsIEtlZXBUcmFpbGluZ1pl
cm9zKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9XG4iKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiQVhDaGlsZHJlbjogIiwgZWxlbWVudC0+Y2hpbGRyZW5Db3VudCgpLCAnXG4nKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiQVhQb3NpdGlvbjogIHsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihlbGVtZW50LT54KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSwgIiwgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT55KCksIDYsIEtlZXBUcmFpbGlu
Z1plcm9zKSwgIiB9XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhTaXplOiB7ICIsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+d2lkdGgoKSwgNiwgS2VlcFRyYWls
aW5nWmVyb3MpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVsZW1lbnQt
PmhlaWdodCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyksICIgfVxuIik7CiAKICAgICBTdHJpbmcg
dGl0bGUgPSBlbGVtZW50LT50aXRsZSgpLT5zdHJpbmcoKTsKICAgICBpZiAoIXRpdGxlLmlzRW1w
dHkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCh0aXRsZSk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh0aXRsZSwgJ1xuJyk7CiAgICAg
fQogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gZWxlbWVudC0+ZGVzY3JpcHRpb24oKS0+c3Ry
aW5nKCk7Ci0gICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZGVzY3JpcHRpb24udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwotICAgIH0KKyAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoZGVzY3JpcHRpb24udXRmOCgpLmRhdGEoKSwgJ1xuJyk7CiAKICAg
ICBTdHJpbmcgdmFsdWUgPSBlbGVtZW50LT5zdHJpbmdWYWx1ZSgpLT5zdHJpbmcoKTsKLSAgICBp
ZiAoIXZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIH0KLQotICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiQVhGb2N1c2FibGU6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1l
bnQtPmlzRm9jdXNhYmxlKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGlmICgh
dmFsdWUuaXNFbXB0eSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSwgJ1xuJyk7CiAK
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYRm9jdXNlZDogIik7Ci0gICAgYnVpbGRlci5h
cHBlbmROdW1iZXIoZWxlbWVudC0+aXNGb2N1c2VkKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFNlbGVjdGFibGU6ICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzU2VsZWN0YWJsZSgpKTsKLSAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhTZWxlY3Rl
ZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNTZWxlY3RlZCgpKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
QVhNdWx0aVNlbGVjdGFibGU6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQt
PmlzTXVsdGlTZWxlY3RhYmxlKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotCi0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWEVuYWJsZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKGVsZW1lbnQtPmlzRW5hYmxlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
LQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhFeHBhbmRlZDogIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNFeHBhbmRlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhSZXF1aXJlZDogIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNSZXF1aXJlZCgpKTsKLSAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhDaGVja2Vk
OiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0NoZWNrZWQoKSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRm9jdXNhYmxl
OiAiLCBlbGVtZW50LT5pc0ZvY3VzYWJsZSgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
QVhGb2N1c2VkOiAiLCBlbGVtZW50LT5pc0ZvY3VzZWQoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5h
cHBlbmQoIkFYU2VsZWN0YWJsZTogIiwgZWxlbWVudC0+aXNTZWxlY3RhYmxlKCksICdcbicpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFNlbGVjdGVkOiAiLCBlbGVtZW50LT5pc1NlbGVjdGVkKCks
ICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWE11bHRpU2VsZWN0YWJsZTogIiwgZWxlbWVu
dC0+aXNNdWx0aVNlbGVjdGFibGUoKSwgJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYRW5h
YmxlZDogIiwgZWxlbWVudC0+aXNFbmFibGVkKCksICdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCJBWEV4cGFuZGVkOiAiLCBlbGVtZW50LT5pc0V4cGFuZGVkKCksICdcbicpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCJBWFJlcXVpcmVkOiAiLCBlbGVtZW50LT5pc1JlcXVpcmVkKCksICdcbicpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJBWENoZWNrZWQ6ICIsIGVsZW1lbnQtPmlzQ2hlY2tlZCgpLCAn
XG4nKTsKIAogICAgIFN0cmluZyB1cmwgPSBlbGVtZW50LT51cmwoKS0+c3RyaW5nKCk7Ci0gICAg
aWYgKCF1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVybCk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIH0KKyAgICBpZiAoIXVybC5pc0VtcHR5KCkp
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVybCwgJ1xuJyk7CiAKICAgICAvLyBXZSBhcHBlbmQg
dGhlIEFUSyBzcGVjaWZpYyBhdHRyaWJ1dGVzIGFzIGEgc2luZ2xlIGxpbmUgYXQgdGhlIGVuZC4K
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYUGxhdGZvcm1BdHRyaWJ1dGVzOiAiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZChnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyhlbGVtZW50LT5wbGF0
Zm9ybVVJRWxlbWVudCgpLmdldCgpLCBPYmplY3RBdHRyaWJ1dGVUeXBlKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoIkFYUGxhdGZvcm1BdHRyaWJ1dGVzOiAiLCBnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0
cmluZyhlbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpLmdldCgpLCBPYmplY3RBdHRyaWJ1dGVU
eXBlKSk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtNjY1LDEwICs2
MTQsOCBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNyZWF0ZVN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogCi0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWxlbWVudHMuYmVnaW4oKTsg
aXQgIT0gZWxlbWVudHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0
cmlidXRlc09mRWxlbWVudChjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPihpdC0+
Z2V0KCkpKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG4tLS0tLS0tLS0tLS1c
biIpOwotICAgIH0KKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBlbGVtZW50cy5iZWdpbigpOyBpdCAhPSBlbGVtZW50
cy5lbmQoKTsgKytpdCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlc09mRWxlbWVu
dChjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPihpdC0+Z2V0KCkpKSwgIlxuLS0t
LS0tLS0tLS0tXG4iKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CkBAIC0xNzIyLDggKzE2Njks
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJCiAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwogCiAgICAgLy8gVGhlIGRlZmF1bHQgdGV4dCBhdHRyaWJ1dGVzIGFw
cGx5IHRvIHRoZSBlbnRpcmUgZWxlbWVudC4KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxu
XHREZWZhdWx0IHRleHQgYXR0cmlidXRlczpcblx0XHQiKTsKLSAgICBidWlsZGVyLmFwcGVuZChh
dHRyaWJ1dGVTZXRUb1N0cmluZyhnZXRBdHRyaWJ1dGVTZXQobV9lbGVtZW50LmdldCgpLCBUZXh0
QXR0cmlidXRlVHlwZSksICJcblx0XHQiKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxuXHREZWZh
dWx0IHRleHQgYXR0cmlidXRlczpcblx0XHQiLCBhdHRyaWJ1dGVTZXRUb1N0cmluZyhnZXRBdHRy
aWJ1dGVTZXQobV9lbGVtZW50LmdldCgpLCBUZXh0QXR0cmlidXRlVHlwZSksICJcblx0XHQiKSk7
CiAKICAgICAvLyBUaGUgYXR0cmlidXRlIHJ1biBwcm92aWRlcyBhdHRyaWJ1dGVzIHNwZWNpZmlj
IHRvIHRoZSByYW5nZSBvZiB0ZXh0IGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgogICAgIEF0a1Rl
eHQqIHRleHQgPSBBVEtfVEVYVChtX2VsZW1lbnQuZ2V0KCkpOwpAQCAtMTczMSwxMCArMTY3Nyw3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUkKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsb2NhdGlvbjsgaSA8IGxvY2F0aW9uICsgbGVuZ3RoOyBpID0gZW5kKSB7CiAg
ICAgICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX3RleHRfZ2V0X3J1bl9h
dHRyaWJ1dGVzKHRleHQsIGksICZzdGFydCwgJmVuZCk7CiAgICAgICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHN1YnN0cmluZyhyZXBsYWNlQ2hhcmFjdGVyc0ZvclJlc3VsdHMoYXRrX3RleHRfZ2V0X3Rl
eHQodGV4dCwgc3RhcnQsIGVuZCkpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJc
blx0UmFuZ2UgYXR0cmlidXRlcyBmb3IgJyIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChzdWJz
dHJpbmcuZ2V0KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIic6XG5cdFx0Iik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0dHJpYnV0ZVNldFRvU3RyaW5nKGF0dHJpYnV0ZVNl
dCwgIlxuXHRcdCIpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuXHRSYW5nZSBhdHRyaWJ1
dGVzIGZvciAnIiwgc3Vic3RyaW5nLmdldCgpLCAiJzpcblx0XHQiLCBhdHRyaWJ1dGVTZXRUb1N0
cmluZyhhdHRyaWJ1dGVTZXQsICJcblx0XHQiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKQEAgLTIyNzgsNyArMjIyMSw2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdB
dE9mZnNldCgKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CiAKICAgICBnaW50IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7Ci0gICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogCiAgICAgQXRrVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5OwogICAgIHN3
aXRjaCAoYm91bmRhcnkpIHsKQEAgLTIyOTgsMTMgKzIyNDAsOCBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gc3RyaW5nQXRPZmZzZXQoCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKDAsIDApOwogICAgIH0KIAotICAgIGJ1aWxkZXIuYXBwZW5kKGF0a190ZXh0
X2dldF9zdHJpbmdfYXRfb2Zmc2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGdy
YW51bGFyaXR5LCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpKTsKLQotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzdGFydE9mZnNldCk7
Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVuZE9mZnNldCk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIHN0cmluZyA9IG1h
a2VTdHJpbmcoYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoQVRLX1RFWFQoZWxlbWVudC5n
ZXQoKSksIG9mZnNldCwgZ3JhbnVsYXJpdHksICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCksICIs
ICIsIHN0YXJ0T2Zmc2V0LCAiLCAiLCBlbmRPZmZzZXQpOworICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmcudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNl
dChpbnQgb2Zmc2V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386591</attachid>
            <date>2020-01-01 16:52:34 -0800</date>
            <delta_ts>2020-01-02 11:32:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205671-20200101165234.patch</filename>
            <type>text/plain</type>
            <size>41020</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTAxLTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBTdHJpbmdCdWlsZGVyIEFQSS9hbGlnbiB3aXRoIG1ha2VTdHJpbmcgYnkgcmVtb3Zp
bmcgYXBwZW5kRml4ZWQqIGZ1bmN0aW9ucyBhbmQgdXNpbmcgRm9ybWF0TnVtYmVyIHN0cnVjdCBp
bnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVj
dXRpb25UaW1lTGltaXQpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjpkdW1wIGNvbnN0KToKKyAgICAgICAgUmVwbGFj
ZSBhbGwgdXNlcyBvZiBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKC4uLikgd2l0
aCBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKC4uLikpLgor
CiAyMDIwLTAxLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBE
ZWNsYXJlIHNvbWUgY2xhc3NlcyBhcyBmaW5hbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAko
cmV2aXNpb24gMjUzOTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVj
dXRpb25UaW1lTGltaXRUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBA
IGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRl
ciBzY3JpcHRCdWlsZGVyOwogICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGls
ZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BV
VGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNl
Y29uZHMoKSk7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29u
ZHMoKSkpOwogICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFr
OyB9IH0gZm9vKCk7Iik7CiAKICAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKQEAgLTI0MSw3ICsyNDEsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid1c2Ugc3RyaWN0JzsiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlmIChpICUgMTAwMCA9PT0gMCkg
eyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYgKGN1cnJlbnRD
UFVUaW1lKCkgLSBzdGFydFRpbWUgPiIpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5z
ZWNvbmRzKCkpOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZC5zZWNv
bmRzKCkpKTsKICAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICAg
ICkgeyByZXR1cm47IH0iKTsKICAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiICAgIH0iKTsKICAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAg
IHJldHVybiByZWN1cnNlKGkgKyAxKTsgfSIpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nQnVp
bGRlciBzY3JpcHRCdWlsZGVyOwogICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB0
cnkgeyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChj
dXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0gICAgICAgICAgICBzY3JpcHRCdWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2
ZUZpcmVkLnNlY29uZHMoKSk7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkLnNlY29uZHMoKSkpOwogICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIpIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9IH0gZm9vKCk7Iik7CiAKICAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTMyMCw3ICszMjAsNyBAQCBpbnQg
dGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKICAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUo
KTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3Vy
cmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOwotICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVG
aXJlZC5zZWNvbmRzKCkpOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJl
ZC5zZWNvbmRzKCkpKTsKICAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
KSBicmVhazsgfSB9IGZvbygpOyIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKU1N0cmlu
Z1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0zNTksNyArMzU5LDcgQEAgaW50IHRlc3RF
eGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBTdHJpbmdCdWls
ZGVyIHNjcmlwdEJ1aWxkZXI7CiAgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVy
YWwoImZ1bmN0aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdo
aWxlICh0cnVlKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRD
UFVUaW1lKCkgLSBzdGFydFRpbWUgPiAiKTsKLSAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQu
c2Vjb25kcygpKTsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQuc2Vj
b25kcygpKSk7CiAgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZExpdGVyYWwoIikgYnJl
YWs7IH0gfSBmb28oKTsiKTsKIAogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtMzk4LDcgKzM5OCw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0
KCkKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwogICAgICAgICAg
ICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFy
dFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0g
ICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1heEJ1
c3lMb29wVGltZS5zZWNvbmRzKCkpOyAvLyBpbiBzZWNvbmRzLgorICAgICAgICAgICAgc2NyaXB0
QnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtYXhCdXN5TG9v
cFRpbWUuc2Vjb25kcygpKSk7IC8vIGluIHNlY29uZHMuCiAgICAgICAgICAgICBzY3JpcHRCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIikgYnJlYWs7IH0gfSBmb28oKTsiKTsKIAogICAgICAgICAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIGlu
dCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBz
Y3JpcHRCdWlsZGVyOwogICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJm
dW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAo
dHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGlt
ZSgpIC0gc3RhcnRUaW1lID4gIik7Ci0gICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29u
ZHMoKSk7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkLnNlY29uZHMo
KSkpOwogICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9
IH0gZm9vKCk7Iik7CiAKICAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNTM5NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBPcHRpb25SZWFk
ZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdQogICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlciht
X3NpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2RvdWJsZSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9k
b3VibGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpJbnQzMjoK
ICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9pbnQzMik7CkluZGV4OiBTb3VyY2UvV1RG
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24g
MjUzOTcyKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOCBAQAorMjAyMC0wMS0wMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgU2ltcGxpZnkgU3RyaW5nQnVpbGRlciBBUEkvYWxpZ24gd2l0aCBtYWtlU3RyaW5nIGJ5
IHJlbW92aW5nIGFwcGVuZEZpeGVkKiBmdW5jdGlvbnMgYW5kIHVzaW5nIEZvcm1hdE51bWJlciBz
dHJ1Y3QgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gYW4gb25nb2luZyBhdHRlbXB0IHRvIHNpbXBsaWZ5IHRoZSBTdHJpbmdCdWlsZGVy
IGludGVyZmFjZSBhbmQgdW5pZnkgaXQncyBmdW5jdGlvbmFsaXR5IHdpdGggbWFrZVN0cmluZywK
KyAgICAgICAgdGhpcyBjaGFuZ2UgcmVtb3ZlcyBhcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcigp
IGFuZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKCksIHJlcGxhY2luZyB0aGVpciB1c2VzCisgICAg
ICAgIHdpdGggZGlyZWN0IGNhbGxzIHRvIGFwcGVuZCgpLCB1c2luZyBhIEZvcm1hdHRlZE51bWJl
ciBvYmplY3QgdG8gZGlyZWN0IGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBTdHJpbmdUeXBlQWRhcHRl
ci4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdC
dWlsZGVyOjphcHBlbmRGaXhlZFdpZHRoTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3Zl
IFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKCkgYW5kIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoKS4gVGhlIHNhbWUgZnVuY3Rpb25hbGl0eQor
ICAgICAgICBpcyBhdmFpbGFibGUgYW5kIG1vcmUgZmxleGlibGUgYnkgcGFzc2luZyBGb3JtYXR0
ZWROdW1iZXJzIHRvIHRoZSB2YXJpYWRpYyBhcHBlbmQoKSBmdW5jdGlvbi4KKyAgICAgICAgCisg
ICAgICAgICogd3RmL3RleHQvVGV4dFN0cmVhbS5jcHA6CisgICAgICAgIChXVEY6OlRleHRTdHJl
YW06Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHd0Zi9NZWRpYVRpbWUuY3BwOgorICAgICAgICAo
V1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgUmVwbGFjZSBhbGwgdXNl
cyBvZiBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKC4uLikgd2l0aCBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKC4uLikpCisgICAgICAgIGFu
ZCBidWlsZGVyLmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoLi4uKSB3aXRoIHdpdGggYnVpbGRlci5h
cHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKC4uLikpCisKIDIwMTktMTItMjAgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRpZHkgYSBiaXQgb2YgU3Ry
aW5nQnVpbGRlciB1c2FnZQpJbmRleDogU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCShyZXZpc2lvbiAyNTM5NzIp
CisrKyBTb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQs
NyArNTk0LDcgQEAgU3RyaW5nIE1lZGlhVGltZTo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihtX3RpbWVTY2FsZSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiID0gIik7CiAgICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIodG9Eb3VibGUoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0b0RvdWJsZSgpKSk7CiAgICAgaWYgKGlzSW52YWxpZCgpKQogICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaW52YWxpZCIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCd9Jyk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9u
IDI1Mzk3MikKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyMiwxOCArNDIyLDYgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRO
dW1iZXIodW5zaWduZQogICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4o
bnVtYmVyLCB0aGlzKTsKIH0KIAotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihmbG9hdCBudW1iZXIsIHVuc2lnbmVkIHByZWNpc2lvbiwgVHJhaWxpbmdaZXJv
c1RydW5jYXRpbmdQb2xpY3kgcG9saWN5KQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1
ZmZlcjsKLSAgICBhcHBlbmQobnVtYmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhudW1iZXIsIHBy
ZWNpc2lvbiwgYnVmZmVyLCBwb2xpY3kgPT0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKSk7Ci19Ci0K
LXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZG91YmxlIG51
bWJlciwgdW5zaWduZWQgcHJlY2lzaW9uLCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSBw
b2xpY3kpCi17Ci0gICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIGFwcGVuZChu
dW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKG51bWJlciwgcHJlY2lzaW9uLCBidWZmZXIsIHBv
bGljeSA9PSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpKTsKLX0KLQogdm9pZCBTdHJpbmdCdWlsZGVy
OjphcHBlbmROdW1iZXIoZmxvYXQgbnVtYmVyKQogewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVy
IGJ1ZmZlcjsKQEAgLTQ0NiwxOCArNDM0LDYgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRO
dW1iZXIoZG91YmxlIAogICAgIGFwcGVuZChudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcikp
OwogfQogCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZmxvYXQg
bnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQotewotICAgIE51bWJlclRvU3RyaW5nQnVm
ZmVyIGJ1ZmZlcjsKLSAgICBhcHBlbmQobnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKG51bWJlciwg
ZGVjaW1hbFBsYWNlcywgYnVmZmVyKSk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
Rml4ZWRXaWR0aE51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQot
ewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICBhcHBlbmQobnVtYmVyVG9G
aXhlZFdpZHRoU3RyaW5nKG51bWJlciwgZGVjaW1hbFBsYWNlcywgYnVmZmVyKSk7Ci19Ci0KIGJv
b2wgU3RyaW5nQnVpbGRlcjo6Y2FuU2hyaW5rKCkgY29uc3QKIHsKICAgICBpZiAoaGFzT3ZlcmZs
b3dlZCgpKQpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDI1
Mzk3MikKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjgsMTEgKzIyOCw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFw
cGVuZE51bWJlcihkb3VibGUpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIoZmxvYXQsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWls
aW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihkb3VibGUs
IHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0g
VHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmRGaXhlZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGRvdWJsZSwgdW5z
aWduZWQgZGVjaW1hbFBsYWNlcyk7Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdU
eXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwogCiAgICAgU3RyaW5nIHRvU3RyaW5n
KCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmNwcAkocmV2aXNpb24gMjUzOTcyKQor
KysgU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNyArOTMsNyBAQCBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGZsb2F0CiAg
ICAgaWYgKG1fZm9ybWF0dGluZ0ZsYWdzICYgRm9ybWF0dGluZzo6TnVtYmVyUmVzcGVjdGluZ0lu
dGVnZXJzKQogICAgICAgICByZXR1cm4gKnRoaXMgPDwgRm9ybWF0TnVtYmVyUmVzcGVjdGluZ0lu
dGVnZXJzKGYpOwogCi0gICAgbV90ZXh0LmFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZiwgMik7Cisg
ICAgbV90ZXh0LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZiwgMikpOwogICAg
IHJldHVybiAqdGhpczsKIH0KIApAQCAtMTAyLDcgKzEwMiw3IEBAIFRleHRTdHJlYW0mIFRleHRT
dHJlYW06Om9wZXJhdG9yPDwoZG91YmwKICAgICBpZiAobV9mb3JtYXR0aW5nRmxhZ3MgJiBGb3Jt
YXR0aW5nOjpOdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMpCiAgICAgICAgIHJldHVybiAqdGhpcyA8
PCBGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMoZCk7CiAKLSAgICBtX3RleHQuYXBwZW5k
Rml4ZWRXaWR0aE51bWJlcihkLCAyKTsKKyAgICBtX3RleHQuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRXaWR0aChkLCAyKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMjgsNyAr
MTI4LDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdAogVGV4dFN0
cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGb3JtYXROdW1iZXJSZXNwZWN0aW5n
SW50ZWdlcnMmIG51bWJlclRvRm9ybWF0KQogewogICAgIGlmIChoYXNGcmFjdGlvbnMobnVtYmVy
VG9Gb3JtYXQudmFsdWUpKSB7Ci0gICAgICAgIG1fdGV4dC5hcHBlbmRGaXhlZFdpZHRoTnVtYmVy
KG51bWJlclRvRm9ybWF0LnZhbHVlLCAyKTsKKyAgICAgICAgbV90ZXh0LmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgobnVtYmVyVG9Gb3JtYXQudmFsdWUsIDIpKTsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzOTcyKQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMjAtMDEtMDEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IFNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgQVBJL2FsaWduIHdpdGggbWFrZVN0cmluZyBieSByZW1v
dmluZyBhcHBlbmRGaXhlZCogZnVuY3Rpb25zIGFuZCB1c2luZyBGb3JtYXROdW1iZXIgc3RydWN0
IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTY3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogY3NzL0NTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA6CisgICAgICAgICogY3NzL0NTU0tleWZy
YW1lUnVsZS5jcHA6CisgICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwOgorICAgICAgICAqIGh0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9s
bFNuYXBPZmZzZXRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgICog
c3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlUcmFpdHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IFJlcGxhY2UgYWxsIHVzZXMgb2YgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcigu
Li4pIHdpdGggYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbigu
Li4pKQorICAgICAgICBhbmQgYnVpbGRlci5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKC4uLikgd2l0
aCB3aXRoIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aCguLi4pKQor
CiAyMDIwLTAxLTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIFByb3ZpZGUgdGhlIHZpZXdwb3J0IHNpemUgd2hlbiBmYWtpbmcg
SUNCCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNw
cAkocmV2aXNpb24gMjUzOTcyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYXJpYXRp
b25WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgU3RyaW5nIENTU0Zv
bnRWYXJpYXRpb25WYWx1ZTo6Y3VzdG9tQ1NTVAogICAgIGZvciAoY2hhciBjIDogbV90YWcpCiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIg
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3ZhbHVlKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFsdWUp
KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAkocmV2aXNpb24gMjUzOTcyKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgU3RyaW5nIFN0eWxlUnVsZUtleWZyYW1lOjprZXlUZXh0KCkgY29ucwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9rZXlzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQog
ICAgICAgICAgICAga2V5VGV4dC5hcHBlbmQoJywnKTsKLSAgICAgICAga2V5VGV4dC5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihtX2tleXMuYXQoaSkgKiAxMDApOworICAgICAgICBrZXlUZXh0
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fa2V5cy5hdChpKSAqIDEw
MCkpOwogICAgICAgICBrZXlUZXh0LmFwcGVuZCgnJScpOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAkocmV2aXNpb24gMjUz
OTcyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTMgQEAgU3RyaW5nIENTU0N1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb25WYWx1ZQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoImN1YmljLWJlemllcigiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKG1feDEpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24obV94MSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1feTEpOworICAg
IGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV95MSkpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKG1feDIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obV94MikpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1feTIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV95MikpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCcpJyk7ICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CkBAIC03MSwxMyArNzEsMTMgQEAgU3RyaW5nIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFs
dWU6OmN1cwogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoInNwcmluZygiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKG1fbWFzcyk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihtX21hc3MpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9zdGlmZm5lc3MpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9zdGlmZm5lc3MpKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIobV9kYW1waW5nKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKG1fZGFtcGluZykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVp
bGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2luaXRpYWxWZWxvY2l0eSk7CisgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2luaXRpYWxW
ZWxvY2l0eSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyVG9rZW4uY3BwCShyZXZpc2lvbiAyNTM5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDE1ICs0MjEsMTUg
QEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplKFN0cmluZ0J1aQogICAgICAgICAvLyBU
aGVzZSB3b24ndCBwcm9wZXJseSBwcmVzZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVlVHlwZSBmbGFnCiAg
ICAgICAgIGlmIChtX251bWVyaWNTaWduID09IFBsdXNTaWduKQogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJysnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obnVtZXJpY1ZhbHVlKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQZXJjZW50YWdlVG9rZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG51bWVyaWNWYWx1ZSgpKSk7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCclJyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGltZW5zaW9uVG9rZW46
CiAgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJlY3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBh
cyA0MDAwZTIKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1l
cmljVmFsdWUoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24obnVtZXJpY1ZhbHVlKCkpKTsKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmll
cih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFVuaWNvZGVSYW5nZVRva2VuOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNTM5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzMsNyArNTczLDcgQEAgU3RyaW5n
IEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChVUkwoYmFzZSwgY2FuZGlkYXRlLnN0cmluZy50b1N0cmluZygpKS5zdHJpbmcoKSk7CiAg
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlbnNpdHkgIT0gVW5pbml0aWFsaXplZERlc2NyaXB0
b3IpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGNhbmRpZGF0ZS5kZW5zaXR5KTsK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24oY2FuZGlkYXRlLmRlbnNpdHkpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCd4Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291cmNl
V2lkdGggIT0gVW5pbml0aWFsaXplZERlc2NyaXB0b3IpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAko
cmV2aXNpb24gMjUzOTcyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Nj
cm9sbFNuYXBPZmZzZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBzdGF0
aWMgU3RyaW5nIHNuYXBPZmZzZXRzVG9TdHJpbmcoY29uc3QgCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyAiKTsKICAgICBmb3IgKGF1dG8m
IG9mZnNldCA6IHNuYXBPZmZzZXRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRXaWR0
aE51bWJlcihvZmZzZXQudG9GbG9hdCgpLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKG9mZnNldC50b0Zsb2F0KCksIDEpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKQEAg
LTkyLDkgKzkyLDkgQEAgc3RhdGljIFN0cmluZyBzbmFwT2Zmc2V0UmFuZ2VzVG9TdHJpbmcoYwog
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyAiKTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDog
cmFuZ2VzKSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRXaWR0aE51bWJlcihyYW5nZS5zdGFydC50b0Zsb2F0KCksIDEpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgocmFuZ2Uuc3RhcnQu
dG9GbG9hdCgpLCAxKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFdpZHRoTnVtYmVyKHJhbmdlLmVuZC50b0Zsb2F0KCks
IDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgo
cmFuZ2UuZW5kLnRvRmxvYXQoKSwgMSkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IikgIik7CiAgICAgfQogICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNTM5NzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1NCw3ICszNTQsNyBAQCBTdHJpbmcgQ29sb3I6OmNzc1RleHQoKSBjb25zdAogICAgICAg
ICBmbG9hdCByb3VuZGVkID0gcm91bmQoYWxwaGEgKiAxMDAgLyAyNTUuMGYpIC8gMTAwOwogICAg
ICAgICBpZiAocm91bmQocm91bmRlZCAqIDI1NSkgIT0gYWxwaGEpCiAgICAgICAgICAgICByb3Vu
ZGVkID0gcm91bmQoYWxwaGEgKiAxMDAwIC8gMjU1LjBmKSAvIDEwMDA7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocm91bmRlZCk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm91bmRlZCkpOwogICAgIH0K
ICAgICAgICAgCiAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCShyZXZpc2lvbiAy
NTM5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTYgKzU2LDE2IEBAIFN0cmluZyBFeHRlbmRlZENv
bG9yOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdURjo6ZW1wdHlTdHJpbmcoKTsK
ICAgICB9CiAKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJlZCgpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlZCgp
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIoZ3JlZW4oKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbihncmVlbigpKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
IAotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoYmx1ZSgpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGJsdWUoKSkpOwog
ICAgIGlmICghV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhKCksIDEuMGYpKSB7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC8gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIoYWxwaGEoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oYWxwaGEoKSkpOwogICAgIH0KICAgICBidWls
ZGVyLmFwcGVuZCgnKScpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAkocmV2
aXNpb24gMjUzOTcyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNCwzNyArNzA0LDM3
IEBAIHN0YXRpYyB2b2lkIHByaW50SW5kZW50KFN0cmluZ0J1aWxkZXImIGIKIHN0YXRpYyB2b2lk
IHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNmb3Jt
M0QmIHRyYW5zZm9ybSkKIHsKICAgICBidWlsZGVyLmFwcGVuZCgnWycpOwotICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0xMSk7CisgICAgYnVpbGRlci5h
cHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTExKSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9u
TnVtYmVyKHRyYW5zZm9ybS5tMTIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMikpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTEz
KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0xNCk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTE0KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcih0cmFuc2Zvcm0ubTIxKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcp
OwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm0yMik7
CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFu
c2Zvcm0ubTIyKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMjMpOworICAgIGJ1aWxkZXIuYXBwZW5k
KEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMykpOwogICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cih0cmFuc2Zvcm0ubTI0KTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiOyAiKTsK
LSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMzEpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTMyKTsKKyAgICBidWlsZGVyLmFwcGVuZChG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
dHJhbnNmb3JtLm0zMyk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRyYW5zZm9ybS5tMzQpOworICAg
IGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3Jt
Lm0zNCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCI7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm00MSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRy
YW5zZm9ybS5tNDIpOworICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm00MikpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
YnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcih0cmFuc2Zvcm0ubTQzKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
NDMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIodHJhbnNmb3JtLm00NCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQ0KSk7CiAgICAgYnVpbGRlci5h
cHBlbmQoJ10nKTsKIH0KIApAQCAtNzg1LDI1ICs3ODUsMjUgQEAgc3RhdGljIHZvaWQgcHJpbnRM
YXllcihTdHJpbmdCdWlsZGVyJiBidQogICAgIGJ1aWxkZXIuYXBwZW5kKCIoIik7CiAgICAgYnVp
bGRlci5hcHBlbmQobGF5ZXJUeXBlTmFtZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiBbIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllclBvc2l0aW9uLngoKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXll
clBvc2l0aW9uLngoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllclBvc2l0aW9uLnkoKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLnko
KSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihsYXllclBvc2l0aW9uLnooKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLnooKSkpOwogICAgIGJ1
aWxkZXIuYXBwZW5kKCJdIFsiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKGxheWVyQm91bmRzLngoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy54KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJCb3VuZHMu
eSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KGxheWVyQm91bmRzLnkoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihsYXllckJvdW5kcy53aWR0aCgpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQm91bmRz
LndpZHRoKCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJCb3VuZHMuaGVpZ2h0KCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJCb3VuZHMuaGVpZ2h0
KCkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiXSBbIik7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihsYXllckFuY2hvclBvaW50LngoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckFuY2hvclBvaW50LngoKSkp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihsYXllckFuY2hvclBvaW50LnkoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckFuY2hvclBvaW50LnkoKSkpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihsYXllckFuY2hvclBvaW50LnooKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckFuY2hvclBvaW50LnooKSkpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCJdIHN1cGVybGF5ZXI9Iik7CiAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxheWVyLT5zdXBlcmxheWVyKCkpKTsK
IApAQCAtODIyLDcgKzgyMiw3IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRl
ciYgYnUKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIHByaW50SW5kZW50
KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGJvcmRlcldp
ZHRoICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGJvcmRl
cldpZHRoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihib3JkZXJXaWR0aCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAg
IH0KIApAQCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVp
bGRlciYgYnUKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIHByaW50SW5k
ZW50KGJ1aWxkZXIsIGluZGVudCArIDEpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKG9wYWNp
dHkgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobGF5ZXJP
cGFjaXR5KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihsYXllck9wYWNpdHkpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAg
ICB9CiAKQEAgLTkyNywxNSArOTI3LDE1IEBAIFN0cmluZyBQbGF0Zm9ybUNBTGF5ZXJXaW46Omxh
eWVyVHJlZUFzU3QKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFw
cGVuZCgiXG5cbioqIFJlbmRlciB0cmVlIGF0IHRpbWUgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29u
ZHMoKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgKGJvdW5kcyAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHJvb3RCb3VuZHMub3JpZ2luLngpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm9vdEJvdW5kcy5vcmln
aW4ueCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIocm9vdEJvdW5kcy5vcmlnaW4ueSk7CisgICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLm9yaWdpbi55KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKHJvb3RCb3VuZHMuc2l6ZS53aWR0aCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLnNpemUud2lkdGgpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgneCcpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIocm9vdEJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyb290Qm91bmRzLnNpemUuaGVpZ2h0KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoIikgKipcblxuIik7CiAKICAgICAvLyBQcmludCBsYXllciB0cmVlIGZy
b20gdGhlIHJvb3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHJldmlzaW9u
IDI1Mzk3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUxLDcgKzY1MSw3IEBAIFN0
cmluZyBidWlsZFZhcmlhdGlvblNldHRpbmdzKEZUX0ZhY2UgZmEKICAgICAgICAgYnVpbGRlci5h
cHBlbmQodmFyaWF0aW9uLmtleVsyXSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhcmlhdGlv
bi5rZXlbM10pOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnPScpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHZhcmlhdGlvbi52YWx1ZSk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odmFyaWF0aW9uLnZh
bHVlKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJKHJldmlzaW9uIDI1Mzk3MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCiAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKIAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcihudW1iZXItPnZhbHVlKCkpOworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihudW1iZXItPnZhbHVlKCkp
KTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9u
IDI1Mzk3MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDE1ICs1NywxNSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRGbGFn
KFN0cmluZ0J1aWxkZXImIHN0CiAKIHN0YXRpYyB2b2lkIGFwcGVuZE51bWJlcihTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBmbG9hdCBudW1iZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1iZXIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obnVtYmVyKSk7CiAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyAnKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kUG9pbnQoU3RyaW5n
QnVpbGRlciYgc3RyaW5nQnVpbGRlciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC54KCkpOworICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9p
bnQueCgpKSk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBvaW50LnkoKSk7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihwb2ludC55KCkpKTsK
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9pbnRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BvaW50TGlzdC5oCShyZXZpc2lvbiAyNTM5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9pbnRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKIAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihwb2ludC0+eCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24ocG9pbnQtPngoKSkpOwogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIocG9pbnQtPnkoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHBvaW50LT55KCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtVmFsdWUuaAkocmV2aXNpb24gMjUzOTcyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkgJiYgYnVpbGRlcltidWlsZGVy
Lmxlbmd0aCgpIC0gMV0gIT0gJygnKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihudW1iZXIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG51bWJl
cikpOwogICAgICAgICBhcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcnMoYnVpbGRlciwgbnVtYmVy
cy4uLik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDI1Mzk3MikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCw5ICsxNDAsOSBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD4gewog
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgRmxvYXRQb2ludCYgdHlwZSkKICAgICB7
CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRG
aXhlZFByZWNpc2lvbk51bWJlcih0eXBlLngoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHlwZS54KCkpKTsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cih0eXBlLnkoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHlwZS55KCkpKTsKICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9CiB9OwpAQCAtMTY3LDEzICsxNjcsMTMgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzPEZsb2F0UmVjdD4gewogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgRmxvYXRS
ZWN0JiB0eXBlKQogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUueCgpKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLngoKSkp
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKHR5cGUueSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0eXBlLnkoKSkpOwogICAgICAgICBidWlsZGVy
LmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVy
KHR5cGUud2lkdGgoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odHlwZS53aWR0aCgpKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIodHlwZS5oZWln
aHQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHlwZS5oZWlnaHQoKSkpOwogICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZp
c2lvbiAyNTM5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2ODcsMTMgKzE2ODcsMTMgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJ
bnRlcm5hbHM6OmR1bXBNYXJrZQogICAgIHJlY3RTdHJpbmcuYXBwZW5kTGl0ZXJhbCgibWFya2Vy
IHJlY3RzOiAiKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0cykgewogICAgICAg
ICByZWN0U3RyaW5nLmFwcGVuZCgnKCcpOwotICAgICAgICByZWN0U3RyaW5nLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHJlY3QueCgpKTsKKyAgICAgICAgcmVjdFN0cmluZy5hcHBlbmQoRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyZWN0LngoKSkpOwogICAgICAgICByZWN0U3Ry
aW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIocmVjdC55KCkpOworICAgICAgICByZWN0U3RyaW5nLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlY3QueSgpKSk7CiAgICAgICAgIHJlY3RTdHJp
bmcuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgcmVjdFN0cmluZy5hcHBlbmRGaXhlZFBy
ZWNpc2lvbk51bWJlcihyZWN0LndpZHRoKCkpOworICAgICAgICByZWN0U3RyaW5nLmFwcGVuZChG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJlY3Qud2lkdGgoKSkpOwogICAgICAgICBy
ZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlY3RTdHJpbmcuYXBwZW5k
Rml4ZWRQcmVjaXNpb25OdW1iZXIocmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHJlY3RTdHJpbmcu
YXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC5oZWlnaHQoKSkpOwog
ICAgICAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIikgIik7CiAgICAgfQogICAgIHJldHVy
biByZWN0U3RyaW5nLnRvU3RyaW5nKCk7CkBAIC0zNDQ3LDE0ICszNDQ3LDE0IEBAIEV4Y2VwdGlv
bk9yPFN0cmluZz4gSW50ZXJuYWxzOjpnZXRDdXJyZW4KICAgICBpZiAoY3Vyc29yLmltYWdlKCkp
IHsKICAgICAgICAgRmxvYXRTaXplIHNpemUgPSBjdXJzb3IuaW1hZ2UoKS0+c2l6ZSgpOwogICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGltYWdlPSIpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgcmVzdWx0LmFw
cGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHNpemUud2lkdGgoKSkpOwogICAg
ICAgICByZXN1bHQuYXBwZW5kKCd4Jyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihzaXplLmhlaWdodCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHNpemUuaGVpZ2h0KCkpKTsKICAgICB9CiAjaWYgRU5B
QkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKICAgICBpZiAoY3Vyc29yLmltYWdlU2NhbGVGYWN0b3Io
KSAhPSAxKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgc2NhbGU9Iik7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihjdXJzb3IuaW1hZ2VTY2FsZUZh
Y3RvcigpLCA4KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCksIDgpKTsKICAgICB9CiAjZW5kaWYK
ICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjUz
OTcyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMC0wMS0wMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgU2ltcGxpZnkgU3RyaW5nQnVpbGRlciBBUEkvYWxpZ24gd2l0aCBtYWtlU3RyaW5nIGJ5
IHJlbW92aW5nIGFwcGVuZEZpeGVkKiBmdW5jdGlvbnMgYW5kIHVzaW5nIEZvcm1hdE51bWJlciBz
dHJ1Y3QgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YXNKU09OIGNvbnN0KToKKyAgICAgICAgKiBT
aGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdhbWVwYWRE
YXRhOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgUmVwbGFjZSBhbGwgdXNlcyBvZiBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKC4uLikgd2l0aCBidWlsZGVyLmFwcGVu
ZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKC4uLikpLgorCiAyMDE5LTEyLTIyICBK
ZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdXNlci12aXNp
YmxlIGNvcHlyaWdodCBzdHJpbmdzIHRvIGluY2x1ZGUgMjAyMApJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNp
b24gMjUzOTcyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBDYWNoZTo6
ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZE51bWJlcih0
b3RhbHMuYm9keVNpemUpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiLFxu
Iik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJcImF2ZXJhZ2VXb3J0aFwi
OiAiKTsKLSAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHRv
dGFscy5jb3VudCA/IHRvdGFscy53b3J0aCAvIHRvdGFscy5jb3VudCA6IDApOworICAgICAgICAg
ICAgZXBpbG9ndWUuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odG90YWxz
LmNvdW50ID8gdG90YWxzLndvcnRoIC8gdG90YWxzLmNvdW50IDogMCkpOwogICAgICAgICAgICAg
ZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVu
ZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0byB3cml0ZURhdGEgPSBlcGlsb2d1
ZS50b1N0cmluZygpLnV0ZjgoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCShyZXZpc2lvbiAyNTM5
NzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDEzICsyMTksMTMgQEAgdm9pZCBFbnRyeTo6
YXNKU09OKFN0cmluZ0J1aWxkZXImIGpzb24sIAogICAgIGpzb24uYXBwZW5kTnVtYmVyKGluZm8u
Ym9keVNpemUpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBl
bmRMaXRlcmFsKCJcIndvcnRoXCI6ICIpOwotICAgIGpzb24uYXBwZW5kRml4ZWRQcmVjaXNpb25O
dW1iZXIoaW5mby53b3J0aCk7CisgICAganNvbi5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihpbmZvLndvcnRoKSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsK
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicGFydGl0aW9uXCI6ICIpOwogICAgIGpzb24uYXBw
ZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5wYXJ0aXRpb24oKSk7CiAgICAganNvbi5hcHBlbmRM
aXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwidGltZXN0YW1wXCI6ICIp
OwotICAgIGpzb24uYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV90aW1lU3RhbXAuc2Vjb25k
c1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSk7CisgICAganNvbi5hcHBlbmQoRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3RpbWVTdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLm1p
bGxpc2Vjb25kcygpKSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29u
LmFwcGVuZExpdGVyYWwoIlwiVVJMXCI6ICIpOwogICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCShyZXZpc2lvbiAyNTM5NzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw3IEBAIFN0cmluZyBHYW1lcGFkRGF0YTo6bG9nZ2luZ1N0cmluZygpIGNv
bnMKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQXhpcyAiKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoaSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2F4aXNWYWx1
ZXNbaV0pOworICAgICAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKG1fYXhpc1ZhbHVlc1tpXSkpOwogICAgIH0KIAogICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFN0cmluZyBHYW1lcGFkRGF0YTo6bG9nZ2luZ1N0cmlu
ZygpIGNvbnMKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQnV0dG9uICIpOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1f
YnV0dG9uVmFsdWVzW2ldKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihtX2J1dHRvblZhbHVlc1tpXSkpOwogICAgIH0KIAogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM5NzIpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0wMSAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgU3RyaW5nQnVpbGRlciBBUEkv
YWxpZ24gd2l0aCBtYWtlU3RyaW5nIGJ5IHJlbW92aW5nIGFwcGVuZEZpeGVkKiBmdW5jdGlvbnMg
YW5kIHVzaW5nIEZvcm1hdE51bWJlciBzdHJ1Y3QgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjcxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgUmVwbGFj
ZSBhbGwgdXNlcyBvZiBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKC4uLikgd2l0
aCBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKC4uLikpLgor
CiAyMDE5LTEyLTMxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXUEVdIE9wZW5KUEVHIG1pc3NpbmcgaW4gaW5zdGFsbCBkZXBlbmRl
bmNpZXMgc2NyaXB0LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAJKHJldmlzaW9uIDI1Mzk3MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01ODMsMTUgKzU4MywxNSBAQCBTdHJpbmcgYXR0cmlidXRlc09mRWxlbWVudChBY2Nl
c3NpYmlsaXR5CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkFYUG9zaXRpb246ICB7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIoZWxlbWVudC0+eCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcyk7CisgICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT54KCks
IDYsIEtlZXBUcmFpbGluZ1plcm9zKSk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZWxlbWVudC0+eSgpLCA2
LCBLZWVwVHJhaWxpbmdaZXJvcyk7CisgICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT55KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSk7CiAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgfVxuIik7CiAKICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIkFYU2l6ZTogeyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKGVsZW1lbnQtPndpZHRoKCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKKyAgICBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVsZW1lbnQtPndpZHRoKCks
IDYsIEtlZXBUcmFpbGluZ1plcm9zKSk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoZWxlbWVudC0+aGVpZ2h0
KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKTsKKyAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVsZW1lbnQtPmhlaWdodCgpLCA2LCBLZWVwVHJhaWxpbmda
ZXJvcykpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIH1cbiIpOwogCiAgICAgU3RyaW5n
IHRpdGxlID0gZWxlbWVudC0+dGl0bGUoKS0+c3RyaW5nKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>