<?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>200756</bug_id>
          
          <creation_ts>2019-08-14 20:46:50 -0700</creation_ts>
          <short_desc>Rename StringBuilder::flexibleAppend(...) to StringBuilder::append(...)</short_desc>
          <delta_ts>2019-08-17 11:50:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1561452</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-14 20:46:50 -0700</bug_when>
    <thetext>Rename StringBuilder::flexibleAppend(...) to StringBuilder::append(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561453</commentid>
    <comment_count>1</comment_count>
      <attachid>376349</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-14 20:52:32 -0700</bug_when>
    <thetext>Created attachment 376349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561474</commentid>
    <comment_count>2</comment_count>
      <attachid>376349</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-14 23:04:11 -0700</bug_when>
    <thetext>Comment on attachment 376349
Patch

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

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-dfg-eager-no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562378</commentid>
    <comment_count>3</comment_count>
      <attachid>376584</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-16 20:07:42 -0700</bug_when>
    <thetext>Created attachment 376584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562383</commentid>
    <comment_count>4</comment_count>
      <attachid>376585</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-16 20:17:36 -0700</bug_when>
    <thetext>Created attachment 376585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562475</commentid>
    <comment_count>5</comment_count>
      <attachid>376608</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-17 07:44:34 -0700</bug_when>
    <thetext>Created attachment 376608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562476</commentid>
    <comment_count>6</comment_count>
      <attachid>376609</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-17 08:04:27 -0700</bug_when>
    <thetext>Created attachment 376609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562487</commentid>
    <comment_count>7</comment_count>
      <attachid>376609</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 11:19:14 -0700</bug_when>
    <thetext>Comment on attachment 376609
Patch

A next cleanup step would be to remove other overloads of StringBuilder::append that are redundant because append(...) does the same thing (even with one argument).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562491</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 11:46:23 -0700</bug_when>
    <thetext>And then another is to change most appendNumber callers to just call append, since it does there right thing. And remove most appendNumber overloads.

Then consider removing appendFixedPrecisionNumber and appendFixedWidthNumber and use FormattedNumber instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562493</commentid>
    <comment_count>9</comment_count>
      <attachid>376609</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-17 11:49:44 -0700</bug_when>
    <thetext>Comment on attachment 376609
Patch

Clearing flags on attachment: 376609

Committed r248822: &lt;https://trac.webkit.org/changeset/248822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562494</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-17 11:49:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562495</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-17 11:50:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/54430185&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376349</attachid>
            <date>2019-08-14 20:52:32 -0700</date>
            <delta_ts>2019-08-16 20:07:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200756-20190814205232.patch</filename>
            <type>text/plain</type>
            <size>76227</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg3MDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA4LTE0ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBl
bmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgdGhlcmUgYXJlIG5vIHJlbWFp
bmluZyBtdWx0aS1wYXJhbWV0ZXIgb3IgYmVoYXZpb3IgY2hhbmdpbmcgb3ZlcmxvYWRzCisgICAg
ICAgIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLCB3ZSBjYW4gcmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikKKyAgICAgICAgdG8gU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKC4uLikuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBsZWF2ZXMgdGhlIGV4aXN0
aW5nIHNpbmdsZSBwYXJhbWV0ZXIgb3ZlcmxvYWRzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4p
CisgICAgICAgIGZvciBub3csIGFuZCBzaW5jZSB0aGV5IGhhdmUgc3BlY2lmeSBzcGVjaWZpYyB0
eXBlcywgdGhleSB3aWxsIGNvbnRpbnVlIHRvIGJlIHByZWZlcmVkCisgICAgICAgIGluIG92ZXJs
b2FkIHJlc29sdXRpb24uIE9uY2Ugd2UgaGF2ZSBjb25jbHVkZWQgdGhlIHZhcmlhZGljIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIGNhbiBwcm92aWRlIHRoZSBzYW1lIHBlcmZv
cm1hbmNlIGFzIHRoZSBzaW5nbGUgcGFyYW1ldGVyIHZhcmlhbnQsIHdlIGNhbiByZW1vdmUgdGhl
CisgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgdmFyaWFudC4KKworICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgZnJvbSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4p
IHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCiAyMDE5LTA4LTE0ICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUgc2hvdWxkIGxvZyBlcnJvciBzdGF0dXMgKDE3ODM0NykKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkocmV2aXNpb24gMjQ4NzA2KQorKysgU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA4LDcgKzMwOCw3IEBAIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1YK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CiAg
ICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICBidWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCcvJywgY29tcG9uZW50KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8n
LCBjb21wb25lbnQpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDg3MDYpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDgg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhl
ZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQg
ZGVjaW1hbFBsYWNlcyk7CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGFwcGVuZCguLi4pIGFm
dGVyIHJlbmFtaW5nIGFueSBvdmVybG9hZHMgb2YgYXBwZW5kIHRoYXQgdGFrZSBtb3JlIHRoYW4g
b25lIGFyZ3VtZW50LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiB2b2lk
IGZsZXhpYmxlQXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwogCiAgICAgU3RyaW5n
IHRvU3RyaW5nKCkKICAgICB7CkBAIC0zNjgsNyArMzY3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUq
IGdldEJ1ZmZlckNoYXJhY3RlcnMoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlm
eVN0cmluZygpIGNvbnN0OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFk
YXB0ZXJzPiB2b2lkIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVy
cy4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPiB2b2lk
IGFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4pOwogCiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9zdHJpbmc7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fYnVmZmVyOwpAQCAt
Mzk5LDcgKzM5OCw3IEBAIEFMV0FZU19JTkxJTkUgVUNoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEIK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPgotdm9pZCBTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMu
Li4gYWRhcHRlcnMpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZyb21BZGFwdGVycyhTdHJp
bmdUeXBlQWRhcHRlcnMuLi4gYWRhcHRlcnMpCiB7CiAgICAgYXV0byByZXF1aXJlZExlbmd0aCA9
IGNoZWNrZWRTdW08aW50MzJfdD4obV9sZW5ndGgsIGFkYXB0ZXJzLmxlbmd0aCgpLi4uKTsKICAg
ICBpZiAocmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CkBAIC00MjUsOSArNDI0LDkg
QEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KLXZvaWQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVB
cHBlbmQoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3ZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
KFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCiB7Ci0gICAgZmxleGlibGVBcHBlbmRGcm9tQWRhcHRl
cnMoU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZXM+KHN0cmluZ3MpLi4uKTsKKyAgICBhcHBl
bmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZXM+KHN0cmluZ3MpLi4u
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI0ODcwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTA4LTE0ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQo
Li4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFtZSBm
cm9tIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xk
aW5nOjplbWl0UmVzb3VyY2VTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRCdWlsdEluc1NpZ25hdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1h
bmdsZWRJbnB1dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkT3V0cHV0UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1Jlc291cmNl
c0FuZE5hbWVkQnVpbHRJbnMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25h
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFVucGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6
OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBl
clR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0UGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpkZWNsYXJlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6ZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6OmlubGluZU5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6ZW1pdE5hbWVk
VHlwZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpUeXBlczo6YXBwZW5kTmFtZVRvKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9u
Z29pbmdMb2Fkc0Rlc2NyaXB0aW9ucyBjb25zdCk6CisKIDIwMTktMDgtMTQgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIFZhcmlhYmxl
cyBzaG91bGRuJ3QgYmUgYWJsZSB0byBoYXZlIHZvaWQgdHlwZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAkocmV2aXNp
b24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RydWN0IFR5cGVz
IHsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVy
KQogICAgIHsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZChUb2tlbjo6dHlwZU5hbWUo
dCksICIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCksICIs
ICIpOwogICAgICAgICBUeXBlczx0cy4uLj46OmFwcGVuZE5hbWVUbyhidWlsZGVyKTsKICAgICB9
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNw
cAkocmV2aXNpb24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNyArMTQyLDcgQEAgRW50cnlQb2ludFNjYWZmb2xkaW5nOjpFbnRyeVBvaW50U2NhZmZv
bAogdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCJzdHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4i
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX25hbWVkQmluZEdy
b3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPHVu
c2lnbmVkLCBTdHJpbmc+PiBzdHJ1Y3RJdGVtczsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgYXV0
byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0p
OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVz
b3VyY2UKICAgICAgICAgICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmlnaHQuZmlyc3Q7CiAgICAg
ICAgIH0pOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVt
cykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBzdHJ1
Y3RJdGVtLnNlY29uZCwgJ1xuJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICAgICIsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4nKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn07XG5cbiIpOwogICAgIH0KIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlCiAgICAgICAgIGlmIChpKQogICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIGF1dG8mIG5hbWVkQmluZEdy
b3VwID0gbV9uYW1lZEJpbmRHcm91cHNbaV07Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoImRldmljZSAiLCBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lLCAiJiAiLCBuYW1l
ZEJpbmRHcm91cC52YXJpYWJsZU5hbWUsICIgW1tidWZmZXIoIiwgbmFtZWRCaW5kR3JvdXAuYXJn
dW1lbnRCdWZmZXJJbmRleCwgIildXSIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3Vw
LnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZl
ckluZGV4LCAiKV1dIik7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjQzLDEwICsy
NDMsMTAgQEAgYm9vbCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRCdWlsdElucwogICAgICAg
ICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4o
Kml0ZW0uc2VtYW50aWMpOwogICAgICAgICBhdXRvIGludGVybmFsVHlwZSA9IGludGVybmFsVHlw
ZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYyk7CiAgICAgICAgIGlmICghaW50ZXJuYWxUeXBl
LmlzTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpbnRl
cm5hbFR5cGUpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW50ZXJuYWxUeXBl
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnICcsIG5hbWVkQnVpbHRJbi52YXJp
YWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2VtYW50aWMoYnVpbHRJblNlbWFudGljKSk7Cisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
JyAnLCBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lLCAnICcsIGF0dHJpYnV0ZUZvclNlbWFudGlj
KGJ1aWx0SW5TZW1hbnRpYykpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI1OCw3
ICsyNTgsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJCiAgICAg
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9mdW5jdGlvbkRlZmluaXRpb24ucGFy
YW1ldGVycygpW2ldLT5uYW1lKCkgPT0gcGF0aFswXSkgewotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3BhcmFtZXRlclZhcmlhYmxlc1tpXSk7CisgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3BhcmFtZXRlclZhcmlhYmxlc1tpXSk7CiAgICAgICAg
ICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPnR5cGUoKS0+dW5pZnlOb2RlKCk7CiAgICAgICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5
cGU+KHVuaWZ5Tm9kZSkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lk
IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJCiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRp
b24tPmZpbmQocGF0aFtpXSk7CiAgICAgICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3Ry
dWN0dXJlRWxlbWVudCgqbmV4dCkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLics
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOwogICAg
ICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICAgICAgYXV0byYgdW5pZnlO
b2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwogICAgICAgICBpZiAoaXM8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRPCiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0
aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29t
cG9uZW50KTsKICAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KCpuZXh0KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVj
dHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0
LT50eXBlKCkudW5pZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKSkgewpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0TWFuZ2xlZE8KIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmVz
b3VyY2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcs
IG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1l
ID0gbV9uYW1lZEJpbmRHcm91cHNbaV0udmFyaWFibGVOYW1lOwpAQCAtMzI1LDcgKzMyNSw3IEBA
IHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgICAgICAg
ICBhdXRvJiB1bm5hbWVkVHlwZSA9ICptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3It
PnZhbHVlXS51bm5hbWVkVHlwZTsKICAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6OlJlZmVyZW5j
ZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xu
IiwKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iLAogICAgICAgICAgICAgICAgICAgICBsZW5ndGhU
ZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxl
TmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIiwKQEAgLTMzNCw3ICszMzQsNyBA
QCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAgICAgICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJ
bnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAgICAgIiA9IHsgIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwg
IikgfTtcbiIKICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM0
Miw3ICszNDIsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAg
ICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5h
bWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQg
RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgYXV0byBtYW5nbGVk
VHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5
cGUpOwogCiAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBtYW5nbGVkVHlw
ZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4i
KTsKICAgICB9CiB9CiAKQEAgLTM5MiwxNCArMzkyLDE0IEBAIFZlcnRleEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6VmVydGV4RW50cnkKIAogdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewotICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1l
LCAiIHtcbiIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwgbV9zdGFnZUlu
U3RydWN0TmFtZSwgIiB7XG4iKTsKICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFt
ZWRTdGFnZUlucykgewogICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJ
bi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVkVHlwZSk7CiAgICAgICAgIGF1dG8gZWxl
bWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmli
dXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVu
dE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxl
bWVudE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKICAg
ICB9Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKICAgICAgICAgIn07XG5cbiIKICAgICAgICAgInN0cnVjdCAiLCBtX3JldHVyblN0
cnVjdE5hbWUsICIge1xuIgogICAgICk7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZQogICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVO
YW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAgYXV0byBl
bGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRv
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlw
ZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7CisgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVt
ZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCiAgICAgICAgICJ9O1xuXG4iCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZQogCiB2b2lkIFZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBN
YW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCJ2ZXJ0ZXggIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9u
TmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5h
bWUsICIgW1tzdGFnZV9pbl1dIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInZlcnRleCAi
LCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0
cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsK
ICAgICBlbWl0UmVzb3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGlu
Z0NvbW1hOjpZZXMpOwogICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJ
bmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJykn
KTsKQEAgLTQzMywyNSArNDMzLDI1IEBAIHZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0VW4KICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tu
YW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0byYg
ZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAgICAgICAgIGVtaXRNYW5n
bGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0
YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgfQogfQog
CiB2b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSBvdXRwdXRWYXJpYWJsZU5hbWUpCiB7Ci0gICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFi
bGVOYW1lLCAiO1xuIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9yZXR1cm5TdHJ1Y3RO
YW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAgIGlmIChtX2VudHJ5UG9p
bnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRz
WzBdLnBhdGguc2l6ZSgpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91
dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJp
YWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFy
aWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7
XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYg
ZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0
byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7
CiAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZh
cmlhYmxlTmFtZSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG91dHB1dFZhcmlhYmxl
TmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5w
dXRWYXJpYWJsZU5hbWUpOwogICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVp
bGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIik7XG4i
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKICAgICB9CiB9CiAKQEAg
LTQ5MSwxNCArNDkxLDE0IEBAIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpGcmFnbWVu
dEUKIAogdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVz
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CisgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtc
biIpOwogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAg
ICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBv
aW50SXRlbXNdLnVubmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVk
U3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVk
U3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW3VzZXIo
dXNlciIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNl
cih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKICAgICB9Ci0gICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
In07XG5cbiIKICAgICAgICAgInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgog
ICAgICk7CkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdAogICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1
dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFt
ZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJp
YnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVu
dE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRy
aWJ1dGUsICI7XG4iKTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
ICJ9O1xuXG4iCkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6ZW1pdAogCiB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5h
bWUgZnVuY3Rpb25OYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImZy
YWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9z
dGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2Vf
aW5dXSIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJmcmFnbWVudCAiLCBtX3JldHVyblN0
cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcg
JywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKICAgICBlbWl0UmVz
b3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMp
OwogICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2Vk
aW5nQ29tbWE6Olllcyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKQEAgLTUzMiwy
NSArNTMyLDI1IEBAIHZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXQKICAg
ICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4u
aW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUg
PSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRo
KHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xu
Iik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgfQogfQogCiB2b2lkIEZyYWdt
ZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFy
aWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7
XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywg
b3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5z
aXplKCkpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5l
bGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRW
YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwg
IjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvJiBpbnRlcm5h
bFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAg
YXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1l
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxl
TmFtZSk7CiAgICAgICAgIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRo
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiKTtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KIH0KIApAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEgKIAogdm9pZCBD
b21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lKQogewotICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImtlcm5lbCB2b2lkICIsIGZ1bmN0aW9uTmFt
ZSwgJygnKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rp
b25OYW1lLCAnKCcpOwogICAgIGJvb2wgYWRkZWRUb1NpZ25hdHVyZSA9IGVtaXRSZXNvdXJjZVNp
Z25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Ok5vKTsKICAgICBl
bWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgYWRkZWRUb1NpZ25hdHVyZSA/IElu
Y2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzIDogSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7CiAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuY3BwCShyZXZpc2lvbiAyNDg3MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyB2b2lkIGRlY2xhcmVGdW5jdGlvbihTdHJpbmdC
dWlsZGUKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBmdW5jdGlvbk1hcHBpbmcuZmluZCgmZnVuY3Rp
b25EZWNsYXJhdGlvbik7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IGZ1bmN0aW9uTWFwcGluZy5l
bmQoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+
dmFsdWUsICcoJyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZh
bHVlLCAnKCcpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpW2ldLT50eXBlKCkpKTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Iik7XG4iKTsKIH0KQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcg
PT0gbnVsbHB0cik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSksICcg
JywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgp
KSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgYXV0byYgcGFyYW1ldGVyID0gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMo
KVtpXTsKICAgICAgICAgICAgIGlmIChpKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVy
TmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJnBhcmFtZXRlciwgcGFyYW1ldGVyTmFtZSk7
CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcsIHBhcmFtZXRl
ck5hbWUpOworICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1l
KTsKICAgICAgICAgfQogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHtcbiIpOwog
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwpA
QCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCcmVha0NvbnRleHQ6Okxvb3A6CiAgICAgICAg
IEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUpOwotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoCiAgICAgICAgICAgICAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxl
LCAiID0gdHJ1ZTtcbiIKICAgICAgICAgICAgICJicmVhaztcbiIKICAgICAgICAgKTsKQEAgLTMx
MCwyMCArMzEwLDIwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCgK
IHsKICAgICBTZXRGb3JTY29wZTxPcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPj4gbG9vcFZh
cmlhYmxlU2NvcGUobV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKSk7CiAKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgImJvb2wgIiwgKm1fYnJl
YWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKICAgICAgICAg
IndoaWxlICh0cnVlKSB7XG4iCiAgICAgKTsKIAogICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRp
b24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJl
c3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9u
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VM
YXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8ge1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9u
YWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJl
YWtDb250ZXh0OjpMb29wKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICJ9IHdoaWxlKGZhbHNlKTsgXG4iCiAgICAgICAgICJpZiAoIiwgKm1fYnJlYWtP
dXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIikgYnJlYWs7XG4iCiAgICAgKTsKQEAgLTMz
Nyw3ICszMzcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiAK
ICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6
QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKKyAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIp
IGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBcbiIp
OwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OklmU3RhdGVt
ZW50JiBpZlN0YXRlbWVudCkKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQu
Y29uZGl0aW9uYWwoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAo
IiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJpZiAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkg
ewogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9IGVsc2Uge1xuIik7CkBAIC0zODAs
OSArMzgwLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAg
ICAgICBpZiAobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcpIHsKICAgICAgICAgICAgIGF1dG8gdmFy
aWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBtX2Vu
dHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdFBhY2sobV9zdHJpbmdCdWlsZGVyLCB0YWtlTGFzdFZh
bHVlKCksIHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
InJldHVybiAiLCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoInJldHVybiAiLCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKICAgICB9
IGVsc2UKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgicmV0dXJuO1xuIik7CiB9CkBA
IC0zOTEsNyArMzkxLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VAogewogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7CiAK
LSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiKSB7Iik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3dpdGNoICgiLCB0
YWtlTGFzdFZhbHVlKCksICIpIHsiKTsKICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0
Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3
aXRjaENhc2UpOwogICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOwpAQCAtNDAwLDkg
KzQwMCw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENh
c2UpCiB7CiAgICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoImNhc2UgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoImNhc2UgIik7CiAgICAgICAgIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3
aXRjaENhc2UudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgiOlxuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjpcbiIpOwogICAgIH0g
ZWxzZQogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZWZhdWx0OlxuIik7CiAgICAg
U2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVu
dEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwpAQCAtNDE5LDcgKzQxOSw3IEBA
IHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZh
cmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xl
ZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGludGVnZXJMaXRlcmFs
LnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFu
Z2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmds
ZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFs
LnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShpbnRlZ2VyTGl0ZXJhbCwg
dmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRU
eXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5h
bWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1l
LCAiPigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh1bnNpZ25lZElu
dGVnZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFi
bGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29s
dmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5
cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBl
TmFtZSwgIj4oIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3Rh
dGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwg
Iik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGZsb2F0TGl0ZXJhbCwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlID0gaXM8QVNUOjpBcnJh
eVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsKIAogICAgIGF1dG8gdmFyaWFibGVOYW1lID0g
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShudWxsTGl0ZXJhbC5yZXNvbHZl
ZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2
ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOwogICAgIGlmIChpc0FycmF5UmVm
ZXJlbmNlVHlwZSkKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgieyBudWxscHRyLCAw
IH07XG4iKTsKICAgICBlbHNlCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywg
dmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBi
b29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFs
LnZhbHVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFs
dWUoYm9vbGVhbkxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ2OCw3ICs0NjgsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0
byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFu
Z2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9u
TWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7
XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2
YXJpYWJsZU5hbWUsICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbk1lbWJlcigpKSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00OTEsNyArNDkxLDcg
QEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gcG9p
bnRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRU
eXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShnbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ0aHJlYWQgIiwgbWFu
Z2xlZFR5cGVOYW1lLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCB0YWtlTGFzdFZhbHVlKCks
ICItPiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZS5zdHJ1Y3RGaWVsZCgpKSwgIjtcbiIsCiAgICAgICAgIG1hbmdsZWRU
eXBlTmFtZSwgJyAnLCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAiO1xuIgog
ICAgICk7CkBAIC01MjMsOSArNTIzLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVudCBxdWFsaWZpZXJzLgogICAgIGlmICh2YXJpYWJsZURl
Y2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2
YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJs
ZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywg
dmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNl
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7IH07XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7IH07XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRF
eHByZXNzaW9uKQpAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Np
b24ucmlnaHQoKSk7CiAgICAgYXV0byBbcmlnaHROYW1lLCByaWdodE51bGxhYmlsaXR5XSA9IHRh
a2VMYXN0VmFsdWVBbmROdWxsYWJpbGl0eSgpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxs
YWJpbGl0eTo6Q2FuQmVOdWxsKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoImlmICgiLCBwb2ludGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHRO
YW1lLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlmICgiLCBwb2lu
dGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7CiAg
ICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIioiLCBwb2lu
dGVyTmFtZSwgIiA9ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIqIiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4iKTsKICAg
ICBhcHBlbmRSaWdodFZhbHVlV2l0aE51bGxhYmlsaXR5KGFzc2lnbm1lbnRFeHByZXNzaW9uLCBy
aWdodE5hbWUsIHJpZ2h0TnVsbGFiaWxpdHkpOwogfQogCkBAIC01NTMsNyArNTUzLDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIE1hbmdsZWRWYXJpYWJs
ZU5hbWUgcmV0dXJuTmFtZTsKICAgICBpZiAoIWlzVm9pZCkgewogICAgICAgICByZXR1cm5OYW1l
ID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKKyAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4
cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKICAgICB9
CiAKICAgICBpZiAoaXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVz
c2lvbi5mdW5jdGlvbigpKSkKQEAgLTU2MiwxMiArNTYyLDEyIEBAIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZnVuY3Rp
b25NYXBwaW5nLmZpbmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwogICAgICAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwogICAgICAgICBpZiAoIWlz
Vm9pZCkKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5O
YW1lLCAiID0gIik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpdGVy
YXRvci0+dmFsdWUsICcoJyk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHJl
dHVybk5hbWUsICIgPSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChpdGVyYXRv
ci0+dmFsdWUsICcoJyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRO
YW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChhcmd1bWVudE5hbWVzW2ldKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoYXJndW1lbnROYW1lc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KQEAgLTU5MiwxNSArNTkyLDE1IEBA
IHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIFtpbnB1
dFBvaW50ZXIsIG51bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVBbmROdWxsYWJpbGl0eSgpOwog
ICAgIGF1dG8gcmVzdWx0VmFsdWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBh
dXRvIHJlc3VsdFBvaW50ZXIgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVz
c2lvbi5wb2ludGVyKCkucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJlc3VsdFBvaW50ZXIsICIgPSAi
LCBpbnB1dFBvaW50ZXIsICI7XG4iLAogICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXN1bHRW
YWx1ZSwgIjtcbiIpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2FuQmVO
dWxsKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJpZiAoIiwgcmVzdWx0UG9pbnRl
ciwgIikgIiwgcmVzdWx0VmFsdWUsICIgPSAqIiwgaW5wdXRQb2ludGVyLCAiO1xuIiwKICAgICAg
ICAgICAgICJlbHNlICIsIHJlc3VsdFZhbHVlLCAiID0geyB9O1xuIik7CiAgICAgfSBlbHNlCi0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXN1bHRWYWx1ZSwgIiA9ICoi
LCBpbnB1dFBvaW50ZXIsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChy
ZXN1bHRWYWx1ZSwgIiA9ICoiLCBpbnB1dFBvaW50ZXIsICI7XG4iKTsKICAgICBhcHBlbmRMZWZ0
VmFsdWUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLCByZXN1bHRWYWx1ZSwgcmVzdWx0UG9pbnRlciwg
bnVsbGFiaWxpdHkpOwogfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhw
cmVzc2lvbi5yaWdodCgpKTsKICAgICBhdXRvIHJpZ2h0ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAg
IGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShsb2dpY2FsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gIiwgbGVmdCk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUobG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZh
cmlhYmxlTmFtZSwgIiA9ICIsIGxlZnQpOwogICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24u
dHlwZSgpKSB7CiAgICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6CiAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAmJiAiKTsKQEAgLTYyMSw3ICs2MjEsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiB8fCAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1f
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyaWdodCwgIjtcbiIpOworICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQocmlnaHQsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxvZ2lj
YWxFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC02MzAsNyArNjMwLDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwogICAgIGF1dG8gb3BlcmFuZCA9
IHRha2VMYXN0VmFsdWUoKTsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICEiLCBvcGVyYW5kLCAiO1xuIik7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNh
bE5vdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICEi
LCBvcGVyYW5kLCAiO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShsb2dpY2FsTm90RXhwcmVz
c2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLnJlc29sdmVkVHlwZSgpKTsKICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAg
ICAgICAgYXV0byBwdHJWYWx1ZSA9IHRha2VMYXN0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAog
ICAgICAgICAgICAgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIsCiAg
ICAgICAgICAgICAiaWYgKCIsIHB0clZhbHVlLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIs
IHB0clZhbHVlLCAiLCAxfTtcbiIsCiAgICAgICAgICAgICAiZWxzZSAiLCB2YXJpYWJsZU5hbWUs
ICIgPSB7IG51bGxwdHIsIDAgfTtcbiIKQEAgLTY1MiwxMCArNjUyLDEwIEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJy
YXlUeXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVk
VHlwZSgpKSkgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFs
dWU7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPiht
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5
cGUubnVtRWxlbWVudHMoKSwgIiB9O1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAi
LT5kYXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKICAgICB9IGVs
c2UgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcg
JywgdmFyaWFibGVOYW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpOworICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSB7ICIsIGxWYWx1ZSwgIiwgMSB9O1xuIik7CiAgICAgfQogICAgIGFwcGVuZFJpZ2h0VmFs
dWUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KQEAgLTY2
NSw3ICs2NjUsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7
CiAgICAgYXV0byBbcG9pbnRlciwgbnVsbGFiaWxpdHldID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsK
ICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJl
c29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7
CiAgICAgYXBwZW5kUmlnaHRWYWx1ZVdpdGhOdWxsYWJpbGl0eShtYWtlUG9pbnRlckV4cHJlc3Np
b24sIHZhcmlhYmxlTmFtZSwgbnVsbGFiaWxpdHkpOwogfQogCkBAIC02ODEsMTcgKzY4MSwxNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBjaGVj
ayA9IHRha2VMYXN0VmFsdWUoKTsKIAogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAor
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgIG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZSh0ZXJuYXJ5RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFi
bGVOYW1lLCAiO1xuIgogICAgICAgICAiaWYgKCIsIGNoZWNrLCAiKSB7XG4iCiAgICAgKTsKICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCiAgICAgICAgIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwg
IjtcbiIKICAgICAgICAgIn0gZWxzZSB7XG4iCiAgICAgKTsKICAgICBjaGVja0Vycm9yQW5kVmlz
aXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
IHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIKICAgICAgICAgIn1c
biIKICAgICApOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92YXJpYWJsZU1hcHBpbmcuZmlu
ZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwogICAgIGF1dG8gcG9pbnRlck5hbWUgPSBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
InRocmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodmFyaWFibGVSZWZlcmVu
Y2UucmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCBpdGVyYXRvci0+
dmFsdWUsICI7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0aHJlYWQgIiwgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7
CiAgICAgYXBwZW5kTGVmdFZhbHVlKHZhcmlhYmxlUmVmZXJlbmNlLCBpdGVyYXRvci0+dmFsdWUs
IHBvaW50ZXJOYW1lLCBOdWxsYWJpbGl0eTo6Tm90TnVsbCk7CiB9CiAKQEAgLTcxMiwyNyArNzEy
LDI3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0Q29uc3QKIHsKICAgICBj
b25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgWyZdKEFT
VDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7CisgICAgICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKICAgICAg
ICAgfSwKICAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChmbG9hdExpdGVyYWwudmFs
dWUoKSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGZsb2F0TGl0ZXJhbC52
YWx1ZSgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdKEFTVDo6TnVsbExpdGVyYWwmKSB7Ci0g
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIm51bGxwdHIiKTsKKyAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxwdHIiKTsKICAgICAgICAgfSwK
ICAgICAgICAgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7CiAgICAg
ICAgICAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInRydWUiKTsKKyAgICAgICAgICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJmYWxzZSIpOworICAgICAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIH0sCiAgICAg
ICAgIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsKSB7CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVu
dW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6Iiwg
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpLCAiOjoiLCBtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOwogICAgICAgICB9CiAgICAgKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ4
NzA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xO
YXRpdmVGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxNCArMTI2LDE0
IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0
byYgcmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpOwogICAgICAg
ICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0
dXJuVHlwZSk7CiAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KHJldHVybk5hbWUsICIgPSB7IH07XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHJldHVybk5hbWUsICIgPSB7IH07XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKICAgICAgICAgYXV0
byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmFt
ZXRlclR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBt
ZXRhbFBhcmFtZXRlck5hbWUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIntcbiIsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4ID0gIiwgYXJn
c1swXSwgIjtcbiIpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlv
bkRlZmluaXRpb24gPSBbXSAoYXV0byYgdHlwZSkgewpAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgdm9p
ZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgICAgIGJv
b2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG1lbWJl
ciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewogICAgICAg
ICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAgICAgY2Fz
ZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCku
dmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwogICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgIGRlZmF1bHQ6IHggPSAwOyBicmVhazsg
fVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgp
O1xufVxuIik7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTY3LDEzICsxNjcsMTMgQEAgdm9pZCBp
bmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBhdXRvJiB1bm5hbWVk
UGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUp
OwogICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkg
ewogICAgICAgICAgICAgYXV0byYgYXJyYXlQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpB
cnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAg
ICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJyYXlQYXJhbWV0ZXJUeXBlLm51bUVs
ZW1lbnRzKCksICI7XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFBhcmFtZXRlclR5
cGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1sw
XSwgIi5sZW5ndGg7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4Niw3ICsxODYs
NyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAg
ICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVF
bGVtZW50ID0gc3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxl
bWVudCgqc3RydWN0dXJlRWxlbWVudCkpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVy
ZUVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBBU1NFUlQoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkp
OwpAQCAtMTk4LDE4ICsxOTgsMTggQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdC
dWlsZGVyJgogICAgICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yLiJfc3RyLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgIGZpZWxkTmFtZSA9IGZpZWxkTmFtZS5zdWJzdHJpbmcoMCwgZmllbGROYW1lLmxlbmd0
aCgpIC0gMSk7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5O
YW1lLCAiID0gIiwgYXJnc1swXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwg
Jy4nKTsKICAgICAgICAgICAgIGFwcGVuZE1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIsIGFyZ3NbMV0sICI7
XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBhcmdzWzFdLCAi
O1xuIik7CiAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAg
ICAgICAgIGF1dG8gZmllbGROYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCku
c3Vic3RyaW5nKCJvcGVyYXRvci4iX3N0ci5sZW5ndGgoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAg
ICAgICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICcuJyk7CiAgICAgICAgIGFwcGVuZE1h
bmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IjtcbiIpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3Ry
aW5nQnVpbGRlciYKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yJi4iX3N0ci5sZW5n
dGgoKSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gJigiLCBh
cmdzWzBdLCAiLT4iKTsKIAogICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9ICpuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwpAQCAtMjMwLDkgKzIzMCw5
IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAg
IGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24+KG5hbWVkVHlwZSk7CiAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVtZW50ID0g
c3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVs
ZW1lbnQpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1lbnQpKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGZpZWxkTmFt
ZSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChmaWVsZE5hbWUpOwogCiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2
b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7CiAgICAg
ICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKIAotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAg
ICAgICAgIHJldHVybk5hbWUsICIgPSAoIiwgYXJnc1sxXSwgIiA8ICIsIGFyZ3NbMF0sICIubGVu
Z3RoKSA/ICIsICIgJigiLCBhcmdzWzBdLCAiLnBvaW50ZXJbIiwgYXJnc1sxXSwgIl0pIDogbnVs
bHB0cjtcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSwxOSArMjY5
LDE5IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKIAogICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJPZk1hdHJpeFJvd3MoKTsKICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFt
ZSwgIiByZXN1bHQ7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImRvIHtcbiIs
IG1ldGFsUmV0dXJuTmFtZSwgIiByZXN1bHQ7XG4iKTsKIAotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSB7IiwgcmV0
dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIiwKICAgICAg
ICAgICAgICIgICAgcmVzdWx0WzBdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiXTtcbiIs
CiAgICAgICAgICAgICAiICAgIHJlc3VsdFsxXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwg
IiArICIsIG51bWJlck9mUm93cywgIl07XG4iKTsKIAogICAgICAgICBpZiAobnVtYmVyT2ZDb2x1
bW5zID49IDMpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAg
cmVzdWx0WzJdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dz
ICogMiwgIl07XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVz
dWx0WzJdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICog
MiwgIl07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSA0KQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3Nb
MF0sICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3NbMF0s
ICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CiAKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoCiAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSByZXN1bHQ7XG4iLAog
ICAgICAgICAgICAgIn0gd2hpbGUgKDApO1xuIik7CiAKQEAgLTI5NiwxOCArMjk2LDE4IEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mQ29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1ucygpOwogCi0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFtZSwgIiBtID0g
IiwgYXJnc1swXSwgIjtcbiIsCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4i
LCBtZXRhbFJldHVybk5hbWUsICIgbSA9ICIsIGFyZ3NbMF0sICI7XG4iLAogICAgICAgICAgICAg
bWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAogICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBudW1iZXJPZlJvd3MsICIpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gbTtcbmJyZWFrO31cbiIsCiAgICAgICAgICAgICAiICAgIG1baV0gPSAi
LCBhcmdzWzJdLCAiWzBdO1xuIiwKICAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZS
b3dzLCAiXSA9ICIsIGFyZ3NbMl0sICJbMV07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29s
dW1ucyA+PSAzKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAg
IG1baSArICIsIG51bWJlck9mUm93cyAqIDIsICJdID0gIiwgYXJnc1syXSwgIlsyXTtcbiIpOwor
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAyLCAiXSA9ICIsIGFyZ3NbMl0sICJbMl07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9m
Q29sdW1ucyA+PSA0KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
ICAgIG1baSArICIsIG51bWJlck9mUm93cyAqIDMsICJdID0gIiwgYXJnc1syXSwgIlszXTtcbiIp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXSA9ICIs
IGFyZ3NbMl0sICJbM107XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAg
ICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBtO1xuIiwKICAgICAgICAgICAgICJ9IHdo
aWxlKDApO1xuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxNywxNCArMzE3LDE0IEBAIHZvaWQg
aW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byBvcGVyYXRv
ck5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJh
dG9yIl9zdHIubGVuZ3RoKCkpOwogICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIGF1dG8gbWV0YWxQYXJh
bWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4ID0gIiwgYXJn
c1swXSwgIjtcbiIsIAogICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBvcGVyYXRv
ck5hbWUsICJ4O1xufVxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBhcmdz
WzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAiO1xuIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0zNTQsMTQgKzM1NCwxNCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0
aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJhc3VpbnQiCiAgICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJhc2Zsb2F0IikgewogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSAiLCBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkpLCAnKCcsIGFyZ3NbMF0sICIpO1xuIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInBv
dyIgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4yIikgewogICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIigiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFd
LCAiKTtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICBpZiAobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3RhcnRzV2l0aCgiSW50ZXJsb2NrZWQiX3N0cikpIHsK
ICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJJbnRlcmxv
Y2tlZENvbXBhcmVFeGNoYW5nZSIpIHsKICAgICAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgImF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGlj
aXQoIiwgYXJnc1swXSwgIiwgJiIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIsIG1lbW9yeV9v
cmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iLAogICAgICAgICAgICAgICAg
ICcqJywgYXJnc1szXSwgIiA9ICIsIGFyZ3NbMV0sICI7XG4iKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1
aWxkZXImCiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAzKTsKICAgICAgICAgYXV0byBuYW1lID0gYXRvbWljTmFtZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIkludGVybG9ja2VkIl9zdHIu
bGVuZ3RoKCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAnKicsIGFyZ3NbMl0sICIgPSBh
dG9taWNfIiwgbmFtZSwgIl9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQx
NCwxOSArNDE0LDE5IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYK
ICAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi50eXBlKCkudW5pZnlOb2RlKCkpKTsKICAgICAgICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGgg
PSB2ZWN0b3JMZW5ndGgocmV0dXJuVHlwZSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICBy
ZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgIi5zYW1wbGUoIiwgYXJnc1sxXSwgIiwgIik7CiAK
ICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAg
IEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbMl0sICcuJywgInh5enciX3N0
ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbMl0sICcuJywgInh5enciX3N0
ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChhcmdzWzJdKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMl0pOwogICAgICAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpCi0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsIGFyZ3NbM10pOworICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1szXSk7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpIik7CiAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRl
eHR1cmUoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIi4iLCAi
eHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKKyAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJu
VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKIAog
ICAgICAgICByZXR1cm47CkBAIC00NDksMzEgKzQ0OSwzMSBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1
bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAgICBTdHJpbmcgZGltZW5zaW9uc1tdID0g
eyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9OwogICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7ICsraSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmcoaSwgMSk7Ci0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBh
cmdzWzFdLCAnLicsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFy
Z3NbMV0sICcuJywgc3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25z
W2ldLCAiKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBi
cmVhazt9XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlm
ICgiLCBhcmdzWzFdLCAnLicsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCIsIGFyZ3NbMV0sICcuJywgc3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1l
bnNpb25zW2ldLCAiKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAi
KDApOyBicmVhazt9XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gc3VmZml4
ID0gInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAoIiwgYXJnc1sx
XSwgJy4nLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFd
LCAnLicsIHN1ZmZpeCwgIikgPj0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpKSB7Iiwg
cmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7Cisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAnLics
IHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICcuJywg
c3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIHsiLCByZXR1cm5O
YW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAoIiwgYXJn
c1sxXSwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIpID49ICIs
IGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsgIiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1sxXSwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCIsIGFyZ3NbMV0sICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsgIiwgcmV0
dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICAgICAiICAgIGlmICgiLCBhcmdzWzFdLCAiLnggPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQz
Ml90PigiLCBhcmdzWzFdLCAiLngpID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iCiAgICAg
ICAgICAgICAgICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIueSA8IDAgfHwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIueSkgPj0gIiwgYXJnc1swXSwgIi5nZXRfaGVpZ2h0
KCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9
XG4iKTsKIAogICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQot
ICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYg
KCIsIGFyZ3NbMV0sICIueiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0s
ICIueikgPj0gIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSkgeyIsIHJldHVybk5hbWUsICIgPSAi
LCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIpOworICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAiLnogPCAwIHx8IHN0
YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiLnopID49ICIsIGFyZ3NbMF0sICIuZ2V0
X2RlcHRoKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBi
cmVhazt9XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIu
cmVhZCgiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCByZXR1cm5OYW1l
LCAiID0gIiwgYXJnc1swXSwgIi5yZWFkKCIpOwogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNU
ZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3Ro
ID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50Iiwg
dmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1sxXSwgJy4n
LCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwg
dWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9y
TGVuZ3RoIC0gMSwgMSksICcpJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
dWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAnKCcsIGFyZ3Nb
MV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAx
KSwgIiksIHVpbnQoIiwgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMV0sICcpJyk7CisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCks
ICcoJywgYXJnc1sxXSwgJyknKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsK
ICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IHJldHVyblZlY3Rvckxlbmd0aCkpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Jy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAiO1xuIgogICAgICAgICAgICAg
In0gd2hpbGUoMCk7XG4iKTsKQEAgLTQ4MywxNCArNDgzLDE0IEBAIHZvaWQgaW5saW5lTmF0aXZl
RnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKIAogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKSA9PSAibG9hZCIpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
ICAgICByZXR1cm5OYW1lLCAiID0gYXRvbWljX2xvYWRfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwg
bWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInN0b3JlIikgewogICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJhdG9taWNfc3RvcmVfZXhwbGljaXQo
IiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MjYsMzYgKzUyNiwzNiBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJU
KGluZGV4ID09IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7
CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAiaWYgKCIsIHdpZHRoTmFtZSwgIilcbiIKICAg
ICAgICAgICAgICIgICAgKiIsIHdpZHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRo
KCIpOwogCiAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoYXJnc1sxXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChhcmdzWzFdKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKICAg
ICAgICAgaWYgKGhlaWdodE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAg
ICAgICAiICAgIGlmICgiLCAqaGVpZ2h0TmFtZSwgIilcbiIKICAgICAgICAgICAgICAgICAiICAg
ICAgICAqIiwgKmhlaWdodE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoIik7CiAg
ICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChhcmdzWzFdKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChhcmdzWzFdKTsKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xu
Iik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlcHRoTmFtZSkgewotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAogICAgICAgICAgICAgICAgICIgICAgaWYgKCIsICpkZXB0aE5hbWUsICIpXG4iCiAgICAg
ICAgICAgICAgICAgIiAgICAgICAgKiIsICpkZXB0aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdl
dF9kZXB0aCgiKTsKICAgICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMV0pOworICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIik7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZWxlbWVudHNOYW1lKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgKmVsZW1l
bnRzTmFtZSwgIilcbiIKICAgICAgICAgICAgICAgICAiICAgICAgICAqIiwgKmVsZW1lbnRzTmFt
ZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKTtcbiIpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChudW1iZXJPZkxldmVsc05hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAg
ICAgICAgICAgICAgICAiICAgIGlmICgiLCAqbnVtYmVyT2ZMZXZlbHNOYW1lLCAiKVxuIgogICAg
ICAgICAgICAgICAgICIgICAgICAgICoiLCAqbnVtYmVyT2ZMZXZlbHNOYW1lLCAiID0gIiwgYXJn
c1swXSwgIi5nZXRfbnVtX21pcF9sZXZlbHMoKTtcbiIpOwogICAgICAgICB9CkBAIC02MTUsMzAg
KzYxNSwzMCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAg
ICAgICAgICBTdHJpbmcgZGltZW5zaW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3Ry
LCAiZGVwdGgiX3N0ciB9OwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDE7ICsraSkgewogICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0g
Inh5enciX3N0ci5zdWJzdHJpbmcoaSwgMSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLiIsIHN1ZmZpeCwgIiA+PSAi
LCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIGJyZWFrO1xuIik7CisgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1syXSwgIi4i
LCBzdWZmaXgsICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSBi
cmVhaztcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6
dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAnLics
IHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIGJyZWFrO1xuIik7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAn
LicsIHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIGJyZWFrO1xu
Iik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobG9jYXRpb25WZWN0b3JMZW5n
dGggPT0gMSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIg
ICAgaWYgKCIsIGFyZ3NbMl0sICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgYnJlYWs7
XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBh
cmdzWzJdLCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIGJyZWFrO1xuIik7CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICAgICAiICAgIGlmICgiLCBhcmdzWzJdLCAiLnggPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lk
dGgoKSkgYnJlYWs7XG4iCiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMl0s
ICIueSA+PSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoKSkgYnJlYWs7XG4iKTsKICAgICAgICAg
ICAgICAgICBpZiAobG9jYXRpb25WZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLnog
Pj0gIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSkgYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1syXSwgIi56ID49ICIs
IGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkpIGJyZWFrO1xuIik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGFyZ3Nb
MF0sICIud3JpdGUodmVjPCIsIG1ldGFsSW5uZXJUeXBlTmFtZSwgIiwgND4oIiwgYXJnc1sxXSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgYXJnc1swXSwgIi53cml0ZSh2
ZWM8IiwgbWV0YWxJbm5lclR5cGVOYW1lLCAiLCA0PigiLCBhcmdzWzFdKTsKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA0IC0gaXRlbVZlY3Rvckxlbmd0aDsgKytpKQogICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMCIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKSwgIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3Ry
aW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3NbMl0sICIu
IiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSwgJykn
KTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1syXSwgJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwgdWludCgiLCBhcmdz
WzJdLCAiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwg
MSksICcpJyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCksICco
JywgYXJnc1syXSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50
IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzJdLCAnKScp
OwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICIpO1xuIgogICAg
ICAgICAgICAgIn0gd2hpbGUoMCk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJ
KHJldmlzaW9uIDI0ODcwNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFt
ZWRUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKHN0cnVjdHVy
ZURlZmluaXRpb24pLCAiO1xuIik7CiAgICAgfQogCiAgICAgc3RkOjpmdW5jdGlvbjxNYW5nbGVk
T3JOYXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiBtX21hbmdsZWROYW1lRm9yTmFtZWRU
eXBlOwpAQCAtMzYyLDE5ICszNjIsMTkgQEAgdm9pZCBUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlw
ZURlZmluaXRpbwogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewogICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxSZWZlcmVuY2VUeXBlTmFt
ZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpLm5hbWVkVHlwZSgpOwogICAgICAgICBlbWl0TmFtZWRU
eXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBuYW1lZFR5cGUsIGVtaXR0ZWROYW1lZFR5cGVz
LCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKSwgJyAnLCBiYXNl
VHlwZU5hbWVOb2RlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlwZSksICcgJywg
YmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAg
ICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxQb2ludGVyVHlwZU5hbWVOb2RlPihiYXNl
VHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIHRvU3Ry
aW5nKHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwb2ludGVyVHlwZS5wYXJlbnQo
KS0+bWFuZ2xlZE5hbWUoKSwgIiogIiwgcG9pbnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIp
OworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2lu
dGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcG9pbnRlclR5cGUucGFyZW50KCktPm1hbmds
ZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlS
ZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8
QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwogICAgICAgICBB
U1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAg
ICAgInN0cnVjdCAiLCBhcnJheVJlZmVyZW5jZVR5cGUubWFuZ2xlZE5hbWUoKSwgInsgXG4iCiAg
ICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3Bh
Y2UoKSksICcgJywgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVudCgpLT5tYW5nbGVkTmFtZSgpLCAi
KiBwb2ludGVyO1xuIgogICAgICAgICAgICAgIiAgICB1aW50MzJfdCBsZW5ndGg7XG4iCkBAIC0z
ODUsNyArMzg1LDcgQEAgdm9pZCBUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpbwog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYg
YXJyYXlUeXBlID0gZG93bmNhc3Q8QXJyYXlUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUp
OwogICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgYXJyYXlUeXBlLnBh
cmVudCgpLT5tYW5nbGVkTmFtZSgpLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4g
IiwgYXJyYXlUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgYXJyYXlUeXBlLnBhcmVudCgpLT5tYW5nbGVkTmFt
ZSgpLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4gIiwgYXJyYXlUeXBlLm1hbmds
ZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBA
IC00MDYsMjEgKzQwNiwyMSBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdE5hbWVkVHlwZURlZmluaXRp
b24oCiAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7
CiAgICAgICAgIGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9
IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBl
KGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlv
bkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudW1lcmF0
aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWRO
YW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVy
YXRpb25NZW1iZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1l
cmF0aW9uTWVtYmVyKSwgIiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIs
XG4iKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2Ug
aWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAg
IC8vIE5hdGl2ZSB0eXBlcyBhbHJlYWR5IGhhdmUgZGVmaW5pdGlvbnMuIFRoZXJlJ3Mgbm90aGlu
ZyB0byBkby4KICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFt
ZWRUeXBlKSkgewogICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVy
ZURlZmluaXRpb24pLCAiIHtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3Ry
dWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIiB7XG4iKTsK
ICAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlv
bi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUo
KSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQp
LCAiO1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmds
ZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVG
b3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQpLCAiO1xuIik7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byYg
dHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIG1hbmds
ZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9y
VHlwZSh0eXBlRGVmaW5pdGlvbiksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSks
ICcgJywgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOwogICAgIH0K
ICAgICBlbWl0dGVkTmFtZWRUeXBlcy5hZGQoJm5hbWVkVHlwZSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2
aXNpb24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjgsMTIgKzEzNjgsMTIgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbwogICAgIGFic29sdXRlQm91bmRzLm1v
dmUobGF5ZXIub2Zmc2V0RnJvbUFuY2VzdG9yKG1fcmVuZGVyVmlldy5sYXllcigpKSk7CiAgICAg
CiAgICAgU3RyaW5nQnVpbGRlciBsb2dTdHJpbmc7Ci0gICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBw
ZW5kKHBhZCgnICcsIDEyICsgZGVwdGggKiAyLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KCZsYXllcikpKSwgIiBpZCAiLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlM
YXllcklEKCksICIgKCIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5k
cy54KCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJz
b2x1dGVCb3VuZHMueSgpLnRvRmxvYXQoKSwgMyksICctJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFgoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhZKCkudG9GbG9hdCgpLCAzKSwg
IikgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGJhY2tpbmctPmJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlKCkgLyAxMDI0LCAyKSwgIktCIik7CisgICAgbG9nU3RyaW5nLmFwcGVuZChw
YWQoJyAnLCAxMiArIGRlcHRoICogMiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigm
bGF5ZXIpKSksICIgaWQgIiwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJ
RCgpLCAiICgiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueCgp
LnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRl
Qm91bmRzLnkoKS50b0Zsb2F0KCksIDMpLCAnLScsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0
aChhYnNvbHV0ZUJvdW5kcy5tYXhYKCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMubWF4WSgpLnRvRmxvYXQoKSwgMyksICIpICIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlF
c3RpbWF0ZSgpIC8gMTAyNCwgMiksICJLQiIpOwogCiAgICAgaWYgKCFsYXllci5yZW5kZXJlcigp
LnN0eWxlKCkuaGFzQXV0b1pJbmRleCgpKQotICAgICAgICBsb2dTdHJpbmcuZmxleGlibGVBcHBl
bmQoIiB6LWluZGV4OiAiLCBsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuekluZGV4KCkpOworICAg
ICAgICBsb2dTdHJpbmcuYXBwZW5kKCIgei1pbmRleDogIiwgbGF5ZXIucmVuZGVyZXIoKS5zdHls
ZSgpLnpJbmRleCgpKTsKIAotICAgIGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVuZCgiICgiLCBsb2dS
ZWFzb25zRm9yQ29tcG9zaXRpbmcobGF5ZXIpLCAiKSAiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5k
KCIgKCIsIGxvZ1JlYXNvbnNGb3JDb21wb3NpdGluZyhsYXllciksICIpICIpOwogCiAgICAgaWYg
KGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+Y29udGVudHNPcGFxdWUoKSB8fCBiYWNraW5nLT5w
YWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkgfHwgYmFja2luZy0+Zm9yZWdyb3VuZExheWVy
KCkgfHwgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkpIHsKICAgICAgICAgbG9nU3RyaW5nLmFw
cGVuZCgnWycpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNp
b24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDExLDcgKzUwMTEsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpvbmdvaW5n
TG9hZHNEZXNjcmlwdGlvCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAKICAgICAgICAg
Zm9yIChhdXRvJiBpbmZvIDogcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCkt
PmludGVybWVkaWF0ZUxvYWRJbmZvcm1hdGlvbkZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKGlk
ZW50aWZpZXIpKQotICAgICAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnWycsIChpbnQp
aW5mby50eXBlLCAiLFwiIiwgaW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiXCIsXCIiLCBp
bmZvLnJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpLCAnXScpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCAoaW50KWluZm8u
dHlwZSwgIixcIiIsIGluZm8ucmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIlwiLFwiIiwgaW5mby5y
ZXF1ZXN0Lmh0dHBNZXRob2QoKSwgIlwiLCIsIGluZm8ucmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgJ10nKTsKIAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgIH0KSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
ODcwNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE5LTA4LTE0ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQoLi4uKSB0byBTdHJpbmdCdWlsZGVy
OjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFtZSBmcm9tIFN0cmluZ0J1aWxkZXI6OmZs
ZXhpYmxlQXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4p
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wOC0xNCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdKFJFR1JF
U1NJT046IHIyMDA0ODcpOiBXZWJLaXQuUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvRm9yUm90
YXRlZEltYWdlIGZhaWxzIG9uIGlPUyAxMwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODcwNikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsMjUgKzExNiwyNSBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBBcHBlbmQpCiAg
ICAgfQogfQogCi1URVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBGbGV4aWJsZUFwcGVuZCkKK1RFU1Qo
U3RyaW5nQnVpbGRlclRlc3QsIFZhcmlhZGljQXBwZW5kKQogewogICAgIHsKICAgICAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmlu
ZygiMDEyMzQ1Njc4OSIpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKCIwMTIzNDU2
Nzg5IikpOwogICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OSIsIGJ1aWxk
ZXIpOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJhYmNkIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJhYmNkIik7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIz
NDU2Nzg5YWJjZCIsIGJ1aWxkZXIpOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCdl
Jyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdlJyk7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJD
b250ZW50KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWlsZGVyKTsKLSAgICAgICAgYnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIiKTsKICAgICAgICAgZXhw
ZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOwogICAgIH0KIAog
ICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIsICdlJywgIiIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoIjAxMjM0NTY3ODkiKSwgImFiY2QiLCAnZScsICIi
KTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxk
ZXIpOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiQSIpLCAiQiIsICdD
JywgIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycsICIi
KTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZUFCQyIsIGJ1
aWxkZXIpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376584</attachid>
            <date>2019-08-16 20:07:42 -0700</date>
            <delta_ts>2019-08-16 20:17:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200756-20190816200742.patch</filename>
            <type>text/plain</type>
            <size>77760</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg3MDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBl
bmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgdGhlcmUgYXJlIG5vIHJlbWFp
bmluZyBtdWx0aS1wYXJhbWV0ZXIgb3IgYmVoYXZpb3IgY2hhbmdpbmcgb3ZlcmxvYWRzCisgICAg
ICAgIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLCB3ZSBjYW4gcmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikKKyAgICAgICAgdG8gU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKC4uLikuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBsZWF2ZXMgdGhlIGV4aXN0
aW5nIHNpbmdsZSBwYXJhbWV0ZXIgb3ZlcmxvYWRzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4p
CisgICAgICAgIGZvciBub3csIGFuZCBzaW5jZSB0aGV5IGhhdmUgc3BlY2lmeSBzcGVjaWZpYyB0
eXBlcywgdGhleSB3aWxsIGNvbnRpbnVlIHRvIGJlIHByZWZlcmVkCisgICAgICAgIGluIG92ZXJs
b2FkIHJlc29sdXRpb24uIE9uY2Ugd2UgaGF2ZSBjb25jbHVkZWQgdGhlIHZhcmlhZGljIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIGNhbiBwcm92aWRlIHRoZSBzYW1lIHBlcmZv
cm1hbmNlIGFzIHRoZSBzaW5nbGUgcGFyYW1ldGVyIHZhcmlhbnQsIHdlIGNhbiByZW1vdmUgdGhl
CisgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgdmFyaWFudC4KKworICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgZnJvbSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4p
IHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCiAyMDE5LTA4LTE0ICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUgc2hvdWxkIGxvZyBlcnJvciBzdGF0dXMgKDE3ODM0NykKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkocmV2aXNpb24gMjQ4NzA2KQorKysgU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA4LDcgKzMwOCw3IEBAIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1YK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CiAg
ICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICBidWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCcvJywgY29tcG9uZW50KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8n
LCBjb21wb25lbnQpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDg3MDYpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDgg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhl
ZFdpZHRoTnVtYmVyKGZsb2F0LCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFdpZHRoTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQg
ZGVjaW1hbFBsYWNlcyk7CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGFwcGVuZCguLi4pIGFm
dGVyIHJlbmFtaW5nIGFueSBvdmVybG9hZHMgb2YgYXBwZW5kIHRoYXQgdGFrZSBtb3JlIHRoYW4g
b25lIGFyZ3VtZW50LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiB2b2lk
IGZsZXhpYmxlQXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBTdHJpbmdUeXBlcz4gdm9pZCBhcHBlbmQoU3RyaW5nVHlwZXMuLi4pOwogCiAgICAgU3RyaW5n
IHRvU3RyaW5nKCkKICAgICB7CkBAIC0zNjgsNyArMzY3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUq
IGdldEJ1ZmZlckNoYXJhY3RlcnMoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlm
eVN0cmluZygpIGNvbnN0OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFk
YXB0ZXJzPiB2b2lkIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVy
cy4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPiB2b2lk
IGFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4pOwogCiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9zdHJpbmc7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fYnVmZmVyOwpAQCAt
Mzk5LDcgKzM5OCw3IEBAIEFMV0FZU19JTkxJTkUgVUNoYXIqIFN0cmluZ0J1aWxkZXI6OmdldEIK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPgotdm9pZCBTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMu
Li4gYWRhcHRlcnMpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEZyb21BZGFwdGVycyhTdHJp
bmdUeXBlQWRhcHRlcnMuLi4gYWRhcHRlcnMpCiB7CiAgICAgYXV0byByZXF1aXJlZExlbmd0aCA9
IGNoZWNrZWRTdW08aW50MzJfdD4obV9sZW5ndGgsIGFkYXB0ZXJzLmxlbmd0aCgpLi4uKTsKICAg
ICBpZiAocmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CkBAIC00MjUsOSArNDI0LDkg
QEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KLXZvaWQgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVB
cHBlbmQoU3RyaW5nVHlwZXMuLi4gc3RyaW5ncykKK3ZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
KFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCiB7Ci0gICAgZmxleGlibGVBcHBlbmRGcm9tQWRhcHRl
cnMoU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZXM+KHN0cmluZ3MpLi4uKTsKKyAgICBhcHBl
bmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZXM+KHN0cmluZ3MpLi4u
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI0ODcwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQo
Li4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFtZSBm
cm9tIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xk
aW5nOjplbWl0UmVzb3VyY2VTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRCdWlsdEluc1NpZ25hdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1h
bmdsZWRJbnB1dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkT3V0cHV0UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1Jlc291cmNl
c0FuZE5hbWVkQnVpbHRJbnMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25h
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFVucGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6
OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBl
clR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0UGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpkZWNsYXJlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6ZW1pdENvbnN0YW50RXhwcmVzc2lvblN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6OmlubGluZU5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6ZW1pdE5hbWVk
VHlwZURlZmluaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpUeXBlczo6YXBwZW5kTmFtZVRvKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9u
Z29pbmdMb2Fkc0Rlc2NyaXB0aW9ucyBjb25zdCk6CisKIDIwMTktMDgtMTQgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIFZhcmlhYmxl
cyBzaG91bGRuJ3QgYmUgYWJsZSB0byBoYXZlIHZvaWQgdHlwZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAkocmV2aXNp
b24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RydWN0IFR5cGVz
IHsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVy
KQogICAgIHsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZChUb2tlbjo6dHlwZU5hbWUo
dCksICIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCksICIs
ICIpOwogICAgICAgICBUeXBlczx0cy4uLj46OmFwcGVuZE5hbWVUbyhidWlsZGVyKTsKICAgICB9
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNw
cAkocmV2aXNpb24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNyArMTQyLDcgQEAgRW50cnlQb2ludFNjYWZmb2xkaW5nOjpFbnRyeVBvaW50U2NhZmZv
bAogdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCJzdHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4i
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX25hbWVkQmluZEdy
b3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPHVu
c2lnbmVkLCBTdHJpbmc+PiBzdHJ1Y3RJdGVtczsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgYXV0
byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0p
OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVz
b3VyY2UKICAgICAgICAgICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmlnaHQuZmlyc3Q7CiAgICAg
ICAgIH0pOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVt
cykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBzdHJ1
Y3RJdGVtLnNlY29uZCwgJ1xuJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICAgICIsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4nKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn07XG5cbiIpOwogICAgIH0KIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlCiAgICAgICAgIGlmIChpKQogICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIGF1dG8mIG5hbWVkQmluZEdy
b3VwID0gbV9uYW1lZEJpbmRHcm91cHNbaV07Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoImRldmljZSAiLCBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lLCAiJiAiLCBuYW1l
ZEJpbmRHcm91cC52YXJpYWJsZU5hbWUsICIgW1tidWZmZXIoIiwgbmFtZWRCaW5kR3JvdXAuYXJn
dW1lbnRCdWZmZXJJbmRleCwgIildXSIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3Vw
LnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZl
ckluZGV4LCAiKV1dIik7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjQzLDEwICsy
NDMsMTAgQEAgYm9vbCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRCdWlsdElucwogICAgICAg
ICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBXVEY6OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4o
Kml0ZW0uc2VtYW50aWMpOwogICAgICAgICBhdXRvIGludGVybmFsVHlwZSA9IGludGVybmFsVHlw
ZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYyk7CiAgICAgICAgIGlmICghaW50ZXJuYWxUeXBl
LmlzTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpbnRl
cm5hbFR5cGUpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW50ZXJuYWxUeXBl
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnICcsIG5hbWVkQnVpbHRJbi52YXJp
YWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2VtYW50aWMoYnVpbHRJblNlbWFudGljKSk7Cisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
JyAnLCBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lLCAnICcsIGF0dHJpYnV0ZUZvclNlbWFudGlj
KGJ1aWx0SW5TZW1hbnRpYykpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI1OCw3
ICsyNTgsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJCiAgICAg
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9mdW5jdGlvbkRlZmluaXRpb24ucGFy
YW1ldGVycygpW2ldLT5uYW1lKCkgPT0gcGF0aFswXSkgewotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3BhcmFtZXRlclZhcmlhYmxlc1tpXSk7CisgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3BhcmFtZXRlclZhcmlhYmxlc1tpXSk7CiAgICAgICAg
ICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPnR5cGUoKS0+dW5pZnlOb2RlKCk7CiAgICAgICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5
cGU+KHVuaWZ5Tm9kZSkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lk
IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRJCiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRp
b24tPmZpbmQocGF0aFtpXSk7CiAgICAgICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3Ry
dWN0dXJlRWxlbWVudCgqbmV4dCkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLics
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOwogICAg
ICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICAgICAgYXV0byYgdW5pZnlO
b2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwogICAgICAgICBpZiAoaXM8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRPCiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0
aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29t
cG9uZW50KTsKICAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KCpuZXh0KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVj
dHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0
LT50eXBlKCkudW5pZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKSkgewpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0TWFuZ2xlZE8KIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmVz
b3VyY2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVy
cygpLnNpemUoKTsgKytpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcs
IG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1l
ID0gbV9uYW1lZEJpbmRHcm91cHNbaV0udmFyaWFibGVOYW1lOwpAQCAtMzI1LDcgKzMyNSw3IEBA
IHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgICAgICAg
ICBhdXRvJiB1bm5hbWVkVHlwZSA9ICptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3It
PnZhbHVlXS51bm5hbWVkVHlwZTsKICAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6OlJlZmVyZW5j
ZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xu
IiwKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iLAogICAgICAgICAgICAgICAgICAgICBsZW5ndGhU
ZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxl
TmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIiwKQEAgLTMzNCw3ICszMzQsNyBA
QCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAgICAgICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJ
bnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAgICAgIiA9IHsgIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwg
IikgfTtcbiIKICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM0
Miw3ICszNDIsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAg
ICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5h
bWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQg
RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgYXV0byBtYW5nbGVk
VHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5
cGUpOwogCiAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBtYW5nbGVkVHlw
ZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4i
KTsKICAgICB9CiB9CiAKQEAgLTM5MiwxNCArMzkyLDE0IEBAIFZlcnRleEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6VmVydGV4RW50cnkKIAogdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewotICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1l
LCAiIHtcbiIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwgbV9zdGFnZUlu
U3RydWN0TmFtZSwgIiB7XG4iKTsKICAgICBmb3IgKGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFt
ZWRTdGFnZUlucykgewogICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJ
bi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVkVHlwZSk7CiAgICAgICAgIGF1dG8gZWxl
bWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmli
dXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRlSW5kZXg7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVu
dE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxl
bWVudE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKICAg
ICB9Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKICAgICAgICAgIn07XG5cbiIKICAgICAgICAgInN0cnVjdCAiLCBtX3JldHVyblN0
cnVjdE5hbWUsICIge1xuIgogICAgICk7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZQogICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVO
YW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAgYXV0byBl
bGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRv
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlw
ZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7CisgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVt
ZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCiAgICAgICAgICJ9O1xuXG4iCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZQogCiB2b2lkIFZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBN
YW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCJ2ZXJ0ZXggIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9u
TmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5h
bWUsICIgW1tzdGFnZV9pbl1dIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInZlcnRleCAi
LCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0
cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsK
ICAgICBlbWl0UmVzb3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGlu
Z0NvbW1hOjpZZXMpOwogICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJ
bmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJykn
KTsKQEAgLTQzMywyNSArNDMzLDI1IEBAIHZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0VW4KICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tu
YW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0byYg
ZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAgICAgICAgIGVtaXRNYW5n
bGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0
YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgfQogfQog
CiB2b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSBvdXRwdXRWYXJpYWJsZU5hbWUpCiB7Ci0gICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFi
bGVOYW1lLCAiO1xuIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9yZXR1cm5TdHJ1Y3RO
YW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAgIGlmIChtX2VudHJ5UG9p
bnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRz
WzBdLnBhdGguc2l6ZSgpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91
dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJp
YWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFy
aWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7
XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYg
ZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0
byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7
CiAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZh
cmlhYmxlTmFtZSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG91dHB1dFZhcmlhYmxl
TmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5w
dXRWYXJpYWJsZU5hbWUpOwogICAgICAgICBlbWl0TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVp
bGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIik7XG4i
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKICAgICB9CiB9CiAKQEAg
LTQ5MSwxNCArNDkxLDE0IEBAIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpGcmFnbWVu
dEUKIAogdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVz
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CisgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtc
biIpOwogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAg
ICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBv
aW50SXRlbXNdLnVubmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVk
U3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVk
U3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW3VzZXIo
dXNlciIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNl
cih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKICAgICB9Ci0gICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
In07XG5cbiIKICAgICAgICAgInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgog
ICAgICk7CkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdAogICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1
dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFt
ZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJp
YnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVu
dE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRy
aWJ1dGUsICI7XG4iKTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
ICJ9O1xuXG4iCkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6ZW1pdAogCiB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5h
bWUgZnVuY3Rpb25OYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImZy
YWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9z
dGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2Vf
aW5dXSIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJmcmFnbWVudCAiLCBtX3JldHVyblN0
cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcg
JywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKICAgICBlbWl0UmVz
b3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMp
OwogICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2Vk
aW5nQ29tbWE6Olllcyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKQEAgLTUzMiwy
NSArNTMyLDI1IEBAIHZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXQKICAg
ICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4u
aW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUg
PSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRo
KHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xu
Iik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgfQogfQogCiB2b2lkIEZyYWdt
ZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFy
aWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7
XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywg
b3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5z
aXplKCkpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5l
bGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRW
YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwg
IjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvJiBpbnRlcm5h
bFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAg
YXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1l
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxl
TmFtZSk7CiAgICAgICAgIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRo
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiKTtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KIH0KIApAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEgKIAogdm9pZCBD
b21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lKQogewotICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImtlcm5lbCB2b2lkICIsIGZ1bmN0aW9uTmFt
ZSwgJygnKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rp
b25OYW1lLCAnKCcpOwogICAgIGJvb2wgYWRkZWRUb1NpZ25hdHVyZSA9IGVtaXRSZXNvdXJjZVNp
Z25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Ok5vKTsKICAgICBl
bWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgYWRkZWRUb1NpZ25hdHVyZSA/IElu
Y2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzIDogSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7CiAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuY3BwCShyZXZpc2lvbiAyNDg3MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyB2b2lkIGRlY2xhcmVGdW5jdGlvbihTdHJpbmdC
dWlsZGUKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBmdW5jdGlvbk1hcHBpbmcuZmluZCgmZnVuY3Rp
b25EZWNsYXJhdGlvbik7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IGZ1bmN0aW9uTWFwcGluZy5l
bmQoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+
dmFsdWUsICcoJyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZh
bHVlLCAnKCcpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpW2ldLT50eXBlKCkpKTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Iik7XG4iKTsKIH0KQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcg
PT0gbnVsbHB0cik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSksICcg
JywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgp
KSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgYXV0byYgcGFyYW1ldGVyID0gZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMo
KVtpXTsKICAgICAgICAgICAgIGlmIChpKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVy
TmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQoJnBhcmFtZXRlciwgcGFyYW1ldGVyTmFtZSk7
CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcsIHBhcmFtZXRl
ck5hbWUpOworICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1l
KTsKICAgICAgICAgfQogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHtcbiIpOwog
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwpA
QCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCcmVha0NvbnRleHQ6Okxvb3A6CiAgICAgICAg
IEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUpOwotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoCiAgICAgICAgICAgICAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxl
LCAiID0gdHJ1ZTtcbiIKICAgICAgICAgICAgICJicmVhaztcbiIKICAgICAgICAgKTsKQEAgLTMx
MCwyMCArMzEwLDIwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCgK
IHsKICAgICBTZXRGb3JTY29wZTxPcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPj4gbG9vcFZh
cmlhYmxlU2NvcGUobV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKSk7CiAKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgImJvb2wgIiwgKm1fYnJl
YWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKICAgICAgICAg
IndoaWxlICh0cnVlKSB7XG4iCiAgICAgKTsKIAogICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRp
b24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJl
c3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9u
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VM
YXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8ge1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9u
YWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJl
YWtDb250ZXh0OjpMb29wKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICJ9IHdoaWxlKGZhbHNlKTsgXG4iCiAgICAgICAgICJpZiAoIiwgKm1fYnJlYWtP
dXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIikgYnJlYWs7XG4iCiAgICAgKTsKQEAgLTMz
Nyw3ICszMzcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiAK
ICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6
QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKKyAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIp
IGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBcbiIp
OwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OklmU3RhdGVt
ZW50JiBpZlN0YXRlbWVudCkKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQu
Y29uZGl0aW9uYWwoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAo
IiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJpZiAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkg
ewogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9IGVsc2Uge1xuIik7CkBAIC0zODAs
OSArMzgwLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAg
ICAgICBpZiAobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcpIHsKICAgICAgICAgICAgIGF1dG8gdmFy
aWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBtX2Vu
dHJ5UG9pbnRTY2FmZm9sZGluZy0+ZW1pdFBhY2sobV9zdHJpbmdCdWlsZGVyLCB0YWtlTGFzdFZh
bHVlKCksIHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
InJldHVybiAiLCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoInJldHVybiAiLCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKICAgICB9
IGVsc2UKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgicmV0dXJuO1xuIik7CiB9CkBA
IC0zOTEsNyArMzkxLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VAogewogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7CiAK
LSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiKSB7Iik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3dpdGNoICgiLCB0
YWtlTGFzdFZhbHVlKCksICIpIHsiKTsKICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0
Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3
aXRjaENhc2UpOwogICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOwpAQCAtNDAwLDkg
KzQwMCw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENh
c2UpCiB7CiAgICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoImNhc2UgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoImNhc2UgIik7CiAgICAgICAgIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3
aXRjaENhc2UudmFsdWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgiOlxuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjpcbiIpOwogICAgIH0g
ZWxzZQogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZWZhdWx0OlxuIik7CiAgICAg
U2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVu
dEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwpAQCAtNDE5LDcgKzQxOSw3IEBA
IHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZh
cmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xl
ZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGludGVnZXJMaXRlcmFs
LnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFu
Z2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmds
ZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFs
LnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShpbnRlZ2VyTGl0ZXJhbCwg
dmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRU
eXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5h
bWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1l
LCAiPigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25lZEludGVnZXJM
aXRlcmFsLnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh1bnNpZ25lZElu
dGVnZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFi
bGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29s
dmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5
cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBl
TmFtZSwgIj4oIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3Rh
dGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwg
Iik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGZsb2F0TGl0ZXJhbCwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlID0gaXM8QVNUOjpBcnJh
eVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsKIAogICAgIGF1dG8gdmFyaWFibGVOYW1lID0g
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShudWxsTGl0ZXJhbC5yZXNvbHZl
ZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2
ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOwogICAgIGlmIChpc0FycmF5UmVm
ZXJlbmNlVHlwZSkKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgieyBudWxscHRyLCAw
IH07XG4iKTsKICAgICBlbHNlCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywg
dmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBi
b29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFs
LnZhbHVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFs
dWUoYm9vbGVhbkxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ2OCw3ICs0NjgsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0
byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFu
Z2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9u
TWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7
XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2
YXJpYWJsZU5hbWUsICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5l
bnVtZXJhdGlvbk1lbWJlcigpKSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00OTEsNyArNDkxLDcg
QEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gcG9p
bnRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRU
eXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShnbG9iYWxWYXJpYWJsZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGdsb2JhbFZh
cmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ0aHJlYWQgIiwgbWFu
Z2xlZFR5cGVOYW1lLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCB0YWtlTGFzdFZhbHVlKCks
ICItPiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxW
YXJpYWJsZVJlZmVyZW5jZS5zdHJ1Y3RGaWVsZCgpKSwgIjtcbiIsCiAgICAgICAgIG1hbmdsZWRU
eXBlTmFtZSwgJyAnLCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAiO1xuIgog
ICAgICk7CkBAIC01MjMsOSArNTIzLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVudCBxdWFsaWZpZXJzLgogICAgIGlmICh2YXJpYWJsZURl
Y2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2
YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJs
ZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywg
dmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNl
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7IH07XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7IH07XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRF
eHByZXNzaW9uKQpAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Np
b24ucmlnaHQoKSk7CiAgICAgYXV0byBbcmlnaHROYW1lLCByaWdodE51bGxhYmlsaXR5XSA9IHRh
a2VMYXN0VmFsdWVBbmROdWxsYWJpbGl0eSgpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxs
YWJpbGl0eTo6Q2FuQmVOdWxsKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoImlmICgiLCBwb2ludGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHRO
YW1lLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlmICgiLCBwb2lu
dGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7CiAg
ICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIioiLCBwb2lu
dGVyTmFtZSwgIiA9ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIqIiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4iKTsKICAg
ICBhcHBlbmRSaWdodFZhbHVlV2l0aE51bGxhYmlsaXR5KGFzc2lnbm1lbnRFeHByZXNzaW9uLCBy
aWdodE5hbWUsIHJpZ2h0TnVsbGFiaWxpdHkpOwogfQogCkBAIC01NTMsNyArNTUzLDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIE1hbmdsZWRWYXJpYWJs
ZU5hbWUgcmV0dXJuTmFtZTsKICAgICBpZiAoIWlzVm9pZCkgewogICAgICAgICByZXR1cm5OYW1l
ID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKKyAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4
cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKICAgICB9
CiAKICAgICBpZiAoaXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVz
c2lvbi5mdW5jdGlvbigpKSkKQEAgLTU2MiwxMiArNTYyLDEyIEBAIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZnVuY3Rp
b25NYXBwaW5nLmZpbmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwogICAgICAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwogICAgICAgICBpZiAoIWlz
Vm9pZCkKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5O
YW1lLCAiID0gIik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpdGVy
YXRvci0+dmFsdWUsICcoJyk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHJl
dHVybk5hbWUsICIgPSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChpdGVyYXRv
ci0+dmFsdWUsICcoJyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRO
YW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChhcmd1bWVudE5hbWVzW2ldKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoYXJndW1lbnROYW1lc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KQEAgLTU5MiwxNSArNTkyLDE1IEBA
IHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIFtpbnB1
dFBvaW50ZXIsIG51bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVBbmROdWxsYWJpbGl0eSgpOwog
ICAgIGF1dG8gcmVzdWx0VmFsdWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBh
dXRvIHJlc3VsdFBvaW50ZXIgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVz
c2lvbi5wb2ludGVyKCkucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJlc3VsdFBvaW50ZXIsICIgPSAi
LCBpbnB1dFBvaW50ZXIsICI7XG4iLAogICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXN1bHRW
YWx1ZSwgIjtcbiIpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2FuQmVO
dWxsKSB7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJpZiAoIiwgcmVzdWx0UG9pbnRl
ciwgIikgIiwgcmVzdWx0VmFsdWUsICIgPSAqIiwgaW5wdXRQb2ludGVyLCAiO1xuIiwKICAgICAg
ICAgICAgICJlbHNlICIsIHJlc3VsdFZhbHVlLCAiID0geyB9O1xuIik7CiAgICAgfSBlbHNlCi0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXN1bHRWYWx1ZSwgIiA9ICoi
LCBpbnB1dFBvaW50ZXIsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChy
ZXN1bHRWYWx1ZSwgIiA9ICoiLCBpbnB1dFBvaW50ZXIsICI7XG4iKTsKICAgICBhcHBlbmRMZWZ0
VmFsdWUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLCByZXN1bHRWYWx1ZSwgcmVzdWx0UG9pbnRlciwg
bnVsbGFiaWxpdHkpOwogfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhw
cmVzc2lvbi5yaWdodCgpKTsKICAgICBhdXRvIHJpZ2h0ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAg
IGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShsb2dpY2FsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gIiwgbGVmdCk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUobG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZh
cmlhYmxlTmFtZSwgIiA9ICIsIGxlZnQpOwogICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24u
dHlwZSgpKSB7CiAgICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6CiAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAmJiAiKTsKQEAgLTYyMSw3ICs2MjEsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiB8fCAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1f
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyaWdodCwgIjtcbiIpOworICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQocmlnaHQsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxvZ2lj
YWxFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC02MzAsNyArNjMwLDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwogICAgIGF1dG8gb3BlcmFuZCA9
IHRha2VMYXN0VmFsdWUoKTsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICEiLCBvcGVyYW5kLCAiO1xuIik7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNh
bE5vdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICEi
LCBvcGVyYW5kLCAiO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShsb2dpY2FsTm90RXhwcmVz
c2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLnJlc29sdmVkVHlwZSgpKTsKICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFy
cmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAg
ICAgICAgYXV0byBwdHJWYWx1ZSA9IHRha2VMYXN0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAog
ICAgICAgICAgICAgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIsCiAg
ICAgICAgICAgICAiaWYgKCIsIHB0clZhbHVlLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIs
IHB0clZhbHVlLCAiLCAxfTtcbiIsCiAgICAgICAgICAgICAiZWxzZSAiLCB2YXJpYWJsZU5hbWUs
ICIgPSB7IG51bGxwdHIsIDAgfTtcbiIKQEAgLTY1MiwxMCArNjUyLDEwIEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJy
YXlUeXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVk
VHlwZSgpKSkgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFs
dWU7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPiht
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5
cGUubnVtRWxlbWVudHMoKSwgIiB9O1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAi
LT5kYXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKICAgICB9IGVs
c2UgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcg
JywgdmFyaWFibGVOYW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpOworICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSB7ICIsIGxWYWx1ZSwgIiwgMSB9O1xuIik7CiAgICAgfQogICAgIGFwcGVuZFJpZ2h0VmFs
dWUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KQEAgLTY2
NSw3ICs2NjUsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7
CiAgICAgYXV0byBbcG9pbnRlciwgbnVsbGFiaWxpdHldID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsK
ICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJl
c29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7
CiAgICAgYXBwZW5kUmlnaHRWYWx1ZVdpdGhOdWxsYWJpbGl0eShtYWtlUG9pbnRlckV4cHJlc3Np
b24sIHZhcmlhYmxlTmFtZSwgbnVsbGFiaWxpdHkpOwogfQogCkBAIC02ODEsMTcgKzY4MSwxNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBjaGVj
ayA9IHRha2VMYXN0VmFsdWUoKTsKIAogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAor
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgIG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZSh0ZXJuYXJ5RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFi
bGVOYW1lLCAiO1xuIgogICAgICAgICAiaWYgKCIsIGNoZWNrLCAiKSB7XG4iCiAgICAgKTsKICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCiAgICAgICAgIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwg
IjtcbiIKICAgICAgICAgIn0gZWxzZSB7XG4iCiAgICAgKTsKICAgICBjaGVja0Vycm9yQW5kVmlz
aXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
IHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIKICAgICAgICAgIn1c
biIKICAgICApOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92YXJpYWJsZU1hcHBpbmcuZmlu
ZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwogICAgIGF1dG8gcG9pbnRlck5hbWUgPSBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
InRocmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodmFyaWFibGVSZWZlcmVu
Y2UucmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCBpdGVyYXRvci0+
dmFsdWUsICI7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0aHJlYWQgIiwgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7
CiAgICAgYXBwZW5kTGVmdFZhbHVlKHZhcmlhYmxlUmVmZXJlbmNlLCBpdGVyYXRvci0+dmFsdWUs
IHBvaW50ZXJOYW1lLCBOdWxsYWJpbGl0eTo6Tm90TnVsbCk7CiB9CiAKQEAgLTcxMiwyNyArNzEy
LDI3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0Q29uc3QKIHsKICAgICBj
b25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgWyZdKEFT
VDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7CisgICAgICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKICAgICAg
ICAgfSwKICAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChmbG9hdExpdGVyYWwudmFs
dWUoKSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGZsb2F0TGl0ZXJhbC52
YWx1ZSgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdKEFTVDo6TnVsbExpdGVyYWwmKSB7Ci0g
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIm51bGxwdHIiKTsKKyAg
ICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxwdHIiKTsKICAgICAgICAgfSwK
ICAgICAgICAgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7CiAgICAg
ICAgICAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInRydWUiKTsKKyAgICAgICAgICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJmYWxzZSIpOworICAgICAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIH0sCiAgICAg
ICAgIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsKSB7CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVu
dW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6Iiwg
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpLCAiOjoiLCBtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOwogICAgICAgICB9CiAgICAgKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ4
NzA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xO
YXRpdmVGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxNCArMTI2LDE0
IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0
byYgcmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpOwogICAgICAg
ICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0
dXJuVHlwZSk7CiAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KHJldHVybk5hbWUsICIgPSB7IH07XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHJldHVybk5hbWUsICIgPSB7IH07XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKICAgICAgICAgYXV0
byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmFt
ZXRlclR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBt
ZXRhbFBhcmFtZXRlck5hbWUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIntcbiIsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4ID0gIiwgYXJn
c1swXSwgIjtcbiIpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlv
bkRlZmluaXRpb24gPSBbXSAoYXV0byYgdHlwZSkgewpAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgdm9p
ZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgICAgIGJv
b2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG1lbWJl
ciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewogICAgICAg
ICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAgICAgY2Fz
ZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCku
dmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwogICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgIGRlZmF1bHQ6IHggPSAwOyBicmVhazsg
fVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgp
O1xufVxuIik7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTY3LDEzICsxNjcsMTMgQEAgdm9pZCBp
bmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBhdXRvJiB1bm5hbWVk
UGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUp
OwogICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkg
ewogICAgICAgICAgICAgYXV0byYgYXJyYXlQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpB
cnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAg
ICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJyYXlQYXJhbWV0ZXJUeXBlLm51bUVs
ZW1lbnRzKCksICI7XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFBhcmFtZXRlclR5
cGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1sw
XSwgIi5sZW5ndGg7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4Niw3ICsxODYs
NyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAg
ICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVF
bGVtZW50ID0gc3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxl
bWVudCgqc3RydWN0dXJlRWxlbWVudCkpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVy
ZUVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBBU1NFUlQoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkp
OwpAQCAtMTk4LDE4ICsxOTgsMTggQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdC
dWlsZGVyJgogICAgICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yLiJfc3RyLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgIGZpZWxkTmFtZSA9IGZpZWxkTmFtZS5zdWJzdHJpbmcoMCwgZmllbGROYW1lLmxlbmd0
aCgpIC0gMSk7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5O
YW1lLCAiID0gIiwgYXJnc1swXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwg
Jy4nKTsKICAgICAgICAgICAgIGFwcGVuZE1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIsIGFyZ3NbMV0sICI7
XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBhcmdzWzFdLCAi
O1xuIik7CiAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAg
ICAgICAgIGF1dG8gZmllbGROYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCku
c3Vic3RyaW5nKCJvcGVyYXRvci4iX3N0ci5sZW5ndGgoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAg
ICAgICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICcuJyk7CiAgICAgICAgIGFwcGVuZE1h
bmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IjtcbiIpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3Ry
aW5nQnVpbGRlciYKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yJi4iX3N0ci5sZW5n
dGgoKSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gJigiLCBh
cmdzWzBdLCAiLT4iKTsKIAogICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9ICpuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwpAQCAtMjMwLDkgKzIzMCw5
IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAg
IGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24+KG5hbWVkVHlwZSk7CiAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVtZW50ID0g
c3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlRWxlbWVudCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVs
ZW1lbnQpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1lbnQpKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGZpZWxkTmFt
ZSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChmaWVsZE5hbWUpOwogCiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2
b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7CiAgICAg
ICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKIAotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAg
ICAgICAgIHJldHVybk5hbWUsICIgPSAoIiwgYXJnc1sxXSwgIiA8ICIsIGFyZ3NbMF0sICIubGVu
Z3RoKSA/ICIsICIgJigiLCBhcmdzWzBdLCAiLnBvaW50ZXJbIiwgYXJnc1sxXSwgIl0pIDogbnVs
bHB0cjtcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSwxOSArMjY5
LDE5IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKIAogICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJPZk1hdHJpeFJvd3MoKTsKICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFt
ZSwgIiByZXN1bHQ7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImRvIHtcbiIs
IG1ldGFsUmV0dXJuTmFtZSwgIiByZXN1bHQ7XG4iKTsKIAotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSB7IiwgcmV0
dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIiwKICAgICAg
ICAgICAgICIgICAgcmVzdWx0WzBdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiXTtcbiIs
CiAgICAgICAgICAgICAiICAgIHJlc3VsdFsxXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwg
IiArICIsIG51bWJlck9mUm93cywgIl07XG4iKTsKIAogICAgICAgICBpZiAobnVtYmVyT2ZDb2x1
bW5zID49IDMpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAg
cmVzdWx0WzJdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dz
ICogMiwgIl07XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVz
dWx0WzJdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICog
MiwgIl07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSA0KQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3Nb
MF0sICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3NbMF0s
ICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CiAKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoCiAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSByZXN1bHQ7XG4iLAog
ICAgICAgICAgICAgIn0gd2hpbGUgKDApO1xuIik7CiAKQEAgLTI5NiwxOCArMjk2LDE4IEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mQ29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1ucygpOwogCi0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFtZSwgIiBtID0g
IiwgYXJnc1swXSwgIjtcbiIsCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4i
LCBtZXRhbFJldHVybk5hbWUsICIgbSA9ICIsIGFyZ3NbMF0sICI7XG4iLAogICAgICAgICAgICAg
bWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAogICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBudW1iZXJPZlJvd3MsICIpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gbTtcbmJyZWFrO31cbiIsCiAgICAgICAgICAgICAiICAgIG1baV0gPSAi
LCBhcmdzWzJdLCAiWzBdO1xuIiwKICAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZS
b3dzLCAiXSA9ICIsIGFyZ3NbMl0sICJbMV07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29s
dW1ucyA+PSAzKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAg
IG1baSArICIsIG51bWJlck9mUm93cyAqIDIsICJdID0gIiwgYXJnc1syXSwgIlsyXTtcbiIpOwor
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAyLCAiXSA9ICIsIGFyZ3NbMl0sICJbMl07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9m
Q29sdW1ucyA+PSA0KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
ICAgIG1baSArICIsIG51bWJlck9mUm93cyAqIDMsICJdID0gIiwgYXJnc1syXSwgIlszXTtcbiIp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXSA9ICIs
IGFyZ3NbMl0sICJbM107XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAg
ICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBtO1xuIiwKICAgICAgICAgICAgICJ9IHdo
aWxlKDApO1xuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTMxNywxNCArMzE3LDE0IEBAIHZvaWQg
aW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byBvcGVyYXRv
ck5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJh
dG9yIl9zdHIubGVuZ3RoKCkpOwogICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIGF1dG8gbWV0YWxQYXJh
bWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4ID0gIiwgYXJn
c1swXSwgIjtcbiIsIAogICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBvcGVyYXRv
ck5hbWUsICJ4O1xufVxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBhcmdz
WzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAiO1xuIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0zNTQsMTQgKzM1NCwxNCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0
aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJhc3VpbnQiCiAgICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJhc2Zsb2F0IikgewogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSAiLCBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkpLCAnKCcsIGFyZ3NbMF0sICIpO1xuIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInBv
dyIgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImF0YW4yIikgewogICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIigiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFd
LCAiKTtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICBpZiAobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3RhcnRzV2l0aCgiSW50ZXJsb2NrZWQiX3N0cikpIHsK
ICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJJbnRlcmxv
Y2tlZENvbXBhcmVFeGNoYW5nZSIpIHsKICAgICAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgImF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGlj
aXQoIiwgYXJnc1swXSwgIiwgJiIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIsIG1lbW9yeV9v
cmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iLAogICAgICAgICAgICAgICAg
ICcqJywgYXJnc1szXSwgIiA9ICIsIGFyZ3NbMV0sICI7XG4iKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1
aWxkZXImCiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAzKTsKICAgICAgICAgYXV0byBuYW1lID0gYXRvbWljTmFtZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIkludGVybG9ja2VkIl9zdHIu
bGVuZ3RoKCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAnKicsIGFyZ3NbMl0sICIgPSBh
dG9taWNfIiwgbmFtZSwgIl9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQx
NCwxOSArNDE0LDE5IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYK
ICAgICAgICAgYXV0byYgcmV0dXJuVHlwZSA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi50eXBlKCkudW5pZnlOb2RlKCkpKTsKICAgICAgICAgYXV0byByZXR1cm5WZWN0b3JMZW5ndGgg
PSB2ZWN0b3JMZW5ndGgocmV0dXJuVHlwZSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICBy
ZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgIi5zYW1wbGUoIiwgYXJnc1sxXSwgIiwgIik7CiAK
ICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAg
IEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbMl0sICcuJywgInh5enciX3N0
ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsICIsIGFyZ3NbMl0sICcuJywgInh5enciX3N0
ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChhcmdzWzJdKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMl0pOwogICAgICAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpCi0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsIGFyZ3NbM10pOworICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIiwgYXJnc1szXSk7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpIik7CiAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRl
eHR1cmUoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIi4iLCAi
eHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKKyAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJu
VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI7XG4iKTsKIAog
ICAgICAgICByZXR1cm47CkBAIC00NDksMzEgKzQ0OSwzMSBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1
bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAgICBTdHJpbmcgZGltZW5zaW9uc1tdID0g
eyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9OwogICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7ICsraSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmcoaSwgMSk7Ci0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBh
cmdzWzFdLCAnLicsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFy
Z3NbMV0sICcuJywgc3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25z
W2ldLCAiKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBi
cmVhazt9XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlm
ICgiLCBhcmdzWzFdLCAnLicsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCIsIGFyZ3NbMV0sICcuJywgc3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1l
bnNpb25zW2ldLCAiKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAi
KDApOyBicmVhazt9XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gc3VmZml4
ID0gInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAoIiwgYXJnc1sx
XSwgJy4nLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFd
LCAnLicsIHN1ZmZpeCwgIikgPj0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpKSB7Iiwg
cmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7Cisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAnLics
IHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICcuJywg
c3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIHsiLCByZXR1cm5O
YW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAoIiwgYXJn
c1sxXSwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIpID49ICIs
IGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsgIiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1sxXSwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCIsIGFyZ3NbMV0sICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsgIiwgcmV0
dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICAgICAiICAgIGlmICgiLCBhcmdzWzFdLCAiLnggPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQz
Ml90PigiLCBhcmdzWzFdLCAiLngpID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iCiAgICAg
ICAgICAgICAgICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIueSA8IDAgfHwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIueSkgPj0gIiwgYXJnc1swXSwgIi5nZXRfaGVpZ2h0
KCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9
XG4iKTsKIAogICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQot
ICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYg
KCIsIGFyZ3NbMV0sICIueiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0s
ICIueikgPj0gIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSkgeyIsIHJldHVybk5hbWUsICIgPSAi
LCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIpOworICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAiLnogPCAwIHx8IHN0
YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiLnopID49ICIsIGFyZ3NbMF0sICIuZ2V0
X2RlcHRoKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBi
cmVhazt9XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIu
cmVhZCgiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCByZXR1cm5OYW1l
LCAiID0gIiwgYXJnc1swXSwgIi5yZWFkKCIpOwogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNU
ZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3Ro
ID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50Iiwg
dmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1sxXSwgJy4n
LCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwg
dWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9y
TGVuZ3RoIC0gMSwgMSksICcpJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
dWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAnKCcsIGFyZ3Nb
MV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAx
KSwgIiksIHVpbnQoIiwgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMV0sICcpJyk7CisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCks
ICcoJywgYXJnc1sxXSwgJyknKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsK
ICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IHJldHVyblZlY3Rvckxlbmd0aCkpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Jy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAiO1xuIgogICAgICAgICAgICAg
In0gd2hpbGUoMCk7XG4iKTsKQEAgLTQ4MywxNCArNDgzLDE0IEBAIHZvaWQgaW5saW5lTmF0aXZl
RnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKIAogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKSA9PSAibG9hZCIpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
ICAgICByZXR1cm5OYW1lLCAiID0gYXRvbWljX2xvYWRfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwg
bWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gInN0b3JlIikgewogICAg
ICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
ID09IDIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJhdG9taWNfc3RvcmVfZXhwbGljaXQo
IiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MjYsMzYgKzUyNiwzNiBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJU
KGluZGV4ID09IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7
CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAiaWYgKCIsIHdpZHRoTmFtZSwgIilcbiIKICAg
ICAgICAgICAgICIgICAgKiIsIHdpZHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRo
KCIpOwogCiAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoYXJnc1sxXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChhcmdzWzFdKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKICAg
ICAgICAgaWYgKGhlaWdodE5hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAg
ICAgICAiICAgIGlmICgiLCAqaGVpZ2h0TmFtZSwgIilcbiIKICAgICAgICAgICAgICAgICAiICAg
ICAgICAqIiwgKmhlaWdodE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoIik7CiAg
ICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChhcmdzWzFdKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChhcmdzWzFdKTsKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xu
Iik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlcHRoTmFtZSkgewotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAogICAgICAgICAgICAgICAgICIgICAgaWYgKCIsICpkZXB0aE5hbWUsICIpXG4iCiAgICAg
ICAgICAgICAgICAgIiAgICAgICAgKiIsICpkZXB0aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdl
dF9kZXB0aCgiKTsKICAgICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMV0pOworICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMV0pOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIik7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZWxlbWVudHNOYW1lKSB7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgKmVsZW1l
bnRzTmFtZSwgIilcbiIKICAgICAgICAgICAgICAgICAiICAgICAgICAqIiwgKmVsZW1lbnRzTmFt
ZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKTtcbiIpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChudW1iZXJPZkxldmVsc05hbWUpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAg
ICAgICAgICAgICAgICAiICAgIGlmICgiLCAqbnVtYmVyT2ZMZXZlbHNOYW1lLCAiKVxuIgogICAg
ICAgICAgICAgICAgICIgICAgICAgICoiLCAqbnVtYmVyT2ZMZXZlbHNOYW1lLCAiID0gIiwgYXJn
c1swXSwgIi5nZXRfbnVtX21pcF9sZXZlbHMoKTtcbiIpOwogICAgICAgICB9CkBAIC02MTUsMzAg
KzYxNSwzMCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAg
ICAgICAgICBTdHJpbmcgZGltZW5zaW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3Ry
LCAiZGVwdGgiX3N0ciB9OwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDE7ICsraSkgewogICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0g
Inh5enciX3N0ci5zdWJzdHJpbmcoaSwgMSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLiIsIHN1ZmZpeCwgIiA+PSAi
LCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIGJyZWFrO1xuIik7CisgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1syXSwgIi4i
LCBzdWZmaXgsICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSBi
cmVhaztcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6
dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAnLics
IHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIGJyZWFrO1xuIik7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAn
LicsIHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIGJyZWFrO1xu
Iik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobG9jYXRpb25WZWN0b3JMZW5n
dGggPT0gMSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIg
ICAgaWYgKCIsIGFyZ3NbMl0sICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgYnJlYWs7
XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBh
cmdzWzJdLCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIGJyZWFrO1xuIik7CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICAgICAiICAgIGlmICgiLCBhcmdzWzJdLCAiLnggPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lk
dGgoKSkgYnJlYWs7XG4iCiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMl0s
ICIueSA+PSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQoKSkgYnJlYWs7XG4iKTsKICAgICAgICAg
ICAgICAgICBpZiAobG9jYXRpb25WZWN0b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLnog
Pj0gIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoKSkgYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1syXSwgIi56ID49ICIs
IGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkpIGJyZWFrO1xuIik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGFyZ3Nb
MF0sICIud3JpdGUodmVjPCIsIG1ldGFsSW5uZXJUeXBlTmFtZSwgIiwgND4oIiwgYXJnc1sxXSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgYXJnc1swXSwgIi53cml0ZSh2
ZWM8IiwgbWV0YWxJbm5lclR5cGVOYW1lLCAiLCA0PigiLCBhcmdzWzFdKTsKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA0IC0gaXRlbVZlY3Rvckxlbmd0aDsgKytpKQogICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMCIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKSwgIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3Ry
aW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3NbMl0sICIu
IiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSwgJykn
KTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1syXSwgJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwgdWludCgiLCBhcmdz
WzJdLCAiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwg
MSksICcpJyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCksICco
JywgYXJnc1syXSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50
IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzJdLCAnKScp
OwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICIpO1xuIgogICAg
ICAgICAgICAgIn0gd2hpbGUoMCk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJ
KHJldmlzaW9uIDI0ODcwNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmlu
aXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFt
ZWRUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKHN0cnVjdHVy
ZURlZmluaXRpb24pLCAiO1xuIik7CiAgICAgfQogCiAgICAgc3RkOjpmdW5jdGlvbjxNYW5nbGVk
T3JOYXRpdmVUeXBlTmFtZShBU1Q6Ok5hbWVkVHlwZSYpPiBtX21hbmdsZWROYW1lRm9yTmFtZWRU
eXBlOwpAQCAtMzYyLDE5ICszNjIsMTkgQEAgdm9pZCBUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlw
ZURlZmluaXRpbwogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewogICAgICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxSZWZlcmVuY2VUeXBlTmFt
ZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpLm5hbWVkVHlwZSgpOwogICAgICAgICBlbWl0TmFtZWRU
eXBlRGVmaW5pdGlvbihzdHJpbmdCdWlsZGVyLCBuYW1lZFR5cGUsIGVtaXR0ZWROYW1lZFR5cGVz
LCBlbWl0dGVkVW5uYW1lZFR5cGVzKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKSwgJyAnLCBiYXNl
VHlwZU5hbWVOb2RlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlwZSksICcgJywg
YmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAg
ICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxQb2ludGVyVHlwZU5hbWVOb2RlPihiYXNl
VHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIHRvU3Ry
aW5nKHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwb2ludGVyVHlwZS5wYXJlbnQo
KS0+bWFuZ2xlZE5hbWUoKSwgIiogIiwgcG9pbnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIp
OworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2lu
dGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcG9pbnRlclR5cGUucGFyZW50KCktPm1hbmds
ZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlS
ZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8
QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwogICAgICAgICBB
U1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAg
ICAgInN0cnVjdCAiLCBhcnJheVJlZmVyZW5jZVR5cGUubWFuZ2xlZE5hbWUoKSwgInsgXG4iCiAg
ICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3Bh
Y2UoKSksICcgJywgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVudCgpLT5tYW5nbGVkTmFtZSgpLCAi
KiBwb2ludGVyO1xuIgogICAgICAgICAgICAgIiAgICB1aW50MzJfdCBsZW5ndGg7XG4iCkBAIC0z
ODUsNyArMzg1LDcgQEAgdm9pZCBUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpbwog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYg
YXJyYXlUeXBlID0gZG93bmNhc3Q8QXJyYXlUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUp
OwogICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgYXJyYXlUeXBlLnBh
cmVudCgpLT5tYW5nbGVkTmFtZSgpLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4g
IiwgYXJyYXlUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInR5cGVkZWYgYXJyYXk8IiwgYXJyYXlUeXBlLnBhcmVudCgpLT5tYW5nbGVkTmFt
ZSgpLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4gIiwgYXJyYXlUeXBlLm1hbmds
ZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBA
IC00MDYsMjEgKzQwNiwyMSBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdE5hbWVkVHlwZURlZmluaXRp
b24oCiAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7
CiAgICAgICAgIGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9
IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBl
KGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNh
c3Q8QVNUOjpOYW1lZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlv
bkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudW1lcmF0
aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWRO
YW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVy
YXRpb25NZW1iZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1l
cmF0aW9uTWVtYmVyKSwgIiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIs
XG4iKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2Ug
aWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAg
IC8vIE5hdGl2ZSB0eXBlcyBhbHJlYWR5IGhhdmUgZGVmaW5pdGlvbnMuIFRoZXJlJ3Mgbm90aGlu
ZyB0byBkby4KICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFt
ZWRUeXBlKSkgewogICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVy
ZURlZmluaXRpb24pLCAiIHtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3Ry
dWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIiB7XG4iKTsK
ICAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlv
bi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUo
KSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQp
LCAiO1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmds
ZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVG
b3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQpLCAiO1xuIik7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byYg
dHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIG1hbmds
ZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9y
VHlwZSh0eXBlRGVmaW5pdGlvbiksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSks
ICcgJywgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOwogICAgIH0K
ICAgICBlbWl0dGVkTmFtZWRUeXBlcy5hZGQoJm5hbWVkVHlwZSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2
aXNpb24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjgsMTIgKzEzNjgsMTIgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbwogICAgIGFic29sdXRlQm91bmRzLm1v
dmUobGF5ZXIub2Zmc2V0RnJvbUFuY2VzdG9yKG1fcmVuZGVyVmlldy5sYXllcigpKSk7CiAgICAg
CiAgICAgU3RyaW5nQnVpbGRlciBsb2dTdHJpbmc7Ci0gICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBw
ZW5kKHBhZCgnICcsIDEyICsgZGVwdGggKiAyLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KCZsYXllcikpKSwgIiBpZCAiLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlM
YXllcklEKCksICIgKCIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5k
cy54KCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJz
b2x1dGVCb3VuZHMueSgpLnRvRmxvYXQoKSwgMyksICctJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFgoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhZKCkudG9GbG9hdCgpLCAzKSwg
IikgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGJhY2tpbmctPmJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlKCkgLyAxMDI0LCAyKSwgIktCIik7CisgICAgbG9nU3RyaW5nLmFwcGVuZChw
YWQoJyAnLCAxMiArIGRlcHRoICogMiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigm
bGF5ZXIpKSksICIgaWQgIiwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJ
RCgpLCAiICgiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueCgp
LnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRl
Qm91bmRzLnkoKS50b0Zsb2F0KCksIDMpLCAnLScsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0
aChhYnNvbHV0ZUJvdW5kcy5tYXhYKCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMubWF4WSgpLnRvRmxvYXQoKSwgMyksICIpICIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlF
c3RpbWF0ZSgpIC8gMTAyNCwgMiksICJLQiIpOwogCiAgICAgaWYgKCFsYXllci5yZW5kZXJlcigp
LnN0eWxlKCkuaGFzQXV0b1pJbmRleCgpKQotICAgICAgICBsb2dTdHJpbmcuZmxleGlibGVBcHBl
bmQoIiB6LWluZGV4OiAiLCBsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuekluZGV4KCkpOworICAg
ICAgICBsb2dTdHJpbmcuYXBwZW5kKCIgei1pbmRleDogIiwgbGF5ZXIucmVuZGVyZXIoKS5zdHls
ZSgpLnpJbmRleCgpKTsKIAotICAgIGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVuZCgiICgiLCBsb2dS
ZWFzb25zRm9yQ29tcG9zaXRpbmcobGF5ZXIpLCAiKSAiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5k
KCIgKCIsIGxvZ1JlYXNvbnNGb3JDb21wb3NpdGluZyhsYXllciksICIpICIpOwogCiAgICAgaWYg
KGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+Y29udGVudHNPcGFxdWUoKSB8fCBiYWNraW5nLT5w
YWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkgfHwgYmFja2luZy0+Zm9yZWdyb3VuZExheWVy
KCkgfHwgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkpIHsKICAgICAgICAgbG9nU3RyaW5nLmFw
cGVuZCgnWycpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNp
b24gMjQ4NzA2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDExLDcgKzUwMTEsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpvbmdvaW5n
TG9hZHNEZXNjcmlwdGlvCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAKICAgICAgICAg
Zm9yIChhdXRvJiBpbmZvIDogcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCkt
PmludGVybWVkaWF0ZUxvYWRJbmZvcm1hdGlvbkZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKGlk
ZW50aWZpZXIpKQotICAgICAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnWycsIChpbnQp
aW5mby50eXBlLCAiLFwiIiwgaW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiXCIsXCIiLCBp
bmZvLnJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpLCAnXScpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCAoaW50KWluZm8u
dHlwZSwgIixcIiIsIGluZm8ucmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIlwiLFwiIiwgaW5mby5y
ZXF1ZXN0Lmh0dHBNZXRob2QoKSwgIlwiLCIsIGluZm8ucmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgJ10nKTsKIAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNDg4MTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBl
bmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFt
ZSBmcm9tIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpkdW1wSGlzdG9yeUl0ZW0pOgorICAgICAg
ICBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgYWNjZXNzIHRoZSB1bmRlcmx5aW5nIFN0cmluZyBvZiB0
aGUgVVJMIHJhdGhlciB0aGFuCisgICAgICAgIHJlbHlpbmcgb24gdGhlIGltcGxpY2l0IGNvbnZl
cnNpb24gc2luY2UgaXQgaXMgbm93IGFtYmlndW91cyB3aGljaCBhcHBlbmQoLi4uKQorICAgICAg
ICBvdmVybG9hZCBzaG91bGQgYmUgdXNlZC4KKwogMjAxOS0wOC0xNiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RvcmFnZUFyZWE6OnNldFdvcmtRdWV1
ZSgpIG1lbWJlciBmdW5jdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI0ODcwNikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcwLDcgKzE4
NzAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGZpbGUgdGVzdCk6Iik7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnQpKTsKICAgICB9
IGVsc2UKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodXJsKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQodXJsLnN0cmluZygpKTsKICAgICAKICAgICBhdXRvJiB0YXJnZXQgPSBp
dGVtLnRhcmdldCgpOwogICAgIGlmICh0YXJnZXQubGVuZ3RoKCkpIHsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODcwNikK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5
LTA4LTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFtZSBmcm9tIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxl
QXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wOC0xNCAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdKFJFR1JFU1NJT046
IHIyMDA0ODcpOiBXZWJLaXQuUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvRm9yUm90YXRlZElt
YWdlIGZhaWxzIG9uIGlPUyAxMwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODcwNikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsMjUgKzExNiwyNSBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBBcHBlbmQpCiAgICAgfQog
fQogCi1URVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBGbGV4aWJsZUFwcGVuZCkKK1RFU1QoU3RyaW5n
QnVpbGRlclRlc3QsIFZhcmlhZGljQXBwZW5kKQogewogICAgIHsKICAgICAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiMDEy
MzQ1Njc4OSIpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKCIwMTIzNDU2Nzg5Iikp
OwogICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OSIsIGJ1aWxkZXIpOwot
ICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJhYmNkIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJhYmNkIik7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5
YWJjZCIsIGJ1aWxkZXIpOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCdlJyk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdlJyk7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50
KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWlsZGVyKTsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIiKTsKICAgICAgICAgZXhwZWN0QnVp
bGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOwogICAgIH0KIAogICAgIHsK
ICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxl
QXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIsICdlJywgIiIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmcoIjAxMjM0NTY3ODkiKSwgImFiY2QiLCAnZScsICIiKTsKICAg
ICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOwot
ICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiQSIpLCAiQiIsICdDJywgIiIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycsICIiKTsKICAg
ICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZUFCQyIsIGJ1aWxkZXIp
OwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376585</attachid>
            <date>2019-08-16 20:17:36 -0700</date>
            <delta_ts>2019-08-17 07:44:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200756-20190816201736.patch</filename>
            <type>text/plain</type>
            <size>81912</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg4MTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBl
bmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgdGhlcmUgYXJlIG5vIHJlbWFp
bmluZyBtdWx0aS1wYXJhbWV0ZXIgb3IgYmVoYXZpb3IgY2hhbmdpbmcgb3ZlcmxvYWRzCisgICAg
ICAgIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLCB3ZSBjYW4gcmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikKKyAgICAgICAgdG8gU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKC4uLikuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBsZWF2ZXMgdGhlIGV4aXN0
aW5nIHNpbmdsZSBwYXJhbWV0ZXIgb3ZlcmxvYWRzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4p
CisgICAgICAgIGZvciBub3csIGFuZCBzaW5jZSB0aGV5IGhhdmUgc3BlY2lmeSBzcGVjaWZpYyB0
eXBlcywgdGhleSB3aWxsIGNvbnRpbnVlIHRvIGJlIHByZWZlcmVkCisgICAgICAgIGluIG92ZXJs
b2FkIHJlc29sdXRpb24uIE9uY2Ugd2UgaGF2ZSBjb25jbHVkZWQgdGhlIHZhcmlhZGljIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIGNhbiBwcm92aWRlIHRoZSBzYW1lIHBlcmZv
cm1hbmNlIGFzIHRoZSBzaW5nbGUgcGFyYW1ldGVyIHZhcmlhbnQsIHdlIGNhbiByZW1vdmUgdGhl
CisgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgdmFyaWFudC4KKworICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgZnJvbSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4p
IHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCiAyMDE5LTA4LTE1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IHVzZSB1bmlvbiB0byBzdG9y
ZSBOb2RlUmFyZURhdGEqIGFuZCBSZW5kZXJPYmplY3QqCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw3ICsz
MDgsNyBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwogICAgIGZvciAo
YXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgnLycsIGNvbXBvbmVudCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJywgY29tcG9u
ZW50KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw4ICsyMzUsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRXaWR0aE51
bWJlcihmbG9hdCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kRml4ZWRXaWR0aE51bWJlcihkb3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQ
bGFjZXMpOwogCi0gICAgLy8gRklYTUU6IFJlbmFtZSB0byBhcHBlbmQoLi4uKSBhZnRlciByZW5h
bWluZyBhbnkgb3ZlcmxvYWRzIG9mIGFwcGVuZCB0aGF0IHRha2UgbW9yZSB0aGFuIG9uZSBhcmd1
bWVudC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBmbGV4aWJs
ZUFwcGVuZChTdHJpbmdUeXBlcy4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5n
VHlwZXM+IHZvaWQgYXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpCiAgICAgewpAQCAtMzY4LDcgKzM2Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBnZXRCdWZm
ZXJDaGFyYWN0ZXJzKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmco
KSBjb25zdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4g
dm9pZCBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4pOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4gdm9pZCBhcHBlbmRG
cm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uKTsKIAogICAgIG11dGFibGUgU3RyaW5n
IG1fc3RyaW5nOwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2J1ZmZlcjsKQEAgLTM5OSw3ICsz
OTgsNyBAQCBBTFdBWVNfSU5MSU5FIFVDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4KLXZvaWQgU3RyaW5nQnVpbGRl
cjo6ZmxleGlibGVBcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uIGFkYXB0
ZXJzKQordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFk
YXB0ZXJzLi4uIGFkYXB0ZXJzKQogewogICAgIGF1dG8gcmVxdWlyZWRMZW5ndGggPSBjaGVja2Vk
U3VtPGludDMyX3Q+KG1fbGVuZ3RoLCBhZGFwdGVycy5sZW5ndGgoKS4uLik7CiAgICAgaWYgKHJl
cXVpcmVkTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgewpAQCAtNDI1LDkgKzQyNCw5IEBAIHZvaWQg
U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmRGcm9tQWQKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUuLi4gU3RyaW5nVHlwZXM+Ci12b2lkIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKFN0
cmluZ1R5cGVzLi4uIHN0cmluZ3MpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChTdHJpbmdU
eXBlcy4uLiBzdHJpbmdzKQogewotICAgIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7CisgICAgYXBwZW5kRnJvbUFk
YXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNDg4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NiBAQAorMjAxOS0wOC0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8g
U3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsIHNpdGVzIGZvciByZW5hbWUgZnJvbSBTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4pIHRvIAorICAgICAgICBTdHJpbmdCdWlsZGVy
OjphcHBlbmQoLi4uKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dFJlc291cmNlU2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0QnVpbHRJbnNTaWduYXR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkSW5w
dXRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0TWFuZ2xlZE91dHB1dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1l
ZEJ1aWx0SW5zKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRVbnBhY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0U2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6ZGVjbGFyZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRD
b25zdGFudEV4cHJlc3Npb25TdHJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjppbmxpbmVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZp
bml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6VHlwZXM6OmFwcGVuZE5hbWVUbyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvbmdvaW5nTG9h
ZHNEZXNjcmlwdGlvbnMgY29uc3QpOgorCiAyMDE5LTA4LTE2ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBFbnVtcyBzaG91bGQgYmUg
c2hhZG93ZWQgYnkgbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDg4MTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdHJ1Y3QgVHlwZXMgewogCiAgICAg
c3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiAgICAgewot
ICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7CiAgICAg
ICAgIFR5cGVzPHRzLi4uPjo6YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwogICAgIH0KIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9p
bnRTY2FmZm9sZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCShyZXZpc2lv
biAyNDg4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsx
NDIsNyBAQCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkVudHJ5UG9pbnRTY2FmZm9sCiB2b2lkIEVu
dHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlSGVscGVyVHlwZXMoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0
cnVjdCAiLCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fbmFtZWRCaW5kR3JvdXBzW2ldLnN0
cnVjdE5hbWUsICIge1xuIik7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIFN0
cmluZz4+IHN0cnVjdEl0ZW1zOwogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5
b3V0W2ldLmJpbmRpbmdzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9yZXNvdXJjZU1hcC5maW5kKCZtX2xheW91dFtpXS5iaW5kaW5nc1tqXSk7CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZQogICAg
ICAgICAgICAgcmV0dXJuIGxlZnQuZmlyc3QgPCByaWdodC5maXJzdDsKICAgICAgICAgfSk7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RydWN0SXRlbSA6IHN0cnVjdEl0ZW1zKQotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIHN0cnVjdEl0ZW0uc2Vj
b25kLCAnXG4nKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgc3Ry
dWN0SXRlbS5zZWNvbmQsICdcbicpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtc
blxuIik7CiAgICAgfQogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgRW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0UmVzb3VyY2UKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICAgICAgYXV0byYgbmFtZWRCaW5kR3JvdXAgPSBtX25h
bWVkQmluZEdyb3Vwc1tpXTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
ZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3Vw
LnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZl
ckluZGV4LCAiKV1dIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZXZpY2UgIiwg
bmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVO
YW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3VwLmFyZ3VtZW50QnVmZmVySW5kZXgsICIp
XV0iKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDMsMTAgKzI0MywxMCBAQCBi
b29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEJ1aWx0SW5zCiAgICAgICAgIGF1dG8mIGJ1
aWx0SW5TZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqaXRlbS5zZW1h
bnRpYyk7CiAgICAgICAgIGF1dG8gaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50
aWMoYnVpbHRJblNlbWFudGljKTsKICAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGludGVybmFsVHlwZSk7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbnRlcm5hbFR5cGUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcgJywgbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZSwg
JyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50aWMpKTsKKyAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRl
bS51bm5hbWVkVHlwZSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcsIG5hbWVk
QnVpbHRJbi52YXJpYWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2VtYW50aWMoYnVpbHRJblNl
bWFudGljKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjU4LDcgKzI1OCw3IEBA
IHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZEkKICAgICBBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24qIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmIChtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPm5hbWUoKSA9PSBwYXRoWzBdKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKICAgICAgICAgICAgIGF1dG8m
IHVuaWZ5Tm9kZSA9IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgp
LT51bmlmeU5vZGUoKTsKICAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlO
b2RlKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih1bmlmeU5vZGUpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgRW50cnlQb2lu
dFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZEkKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURlZmlu
aXRpb24pOwogICAgICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+ZmluZChw
YXRoW2ldKTsKICAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KCpuZXh0KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVj
dHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0
LT50eXBlKCkudW5pZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKSkgewpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0TWFuZ2xlZE8KICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURlZmluaXRpb24pOwogICAg
ICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+ZmluZChjb21wb25lbnQpOwog
ICAgICAgICBBU1NFUlQobmV4dCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQp
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKTsKICAgICAgICAgc3RydWN0dXJlRGVmaW5p
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IG5leHQtPnR5cGUoKS51
bmlmeU5vZGUoKTsKICAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7
CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5n
bGVkTwogdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJjZXNBbmRO
YW1lZEJ1aWx0SW5zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
OyArK2kpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0t
PnR5cGUoKSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1
bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywgbV9wYXJhbWV0
ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9s
YXlvdXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBtX25hbWVk
QmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZQogICAgICAgICAgICAgICAgIGF1dG8mIHVu
bmFtZWRUeXBlID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVu
bmFtZWRUeXBlOwogICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwogCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgICAgICAgICAgICAgInNpemVfdCAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0g
IiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLnk7XG4iLAogICAgICAg
ICAgICAgICAgICAgICBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA8PCAzMjtcbiIsCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFyeU5h
bWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIHwgIiwgdmFyaWFibGVOYW1lLCAnLics
IGxlbmd0aEVsZW1lbnROYW1lLCAiLng7XG4iLApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgICAgICAgICApOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChz
dHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICAiID0geyAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIs
IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiKSB9O1xuIgog
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzQyLDcgKzM0Miw3
IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgICAg
ICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5n
c1tqXS5lbGVtZW50TmFtZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBlbWl0
TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZQogICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSk7CiAKICAg
ICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIsIG1hbmdsZWRUeXBlTmFtZSwgJygn
LCB2YXJpYWJsZU5hbWUsICIpO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
PSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpOwogICAgIH0K
IH0KIApAQCAtMzkyLDE0ICszOTIsMTQgQEAgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpW
ZXJ0ZXhFbnRyeQogCiB2b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBl
clR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7
CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1l
LCAiIHtcbiIpOwogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5z
KSB7CiAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5F
bnRyeVBvaW50SXRlbXNdLnVubmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9
IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9
IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBb
W2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwg
IiBbW2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAgIH0KLSAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAog
ICAgICAgICAifTtcblxuIgogICAgICAgICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwg
IiB7XG4iCiAgICAgKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIFZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdEhlCiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25h
bWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1l
ID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRl
ID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAn
LCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAn
ICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgIn07XG5cbiIKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFZlcnRleEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6ZW1pdEhlCiAKIHZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5j
dGlvbk5hbWUgZnVuY3Rpb25OYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcs
IG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0
YWdlX2luXV0iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidmVydGV4ICIsIG1fcmV0dXJu
U3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwg
JyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGVtaXRS
ZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olll
cyk7CiAgICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVj
ZWRpbmdDb21tYTo6WWVzKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwpAQCAtNDMz
LDI1ICs0MzMsMjUgQEAgdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbgog
ICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJ
bi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRoOwogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBh
dGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7
XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFt
ZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICB9CiB9CiAKIHZvaWQgVmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFy
aWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7
XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywg
b3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5z
aXplKCkpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5l
bGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRW
YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwg
IjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvJiBpbnRlcm5h
bFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAg
YXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1l
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxl
TmFtZSk7CiAgICAgICAgIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRo
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiKTtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KIH0KIApAQCAtNDkxLDE0ICs0
OTEsMTQgQEAgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkZyYWdtZW50RQogCiB2b2lk
IEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlcikKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CiAgICAg
Zm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0
byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50
cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10u
dW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVs
ZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0
dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAg
IiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNlcih1c2VyIiwgYXR0
cmlidXRlSW5kZXgsICIpXV07XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAg
ICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBh
dHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAifTtcblxuIgog
ICAgICAgICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCiAgICAgKTsKQEAg
LTUwNyw3ICs1MDcsNyBAQCB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRl
cm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNb
aV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2Vt
YW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAn
LCBhdHRyaWJ1dGUsICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAi
LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtc
biIpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgIn07XG5cbiIK
QEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0CiAKIHZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlv
bk5hbWUpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZnJhZ21lbnQgIiwg
bV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1
Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7Cisg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwg
JyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdl
SW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGVtaXRSZXNvdXJjZVNpZ25h
dHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAgICAgZW1p
dEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6
WWVzKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwpAQCAtNTMyLDI1ICs1MzIsMjUg
QEAgdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdAogICAgICAgICBhdXRv
JiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50
cnlQb2ludEl0ZW1zXS5wYXRoOwogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG5hbWVkU3Rh
Z2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVp
bGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIs
IG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcu
JywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICB9CiB9CiAKIHZvaWQgRnJhZ21lbnRFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1h
bmdsZWRWYXJpYWJsZU5hbWUgaW5wdXRWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUg
b3V0cHV0VmFyaWFibGVOYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
bV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOworICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJp
YWJsZU5hbWUsICI7XG4iKTsKICAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXpl
KCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewog
ICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1l
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFt
ZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVt
ZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5v
dXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1l
ZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUg
PSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRo
ID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwg
IiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKICAg
ICAgICAgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIpO1xuIik7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgfQogfQogCkBAIC01NjYsNyArNTY2LDcgQEAgdm9p
ZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SAogCiB2b2lkIENvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUpCiB7Ci0gICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpOwor
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJrZXJuZWwgdm9pZCAiLCBmdW5jdGlvbk5hbWUsICco
Jyk7CiAgICAgYm9vbCBhZGRlZFRvU2lnbmF0dXJlID0gZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0
cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6Tm8pOwogICAgIGVtaXRCdWlsdElu
c1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBhZGRlZFRvU2lnbmF0dXJlID8gSW5jbHVkZVByZWNl
ZGluZ0NvbW1hOjpZZXMgOiBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Ok5vKTsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwx
MSArNTQsMTEgQEAgc3RhdGljIHZvaWQgZGVjbGFyZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZQogCiAg
ICAgYXV0byBpdGVyYXRvciA9IGZ1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlvbkRlY2xhcmF0
aW9uKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygn
KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpW2ldLT50eXBlKCkpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPnR5cGUoKSkpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwog
fQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9PSBudWxscHRy
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRv
ci0+dmFsdWUsICcoJyk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0
ZXJhdG9yLT52YWx1ZSwgJygnKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBh
dXRvJiBwYXJhbWV0ZXIgPSBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldOwogICAg
ICAgICAgICAgaWYgKGkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
dmFyaWFibGVNYXBwaW5nLmFkZCgmcGFyYW1ldGVyLCBwYXJhbWV0ZXJOYW1lKTsKICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXItPnR5cGUoKSksICcgJywgcGFyYW1ldGVyTmFtZSk7Cisg
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcsIHBhcmFtZXRlck5hbWUpOwogICAgICAg
ICB9CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwpAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBCcmVha0NvbnRleHQ6Okxvb3A6CiAgICAgICAgIEFTU0VSVChtX2Jy
ZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAg
ICAgICAgICAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtc
biIKICAgICAgICAgICAgICJicmVhaztcbiIKICAgICAgICAgKTsKQEAgLTMxMCwyMCArMzEwLDIw
IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCgKIHsKICAgICBTZXRG
b3JTY29wZTxPcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPj4gbG9vcFZhcmlhYmxlU2NvcGUo
bV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCBnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKSk7CiAKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgImJvb2wgIiwgKm1fYnJlYWtPdXRPZkN1cnJl
bnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKICAgICAgICAgIndoaWxlICh0cnVl
KSB7XG4iCiAgICAgKTsKIAogICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENv
bmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwg
IikgYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0
YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiZG8ge1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250
ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpM
b29wKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ9
IHdoaWxlKGZhbHNlKTsgXG4iCiAgICAgICAgICJpZiAoIiwgKm1fYnJlYWtPdXRPZkN1cnJlbnRM
b29wRWFybHlWYXJpYWJsZSwgIikgYnJlYWs7XG4iCiAgICAgKTsKQEAgLTMzNyw3ICszMzcsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiAKICAgICBpZiAobG9v
cENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5ICYm
IGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25k
aXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7
CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBcbiIpOwpAQCAtMzY0LDcg
KzM2NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRl
bWVudCkKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwo
KSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiKSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJpZiAoIiwgdGFr
ZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1l
bnQuYm9keSgpKTsKICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgewogICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9IGVsc2Uge1xuIik7CkBAIC0zODAsOSArMzgwLDkgQEAg
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBpZiAobV9l
bnRyeVBvaW50U2NhZmZvbGRpbmcpIHsKICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0g
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2Fm
Zm9sZGluZy0+ZW1pdFBhY2sobV9zdHJpbmdCdWlsZGVyLCB0YWtlTGFzdFZhbHVlKCksIHZhcmlh
YmxlTmFtZSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInJl
dHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInJldHVybiAiLCB0
YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoInJldHVybiAiLCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgicmV0dXJuO1xuIik7CiB9CkBAIC0zOTEsNyArMzkx
LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7CiAKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7
Iik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3dpdGNoICgiLCB0YWtlTGFzdFZhbHVl
KCksICIpIHsiKTsKICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQu
c3dpdGNoQ2FzZXMoKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwog
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOwpAQCAtNDAwLDkgKzQwMCw5IEBAIHZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCiB7CiAgICAg
aWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoImNhc2UgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImNhc2Ug
Iik7CiAgICAgICAgIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFs
dWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiOlxuIik7Cisg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjpcbiIpOwogICAgIH0gZWxzZQogICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZWZhdWx0OlxuIik7CiAgICAgU2V0Rm9yU2NvcGU8
T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4
dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0g
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGludGVnZXJMaXRlcmFsLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1l
LCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwg
Ij4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNf
Y2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFsLnZhbHVlKCksICIp
O1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShpbnRlZ2VyTGl0ZXJhbCwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFy
aWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nh
c3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVl
KCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFs
LCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcs
IHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwg
ZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8Iiwg
bWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKICAg
ICBhcHBlbmRSaWdodFZhbHVlKGZsb2F0TGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAt
NDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlID0gaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU+KHVubmFtZWRUeXBlKTsKIAogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShudWxsTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSksICcg
JywgdmFyaWFibGVOYW1lLCAiID0gIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpLCAn
ICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOwogICAgIGlmIChpc0FycmF5UmVmZXJlbmNlVHlwZSkK
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgieyBudWxscHRyLCAwIH07XG4iKTsKICAg
ICBlbHNlCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1l
LCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0ZXJh
bC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNf
Y2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPyAi
dHJ1ZSIgOiAiZmFsc2UiLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoYm9vbGVhbkxp
dGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0byB2YXJpYWJsZU5h
bWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCht
YW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1l
LCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
RW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1l
bWJlcigpKSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gcG9pbnRlck5hbWUgPSBn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5yZXNv
bHZlZFR5cGUoKSk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlLmJhc2UoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ0aHJlYWQgIiwgbWFuZ2xlZFR5cGVOYW1l
LCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCB0YWtlTGFzdFZhbHVlKCksICItPiIsIG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZS5zdHJ1Y3RGaWVsZCgpKSwgIjtcbiIsCiAgICAgICAgIG1hbmdsZWRUeXBlTmFtZSwgJyAn
LCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAiO1xuIgogICAgICk7CkBAIC01
MjMsOSArNTIzLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MTYwIEltcGxlbWVudCBxdWFsaWZpZXJzLgogICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmlu
aXRpYWxpemVyKCkpIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xh
cmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9u
LnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xu
Iik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7
IH07XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7IH07XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQpA
QCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7
CiAgICAgYXV0byBbcmlnaHROYW1lLCByaWdodE51bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVB
bmROdWxsYWJpbGl0eSgpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2Fu
QmVOdWxsKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImlmICgiLCBw
b2ludGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7
CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlmICgiLCBwb2ludGVyTmFtZSwgIikg
KiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7CiAgICAgZWxzZQotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIioiLCBwb2ludGVyTmFtZSwgIiA9
ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIq
IiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4iKTsKICAgICBhcHBlbmRSaWdo
dFZhbHVlV2l0aE51bGxhYmlsaXR5KGFzc2lnbm1lbnRFeHByZXNzaW9uLCByaWdodE5hbWUsIHJp
Z2h0TnVsbGFiaWxpdHkpOwogfQogCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgcmV0dXJu
TmFtZTsKICAgICBpZiAoIWlzVm9pZCkgewogICAgICAgICByZXR1cm5OYW1lID0gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRU
eXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVz
b2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKICAgICB9CiAKICAgICBpZiAo
aXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlv
bigpKSkKQEAgLTU2MiwxMiArNTYyLDEyIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZp
bmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwogICAgICAgICBBU1NFUlQoaXRlcmF0b3Ig
IT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwogICAgICAgICBpZiAoIWlzVm9pZCkKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5OYW1lLCAiID0gIik7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpdGVyYXRvci0+dmFsdWUs
ICcoJyk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHJldHVybk5hbWUsICIg
PSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+dmFsdWUsICco
Jyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnROYW1lcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZChhcmd1bWVudE5hbWVzW2ldKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoYXJndW1lbnROYW1lc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKTtcbiIpOwogICAgIH0KQEAgLTU5MiwxNSArNTkyLDE1IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIFtpbnB1dFBvaW50ZXIsIG51
bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVBbmROdWxsYWJpbGl0eSgpOwogICAgIGF1dG8gcmVz
dWx0VmFsdWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIHJlc3VsdFBv
aW50ZXIgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVy
KCkucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJlc3VsdFBvaW50ZXIsICIgPSAiLCBpbnB1dFBvaW50
ZXIsICI7XG4iLAogICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZl
cmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXN1bHRWYWx1ZSwgIjtcbiIp
OwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2FuQmVOdWxsKSB7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJpZiAoIiwgcmVzdWx0UG9pbnRlciwgIikgIiwgcmVz
dWx0VmFsdWUsICIgPSAqIiwgaW5wdXRQb2ludGVyLCAiO1xuIiwKICAgICAgICAgICAgICJlbHNl
ICIsIHJlc3VsdFZhbHVlLCAiID0geyB9O1xuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXN1bHRWYWx1ZSwgIiA9ICoiLCBpbnB1dFBvaW50
ZXIsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHRWYWx1ZSwg
IiA9ICoiLCBpbnB1dFBvaW50ZXIsICI7XG4iKTsKICAgICBhcHBlbmRMZWZ0VmFsdWUoZGVyZWZl
cmVuY2VFeHByZXNzaW9uLCByZXN1bHRWYWx1ZSwgcmVzdWx0UG9pbnRlciwgbnVsbGFiaWxpdHkp
OwogfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdo
dCgpKTsKICAgICBhdXRvIHJpZ2h0ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFi
bGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2dpY2FsRXhw
cmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbGVmdCk7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUobG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9ICIsIGxlZnQpOwogICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7CiAg
ICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6CiAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAmJiAiKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiB8fCAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChyaWdodCwgIjtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQocmlnaHQsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxvZ2ljYWxFeHByZXNzaW9u
LCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2Fs
Tm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwogICAgIGF1dG8gb3BlcmFuZCA9IHRha2VMYXN0VmFs
dWUoKTsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZh
cmlhYmxlTmFtZSwgIiA9ICEiLCBvcGVyYW5kLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNhbE5vdEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICEiLCBvcGVyYW5kLCAi
O1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShsb2dpY2FsTm90RXhwcmVzc2lvbiwgdmFyaWFi
bGVOYW1lKTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVk
VHlwZSgpKTsKICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAgICAgICAgYXV0byBw
dHJWYWx1ZSA9IHRha2VMYXN0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
bWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIsCiAgICAgICAgICAgICAi
aWYgKCIsIHB0clZhbHVlLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIHB0clZhbHVlLCAi
LCAxfTtcbiIsCiAgICAgICAgICAgICAiZWxzZSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7IG51bGxw
dHIsIDAgfTtcbiIKQEAgLTY1MiwxMCArNjUyLDEwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1QKICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPihtYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKSkgewog
ICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7CiAgICAgICAg
IGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPihtYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5cGUubnVtRWxlbWVu
dHMoKSwgIiB9O1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5
cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5kYXRhKCksICIs
IGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxW
YWx1ZSwgIiwgMSB9O1xuIik7CiAgICAgfQogICAgIGFwcGVuZFJpZ2h0VmFsdWUobWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KQEAgLTY2NSw3ICs2NjUsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7CiAgICAgYXV0byBb
cG9pbnRlciwgbnVsbGFiaWxpdHldID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsKICAgICBhdXRvIHZh
cmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBv
aW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAi
LCBwb2ludGVyLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgp
KSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7CiAgICAgYXBwZW5k
UmlnaHRWYWx1ZVdpdGhOdWxsYWJpbGl0eShtYWtlUG9pbnRlckV4cHJlc3Npb24sIHZhcmlhYmxl
TmFtZSwgbnVsbGFiaWxpdHkpOwogfQogCkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gZWxzZUJvZHkgPSB0YWtlTGFz
dFZhbHVlKCk7CiAKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcs
IHZhcmlhYmxlTmFtZSwgIiA9ICIsIGNoZWNrLCAiID8gIiwgYm9keSwgIiA6ICIsIGVsc2VCb2R5
LCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlh
YmxlTmFtZSwgIiA9ICIsIGNoZWNrLCAiID8gIiwgYm9keSwgIiA6ICIsIGVsc2VCb2R5LCAiO1xu
Iik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh0ZXJuYXJ5RXhwcmVzc2lvbiwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2
YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV92
YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwogICAgIGF1dG8gcG9pbnRlck5hbWUgPSBnZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInRo
cmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodmFyaWFibGVSZWZlcmVuY2Uu
cmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCBpdGVyYXRvci0+dmFs
dWUsICI7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0aHJlYWQgIiwgbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7CiAg
ICAgYXBwZW5kTGVmdFZhbHVlKHZhcmlhYmxlUmVmZXJlbmNlLCBpdGVyYXRvci0+dmFsdWUsIHBv
aW50ZXJOYW1lLCBOdWxsYWJpbGl0eTo6Tm90TnVsbCk7CiB9CiAKQEAgLTcwMywyNyArNzAzLDI3
IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0Q29uc3QKIHsKICAgICBjb25z
dGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgWyZdKEFTVDo6
SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7CisgICAgICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwogICAgICAg
ICB9LAogICAgICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZElu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChmbG9hdExpdGVyYWwudmFsdWUo
KSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGZsb2F0TGl0ZXJhbC52YWx1
ZSgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdKEFTVDo6TnVsbExpdGVyYWwmKSB7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIm51bGxwdHIiKTsKKyAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxwdHIiKTsKICAgICAgICAgfSwKICAg
ICAgICAgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7CiAgICAgICAg
ICAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInRydWUiKTsKKyAgICAgICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJmYWxzZSIpOworICAgICAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIH0sCiAgICAgICAg
IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKSB7CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKTsKICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6IiwgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpLCAiOjoiLCBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
ZW51bWVyYXRpb25NZW1iZXIoKSkpOwogICAgICAgICB9CiAgICAgKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ4ODEy
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxNCArMTI2LDE0IEBA
IHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byYg
cmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpOwogICAgICAgICBh
dXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0dXJu
VHlwZSk7CiAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHJl
dHVybk5hbWUsICIgPSB7IH07XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHJldHVybk5hbWUsICIgPSB7IH07XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKICAgICAgICAgYXV0byBt
ZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmFtZXRl
clR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBtZXRh
bFBhcmFtZXRlck5hbWUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIntcbiIsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4ID0gIiwgYXJnc1sw
XSwgIjtcbiIpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlvbkRl
ZmluaXRpb24gPSBbXSAoYXV0byYgdHlwZSkgewpAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgdm9pZCBp
bmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgICAgIGJvb2wg
aGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG1lbWJlciA6
IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewogICAgICAgICAg
ICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAgICAgY2FzZSAi
LCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFs
dWUoKSwgIjogYnJlYWs7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwogICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgIGRlZmF1bHQ6IHggPSAwOyBicmVhazsgfVxu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAg
IHJldHVybk5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgpO1xu
fVxuIik7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTY3LDEzICsxNjcsMTMgQEAgdm9pZCBpbmxp
bmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBhdXRvJiB1bm5hbWVkUGFy
YW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpOwog
ICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkgewog
ICAgICAgICAgICAgYXV0byYgYXJyYXlQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJh
eVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAg
ICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJyYXlQYXJhbWV0ZXJUeXBlLm51bUVsZW1l
bnRzKCksICI7XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFBhcmFtZXRlclR5cGUp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwg
Ii5sZW5ndGg7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAgICAg
ICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVt
ZW50ID0gc3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVu
dCgqc3RydWN0dXJlRWxlbWVudCkpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVs
ZW1lbnQpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBBU1NFUlQoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpOwpA
QCAtMTk4LDE4ICsxOTgsMTggQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWls
ZGVyJgogICAgICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yLiJfc3RyLmxlbmd0aCgpKTsKICAgICAgICAg
ICAgIGZpZWxkTmFtZSA9IGZpZWxkTmFtZS5zdWJzdHJpbmcoMCwgZmllbGROYW1lLmxlbmd0aCgp
IC0gMSk7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5OYW1l
LCAiID0gIiwgYXJnc1swXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgJy4n
KTsKICAgICAgICAgICAgIGFwcGVuZE1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIsIGFyZ3NbMV0sICI7XG4i
KTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBhcmdzWzFdLCAiO1xu
Iik7CiAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAgICAg
ICAgIGF1dG8gZmllbGROYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vi
c3RyaW5nKCJvcGVyYXRvci4iX3N0ci5sZW5ndGgoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAg
ICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICcuJyk7CiAgICAgICAgIGFwcGVuZE1hbmds
ZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtc
biIpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5n
QnVpbGRlciYKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yJi4iX3N0ci5sZW5ndGgo
KSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gJigiLCBhcmdz
WzBdLCAiLT4iKTsKIAogICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9ICpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwpAQCAtMjMwLDkgKzIzMCw5IEBA
IHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgIGF1
dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KG5hbWVkVHlwZSk7CiAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVtZW50ID0gc3Ry
dWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlRWxlbWVudCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1l
bnQpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1lbnQpKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGZpZWxkTmFtZSk7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChmaWVsZE5hbWUpOwogCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lk
IGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7CiAgICAgICAg
IEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKIAotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSAoIiwgYXJnc1sxXSwgIiA8ICIsIGFyZ3NbMF0sICIubGVuZ3Ro
KSA/ICIsICIgJigiLCBhcmdzWzBdLCAiLnBvaW50ZXJbIiwgYXJnc1sxXSwgIl0pIDogbnVsbHB0
cjtcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybjsKQEAgLTI3OSwxOSArMjc5LDE5
IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKIAogICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkNvbHVtbnMgPSBudW1iZXJPZk1hdHJpeENvbHVtbnMoKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFs
UmV0dXJuTmFtZSwgIiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIik7CiAKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCBhcmdzWzFdLCAiID49ICIs
IG51bWJlck9mUm93cywgIikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUs
ICIoMCk7IGJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICByZXN1bHRbMF0gPSAiLCBh
cmdzWzBdLCAnWycsIGFyZ3NbMV0sICJdO1xuIiwKICAgICAgICAgICAgICAgICAiICAgIHJlc3Vs
dFsxXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cywgIl07
XG4iKTsKIAogICAgICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSAzKQotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICByZXN1bHRbMl0gPSAiLCBh
cmdzWzBdLCAnWycsIGFyZ3NbMV0sICIgKyAiLCBudW1iZXJPZlJvd3MgKiAyLCAiXTtcbiIpOwor
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVzdWx0WzJdID0gIiwg
YXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl07XG4iKTsK
ICAgICAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgcmVzdWx0WzNdID0gIiwgYXJnc1swXSwg
J1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl07XG4iKTsKKyAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3NbMF0s
ICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CiAKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBy
ZXN1bHQ7XG4iLAogICAgICAgICAgICAgICAgICJ9IHdoaWxlICgwKTtcbiIpOwogICAgICAgICB9
IGVsc2UgewpAQCAtMzAwLDEyICszMDAsMTIgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihT
dHJpbmdCdWlsZGVyJgogCiAgICAgICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkp
OwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJkbyB7XG4iLCBt
ZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiZG8ge1xuIiwgbWV0YWxSZXR1cm5OYW1lLCAiIHJlc3VsdDtcbiIpOwogCi0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIiA+
PSAiLCBudW1FbGVtZW50cywgIikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5h
bWUsICIoMCk7IGJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICByZXN1bHQgPSAiLCBh
cmdzWzBdLCAiWyIsIGFyZ3NbMV0sICJdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAg
ICAgICAgICAgICAgIiAgICAiLCByZXR1cm5OYW1lLCAiID0gcmVzdWx0O1xuIiwKICAgICAgICAg
ICAgICAgICAifSB3aGlsZSAoMCk7XG4iKTsKICAgICAgICAgfQpAQCAtMzI0LDE4ICszMjQsMTgg
QEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNvbHVtbnMgPSBudW1iZXJPZk1hdHJpeENvbHVtbnMoKTsKIAot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZG8ge1xuIiwgbWV0YWxS
ZXR1cm5OYW1lLCAiIG0gPSAiLCBhcmdzWzBdLCAiO1xuIiwKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgbSA9ICIsIGFyZ3NbMF0s
ICI7XG4iLAogICAgICAgICAgICAgICAgIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgaSA9ICIsIGFy
Z3NbMV0sICI7XG4iKTsKIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICIg
ICAgaWYgKGkgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSB7IiwgcmV0dXJuTmFtZSwgIiA9IG07XG5i
cmVhazt9XG4iLAogICAgICAgICAgICAgICAgICIgICAgbVtpXSA9ICIsIGFyZ3NbMl0sICJbMF07
XG4iLAogICAgICAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAiXSA9ICIs
IGFyZ3NbMl0sICJbMV07XG4iKTsKICAgICAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0g
MykKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgbVtp
ICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl0gPSAiLCBhcmdzWzJdLCAiWzJdO1xuIik7CisgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAyLCAiXSA9ICIsIGFyZ3NbMl0sICJbMl07XG4iKTsKICAgICAgICAgICAgIGlmIChudW1i
ZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl0gPSAiLCBhcmdzWzJdLCAi
WzNdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZS
b3dzICogMywgIl0gPSAiLCBhcmdzWzJdLCAiWzNdO1xuIik7CisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBt
O1xuIiwKICAgICAgICAgICAgICAgICAifSB3aGlsZSgwKTtcbiIpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtMzQ3LDEzICszNDcsMTMgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdC
dWlsZGVyJgogCiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IHZlY3RvclNpemUo
KTsKIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZG8ge1xuIiwg
bWV0YWxSZXR1cm5OYW1lLCAiIHYgPSAiLCBhcmdzWzBdLCAiO1xuIiwKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgdiA9ICIsIGFy
Z3NbMF0sICI7XG4iLAogICAgICAgICAgICAgICAgIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgaSA9
ICIsIGFyZ3NbMV0sICI7XG4iKTsKIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICIgICAgaWYgKGkgPj0gIiwgbnVtRWxlbWVudHMsICIpIHsiLCByZXR1cm5OYW1lLCAiID0g
djtcbmJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICB2W2ldID0gIiwgYXJnc1syXSwg
IjtcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICIgICAgIiwgcmV0
dXJuTmFtZSwgIiA9IHY7XG4iLAogICAgICAgICAgICAgICAgICJ9IHdoaWxlKDApO1xuIik7CiAg
ICAgICAgIH0KQEAgLTM3OCwxMiArMzc4LDEyIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24o
U3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byBtZXRhbFJldHVyblR5cGUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKICAg
ICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9
PSAxKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBlLCAiIHgg
PSAiLCBhcmdzWzBdLCAiO1xuIiwKICAgICAgICAgICAgICAgICAgICAgImZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9ICIsIG9wZXJhdG9yTmFtZSwgInhbaV07XG4i
LAogICAgICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBlLCAiIHggPSAiLCBhcmdzWzBdLCAiO1xuIiwg
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBvcGVyYXRvck5hbWUsICJ4
O1xufVxuIik7CiAgICAgICAgICAgICB9CkBAIC0zOTQsMTMgKzM5NCwxMyBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGlmIChhdXRvKiBsZWZ0TWF0
cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJpZ2h0TWF0cml4ID0gYXNN
YXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlw
ZSgpKSkgewogICAgICAgICAgICAgICAgIC8vIG1hdHJpeCA8b3A+IG1hdHJpeAotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICJ7XG4iLCBtZXRhbFJldHVy
blR5cGUsICIgeDtcbiIsCiAgICAgICAgICAgICAgICAgICAgICJmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHguc2l6ZSgpOyArK2kpIHhbaV0gPSAiLCBhcmdzWzBdLCAiW2ldICIsIG9wZXJhdG9yTmFt
ZSwgJyAnLCBhcmdzWzFdLCAiW2ldO1xuIiwKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuTmFt
ZSwgIiA9IHg7XG59XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gbWF0cml4IDxvcD4gc2NhbGFyCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAg
ICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4O1xuIiwKICAgICAgICAg
ICAgICAgICAgICAgImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9
ICIsIGFyZ3NbMF0sICJbaV0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICI7XG4iLAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOwpAQCAtNDA4LDcg
KzQwOCw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAg
ICAgfSBlbHNlIGlmIChhdXRvKiByaWdodE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpIHsKICAgICAgICAgICAg
IEFTU0VSVCghYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKVswXS0+dHlwZSgpKSk7CiAgICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBtYXRyaXgKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBl
LCAiIHg7XG4iLAogICAgICAgICAgICAgICAgICJmb3IgKHNpemVfdCBpID0gMDsgaSA8IHguc2l6
ZSgpOyArK2kpIHhbaV0gPSAiLCBhcmdzWzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdz
WzFdLCAiW2ldO1xuIiwKICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIp
OwpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKICAgICAgICAgICAgIC8vIHZlY3RvciA8b3A+IHZlY3RvcgogICAgICAgICAgICAgLy8g
dmVjdG9yIDxvcD4gc2NhbGFyCiAgICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiB2ZWN0b3IKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJn
c1swXSwgJyAnLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgIjtcbiIpOwogICAgICAgICB9
CiAKQEAgLTQ1MCwxNCArNDUwLDE0IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5n
QnVpbGRlciYKICAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
ImFzZmxvYXQiCiAgICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJsZW5ndGgiKSB7CiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgcmV0dXJu
TmFtZSwgIiA9ICIsIG1hcEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSksICcoJywgYXJnc1swXSwgIik7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAicG93IiB8fCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRhbjIiKSB7CiAgICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAogICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICIsIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpLCAiKCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIpO1xuIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7CiAgICAgICAgIGlmIChh
c01hdHJpeFR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpKSB7CiAgICAgICAg
ICAgICBhdXRvIG1ldGFsUmV0dXJuVHlwZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAog
ICAgICAgICAgICAgICAgICJ7XG4iLCBtZXRhbFJldHVyblR5cGUsICIgeDtcbiIsCiAgICAgICAg
ICAgICAgICAgImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9IGNs
YW1wKCIsIGFyZ3NbMF0sICJbaV0sICIsIGFyZ3NbMV0sICJbaV0sICIsIGFyZ3NbMl0sICJbaV0p
OyIsCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9IHg7XG59XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5OYW1l
LCAiID0gY2xhbXAoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwgIik7
XG4iKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC01MDMsNyArNTAzLDcgQEAgdm9p
ZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgIGlmIChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdGFydHNXaXRoKCJJbnRlcmxvY2tlZCJfc3RyKSkgewog
ICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkludGVybG9j
a2VkQ29tcGFyZUV4Y2hhbmdlIikgewogICAgICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAiYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNp
dCgiLCBhcmdzWzBdLCAiLCAmIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwgIiwgbWVtb3J5X29y
ZGVyX3JlbGF4ZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIsCiAgICAgICAgICAgICAgICAg
JyonLCBhcmdzWzNdLCAiID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKIAogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpID09IDMpOwogICAgICAgICBhdXRvIG5hbWUgPSBhdG9taWNOYW1lKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0cmluZygiSW50ZXJsb2NrZWQiX3N0ci5s
ZW5ndGgoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICcqJywgYXJnc1syXSwgIiA9IGF0
b21pY18iLCBuYW1lLCAiX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1l
bW9yeV9vcmRlcl9yZWxheGVkKTtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTI1
LDE5ICs1MjUsMTkgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgog
ICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnR5cGUoKS51bmlmeU5vZGUoKSkpOwogICAgICAgICBhdXRvIHJldHVyblZlY3Rvckxlbmd0aCA9
IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBlKTsKIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIHJl
dHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLnNhbXBsZSgiLCBhcmdzWzFdLCAiLCAiKTsKIAog
ICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1syXSwgJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1syXSwgJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMl0pOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1syXSk7CiAgICAgICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCkKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgYXJnc1szXSk7CisgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBhcmdzWzNdKTsKICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIikiKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4
dHVyZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLiIsICJ4
eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOworICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5W
ZWN0b3JMZW5ndGgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwogCiAg
ICAgICAgIHJldHVybjsKQEAgLTU2MCwzMSArNTYwLDMxIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVu
Y3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7
ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3RyIH07CiAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJfc3RyLnN1YnN0cmluZyhpLCAxKTsKLSAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFy
Z3NbMV0sICcuJywgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJn
c1sxXSwgJy4nLCBzdWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNb
aV0sICIoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJy
ZWFrO31cbiIpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYg
KCIsIGFyZ3NbMV0sICcuJywgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
IiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVu
c2lvbnNbaV0sICIoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIo
MCk7IGJyZWFrO31cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXgg
PSAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFd
LCAnLicsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0s
ICcuJywgc3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMV0sICcuJywg
c3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgJy4nLCBz
dWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkgeyIsIHJldHVybk5h
bWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdz
WzFdLCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIikgPj0gIiwg
YXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgeyAiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1
cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oIiwgYXJnc1sxXSwgIikgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgeyAiLCByZXR1
cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIueCA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCIsIGFyZ3NbMV0sICIueCkgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgeyIsIHJl
dHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIKICAgICAg
ICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIi55IDwgMCB8fCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIi55KSA+PSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQo
KSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31c
biIpOwogCiAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAo
IiwgYXJnc1sxXSwgIi56IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwg
Ii56KSA+PSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIs
IG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CisgICAgICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMV0sICIueiA8IDAgfHwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIueikgPj0gIiwgYXJnc1swXSwgIi5nZXRf
ZGVwdGgoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJy
ZWFrO31cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgIi5y
ZWFkKCIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIHJldHVybk5hbWUs
ICIgPSAiLCBhcmdzWzBdLCAiLnJlYWQoIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1Rl
eHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGgg
PiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2
ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzFdLCAnLics
ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1
aW50KCIsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JM
ZW5ndGggLSAxLCAxKSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1
aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1sx
XSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEp
LCAiKSwgdWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9u
VmVjdG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlv
blZlY3Rvckxlbmd0aCksICcoJywgYXJnc1sxXSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwg
JygnLCBhcmdzWzFdLCAnKScpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwog
ICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkpCi0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
cmV0dXJuVmVjdG9yTGVuZ3RoKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
LicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICI7XG4iCiAgICAgICAgICAgICAi
fSB3aGlsZSgwKTtcbiIpOwpAQCAtNTk0LDE0ICs1OTQsMTQgQEAgdm9pZCBpbmxpbmVOYXRpdmVG
dW5jdGlvbihTdHJpbmdCdWlsZGVyJgogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJsb2FkIikgewogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSBhdG9taWNfbG9hZF9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic3RvcmUiKSB7CiAgICAg
ICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgImF0b21pY19zdG9yZV9leHBsaWNpdCgi
LCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzNywzNiArNjM3LDM2IEBAIHZvaWQgaW5saW5l
TmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgfQogICAgICAgICBBU1NFUlQo
aW5kZXggPT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsK
IAotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJpZiAoIiwgd2lkdGhOYW1lLCAiKVxuIgogICAg
ICAgICAgICAgIiAgICAqIiwgd2lkdGhOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgo
Iik7CiAKICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChhcmdzWzFdKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGFyZ3NbMV0pOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAg
ICAgICBpZiAoaGVpZ2h0TmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICIgICAgaWYgKCIsICpoZWlnaHROYW1lLCAiKVxuIgogICAgICAgICAgICAgICAgICIgICAg
ICAgICoiLCAqaGVpZ2h0TmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgiKTsKICAg
ICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKGFyZ3NbMV0pOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGFyZ3NbMV0pOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4i
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVwdGhOYW1lKSB7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgKmRlcHRoTmFtZSwgIilcbiIKICAgICAg
ICAgICAgICAgICAiICAgICAgICAqIiwgKmRlcHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0
X2RlcHRoKCIpOwogICAgICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoYXJnc1sxXSk7CisgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChlbGVtZW50c05hbWUpIHsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCAqZWxlbWVu
dHNOYW1lLCAiKVxuIgogICAgICAgICAgICAgICAgICIgICAgICAgICoiLCAqZWxlbWVudHNOYW1l
LCAiID0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpO1xuIik7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKG51bWJlck9mTGV2ZWxzTmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAg
ICAgICAgICAgICAgICIgICAgaWYgKCIsICpudW1iZXJPZkxldmVsc05hbWUsICIpXG4iCiAgICAg
ICAgICAgICAgICAgIiAgICAgICAgKiIsICpudW1iZXJPZkxldmVsc05hbWUsICIgPSAiLCBhcmdz
WzBdLCAiLmdldF9udW1fbWlwX2xldmVscygpO1xuIik7CiAgICAgICAgIH0KQEAgLTcyNiwzMCAr
NzI2LDMwIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAg
ICAgICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIs
ICJkZXB0aCJfc3RyIH07CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9u
VmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdWZmaXggPSAi
eHl6dyJfc3RyLnN1YnN0cmluZyhpLCAxKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICIuIiwgc3VmZml4LCAiID49ICIs
IGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSkgYnJlYWs7XG4iKTsKKyAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLiIs
IHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIGJy
ZWFrO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3
Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICcuJywg
c3VmZml4LCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkgYnJlYWs7XG4iKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICcu
Jywgc3VmZml4LCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkgYnJlYWs7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0
aCA9PSAxKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAg
ICBpZiAoIiwgYXJnc1syXSwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpKSBicmVhaztc
biIpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFy
Z3NbMl0sICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgYnJlYWs7XG4iKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMl0sICIueCA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0
aCgpKSBicmVhaztcbiIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1syXSwg
Ii55ID49ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgpKSBicmVhaztcbiIpOwogICAgICAgICAg
ICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICIueiA+
PSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSBicmVhaztcbiIpOworICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLnogPj0gIiwg
YXJnc1swXSwgIi5nZXRfZGVwdGgoKSkgYnJlYWs7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgYXJnc1sw
XSwgIi53cml0ZSh2ZWM8IiwgbWV0YWxJbm5lclR5cGVOYW1lLCAiLCA0PigiLCBhcmdzWzFdKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBhcmdzWzBdLCAiLndyaXRlKHZl
YzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIsIDQ+KCIsIGFyZ3NbMV0pOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQgLSBpdGVtVmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAwIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpLCAiKTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDEpLCAnKCcsIGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJp
bmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1syXSwgIi4i
LCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgo
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIu
c3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3Nb
Ml0sICIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAx
KSwgJyknKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygn
LCBhcmdzWzJdLCAnKScpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQi
LCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMl0sICcpJyk7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgIik7XG4iCiAgICAg
ICAgICAgICAifSB3aGlsZSgwKTtcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAko
cmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fbWFuZ2xlZE5hbWVGb3JOYW1l
ZFR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbiksICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUoc3RydWN0dXJl
RGVmaW5pdGlvbiksICI7XG4iKTsKICAgICB9CiAKICAgICBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRP
ck5hdGl2ZVR5cGVOYW1lKEFTVDo6TmFtZWRUeXBlJik+IG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5
cGU7CkBAIC0zNjIsMTkgKzM2MiwxOSBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBl
RGVmaW5pdGlvCiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNl
OiB7CiAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PFJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4oYmFzZVR5cGVOYW1lTm9kZSkubmFtZWRUeXBlKCk7CiAgICAgICAgIGVtaXROYW1lZFR5
cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIG5hbWVkVHlwZSwgZW1pdHRlZE5hbWVkVHlwZXMs
IGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpLCAnICcsIGJhc2VU
eXBlTmFtZU5vZGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKSwgJyAnLCBi
YXNlVHlwZU5hbWVOb2RlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAg
ICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PFBvaW50ZXJUeXBlTmFtZU5vZGU+KGJhc2VU
eXBlTmFtZU5vZGUpOwogICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgdG9TdHJp
bmcocG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBvaW50ZXJUeXBlLnBhcmVudCgp
LT5tYW5nbGVkTmFtZSgpLCAiKiAiLCBwb2ludGVyVHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50
ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwb2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xl
ZE5hbWUoKSwgIiogIiwgcG9pbnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJl
ZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxB
cnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFT
U0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAg
ICAic3RydWN0ICIsIGFycmF5UmVmZXJlbmNlVHlwZS5tYW5nbGVkTmFtZSgpLCAieyBcbiIKICAg
ICAgICAgICAgICIgICAgIiwgdG9TdHJpbmcoYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFj
ZSgpKSwgJyAnLCBhcnJheVJlZmVyZW5jZVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIq
IHBvaW50ZXI7XG4iCiAgICAgICAgICAgICAiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAg
ICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBh
cnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7
CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5cGUucGFy
ZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAi
LCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1l
KCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xl
ZE5hbWUoKSwgIjtcbiIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAg
LTQwNiwyMSArNDA2LDIxIEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlv
bigKICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpIHsK
ICAgICAgICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSk7CiAgICAgICAgIGF1dG8mIGJhc2VUeXBlID0g
ZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZW51bSBjbGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUo
ZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIsIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2Fz
dDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwgIiB7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1lcmF0aW9u
RGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7CiAgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRp
b25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5h
bWVGb3JFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIgPSAiLCBlbnVtZXJh
dGlvbk1lbWJlci5nZXQoKS52YWx1ZSgpLCAiLFxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVy
YXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRpb25NZW1iZXIuZ2V0KCkudmFsdWUoKSwgIixc
biIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwogICAgIH0gZWxzZSBp
ZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpIHsKICAgICAgICAg
Ly8gTmF0aXZlIHR5cGVzIGFscmVhZHkgaGF2ZSBkZWZpbml0aW9ucy4gVGhlcmUncyBub3RoaW5n
IHRvIGRvLgogICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1l
ZFR5cGUpKSB7CiAgICAgICAgIGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJl
RGVmaW5pdGlvbiksICIge1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1
Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiIHtcbiIpOwog
ICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9u
LnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgp
KSwgJyAnLCBtYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoc3RydWN0dXJlRWxlbWVudCks
ICI7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xl
ZE5hbWVGb3JUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZv
clN0cnVjdHVyZUVsZW1lbnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvJiB0
eXBlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xl
ZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JU
eXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKSwg
JyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIik7CiAgICAgfQog
ICAgIGVtaXR0ZWROYW1lZFR5cGVzLmFkZCgmbmFtZWRUeXBlKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZp
c2lvbiAyNDg4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2OCwxMiArMTM2OCwxMiBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvCiAgICAgYWJzb2x1dGVCb3VuZHMubW92
ZShsYXllci5vZmZzZXRGcm9tQW5jZXN0b3IobV9yZW5kZXJWaWV3LmxheWVyKCkpKTsKICAgICAK
ICAgICBTdHJpbmdCdWlsZGVyIGxvZ1N0cmluZzsKLSAgICBsb2dTdHJpbmcuZmxleGlibGVBcHBl
bmQocGFkKCcgJywgMTIgKyBkZXB0aCAqIDIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oJmxheWVyKSkpLCAiIGlkICIsIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxh
eWVySUQoKSwgIiAoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRz
LngoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNv
bHV0ZUJvdW5kcy55KCkudG9GbG9hdCgpLCAzKSwgJy0nLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgoYWJzb2x1dGVCb3VuZHMubWF4WCgpLnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFkoKS50b0Zsb2F0KCksIDMpLCAi
KSAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYmFja2luZy0+YmFja2luZ1N0b3JlTWVt
b3J5RXN0aW1hdGUoKSAvIDEwMjQsIDIpLCAiS0IiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5kKHBh
ZCgnICcsIDEyICsgZGVwdGggKiAyLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZs
YXllcikpKSwgIiBpZCAiLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlMYXllcklE
KCksICIgKCIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy54KCku
dG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVC
b3VuZHMueSgpLnRvRmxvYXQoKSwgMyksICctJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KGFic29sdXRlQm91bmRzLm1heFgoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhZKCkudG9GbG9hdCgpLCAzKSwgIikgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVz
dGltYXRlKCkgLyAxMDI0LCAyKSwgIktCIik7CiAKICAgICBpZiAoIWxheWVyLnJlbmRlcmVyKCku
c3R5bGUoKS5oYXNBdXRvWkluZGV4KCkpCi0gICAgICAgIGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVu
ZCgiIHotaW5kZXg6ICIsIGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS56SW5kZXgoKSk7CisgICAg
ICAgIGxvZ1N0cmluZy5hcHBlbmQoIiB6LWluZGV4OiAiLCBsYXllci5yZW5kZXJlcigpLnN0eWxl
KCkuekluZGV4KCkpOwogCi0gICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBwZW5kKCIgKCIsIGxvZ1Jl
YXNvbnNGb3JDb21wb3NpdGluZyhsYXllciksICIpICIpOworICAgIGxvZ1N0cmluZy5hcHBlbmQo
IiAoIiwgbG9nUmVhc29uc0ZvckNvbXBvc2l0aW5nKGxheWVyKSwgIikgIik7CiAKICAgICBpZiAo
YmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5jb250ZW50c09wYXF1ZSgpIHx8IGJhY2tpbmctPnBh
aW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSB8fCBiYWNraW5nLT5mb3JlZ3JvdW5kTGF5ZXIo
KSB8fCBiYWNraW5nLT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewogICAgICAgICBsb2dTdHJpbmcuYXBw
ZW5kKCdbJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lv
biAyNDg4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwMDksNyArNTAwOSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6Om9uZ29pbmdM
b2Fkc0Rlc2NyaXB0aW8KICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKIAogICAgICAgICBm
b3IgKGF1dG8mIGluZm8gOiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
aW50ZXJtZWRpYXRlTG9hZEluZm9ybWF0aW9uRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIoaWRl
bnRpZmllcikpCi0gICAgICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCdbJywgKGludClp
bmZvLnR5cGUsICIsXCIiLCBpbmZvLnJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJcIixcIiIsIGlu
Zm8ucmVxdWVzdC5odHRwTWV0aG9kKCksICJcIiwiLCBpbmZvLnJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCksICddJyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnWycsIChpbnQpaW5mby50
eXBlLCAiLFwiIiwgaW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiXCIsXCIiLCBpbmZvLnJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
LCAnXScpOwogCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDgtMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVu
ZCguLi4pIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA3NTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbCBzaXRlcyBmb3IgcmVuYW1l
IGZyb20gU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQoLi4uKSB0byAKKyAgICAgICAgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKC4uLikuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmR1bXBIaXN0b3J5SXRlbSk6CisgICAgICAg
IFdlIGhhdmUgdG8gZXhwbGljaXRseSBhY2Nlc3MgdGhlIHVuZGVybHlpbmcgU3RyaW5nIG9mIHRo
ZSBVUkwgcmF0aGVyIHRoYW4KKyAgICAgICAgcmVseWluZyBvbiB0aGUgaW1wbGljaXQgY29udmVy
c2lvbiBzaW5jZSBpdCBpcyBub3cgYW1iaWd1b3VzIHdoaWNoIGFwcGVuZCguLi4pCisgICAgICAg
IG92ZXJsb2FkIHNob3VsZCBiZSB1c2VkLgorCiAyMDE5LTA4LTE2ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBTdG9yYWdlQXJlYTo6c2V0V29ya1F1ZXVl
KCkgbWVtYmVyIGZ1bmN0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzAsNyArMTg3
MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSYKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoZmlsZSB0ZXN0KToiKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodXJsLnN0cmluZygpLnN1YnN0cmluZyhzdGFydCkpOwogICAgIH0g
ZWxzZQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1cmwpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh1cmwuc3RyaW5nKCkpOwogICAgIAogICAgIGF1dG8mIHRhcmdldCA9IGl0
ZW0udGFyZ2V0KCk7CiAgICAgaWYgKHRhcmdldC5sZW5ndGgoKSkgewpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4ODEyKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTkt
MDgtMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBT
dHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4pIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZCguLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY2FsbCBzaXRlcyBmb3IgcmVuYW1lIGZyb20gU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVB
cHBlbmQoLi4uKSB0byAKKyAgICAgICAgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTA4LTE2ICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBKb2huIFdpbGFuZGVyIGFzIFdlYktp
dCBSZXZpZXdlcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVp
bGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMjUgKzEx
NiwyNSBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBBcHBlbmQpCiAgICAgfQogfQogCi1URVNU
KFN0cmluZ0J1aWxkZXJUZXN0LCBGbGV4aWJsZUFwcGVuZCkKK1RFU1QoU3RyaW5nQnVpbGRlclRl
c3QsIFZhcmlhZGljQXBwZW5kKQogewogICAgIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKCIwMTIzNDU2Nzg5IikpOwogICAgICAg
ICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OSIsIGJ1aWxkZXIpOwotICAgICAgICBi
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJhYmNkIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJh
YmNkIik7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZCIsIGJ1
aWxkZXIpOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKCdlJyk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdlJyk7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2
Nzg5YWJjZGUiLCBidWlsZGVyKTsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIiKTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRl
bnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOwogICAgIH0KIAogICAgIHsKICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0
cmluZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIsICdlJywgIiIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmcoIjAxMjM0NTY3ODkiKSwgImFiY2QiLCAnZScsICIiKTsKICAgICAgICAgZXhw
ZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOwotICAgICAgICBi
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKFN0cmluZygiQSIpLCAiQiIsICdDJywgIiIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycsICIiKTsKICAgICAgICAgZXhw
ZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZUFCQyIsIGJ1aWxkZXIpOwogICAgIH0K
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376608</attachid>
            <date>2019-08-17 07:44:34 -0700</date>
            <delta_ts>2019-08-17 08:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200756-20190817074433.patch</filename>
            <type>text/plain</type>
            <size>82619</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg4MTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBl
bmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgdGhlcmUgYXJlIG5vIHJlbWFp
bmluZyBtdWx0aS1wYXJhbWV0ZXIgb3IgYmVoYXZpb3IgY2hhbmdpbmcgb3ZlcmxvYWRzCisgICAg
ICAgIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLCB3ZSBjYW4gcmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikKKyAgICAgICAgdG8gU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKC4uLikuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBsZWF2ZXMgdGhlIGV4aXN0
aW5nIHNpbmdsZSBwYXJhbWV0ZXIgb3ZlcmxvYWRzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4p
CisgICAgICAgIGZvciBub3csIGFuZCBzaW5jZSB0aGV5IGhhdmUgc3BlY2lmeSBzcGVjaWZpYyB0
eXBlcywgdGhleSB3aWxsIGNvbnRpbnVlIHRvIGJlIHByZWZlcmVkCisgICAgICAgIGluIG92ZXJs
b2FkIHJlc29sdXRpb24uIE9uY2Ugd2UgaGF2ZSBjb25jbHVkZWQgdGhlIHZhcmlhZGljIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIGNhbiBwcm92aWRlIHRoZSBzYW1lIHBlcmZv
cm1hbmNlIGFzIHRoZSBzaW5nbGUgcGFyYW1ldGVyIHZhcmlhbnQsIHdlIGNhbiByZW1vdmUgdGhl
CisgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgdmFyaWFudC4KKworICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgZnJvbSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4p
IHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCiAyMDE5LTA4LTE1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IHVzZSB1bmlvbiB0byBzdG9y
ZSBOb2RlUmFyZURhdGEqIGFuZCBSZW5kZXJPYmplY3QqCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw3ICsz
MDgsNyBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwogICAgIGZvciAo
YXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgnLycsIGNvbXBvbmVudCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJywgY29tcG9u
ZW50KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw4ICsyMzUsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRXaWR0aE51
bWJlcihmbG9hdCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kRml4ZWRXaWR0aE51bWJlcihkb3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQ
bGFjZXMpOwogCi0gICAgLy8gRklYTUU6IFJlbmFtZSB0byBhcHBlbmQoLi4uKSBhZnRlciByZW5h
bWluZyBhbnkgb3ZlcmxvYWRzIG9mIGFwcGVuZCB0aGF0IHRha2UgbW9yZSB0aGFuIG9uZSBhcmd1
bWVudC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBmbGV4aWJs
ZUFwcGVuZChTdHJpbmdUeXBlcy4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5n
VHlwZXM+IHZvaWQgYXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpCiAgICAgewpAQCAtMzY4LDcgKzM2Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBnZXRCdWZm
ZXJDaGFyYWN0ZXJzKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmco
KSBjb25zdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4g
dm9pZCBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4pOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4gdm9pZCBhcHBlbmRG
cm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uKTsKIAogICAgIG11dGFibGUgU3RyaW5n
IG1fc3RyaW5nOwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2J1ZmZlcjsKQEAgLTM5OSw3ICsz
OTgsNyBAQCBBTFdBWVNfSU5MSU5FIFVDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4KLXZvaWQgU3RyaW5nQnVpbGRl
cjo6ZmxleGlibGVBcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uIGFkYXB0
ZXJzKQordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFk
YXB0ZXJzLi4uIGFkYXB0ZXJzKQogewogICAgIGF1dG8gcmVxdWlyZWRMZW5ndGggPSBjaGVja2Vk
U3VtPGludDMyX3Q+KG1fbGVuZ3RoLCBhZGFwdGVycy5sZW5ndGgoKS4uLik7CiAgICAgaWYgKHJl
cXVpcmVkTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgewpAQCAtNDI1LDkgKzQyNCw5IEBAIHZvaWQg
U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmRGcm9tQWQKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUuLi4gU3RyaW5nVHlwZXM+Ci12b2lkIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKFN0
cmluZ1R5cGVzLi4uIHN0cmluZ3MpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChTdHJpbmdU
eXBlcy4uLiBzdHJpbmdzKQogewotICAgIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7CisgICAgYXBwZW5kRnJvbUFk
YXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNDg4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NiBAQAorMjAxOS0wOC0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8g
U3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsIHNpdGVzIGZvciByZW5hbWUgZnJvbSBTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4pIHRvIAorICAgICAgICBTdHJpbmdCdWlsZGVy
OjphcHBlbmQoLi4uKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dFJlc291cmNlU2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0QnVpbHRJbnNTaWduYXR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkSW5w
dXRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0TWFuZ2xlZE91dHB1dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1l
ZEJ1aWx0SW5zKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRVbnBhY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0U2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6ZGVjbGFyZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRD
b25zdGFudEV4cHJlc3Npb25TdHJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjppbmxpbmVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZp
bml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6VHlwZXM6OmFwcGVuZE5hbWVUbyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvbmdvaW5nTG9h
ZHNEZXNjcmlwdGlvbnMgY29uc3QpOgorCiAyMDE5LTA4LTE2ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBFbnVtcyBzaG91bGQgYmUg
c2hhZG93ZWQgYnkgbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDg4MTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdHJ1Y3QgVHlwZXMgewogCiAgICAg
c3RhdGljIHZvaWQgYXBwZW5kTmFtZVRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiAgICAgewot
ICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSwgIiwgIik7CiAgICAg
ICAgIFR5cGVzPHRzLi4uPjo6YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwogICAgIH0KIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9p
bnRTY2FmZm9sZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCShyZXZpc2lv
biAyNDg4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsx
NDIsNyBAQCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkVudHJ5UG9pbnRTY2FmZm9sCiB2b2lkIEVu
dHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNlSGVscGVyVHlwZXMoU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0
cnVjdCAiLCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fbmFtZWRCaW5kR3JvdXBzW2ldLnN0
cnVjdE5hbWUsICIge1xuIik7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIFN0
cmluZz4+IHN0cnVjdEl0ZW1zOwogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5
b3V0W2ldLmJpbmRpbmdzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9yZXNvdXJjZU1hcC5maW5kKCZtX2xheW91dFtpXS5iaW5kaW5nc1tqXSk7CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRSZXNvdXJjZQogICAg
ICAgICAgICAgcmV0dXJuIGxlZnQuZmlyc3QgPCByaWdodC5maXJzdDsKICAgICAgICAgfSk7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RydWN0SXRlbSA6IHN0cnVjdEl0ZW1zKQotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIHN0cnVjdEl0ZW0uc2Vj
b25kLCAnXG4nKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgc3Ry
dWN0SXRlbS5zZWNvbmQsICdcbicpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtc
blxuIik7CiAgICAgfQogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgRW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0UmVzb3VyY2UKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICAgICAgYXV0byYgbmFtZWRCaW5kR3JvdXAgPSBtX25h
bWVkQmluZEdyb3Vwc1tpXTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
ZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3Vw
LnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZl
ckluZGV4LCAiKV1dIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZXZpY2UgIiwg
bmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVO
YW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3VwLmFyZ3VtZW50QnVmZmVySW5kZXgsICIp
XV0iKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDMsMTAgKzI0MywxMCBAQCBi
b29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEJ1aWx0SW5zCiAgICAgICAgIGF1dG8mIGJ1
aWx0SW5TZW1hbnRpYyA9IFdURjo6Z2V0PEFTVDo6QnVpbHRJblNlbWFudGljPigqaXRlbS5zZW1h
bnRpYyk7CiAgICAgICAgIGF1dG8gaW50ZXJuYWxUeXBlID0gaW50ZXJuYWxUeXBlRm9yU2VtYW50
aWMoYnVpbHRJblNlbWFudGljKTsKICAgICAgICAgaWYgKCFpbnRlcm5hbFR5cGUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGludGVybmFsVHlwZSk7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbnRlcm5hbFR5cGUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcgJywgbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZSwg
JyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50aWMpKTsKKyAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRl
bS51bm5hbWVkVHlwZSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcsIG5hbWVk
QnVpbHRJbi52YXJpYWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2VtYW50aWMoYnVpbHRJblNl
bWFudGljKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjU4LDcgKzI1OCw3IEBA
IHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZEkKICAgICBBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24qIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmIChtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPm5hbWUoKSA9PSBwYXRoWzBdKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldKTsKICAgICAgICAgICAgIGF1dG8m
IHVuaWZ5Tm9kZSA9IG1fZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgp
LT51bmlmeU5vZGUoKTsKICAgICAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlO
b2RlKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih1bmlmeU5vZGUpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgRW50cnlQb2lu
dFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZEkKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURlZmlu
aXRpb24pOwogICAgICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+ZmluZChw
YXRoW2ldKTsKICAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KCpuZXh0KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVj
dHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0
LT50eXBlKCkudW5pZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5p
ZnlOb2RlKSkgewpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0TWFuZ2xlZE8KICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZURlZmluaXRpb24pOwogICAg
ICAgICBhdXRvKiBuZXh0ID0gc3RydWN0dXJlRGVmaW5pdGlvbi0+ZmluZChjb21wb25lbnQpOwog
ICAgICAgICBBU1NFUlQobmV4dCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQp
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKTsKICAgICAgICAgc3RydWN0dXJlRGVmaW5p
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IG5leHQtPnR5cGUoKS51
bmlmeU5vZGUoKTsKICAgICAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7
CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5n
bGVkTwogdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJjZXNBbmRO
YW1lZEJ1aWx0SW5zKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgp
OyArK2kpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0t
PnR5cGUoKSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1
bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywgbV9wYXJhbWV0
ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9s
YXlvdXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBtX25hbWVk
QmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZQogICAgICAgICAgICAgICAgIGF1dG8mIHVu
bmFtZWRUeXBlID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVu
bmFtZWRUeXBlOwogICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpLmVsZW1lbnRUeXBlKCkpOwogCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgICAgICAgICAgICAgInNpemVfdCAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0g
IiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLnk7XG4iLAogICAgICAg
ICAgICAgICAgICAgICBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA8PCAzMjtcbiIsCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFyeU5h
bWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIHwgIiwgdmFyaWFibGVOYW1lLCAnLics
IGxlbmd0aEVsZW1lbnROYW1lLCAiLng7XG4iLApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgICAgICAgICApOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBlbWl0TWFuZ2xlZElucHV0UGF0aChz
dHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICAiID0geyAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIs
IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiKSB9O1xuIgog
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzQyLDcgKzM0Miw3
IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmUKICAgICAgICAgICAg
ICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5n
c1tqXS5lbGVtZW50TmFtZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBlbWl0
TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZQogICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSk7CiAKICAg
ICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIsIG1hbmdsZWRUeXBlTmFtZSwgJygn
LCB2YXJpYWJsZU5hbWUsICIpO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
PSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpOwogICAgIH0K
IH0KIApAQCAtMzkyLDE0ICszOTIsMTQgQEAgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpW
ZXJ0ZXhFbnRyeQogCiB2b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBl
clR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7Ci0gICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7
CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1l
LCAiIHtcbiIpOwogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5z
KSB7CiAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5F
bnRyeVBvaW50SXRlbXNdLnVubmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9
IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9
IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBb
W2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwg
IiBbW2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAgIH0KLSAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAog
ICAgICAgICAifTtcblxuIgogICAgICAgICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwg
IiB7XG4iCiAgICAgKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIFZlcnRleEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdEhlCiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25h
bWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1l
ID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRl
ID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAn
LCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAn
ICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgIn07XG5cbiIKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFZlcnRleEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6ZW1pdEhlCiAKIHZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5j
dGlvbk5hbWUgZnVuY3Rpb25OYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcs
IG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0
YWdlX2luXV0iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidmVydGV4ICIsIG1fcmV0dXJu
U3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwg
JyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGVtaXRS
ZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olll
cyk7CiAgICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVj
ZWRpbmdDb21tYTo6WWVzKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwpAQCAtNDMz
LDI1ICs0MzMsMjUgQEAgdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbgog
ICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJ
bi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRoOwogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBh
dGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7
XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFt
ZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICB9CiB9CiAKIHZvaWQgVmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFy
aWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7
XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywg
b3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91
dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5z
aXplKCkpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5l
bGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRW
YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwg
IjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvJiBpbnRlcm5h
bFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAg
YXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxl
bWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1l
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxl
TmFtZSk7CiAgICAgICAgIGVtaXRNYW5nbGVkT3V0cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRo
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiKTtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KIH0KIApAQCAtNDkxLDE0ICs0
OTEsMTQgQEAgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OkZyYWdtZW50RQogCiB2b2lk
IEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVp
bGRlciYgc3RyaW5nQnVpbGRlcikKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CiAgICAg
Zm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0
byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50
cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10u
dW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVs
ZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0
dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAg
IiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNlcih1c2VyIiwgYXR0
cmlidXRlSW5kZXgsICIpXV07XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAg
ICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBh
dHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAifTtcblxuIgog
ICAgICAgICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCiAgICAgKTsKQEAg
LTUwNyw3ICs1MDcsNyBAQCB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRl
cm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNb
aV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2Vt
YW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAn
LCBhdHRyaWJ1dGUsICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAi
LCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtc
biIpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgIn07XG5cbiIK
QEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0CiAKIHZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUo
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlv
bk5hbWUpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZnJhZ21lbnQgIiwg
bV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1
Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7Cisg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwg
JyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdl
SW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGVtaXRSZXNvdXJjZVNpZ25h
dHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAgICAgZW1p
dEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6
WWVzKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwpAQCAtNTMyLDI1ICs1MzIsMjUg
QEAgdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdAogICAgICAgICBhdXRv
JiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50
cnlQb2ludEl0ZW1zXS5wYXRoOwogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG5hbWVkU3Rh
Z2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVp
bGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIs
IG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcu
JywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICB9CiB9CiAKIHZvaWQgRnJhZ21lbnRFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1h
bmdsZWRWYXJpYWJsZU5hbWUgaW5wdXRWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUg
b3V0cHV0VmFyaWFibGVOYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
bV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOworICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJp
YWJsZU5hbWUsICI7XG4iKTsKICAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXpl
KCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewog
ICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1l
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFt
ZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVt
ZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5v
dXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1l
ZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUg
PSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRo
ID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwg
IiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKICAg
ICAgICAgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIpO1xuIik7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgfQogfQogCkBAIC01NjYsNyArNTY2LDcgQEAgdm9p
ZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SAogCiB2b2lkIENvbXB1dGVFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUpCiB7Ci0gICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpOwor
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJrZXJuZWwgdm9pZCAiLCBmdW5jdGlvbk5hbWUsICco
Jyk7CiAgICAgYm9vbCBhZGRlZFRvU2lnbmF0dXJlID0gZW1pdFJlc291cmNlU2lnbmF0dXJlKHN0
cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6Tm8pOwogICAgIGVtaXRCdWlsdElu
c1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBhZGRlZFRvU2lnbmF0dXJlID8gSW5jbHVkZVByZWNl
ZGluZ0NvbW1hOjpZZXMgOiBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Ok5vKTsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnKScpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwx
MSArNTQsMTEgQEAgc3RhdGljIHZvaWQgZGVjbGFyZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZQogCiAg
ICAgYXV0byBpdGVyYXRvciA9IGZ1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlvbkRlY2xhcmF0
aW9uKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygn
KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpW2ldLT50eXBlKCkpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
aV0tPnR5cGUoKSkpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwog
fQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9PSBudWxscHRy
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRv
ci0+dmFsdWUsICcoJyk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0
ZXJhdG9yLT52YWx1ZSwgJygnKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBh
dXRvJiBwYXJhbWV0ZXIgPSBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldOwogICAg
ICAgICAgICAgaWYgKGkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
dmFyaWFibGVNYXBwaW5nLmFkZCgmcGFyYW1ldGVyLCBwYXJhbWV0ZXJOYW1lKTsKICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXItPnR5cGUoKSksICcgJywgcGFyYW1ldGVyTmFtZSk7Cisg
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcsIHBhcmFtZXRlck5hbWUpOwogICAgICAg
ICB9CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIilcbiIpOwogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwpAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBCcmVha0NvbnRleHQ6Okxvb3A6CiAgICAgICAgIEFTU0VSVChtX2Jy
ZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAg
ICAgICAgICAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtc
biIKICAgICAgICAgICAgICJicmVhaztcbiIKICAgICAgICAgKTsKQEAgLTMxMCwyMCArMzEwLDIw
IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCgKIHsKICAgICBTZXRG
b3JTY29wZTxPcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPj4gbG9vcFZhcmlhYmxlU2NvcGUo
bV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCBnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKSk7CiAKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgImJvb2wgIiwgKm1fYnJlYWtPdXRPZkN1cnJl
bnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKICAgICAgICAgIndoaWxlICh0cnVl
KSB7XG4iCiAgICAgKTsKIAogICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENv
bmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwg
IikgYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0
YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiZG8ge1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250
ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpM
b29wKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ9
IHdoaWxlKGZhbHNlKTsgXG4iCiAgICAgICAgICJpZiAoIiwgKm1fYnJlYWtPdXRPZkN1cnJlbnRM
b29wRWFybHlWYXJpYWJsZSwgIikgYnJlYWs7XG4iCiAgICAgKTsKQEAgLTMzNyw3ICszMzcsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiAKICAgICBpZiAobG9v
cENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5ICYm
IGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25k
aXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7
CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBcbiIpOwpAQCAtMzY0LDcg
KzM2NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRl
bWVudCkKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwo
KSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiKSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJpZiAoIiwgdGFr
ZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1l
bnQuYm9keSgpKTsKICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgewogICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9IGVsc2Uge1xuIik7CkBAIC0zODAsOSArMzgwLDkgQEAg
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBpZiAobV9l
bnRyeVBvaW50U2NhZmZvbGRpbmcpIHsKICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0g
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2Fm
Zm9sZGluZy0+ZW1pdFBhY2sobV9zdHJpbmdCdWlsZGVyLCB0YWtlTGFzdFZhbHVlKCksIHZhcmlh
YmxlTmFtZSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInJl
dHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInJldHVybiAiLCB0
YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoInJldHVybiAiLCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgicmV0dXJuO1xuIik7CiB9CkBAIC0zOTEsNyArMzkx
LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7CiAKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7
Iik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgic3dpdGNoICgiLCB0YWtlTGFzdFZhbHVl
KCksICIpIHsiKTsKICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQu
c3dpdGNoQ2FzZXMoKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwog
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOwpAQCAtNDAwLDkgKzQwMCw5IEBAIHZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCiB7CiAgICAg
aWYgKHN3aXRjaENhc2UudmFsdWUoKSkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoImNhc2UgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImNhc2Ug
Iik7CiAgICAgICAgIGVtaXRDb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFs
dWUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiOlxuIik7Cisg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjpcbiIpOwogICAgIH0gZWxzZQogICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJkZWZhdWx0OlxuIik7CiAgICAgU2V0Rm9yU2NvcGU8
T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4
dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0g
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGludGVnZXJMaXRlcmFsLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1l
LCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwg
Ij4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNf
Y2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFsLnZhbHVlKCksICIp
O1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShpbnRlZ2VyTGl0ZXJhbCwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFy
aWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nh
c3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVl
KCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFs
LCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcs
IHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwg
ZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8Iiwg
bWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKICAg
ICBhcHBlbmRSaWdodFZhbHVlKGZsb2F0TGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAt
NDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlID0gaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU+KHVubmFtZWRUeXBlKTsKIAogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShudWxsTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSksICcg
JywgdmFyaWFibGVOYW1lLCAiID0gIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpLCAn
ICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOwogICAgIGlmIChpc0FycmF5UmVmZXJlbmNlVHlwZSkK
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgieyBudWxscHRyLCAwIH07XG4iKTsKICAg
ICBlbHNlCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1l
LCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0ZXJh
bC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNf
Y2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPyAi
dHJ1ZSIgOiAiZmFsc2UiLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoYm9vbGVhbkxp
dGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0byB2YXJpYWJsZU5h
bWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFt
ZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCht
YW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1l
LCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
RW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1l
bWJlcigpKSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gcG9pbnRlck5hbWUgPSBn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5yZXNv
bHZlZFR5cGUoKSk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlLmJhc2UoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ0aHJlYWQgIiwgbWFuZ2xlZFR5cGVOYW1l
LCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCB0YWtlTGFzdFZhbHVlKCksICItPiIsIG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJsZVJlZmVy
ZW5jZS5zdHJ1Y3RGaWVsZCgpKSwgIjtcbiIsCiAgICAgICAgIG1hbmdsZWRUeXBlTmFtZSwgJyAn
LCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAiO1xuIgogICAgICk7CkBAIC01
MjMsOSArNTIzLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MTYwIEltcGxlbWVudCBxdWFsaWZpZXJzLgogICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmlu
aXRpYWxpemVyKCkpIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xh
cmF0aW9uLmluaXRpYWxpemVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9u
LnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xu
Iik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7
IH07XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7IH07XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQpA
QCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7
CiAgICAgYXV0byBbcmlnaHROYW1lLCByaWdodE51bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVB
bmROdWxsYWJpbGl0eSgpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2Fu
QmVOdWxsKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImlmICgiLCBw
b2ludGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7
CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlmICgiLCBwb2ludGVyTmFtZSwgIikg
KiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7CiAgICAgZWxzZQotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIioiLCBwb2ludGVyTmFtZSwgIiA9
ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIq
IiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4iKTsKICAgICBhcHBlbmRSaWdo
dFZhbHVlV2l0aE51bGxhYmlsaXR5KGFzc2lnbm1lbnRFeHByZXNzaW9uLCByaWdodE5hbWUsIHJp
Z2h0TnVsbGFiaWxpdHkpOwogfQogCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIE1hbmdsZWRWYXJpYWJsZU5hbWUgcmV0dXJu
TmFtZTsKICAgICBpZiAoIWlzVm9pZCkgewogICAgICAgICByZXR1cm5OYW1lID0gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRU
eXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVz
b2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKICAgICB9CiAKICAgICBpZiAo
aXM8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlv
bigpKSkKQEAgLTU2MiwxMiArNTYyLDEyIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZp
bmQoJmNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpOwogICAgICAgICBBU1NFUlQoaXRlcmF0b3Ig
IT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwogICAgICAgICBpZiAoIWlzVm9pZCkKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5OYW1lLCAiID0gIik7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpdGVyYXRvci0+dmFsdWUs
ICcoJyk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHJldHVybk5hbWUsICIg
PSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+dmFsdWUsICco
Jyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnROYW1lcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZChhcmd1bWVudE5hbWVzW2ldKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoYXJndW1lbnROYW1lc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKTtcbiIpOwogICAgIH0KQEAgLTU5MiwxNSArNTkyLDE1IEBAIHZvaWQgRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIFtpbnB1dFBvaW50ZXIsIG51
bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVBbmROdWxsYWJpbGl0eSgpOwogICAgIGF1dG8gcmVz
dWx0VmFsdWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIHJlc3VsdFBv
aW50ZXIgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVy
KCkucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJlc3VsdFBvaW50ZXIsICIgPSAiLCBpbnB1dFBvaW50
ZXIsICI7XG4iLAogICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZl
cmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXN1bHRWYWx1ZSwgIjtcbiIp
OwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2FuQmVOdWxsKSB7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJpZiAoIiwgcmVzdWx0UG9pbnRlciwgIikgIiwgcmVz
dWx0VmFsdWUsICIgPSAqIiwgaW5wdXRQb2ludGVyLCAiO1xuIiwKICAgICAgICAgICAgICJlbHNl
ICIsIHJlc3VsdFZhbHVlLCAiID0geyB9O1xuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXN1bHRWYWx1ZSwgIiA9ICoiLCBpbnB1dFBvaW50
ZXIsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChyZXN1bHRWYWx1ZSwg
IiA9ICoiLCBpbnB1dFBvaW50ZXIsICI7XG4iKTsKICAgICBhcHBlbmRMZWZ0VmFsdWUoZGVyZWZl
cmVuY2VFeHByZXNzaW9uLCByZXN1bHRWYWx1ZSwgcmVzdWx0UG9pbnRlciwgbnVsbGFiaWxpdHkp
OwogfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsRXhwcmVzc2lvbi5yaWdo
dCgpKTsKICAgICBhdXRvIHJpZ2h0ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFi
bGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2dpY2FsRXhw
cmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbGVmdCk7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUobG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9ICIsIGxlZnQpOwogICAgIHN3aXRjaCAobG9naWNhbEV4cHJlc3Npb24udHlwZSgpKSB7CiAg
ICAgY2FzZSBBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uOjpUeXBlOjpBbmQ6CiAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAmJiAiKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiB8fCAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChyaWdodCwgIjtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQocmlnaHQsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxvZ2ljYWxFeHByZXNzaW9u
LCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2Fs
Tm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOwogICAgIGF1dG8gb3BlcmFuZCA9IHRha2VMYXN0VmFs
dWUoKTsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUobG9naWNhbE5vdEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZh
cmlhYmxlTmFtZSwgIiA9ICEiLCBvcGVyYW5kLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNhbE5vdEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICEiLCBvcGVyYW5kLCAi
O1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShsb2dpY2FsTm90RXhwcmVzc2lvbiwgdmFyaWFi
bGVOYW1lKTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVk
VHlwZSgpKTsKICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAgICAgICAgYXV0byBw
dHJWYWx1ZSA9IHRha2VMYXN0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
bWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIsCiAgICAgICAgICAgICAi
aWYgKCIsIHB0clZhbHVlLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIHB0clZhbHVlLCAi
LCAxfTtcbiIsCiAgICAgICAgICAgICAiZWxzZSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7IG51bGxw
dHIsIDAgfTtcbiIKQEAgLTY1MiwxMCArNjUyLDEwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1QKICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPihtYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKSkgewog
ICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7CiAgICAgICAg
IGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPihtYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5cGUubnVtRWxlbWVu
dHMoKSwgIiB9O1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5
cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5kYXRhKCksICIs
IGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxW
YWx1ZSwgIiwgMSB9O1xuIik7CiAgICAgfQogICAgIGFwcGVuZFJpZ2h0VmFsdWUobWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KQEAgLTY2NSw3ICs2NjUsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7CiAgICAgYXV0byBb
cG9pbnRlciwgbnVsbGFiaWxpdHldID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsKICAgICBhdXRvIHZh
cmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBv
aW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAi
LCBwb2ludGVyLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgp
KSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7CiAgICAgYXBwZW5k
UmlnaHRWYWx1ZVdpdGhOdWxsYWJpbGl0eShtYWtlUG9pbnRlckV4cHJlc3Npb24sIHZhcmlhYmxl
TmFtZSwgbnVsbGFiaWxpdHkpOwogfQogCkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gZWxzZUJvZHkgPSB0YWtlTGFz
dFZhbHVlKCk7CiAKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcs
IHZhcmlhYmxlTmFtZSwgIiA9ICIsIGNoZWNrLCAiID8gIiwgYm9keSwgIiA6ICIsIGVsc2VCb2R5
LCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlh
YmxlTmFtZSwgIiA9ICIsIGNoZWNrLCAiID8gIiwgYm9keSwgIiA6ICIsIGVsc2VCb2R5LCAiO1xu
Iik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh0ZXJuYXJ5RXhwcmVzc2lvbiwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2
YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV92
YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwogICAgIGF1dG8gcG9pbnRlck5hbWUgPSBnZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInRo
cmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodmFyaWFibGVSZWZlcmVuY2Uu
cmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCBpdGVyYXRvci0+dmFs
dWUsICI7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0aHJlYWQgIiwgbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7CiAg
ICAgYXBwZW5kTGVmdFZhbHVlKHZhcmlhYmxlUmVmZXJlbmNlLCBpdGVyYXRvci0+dmFsdWUsIHBv
aW50ZXJOYW1lLCBOdWxsYWJpbGl0eTo6Tm90TnVsbCk7CiB9CiAKQEAgLTcwMywyNyArNzAzLDI3
IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0Q29uc3QKIHsKICAgICBjb25z
dGFudEV4cHJlc3Npb24udmlzaXQoV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgWyZdKEFTVDo6
SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7CisgICAgICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwogICAgICAg
ICB9LAogICAgICAgICBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZElu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChmbG9hdExpdGVyYWwudmFsdWUo
KSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGZsb2F0TGl0ZXJhbC52YWx1
ZSgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdKEFTVDo6TnVsbExpdGVyYWwmKSB7Ci0gICAg
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIm51bGxwdHIiKTsKKyAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxwdHIiKTsKICAgICAgICAgfSwKICAg
ICAgICAgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7CiAgICAgICAg
ICAgICBpZiAoYm9vbGVhbkxpdGVyYWwudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInRydWUiKTsKKyAgICAgICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJmYWxzZSIpOworICAgICAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIH0sCiAgICAgICAg
IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKSB7CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKTsKICAgICAgICAgICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgIjo6IiwgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpLCAiOjoiLCBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
ZW51bWVyYXRpb25NZW1iZXIoKSkpOwogICAgICAgICB9CiAgICAgKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ4ODEy
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxNCArMTI2LDE0IEBA
IHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byYg
cmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpOwogICAgICAgICBh
dXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0dXJu
VHlwZSk7CiAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHJl
dHVybk5hbWUsICIgPSB7IH07XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHJldHVybk5hbWUsICIgPSB7IH07XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKICAgICAgICAgYXV0byBt
ZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmFtZXRl
clR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBtZXRh
bFBhcmFtZXRlck5hbWUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIntcbiIsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4ID0gIiwgYXJnc1sw
XSwgIjtcbiIpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlvbkRl
ZmluaXRpb24gPSBbXSAoYXV0byYgdHlwZSkgewpAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgdm9pZCBp
bmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgICAgIGJvb2wg
aGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG1lbWJlciA6
IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewogICAgICAgICAg
ICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAgICAgY2FzZSAi
LCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFs
dWUoKSwgIjogYnJlYWs7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwogICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgIGRlZmF1bHQ6IHggPSAwOyBicmVhazsgfVxu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAg
IHJldHVybk5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgpO1xu
fVxuIik7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTY3LDEzICsxNjcsMTMgQEAgdm9pZCBpbmxp
bmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBhdXRvJiB1bm5hbWVkUGFy
YW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpOwog
ICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkgewog
ICAgICAgICAgICAgYXV0byYgYXJyYXlQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJh
eVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAg
ICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJyYXlQYXJhbWV0ZXJUeXBlLm51bUVsZW1l
bnRzKCksICI7XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFBhcmFtZXRlclR5cGUp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwg
Ii5sZW5ndGg7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAgICAg
ICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVt
ZW50ID0gc3RydWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVu
dCgqc3RydWN0dXJlRWxlbWVudCkpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVs
ZW1lbnQpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBBU1NFUlQoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpOwpA
QCAtMTk4LDE4ICsxOTgsMTggQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWls
ZGVyJgogICAgICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yLiJfc3RyLmxlbmd0aCgpKTsKICAgICAgICAg
ICAgIGZpZWxkTmFtZSA9IGZpZWxkTmFtZS5zdWJzdHJpbmcoMCwgZmllbGROYW1lLmxlbmd0aCgp
IC0gMSk7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5OYW1l
LCAiID0gIiwgYXJnc1swXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgJy4n
KTsKICAgICAgICAgICAgIGFwcGVuZE1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiA9ICIsIGFyZ3NbMV0sICI7XG4i
KTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBhcmdzWzFdLCAiO1xu
Iik7CiAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAgICAg
ICAgIGF1dG8gZmllbGROYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vi
c3RyaW5nKCJvcGVyYXRvci4iX3N0ci5sZW5ndGgoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAg
ICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICcuJyk7CiAgICAgICAgIGFwcGVuZE1hbmds
ZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtc
biIpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5n
QnVpbGRlciYKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yJi4iX3N0ci5sZW5ndGgo
KSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gJigiLCBhcmdz
WzBdLCAiLT4iKTsKIAogICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9ICpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwpAQCAtMjMwLDkgKzIzMCw5IEBA
IHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgIGF1
dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRp
b24+KG5hbWVkVHlwZSk7CiAgICAgICAgICAgICBhdXRvKiBzdHJ1Y3R1cmVFbGVtZW50ID0gc3Ry
dWN0dXJlRGVmaW5pdGlvbi5maW5kKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlRWxlbWVudCk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1l
bnQpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1lbnQpKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGZpZWxkTmFtZSk7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChmaWVsZE5hbWUpOwogCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lk
IGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7CiAgICAgICAg
IEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKIAotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSAoIiwgYXJnc1sxXSwgIiA8ICIsIGFyZ3NbMF0sICIubGVuZ3Ro
KSA/ICIsICIgJigiLCBhcmdzWzBdLCAiLnBvaW50ZXJbIiwgYXJnc1sxXSwgIl0pIDogbnVsbHB0
cjtcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybjsKQEAgLTI3OSwxOSArMjc5LDE5
IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKIAogICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkNvbHVtbnMgPSBudW1iZXJPZk1hdHJpeENvbHVtbnMoKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFs
UmV0dXJuTmFtZSwgIiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIik7CiAKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCBhcmdzWzFdLCAiID49ICIs
IG51bWJlck9mUm93cywgIikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUs
ICIoMCk7IGJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICByZXN1bHRbMF0gPSAiLCBh
cmdzWzBdLCAnWycsIGFyZ3NbMV0sICJdO1xuIiwKICAgICAgICAgICAgICAgICAiICAgIHJlc3Vs
dFsxXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cywgIl07
XG4iKTsKIAogICAgICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSAzKQotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICByZXN1bHRbMl0gPSAiLCBh
cmdzWzBdLCAnWycsIGFyZ3NbMV0sICIgKyAiLCBudW1iZXJPZlJvd3MgKiAyLCAiXTtcbiIpOwor
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVzdWx0WzJdID0gIiwg
YXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl07XG4iKTsK
ICAgICAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgcmVzdWx0WzNdID0gIiwgYXJnc1swXSwg
J1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl07XG4iKTsKKyAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3NbMF0s
ICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CiAKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBy
ZXN1bHQ7XG4iLAogICAgICAgICAgICAgICAgICJ9IHdoaWxlICgwKTtcbiIpOwogICAgICAgICB9
IGVsc2UgewpAQCAtMzAwLDEyICszMDAsMTIgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihT
dHJpbmdCdWlsZGVyJgogCiAgICAgICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkp
OwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJkbyB7XG4iLCBt
ZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiZG8ge1xuIiwgbWV0YWxSZXR1cm5OYW1lLCAiIHJlc3VsdDtcbiIpOwogCi0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIiA+
PSAiLCBudW1FbGVtZW50cywgIikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5h
bWUsICIoMCk7IGJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICByZXN1bHQgPSAiLCBh
cmdzWzBdLCAiWyIsIGFyZ3NbMV0sICJdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAg
ICAgICAgICAgICAgIiAgICAiLCByZXR1cm5OYW1lLCAiID0gcmVzdWx0O1xuIiwKICAgICAgICAg
ICAgICAgICAifSB3aGlsZSAoMCk7XG4iKTsKICAgICAgICAgfQpAQCAtMzI0LDE4ICszMjQsMTgg
QEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNvbHVtbnMgPSBudW1iZXJPZk1hdHJpeENvbHVtbnMoKTsKIAot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZG8ge1xuIiwgbWV0YWxS
ZXR1cm5OYW1lLCAiIG0gPSAiLCBhcmdzWzBdLCAiO1xuIiwKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgbSA9ICIsIGFyZ3NbMF0s
ICI7XG4iLAogICAgICAgICAgICAgICAgIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgaSA9ICIsIGFy
Z3NbMV0sICI7XG4iKTsKIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICIg
ICAgaWYgKGkgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSB7IiwgcmV0dXJuTmFtZSwgIiA9IG07XG5i
cmVhazt9XG4iLAogICAgICAgICAgICAgICAgICIgICAgbVtpXSA9ICIsIGFyZ3NbMl0sICJbMF07
XG4iLAogICAgICAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAiXSA9ICIs
IGFyZ3NbMl0sICJbMV07XG4iKTsKICAgICAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0g
MykKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgbVtp
ICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl0gPSAiLCBhcmdzWzJdLCAiWzJdO1xuIik7CisgICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAyLCAiXSA9ICIsIGFyZ3NbMl0sICJbMl07XG4iKTsKICAgICAgICAgICAgIGlmIChudW1i
ZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl0gPSAiLCBhcmdzWzJdLCAi
WzNdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZS
b3dzICogMywgIl0gPSAiLCBhcmdzWzJdLCAiWzNdO1xuIik7CisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBt
O1xuIiwKICAgICAgICAgICAgICAgICAifSB3aGlsZSgwKTtcbiIpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtMzQ3LDEzICszNDcsMTMgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdC
dWlsZGVyJgogCiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IHZlY3RvclNpemUo
KTsKIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZG8ge1xuIiwg
bWV0YWxSZXR1cm5OYW1lLCAiIHYgPSAiLCBhcmdzWzBdLCAiO1xuIiwKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgdiA9ICIsIGFy
Z3NbMF0sICI7XG4iLAogICAgICAgICAgICAgICAgIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgaSA9
ICIsIGFyZ3NbMV0sICI7XG4iKTsKIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICIgICAgaWYgKGkgPj0gIiwgbnVtRWxlbWVudHMsICIpIHsiLCByZXR1cm5OYW1lLCAiID0g
djtcbmJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICB2W2ldID0gIiwgYXJnc1syXSwg
IjtcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICIgICAgIiwgcmV0
dXJuTmFtZSwgIiA9IHY7XG4iLAogICAgICAgICAgICAgICAgICJ9IHdoaWxlKDApO1xuIik7CiAg
ICAgICAgIH0KQEAgLTM3OCwxMiArMzc4LDEyIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24o
U3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byBtZXRhbFJldHVyblR5cGUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKICAg
ICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9
PSAxKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBlLCAiIHgg
PSAiLCBhcmdzWzBdLCAiO1xuIiwKICAgICAgICAgICAgICAgICAgICAgImZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9ICIsIG9wZXJhdG9yTmFtZSwgInhbaV07XG4i
LAogICAgICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBlLCAiIHggPSAiLCBhcmdzWzBdLCAiO1xuIiwg
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBvcGVyYXRvck5hbWUsICJ4
O1xufVxuIik7CiAgICAgICAgICAgICB9CkBAIC0zOTQsMTMgKzM5NCwxMyBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGlmIChhdXRvKiBsZWZ0TWF0
cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJpZ2h0TWF0cml4ID0gYXNN
YXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlw
ZSgpKSkgewogICAgICAgICAgICAgICAgIC8vIG1hdHJpeCA8b3A+IG1hdHJpeAotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICJ7XG4iLCBtZXRhbFJldHVy
blR5cGUsICIgeDtcbiIsCiAgICAgICAgICAgICAgICAgICAgICJmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHguc2l6ZSgpOyArK2kpIHhbaV0gPSAiLCBhcmdzWzBdLCAiW2ldICIsIG9wZXJhdG9yTmFt
ZSwgJyAnLCBhcmdzWzFdLCAiW2ldO1xuIiwKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuTmFt
ZSwgIiA9IHg7XG59XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gbWF0cml4IDxvcD4gc2NhbGFyCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAg
ICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4O1xuIiwKICAgICAgICAg
ICAgICAgICAgICAgImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9
ICIsIGFyZ3NbMF0sICJbaV0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICI7XG4iLAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOwpAQCAtNDA4LDcg
KzQwOCw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAg
ICAgfSBlbHNlIGlmIChhdXRvKiByaWdodE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSkpIHsKICAgICAgICAgICAg
IEFTU0VSVCghYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKVswXS0+dHlwZSgpKSk7CiAgICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiBtYXRyaXgKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBl
LCAiIHg7XG4iLAogICAgICAgICAgICAgICAgICJmb3IgKHNpemVfdCBpID0gMDsgaSA8IHguc2l6
ZSgpOyArK2kpIHhbaV0gPSAiLCBhcmdzWzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdz
WzFdLCAiW2ldO1xuIiwKICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIp
OwpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKICAgICAgICAgICAgIC8vIHZlY3RvciA8b3A+IHZlY3RvcgogICAgICAgICAgICAgLy8g
dmVjdG9yIDxvcD4gc2NhbGFyCiAgICAgICAgICAgICAvLyBzY2FsYXIgPG9wPiB2ZWN0b3IKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJn
c1swXSwgJyAnLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgIjtcbiIpOwogICAgICAgICB9
CiAKQEAgLTQ1MCwxNCArNDUwLDE0IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5n
QnVpbGRlciYKICAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0g
ImFzZmxvYXQiCiAgICAgICAgIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJsZW5ndGgiKSB7CiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgcmV0dXJu
TmFtZSwgIiA9ICIsIG1hcEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSksICcoJywgYXJnc1swXSwgIik7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAicG93IiB8fCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiYXRhbjIiKSB7CiAgICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMik7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAogICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICIsIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpLCAiKCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIpO1xuIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7CiAgICAgICAgIGlmIChh
c01hdHJpeFR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpKSB7CiAgICAgICAg
ICAgICBhdXRvIG1ldGFsUmV0dXJuVHlwZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAog
ICAgICAgICAgICAgICAgICJ7XG4iLCBtZXRhbFJldHVyblR5cGUsICIgeDtcbiIsCiAgICAgICAg
ICAgICAgICAgImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9IGNs
YW1wKCIsIGFyZ3NbMF0sICJbaV0sICIsIGFyZ3NbMV0sICJbaV0sICIsIGFyZ3NbMl0sICJbaV0p
OyIsCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9IHg7XG59XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICByZXR1cm5OYW1l
LCAiID0gY2xhbXAoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwgIik7
XG4iKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC01MDMsNyArNTAzLDcgQEAgdm9p
ZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgIGlmIChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdGFydHNXaXRoKCJJbnRlcmxvY2tlZCJfc3RyKSkgewog
ICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkludGVybG9j
a2VkQ29tcGFyZUV4Y2hhbmdlIikgewogICAgICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAiYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNp
dCgiLCBhcmdzWzBdLCAiLCAmIiwgYXJnc1sxXSwgIiwgIiwgYXJnc1syXSwgIiwgbWVtb3J5X29y
ZGVyX3JlbGF4ZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIsCiAgICAgICAgICAgICAgICAg
JyonLCBhcmdzWzNdLCAiID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKIAogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpID09IDMpOwogICAgICAgICBhdXRvIG5hbWUgPSBhdG9taWNOYW1lKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN1YnN0cmluZygiSW50ZXJsb2NrZWQiX3N0ci5s
ZW5ndGgoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICcqJywgYXJnc1syXSwgIiA9IGF0
b21pY18iLCBuYW1lLCAiX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1l
bW9yeV9vcmRlcl9yZWxheGVkKTtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTI1
LDE5ICs1MjUsMTkgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgog
ICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnR5cGUoKS51bmlmeU5vZGUoKSkpOwogICAgICAgICBhdXRvIHJldHVyblZlY3Rvckxlbmd0aCA9
IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBlKTsKIAotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIHJl
dHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLnNhbXBsZSgiLCBhcmdzWzFdLCAiLCAiKTsKIAog
ICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1syXSwgJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgIiwgYXJnc1syXSwgJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpKTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMl0pOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1syXSk7CiAgICAgICAgIGlmIChuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCkKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgYXJnc1szXSk7CisgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiLCBhcmdzWzNdKTsKICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIikiKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4
dHVyZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLiIsICJ4
eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOworICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5W
ZWN0b3JMZW5ndGgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwogCiAg
ICAgICAgIHJldHVybjsKQEAgLTU2MCwzMSArNTYwLDMxIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVu
Y3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7
ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3RyIH07CiAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJfc3RyLnN1YnN0cmluZyhpLCAxKTsKLSAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFy
Z3NbMV0sICcuJywgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJn
c1sxXSwgJy4nLCBzdWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNb
aV0sICIoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJy
ZWFrO31cbiIpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYg
KCIsIGFyZ3NbMV0sICcuJywgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
IiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVu
c2lvbnNbaV0sICIoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIo
MCk7IGJyZWFrO31cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXgg
PSAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFd
LCAnLicsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0s
ICcuJywgc3VmZml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMV0sICcuJywg
c3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgJy4nLCBz
dWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkgeyIsIHJldHVybk5h
bWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAg
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdz
WzFdLCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIikgPj0gIiwg
YXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgeyAiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1
cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oIiwgYXJnc1sxXSwgIikgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgeyAiLCByZXR1
cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIueCA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KCIsIGFyZ3NbMV0sICIueCkgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgeyIsIHJl
dHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIKICAgICAg
ICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIi55IDwgMCB8fCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIi55KSA+PSAiLCBhcmdzWzBdLCAiLmdldF9oZWlnaHQo
KSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31c
biIpOwogCiAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAo
IiwgYXJnc1sxXSwgIi56IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwg
Ii56KSA+PSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIs
IG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CisgICAgICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMV0sICIueiA8IDAgfHwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIueikgPj0gIiwgYXJnc1swXSwgIi5nZXRf
ZGVwdGgoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJy
ZWFrO31cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgIi5y
ZWFkKCIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIHJldHVybk5hbWUs
ICIgPSAiLCBhcmdzWzBdLCAiLnJlYWQoIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1Rl
eHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGgg
PiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2
ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzFdLCAnLics
ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1
aW50KCIsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JM
ZW5ndGggLSAxLCAxKSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1
aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1sx
XSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEp
LCAiKSwgdWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9u
VmVjdG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlv
blZlY3Rvckxlbmd0aCksICcoJywgYXJnc1sxXSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwg
JygnLCBhcmdzWzFdLCAnKScpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwog
ICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkpCi0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
cmV0dXJuVmVjdG9yTGVuZ3RoKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
LicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICI7XG4iCiAgICAgICAgICAgICAi
fSB3aGlsZSgwKTtcbiIpOwpAQCAtNTk0LDE0ICs1OTQsMTQgQEAgdm9pZCBpbmxpbmVOYXRpdmVG
dW5jdGlvbihTdHJpbmdCdWlsZGVyJgogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ubmFtZSgpID09ICJsb2FkIikgewogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAg
ICAgIHJldHVybk5hbWUsICIgPSBhdG9taWNfbG9hZF9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic3RvcmUiKSB7CiAgICAg
ICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkg
PT0gMik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgImF0b21pY19zdG9yZV9leHBsaWNpdCgi
LCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzNywzNiArNjM3LDM2IEBAIHZvaWQgaW5saW5l
TmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgfQogICAgICAgICBBU1NFUlQo
aW5kZXggPT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsK
IAotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICJpZiAoIiwgd2lkdGhOYW1lLCAiKVxuIgogICAg
ICAgICAgICAgIiAgICAqIiwgd2lkdGhOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgo
Iik7CiAKICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChhcmdzWzFdKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGFyZ3NbMV0pOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAg
ICAgICBpZiAoaGVpZ2h0TmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAg
ICAgICIgICAgaWYgKCIsICpoZWlnaHROYW1lLCAiKVxuIgogICAgICAgICAgICAgICAgICIgICAg
ICAgICoiLCAqaGVpZ2h0TmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgiKTsKICAg
ICAgICAgICAgIGlmIChoYXNNaXBMZXZlbCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKGFyZ3NbMV0pOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGFyZ3NbMV0pOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4i
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVwdGhOYW1lKSB7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgKmRlcHRoTmFtZSwgIilcbiIKICAgICAg
ICAgICAgICAgICAiICAgICAgICAqIiwgKmRlcHRoTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0
X2RlcHRoKCIpOwogICAgICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoYXJnc1sxXSk7CisgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChlbGVtZW50c05hbWUpIHsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCAqZWxlbWVu
dHNOYW1lLCAiKVxuIgogICAgICAgICAgICAgICAgICIgICAgICAgICoiLCAqZWxlbWVudHNOYW1l
LCAiID0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpO1xuIik7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKG51bWJlck9mTGV2ZWxzTmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAg
ICAgICAgICAgICAgICIgICAgaWYgKCIsICpudW1iZXJPZkxldmVsc05hbWUsICIpXG4iCiAgICAg
ICAgICAgICAgICAgIiAgICAgICAgKiIsICpudW1iZXJPZkxldmVsc05hbWUsICIgPSAiLCBhcmdz
WzBdLCAiLmdldF9udW1fbWlwX2xldmVscygpO1xuIik7CiAgICAgICAgIH0KQEAgLTcyNiwzMCAr
NzI2LDMwIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAg
ICAgICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIs
ICJkZXB0aCJfc3RyIH07CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9u
VmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdWZmaXggPSAi
eHl6dyJfc3RyLnN1YnN0cmluZyhpLCAxKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICIuIiwgc3VmZml4LCAiID49ICIs
IGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSkgYnJlYWs7XG4iKTsKKyAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLiIs
IHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIGJy
ZWFrO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3
Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICcuJywg
c3VmZml4LCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkgYnJlYWs7XG4iKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICcu
Jywgc3VmZml4LCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkgYnJlYWs7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0
aCA9PSAxKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAg
ICBpZiAoIiwgYXJnc1syXSwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpKSBicmVhaztc
biIpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFy
Z3NbMl0sICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoKSkgYnJlYWs7XG4iKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICIgICAgaWYgKCIsIGFyZ3NbMl0sICIueCA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0
aCgpKSBicmVhaztcbiIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1syXSwg
Ii55ID49ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgpKSBicmVhaztcbiIpOwogICAgICAgICAg
ICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMl0sICIueiA+
PSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSBicmVhaztcbiIpOworICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLnogPj0gIiwg
YXJnc1swXSwgIi5nZXRfZGVwdGgoKSkgYnJlYWs7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgYXJnc1sw
XSwgIi53cml0ZSh2ZWM8IiwgbWV0YWxJbm5lclR5cGVOYW1lLCAiLCA0PigiLCBhcmdzWzFdKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBhcmdzWzBdLCAiLndyaXRlKHZl
YzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIsIDQ+KCIsIGFyZ3NbMV0pOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQgLSBpdGVtVmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAwIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIpLCAiKTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDEpLCAnKCcsIGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJp
bmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1syXSwgIi4i
LCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgo
bG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgJygnLCBhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIu
c3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3Nb
Ml0sICIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAx
KSwgJyknKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygn
LCBhcmdzWzJdLCAnKScpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQi
LCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMl0sICcpJyk7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgIik7XG4iCiAgICAg
ICAgICAgICAifSB3aGlsZSgwKTtcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAko
cmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fbWFuZ2xlZE5hbWVGb3JOYW1l
ZFR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbiksICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGUoc3RydWN0dXJl
RGVmaW5pdGlvbiksICI7XG4iKTsKICAgICB9CiAKICAgICBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRP
ck5hdGl2ZVR5cGVOYW1lKEFTVDo6TmFtZWRUeXBlJik+IG1fbWFuZ2xlZE5hbWVGb3JOYW1lZFR5
cGU7CkBAIC0zNjIsMTkgKzM2MiwxOSBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBl
RGVmaW5pdGlvCiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNl
OiB7CiAgICAgICAgIGF1dG8mIG5hbWVkVHlwZSA9IGRvd25jYXN0PFJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4oYmFzZVR5cGVOYW1lTm9kZSkubmFtZWRUeXBlKCk7CiAgICAgICAgIGVtaXROYW1lZFR5
cGVEZWZpbml0aW9uKHN0cmluZ0J1aWxkZXIsIG5hbWVkVHlwZSwgZW1pdHRlZE5hbWVkVHlwZXMs
IGVtaXR0ZWRVbm5hbWVkVHlwZXMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpLCAnICcsIGJhc2VU
eXBlTmFtZU5vZGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUobmFtZWRUeXBlKSwgJyAnLCBi
YXNlVHlwZU5hbWVOb2RlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAg
ICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PFBvaW50ZXJUeXBlTmFtZU5vZGU+KGJhc2VU
eXBlTmFtZU5vZGUpOwogICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgdG9TdHJp
bmcocG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBvaW50ZXJUeXBlLnBhcmVudCgp
LT5tYW5nbGVkTmFtZSgpLCAiKiAiLCBwb2ludGVyVHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50
ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBwb2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xl
ZE5hbWUoKSwgIiogIiwgcG9pbnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJl
ZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxB
cnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFT
U0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAg
ICAic3RydWN0ICIsIGFycmF5UmVmZXJlbmNlVHlwZS5tYW5nbGVkTmFtZSgpLCAieyBcbiIKICAg
ICAgICAgICAgICIgICAgIiwgdG9TdHJpbmcoYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFj
ZSgpKSwgJyAnLCBhcnJheVJlZmVyZW5jZVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIq
IHBvaW50ZXI7XG4iCiAgICAgICAgICAgICAiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAg
ICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBh
cnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7
CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5cGUucGFy
ZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAi
LCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1l
KCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xl
ZE5hbWUoKSwgIjtcbiIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAg
LTQwNiwyMSArNDA2LDIxIEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlv
bigKICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpIHsK
ICAgICAgICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVt
ZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSk7CiAgICAgICAgIGF1dG8mIGJhc2VUeXBlID0g
ZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZW51bSBjbGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUo
ZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIsIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2Fz
dDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwgIiB7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1lcmF0aW9u
RGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7CiAgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRp
b25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5h
bWVGb3JFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIgPSAiLCBlbnVtZXJh
dGlvbk1lbWJlci5nZXQoKS52YWx1ZSgpLCAiLFxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVy
YXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRpb25NZW1iZXIuZ2V0KCkudmFsdWUoKSwgIixc
biIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwogICAgIH0gZWxzZSBp
ZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5hbWVkVHlwZSkpIHsKICAgICAgICAg
Ly8gTmF0aXZlIHR5cGVzIGFscmVhZHkgaGF2ZSBkZWZpbml0aW9ucy4gVGhlcmUncyBub3RoaW5n
IHRvIGRvLgogICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1l
ZFR5cGUpKSB7CiAgICAgICAgIGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJl
RGVmaW5pdGlvbiksICIge1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1
Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiIHtcbiIpOwog
ICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9u
LnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgp
KSwgJyAnLCBtYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoc3RydWN0dXJlRWxlbWVudCks
ICI7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xl
ZE5hbWVGb3JUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZv
clN0cnVjdHVyZUVsZW1lbnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvJiB0
eXBlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xl
ZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JU
eXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKSwg
JyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIik7CiAgICAgfQog
ICAgIGVtaXR0ZWROYW1lZFR5cGVzLmFkZCgmbmFtZWRUeXBlKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAko
cmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGUKICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoY29udGVudEVuY29kaW5nKTsKICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQocmVzb3VyY2UudXJsKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVz
b3VyY2UudXJsLnN0cmluZygpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5c
clxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY4
LDEyICsxMzY4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8K
ICAgICBhYnNvbHV0ZUJvdW5kcy5tb3ZlKGxheWVyLm9mZnNldEZyb21BbmNlc3RvcihtX3JlbmRl
clZpZXcubGF5ZXIoKSkpOwogICAgIAogICAgIFN0cmluZ0J1aWxkZXIgbG9nU3RyaW5nOwotICAg
IGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVuZChwYWQoJyAnLCAxMiArIGRlcHRoICogMiwgaGV4KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmbGF5ZXIpKSksICIgaWQgIiwgYmFja2luZy0+Z3Jh
cGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpLCAiICgiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueCgpLnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLnkoKS50b0Zsb2F0KCksIDMpLCAnLScs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhYKCkudG9GbG9h
dCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMu
bWF4WSgpLnRvRmxvYXQoKSwgMyksICIpICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChi
YWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIC8gMTAyNCwgMiksICJLQiIpOwor
ICAgIGxvZ1N0cmluZy5hcHBlbmQocGFkKCcgJywgMTIgKyBkZXB0aCAqIDIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oJmxheWVyKSkpLCAiIGlkICIsIGJhY2tpbmctPmdyYXBoaWNz
TGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSwgIiAoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdp
ZHRoKGFic29sdXRlQm91bmRzLngoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy55KCkudG9GbG9hdCgpLCAzKSwgJy0nLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMubWF4WCgpLnRvRmxvYXQoKSwg
MyksICcsJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFko
KS50b0Zsb2F0KCksIDMpLCAiKSAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYmFja2lu
Zy0+YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSAvIDEwMjQsIDIpLCAiS0IiKTsKIAogICAg
IGlmICghbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLmhhc0F1dG9aSW5kZXgoKSkKLSAgICAgICAg
bG9nU3RyaW5nLmZsZXhpYmxlQXBwZW5kKCIgei1pbmRleDogIiwgbGF5ZXIucmVuZGVyZXIoKS5z
dHlsZSgpLnpJbmRleCgpKTsKKyAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgiIHotaW5kZXg6ICIs
IGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS56SW5kZXgoKSk7CiAKLSAgICBsb2dTdHJpbmcuZmxl
eGlibGVBcHBlbmQoIiAoIiwgbG9nUmVhc29uc0ZvckNvbXBvc2l0aW5nKGxheWVyKSwgIikgIik7
CisgICAgbG9nU3RyaW5nLmFwcGVuZCgiICgiLCBsb2dSZWFzb25zRm9yQ29tcG9zaXRpbmcobGF5
ZXIpLCAiKSAiKTsKIAogICAgIGlmIChiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPmNvbnRlbnRz
T3BhcXVlKCkgfHwgYmFja2luZy0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpIHx8IGJh
Y2tpbmctPmZvcmVncm91bmRMYXllcigpIHx8IGJhY2tpbmctPmJhY2tncm91bmRMYXllcigpKSB7
CiAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoJ1snKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI0ODgxMikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwOSw3ICs1MDA5LDcgQEAgU3Ry
aW5nIEludGVybmFsczo6b25nb2luZ0xvYWRzRGVzY3JpcHRpbwogICAgICAgICBidWlsZGVyLmFw
cGVuZCgnWycpOwogCiAgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5pbnRlcm1lZGlhdGVMb2FkSW5mb3JtYXRpb25Gcm9tUmVz
b3VyY2VMb2FkSWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuZmxl
eGlibGVBcHBlbmQoJ1snLCAoaW50KWluZm8udHlwZSwgIixcIiIsIGluZm8ucmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgIlwiLFwiIiwgaW5mby5yZXF1ZXN0Lmh0dHBNZXRob2QoKSwgIlwiLCIsIGlu
Zm8ucmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgJ10nKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdbJywgKGludClpbmZvLnR5cGUsICIsXCIiLCBpbmZvLnJlcXVlc3QudXJsKCkuc3Ry
aW5nKCksICJcIixcIiIsIGluZm8ucmVxdWVzdC5odHRwTWV0aG9kKCksICJcIiwiLCBpbmZvLnJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICddJyk7CiAKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J10nKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4ODEyKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wOC0x
NiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFN0cmlu
Z0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4u
LikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDc1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjYWxsIHNpdGVzIGZvciByZW5hbWUgZnJvbSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVu
ZCguLi4pIHRvIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZHVt
cEhpc3RvcnlJdGVtKToKKyAgICAgICAgV2UgaGF2ZSB0byBleHBsaWNpdGx5IGFjY2VzcyB0aGUg
dW5kZXJseWluZyBTdHJpbmcgb2YgdGhlIFVSTCByYXRoZXIgdGhhbgorICAgICAgICByZWx5aW5n
IG9uIHRoZSBpbXBsaWNpdCBjb252ZXJzaW9uIHNpbmNlIGl0IGlzIG5vdyBhbWJpZ3VvdXMgd2hp
Y2ggYXBwZW5kKC4uLikKKyAgICAgICAgb3ZlcmxvYWQgc2hvdWxkIGJlIHVzZWQuCisKIDIwMTkt
MDgtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0
b3JhZ2VBcmVhOjpzZXRXb3JrUXVldWUoKSBtZW1iZXIgZnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNDg4MTIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg3MCw3ICsxODcwLDcgQEAgc3RhdGljIHZvaWQgZHVtcEhpc3RvcnlJdGVt
KEhpc3RvcnlJdGVtJgogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIihmaWxl
IHRlc3QpOiIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1cmwuc3RyaW5nKCkuc3Vi
c3RyaW5nKHN0YXJ0KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHVybCk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHVybC5zdHJpbmcoKSk7CiAgICAg
CiAgICAgYXV0byYgdGFyZ2V0ID0gaXRlbS50YXJnZXQoKTsKICAgICBpZiAodGFyZ2V0Lmxlbmd0
aCgpKSB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNDg4MTIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikg
dG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsIHNpdGVzIGZvciByZW5hbWUgZnJvbSBT
dHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4pIHRvIAorICAgICAgICBTdHJpbmdCdWls
ZGVyOjphcHBlbmQoLi4uKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTkt
MDgtMTYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IEpvaG4gV2lsYW5kZXIgYXMgV2ViS2l0IFJldmlld2VyCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAkocmV2aXNpb24gMjQ4ODEyKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiwyNSArMTE2LDI1IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFw
cGVuZCkKICAgICB9CiB9CiAKLVRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEZsZXhpYmxlQXBwZW5k
KQorVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVmFyaWFkaWNBcHBlbmQpCiB7CiAgICAgewogICAg
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBl
bmQoU3RyaW5nKCIwMTIzNDU2Nzg5IikpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmco
IjAxMjM0NTY3ODkiKSk7CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5
IiwgYnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoImFiY2QiKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoImFiY2QiKTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRl
bnQoIjAxMjM0NTY3ODlhYmNkIiwgYnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuZmxleGlibGVB
cHBlbmQoJ2UnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ2UnKTsKICAgICAgICAgZXhwZWN0
QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZSIsIGJ1aWxkZXIpOwotICAgICAgICBidWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiIpOwogICAg
ICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7CiAg
ICAgfQogCiAgICAgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1
aWxkZXIuZmxleGlibGVBcHBlbmQoU3RyaW5nKCIwMTIzNDU2Nzg5IiksICJhYmNkIiwgJ2UnLCAi
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4OSIpLCAiYWJjZCIs
ICdlJywgIiIpOwogICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2Rl
IiwgYnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoU3RyaW5nKCJBIiks
ICJCIiwgJ0MnLCAiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZygiQSIpLCAiQiIs
ICdDJywgIiIpOwogICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2Rl
QUJDIiwgYnVpbGRlcik7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376609</attachid>
            <date>2019-08-17 08:04:27 -0700</date>
            <delta_ts>2019-08-17 11:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200756-20190817080426.patch</filename>
            <type>text/plain</type>
            <size>85003</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg4MTkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBl
bmQoLi4uKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgdGhlcmUgYXJlIG5vIHJlbWFp
bmluZyBtdWx0aS1wYXJhbWV0ZXIgb3IgYmVoYXZpb3IgY2hhbmdpbmcgb3ZlcmxvYWRzCisgICAg
ICAgIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLCB3ZSBjYW4gcmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikKKyAgICAgICAgdG8gU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKC4uLikuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBsZWF2ZXMgdGhlIGV4aXN0
aW5nIHNpbmdsZSBwYXJhbWV0ZXIgb3ZlcmxvYWRzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4p
CisgICAgICAgIGZvciBub3csIGFuZCBzaW5jZSB0aGV5IGhhdmUgc3BlY2lmeSBzcGVjaWZpYyB0
eXBlcywgdGhleSB3aWxsIGNvbnRpbnVlIHRvIGJlIHByZWZlcmVkCisgICAgICAgIGluIG92ZXJs
b2FkIHJlc29sdXRpb24uIE9uY2Ugd2UgaGF2ZSBjb25jbHVkZWQgdGhlIHZhcmlhZGljIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCguLi4pCisgICAgICAgIGNhbiBwcm92aWRlIHRoZSBzYW1lIHBlcmZv
cm1hbmNlIGFzIHRoZSBzaW5nbGUgcGFyYW1ldGVyIHZhcmlhbnQsIHdlIGNhbiByZW1vdmUgdGhl
CisgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgdmFyaWFudC4KKworICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgZnJvbSBTdHJpbmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4p
IHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCguLi4pLgorCiAyMDE5LTA4LTE1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IHVzZSB1bmlvbiB0byBzdG9y
ZSBOb2RlUmFyZURhdGEqIGFuZCBSZW5kZXJPYmplY3QqCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAJKHJldmlzaW9uIDI0ODgxOSkKKysrIFNvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw3ICsz
MDgsNyBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwogICAgIGZvciAo
YXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgnLycsIGNvbXBvbmVudCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJywgY29tcG9u
ZW50KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjQ4ODE5KQorKysgU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw4ICsyMzUsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kRml4ZWRXaWR0aE51
bWJlcihmbG9hdCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kRml4ZWRXaWR0aE51bWJlcihkb3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQ
bGFjZXMpOwogCi0gICAgLy8gRklYTUU6IFJlbmFtZSB0byBhcHBlbmQoLi4uKSBhZnRlciByZW5h
bWluZyBhbnkgb3ZlcmxvYWRzIG9mIGFwcGVuZCB0aGF0IHRha2UgbW9yZSB0aGFuIG9uZSBhcmd1
bWVudC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gdm9pZCBmbGV4aWJs
ZUFwcGVuZChTdHJpbmdUeXBlcy4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5n
VHlwZXM+IHZvaWQgYXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpCiAgICAgewpAQCAtMzY4LDcgKzM2Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBnZXRCdWZm
ZXJDaGFyYWN0ZXJzKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmco
KSBjb25zdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4g
dm9pZCBmbGV4aWJsZUFwcGVuZEZyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMuLi4pOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4gdm9pZCBhcHBlbmRG
cm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uKTsKIAogICAgIG11dGFibGUgU3RyaW5n
IG1fc3RyaW5nOwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2J1ZmZlcjsKQEAgLTM5OSw3ICsz
OTgsNyBAQCBBTFdBWVNfSU5MSU5FIFVDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4KLXZvaWQgU3RyaW5nQnVpbGRl
cjo6ZmxleGlibGVBcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uIGFkYXB0
ZXJzKQordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFk
YXB0ZXJzLi4uIGFkYXB0ZXJzKQogewogICAgIGF1dG8gcmVxdWlyZWRMZW5ndGggPSBjaGVja2Vk
U3VtPGludDMyX3Q+KG1fbGVuZ3RoLCBhZGFwdGVycy5sZW5ndGgoKS4uLik7CiAgICAgaWYgKHJl
cXVpcmVkTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgewpAQCAtNDI1LDkgKzQyNCw5IEBAIHZvaWQg
U3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmRGcm9tQWQKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUuLi4gU3RyaW5nVHlwZXM+Ci12b2lkIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKFN0
cmluZ1R5cGVzLi4uIHN0cmluZ3MpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChTdHJpbmdU
eXBlcy4uLiBzdHJpbmdzKQogewotICAgIGZsZXhpYmxlQXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7CisgICAgYXBwZW5kRnJvbUFk
YXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NiBAQAorMjAxOS0wOC0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8g
U3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsIHNpdGVzIGZvciByZW5hbWUgZnJvbSBTdHJp
bmdCdWlsZGVyOjpmbGV4aWJsZUFwcGVuZCguLi4pIHRvIAorICAgICAgICBTdHJpbmdCdWlsZGVy
OjphcHBlbmQoLi4uKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dFJlc291cmNlU2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0QnVpbHRJbnNTaWduYXR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRNYW5nbGVkSW5w
dXRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0TWFuZ2xlZE91dHB1dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2tSZXNvdXJjZXNBbmROYW1l
ZEJ1aWx0SW5zKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OmVtaXRVbnBhY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRQYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0U2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpNZXRhbDo6ZGVjbGFyZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRD
b25zdGFudEV4cHJlc3Npb25TdHJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjppbmxpbmVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZp
bml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6VHlwZXM6OmFwcGVuZE5hbWVUbyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvbmdvaW5nTG9h
ZHNEZXNjcmlwdGlvbnMgY29uc3QpOgorCiAyMDE5LTA4LTE2ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQ4NzcyLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcAkocmV2aXNpb24gMjQ4ODE5KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTgsNyArMTU4LDcgQEAgc3RydWN0IFR5cGVzIHsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5h
bWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQogICAgIHsKLSAgICAgICAgYnVpbGRlci5mbGV4
aWJsZUFwcGVuZChUb2tlbjo6dHlwZU5hbWUodCksICIsICIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZChUb2tlbjo6dHlwZU5hbWUodCksICIsICIpOwogICAgICAgICBUeXBlczx0cy4uLj46OmFw
cGVuZE5hbWVUbyhidWlsZGVyKTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAkocmV2aXNpb24gMjQ4ODE5KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZv
bGRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAgRW50cnlQb2ludFNj
YWZmb2xkaW5nOjpFbnRyeVBvaW50U2NhZmZvbAogdm9pZCBFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OmVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwgbV9uYW1lZEJpbmRH
cm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoInN0cnVjdCAiLCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOwog
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+PiBzdHJ1Y3RJdGVtczsK
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXpl
KCk7ICsraikgewogICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmlu
ZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2UKICAgICAgICAgICAgIHJldHVybiBsZWZ0
LmZpcnN0IDwgcmlnaHQuZmlyc3Q7CiAgICAgICAgIH0pOwogICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVtcykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoIiAgICAiLCBzdHJ1Y3RJdGVtLnNlY29uZCwgJ1xuJyk7CisgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4n
KTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG5cbiIpOwogICAgIH0KIH0KQEAg
LTE4Nyw3ICsxODcsNyBAQCBib29sIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFJlc291cmNl
CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7
CiAgICAgICAgIGF1dG8mIG5hbWVkQmluZEdyb3VwID0gbV9uYW1lZEJpbmRHcm91cHNbaV07Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRldmljZSAiLCBuYW1lZEJpbmRH
cm91cC5zdHJ1Y3ROYW1lLCAiJiAiLCBuYW1lZEJpbmRHcm91cC52YXJpYWJsZU5hbWUsICIgW1ti
dWZmZXIoIiwgbmFtZWRCaW5kR3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleCwgIildXSIpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVj
dE5hbWUsICImICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBu
YW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1dIik7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMjQzLDEwICsyNDMsMTAgQEAgYm9vbCBFbnRyeVBvaW50U2NhZmZv
bGRpbmc6OmVtaXRCdWlsdElucwogICAgICAgICBhdXRvJiBidWlsdEluU2VtYW50aWMgPSBXVEY6
OmdldDxBU1Q6OkJ1aWx0SW5TZW1hbnRpYz4oKml0ZW0uc2VtYW50aWMpOwogICAgICAgICBhdXRv
IGludGVybmFsVHlwZSA9IGludGVybmFsVHlwZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYyk7
CiAgICAgICAgIGlmICghaW50ZXJuYWxUeXBlLmlzTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZChpbnRlcm5hbFR5cGUpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoaW50ZXJuYWxUeXBlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgnICcsIG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWUsICcgJywgYXR0cmlidXRlRm9yU2Vt
YW50aWMoYnVpbHRJblNlbWFudGljKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnLCBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1l
LCAnICcsIGF0dHJpYnV0ZUZvclNlbWFudGljKGJ1aWx0SW5TZW1hbnRpYykpOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6ZW1pdE1hbmdsZWRJCiAgICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBzdHJ1
Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBp
ZiAobV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT5uYW1lKCkgPT0gcGF0aFsw
XSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3BhcmFtZXRl
clZhcmlhYmxlc1tpXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtX3BhcmFt
ZXRlclZhcmlhYmxlc1tpXSk7CiAgICAgICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1bmN0
aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKS0+dW5pZnlOb2RlKCk7CiAgICAg
ICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKICAgICAgICAgICAg
ICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2Rl
KTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1h
bmdsZWRJCiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0
byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQocGF0aFtpXSk7CiAgICAgICAgIEFT
U0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsIG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3Ry
dWN0dXJlRWxlbWVudCgqbmV4dCkpOwogICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVs
bHB0cjsKICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgp
OwogICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKQEAgLTI5NCw3
ICsyOTQsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1hbmdsZWRPCiAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0
cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29tcG9uZW50KTsKICAgICAgICAgQVNTRVJUKG5leHQp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAg
ICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0LT50eXBlKCkudW5pZnlOb2RlKCk7CiAgICAgICAg
IGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewpAQCAtMzA4LDcgKzMwOCw3IEBA
IHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0TWFuZ2xlZE8KIHZvaWQgRW50cnlQb2lu
dFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyhTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9m
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
bV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFy
YW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFy
YW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xu
Iik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0udmFyaWFi
bGVOYW1lOwpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0VW5wYWNrUmUKICAgICAgICAgICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9ICptX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZhbHVlXS51bm5hbWVkVHlwZTsKICAgICAgICAg
ICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShkb3duY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlw
ZSgpKTsKIAotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAg
ICJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4n
LCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xuIiwKICAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iLAog
ICAgICAgICAgICAgICAgICAgICBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVt
cG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwg
Ii54O1xuIiwKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6
ZW1pdFVucGFja1JlCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgIiA9IHsg
IiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIikgfTtcbiIKICAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAgICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBhdGgoc3Ry
aW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7Cisg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiA9ICIsIHZhcmlhYmxlTmFtZSwg
Jy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5w
YWNrUmUKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpOwogCiAgICAgICAgIGVtaXRNYW5nbGVkSW5w
dXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtc
biIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbWFuZ2xlZFR5cGVOYW1l
LCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iKTsKICAgICB9CiB9CiAKQEAgLTM5MiwxNCArMzky
LDE0IEBAIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6VmVydGV4RW50cnkKIAogdm9pZCBW
ZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0
cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtcbiIpOworICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKICAgICBmb3Ig
KGF1dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlucykgewogICAgICAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBv
aW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5h
bWVkVHlwZSk7CiAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVu
dE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmli
dXRlSW5kZXg7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBt
YW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0cmli
dXRlSW5kZXgsICIpXV07XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAi
LCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1thdHRyaWJ1dGUoIiwgYXR0
cmlidXRlSW5kZXgsICIpXV07XG4iKTsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgIn07XG5cbiIKICAg
ICAgICAgInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgogICAgICk7CkBAIC00
MDgsNyArNDA4LDcgQEAgdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZQog
ICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJu
YWxUeXBlTmFtZTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ld
LmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFu
dGljKCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywg
YXR0cmlidXRlLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwg
aW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4i
KTsKICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ9O1xuXG4iCkBA
IC00MTksNyArNDE5LDcgQEAgdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRI
ZQogCiB2b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJp
bmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFt
ZSkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ2ZXJ0ZXggIiwgbV9yZXR1
cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1l
LCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7CisgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVu
Y3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1l
dGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKICAgICBlbWl0UmVzb3VyY2VTaWduYXR1cmUoc3Ry
aW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwogICAgIGVtaXRCdWlsdElu
c1NpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKQEAgLTQzMywyNSArNDMzLDI1IEBAIHZvaWQg
VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW4KICAgICAgICAgYXV0byYgcGF0aCA9
IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJ
dGVtc10ucGF0aDsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxl
bWVudE5hbWU7CiAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBh
dGgpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBtX3N0YWdl
SW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiO1xuIik7CiAgICAgfQogfQogCiB2b2lkIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZFZhcmlh
YmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBvdXRwdXRWYXJp
YWJsZU5hbWUpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3JldHVyblN0
cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwg
IjtcbiIpOwogICAgIGlmIChtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYm
ICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7CiAgICAgICAgIGF1
dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVs
ZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAi
ID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tp
XS5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRP
dXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7CiAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5
UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50
ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSk7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIs
IGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUpOwogICAgICAgICBlbWl0
TWFuZ2xlZE91dHB1dFBhdGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIik7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIik7XG4iKTsKICAgICB9CiB9CiAKQEAgLTQ5MSwxNCArNDkxLDE0IEBAIEZyYWdtZW50RW50
cnlQb2ludFNjYWZmb2xkaW5nOjpGcmFnbWVudEUKIAogdm9pZCBGcmFnbWVudEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIp
CiB7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJ
blN0cnVjdE5hbWUsICIge1xuIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInN0cnVjdCAi
LCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtcbiIpOwogICAgIGZvciAoYXV0byYgbmFtZWRTdGFn
ZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0g
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNb
bmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnVubmFtZWRUeXBlKTsKICAgICAg
ICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsKICAgICAgICAg
YXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwg
JyAnLCBlbGVtZW50TmFtZSwgIiBbW3VzZXIodXNlciIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xu
Iik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1l
LCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNlcih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07
XG4iKTsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgIn07XG5cbiIKICAgICAgICAgInN0cnVjdCAiLCBt
X3JldHVyblN0cnVjdE5hbWUsICIge1xuIgogICAgICk7CkBAIC01MDcsNyArNTA3LDcgQEAgdm9p
ZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdAogICAgICAgICBhdXRvJiBpbnRl
cm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAg
ICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAg
ICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGljKCpvdXRwdXRJdGVtLnNl
bWFudGljKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGlu
dGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwg
JyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKICAgICB9CiAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICJ9O1xuXG4iCkBAIC01MTgsNyArNTE4LDcgQEAg
dm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdAogCiB2b2lkIEZyYWdtZW50
RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmlu
Z0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVuY3Rpb25OYW1lKQogewotICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwg
JyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdl
SW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJmcmFnbWVudCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAn
KCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBb
W3N0YWdlX2luXV0iKTsKICAgICBlbWl0UmVzb3VyY2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwg
SW5jbHVkZVByZWNlZGluZ0NvbW1hOjpZZXMpOwogICAgIGVtaXRCdWlsdEluc1NpZ25hdHVyZShz
dHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKQEAgLTUzMiwyNSArNTMyLDI1IEBAIHZvaWQgRnJhZ21lbnRFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmVtaXQKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2lu
dEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsK
ICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CiAg
ICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJO
YW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xu
Iik7CiAgICAgfQogfQogCiB2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlu
cHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSkK
IHsKLSAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwg
JyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX3JldHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAg
ICAgaWYgKG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQ
b2ludEl0ZW1zLm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKICAgICAgICAgYXV0byYgZWxlbWVu
dE5hbWUgPSBtX25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUs
ICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1
dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkg
ewogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnRO
YW1lOwogICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0u
aW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1z
Lm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChv
dXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVO
YW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxU
eXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSk7CiAgICAgICAgIGVtaXRNYW5nbGVkT3V0
cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiKTtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIp
OwogICAgIH0KIH0KIApAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdEgKIAogdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nOjpl
bWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlv
bk5hbWUgZnVuY3Rpb25OYW1lKQogewotICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
Imtlcm5lbCB2b2lkICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpOwogICAgIGJvb2wgYWRkZWRU
b1NpZ25hdHVyZSA9IGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRl
UHJlY2VkaW5nQ29tbWE6Ok5vKTsKICAgICBlbWl0QnVpbHRJbnNTaWduYXR1cmUoc3RyaW5nQnVp
bGRlciwgYWRkZWRUb1NpZ25hdHVyZSA/IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzIDogSW5j
bHVkZVByZWNlZGluZ0NvbW1hOjpObyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCShyZXZpc2lvbiAyNDg4MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyB2
b2lkIGRlY2xhcmVGdW5jdGlvbihTdHJpbmdCdWlsZGUKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBm
dW5jdGlvbk1hcHBpbmcuZmluZCgmZnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgQVNTRVJUKGl0
ZXJhdG9yICE9IGZ1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRp
b24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7CisgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlY2xhcmF0aW9u
LnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKmZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpKTsKICAgICB9
CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKIH0KQEAgLTIzNyw3ICsyMzcsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIG1fZW50
cnlQb2ludFNjYWZmb2xkaW5nID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPT0gbnVsbHB0cik7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVu
Y3Rpb25EZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyID0gZnVu
Y3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXTsKICAgICAgICAgICAgIGlmIChpKQpAQCAt
MjQ1LDcgKzI0NSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5hZGQo
JnBhcmFtZXRlciwgcGFyYW1ldGVyTmFtZSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcGFyYW1l
dGVyLT50eXBlKCkpLCAnICcsIHBhcmFtZXRlck5hbWUpOworICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+
dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKTsKICAgICAgICAgfQogICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0
aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnJl
YWtDb250ZXh0OjpMb29wOgogICAgICAgICBBU1NFUlQobV9icmVha091dE9mQ3VycmVudExvb3BF
YXJseVZhcmlhYmxlKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAor
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgKm1fYnJlYWtPdXRP
ZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IHRydWU7XG4iCiAgICAgICAgICAgICAiYnJl
YWs7XG4iCiAgICAgICAgICk7CkBAIC0zMTAsMjAgKzMxMCwyMCBAQCB2b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiB7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8TWFu
Z2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1cnJlbnRM
b29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwogCi0gICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICJib29sICIsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUs
ICIgPSBmYWxzZTtcbiIsCiAgICAgICAgICJ3aGlsZSAodHJ1ZSkge1xuIgogICAgICk7CiAKICAg
ICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVm
b3JlQm9keSAmJiBjb25kaXRpb25FeHByZXNzaW9uKSB7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CisgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlmICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSBi
cmVhaztcbiIpOwogICAgIH0KIAogICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImRvIHtcbiIp
OwogICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPEJyZWFrQ29udGV4dD4+IGJyZWFrQ29udGV4dCht
X2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29udGV4dDo6TG9vcCk7CiAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGJvZHkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAifSB3aGlsZShmYWxzZSk7IFxuIgog
ICAgICAgICAiaWYgKCIsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIp
IGJyZWFrO1xuIgogICAgICk7CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OmVtaXRMb29wKAogCiAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9
PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAmJiBjb25kaXRpb25FeHByZXNzaW9u
KSB7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZh
bHVlKCksICIpIGJyZWFrO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlm
ICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSBicmVhaztcbiIpOwogICAgIH0KIAogICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIn0gXG4iKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCiB7CiAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgiaWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikge1xuIik7Cisg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikge1xu
Iik7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7CiAgICAgaWYg
KGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgifSBlbHNlIHtcbiIpOwpAQCAtMzgwLDkgKzM4MCw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgaWYgKG1fZW50cnlQb2ludFNjYWZmb2xkaW5n
KSB7CiAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpOwogICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRQYWNrKG1f
c3RyaW5nQnVpbGRlciwgdGFrZUxhc3RWYWx1ZSgpLCB2YXJpYWJsZU5hbWUpOwotICAgICAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJyZXR1cm4gIiwgdmFyaWFibGVOYW1l
LCAiO1xuIik7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJyZXR1cm4gIiwg
dmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJyZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xu
Iik7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJyZXR1cm4gIiwgdGFrZUxh
c3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoInJldHVybjtcbiIpOwogfQpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dp
dGNoU3RhdGVtZW50LnZhbHVlKCkpOwogCi0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJzd2l0Y2ggKCIsIHRha2VMYXN0VmFsdWUoKSwgIikgeyIpOworICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7Iik7CiAgICAgZm9y
IChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ9XG4iKTsKQEAgLTQwMCw5ICs0MDAsOSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQogewogICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVl
KCkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJjYXNlICIpOwor
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJjYXNlICIpOwogICAgICAgICBlbWl0Q29u
c3RhbnRFeHByZXNzaW9uU3RyaW5nKCpzd2l0Y2hDYXNlLnZhbHVlKCkpOwotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIjpcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCI6XG4iKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiZGVmYXVsdDpcbiIpOwogICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPEJyZWFrQ29udGV4
dD4+IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29udGV4dDo6U3dp
dGNoKTsKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUCiB7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShpbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFs
LnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlw
ZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVO
YW1lLCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpOwogICAgIGFwcGVuZFJp
Z2h0VmFsdWUoaW50ZWdlckxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQyNyw3ICs0
MjcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAgICAg
YXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRv
IG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh1bnNpZ25l
ZEludGVnZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRp
Y19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52
YWx1ZSgpLCAiKTtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVO
YW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFt
ZSwgIj4oIiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpOwogICAgIGFw
cGVuZFJpZ2h0VmFsdWUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0K
IApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGZsb2F0TGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBz
dGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGZsb2F0TGl0ZXJhbC52YWx1ZSgp
LCAiKTtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAn
ICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4o
IiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShm
bG9hdExpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYm9vbCBpc0FycmF5UmVm
ZXJlbmNlVHlwZSA9IGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7CiAK
ICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUobnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9
ICIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKG51bGxMaXRlcmFsLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIg
PSAiKTsKICAgICBpZiAoaXNBcnJheVJlZmVyZW5jZVR5cGUpCiAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoInsgbnVsbHB0ciwgMCB9O1xuIik7CiAgICAgZWxzZQpAQCAtNDU4LDcgKzQ1
OCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBh
dXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8g
bWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGJvb2xlYW5M
aXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIs
IG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIiA6
ICJmYWxzZSIsICIpO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlw
ZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVO
YW1lLCAiPigiLCBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7
XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGJvb2xlYW5MaXRlcmFsLCB2YXJpYWJsZU5hbWUp
OwogfQogCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRp
b25EZWZpbml0aW9uKCkpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsK
LSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcs
IHZhcmlhYmxlTmFtZSwgIiA9ICIsIG1hbmdsZWRUeXBlTmFtZSwgIjo6IiwgbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LmVudW1lcmF0aW9uTWVtYmVyKCkpLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFuZ2xlZFR5cGVO
YW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCpl
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7XG4iKTsKICAg
ICBhcHBlbmRSaWdodFZhbHVlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgdmFyaWFibGVOYW1l
KTsKIH0KIApAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICBhdXRvIHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1f
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KAogICAgICAgICAidGhyZWFkICIsIG1hbmdsZWRUeXBlTmFtZSwgIiogIiwgcG9pbnRlck5hbWUs
ICIgPSAmIiwgdGFrZUxhc3RWYWx1ZSgpLCAiLT4iLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clN0cnVjdHVyZUVsZW1lbnQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0RmllbGQoKSks
ICI7XG4iLAogICAgICAgICBtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFsdWVOYW1lLCAiID0gIiwg
IioiLCBwb2ludGVyTmFtZSwgIjtcbiIKICAgICApOwpAQCAtNTIzLDkgKzUyMyw5IEBAIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MCBJbXBsZW1lbnQgcXVhbGlm
aWVycy4KICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKSB7CiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigp
KTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZhcmlh
YmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIpOworICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVE
ZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFs
dWUoKSwgIjtcbiIpOwogICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0
aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0geyB9O1xuIik7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJp
YWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0geyB9O1xuIik7
CiB9CiAKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1l
bnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKQEAgLTUzNSw5ICs1MzUsOSBAQCB2
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwogICAgIGF1dG8gW3JpZ2h0TmFt
ZSwgcmlnaHROdWxsYWJpbGl0eV0gPSB0YWtlTGFzdFZhbHVlQW5kTnVsbGFiaWxpdHkoKTsKICAg
ICBpZiAobnVsbGFiaWxpdHkgPT0gTnVsbGFiaWxpdHk6OkNhbkJlTnVsbCkKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoIiwgcG9pbnRlck5hbWUsICIpICoiLCBw
b2ludGVyTmFtZSwgIiA9ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOworICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCJpZiAoIiwgcG9pbnRlck5hbWUsICIpICoiLCBwb2ludGVyTmFtZSwgIiA9
ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCIqIiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4i
KTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKiIsIHBvaW50ZXJOYW1lLCAiID0g
IiwgcmlnaHROYW1lLCAiO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZVdpdGhOdWxsYWJpbGl0
eShhc3NpZ25tZW50RXhwcmVzc2lvbiwgcmlnaHROYW1lLCByaWdodE51bGxhYmlsaXR5KTsKIH0K
IApAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKICAgICBNYW5nbGVkVmFyaWFibGVOYW1lIHJldHVybk5hbWU7CiAgICAgaWYgKCFpc1Zv
aWQpIHsKICAgICAgICAgcmV0dXJuTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXR1cm5O
YW1lLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCBy
ZXR1cm5OYW1lLCAiO1xuIik7CiAgICAgfQogCiAgICAgaWYgKGlzPEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpCkBAIC01NjIsMTIgKzU2
MiwxMiBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZjYWxsRXhwcmVzc2lvbi5m
dW5jdGlvbigpKTsKICAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5n
LmVuZCgpKTsKICAgICAgICAgaWYgKCFpc1ZvaWQpCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQocmV0dXJuTmFtZSwgIiA9ICIpOwotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoaXRlcmF0b3ItPnZhbHVlLCAnKCcpOworICAgICAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChyZXR1cm5OYW1lLCAiID0gIik7CisgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFyZ3VtZW50TmFtZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IGlmIChpKQogICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7Ci0g
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoYXJndW1lbnROYW1lc1tp
XSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKGFyZ3VtZW50TmFtZXNbaV0p
OwogICAgICAgICB9CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKICAg
ICB9CkBAIC01OTIsMTUgKzU5MiwxNSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUCiAgICAgYXV0byBbaW5wdXRQb2ludGVyLCBudWxsYWJpbGl0eV0gPSB0YWtlTGFz
dFZhbHVlQW5kTnVsbGFiaWxpdHkoKTsKICAgICBhdXRvIHJlc3VsdFZhbHVlID0gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byByZXN1bHRQb2ludGVyID0gZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpLnJlc29sdmVkVHlwZSgpKSwg
JyAnLCByZXN1bHRQb2ludGVyLCAiID0gIiwgaW5wdXRQb2ludGVyLCAiO1xuIiwKICAgICAgICAg
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNv
bHZlZFR5cGUoKSksICcgJywgcmVzdWx0VmFsdWUsICI7XG4iKTsKICAgICBpZiAobnVsbGFiaWxp
dHkgPT0gTnVsbGFiaWxpdHk6OkNhbkJlTnVsbCkgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
ICAgICAiaWYgKCIsIHJlc3VsdFBvaW50ZXIsICIpICIsIHJlc3VsdFZhbHVlLCAiID0gKiIsIGlu
cHV0UG9pbnRlciwgIjtcbiIsCiAgICAgICAgICAgICAiZWxzZSAiLCByZXN1bHRWYWx1ZSwgIiA9
IHsgfTtcbiIpOwogICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQocmVzdWx0VmFsdWUsICIgPSAqIiwgaW5wdXRQb2ludGVyLCAiO1xuIik7CisgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0VmFsdWUsICIgPSAqIiwgaW5wdXRQb2ludGVy
LCAiO1xuIik7CiAgICAgYXBwZW5kTGVmdFZhbHVlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbiwgcmVz
dWx0VmFsdWUsIHJlc3VsdFBvaW50ZXIsIG51bGxhYmlsaXR5KTsKIH0KIApAQCAtNjExLDcgKzYx
MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7CiAgICAgYXV0byByaWdo
dCA9IHRha2VMYXN0VmFsdWUoKTsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIGxlZnQpOworICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxFeHByZXNzaW9u
LnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBsZWZ0KTsKICAgICBz
d2l0Y2ggKGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgewogICAgIGNhc2UgQVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6VHlwZTo6QW5kOgogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
JiYgIik7CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQocmln
aHQsICI7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHJpZ2h0LCAiO1xuIik7CiAg
ICAgYXBwZW5kUmlnaHRWYWx1ZShsb2dpY2FsRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0K
IApAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFu
ZCgpKTsKICAgICBhdXRvIG9wZXJhbmQgPSB0YWtlTGFzdFZhbHVlKCk7CiAgICAgYXV0byB2YXJp
YWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxO
b3RFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwg
b3BlcmFuZCwgIjtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwgb3BlcmFuZCwgIjtcbiIpOwogICAgIGFwcGVuZFJp
Z2h0VmFsdWUobG9naWNhbE5vdEV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTY0
NCw3ICs2NDQsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAg
ICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
bWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7CiAgICAgaWYgKGlz
PEFTVDo6UG9pbnRlclR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVl
KCkucmVzb2x2ZWRUeXBlKCkpKSB7CiAgICAgICAgIGF1dG8gcHRyVmFsdWUgPSB0YWtlTGFzdFZh
bHVlKCk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgIG1hbmdsZWRUeXBlTmFtZSwgJyAn
LCB2YXJpYWJsZU5hbWUsICI7XG4iLAogICAgICAgICAgICAgImlmICgiLCBwdHJWYWx1ZSwgIikg
IiwgdmFyaWFibGVOYW1lLCAiID0geyAiLCBwdHJWYWx1ZSwgIiwgMX07XG4iLAogICAgICAgICAg
ICAgImVsc2UgIiwgdmFyaWFibGVOYW1lLCAiID0geyBudWxscHRyLCAwIH07XG4iCkBAIC02NTIs
MTAgKzY1MiwxMCBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAg
ICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAgICAgICAgYXV0byBsVmFsdWUg
PSB0YWtlTGFzdExlZnRWYWx1ZSgpLnZhbHVlOwogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBk
b3duY2FzdDxBU1Q6OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0
VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0geyAiLCBsVmFs
dWUsICItPmRhdGEoKSwgIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICIgfTtcbiIpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5cGUubnVtRWxlbWVu
dHMoKSwgIiB9O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBsVmFsdWUgPSB0YWtl
TGFzdExlZnRWYWx1ZSgpLnZhbHVlOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVl
LCAiLCAxIH07XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlw
ZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpOwog
ICAgIH0KICAgICBhcHBlbmRSaWdodFZhbHVlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24s
IHZhcmlhYmxlTmFtZSk7CiB9CkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChtYWtlUG9pbnRl
ckV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwogICAgIGF1dG8gW3BvaW50ZXIsIG51bGxhYmlsaXR5
XSA9IHRha2VMYXN0TGVmdFZhbHVlKCk7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG1ha2VQb2ludGVyRXhwcmVzc2lvbi5yZXNv
bHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgcG9pbnRlciwgIjtcbiIpOwor
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIiwgcG9pbnRlciwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWVXaXRoTnVsbGFi
aWxpdHkobWFrZVBvaW50ZXJFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUsIG51bGxhYmlsaXR5KTsK
IH0KIApAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1QKICAgICBhdXRvIGVsc2VCb2R5ID0gdGFrZUxhc3RWYWx1ZSgpOwogCiAgICAgYXV0
byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHRl
cm5hcnlFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAi
LCBjaGVjaywgIiA/ICIsIGJvZHksICIgOiAiLCBlbHNlQm9keSwgIjtcbiIpOworICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHRlcm5hcnlF
eHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBjaGVj
aywgIiA/ICIsIGJvZHksICIgOiAiLCBlbHNlQm9keSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0
VmFsdWUodGVybmFyeUV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTY5NSw3ICs2
OTUsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0
byBpdGVyYXRvciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFibGVSZWZlcmVuY2UudmFy
aWFibGUoKSk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdmFyaWFibGVNYXBwaW5nLmVuZCgp
KTsKICAgICBhdXRvIHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0aHJlYWQgIiwgbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSwgIiog
IiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgidGhyZWFkICIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSh2YXJpYWJsZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSksICIqICIsIHBvaW50ZXJOYW1l
LCAiID0gJiIsIGl0ZXJhdG9yLT52YWx1ZSwgIjtcbiIpOwogICAgIGFwcGVuZExlZnRWYWx1ZSh2
YXJpYWJsZVJlZmVyZW5jZSwgaXRlcmF0b3ItPnZhbHVlLCBwb2ludGVyTmFtZSwgTnVsbGFiaWxp
dHk6Ok5vdE51bGwpOwogfQogCkBAIC03MDMsMjcgKzcwMywyNyBAQCB2b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6ZW1pdENvbnN0CiB7CiAgICAgY29uc3RhbnRFeHByZXNzaW9uLnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRl
Z2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOworICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdKEFT
VDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHVuc2lnbmVkSW50ZWdlckxp
dGVyYWwudmFsdWUoKSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXShBU1Q6
OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoZmxvYXRMaXRlcmFsLnZhbHVlKCkpOworICAgICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChmbG9hdExpdGVyYWwudmFsdWUoKSk7CiAgICAgICAgIH0sCiAg
ICAgICAgIFsmXShBU1Q6Ok51bGxMaXRlcmFsJikgewotICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCJudWxscHRyIik7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJudWxscHRyIik7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXShBU1Q6OkJvb2xl
YW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgewogICAgICAgICAgICAgaWYgKGJvb2xlYW5MaXRl
cmFsLnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJ0cnVlIik7CisgICAgICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgidHJ1
ZSIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgiZmFsc2UiKTsKKyAgICAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJmYWxzZSIpOwogICAgICAgICB9LAogICAgICAgICBbJl0oQVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewogICAgICAgICAgICAg
QVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7
CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9u
RGVmaW5pdGlvbigpKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSksICI6OiIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlv
bk1lbWJlcigpKSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uRGVmaW5pdGlvbigpKSwgIjo6IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJh
dGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkp
KTsKICAgICAgICAgfQogICAgICkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRp
dmVGdW5jdGlvbldyaXRlci5jcHAJKHJldmlzaW9uIDI0ODgxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5j
dGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuVHlwZU5hbWUgPSB0
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVyblR5cGUpOwogCiAgICAgICAgIGlmICgh
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHJldHVybk5hbWUsICIgPSB7IH07XG4i
KTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJldHVybk5hbWUsICIgPSB7IH07
XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNDcsNyArMTQ3LDcg
QEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBpZiAo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpIHsKICAg
ICAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKICAgICAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0
ZXJUeXBlTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocGFyYW1ldGVyVHlwZSk7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBtZXRhbFBh
cmFtZXRlclR5cGVOYW1lLCAiIHggPSAiLCBhcmdzWzBdLCAiO1xuIik7CisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgie1xuIiwgbWV0YWxQYXJhbWV0ZXJUeXBlTmFtZSwgIiB4ID0g
IiwgYXJnc1swXSwgIjtcbiIpOwogCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXV0
byBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbiA9IFtdIChhdXRvJiB0eXBlKSB7CkBAIC0xNjAsMTQg
KzE2MCwxNCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRp
b25NZW1iZXJzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1plcm9DYXNlIHw9ICFt
ZW1iZXIuZ2V0KCkudmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoIiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwg
IjogYnJlYWs7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgICAgICAgIGNhc2UgIiwgbWVtYmVyLmdldCgpLnZhbHVlKCksICI6IGJyZWFrO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChoYXNaZXJvQ2FzZSwgaGFzWmVyb0Nhc2UpOwogICAgICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgICAgICBkZWZhdWx0OiB4ID0gMDsgYnJlYWs7IH1cbiIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAg
ICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVyblR5
cGVOYW1lLCAiPih4KTtcbn1cbiIpOwogCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzgsMTQg
KzE3OCwxNCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAg
ICAgICAgICB1bnNpZ25lZCBudW1Db2x1bW5zID0gbWF0cml4VHlwZS0+bnVtYmVyT2ZNYXRyaXhD
b2x1bW5zKCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gbnVtUm93cyB8fCBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gbnVtUm93cyAqIG51bUNvbHVtbnMpOwog
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBtZXRhbFJl
dHVyblR5cGVOYW1lLCAiIHg7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ7XG4iLCBtZXRhbFJldHVyblR5cGVOYW1lLCAiIHg7XG4iKTsKIAogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBhYmlkZSBieSB0aGUgbWVtb3J5IGxheW91dCB3ZSB1c2UgZm9yIG1hdHJpY2Vz
IGhlcmUuCiAgICAgICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpID09IG51bVJvd3MpIHsKICAgICAgICAgICAgICAgICAvLyBvcGVyYXRvciBt
YXRyaXhNeE4gKHZlY3Rvck4sIC4uLiwgdmVjdG9yTikKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1Db2x1bW5zOyArK2opCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ4WyIsIGogKiBudW1Sb3dzICsg
aSwgIl0gPSAiLCBhcmdzW2ldLCAiWyIsIGosICJdO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgieFsiLCBqICogbnVtUm93cyArIGksICJdID0gIiwg
YXJnc1tpXSwgIlsiLCBqLCAiXTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE5MywyMSArMTkzLDIxIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rp
b24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtQ29sdW1uczsg
KytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJ4WyIsIGogKiBudW1Sb3dzICsgaSwgIl0gPSAiLCBhcmdzW2luZGV4XSwgIjtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInhbIiwgaiAqIG51
bVJvd3MgKyBpLCAiXSA9ICIsIGFyZ3NbaW5kZXhdLCAiO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKHJldHVybk5hbWUsICIgPSB4O1xufVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChyZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5O
YW1lLCAiID0gIiwgbWV0YWxSZXR1cm5UeXBlTmFtZSwgIigiKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQocmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuVHlwZU5hbWUsICIoIik7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGkgPiAwKQog
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChhcmdzW2ldKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGFyZ3NbaV0pOwogICAgICAgICB9CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMSwxMyArMjIxLDEzIEBA
IHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byYg
dW5uYW1lZFBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPihwYXJhbWV0
ZXJUeXBlKTsKICAgICAgICAgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkUGFyYW1ldGVy
VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8mIGFycmF5UGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0
PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkUGFyYW1ldGVyVHlwZSk7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFycmF5UGFyYW1ldGVyVHlw
ZS5udW1FbGVtZW50cygpLCAiO1xuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRQYXJh
bWV0ZXJUeXBlKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICIs
IGFyZ3NbMF0sICIubGVuZ3RoO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDAs
NyArMjQwLDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAg
ICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7CiAgICAgICAgICAgICAgICAgYXV0byogc3Ry
dWN0dXJlRWxlbWVudCA9IHN0cnVjdHVyZURlZmluaXRpb24uZmluZChmaWVsZE5hbWUpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVj
dHVyZUVsZW1lbnQoKnN0cnVjdHVyZUVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpz
dHJ1Y3R1cmVFbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1l
ZFR5cGUpKTsKQEAgLTI1MiwxOCArMjUyLDE4IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24o
U3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgIGF1dG8gZmllbGROYW1lID0gbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvci4iX3N0ci5sZW5ndGgoKSk7
CiAgICAgICAgICAgICBmaWVsZE5hbWUgPSBmaWVsZE5hbWUuc3Vic3RyaW5nKDAsIGZpZWxkTmFt
ZS5sZW5ndGgoKSAtIDEpOwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAg
cmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICI7XG4iLAogICAgICAgICAgICAgICAgIHJldHVy
bk5hbWUsICcuJyk7CiAgICAgICAgICAgICBhcHBlbmRNYW5nbGVkRmllbGROYW1lKGZpZWxkTmFt
ZSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgPSAiLCBhcmdz
WzFdLCAiO1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgYXJn
c1sxXSwgIjtcbiIpOwogCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09
IDEpOwogICAgICAgICBhdXRvIGZpZWxkTmFtZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpLnN1YnN0cmluZygib3BlcmF0b3IuIl9zdHIubGVuZ3RoKCkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAnLicpOwogICAgICAgICBh
cHBlbmRNYW5nbGVkRmllbGROYW1lKGZpZWxkTmFtZSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCI7XG4iKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0
aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8gZmllbGROYW1lID0g
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciYuIl9z
dHIubGVuZ3RoKCkpOwogCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9
ICYoIiwgYXJnc1swXSwgIi0+Iik7CiAKICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSAqbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKQEAgLTI4NCw5
ICsyODQsOSBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAg
ICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwogICAgICAgICAgICAgYXV0byogc3RydWN0dXJlRWxl
bWVudCA9IHN0cnVjdHVyZURlZmluaXRpb24uZmluZChmaWVsZE5hbWUpOwogICAgICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZUVsZW1lbnQpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpzdHJ1
Y3R1cmVFbGVtZW50KSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpzdHJ1Y3R1cmVFbGVtZW50KSk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChm
aWVsZE5hbWUpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZmllbGROYW1lKTsK
IAogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogCkBAIC0yOTcsNyArMjk3
LDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBB
U1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIp
OwogICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KCpuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKSk7CiAKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gKCIsIGFyZ3NbMV0sICIgPCAiLCBhcmdzWzBd
LCAiLmxlbmd0aCkgPyAiLCAiICYoIiwgYXJnc1swXSwgIi5wb2ludGVyWyIsIGFyZ3NbMV0sICJd
KSA6IG51bGxwdHI7XG4iKTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm47CkBAIC0zMjcs
MTkgKzMyNywxOSBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAK
ICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUm93cyA9IGdldE1hdHJpeFR5cGUoKS5udW1i
ZXJPZk1hdHJpeFJvd3MoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ29sdW1ucyA9
IGdldE1hdHJpeFR5cGUoKS5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFtZSwgIiBy
ZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBt
ZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIik7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAg
ICAgICAgICAgICAgICAiICAgIGlmICgiLCBhcmdzWzFdLCAiID49ICIsIG51bWJlck9mUm93cywg
IikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31c
biIsCiAgICAgICAgICAgICAgICAgIiAgICByZXN1bHRbMF0gPSAiLCBhcmdzWzBdLCAnWycsIGFy
Z3NbMV0sICJdO1xuIiwKICAgICAgICAgICAgICAgICAiICAgIHJlc3VsdFsxXSA9ICIsIGFyZ3Nb
MF0sICdbJywgYXJnc1sxXSwgIiArICIsIG51bWJlck9mUm93cywgIl07XG4iKTsKIAogICAgICAg
ICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSAzKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICByZXN1bHRbMl0gPSAiLCBhcmdzWzBdLCAnWycsIGFy
Z3NbMV0sICIgKyAiLCBudW1iZXJPZlJvd3MgKiAyLCAiXTtcbiIpOworICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVzdWx0WzJdID0gIiwgYXJnc1swXSwgJ1snLCBh
cmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl07XG4iKTsKICAgICAgICAgICAgIGlm
IChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCIgICAgcmVzdWx0WzNdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAi
ICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl07XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgIHJlc3VsdFszXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwg
IiArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSByZXN1bHQ7XG4iLAogICAg
ICAgICAgICAgICAgICJ9IHdoaWxlICgwKTtcbiIpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzQ4
LDEyICszNDgsMTIgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgog
CiAgICAgICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwogCi0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUs
ICIgcmVzdWx0O1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8ge1xu
IiwgbWV0YWxSZXR1cm5OYW1lLCAiIHJlc3VsdDtcbiIpOwogCi0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
CiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIiA+PSAiLCBudW1FbGVtZW50
cywgIikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFr
O31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICByZXN1bHQgPSAiLCBhcmdzWzBdLCAiWyIsIGFy
Z3NbMV0sICJdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIiAg
ICAiLCByZXR1cm5OYW1lLCAiID0gcmVzdWx0O1xuIiwKICAgICAgICAgICAgICAgICAifSB3aGls
ZSAoMCk7XG4iKTsKICAgICAgICAgfQpAQCAtMzcyLDE4ICszNzIsMTggQEAgdm9pZCBpbmxpbmVO
YXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZSb3dzID0gZ2V0TWF0cml4VHlwZSgpLm51bWJlck9mTWF0cml4Um93cygpOwogICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gZ2V0TWF0cml4VHlwZSgpLm51bWJlck9mTWF0
cml4Q29sdW1ucygpOwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgbSA9ICIsIGFyZ3NbMF0sICI7XG4iLAorICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFtZSwg
IiBtID0gIiwgYXJnc1swXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgbWV0YWxQYXJhbWV0ZXIy
TmFtZSwgIiBpID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogCi0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAg
ICAgICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBudW1iZXJPZlJvd3MsICIpIHsiLCByZXR1
cm5OYW1lLCAiID0gbTtcbmJyZWFrO31cbiIsCiAgICAgICAgICAgICAgICAgIiAgICBtW2ldID0g
IiwgYXJnc1syXSwgIlswXTtcbiIsCiAgICAgICAgICAgICAgICAgIiAgICBtW2kgKyAiLCBudW1i
ZXJPZlJvd3MsICJdID0gIiwgYXJnc1syXSwgIlsxXTtcbiIpOwogICAgICAgICAgICAgaWYgKG51
bWJlck9mQ29sdW1ucyA+PSAzKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAyLCAiXSA9ICIsIGFyZ3NbMl0s
ICJbMl07XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIG1b
aSArICIsIG51bWJlck9mUm93cyAqIDIsICJdID0gIiwgYXJnc1syXSwgIlsyXTtcbiIpOwogICAg
ICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSA0KQotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAi
XSA9ICIsIGFyZ3NbMl0sICJbM107XG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBt
W2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXSA9ICIsIGFyZ3NbMl0sICJbM107XG4iKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICIgICAgIiwg
cmV0dXJuTmFtZSwgIiA9IG07XG4iLAogICAgICAgICAgICAgICAgICJ9IHdoaWxlKDApO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zOTUsMTMgKzM5NSwxMyBAQCB2b2lkIGlubGluZU5hdGl2
ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAKICAgICAgICAgICAgIHVuc2lnbmVkIG51bUVsZW1l
bnRzID0gdmVjdG9yU2l6ZSgpOwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgdiA9ICIsIGFyZ3NbMF0sICI7XG4i
LAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJu
TmFtZSwgIiB2ID0gIiwgYXJnc1swXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgbWV0YWxQYXJh
bWV0ZXIyTmFtZSwgIiBpID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBudW1FbGVtZW50cywgIikgeyIs
IHJldHVybk5hbWUsICIgPSB2O1xuYnJlYWs7fVxuIiwKICAgICAgICAgICAgICAgICAiICAgIHZb
aV0gPSAiLCBhcmdzWzJdLCAiO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAg
ICAgICAgIiAgICAiLCByZXR1cm5OYW1lLCAiID0gdjtcbiIsCiAgICAgICAgICAgICAgICAgIn0g
d2hpbGUoMCk7XG4iKTsKICAgICAgICAgfQpAQCAtNDE0LDEyICs0MTQsMTIgQEAgdm9pZCBpbmxp
bmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBhdXRvIG1ldGFsUmV0dXJu
VHlwZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi50eXBlKCkpOwogICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBtYXRyaXhUeXBl
ID0gYXNNYXRyaXhUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSkgewotICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICJ7XG4iLCBtZXRh
bFJldHVyblR5cGUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iLAogICAgICAgICAgICAgICAgICAg
ICAiZm9yIChzaXplX3QgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB4W2ldID0gIiwgb3BlcmF0
b3JOYW1lLCAieFtpXTtcbiIsCiAgICAgICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSB4
O1xufVxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgICAgICJ7XG4iLCBtZXRhbFJldHVyblR5cGUsICIgeCA9ICIs
IGFyZ3NbMF0sICI7XG4iLCAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICIs
IG9wZXJhdG9yTmFtZSwgIng7XG59XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTQzMCwxMyArNDMw
LDEzIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAg
aWYgKGF1dG8qIGxlZnRNYXRyaXggPSBhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byog
cmlnaHRNYXRyaXggPSBhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpWzFdLT50eXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgLy8gbWF0cml4IDxvcD4g
bWF0cml4Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAg
IntcbiIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4O1xuIiwKICAgICAgICAgICAgICAgICAgICAgImZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9ICIsIGFyZ3NbMF0sICJb
aV0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICJbaV07XG4iLAogICAgICAgICAgICAg
ICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBtYXRyaXggPG9wPiBzY2FsYXIKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5UeXBlLCAi
IHg7XG4iLAogICAgICAgICAgICAgICAgICAgICAiZm9yIChzaXplX3QgaSA9IDA7IGkgPCB4LnNp
emUoKTsgKytpKSB4W2ldID0gIiwgYXJnc1swXSwgIltpXSAiLCBvcGVyYXRvck5hbWUsICcgJywg
YXJnc1sxXSwgIjtcbiIsCiAgICAgICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSB4O1xu
fVxuIik7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJp
bmdCdWlsZGVyJgogICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHJpZ2h0TWF0cml4ID0gYXNNYXRy
aXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgp
KSkgewogICAgICAgICAgICAgQVNTRVJUKCFhc01hdHJpeFR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKICAgICAgICAgICAgIC8vIHNjYWxh
ciA8b3A+IG1hdHJpeAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICJ7XG4i
LCBtZXRhbFJldHVyblR5cGUsICIgeDtcbiIsCiAgICAgICAgICAgICAgICAgImZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9ICIsIGFyZ3NbMF0sICcgJywgb3BlcmF0
b3JOYW1lLCAnICcsIGFyZ3NbMV0sICJbaV07XG4iLAogICAgICAgICAgICAgICAgIHJldHVybk5h
bWUsICIgPSB4O1xufVxuIik7CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVG
dW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgLy8gdmVjdG9yIDxvcD4gdmVjdG9y
CiAgICAgICAgICAgICAvLyB2ZWN0b3IgPG9wPiBzY2FsYXIKICAgICAgICAgICAgIC8vIHNjYWxh
ciA8b3A+IHZlY3RvcgotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgIHJldHVy
bk5hbWUsICIgPSAiLCBhcmdzWzBdLCAnICcsIG9wZXJhdG9yTmFtZSwgJyAnLCBhcmdzWzFdLCAi
O1xuIik7CiAgICAgICAgIH0KIApAQCAtNDg2LDE0ICs0ODYsMTQgQEAgdm9pZCBpbmxpbmVOYXRp
dmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICB8fCBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAiYXNmbG9hdCIKICAgICAgICAgfHwgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkgPT0gImxlbmd0aCIpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAg
ICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgbWFwRnVuY3Rpb25OYW1lKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ubmFtZSgpKSwgJygnLCBhcmdzWzBdLCAiKTtcbiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgp
ID09ICJwb3ciIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJhdGFuMiIp
IHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
LnNpemUoKSA9PSAyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0g
IiwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCksICIoIiwgYXJnc1swXSwgIiwgIiwg
YXJnc1sxXSwgIik7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUwMiwxMiArNTAy
LDEyIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAg
QVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAz
KTsKICAgICAgICAgaWYgKGFzTWF0cml4VHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5
cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5UeXBlID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUmV0dXJuVHlwZSwg
IiB4O1xuIiwKICAgICAgICAgICAgICAgICAiZm9yIChzaXplX3QgaSA9IDA7IGkgPCB4LnNpemUo
KTsgKytpKSB4W2ldID0gY2xhbXAoIiwgYXJnc1swXSwgIltpXSwgIiwgYXJnc1sxXSwgIltpXSwg
IiwgYXJnc1syXSwgIltpXSk7IiwKICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtc
bn1cbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAg
ICAgICAgIHJldHVybk5hbWUsICIgPSBjbGFtcCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAi
LCAiLCBhcmdzWzJdLCAiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTUz
OSw3ICs1MzksNyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAg
ICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN0YXJ0c1dpdGgoIkludGVy
bG9ja2VkIl9zdHIpKSB7CiAgICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5h
bWUoKSA9PSAiSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UiKSB7CiAgICAgICAgICAgICBBU1NF
UlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOwot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICJhdG9taWNfY29tcGFyZV9leGNo
YW5nZV93ZWFrX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICYiLCBhcmdzWzFdLCAiLCAiLCBhcmdz
WzJdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIiwK
ICAgICAgICAgICAgICAgICAnKicsIGFyZ3NbM10sICIgPSAiLCBhcmdzWzFdLCAiO1xuIik7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVG
dW5jdGlvbihTdHJpbmdCdWlsZGVyJgogCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMyk7CiAgICAgICAgIGF1dG8gbmFtZSA9
IGF0b21pY05hbWUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJJ
bnRlcmxvY2tlZCJfc3RyLmxlbmd0aCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgJyon
LCBhcmdzWzJdLCAiID0gYXRvbWljXyIsIG5hbWUsICJfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwg
IiwgYXJnc1sxXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC01NjEsMTkgKzU2MSwxOSBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9u
KFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGF1dG8mIHJldHVyblR5cGUgPSBkb3duY2FzdDxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgpKSk7CiAgICAgICAgIGF1dG8gcmV0
dXJuVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKHJldHVyblR5cGUpOwogCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KAogICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuc2FtcGxlKCIsIGFy
Z3NbMV0sICIsICIpOwogCiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgp
KSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoYXJnc1syXSwgJy4nLCAieHl6dyJf
c3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiLCAiLCBhcmdzWzJd
LCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1syXSwgJy4nLCAieHl6dyJf
c3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiLCAiLCBhcmdzWzJd
LCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoYXJnc1syXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzJdKTsK
ICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUo
KSA9PSA0KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCBh
cmdzWzNdKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIsIGFyZ3NbM10p
OwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSIpOwogICAgICAgICBpZiAoIXRleHR1
cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3Ro
KSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLiIsICJ4eXp3Il9zdHIuc3Vi
c3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiO1xuIik7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtNTk2LDMxICs1OTYsMzEgQEAgdm9p
ZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgU3RyaW5n
IGRpbWVuc2lvbnNbXSA9IHsgIndpZHRoIl9zdHIsICJoZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIg
fTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGgg
LSAxOyArK2kpIHsKICAgICAgICAgICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vi
c3RyaW5nKGksIDEpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoIiAgICBpZiAoIiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0
PHVpbnQzMl90PigiLCBhcmdzWzFdLCAnLicsIHN1ZmZpeCwgIikgPj0gIiwgYXJnc1swXSwgIi5n
ZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAnLicsIHN1ZmZpeCwgIikgPj0gIiwgYXJnc1sw
XSwgIi5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1l
dGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVu
Z3RoIC0gMSwgMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIg
ICAgaWYgKCIsIGFyZ3NbMV0sICcuJywgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oIiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X2Fy
cmF5X3NpemUoKSkgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7
IGJyZWFrO31cbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAo
IiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pigi
LCBhcmdzWzFdLCAnLicsIHN1ZmZpeCwgIikgPj0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6
ZSgpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7
fVxuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobG9jYXRpb25WZWN0b3JM
ZW5ndGggPT0gMSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCIgICAgaWYgKCIsIGFyZ3NbMV0sICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBh
cmdzWzFdLCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpKSB7ICIsIHJldHVybk5hbWUs
ICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFrO31cbiIpOworICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMV0sICIgPCAwIHx8IHN0
YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF93
aWR0aCgpKSB7ICIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJy
ZWFrO31cbiIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIi54IDwgMCB8fCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIi54KSA+PSAiLCBhcmdzWzBdLCAiLmdl
dF93aWR0aCgpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsg
YnJlYWs7fVxuIgogICAgICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCBhcmdzWzFdLCAiLnkg
PCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiLnkpID49ICIsIGFyZ3Nb
MF0sICIuZ2V0X2hlaWdodCgpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFt
ZSwgIigwKTsgYnJlYWs7fVxuIik7CiAKICAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25WZWN0
b3JMZW5ndGggPj0gMykKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAiLnogPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQz
Ml90PigiLCBhcmdzWzFdLCAiLnopID49ICIsIGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkpIHsiLCBy
ZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAoIiwgYXJnc1sx
XSwgIi56IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIi56KSA+PSAi
LCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIHJldHVybk5hbWUsICIg
PSAiLCBhcmdzWzBdLCAiLnJlYWQoIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
ICAgIiwgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIucmVhZCgiKTsKICAgICAgICAgaWYg
KHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2Nh
dGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAn
KCcsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JM
ZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmlu
Zyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgg
LSAxKSwgJygnLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9u
VmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3NbMV0sICcuJywgInh5enciX3N0ci5z
dWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSwgJyknKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50IiwgdmVj
dG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzFdLCAnKScpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMV0sICcpJyk7CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUo
KSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoJy4nLCAieHl6dyJf
c3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9y
TGVuZ3RoKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgIjtc
biIKICAgICAgICAgICAgICJ9IHdoaWxlKDApO1xuIik7CkBAIC02MzAsMTQgKzYzMCwxNCBAQCB2
b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAKICAgICBpZiAobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImxvYWQiKSB7CiAgICAgICAgIEFTU0VSVChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKAogICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9IGF0b21pY19sb2FkX2V4cGxpY2l0
KCIsIGFyZ3NbMF0sICIsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJzdG9yZSIpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSAyKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAgICAgICAiYXRvbWlj
X3N0b3JlX2V4cGxpY2l0KCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIsIG1lbW9yeV9vcmRl
cl9yZWxheGVkKTtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjczLDM2ICs2NzMs
MzYgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChpbmRleCA9PSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCkpOwogCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgImlmICgiLCB3aWR0
aE5hbWUsICIpXG4iCiAgICAgICAgICAgICAiICAgICoiLCB3aWR0aE5hbWUsICIgPSAiLCBhcmdz
WzBdLCAiLmdldF93aWR0aCgiKTsKIAogICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCi0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3NbMV0pOworICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpO1xuIik7CiAgICAgICAgIGlmIChoZWlnaHROYW1lKSB7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgKmhlaWdodE5hbWUsICIpXG4iCiAgICAg
ICAgICAgICAgICAgIiAgICAgICAgKiIsICpoZWlnaHROYW1lLCAiID0gIiwgYXJnc1swXSwgIi5n
ZXRfaGVpZ2h0KCIpOwogICAgICAgICAgICAgaWYgKGhhc01pcExldmVsKQotICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoYXJnc1sxXSk7CisgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXB0aE5hbWUpIHsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCAqZGVwdGhO
YW1lLCAiKVxuIgogICAgICAgICAgICAgICAgICIgICAgICAgICoiLCAqZGVwdGhOYW1lLCAiID0g
IiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoIik7CiAgICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwp
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChhcmdzWzFdKTsK
KyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChhcmdzWzFdKTsKICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGVsZW1lbnRzTmFtZSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAogICAgICAgICAgICAgICAgICIg
ICAgaWYgKCIsICplbGVtZW50c05hbWUsICIpXG4iCiAgICAgICAgICAgICAgICAgIiAgICAgICAg
KiIsICplbGVtZW50c05hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCk7XG4i
KTsKICAgICAgICAgfQogICAgICAgICBpZiAobnVtYmVyT2ZMZXZlbHNOYW1lKSB7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgKm51bWJlck9mTGV2ZWxz
TmFtZSwgIilcbiIKICAgICAgICAgICAgICAgICAiICAgICAgICAqIiwgKm51bWJlck9mTGV2ZWxz
TmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X251bV9taXBfbGV2ZWxzKCk7XG4iKTsKICAgICAg
ICAgfQpAQCAtNzYyLDMwICs3NjIsMzAgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJp
bmdCdWlsZGVyJgogICAgICAgICAgICAgU3RyaW5nIGRpbWVuc2lvbnNbXSA9IHsgIndpZHRoIl9z
dHIsICJoZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIgfTsKICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxOyArK2kpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGksIDEpOwotICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAoIiwgYXJnc1syXSwgIi4i
LCBzdWZmaXgsICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSBi
cmVhaztcbiIpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYg
KCIsIGFyZ3NbMl0sICIuIiwgc3VmZml4LCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVu
c2lvbnNbaV0sICIoKSkgYnJlYWs7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1
dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAx
LCAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAo
IiwgYXJnc1syXSwgJy4nLCBzdWZmaXgsICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6
ZSgpKSBicmVhaztcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBp
ZiAoIiwgYXJnc1syXSwgJy4nLCBzdWZmaXgsICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlf
c2l6ZSgpKSBicmVhaztcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGxv
Y2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0
X3dpZHRoKCkpIGJyZWFrO1xuIik7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAgICBpZiAoIiwgYXJnc1syXSwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpKSBi
cmVhaztcbiIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1syXSwgIi54ID49ICIsIGFy
Z3NbMF0sICIuZ2V0X3dpZHRoKCkpIGJyZWFrO1xuIgogICAgICAgICAgICAgICAgICAgICAiICAg
IGlmICgiLCBhcmdzWzJdLCAiLnkgPj0gIiwgYXJnc1swXSwgIi5nZXRfaGVpZ2h0KCkpIGJyZWFr
O1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAo
IiwgYXJnc1syXSwgIi56ID49ICIsIGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkpIGJyZWFrO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFy
Z3NbMl0sICIueiA+PSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSBicmVhaztcbiIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoIiAgICAiLCBhcmdzWzBdLCAiLndyaXRlKHZlYzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIs
IDQ+KCIsIGFyZ3NbMV0pOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIGFy
Z3NbMF0sICIud3JpdGUodmVjPCIsIG1ldGFsSW5uZXJUeXBlTmFtZSwgIiwgND4oIiwgYXJnc1sx
XSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNCAtIGl0ZW1WZWN0b3JMZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIDAiKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiksICIpOwogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0
dXJlQXJyYXkoKSkgewogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4g
MSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50IiwgdmVj
dG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1syXSwgJy4nLCAi
eHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwgdWlu
dCgiLCBhcmdzWzJdLCAiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVu
Z3RoIC0gMSwgMSksICcpJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidWlu
dCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAnKCcsIGFyZ3NbMl0s
ICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwg
IiksIHVpbnQoIiwgYXJnc1syXSwgIi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZl
Y3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25W
ZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMl0sICcpJyk7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCksICco
JywgYXJnc1syXSwgJyknKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCiAgICAgICAg
ICAgICAiKTtcbiIKICAgICAgICAgICAgICJ9IHdoaWxlKDApO1xuIik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xUeXBlTmFtZXIuY3BwCShyZXZpc2lvbiAyNDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdmlzaXQoQVNU
OjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwgbV9t
YW5nbGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzdHJ1Y3QgIiwgbV9tYW5nbGVkTmFtZUZvck5h
bWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOwogICAgIH0KIAogICAgIHN0ZDo6
ZnVuY3Rpb248TWFuZ2xlZE9yTmF0aXZlVHlwZU5hbWUoQVNUOjpOYW1lZFR5cGUmKT4gbV9tYW5n
bGVkTmFtZUZvck5hbWVkVHlwZTsKQEAgLTM2MiwxOSArMzYyLDE5IEBAIHZvaWQgVHlwZU5hbWVy
OjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6Oktp
bmQ6OlR5cGVSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8
UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKS5uYW1lZFR5cGUoKTsKICAg
ICAgICAgZW1pdE5hbWVkVHlwZURlZmluaXRpb24oc3RyaW5nQnVpbGRlciwgbmFtZWRUeXBlLCBl
bWl0dGVkTmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcyk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVk
VHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZShu
YW1lZFR5cGUpLCAnICcsIGJhc2VUeXBlTmFtZU5vZGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQ
b2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8UG9pbnRlclR5
cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5h
bWVOb2RlLnBhcmVudCgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
dHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgcG9p
bnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1hbmds
ZWROYW1lKCksICI7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInR5cGVkZWYg
IiwgdG9TdHJpbmcocG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIHBvaW50ZXJUeXBl
LnBhcmVudCgpLT5tYW5nbGVkTmFtZSgpLCAiKiAiLCBwb2ludGVyVHlwZS5tYW5nbGVkTmFtZSgp
LCAiO1xuIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNl
VHlwZSA9IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVO
b2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgKICAgICAgICAgICAgICJzdHJ1Y3QgIiwgYXJyYXlSZWZlcmVuY2VUeXBlLm1hbmdsZWRO
YW1lKCksICJ7IFxuIgogICAgICAgICAgICAgIiAgICAiLCB0b1N0cmluZyhhcnJheVJlZmVyZW5j
ZVR5cGUuYWRkcmVzc1NwYWNlKCkpLCAnICcsIGFycmF5UmVmZXJlbmNlVHlwZS5wYXJlbnQoKS0+
bWFuZ2xlZE5hbWUoKSwgIiogcG9pbnRlcjtcbiIKICAgICAgICAgICAgICIgICAgdWludDMyX3Qg
bGVuZ3RoO1xuIgpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1l
ZFR5cGVEZWZpbml0aW8KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OiB7
CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFycmF5VHlwZU5hbWVOb2RlPihi
YXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50
KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmIGFycmF5
PCIsIGFycmF5VHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlUeXBlLm51
bUVsZW1lbnRzKCksICI+ICIsIGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmIGFycmF5PCIsIGFycmF5VHlwZS5wYXJl
bnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCksICI+ICIs
IGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBkZWZhdWx0OgpAQCAtNDA2LDIxICs0MDYsMjEgQEAgdm9pZCBUeXBlTmFtZXI6OmVtaXRO
YW1lZFR5cGVEZWZpbml0aW9uKAogICAgIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bj4obmFtZWRUeXBlKSkgewogICAgICAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBk
b3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAg
YXV0byYgYmFzZVR5cGUgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpLnVuaWZ5Tm9kZSgp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJlbnVtIGNsYXNzICIsIG1h
bmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5h
bWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZW51bSBjbGFzcyAiLCBtYW5nbGVkTmFtZUZv
clR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIsIG1hbmdsZWROYW1lRm9yVHlwZShk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwgIiB7XG4iKTsKICAgICAgICAgZm9y
IChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJh
dGlvbk1lbWJlcnMoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
IiAgICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uTWVtYmVy
KSwgIiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIsXG4iKTsKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JFbnVtZXJh
dGlvbk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIgPSAiLCBlbnVtZXJhdGlvbk1lbWJlci5n
ZXQoKS52YWx1ZSgpLCAiLFxuIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xu
Iik7CiAgICAgfSBlbHNlIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRU
eXBlKSkgewogICAgICAgICAvLyBOYXRpdmUgdHlwZXMgYWxyZWFkeSBoYXZlIGRlZmluaXRpb25z
LiBUaGVyZSdzIG5vdGhpbmcgdG8gZG8uCiAgICAgfSBlbHNlIGlmIChpczxBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24+KG5hbWVkVHlwZSkpIHsKICAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5p
dGlvbiA9IGRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1hbmdsZWROYW1l
Rm9yVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIiB7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoInN0cnVjdCAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRGVmaW5p
dGlvbiksICIge1xuIik7CiAgICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0
cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0
dXJlRWxlbWVudC50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChz
dHJ1Y3R1cmVFbGVtZW50KSwgIjtcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpLCAn
ICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1cmVFbGVtZW50KSwgIjtc
biIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5p
dGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
dHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKSwgJyAn
LCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVm
aW5pdGlvbi50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbiks
ICI7XG4iKTsKICAgICB9CiAgICAgZW1pdHRlZE5hbWVkVHlwZXMuYWRkKCZuYW1lZFR5cGUpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuY3BwCShyZXZpc2lvbiAyNDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAs
NyArMTgwLDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZQogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
ICIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjb250ZW50RW5jb2RpbmcpOwogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXNvdXJjZS51cmwpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChyZXNvdXJjZS51cmwuc3RyaW5nKCkpOwogICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjQ4ODE5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNjgsMTIgKzEzNjgsMTIgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmxvZ0xheWVySW5mbwogICAgIGFic29sdXRlQm91bmRzLm1vdmUobGF5ZXIub2Zmc2V0RnJv
bUFuY2VzdG9yKG1fcmVuZGVyVmlldy5sYXllcigpKSk7CiAgICAgCiAgICAgU3RyaW5nQnVpbGRl
ciBsb2dTdHJpbmc7Ci0gICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBwZW5kKHBhZCgnICcsIDEyICsg
ZGVwdGggKiAyLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZsYXllcikpKSwgIiBp
ZCAiLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlMYXllcklEKCksICIgKCIsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy54KCkudG9GbG9hdCgpLCAz
KSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueSgpLnRv
RmxvYXQoKSwgMyksICctJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91
bmRzLm1heFgoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0
aChhYnNvbHV0ZUJvdW5kcy5tYXhZKCkudG9GbG9hdCgpLCAzKSwgIikgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFdpZHRoKGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgLyAx
MDI0LCAyKSwgIktCIik7CisgICAgbG9nU3RyaW5nLmFwcGVuZChwYWQoJyAnLCAxMiArIGRlcHRo
ICogMiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmbGF5ZXIpKSksICIgaWQgIiwg
YmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpLCAiICgiLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueCgpLnRvRmxvYXQoKSwgMyksICcs
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLnkoKS50b0Zsb2F0
KCksIDMpLCAnLScsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5t
YXhYKCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJz
b2x1dGVCb3VuZHMubWF4WSgpLnRvRmxvYXQoKSwgMyksICIpICIsIEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRXaWR0aChiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIC8gMTAyNCwg
MiksICJLQiIpOwogCiAgICAgaWYgKCFsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuaGFzQXV0b1pJ
bmRleCgpKQotICAgICAgICBsb2dTdHJpbmcuZmxleGlibGVBcHBlbmQoIiB6LWluZGV4OiAiLCBs
YXllci5yZW5kZXJlcigpLnN0eWxlKCkuekluZGV4KCkpOworICAgICAgICBsb2dTdHJpbmcuYXBw
ZW5kKCIgei1pbmRleDogIiwgbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnpJbmRleCgpKTsKIAot
ICAgIGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVuZCgiICgiLCBsb2dSZWFzb25zRm9yQ29tcG9zaXRp
bmcobGF5ZXIpLCAiKSAiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5kKCIgKCIsIGxvZ1JlYXNvbnNG
b3JDb21wb3NpdGluZyhsYXllciksICIpICIpOwogCiAgICAgaWYgKGJhY2tpbmctPmdyYXBoaWNz
TGF5ZXIoKS0+Y29udGVudHNPcGFxdWUoKSB8fCBiYWNraW5nLT5wYWludHNJbnRvQ29tcG9zaXRl
ZEFuY2VzdG9yKCkgfHwgYmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkgfHwgYmFja2luZy0+YmFj
a2dyb3VuZExheWVyKCkpIHsKICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgnWycpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjQ4ODE5KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDA5
LDcgKzUwMDksNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpvbmdvaW5nTG9hZHNEZXNjcmlwdGlvCiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAKICAgICAgICAgZm9yIChhdXRvJiBpbmZvIDog
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmludGVybWVkaWF0ZUxvYWRJ
bmZvcm1hdGlvbkZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAgICAg
ICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnWycsIChpbnQpaW5mby50eXBlLCAiLFwiIiwg
aW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiXCIsXCIiLCBpbmZvLnJlcXVlc3QuaHR0cE1l
dGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAnXScpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCAoaW50KWluZm8udHlwZSwgIixcIiIsIGluZm8u
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIlwiLFwiIiwgaW5mby5yZXF1ZXN0Lmh0dHBNZXRob2Qo
KSwgIlwiLCIsIGluZm8ucmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgJ10nKTsKIAogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg4
MTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQoLi4uKSB0byBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFtZSBmcm9tIFN0cmluZ0J1aWxk
ZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZCguLi4pLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpkdW1wSGlzdG9yeUl0ZW0pOgorICAgICAgICBXZSBoYXZlIHRvIGV4cGxp
Y2l0bHkgYWNjZXNzIHRoZSB1bmRlcmx5aW5nIFN0cmluZyBvZiB0aGUgVVJMIHJhdGhlciB0aGFu
CisgICAgICAgIHJlbHlpbmcgb24gdGhlIGltcGxpY2l0IGNvbnZlcnNpb24gc2luY2UgaXQgaXMg
bm93IGFtYmlndW91cyB3aGljaCBhcHBlbmQoLi4uKQorICAgICAgICBvdmVybG9hZCBzaG91bGQg
YmUgdXNlZC4KKwogMjAxOS0wOC0xNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29udGVudCBpbiA8aWZyYW1lPiBzaG91bGQgb3ZlcnJpZGUgInRvdWNoLWFj
dGlvbiIgc2V0IGluIGVtYmVkZGluZyBkb2N1bWVudApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI0ODgxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODcwLDcgKzE4NzAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wSGlzdG9yeUl0ZW0oSGlzdG9yeUl0
ZW0mCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGZpbGUgdGVzdCk6Iik7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3Rh
cnQpKTsKICAgICB9IGVsc2UKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodXJsKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodXJsLnN0cmluZygpKTsKICAgICAKICAgICBhdXRv
JiB0YXJnZXQgPSBpdGVtLnRhcmdldCgpOwogICAgIGlmICh0YXJnZXQubGVuZ3RoKCkpIHsKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI0ODgxOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTA4LTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW5hbWUgU3RyaW5nQnVpbGRlcjo6ZmxleGlibGVBcHBlbmQoLi4uKSB0byBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAwNzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGwgc2l0ZXMgZm9yIHJlbmFtZSBmcm9tIFN0cmluZ0J1aWxk
ZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZCguLi4pLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRl
ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wOC0xNiAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgSm9obiBXaWxh
bmRlciBhcyBXZWJLaXQgUmV2aWV3ZXIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyNDg4MTkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDI1ICsxMTYsMjUgQEAgVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgQXBwZW5kKQogICAg
IH0KIH0KIAotVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgRmxleGlibGVBcHBlbmQpCitURVNUKFN0
cmluZ0J1aWxkZXJUZXN0LCBWYXJpYWRpY0FwcGVuZCkKIHsKICAgICB7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZChTdHJpbmco
IjAxMjM0NTY3ODkiKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZygiMDEyMzQ1Njc4
OSIpKTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODkiLCBidWlsZGVy
KTsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiYWJjZCIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgiYWJjZCIpOwogICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1
Njc4OWFiY2QiLCBidWlsZGVyKTsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnZScp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgnZScpOwogICAgICAgICBleHBlY3RCdWlsZGVyQ29u
dGVudCgiMDEyMzQ1Njc4OWFiY2RlIiwgYnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuZmxleGli
bGVBcHBlbmQoIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiIik7CiAgICAgICAgIGV4cGVj
dEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWlsZGVyKTsKICAgICB9CiAKICAg
ICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5mbGV4
aWJsZUFwcGVuZChTdHJpbmcoIjAxMjM0NTY3ODkiKSwgImFiY2QiLCAnZScsICIiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKCIwMTIzNDU2Nzg5IiksICJhYmNkIiwgJ2UnLCAiIik7
CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGUiLCBidWlsZGVy
KTsKLSAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZChTdHJpbmcoIkEiKSwgIkIiLCAnQycs
ICIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKCJBIiksICJCIiwgJ0MnLCAiIik7
CiAgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwMTIzNDU2Nzg5YWJjZGVBQkMiLCBidWls
ZGVyKTsKICAgICB9CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>