<?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>225137</bug_id>
          
          <creation_ts>2021-04-27 21:21:13 -0700</creation_ts>
          <short_desc>Suppress warnings for %{private}s format specifier</short_desc>
          <delta_ts>2021-04-28 16:23:18 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207478</see_also>
          <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="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754902</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-04-27 21:21:13 -0700</bug_when>
    <thetext>../../Source/WebKit\NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3618:170: warning: using &apos;private&apos; format specifier annotation outside of os_log()/os_trace() [-Wformat]
        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::markAttributedPrivateClickM
easurementsAsExpiredForTesting, error message: %{private}s&quot;, this, m_database.lastErrorMsg());

                                               ~~^~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754904</commentid>
    <comment_count>1</comment_count>
      <attachid>427235</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-04-27 21:31:52 -0700</bug_when>
    <thetext>Created attachment 427235
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754910</commentid>
    <comment_count>2</comment_count>
      <attachid>427236</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-04-27 21:58:40 -0700</bug_when>
    <thetext>Created attachment 427236
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755218</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-28 16:22:26 -0700</bug_when>
    <thetext>Committed r276740 (237140@main): &lt;https://commits.webkit.org/237140@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427236.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755219</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-28 16:23:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/77291122&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427235</attachid>
            <date>2021-04-27 21:31:52 -0700</date>
            <delta_ts>2021-04-27 21:58:40 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>74930</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaAppbmRleCBjNzk0MGVjNGRlYTQuLjEwOTM0YWU0MDlmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuaApAQCAtNTIxLDYgKzUyMSw3IEBAIGNvbnN0ZXhwciBib29sIGFzc2VydGlvbkZhaWx1
cmVEdWVUb1VucmVhY2hhYmxlQ29kZSA9IGZhbHNlOwogCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJM
RUQKICNkZWZpbmUgUFVCTElDX0xPR19TVFJJTkcgInMiCisjZGVmaW5lIFBSSVZBVEVfTE9HX1NU
UklORyAicyIKICNkZWZpbmUgUkVMRUFTRV9MT0coY2hhbm5lbCwgLi4uKSAoKHZvaWQpMCkKICNk
ZWZpbmUgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgLi4uKSBMT0dfRVJST1IoX19WQV9BUkdT
X18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0ZBVUxUKGNoYW5uZWwsIC4uLikgTE9HX0VSUk9SKF9f
VkFfQVJHU19fKQpAQCAtNTM4LDYgKzUzOSw3IEBAIGNvbnN0ZXhwciBib29sIGFzc2VydGlvbkZh
aWx1cmVEdWVUb1VucmVhY2hhYmxlQ29kZSA9IGZhbHNlOwogCiAjaWYgVVNFKE9TX0xPRykgJiYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAjZGVmaW5lIFBVQkxJQ19MT0dfU1RSSU5HICJ7cHVibGlj
fXMiCisjZGVmaW5lIFBSSVZBVEVfTE9HX1NUUklORyAie3ByaXZhdGV9cyIKICNkZWZpbmUgUkVM
RUFTRV9MT0coY2hhbm5lbCwgLi4uKSBvc19sb2coTE9HX0NIQU5ORUwoY2hhbm5lbCkub3NMb2dD
aGFubmVsLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwg
Li4uKSBvc19sb2dfZXJyb3IoTE9HX0NIQU5ORUwoY2hhbm5lbCkub3NMb2dDaGFubmVsLCBfX1ZB
X0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRkFVTFQoY2hhbm5lbCwgLi4uKSBvc19sb2df
ZmF1bHQoTE9HX0NIQU5ORUwoY2hhbm5lbCkub3NMb2dDaGFubmVsLCBfX1ZBX0FSR1NfXykKQEAg
LTU1NSw2ICs1NTcsNyBAQCBjb25zdGV4cHIgYm9vbCBhc3NlcnRpb25GYWlsdXJlRHVlVG9VbnJl
YWNoYWJsZUNvZGUgPSBmYWxzZTsKIAogI2lmIFVTRShKT1VSTkFMRCkgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAjZGVmaW5lIFBVQkxJQ19MT0dfU1RSSU5HICJzIgorI2RlZmluZSBQUklWQVRF
X0xPR19TVFJJTkcgInMiCiAjZGVmaW5lIFNEX0pPVVJOQUxfU0VORChjaGFubmVsLCBwcmlvcml0
eSwgZmlsZSwgbGluZSwgZnVuY3Rpb24sIC4uLikgZG8geyBcCiAgICAgaWYgKExPR19DSEFOTkVM
KGNoYW5uZWwpLnN0YXRlICE9IFdURkxvZ0NoYW5uZWxTdGF0ZTo6T2ZmKSBcCiAgICAgICAgIHNk
X2pvdXJuYWxfc2VuZF93aXRoX2xvY2F0aW9uKCJDT0RFX0ZJTEU9IiBmaWxlLCAiQ09ERV9MSU5F
PSIgbGluZSwgZnVuY3Rpb24sICJXRUJLSVRfU1VCU1lTVEVNPSVzIiwgTE9HX0NIQU5ORUwoY2hh
bm5lbCkuc3Vic3lzdGVtLCAiV0VCS0lUX0NIQU5ORUw9JXMiLCBMT0dfQ0hBTk5FTChjaGFubmVs
KS5uYW1lLCAiUFJJT1JJVFk9JWkiLCBwcmlvcml0eSwgIk1FU1NBR0U9IiBfX1ZBX0FSR1NfXywg
bnVsbHB0cik7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMjkwZmFhMWVlYjcuLjVkZTg4OWZlYzRhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA0LTI3ICBCYXN1a2UgU3V6dWtpICA8YmFz
dWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBTdXBwcmVzcyB3YXJuaW5ncyBmb3IgJXtw
cml2YXRlfXMgZm9ybWF0IHNwZWNpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIFBSSVZBVEVfTE9HX1NUUklORyBtYWNybyB3aGljaCBpcyBk
ZWZpbmVkIGRlcGVuZGluZyBvbiBpZgorICAgICAgICBvc19sb2coKSBpcyB1c2VkIG9yIHJhdGhl
ciBvbGQgcHJpbnRmKCkuCisgICAgICAgIFNlZSBhbHNvOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDc4CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ug
dGhlcmUncyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6
UnVuOjpyZW1vdmVUcmFpbGluZ0xldHRlclNwYWNpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJXb3JrZXI6OnN0YXJ0VGVybWluYXRpb24pOgorCiAyMDIxLTA0LTI3ICBBZGl0eWEgS2VlcnRo
aSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIEFkZCBib3JkZXJz
IGZvciBiZXR0ZXIgY29udHJvbCB2aXNpYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NWM4YzcxY2Y3Yi4u
NjMwYjY1YTA2OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTI3ICBCYXN1
a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBTdXBwcmVzcyB3
YXJuaW5ncyBmb3IgJXtwcml2YXRlfXMgZm9ybWF0IHNwZWNpZmllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBSSVZBVEVfTE9HX1NUUklORyBt
YWNybyB3aGljaCBpcyBkZWZpbmVkIGRlcGVuZGluZyBvbiBpZgorICAgICAgICBvc19sb2coKSBp
cyB1c2VkIG9yIHJhdGhlciBvbGQgcHJpbnRmKCkuCisgICAgICAgIFNlZSBhbHNvOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDc4CisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKwogMjAy
MS0wNC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0
IGtlZXAgbG9jYWwgc3RvcmFnZSBkYXRhIGluIG1lbW9yeSBpbiB0aGUgTmV0d29ya1Byb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCmluZGV4IDVlM2MyZTlhNTZhZC4uYjljYjJkYzk0OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTM4NCw3ICsz
ODQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQ
RGF0YWJhc2UoKQogICAgIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzZXRCdXN5VGltZW91dChtX2Rh
dGFiYXNlLCAiUFJBR01BIGJ1c3lfdGltZW91dCA9IDUwMDAiKTsKICAgICBpZiAoc2V0QnVzeVRp
bWVvdXQucHJlcGFyZSgpICE9IFNRTElURV9PSyB8fCBzZXRCdXN5VGltZW91dC5zdGVwKCkgIT0g
U1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0QnVzeVRpbWVvdXQgZmFpbGVk
LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0QnVzeVRpbWVvdXQgZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5cygpCiB7CiAgICAgU1FMaXRlU3RhdGVtZW50
IGVuYWJsZUZvcmVpZ25LZXlzKG1fZGF0YWJhc2UsICJQUkFHTUEgZm9yZWlnbl9rZXlzID0gT04i
KTsKICAgICBpZiAoZW5hYmxlRm9yZWlnbktleXMucHJlcGFyZSgpICE9IFNRTElURV9PSyB8fCBl
bmFibGVGb3JlaWduS2V5cy5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmVuYWJsZUZvcmVpZ25LZXlzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmVuYWJsZUZvcmVpZ25LZXlzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzgsMTMgKzQz
OCwxMyBAQCBUYWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBn
ZXRUYWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1Qgc3FsIEZST00g
c3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0nIiwgdGFibGVOYW1lLCAiJyBBTkQgdHlwZSA9
ICd0YWJsZSciKSk7CiAgICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgdGFi
bGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJp
ZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRh
YmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHRhYmxlIHNjaGVt
YSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHRhYmxlIHNjaGVtYSwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQpAQCAtNDUzLDcgKzQ1Myw3IEBAIFRhYmxlQW5kSW5kZXhQYWlyIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpCiAK
ICAgICBTUUxpdGVTdGF0ZW1lbnQgZ2V0SW5kZXhTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0
cmluZygiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9JyIsIHRh
YmxlTmFtZSwgIicgQU5EIHR5cGUgPSAnaW5kZXgnIikpOwogICAgIGlmIChnZXRJbmRleFN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJy
ZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZl
dGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJy
ZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZl
dGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTYwMCw3ICs2MDAs
NyBAQCBWZWN0b3I8U3RyaW5nPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZwogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1l
bnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiUFJBR01BIHRhYmxlX2luZm8oIiwgdGFibGVOYW1l
LCAiKSIpKTsKIAogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0Q29sdW1uc0Zyb21UYWJsZUluZm9TdGF0ZW1lbnQgVW5h
YmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGFibGUsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRDb2x1bW5zRnJvbVRhYmxlSW5mb1N0YXRlbWVudCBV
bmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0YWJsZSwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQpAQCAtNjI0LDEyICs2MjQsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKFN0cmluZyYmIHRh
YmwKICAgICAgICAgCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgbWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1lLCAiIEFERCBDT0xVTU4gIiwg
Y29sdW1uKSk7CiAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBVbmFi
bGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gYWRkIG1pc3NpbmcgY29sdW1ucyB0byB0YWJsZSwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUg
VW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGFkZCBtaXNzaW5nIGNvbHVtbnMgdG8gdGFi
bGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdD
b2x1bW5zVG9UYWJsZSBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGFkZCBtaXNzaW5nIGNv
bHVtbnMgdG8gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2lu
Z0NvbHVtbnNUb1RhYmxlIGVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gYWRkIG1pc3Npbmcg
Y29sdW1ucyB0byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02NTAsMTIgKzY1
MCwxMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVD
b2x1bW5JblRhYmxlKFN0cmluZyYmIHRhYmxlTmFtZQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBz
dGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1l
LCAiIFJFTkFNRSBDT0xVTU4gIiwgZXhpc3RpbmdDb2x1bW5OYW1lLCAiIFRPICIsIGV4cGVjdGVk
Q29sdW1uTmFtZSkpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIFVuYWJsZSB0
byBwcmVwYXJlIHN0YXRlbWVudCB0byByZW5hbWUgY29sdW1uIGluIHRhYmxlLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIFVuYWJsZSB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZW5hbWUgY29sdW1uIGluIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIGVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQg
dG8gcmVuYW1lIGNvbHVtbiBpbiB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFk
ZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIHJlbmFt
ZSBjb2x1bW4gaW4gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXNJZk5l
Y2Vzc2FyeSgpCiAgICAgfQogCiAgICAgaWYgKCFjcmVhdGVVbmlxdWVJbmRpY2VzKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXMgZmFpbGVkIHRvIGNyZWF0ZSB1bmlx
dWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXMg
ZmFpbGVkIHRvIGNyZWF0ZSB1bmlxdWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NzQsNyAr
Nzc0LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNFbXB0
eSgpIGNvbnN0CiAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50LCBvYnNlcnZlZERvbWFpbkNvdW50UXVl
cnksICJpc0VtcHR5Il9zKTsKICAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAogICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppc0VtcHR5IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aXNFbXB0eSBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05NjgsMTMgKzk2
OCwxMyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRP
YnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYQogICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9u
SW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+Ymlu
ZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJSW5kZXgs
IGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nl
c3NBUEkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQo
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4LCBsb2FkU3RhdGlzdGlj
cy5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFp
biBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbW1p
dCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxl
ZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtOTkyLDcgKzk5Miw3IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhT
UUxpdGVTdGF0ZW1lbnRBdXRvCiAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEludCgxLCAqZmly
c3REb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQo
Miwgc2Vjb25kRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwMDYsNyArMTAwNiw3IEBAIE9wdGlvbmFs
PHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQo
Y29uc3QgUmVnaXN0cmFiCiAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRT
dGF0ZW1lbnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklERnJvbVN0cmlu
Z1F1ZXJ5LCAiZG9tYWluSUQiX3MpOwogICAgIGlmICghc2NvcGVkU3RhdGVtZW50CiAgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJ
VEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERnJv
bVN0cmluZyBmYWlsZWQuIFN0YXRlbWVudDogJXMuIEVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgc2NvcGVkU3RhdGVtZW50LT5xdWVyeSgpLnV0ZjgoKS5kYXRhKCksIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZG9tYWluSURGcm9tU3RyaW5nIGZhaWxlZC4gU3RhdGVtZW50OiAlcy4gRXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBzY29wZWRTdGF0ZW1lbnQtPnF1ZXJ5KCkudXRm
OCgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KQEAgLTEw
NDMsMjAgKzEwNDMsMjAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTdHIKICAgICAKICAgICBpZiAo
aW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgfHwgaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9
IFNRTElURV9PSykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlu
c2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIAogICAgIGlmIChzdGF0ZW1lbnQuY29udGFpbnMoIlJFUExBQ0UiKSkgewogICAg
ICAgICBpZiAoaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50LmJpbmREb3VibGUoMiwgV2FsbFRp
bWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRp
b25zaGlwTGlzdCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpbnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0IGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExp
c3QgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNv
bnN0IFJlc291cmNlCiAgICAgZm9yIChjb25zdCBhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNz
TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0T2JzZXJ2ZWREb21h
aW4oc3RhdGlzdGljKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSBpbnNlcnRPYnNl
cnZlZERvbWFpbiBmYWlsZWQgdG8gY29tcGxldGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUgaW5zZXJ0T2JzZXJ2
ZWREb21haW4gZmFpbGVkIHRvIGNvbXBsZXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTExNTAsNyArMTE1MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Om1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpCiAgICAgaWYgKCFzY29w
ZWRTdGF0ZW1lbnQKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBzdGF0
aXN0aWMucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxlZCB0
byBiaW5kIG9yIGRvbWFpbiB3YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMuIFN0YXRlbWVudCBmYWlsZWQgdG8gYmlu
ZCBvciBkb21haW4gd2FzIG5vdCBmb3VuZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTY2LDcgKzExNjYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRp
c3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YQogICAgICAgICBpZiAoIWRvbWFpbklEKHN0YXRp
c3RpYy5yZWdpc3RyYWJsZURvbWFpbikpIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5z
ZXJ0T2JzZXJ2ZWREb21haW4oc3RhdGlzdGljKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlz
dGljcyBpbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gY29tcGxldGUsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyBp
bnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gY29tcGxldGUsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZv
ckRvbWFpbnMKICAgICBTUUxpdGVTdGF0ZW1lbnQgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGRhdGFSZWNv
cmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZCArIDEgV0hFUkUgcmVnaXN0cmFibGVEb21h
aW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7CiAgICAgaWYgKGRvbWFp
bnNUb1VwZGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGRv
bWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFN0YXRpc3RpY3NGb3JEb21haW5z
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3Jl
bWVudFN0YXRpc3RpY3NGb3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdW5z
aWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5Rmlu
ZE5vblByZXZhbGVudERvbWFpbnMKICAgICBTUUxpdGVTdGF0ZW1lbnQgZmluZFN1YnJlc291cmNl
cyhtX2RhdGFiYXNlLCAiU0VMRUNUIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9t
RG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gSU5ORVIgSk9JTiBP
YnNlcnZlZERvbWFpbnMgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tLmZyb21Eb21haW5JRCBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklE
ID0gPyBBTkQgT2JzZXJ2ZWREb21haW5zLmlzUHJldmFsZW50ID0gMCJfcyk7CiAgICAgaWYgKGZp
bmRTdWJyZXNvdXJjZXMucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBmaW5kU3Vi
cmVzb3VyY2VzLmJpbmRJbnQoMSwgcHJpbWFyeURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZh
bGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxl
bnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnMKICAgICBTUUxp
dGVTdGF0ZW1lbnQgZmluZFRvcEZyYW1lcyhtX2RhdGFiYXNlLCAiU0VMRUNUIFRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20gSU5ORVIgSk9JTiBPYnNlcnZlZERvbWFpbnMgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFp
bklEID0gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmZyb21Eb21haW5JRCBXSEVSRSB0YXJn
ZXREb21haW5JRCA9ID8gQU5EIE9ic2VydmVkRG9tYWlucy5pc1ByZXZhbGVudCA9IDAiX3MpOwog
ICAgIGlmIChmaW5kVG9wRnJhbWVzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
ZmluZFRvcEZyYW1lcy5iaW5kSW50KDEsIHByaW1hcnlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25Q
cmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4gZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZlbHlGaW5kTm9uUHJl
dmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KQEAgLTEzNTYsNyArMTM1Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsCiAgICAg
U1FMaXRlU3RhdGVtZW50IG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0
cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRv
bWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25l
ZD46Oml0ZXJhdG9yPihwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmJlZ2luKCksIHByZXZhbGVudER1
ZVRvUmVkaXJlY3QuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKG1hcmtQcmV2YWxlbnRTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtYXJrUHJldmFsZW50U3RhdGVt
ZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQgZmFpbGVk
IHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpt
YXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCBmYWlsZWQgdG8gZXhlY3V0
ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
fQpAQCAtMTUxNSwxNCArMTUxNSwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAgICAgc3dp
dGNoIChjb29raWVBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkgewogICAg
IGNhc2UgQ29va2llQWNjZXNzOjpDYW5ub3RSZXF1ZXN0OgogICAgICAgICBpZiAoVU5MSUtFTFko
ZGVidWdMb2dnaW5nRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhJ
VFBEZWJ1ZywgIkNhbm5vdCBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3ByaXZhdGV9cyBzaW5j
ZSBpdHMgY29va2llcyBhcmUgYmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250ZXh0cyBhbmQgaXQg
aGFzIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uIGFzIGZpcnN0LXBhcnR5LiIsIHN1YkZy
YW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSU5GTyhJVFBEZWJ1ZywgIkNhbm5vdCBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAlIiBQUklW
QVRFX0xPR19TVFJJTkcgIiBzaW5jZSBpdHMgY29va2llcyBhcmUgYmxvY2tlZCBpbiB0aGlyZC1w
YXJ0eSBjb250ZXh0cyBhbmQgaXQgaGFzIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uIGFz
IGZpcnN0LXBhcnR5LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpJ
VFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW0lUUF0gQ2Fubm90IGdy
YW50IHN0b3JhZ2UgYWNjZXNzIHRvICciX3MsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLCAiJyBz
aW5jZSBpdHMgY29va2llcyBhcmUgYmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250ZXh0cyBhbmQg
aXQgaGFzIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uIGFzIGZpcnN0LXBhcnR5LiJfcykp
OwogICAgICAgICB9CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0
dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDb29r
aWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k6CiAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1
Z0xvZ2dpbmdFbmFibGVkKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElUUERl
YnVnLCAiTm8gbmVlZCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3ByaXZhdGV9cyBzaW5j
ZSBpdHMgY29va2llcyBhcmUgbm90IGJsb2NrZWQgaW4gdGhpcmQtcGFydHkgY29udGV4dHMuIE5v
dGUgdGhhdCB0aGUgdW5kZXJseWluZyBjb29raWUgcG9saWN5IG1heSBzdGlsbCBibG9jayB0aGlz
IHRoaXJkLXBhcnR5IGZyb20gc2V0dGluZyBjb29raWVzLiIsIHN1YkZyYW1lRG9tYWluLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhJVFBEZWJ1
ZywgIk5vIG5lZWQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJSIgUFJJVkFURV9MT0dfU1RS
SU5HICIgc2luY2UgaXRzIGNvb2tpZXMgYXJlIG5vdCBibG9ja2VkIGluIHRoaXJkLXBhcnR5IGNv
bnRleHRzLiBOb3RlIHRoYXQgdGhlIHVuZGVybHlpbmcgY29va2llIHBvbGljeSBtYXkgc3RpbGwg
YmxvY2sgdGhpcyB0aGlyZC1wYXJ0eSBmcm9tIHNldHRpbmcgY29va2llcy4iLCBzdWJGcmFtZURv
bWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SVRQRGVidWcsIE1lc3NhZ2VMZXZlbDo6SW5m
bywgbWFrZVN0cmluZygiW0lUUF0gTm8gbmVlZCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAn
Il9zLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKSwgIicgc2luY2UgaXRzIGNvb2tpZXMgYXJlIG5v
dCBibG9ja2VkIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzLiBOb3RlIHRoYXQgdGhlIHVuZGVybHlp
bmcgY29va2llIHBvbGljeSBtYXkgc3RpbGwgYmxvY2sgdGhpcyB0aGlyZC1wYXJ0eSBmcm9tIHNl
dHRpbmcgY29va2llcy4iX3MpKTsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOwpAQCAtMTUzNSw3ICsxNTM1LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIGF1dG8gdXNlcldhc1Byb21wdGVkRWFybGllciA9
IGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoKnN1YkZyYW1lU3RhdHVz
LnNlY29uZCwgdG9wRnJhbWVEb21haW4pOwogICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVy
ID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pIHsKICAgICAgICAgaWYgKFVOTElL
RUxZKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lO
Rk8oSVRQRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hldGhlciB0aGV5IHdhbnQgdG8g
Z3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwcml2YXRlfXMgdW5kZXIgJXtwcml2YXRlfXMgb3Ig
bm90LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9t
YWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5G
TyhJVFBEZWJ1ZywgIkFib3V0IHRvIGFzayB0aGUgdXNlciB3aGV0aGVyIHRoZXkgd2FudCB0byBn
cmFudCBzdG9yYWdlIGFjY2VzcyB0byAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiB1bmRlciAlIiBQ
UklWQVRFX0xPR19TVFJJTkcgIiBvciBub3QuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OklUUERl
YnVnLCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltJVFBdIEFib3V0IHRvIGFzayB0
aGUgdXNlciB3aGV0aGVyIHRoZXkgd2FudCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAnIl9z
LCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKSwgIicgdW5kZXIgJyJfcywgdG9wRnJhbWVEb21haW4u
c3RyaW5nKCksICInIG9yIG5vdC4iX3MpKTsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQpOwpAQCAtMTU0
NCw3ICsxNTQ0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogCiAgICAgaWYgKHVzZXJXYXNQ
cm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpIHsKICAg
ICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCB0
byAle3ByaXZhdGV9cyB1bmRlciAle3ByaXZhdGV9cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJTdG9yYWdlIGFjY2VzcyB3
YXMgZ3JhbnRlZCB0byAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiB1bmRlciAlIiBQUklWQVRFX0xP
R19TVFJJTkcgIi4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BG
cmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGRlYnVnQnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SVRQRGVidWcsIE1lc3NhZ2VMZXZl
bDo6SW5mbywgbWFrZVN0cmluZygiW0lUUF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8g
JyJfcywgc3ViRnJhbWVEb21haW4uc3RyaW5nKCksICInIHVuZGVyICciX3MsIHRvcEZyYW1lRG9t
YWluLnN0cmluZygpLCAiJy4iX3MpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NTMsNyArMTU1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICBpZiAoaW5jcmVtZW50U3RvcmFnZUFj
Y2Vzcy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGluY3JlbWVudFN0b3JhZ2VB
Y2Nlc3MuYmluZEludCgxLCAqc3ViRnJhbWVTdGF0dXMuc2Vjb25kKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgaW5jcmVtZW50U3RvcmFnZUFjY2Vzcy5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTcyLDcgKzE1NzIsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoVU5M
SUtFTFkoZGVidWdMb2dnaW5nRW5hYmxlZCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JTkZP
KElUUERlYnVnLCAiW1RlbXBvcmFyeSBjb21iYXRpYmlsaXR5IGZpeF0gU3RvcmFnZSBhY2Nlc3Mg
d2FzIGdyYW50ZWQgZm9yICV7cHJpdmF0ZX1zIHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJXtwcml2
YXRlfXMsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUgb3BlbmVkIHdpbmRvdy4iLCBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgb3BlbmVyRG9t
YWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElU
UERlYnVnLCAiW1RlbXBvcmFyeSBjb21iYXRpYmlsaXR5IGZpeF0gU3RvcmFnZSBhY2Nlc3Mgd2Fz
IGdyYW50ZWQgZm9yICUiIFBSSVZBVEVfTE9HX1NUUklORyAiIHVuZGVyIG9wZW5lciBwYWdlIGZy
b20gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUg
b3BlbmVkIHdpbmRvdy4iLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgb3BlbmVyRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OklUUERlYnVnLCBN
ZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltJVFBdIFN0b3JhZ2UgYWNjZXNzIHdhcyBn
cmFudGVkIGZvciAnIl9zLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCksICIn
IHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJyJfcywgb3BlbmVyRG9tYWluLnN0cmluZygpLCAiJywg
d2l0aCB1c2VyIGludGVyYWN0aW9uIGluIHRoZSBvcGVuZWQgd2luZG93LiJfcykpOwogICAgIH0K
IApAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2UKICAgICBTUUxp
dGVTdGF0ZW1lbnQgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJp
bmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAxIFdIRVJFIHJl
Z2lzdHJhYmxlRG9tYWluIElOICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOwog
ICAgIGlmIChkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05F
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFG
b3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC0xNjgzLDcgKzE2ODMsNyBA
QCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjplbnN1cmVQcmV2YWxlbnRSZQogICAgICAgICBwcmltYXJ5RG9tYWluc1RvQmxvY2su
dW5jaGVja2VkQXBwZW5kKGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKSk7CiAKICAgICAg
ICAgaWYgKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhJVFBEZWJ1ZywgIkRpZCBzZXQgJXtwcml2YXRlfXMgYXMgcHJldmFsZW50IHJlc291cmNl
IGZvciB0aGUgcHVycG9zZXMgb2YgSVRQIERlYnVnIE1vZGUuIiwgZGVidWdNYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSU5GTyhJVFBEZWJ1ZywgIkRpZCBzZXQgJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgYXMg
cHJldmFsZW50IHJlc291cmNlIGZvciB0aGUgcHVycG9zZXMgb2YgSVRQIERlYnVnIE1vZGUuIiwg
ZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpJ
VFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbSVRQXSBEaWQgc2V0ICci
X3MsIGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKS5zdHJpbmcoKSwgIicgYXMgcHJldmFs
ZW50IHJlc291cmNlIGZvciB0aGUgcHVycG9zZXMgb2YgSVRQIERlYnVnIE1vZGUuIl9zKSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNzgwLDcgKzE3ODAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5j
ZVNhbQogICAgIGlmIChyZW1vdmVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGUucHJlcGFyZSgpICE9
IFNRTElURV9PSwogICAgICAgICB8fCByZW1vdmVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGUuYmlu
ZEludCgxLCAqdGFyZ2V0UmVzdWx0LnNlY29uZCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHJl
bW92ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZS5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCBmYWlsZWQgdG8gYmluZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCBmYWlsZWQgdG8gYmlu
ZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIApAQCAtMTc5Nyw3ICsxNzk3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG8KICAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlv
bi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDMsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRVc2VySW50ZXJhY3Rpb24sIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRVc2VySW50ZXJhY3Rp
b24sIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTgzNiw3ICsxODM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibGUKICAgICBpZiAocmVtb3ZlU3RvcmFnZUFjY2Vzcy5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IHJlbW92ZVN0b3JhZ2VBY2Nlc3MuYmluZEludCgxLCAqdGFyZ2V0UmVzdWx0
LnNlY29uZCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHJlbW92ZVN0b3JhZ2VBY2Nlc3Muc3Rl
cCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjbGVhclVzZXJJbnRlcmFjdGlvbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtw
cml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uIGZhaWxlZCB0byBi
aW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKQEAgLTE4NTQsNyArMTg1NCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsCiAgICAgaWYg
KCFzY29wZWRTdGF0ZW1lbnQKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgx
LCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTE4OTIsNyArMTg5Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgICAg
IHx8IHNjb3BlZFVwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIDEp
ICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRVcGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgfHwgc2NvcGVkVXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRh
dGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYWJsZQogICAgICAgICAgICAgfHwgc2NvcGVkVXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwg
c2NvcGVkVXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc2NvcGVkVXBkYXRl
VmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVZlcnlQcmV2
YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1By
ZXZhbGVudChTdGRTZXQ8dW5zaWduZWQ+CiAgICAgU1FMaXRlU3RhdGVtZW50IGRvbWFpbnNUb1Vw
ZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21h
aW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlzdChX
VEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbnMuYmVn
aW4oKSwgZG9tYWlucy5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRl
U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50IGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4oU1FMaXRlU3Rh
dGVtZW4KICAgICBpZiAoIXByZWRpY2F0ZVN0YXRlbWVudAogICAgICAgICB8fCBwcmVkaWNhdGVT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgIHx8IHByZWRpY2F0ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluIGZh
aWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cHJlZGljYXRlVmFsdWVGb3JEb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuICEhcHJlZGljYXRlU3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYgogICAgIGlmICghc2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291
cmNlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNTcsNyArMjA1Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFi
bGVEb21hCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0g
U1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWlu
LnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnNldEdyYW5kZmF0aGVyZWQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC0y
MDc3LDcgKzIwNzcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdgogICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwogICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMjEwMiw3ICsyMTAyLDcgQEAgU2Vjb25kcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcChjb24KICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDYsICp0b3BGcmFt
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5k
SW50KDcsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDgsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1vc3RSZWNlbnRseVVwZGF0
ZWRUaW1lc3RhbXAgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wIGZhaWxlZCB0byBi
aW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIFNlY29uZHMgeyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOb0V4aXN0aW5nVGlt
ZXN0YW1wICB9OwogICAgIH0KQEAgLTIyMDcsNyArMjIwNyw3IEBAIHN0ZDo6cGFpcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6QWRkZWRSZWNvcmQsIE9wdGlvbmFsPHVuc2ln
bmVkPj4KICAgICAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5
LCAiZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4iX3MpOwogICAg
ICAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAogICAgICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIHJldHVybiB7IEFkZGVkUmVjb3JkOjpObywgMCB9OwogICAgICAg
ICB9CkBAIC0yMjIyLDcgKzIyMjIsNyBAQCBzdGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+CiAgICAgYXV0
byByZXN1bHQgPSBpbnNlcnRPYnNlcnZlZERvbWFpbihuZXdPYnNlcnZhdGlvbik7CiAKICAgICBp
ZiAoIXJlc3VsdCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4gaW5zZXJ0T2JzZXJ2ZWREb21h
aW4gZmFpbGVkIHRvIGNvbXBsZXRlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4gaW5z
ZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbXBsZXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6
Ok5vLCBXVEY6Om51bGxvcHQgfTsKICAgICB9CkBAIC0yMjM1LDcgKzIyMzUsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMo
KQogICAgIG1fZGF0YWJhc2UuY2xlYXJBbGxUYWJsZXMoKTsKIAogICAgIGlmICghY3JlYXRlU2No
ZW1hKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zLCBkYXRhYmFzZSBwYXRoOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBh
dGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29u
dGVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiwgZGF0
YWJhc2UgcGF0aDogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNTEs
NyArMjI1MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
bW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVECiAgICAgaWYgKCFzY29wZWRTdGF0
ZW1lbnQKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpkb21haW5JRFRv
UmVtb3ZlKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
bW92ZURhdGFGb3JEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTIzMDQsNyArMjMwNCw3
IEBAIENvb2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29v
a2llQWNjZXNzKGNvbnN0IFN1YlJlc291cmNlCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiU0VMRUNUIGlzUHJldmFsZW50LCBoYWRVc2VySW50ZXJhY3Rpb24gRlJP
TSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Iik7CiAgICAgaWYg
KHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC5i
aW5kVGV4dCgxLCBzdWJyZXNvdXJjZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVBY2Nlc3MgZmFpbGVkIHRv
IGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVB
Y2Nlc3MgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KIApAQCAtMjQ3OCw3ICsyNDc4LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmluZyhWZWN0b3I8dW5z
aWduZWQ+JiYKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChjbGVhckdyYW5kZmF0aGVy
aW5nU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmluZyBmYWlsZWQgdG8gYmluZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJp
bmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIH0KQEAgLTI2MjAsNyArMjYyMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKICAgICBT
UUxpdGVTdGF0ZW1lbnQgcmVjb3Jkc1RvUHJ1bmUobV9kYXRhYmFzZSwgIlNFTEVDVCBkb21haW5J
RCBGUk9NIE9ic2VydmVkRG9tYWlucyBPUkRFUiBCWSBoYWRVc2VySW50ZXJhY3Rpb24sIGlzUHJl
dmFsZW50LCBsYXN0U2VlbiBMSU1JVCA/Iik7CiAgICAgaWYgKHJlY29yZHNUb1BydW5lLnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgcmVjb3Jkc1RvUHJ1bmUuYmluZEludCgxLCBj
b3VudExlZnRUb1BydW5lKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
dW5lU3RhdGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjM0LDcg
KzI2MzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVu
ZVN0YXRpc3RpY3NJZk5lZWRlZCgpCiAgICAgU1FMaXRlU3RhdGVtZW50IHBydW5lQ29tbWFuZCht
X2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJERUxFVEUgZnJvbSBPYnNlcnZlZERvbWFpbnMgV0hFUkUg
ZG9tYWluSUQgSU4gKCIsIGxpc3RUb1BydW5lLCAiKSIpKTsKICAgICBpZiAocHJ1bmVDb21tYW5k
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgcHJ1bmVDb21tYW5kLnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1
bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTI2NDksNyArMjY0OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2VlbiBmYWlsZWQgdG8gYmluZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuIGZhaWxl
ZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3MDksNyArMjcwOSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChj
b25zdCBSZWdpc3RyCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1
ZSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwg
ZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVz
c2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3Zl
ZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzI0LDcgKzI3MjQsNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0aXN0
aWNzQ291bnQoY29uc3QgUmVnaQogICAgIGlmIChzdWJGcmFtZVVuZGVyVG9wRnJhbWVDb3VudC5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZUNvdW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUby5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjb3VudFN1YlN0YXRpc3RpY3NUZXN0aW5nIGZhaWxlZCB0byBw
cmVwYXJlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y291bnRT
dWJTdGF0aXN0aWNzVGVzdGluZyBmYWlsZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC0yNzM1LDcgKzI3MzUsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0aXN0aWNzQ291bnQoY29uc3QgUmVnaQogICAgICAgICB8
fCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3VudC5iaW5kSW50KDIsIGRvbWFpbklEKHRvcEZy
YW1lRG9tYWluKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUby5iaW5kSW50KDEsIGRvbWFpbklEKHN1YmZyYW1lRG9tYWluKS52YWx1
ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
by5iaW5kSW50KDIsIGRvbWFpbklEKHRvcEZyYW1lRG9tYWluKS52YWx1ZSgpKSAhPSBTUUxJVEVf
T0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvdW50U3ViU3RhdGlz
dGljc1Rlc3RpbmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjb3VudFN1YlN0YXRpc3RpY3NUZXN0aW5nIGZhaWxlZCB0byBiaW5kLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTI3NzAsNyArMjc3MCw3IEBAIFN0cmluZyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVu
c2lnbmVkCiAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQo
bV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQsIGRvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRFF1ZXJ5LCAiZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEIl9zKTsKICAgICBpZiAoIXNj
b3BlZFN0YXRlbWVudAogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklELiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBh
cmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdl
dERvbWFpblN0cmluZ0Zyb21Eb21haW5JRC4gU3RhdGVtZW50IGZhaWxlZCB0byBwcmVwYXJlIG9y
IGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI4MTYsNyArMjgxNiw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
U3RyaW5nQnVpbGRlciYKICAgICAKICAgICBpZiAoZGF0YS5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IGRhdGEuYmluZEludCgxLCBkb21haW5JRChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZG9tYWluKSkudmFsdWUoKSkgIT0gU1FMSVRFX09LKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNM
aXN0LiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QuIFN0YXRl
bWVudCBmYWlsZWQgdG8gcHJlcGFyZSBvciBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4NDgsNyAr
Mjg0OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291
cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAgaWYgKCFzY29wZWRTdGF0ZW1l
bnQKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4pICE9IFNR
TElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9X
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5n
LiBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQgb3IgZG9tYWluIHdhcyBub3QgZm91bmQsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nLiBT
dGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQgb3IgZG9tYWluIHdhcyBub3QgZm91bmQsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjkyNiw3ICsyOTI2LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCkKICAgICAg
ICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5J
RCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1l
bnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX29ic2Vy
dmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRF
X09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0
c0luRGF0YWJhc2UgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMjkzNyw3ICsyOTM3LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21h
aW5JRCkKICAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ST1cKICAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ST1cKICAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNT
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIHN0ZXAsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0lu
RGF0YWJhc2UgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjk1Myw3ICsy
OTUzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRl
T3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzKCkKIAogICAgIGlmIChjb3VudE9wZXJhdGluZ0RhdGVz
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgY291bnRPcGVyYXRp
bmdEYXRlc1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGNvdW50
T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMg
Y291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yOTYyLDE0ICsyOTYyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycygpCiAKICAgICBpZiAoZ2V0
TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0g
U1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRl
T3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldEZpcnN0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBm
YWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycyBnZXRGaXJzdE9wZXJhdGluZ0RhdGVTdGF0
ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbW9zdFJlY2VudE9wZXJh
dGluZ0RhdGUgPSBPcGVyYXRpbmdEYXRlKGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVt
ZW50LmdldENvbHVtbkludCgwKSwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQu
Z2V0Q29sdW1uSW50KDEpLCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRD
b2x1bW5JbnQoMikpOwogCiAgICAgaWYgKGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQu
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldE9wZXJhdGluZ0RhdGVXaW5k
b3dTdGF0ZW1lbnQgZmFpbGVkIGR1cmluZyB0aGUgY2FsbCB0byBwcmVwYXJlKCkgd2l0aCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cy4iLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0Rh
dGVzUGFyYW1ldGVycyBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCBkdXJp
bmcgdGhlIGNhbGwgdG8gcHJlcGFyZSgpIHdpdGggZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HICIuIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjk3OSw3
ICsyOTc5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBk
YXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzKCkKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGdl
dE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQuYmluZEludCgxLCBvcGVyYXRpbmdEYXRlc1dp
bmRvd1Nob3J0IC0gMSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBnZXRPcGVyYXRpbmdE
YXRlV2luZG93U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJz
IGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQgZmFpbGVkIHdpdGggZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMuIFRoZSBlcnJvciBjb3VsZCBiZSBpbiB0aGUgY2FsbHMgdG8gYmluZCgp
IG9yIHN0ZXAoKS4iLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFt
ZXRlcnMgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudCBmYWlsZWQgd2l0aCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcgIi4gVGhlIGVycm9yIGNvdWxkIGJlIGluIHRo
ZSBjYWxscyB0byBiaW5kKCkgb3Igc3RlcCgpLiIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTI5OTIsNyArMjk5Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycygp
CiAgICAgICAgIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQucmVzZXQoKTsKICAgICAg
ICAgaWYgKGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQuYmluZEludCgxLCBvcGVyYXRp
bmdEYXRlc1dpbmRvd0xvbmcgLSAxKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGdldE9w
ZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1Bh
cmFtZXRlcnMgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudCBmYWlsZWQgd2l0aCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cy4gVGhlIGVycm9yIGNvdWxkIGJlIGluIHRoZSBjYWxscyB0
byBiaW5kKCkgb3Igc3RlcCgpLiIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0Rh
dGVzUGFyYW1ldGVycyBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCB3aXRo
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiLiBUaGUgZXJyb3IgY291bGQg
YmUgaW4gdGhlIGNhbGxzIHRvIGJpbmQoKSBvciBzdGVwKCkuIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzAxNiw3ICszMDE2LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdE
YXRlSWZOZWNlc3NhcnkKICAgICAgICAgaWYgKGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0
ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBkZWxldGVM
ZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgxLCByb3dzVG9QcnVuZSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBkZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0Rh
dGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3Nh
cnkgZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVw
LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVU
b2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5IGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzAyNyw3ICszMDI3
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jbHVkZVRv
ZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkKICAgICAgICAgfHwgaW5zZXJ0T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudC5iaW5kSW50KDIsIHRvZGF5Lm1vbnRoKCkpICE9IFNRTElURV9PSwogICAg
ICAgICB8fCBpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMywgdG9kYXkubW9u
dGhEYXkoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGluc2VydE9wZXJhdGluZ0RhdGVTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSBpbnNlcnRP
cGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3By
aXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNl
c3NhcnkgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCkBAIC0zMDc2
LDcgKzMwNzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdAogICAgICAgICAgICAgfHwgaW5z
ZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5kSW50KDIsIGRhdGVUb0luc2VydC5tb250aCgp
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1l
bnQuYmluZEludCgzLCBkYXRlVG9JbnNlcnQubW9udGhEYXkoKSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgICAgICB8fCBpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nIGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFp
bGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0
YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIGluc2VydE9wZXJhdGluZ0RhdGVT
dGF0ZW1lbnQucmVzZXQoKTsKQEAgLTMwOTgsMTMgKzMwOTgsMTMgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoY29uc3QKICAgICAgICAgfHwgc2NvcGVkSW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQt
PmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uSW5k
ZXgsIDApICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRJbnNlcnRPYnNlcnZlZERvbWFp
blN0YXRlbWVudC0+YmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdl
QWNjZXNzQVBJSW5kZXgsIDApICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRJbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudC0+YmluZEludChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsSW5kZXgsIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwp
ICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5z
ZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoc2NvcGVkSW5z
ZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcgZmFpbGVk
IHRvIGNvbW1pdCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzE2MSw3
ICszMTYxLDcgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmlidXRlZFByaXYKICAgICBpZiAoIWZpbmRVbmF0dHJp
YnV0ZWRTY29wZWRTdGF0ZW1lbnQKICAgICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0
YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRVbmF0dHJp
YnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApAQCAtMzE2OSw3
ICszMTY5LDcgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmlidXRlZFByaXYKICAgICBpZiAoIWZpbmRBdHRyaWJ1
dGVkU2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAg
ICB8fCBmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqZGVzdGluYXRp
b25TaXRlRG9tYWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRBdHRyaWJ1dGVkUXVl
cnksIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgZmluZEF0dHJpYnV0ZWRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCkBAIC0zMjE2LDcgKzMyMTYsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChQcml2YXRlQwogICAgICAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRU
ZXh0KDEwLCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmtl
eUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBzdGF0ZW1lbnQuYmluZERvdWJsZSgxMSwgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQp
ICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMzIzMiw3ICszMjMy
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUMKICAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRU
ZXh0KDYsIHNvdXJjZVVubGlua2FibGVUb2tlbiA/IHNvdXJjZVVubGlua2FibGVUb2tlbi0+c2ln
bmF0dXJlQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IHN0YXRlbWVudC5iaW5kVGV4dCg3LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxp
bmthYmxlVG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
IGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1l
c3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBA
IC0zMjQyLDcgKzMyNDIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZQogICAgIGF1dG8gc2Nv
cGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fc2V0VW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQsIHNldFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVlcnksICJtYXJrQWxsVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nIl9zKTsKIAogICAgIGlm
ICghc2NvcGVkU3RhdGVtZW50IHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9E
T05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQWxsVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTog
JSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMzI2MSw3ICszMjYx
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlVW5h
dHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmUKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDEsICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0
cmlidXRlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92
ZVVuYXR0cmlidXRlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogfQpAQCAtMzM0Niw3ICszMzQ2LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YWwKICAgICBhdXRvIGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFs
bEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb1N0cmluZyJfcyk7CiAKICAgICBpZiAoIWF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKQEAgLTMzNzUsNyArMzM3NSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8CiAgICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgY2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJp
bmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwogICAgICAgICB8fCBjbGVhclVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50IGNsZWFyVW5h
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjbGVhclVuYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogCkBAIC0zMzg1LDcgKzMzODUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KE9wdGlv
bmFsPAogICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9PSwogICAgICAgICB8fCBjbGVhckF0dHJpYnV0
ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGJpbmRQYXJhbWV0ZXIpICE9IFNRTElURV9P
SwogICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50IGNsZWFyQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMzM5OCw3ICsz
Mzk4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQogICAgIGlmICghc2NvcGVkU3RhdGVtZW50
CiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBleHBpcmF0aW9uVGlt
ZUZyYW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC0zNDQ3LDcgKzM0NDcsNyBAQCBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9TdHJpbmcoKQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFFeGlzdHMobV9kYXRhYmFzZSwgIlNFTEVDVCAoU0VMRUNUIENPVU5UKCopIEZST00g
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDEsIChTRUxFQ1QgQ09V
TlQoKikgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIGFzIGNudDIiX3Mp
OwogICAgIGlmIChwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMucHJlcGFyZSgpICE9
IFNRTElURV9PSyB8fCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMuc3RlcCgpICE9
IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9TdHJpbmcgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTM0NTgs
NyArMzQ1OCw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpCiAgICAgYXV0byB1bmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxVbmF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uc1N0YXRlbWVudCwgYWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNRdWVyeSwgInByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwogCiAgICAgaWYgKCF1bmF0dHJpYnV0ZWRTY29wZWRT
dGF0ZW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVD
bGlja01lYXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKQEAgLTM0NzgsNyArMzQ3
OCw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpCiAgICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwogCiAgICAgaWYg
KCFhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0
cmluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCkBAIC0zNTk0LDcgKzM1OTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQwogICAgICAg
ICB8fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQuYmluZEludCgxLCAqc291cmNlU2l0ZURvbWFp
bklEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LmJp
bmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFp
bGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhclNlbnRBdHRyaWJ1dGlvbiBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMzYwOSwxMyArMzYwOSwxMyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50cwogICAgIGlmIChlYXJsaWVzdFRpbWVUb1NlbmRUb1Nv
dXJjZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LmJpbmRJbnQoMSwgZXhwaXJlZFRpbWVUb1NlbmQu
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIGlmIChlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZWFy
bGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogDQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427236</attachid>
            <date>2021-04-27 21:58:40 -0700</date>
            <delta_ts>2021-04-28 16:22:27 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>79563</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZjNmODNiZmIwOTc1Li5mM2IwNmMwNDM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjEtMDQtMjcgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgorCisgICAg
ICAgIFN1cHByZXNzIHdhcm5pbmdzIGZvciAle3ByaXZhdGV9cyBmb3JtYXQgc3BlY2lmaWVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUFJJVkFU
RV9MT0dfU1RSSU5HIG1hY3JvIHdoaWNoIGlzIGRlZmluZWQgZGVwZW5kaW5nIG9uIGlmCisgICAg
ICAgIG9zX2xvZygpIGlzIHVzZWQgb3IgcmF0aGVyIG9sZCBwcmludGYoKS4KKyAgICAgICAgU2Vl
IGFsc286IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NzgKKwor
ICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisKIDIwMjEtMDQtMjcgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI3NTkxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBi
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCBjNzk0MGVjNGRlYTQuLjEwOTM0YWU0
MDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtNTIxLDYgKzUyMSw3IEBAIGNvbnN0ZXhwciBib29s
IGFzc2VydGlvbkZhaWx1cmVEdWVUb1VucmVhY2hhYmxlQ29kZSA9IGZhbHNlOwogCiAjaWYgUkVM
RUFTRV9MT0dfRElTQUJMRUQKICNkZWZpbmUgUFVCTElDX0xPR19TVFJJTkcgInMiCisjZGVmaW5l
IFBSSVZBVEVfTE9HX1NUUklORyAicyIKICNkZWZpbmUgUkVMRUFTRV9MT0coY2hhbm5lbCwgLi4u
KSAoKHZvaWQpMCkKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgLi4uKSBMT0df
RVJST1IoX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0ZBVUxUKGNoYW5uZWwsIC4u
LikgTE9HX0VSUk9SKF9fVkFfQVJHU19fKQpAQCAtNTM4LDYgKzUzOSw3IEBAIGNvbnN0ZXhwciBi
b29sIGFzc2VydGlvbkZhaWx1cmVEdWVUb1VucmVhY2hhYmxlQ29kZSA9IGZhbHNlOwogCiAjaWYg
VVNFKE9TX0xPRykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAjZGVmaW5lIFBVQkxJQ19MT0df
U1RSSU5HICJ7cHVibGljfXMiCisjZGVmaW5lIFBSSVZBVEVfTE9HX1NUUklORyAie3ByaXZhdGV9
cyIKICNkZWZpbmUgUkVMRUFTRV9MT0coY2hhbm5lbCwgLi4uKSBvc19sb2coTE9HX0NIQU5ORUwo
Y2hhbm5lbCkub3NMb2dDaGFubmVsLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0df
RVJST1IoY2hhbm5lbCwgLi4uKSBvc19sb2dfZXJyb3IoTE9HX0NIQU5ORUwoY2hhbm5lbCkub3NM
b2dDaGFubmVsLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRkFVTFQoY2hhbm5l
bCwgLi4uKSBvc19sb2dfZmF1bHQoTE9HX0NIQU5ORUwoY2hhbm5lbCkub3NMb2dDaGFubmVsLCBf
X1ZBX0FSR1NfXykKQEAgLTU1NSw2ICs1NTcsNyBAQCBjb25zdGV4cHIgYm9vbCBhc3NlcnRpb25G
YWlsdXJlRHVlVG9VbnJlYWNoYWJsZUNvZGUgPSBmYWxzZTsKIAogI2lmIFVTRShKT1VSTkFMRCkg
JiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAjZGVmaW5lIFBVQkxJQ19MT0dfU1RSSU5HICJzIgor
I2RlZmluZSBQUklWQVRFX0xPR19TVFJJTkcgInMiCiAjZGVmaW5lIFNEX0pPVVJOQUxfU0VORChj
aGFubmVsLCBwcmlvcml0eSwgZmlsZSwgbGluZSwgZnVuY3Rpb24sIC4uLikgZG8geyBcCiAgICAg
aWYgKExPR19DSEFOTkVMKGNoYW5uZWwpLnN0YXRlICE9IFdURkxvZ0NoYW5uZWxTdGF0ZTo6T2Zm
KSBcCiAgICAgICAgIHNkX2pvdXJuYWxfc2VuZF93aXRoX2xvY2F0aW9uKCJDT0RFX0ZJTEU9IiBm
aWxlLCAiQ09ERV9MSU5FPSIgbGluZSwgZnVuY3Rpb24sICJXRUJLSVRfU1VCU1lTVEVNPSVzIiwg
TE9HX0NIQU5ORUwoY2hhbm5lbCkuc3Vic3lzdGVtLCAiV0VCS0lUX0NIQU5ORUw9JXMiLCBMT0df
Q0hBTk5FTChjaGFubmVsKS5uYW1lLCAiUFJJT1JJVFk9JWkiLCBwcmlvcml0eSwgIk1FU1NBR0U9
IiBfX1ZBX0FSR1NfXywgbnVsbHB0cik7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTU1YzhjNzFjZjdiLi5jMWE1
ODZlZWJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMjEtMDQtMjcgIEJhc3VrZSBT
dXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgorCisgICAgICAgIFN1cHByZXNzIHdhcm5p
bmdzIGZvciAle3ByaXZhdGV9cyBmb3JtYXQgc3BlY2lmaWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUFJJVkFURV9MT0dfU1RSSU5HIG1hY3Jv
IHdoaWNoIGlzIGRlZmluZWQgZGVwZW5kaW5nIG9uIGlmCisgICAgICAgIG9zX2xvZygpIGlzIHVz
ZWQgb3IgcmF0aGVyIG9sZCBwcmludGYoKS4KKyAgICAgICAgU2VlIGFsc286IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NzgKKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
b3BlbklUUERhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmVuYWJsZUZvcmVpZ25LZXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVl
cmllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjb2x1bW5zRm9yVGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVt
bkluVGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
T2JzZXJ2ZWREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlu
c2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VT
dGF0aXN0aWMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRv
VGhpc0RvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0
aGVyRGF0YUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNh
dGVWYWx1ZUZvckRvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0
aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVj
ZW50bHlVcGRhdGVkVGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWlu
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNvb2tpZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnVwZGF0ZUxhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0
aXN0aWNzQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0
YXRpc3RpY0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0lu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3Bl
cmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpt
YXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlbW92ZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyk6CisKIDIwMjEtMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEb24ndCBrZWVwIGxvY2FsIHN0b3JhZ2UgZGF0YSBpbiBtZW1vcnkgaW4gdGhl
IE5ldHdvcmtQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA1ZTNjMmU5YTU2YWQuLmI5Y2IyZGM5NDhmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc2V0
QnVzeVRpbWVvdXQobV9kYXRhYmFzZSwgIlBSQUdNQSBidXN5X3RpbWVvdXQgPSA1MDAwIik7CiAg
ICAgaWYgKHNldEJ1c3lUaW1lb3V0LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sgfHwgc2V0QnVzeVRp
bWVvdXQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEJ1
c3lUaW1lb3V0IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEJ1c3lUaW1l
b3V0IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5hYmxlRm9yZWlnbktleXMoKQogewogICAg
IFNRTGl0ZVN0YXRlbWVudCBlbmFibGVGb3JlaWduS2V5cyhtX2RhdGFiYXNlLCAiUFJBR01BIGZv
cmVpZ25fa2V5cyA9IE9OIik7CiAgICAgaWYgKGVuYWJsZUZvcmVpZ25LZXlzLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sgfHwgZW5hYmxlRm9yZWlnbktleXMuc3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5cyBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5cyBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNDM4LDEzICs0MzgsMTMgQEAgVGFibGVBbmRJbmRleFBhaXIgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmkKIHsKICAgICBT
UUxpdGVTdGF0ZW1lbnQgZ2V0VGFibGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygi
U0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9JyIsIHRhYmxlTmFt
ZSwgIicgQU5EIHR5cGUgPSAndGFibGUnIikpOwogICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNj
aGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRh
YmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBz
Y2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYgKGdldFRhYmxl
U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
dXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBm
ZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJs
ZSBzY2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCBUYWJsZUFuZElu
ZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxl
QW5kSW5kZXhRdWVyaQogCiAgICAgU1FMaXRlU3RhdGVtZW50IGdldEluZGV4U3RhdGVtZW50KG1f
ZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJF
IHRibF9uYW1lPSciLCB0YWJsZU5hbWUsICInIEFORCB0eXBlID0gJ2luZGV4JyIpKTsKICAgICBp
ZiAoZ2V0SW5kZXhTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBwcmVwYXJl
IHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAl
e3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBwcmVwYXJl
IHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CkBAIC02MDAsNyArNjAwLDcgQEAgVmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcKICAgICBTUUxpdGVT
dGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlBSQUdNQSB0YWJsZV9p
bmZvKCIsIHRhYmxlTmFtZSwgIikiKSk7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldENvbHVtbnNGcm9tVGFibGVJ
bmZvU3RhdGVtZW50IFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEg
Zm9yIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0Q29sdW1uc0Zyb21UYWJs
ZUluZm9TdGF0ZW1lbnQgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVt
YSBmb3IgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTYyNCwxMiArNjI0LDEyIEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9U
YWJsZShTdHJpbmcmJiB0YWJsCiAgICAgICAgIAogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwg
IiBBREQgQ09MVU1OICIsIGNvbHVtbikpOwogICAgICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29s
dW1uc1RvVGFibGUgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGFkZCBtaXNzaW5nIGNv
bHVtbnMgdG8gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2lu
Z0NvbHVtbnNUb1RhYmxlIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBhZGQgbWlzc2lu
ZyBjb2x1bW5zIHRvIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYg
KHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0
byBhZGQgbWlzc2luZyBjb2x1bW5zIHRvIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50
IHRvIGFkZCBtaXNzaW5nIGNvbHVtbnMgdG8gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNjUwLDEyICs2NTAsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiB0YWJsZU5hbWUKIHsKICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIkFMVEVSIFRB
QkxFICIsIHRhYmxlTmFtZSwgIiBSRU5BTUUgQ09MVU1OICIsIGV4aXN0aW5nQ29sdW1uTmFtZSwg
IiBUTyAiLCBleHBlY3RlZENvbHVtbk5hbWUpKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5z
VG9UYWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gcmVuYW1lIGNvbHVtbiBpbiB0
YWJsZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJs
ZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gcmVuYW1lIGNvbHVtbiBpbiB0YWJsZSwg
ZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBlcnJvciBleGVj
dXRpbmcgc3RhdGVtZW50IHRvIHJlbmFtZSBjb2x1bW4gaW4gdGFibGUsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUgZXJyb3IgZXhlY3V0aW5nIHN0
YXRlbWVudCB0byByZW5hbWUgY29sdW1uIGluIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY5OCw3
ICs2OTgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRN
aXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKQogICAgIH0KIAogICAgIGlmICghY3JlYXRlVW5pcXVl
SW5kaWNlcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nVGFibGVzIGZhaWxl
ZCB0byBjcmVhdGUgdW5pcXVlIGluZGljZXMsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjph
ZGRNaXNzaW5nVGFibGVzIGZhaWxlZCB0byBjcmVhdGUgdW5pcXVlIGluZGljZXMsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNzc0LDcgKzc3NCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmlzRW1wdHkoKSBjb25zdAogICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhp
cy0+c2NvcGVkU3RhdGVtZW50KG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudCwgb2JzZXJ2
ZWREb21haW5Db3VudFF1ZXJ5LCAiaXNFbXB0eSJfcyk7CiAgICAgaWYgKCFzY29wZWRTdGF0ZW1l
bnQKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNFbXB0eSBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtOTY4LDEzICs5NjgsMTMgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2EKICAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1VzZXJJbnRlcmFjdGlvbkluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJz
dFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFn
ZUFjY2Vzc0FQSUluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3Rh
dGVtZW50LT5iaW5kSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRl
eCwgbG9hZFN0YXRpc3RpY3MuZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2Up
ICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5z
ZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwg
ZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWlu
IGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNl
cnZlZERvbWFpbiBmYWlsZWQgdG8gY29tbWl0LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk5Miw3
ICs5OTIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxh
dGlvbnNoaXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0bwogICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmRJbnQoMSwgKmZpcnN0RG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmRUZXh0KDIsIHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyBmYWlsZWQgdG8gYmlu
ZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hp
cEV4aXN0cyBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMDA2LDcgKzEw
MDYsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgogICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50
ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBk
b21haW5JREZyb21TdHJpbmdRdWVyeSwgImRvbWFpbklEIl9zKTsKICAgICBpZiAoIXNjb3BlZFN0
YXRlbWVudAogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5z
dHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLiBTdGF0ZW1lbnQ6ICVzLiBFcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIHNjb3BlZFN0YXRlbWVudC0+cXVlcnkoKS51dGY4KCku
ZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERnJvbVN0cmluZyBmYWlsZWQuIFN0YXRlbWVudDogJXMu
IEVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgc2NvcGVkU3RhdGVt
ZW50LT5xdWVyeSgpLnV0ZjgoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9CkBAIC0xMDQzLDIwICsxMDQzLDIwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QoY29uc3QgU3Ry
CiAgICAgCiAgICAgaWYgKGluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCiAgICAgICAgIHx8IGluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudC5iaW5kSW50
KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0IGZhaWxlZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxh
dGlvbnNoaXBMaXN0IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKICAgICBpZiAoc3RhdGVtZW50LmNvbnRhaW5zKCJS
RVBMQUNFIikpIHsKICAgICAgICAgaWYgKGluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudC5iaW5k
RG91YmxlKDIsIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlu
c2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5zZXJ0UmVs
YXRpb25zaGlwU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21h
aW5SZWxhdGlvbnNoaXBMaXN0IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZy
b21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZQogICAgIGZvciAoY29uc3QgYXV0byYgc3RhdGlz
dGljIDogc3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IGlu
c2VydE9ic2VydmVkRG9tYWluKHN0YXRpc3RpYyk7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5
U3RvcmUgaW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbXBsZXRlLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1lbW9yeVN0
b3JlIGluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21wbGV0ZSwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xMTUwLDcgKzExNTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aQogICAgIGlmICghc2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+
YmluZFRleHQoMSwgc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMuIFN0
YXRlbWVudCBmYWlsZWQgdG8gYmluZCBvciBkb21haW4gd2FzIG5vdCBmb3VuZCwgZXJyb3IgbWVz
c2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljLiBTdGF0ZW1l
bnQgZmFpbGVkIHRvIGJpbmQgb3IgZG9tYWluIHdhcyBub3QgZm91bmQsIGVycm9yIG1lc3NhZ2U6
ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGEKICAgICAgICAgaWYg
KCFkb21haW5JRChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pKSB7CiAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IGluc2VydE9ic2VydmVkRG9tYWluKHN0YXRpc3RpYyk7CiAgICAgICAgICAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptZXJnZVN0YXRpc3RpY3MgaW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbXBs
ZXRlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpt
ZXJnZVN0YXRpc3RpY3MgaW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbXBsZXRlLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTEyNjgsNyArMTI2OCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFJlY29y
ZHNEZWxldGVkQ291bnRGb3JEb21haW5zCiAgICAgU1FMaXRlU3RhdGVtZW50IGRvbWFpbnNUb1Vw
ZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21h
aW5zIFNFVCBkYXRhUmVjb3Jkc1JlbW92ZWQgPSBkYXRhUmVjb3Jkc1JlbW92ZWQgKyAxIFdIRVJF
IHJlZ2lzdHJhYmxlRG9tYWluIElOICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikp
OwogICAgIGlmIChkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9P
SwogICAgICAgICB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9E
T05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRTdGF0
aXN0aWNzRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppbmNyZW1lbnRTdGF0aXN0aWNzRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTEyODgs
NyArMTI4OCw3IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zCiAgICAgU1FMaXRlU3RhdGVtZW50
IGZpbmRTdWJyZXNvdXJjZXMobV9kYXRhYmFzZSwgIlNFTEVDVCBTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20uZnJvbURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tIElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5zIE9OIE9ic2VydmVkRG9tYWlucy5kb21haW5J
RCA9IFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9tYWluSUQgV0hFUkUgc3Vi
cmVzb3VyY2VEb21haW5JRCA9ID8gQU5EIE9ic2VydmVkRG9tYWlucy5pc1ByZXZhbGVudCA9IDAi
X3MpOwogICAgIGlmIChmaW5kU3VicmVzb3VyY2VzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgZmluZFN1YnJlc291cmNlcy5iaW5kSW50KDEsIHByaW1hcnlEb21haW5JRCkgIT0g
U1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNp
dmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4gZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZl
bHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KQEAgLTEzMDMsNyArMTMwMyw3IEBAIHVuc2lnbmVkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnRE
b21haW5zCiAgICAgU1FMaXRlU3RhdGVtZW50IGZpbmRUb3BGcmFtZXMobV9kYXRhYmFzZSwgIlNF
TEVDVCBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20uZnJvbURvbWFpbklEIGZyb20gVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tIElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5zIE9OIE9ic2Vy
dmVkRG9tYWlucy5kb21haW5JRCA9IFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9t
YWluSUQgV0hFUkUgdGFyZ2V0RG9tYWluSUQgPSA/IEFORCBPYnNlcnZlZERvbWFpbnMuaXNQcmV2
YWxlbnQgPSAwIl9zKTsKICAgICBpZiAoZmluZFRvcEZyYW1lcy5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCiAgICAgICAgIHx8IGZpbmRUb3BGcmFtZXMuYmluZEludCgxLCBwcmltYXJ5RG9tYWluSUQp
ICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVj
dXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWlu
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vy
c2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbiBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMzU2LDcgKzEzNTYsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0
ZWRUb1ByZXZhbAogICAgIFNRTGl0ZVN0YXRlbWVudCBtYXJrUHJldmFsZW50U3RhdGVtZW50KG1f
ZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFs
ZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5n
ZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRvcj4ocHJldmFsZW50RHVlVG9SZWRpcmVjdC5iZWdp
bigpLCBwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmVuZCgpKSksICIpIikpOwogICAgIGlmIChtYXJr
UHJldmFsZW50U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbWFy
a1ByZXZhbGVudFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRv
UHJldmFsZW50IGZhaWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQg
ZmFpbGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIH0KQEAgLTE1MTUsMTQgKzE1MTUsMTQgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJgogICAgIHN3aXRjaCAoY29va2llQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFt
ZURvbWFpbikpIHsKICAgICBjYXNlIENvb2tpZUFjY2Vzczo6Q2Fubm90UmVxdWVzdDoKICAgICAg
ICAgaWYgKFVOTElLRUxZKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJDYW5ub3QgZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8g
JXtwcml2YXRlfXMgc2luY2UgaXRzIGNvb2tpZXMgYXJlIGJsb2NrZWQgaW4gdGhpcmQtcGFydHkg
Y29udGV4dHMgYW5kIGl0IGhhcyBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbiBhcyBmaXJz
dC1wYXJ0eS4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJDYW5ub3QgZ3JhbnQgc3RvcmFnZSBh
Y2Nlc3MgdG8gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgc2luY2UgaXRzIGNvb2tpZXMgYXJlIGJs
b2NrZWQgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgYW5kIGl0IGhhcyBub3QgcmVjZWl2ZWQgdXNl
ciBpbnRlcmFjdGlvbiBhcyBmaXJzdC1wYXJ0eS4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SVRQRGVidWcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmco
IltJVFBdIENhbm5vdCBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAnIl9zLCBzdWJGcmFtZURvbWFp
bi5zdHJpbmcoKSwgIicgc2luY2UgaXRzIGNvb2tpZXMgYXJlIGJsb2NrZWQgaW4gdGhpcmQtcGFy
dHkgY29udGV4dHMgYW5kIGl0IGhhcyBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbiBhcyBm
aXJzdC1wYXJ0eS4iX3MpKTsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihT
dG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgQ29va2llQWNjZXNzOjpCYXNlZE9uQ29va2llUG9saWN5OgogICAgICAgICBp
ZiAoVU5MSUtFTFkoZGVidWdMb2dnaW5nRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSU5GTyhJVFBEZWJ1ZywgIk5vIG5lZWQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8g
JXtwcml2YXRlfXMgc2luY2UgaXRzIGNvb2tpZXMgYXJlIG5vdCBibG9ja2VkIGluIHRoaXJkLXBh
cnR5IGNvbnRleHRzLiBOb3RlIHRoYXQgdGhlIHVuZGVybHlpbmcgY29va2llIHBvbGljeSBtYXkg
c3RpbGwgYmxvY2sgdGhpcyB0aGlyZC1wYXJ0eSBmcm9tIHNldHRpbmcgY29va2llcy4iLCBzdWJG
cmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lORk8oSVRQRGVidWcsICJObyBuZWVkIHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNzIHRvICUi
IFBSSVZBVEVfTE9HX1NUUklORyAiIHNpbmNlIGl0cyBjb29raWVzIGFyZSBub3QgYmxvY2tlZCBp
biB0aGlyZC1wYXJ0eSBjb250ZXh0cy4gTm90ZSB0aGF0IHRoZSB1bmRlcmx5aW5nIGNvb2tpZSBw
b2xpY3kgbWF5IHN0aWxsIGJsb2NrIHRoaXMgdGhpcmQtcGFydHkgZnJvbSBzZXR0aW5nIGNvb2tp
ZXMuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OklUUERlYnVnLCBN
ZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltJVFBdIE5vIG5lZWQgdG8gZ3JhbnQgc3Rv
cmFnZSBhY2Nlc3MgdG8gJyJfcywgc3ViRnJhbWVEb21haW4uc3RyaW5nKCksICInIHNpbmNlIGl0
cyBjb29raWVzIGFyZSBub3QgYmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250ZXh0cy4gTm90ZSB0
aGF0IHRoZSB1bmRlcmx5aW5nIGNvb2tpZSBwb2xpY3kgbWF5IHN0aWxsIGJsb2NrIHRoaXMgdGhp
cmQtcGFydHkgZnJvbSBzZXR0aW5nIGNvb2tpZXMuIl9zKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzKTsKQEAgLTE1
MzUsNyArMTUzNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICBhdXRvIHVzZXJXYXNQ
cm9tcHRlZEVhcmxpZXIgPSBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0
KCpzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKTsKICAgICBpZiAodXNlcldh
c1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKSB7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkpKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAiQWJvdXQgdG8gYXNrIHRoZSB1c2VyIHdoZXRo
ZXIgdGhleSB3YW50IHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNzIHRvICV7cHJpdmF0ZX1zIHVuZGVy
ICV7cHJpdmF0ZX1zIG9yIG5vdC4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hldGhl
ciB0aGV5IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJSIgUFJJVkFURV9MT0dfU1RS
SU5HICIgdW5kZXIgJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgb3Igbm90LiIsIHN1YkZyYW1lRG9t
YWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpJVFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbSVRQ
XSBBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hldGhlciB0aGV5IHdhbnQgdG8gZ3JhbnQgc3RvcmFn
ZSBhY2Nlc3MgdG8gJyJfcywgc3ViRnJhbWVEb21haW4uc3RyaW5nKCksICInIHVuZGVyICciX3Ms
IHRvcEZyYW1lRG9tYWluLnN0cmluZygpLCAiJyBvciBub3QuIl9zKSk7CiAgICAgICAgIH0KICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNVc2Vy
UHJvbXB0KTsKQEAgLTE1NDQsNyArMTU0NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKIAog
ICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bjo6WWVzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkp
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAiU3RvcmFnZSBhY2Nl
c3Mgd2FzIGdyYW50ZWQgdG8gJXtwcml2YXRlfXMgdW5kZXIgJXtwcml2YXRlfXMuIiwgc3ViRnJh
bWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAi
U3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgdW5k
ZXIgJSIgUFJJVkFURV9MT0dfU1RSSU5HICIuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OklUUERl
YnVnLCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltJVFBdIFN0b3JhZ2UgYWNjZXNz
IHdhcyBncmFudGVkIHRvICciX3MsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLCAiJyB1bmRlciAn
Il9zLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKSwgIicuIl9zKSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNTUzLDcgKzE1NTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAgICAgaWYgKGlu
Y3JlbWVudFN0b3JhZ2VBY2Nlc3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBp
bmNyZW1lbnRTdG9yYWdlQWNjZXNzLmJpbmRJbnQoMSwgKnN1YkZyYW1lU3RhdHVzLnNlY29uZCkg
IT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGluY3JlbWVudFN0b3JhZ2VBY2Nlc3Muc3RlcCgpICE9
IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW4KICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKFVOTElLRUxZKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSU5GTyhJVFBEZWJ1ZywgIltUZW1wb3JhcnkgY29tYmF0aWJpbGl0eSBmaXhd
IFN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIGZvciAle3ByaXZhdGV9cyB1bmRlciBvcGVuZXIg
cGFnZSBmcm9tICV7cHJpdmF0ZX1zLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIG9wZW5l
ZCB3aW5kb3cuIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIG9wZW5lckRvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfSU5GTyhJVFBEZWJ1ZywgIltUZW1wb3JhcnkgY29tYmF0aWJpbGl0eSBmaXhdIFN0
b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIGZvciAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiB1bmRl
ciBvcGVuZXIgcGFnZSBmcm9tICUiIFBSSVZBVEVfTE9HX1NUUklORyAiLCB3aXRoIHVzZXIgaW50
ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3aW5kb3cuIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpJVFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJbSVRQXSBTdG9y
YWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJyJfcywgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLnN0cmluZygpLCAiJyB1bmRlciBvcGVuZXIgcGFnZSBmcm9tICciX3MsIG9wZW5lckRvbWFp
bi5zdHJpbmcoKSwgIicsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUgb3BlbmVkIHdpbmRv
dy4iX3MpKTsKICAgICB9CiAKQEAgLTE2NDksNyArMTY0OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3Qg
SGFzaFNlCiAgICAgU1FMaXRlU3RhdGVtZW50IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudChtX2Rh
dGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBncmFuZGZhdGhl
cmVkID0gMSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRv
bWFpbnMpLCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zIGZhaWxlZCwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAt
MTY4Myw3ICsxNjgzLDcgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUHJldmFsZW50UmUKICAgICAgICAgcHJpbWFy
eURvbWFpbnNUb0Jsb2NrLnVuY2hlY2tlZEFwcGVuZChkZWJ1Z01hbnVhbFByZXZhbGVudFJlc291
cmNlKCkpOwogCiAgICAgICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJEaWQgc2V0ICV7cHJpdmF0ZX1zIGFzIHBy
ZXZhbGVudCByZXNvdXJjZSBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBEZWJ1ZyBNb2RlLiIsIGRl
YnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJEaWQgc2V0ICUiIFBSSVZBVEVf
TE9HX1NUUklORyAiIGFzIHByZXZhbGVudCByZXNvdXJjZSBmb3IgdGhlIHB1cnBvc2VzIG9mIElU
UCBEZWJ1ZyBNb2RlLiIsIGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SVRQRGVidWcsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygi
W0lUUF0gRGlkIHNldCAnIl9zLCBkZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlKCkuc3RyaW5n
KCksICInIGFzIHByZXZhbGVudCByZXNvdXJjZSBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBEZWJ1
ZyBNb2RlLiJfcykpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc4MCw3ICsxNzgwLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvU2luY2VTYW0KICAgICBpZiAocmVtb3ZlUmVkaXJlY3RzVG9TaW5jZVNhbWVT
aXRlLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgcmVtb3ZlUmVkaXJlY3RzVG9T
aW5jZVNhbWVTaXRlLmJpbmRJbnQoMSwgKnRhcmdldFJlc3VsdC5zZWNvbmQpICE9IFNRTElURV9P
SwogICAgICAgICB8fCByZW1vdmVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGUuc3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQgZmFp
bGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhclRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKQEAgLTE3OTcsNyArMTc5Nyw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdp
c3RyYWJsZURvCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgyLCBtb3N0
UmVjZW50SW50ZXJhY3Rpb24uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVf
T0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgzLCBkb21haW4uc3RyaW5n
KCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNl
ckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
c2V0VXNlckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4MzYsNyArMTgzNiw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVXNlckludGVyYWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgaWYgKHJlbW92ZVN0b3JhZ2VBY2Nlc3MucHJlcGFy
ZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCByZW1vdmVTdG9yYWdlQWNjZXNzLmJpbmRJbnQo
MSwgKnRhcmdldFJlc3VsdC5zZWNvbmQpICE9IFNRTElURV9PSwogICAgICAgICB8fCByZW1vdmVT
dG9yYWdlQWNjZXNzLnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24gZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFj
dGlvbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCkBAIC0xODU0LDcgKzE4NTQsNyBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVn
aXN0cmFibAogICAgIGlmICghc2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9oYWRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xODkyLDcgKzE4OTIsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZQogICAgICAgICB8fCBzY29wZWRVcGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dC0+YmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkVXBkYXRlUHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0g
U1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwMyw3ICsxOTAzLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+YmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAg
IHx8IHNjb3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1fdXBkYXRlVmVyeVByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0x
OTIxLDcgKzE5MjEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPgogICAgIFNRTGl0ZVN0YXRl
bWVudCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRvbWFpbklEIElO
ICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25lZD46Oml0ZXJh
dG9yPihkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKGRv
bWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5z
QXNQcmV2YWxlbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5NjksNyArMTk2OSw3IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9y
RG9tYWluKFNRTGl0ZVN0YXRlbWVuCiAgICAgaWYgKCFwcmVkaWNhdGVTdGF0ZW1lbnQKICAgICAg
ICAgfHwgcHJlZGljYXRlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSwogICAgICAgICB8fCBwcmVkaWNhdGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNhdGVW
YWx1ZUZvckRvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluIGZhaWxlZCB0byBiaW5kLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiAh
IXByZWRpY2F0ZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwpAQCAtMjAzNiw3ICsyMDM2LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWIKICAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAogICAg
ICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0g
U1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9E
T05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVu
dFJlc291cmNlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVk
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJp
bmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBiaW5kLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCBmYWls
ZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogfQpAQCAtMjA3Nyw3ICsyMDc3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3YK
ICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVf
T0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5n
KCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCBmYWlsZWQgdG8gYmluZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBS
SVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTIxMDIsNyArMjEwMiw3IEBA
IFNlY29uZHMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1vc3RSZWNl
bnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+Ymlu
ZEludCg2LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZEludCg3LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCg4LCAqdG9wRnJhbWVEb21haW5JRCkg
IT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRN
b3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBTZWNvbmRzIHsgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6Tm9FeGlzdGluZ1RpbWVzdGFtcCAgfTsKICAgICB9CkBAIC0yMjA3LDcgKzIyMDcsNyBAQCBz
dGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3Jk
LCBPcHRpb25hbDx1bnNpZ25lZD4+CiAgICAgICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhp
cy0+c2NvcGVkU3RhdGVtZW50KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBkb21haW5J
REZyb21TdHJpbmdRdWVyeSwgImVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluIl9zKTsKICAgICAgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKICAgICAgICAgICAgIHx8
IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVf
T0spIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUmVnaXN0cmFibGVEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6
Tm8sIDAgfTsKICAgICAgICAgfQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgc3RkOjpwYWlyPFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwgT3B0aW9uYWw8dW5z
aWduZWQ+PgogICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0T2JzZXJ2ZWREb21haW4obmV3T2JzZXJ2
YXRpb24pOwogCiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIGlu
c2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21wbGV0ZSwgZXJyb3IgbWVzc2FnZTogJXtw
cml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lz
dHJhYmxlRG9tYWluIGluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21wbGV0ZSwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biB7IEFkZGVkUmVjb3JkOjpObywgV1RGOjpudWxsb3B0IH07CiAgICAgfQpAQCAtMjIzNSw3ICsy
MjM1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJE
YXRhYmFzZUNvbnRlbnRzKCkKICAgICBtX2RhdGFiYXNlLmNsZWFyQWxsVGFibGVzKCk7CiAKICAg
ICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFi
YXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cywgZGF0YWJhc2Ug
cGF0aDogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0
b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJEYXRhYmFzZUNvbnRlbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9M
T0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMjUxLDcgKzIyNTEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRAogICAg
IGlmICghc2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZElu
dCgxLCAqZG9tYWluSURUb1JlbW92ZSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZURhdGFGb3JEb21haW4gZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBA
IC0yMzA0LDcgKzIzMDQsNyBAQCBDb29raWVBY2Nlc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyhjb25zdCBTdWJSZXNvdXJjZQogICAgIFNRTGl0ZVN0
YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBpc1ByZXZhbGVudCwgaGFkVXNl
ckludGVyYWN0aW9uIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWlu
ID0gPyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAg
ICB8fCBzdGF0ZW1lbnQuYmluZFRleHQoMSwgc3VicmVzb3VyY2VEb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29va2ll
QWNjZXNzIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y29va2llQWNjZXNzIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKQEAgLTI0NzgsNyArMjQ3OCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRo
ZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAo
Y2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcgZmFp
bGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhckdyYW5kZmF0aGVyaW5nIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC0yNjIwLDcgKzI2MjAsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJ
Zk5lZWRlZCgpCiAgICAgU1FMaXRlU3RhdGVtZW50IHJlY29yZHNUb1BydW5lKG1fZGF0YWJhc2Us
ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgT1JERVIgQlkgaGFkVXNlcklu
dGVyYWN0aW9uLCBpc1ByZXZhbGVudCwgbGFzdFNlZW4gTElNSVQgPyIpOwogICAgIGlmIChyZWNv
cmRzVG9QcnVuZS5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHJlY29yZHNUb1By
dW5lLmJpbmRJbnQoMSwgY291bnRMZWZ0VG9QcnVuZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjYzNCw3ICsyNjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQogICAgIFNRTGl0ZVN0YXRlbWVu
dCBwcnVuZUNvbW1hbmQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiREVMRVRFIGZyb20gT2JzZXJ2
ZWREb21haW5zIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0VG9QcnVuZSwgIikiKSk7CiAgICAg
aWYgKHBydW5lQ29tbWFuZC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHBydW5l
Q29tbWFuZC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkIGZh
aWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNjQ5LDcgKzI2NDksNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbgogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgbGFzdFNl
ZW4uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
c2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9P
SwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlTGFzdFNlZW4gZmFpbGVk
IHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRh
dGVMYXN0U2VlbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzA5LDcgKzI3MDks
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRh
UmVjb3Jkc1JlbW92ZWQoY29uc3QgUmVnaXN0cgogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQgZmFpbGVkIHRv
IGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVE
YXRhUmVjb3Jkc1JlbW92ZWQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcyNCw3
ICsyNzI0LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXND
b3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2kKICAgICBpZiAoc3ViRnJhbWVVbmRl
clRvcEZyYW1lQ291bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVDb3VudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8ucHJlcGFyZSgpICE9IFNRTElURV9PSykgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y291bnRTdWJTdGF0aXN0aWNzVGVz
dGluZyBmYWlsZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNvdW50U3ViU3RhdGlzdGljc1Rlc3RpbmcgZmFpbGVkIHRvIHByZXBhcmUsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMjczNSw3ICsyNzM1LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0
IFJlZ2kKICAgICAgICAgfHwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lQ291bnQuYmluZEludCgy
LCBkb21haW5JRCh0b3BGcmFtZURvbWFpbikudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAg
IHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYmluZEludCgxLCBkb21haW5JRChzdWJm
cmFtZURvbWFpbikudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8uYmluZEludCgyLCBkb21haW5JRCh0b3BGcmFtZURvbWFpbikudmFs
dWUoKSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpjb3VudFN1YlN0YXRpc3RpY3NUZXN0aW5nIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y291bnRTdWJTdGF0aXN0aWNzVGVzdGluZyBm
YWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNzcwLDcgKzI3NzAsNyBAQCBT
dHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRCh1bnNpZ25lZAogICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+
c2NvcGVkU3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50LCBkb21h
aW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSwgImdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCJf
cyk7CiAgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50
LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRC4gU3RhdGVtZW50
IGZhaWxlZCB0byBwcmVwYXJlIG9yIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQuIFN0YXRlbWVudCBmYWls
ZWQgdG8gcHJlcGFyZSBvciBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0yODE2LDcgKzI4
MTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImCiAgICAgCiAgICAgaWYgKGRhdGEucHJlcGFy
ZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBkYXRhLmJpbmRJbnQoMSwgZG9tYWluSUQoUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbikpLnZhbHVlKCkp
ICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBw
ZW5kU3ViU3RhdGlzdGljTGlzdC4gU3RhdGVtZW50IGZhaWxlZCB0byBwcmVwYXJlIG9yIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0
aXN0aWNMaXN0LiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yODQ4LDcgKzI4NDgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGlm
ICghc2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQo
MSwgZG9tYWluKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVzb3VyY2VUb1N0cmluZy4gU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kIG9yIGRvbWFpbiB3YXMg
bm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVz
b3VyY2VUb1N0cmluZy4gU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kIG9yIGRvbWFpbiB3YXMgbm90
IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5MjYsNyArMjkyNiw3IEBAIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQg
ZG9tYWluSUQpCiAgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQtPmJp
bmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VuaXF1ZVJlZGly
ZWN0RXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZh
aWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI5MzcsNyArMjkzNyw3IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERXhpc3RzSW5E
YXRhYmFzZShpbnQgZG9tYWluSUQpCiAgICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCiAgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RF
eGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCiAgICAgICAgIHx8IG1fb2JzZXJ2
ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZh
aWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTI5NTMsNyArMjk1Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycygpCiAKICAgICBpZiAoY291
bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAg
IHx8IGNvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVz
UGFyYW1ldGVycyBjb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBl
cnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5n
RGF0ZXNQYXJhbWV0ZXJzIGNvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0
ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjk2MiwxNCArMjk2MiwxNCBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMo
KQogCiAgICAgaWYgKGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycyBnZXRGaXJzdE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0Rmlyc3RP
cGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQ
UklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X21vc3RSZWNlbnRPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0ZShnZXRNb3N0UmVjZW50T3Bl
cmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCksIGdldE1vc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgxKSwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0Rh
dGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsKIAogICAgIGlmIChnZXRPcGVyYXRpbmdEYXRl
V2luZG93U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycyBnZXRP
cGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCBkdXJpbmcgdGhlIGNhbGwgdG8gcHJl
cGFyZSgpIHdpdGggZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMuIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1
cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRl
bWVudCBmYWlsZWQgZHVyaW5nIHRoZSBjYWxsIHRvIHByZXBhcmUoKSB3aXRoIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiLiIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTI5NzksNyArMjk3OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycygpCiAgICAgZWxzZSB7
CiAgICAgICAgIGlmIChnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LmJpbmRJbnQoMSwg
b3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydCAtIDEpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
fHwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGlu
Z0RhdGVzUGFyYW1ldGVycyBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCB3
aXRoIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zLiBUaGUgZXJyb3IgY291bGQgYmUgaW4gdGhl
IGNhbGxzIHRvIGJpbmQoKSBvciBzdGVwKCkuIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3Bl
cmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQgZmFp
bGVkIHdpdGggZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HICIuIFRoZSBlcnJv
ciBjb3VsZCBiZSBpbiB0aGUgY2FsbHMgdG8gYmluZCgpIG9yIHN0ZXAoKS4iLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTkyLDcgKzI5OTIsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdE
YXRlc1BhcmFtZXRlcnMoKQogICAgICAgICBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50
LnJlc2V0KCk7CiAgICAgICAgIGlmIChnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LmJp
bmRJbnQoMSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIC0gMSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgICAgICB8fCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRl
T3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQg
ZmFpbGVkIHdpdGggZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMuIFRoZSBlcnJvciBjb3VsZCBi
ZSBpbiB0aGUgY2FsbHMgdG8gYmluZCgpIG9yIHN0ZXAoKS4iLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1
cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRl
bWVudCBmYWlsZWQgd2l0aCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcgIi4g
VGhlIGVycm9yIGNvdWxkIGJlIGluIHRoZSBjYWxscyB0byBiaW5kKCkgb3Igc3RlcCgpLiIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMwMTYsNyArMzAx
Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVU
b2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5CiAgICAgICAgIGlmIChkZWxldGVMZWFzdFJl
Y2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAg
ICAgICAgfHwgZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQo
MSwgcm93c1RvUHJ1bmUpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgZGVsZXRlTGVhc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0
aW5nRGF0ZUlmTmVjZXNzYXJ5IGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVu
dCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSBkZWxldGVMZWFz
dFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTMwMjcsNyArMzAyNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5CiAgICAgICAgIHx8
IGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgyLCB0b2RheS5tb250aCgpKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5k
SW50KDMsIHRvZGF5Lm1vbnRoRGF5KCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBpbnNlcnRP
cGVyYXRpbmdEYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3Bl
cmF0aW5nRGF0ZUlmTmVjZXNzYXJ5IGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFpbGVk
IHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KIApAQCAtMzA3Niw3ICszMDc2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QKICAg
ICAgICAgICAgIHx8IGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgyLCBkYXRl
VG9JbnNlcnQubW9udGgoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRPcGVy
YXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMywgZGF0ZVRvSW5zZXJ0Lm1vbnRoRGF5KCkpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyBpbnNlcnRPcGVyYXRpbmdE
YXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nIGluc2Vy
dE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICBpbnNl
cnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnJlc2V0KCk7CkBAIC0zMDk4LDEzICszMDk4LDEzIEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0CiAgICAgICAgIHx8IHNjb3BlZEluc2VydE9ic2VydmVk
RG9tYWluU3RhdGVtZW50LT5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1Vz
ZXJJbnRlcmFjdGlvbkluZGV4LCAwKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc2NvcGVkSW5z
ZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCAwKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgc2NvcGVkSW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoSXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4LCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nIGZhaWxlZCB0byBi
aW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhw
aXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKHNjb3BlZEluc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNG
b3JUZXN0aW5nIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyBmYWlsZWQgdG8gY29tbWl0LCBlcnJvciBt
ZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTMxNjEsNyArMzE2MSw3IEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIE9wdGlvbmFsPEF0dHJpYnV0ZWRQcml2CiAgICAg
aWYgKCFmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50CiAgICAgICAgIHx8IGZpbmRVbmF0
dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkg
IT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQt
PmJpbmRJbnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZmluZFVuYXR0cmlidXRl
ZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKQEAgLTMxNjksNyArMzE2OSw3IEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIE9wdGlvbmFsPEF0dHJpYnV0ZWRQcml2CiAgICAg
aWYgKCFmaW5kQXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudAogICAgICAgICB8fCBmaW5kQXR0cmli
dXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMiwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBm
aW5kQXR0cmlidXRlZFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGZpbmRBdHRyaWJ1dGVkUXVlcnksIGVy
cm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApAQCAt
MzIxNiw3ICszMjE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUMKICAgICAgICAgICAgIHx8
IHN0YXRlbWVudC5iaW5kVGV4dCgxMCwgc291cmNlVW5saW5rYWJsZVRva2VuID8gc291cmNlVW5s
aW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9P
SwogICAgICAgICAgICAgfHwgc3RhdGVtZW50LmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpbnNlcnRBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpbnNlcnRBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
QEAgLTMyMzIsNyArMzIzMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDCiAgICAgICAgIHx8
IHN0YXRlbWVudC5iaW5kVGV4dCg2LCBzb3VyY2VVbmxpbmthYmxlVG9rZW4gPyBzb3VyY2VVbmxp
bmthYmxlVG9rZW4tPnNpZ25hdHVyZUJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElU
RV9PSwogICAgICAgICB8fCBzdGF0ZW1lbnQuYmluZFRleHQoNywgc291cmNlVW5saW5rYWJsZVRv
a2VuID8gc291cmNlVW5saW5rYWJsZVRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5n
KCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9E
T05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogfQpAQCAtMzI0Miw3ICszMjQyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmUKICAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3Nl
dFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50LCBz
ZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5LCAibWFy
a0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGlu
ZyJfcyk7CiAKICAgICBpZiAoIXNjb3BlZFN0YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9y
VGVzdGluZywgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtB
bGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rpbmcs
IGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0K
QEAgLTMyNjEsNyArMzI2MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlCiAgICAgICAgIHx8
IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDIsICpkZXN0aW5hdGlv
blNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZW1vdmVVbmF0dHJpYnV0ZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTMzNDYsNyArMzM0Niw3IEBAIFZlY3Rv
cjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmFsCiAgICAgYXV0byBhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0g
dGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RhdGVtZW50LCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSwg
InByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmciX3MpOwogCiAgICAgaWYgKCFhdHRyaWJ1
dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZywgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCkBAIC0z
Mzc1LDcgKzMzNzUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KE9wdGlvbmFsPAogICAgICAgICB8fCBjbGVh
clVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgYmluZFBhcmFtZXRlcikg
IT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGNsZWFyVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50
LT5iaW5kVGV4dCgyLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgY2xl
YXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBjbGVhclVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
Y2xlYXJVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApAQCAtMzM4NSw3ICszMzg1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChPcHRpb25hbDwKICAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCBiaW5kUGFyYW1ldGVyKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBiaW5kUGFyYW1l
dGVyKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY2xlYXJBdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjbGVhckF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1l
bnQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IH0KQEAgLTMzOTgsNyArMzM5OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKICAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3VibGUo
MSwgZXhwaXJhdGlvblRpbWVGcmFtZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNR
TElURV9PSwogICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMzQ0Nyw3ICsz
NDQ3LDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKIHsKICAgICBTUUxpdGVTdGF0ZW1lbnQgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzKG1fZGF0YWJhc2UsICJTRUxFQ1QgKFNFTEVD
VCBDT1VOVCgqKSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBj
bnQxLCAoU0VMRUNUIENPVU5UKCopIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KSBhcyBjbnQyIl9zKTsKICAgICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhp
c3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sgfHwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
RXhpc3RzLnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CkBAIC0zNDU4LDcgKzM0NTgsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQogICAgIGF1
dG8gdW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
YWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNTdGF0ZW1l
bnQsIGFsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVl
cnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nIl9zKTsKIAogICAgIGlmICghdW5h
dHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nLCBlcnJvciBtZXNzYWdlOiAl
e3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
ZywgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
CkBAIC0zNDc4LDcgKzM0NzgsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQogICAgIGF1dG8gYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2FsbEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0YXRlbWVudCwgYWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50UXVlcnksICJwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
Il9zKTsKIAogICAgIGlmICghYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
ZywgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmcsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KIApAQCAtMzU5NCw3ICszNTk0LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6
UHJpdmF0ZUMKICAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LmJpbmRJbnQoMSwg
KnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGNsZWFyQXR0cmli
dXRlZFN0YXRlbWVudC5iaW5kSW50KDIsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgIT0gU1FM
SVRFX09LCiAgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2Vu
dEF0dHJpYnV0aW9uIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0ZXAsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTM2
MDksMTMgKzM2MDksMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMKICAgICBpZiAoZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAg
ICAgICB8fCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZVN0YXRlbWVudC5iaW5kSW50KDEsIGV4
cGlyZWRUaW1lVG9TZW5kLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlU3RhdGVtZW50LnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBl
cnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLCBlcnJvciBtZXNzYWdl
OiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBpZiAoZWFybGll
c3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb25TdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsIGVycm9yIG1l
c3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIA0K
</data>

          </attachment>
      

    </bug>

</bugzilla>