<?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>209836</bug_id>
          
          <creation_ts>2020-03-31 15:05:48 -0700</creation_ts>
          <short_desc>Requests for messageHandlers() in the DOMWindow should be ignored for non-app-bound navigations</short_desc>
          <delta_ts>2020-03-31 18:42:59 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>thorton</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1636262</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 15:05:48 -0700</bug_when>
    <thetext>The call to messageHandlers() in the DOMWindow should have protections for non-app-bound navigations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636263</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 15:06:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/61071607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636269</commentid>
    <comment_count>2</comment_count>
      <attachid>395097</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 15:20:59 -0700</bug_when>
    <thetext>Created attachment 395097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636272</commentid>
    <comment_count>3</comment_count>
      <attachid>395097</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 15:33:35 -0700</bug_when>
    <thetext>Comment on attachment 395097
Patch

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

&gt; Source/WebCore/page/WebKitNamespace.cpp:53
&gt; +    if (frame()-&gt;loader().client().hasNavigatedAwayFromAppBoundDomain()) {

What guarantees frame() is non-null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636275</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 15:39:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 395097 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395097&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/WebKitNamespace.cpp:53
&gt; &gt; +    if (frame()-&gt;loader().client().hasNavigatedAwayFromAppBoundDomain()) {
&gt; 
&gt; What guarantees frame() is non-null?

Nothing, I will add a check here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636278</commentid>
    <comment_count>5</comment_count>
      <attachid>395099</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 15:43:40 -0700</bug_when>
    <thetext>Created attachment 395099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636317</commentid>
    <comment_count>6</comment_count>
      <attachid>395099</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-31 17:19:16 -0700</bug_when>
    <thetext>Comment on attachment 395099
Patch

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

&gt; Source/WebCore/page/WebKitNamespace.cpp:33
&gt; +#define RELEASE_LOG_ERROR_IF_ALLOWED(channel, fmt, ...) RELEASE_LOG_ERROR_IF(frame()-&gt;isAlwaysOnLoggingAllowed(), channel, &quot;%p - WebKitNamespace::&quot; fmt, this, ##__VA_ARGS__)

The frame() deference in here without null check is a foot fun and is bound to introduce crashes in the future. Please add a null check for frame() inside the macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636321</commentid>
    <comment_count>7</comment_count>
      <attachid>395111</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 17:26:08 -0700</bug_when>
    <thetext>Created attachment 395111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636322</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 17:27:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 395099 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395099&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/WebKitNamespace.cpp:33
&gt; &gt; +#define RELEASE_LOG_ERROR_IF_ALLOWED(channel, fmt, ...) RELEASE_LOG_ERROR_IF(frame()-&gt;isAlwaysOnLoggingAllowed(), channel, &quot;%p - WebKitNamespace::&quot; fmt, this, ##__VA_ARGS__)
&gt; 
&gt; The frame() deference in here without null check is a foot fun and is bound
&gt; to introduce crashes in the future. Please add a null check for frame()
&gt; inside the macro.

Oops missed this one. Thanks for pointing it out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636323</commentid>
    <comment_count>9</comment_count>
      <attachid>395111</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-31 17:32:28 -0700</bug_when>
    <thetext>Comment on attachment 395111
Patch

I love that 90% of this patch is test case. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636324</commentid>
    <comment_count>10</comment_count>
      <attachid>395111</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-31 17:33:18 -0700</bug_when>
    <thetext>Comment on attachment 395111
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636347</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-31 18:37:14 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #9)
&gt; Comment on attachment 395111 [details]
&gt; Patch
&gt; 
&gt; I love that 90% of this patch is test case. :-)

I know, such a tiny code change!

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636351</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-31 18:42:58 -0700</bug_when>
    <thetext>Committed r259331: &lt;https://trac.webkit.org/changeset/259331&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395111.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395097</attachid>
            <date>2020-03-31 15:20:59 -0700</date>
            <delta_ts>2020-03-31 15:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209836-20200331152058.patch</filename>
            <type>text/plain</type>
            <size>22485</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJkYmUzZjczNDU2ZjYy
YTcxNDdiY2NmZjcwNjk2YWQzZjhlMzUyZS4uYmNjNzM2MzM2ZjFlNTk4ZjRlMWUxN2ZhNDU3M2E5
MWZiZDM5NGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAzLTMxICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcXVlc3Rz
IGZvciBtZXNzYWdlSGFuZGxlcnMoKSBpbiB0aGUgRE9NV2luZG93IHNob3VsZCBiZSBpZ25vcmVk
IGZvciBub24tYXBwLWJvdW5kIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
MDcxNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElnbm9yZSBjYWxscyBmb3IgV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxlcnMoKSBhbmQg
YWRkIHJlbGVhc2UKKyAgICAgICAgbG9nZ2luZyBpZiB0aGUgZG9tYWluIGlzIG5vdCBhcHAtYm91
bmQuCisKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycyk6CisKIDIwMjAtMDMtMzEgIHlv
dWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBTRFAgZmlsdGVy
aW5nIGFmdGVyIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTg1NDUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAppbmRleCA5MzA5NGZjNGFmYzMxNDNlODRh
MDY1MDRhZDhjODdkZGVmNWM3ZDU0Li4yMzRmMDExNmY5MjA3MThlZDM1M2NjNjgzMjhmY2E1ZDY1
NjMyNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCkBAIC0yNiw2
ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVzcGFj
ZS5oIgogCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworI2RlZmluZSBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihmcmFt
ZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViS2l0TmFt
ZXNwYWNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKwogI2lmIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTQ0LDkgKzUwLDE2
IEBAIFdlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSgpID0gZGVmYXVsdDsKIAogVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSogV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxl
cnMoKQogeworICAgIGlmIChmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChMb2FkaW5nLCAiSWdub3JpbmcgbWVzc2FnZUhhbmRsZXJzKCkgcmVxdWVzdCBmb3Ig
bm9uIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CiAgICAgcmV0dXJuICZtX21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlLmdldCgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRM
RVJTKQorCisjdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU5ZjQyZjk0NjZmYzA2NmYw
YTViYTA2ZDY2NmZkN2Q4YWU0OThlYzcuLjM0ZDE3YTU0OTAyZjg0OWYyMzRlMzlkNGQ4MzA3YjBm
NDgzNzI0YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wMy0zMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXF1ZXN0cyBmb3IgbWVzc2FnZUhhbmRsZXJz
KCkgaW4gdGhlIERPTVdpbmRvdyBzaG91bGQgYmUgaWdub3JlZCBmb3Igbm9uLWFwcC1ib3VuZCBu
YXZpZ2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5ODM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTA3MTYwNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0IG9mIHRoaXMgcGF0Y2gg
aXMgY2hhbmdlcyB0byB0aGUgdGVzdHMsIHdoaWNoIGZvcm1lcmx5IHJlbGllZAorICAgICAgICBv
biBtZXNzYWdlIGhhbmRsZXJzIHRvIHRlc3Qgc2NyaXB0IGluamVjdGlvbiBwcm90ZWN0aW9ucy4g
SSByZXdyb3RlCisgICAgICAgIHRocmVlIHRlc3RzIHRvIHJlbW92ZSB0aGUgdXNlIG9mIG1lc3Nh
Z2UgaGFuZGxlcnMgd2hpY2ggd2VyZSB1c2VkIHRvCisgICAgICAgIGNvbmZpcm0gbm9ybWFsIHNj
cmlwdCBpbmplY3Rpb24gYmVoYXZpb3IgYmVmb3JlIGVuYWJsaW5nIEluLUFwcAorICAgICAgICBC
cm93c2VyIFByaXZhY3kuIFNpbmNlIG5vcm1hbCBzY3JpcHQgaW5qZWN0aW9uIGJlaGF2aW9yIGlz
IHRlc3RlZCBpbgorICAgICAgICBXS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBhbHJlYWR5IGl0
IGlzIHVuZWNlc3NhcnkgdG8gdGVzdCBoZXJlLgorCisgICAgICAgIEkgcmVtb3ZlZCBvbmUgdGVz
dCwgSWdub3JlQXBwQm91bmREb21haW5zQWNjZXB0c1VzZXJTY3JpcHRzLCB3aGljaAorICAgICAg
ICBmdWxseSByZWxpZWQgb24gbWVzc2FnZSBoYW5kbGVyIHVzZSBhbmQgY291bGQgbm90IGJlIHRl
c3RlZCB3aXRob3V0CisgICAgICAgIHNvbWVob3cgZGlzYWJsaW5nIHRoaXMgZmVhdHVyZS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtUZXN0SW5BcHBCcm93c2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWw6CisgICAgICAgIEFk
ZCBhIG1lc3NhZ2UgaGFuZGxlciB0byB0aGlzIHBhZ2UgdG8gZGVtb25zdHJhdGUgdGhhdCBtZXNz
YWdlCisgICAgICAgIGhhbmRsZXJzIHdvcmsgZm9yIGFwcC1ib3VuZCBuYXZpZ2F0aW9ucyAoZmls
ZTovLyBwcm90b2NvbCBpcyBhbHdheXMKKyAgICAgICAgYXBwLWJvdW5kKS4KKwogMjAyMC0wMy0z
MCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFBpUCBzdXBwb3J0
IG9mIE1pbmlCcm93c2VyIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IGQ5
ZTYxODFhNDY0MWEwNGY2ODI0NTk4ZWRlOGQyZDAwZDBjYzE4ZDUuLjI1ZWMwMTY1YmY0NjNhMWQ1
MmEwZmMxNmE0Y2M1Y2Q3NGUxMDNkZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTQ4
LDE4ICs0OCw2IEBAIHN0YXRpYyBib29sIGlzRG9uZTsKIAogc3RhdGljIE5TU3RyaW5nICogY29u
c3QgdXNlclNjcmlwdFNvdXJjZSA9IEAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkID0gdHJ1
ZSI7CiAKLUBpbnRlcmZhY2UgVGVzdEluQXBwQnJvd3NlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIDog
TlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBUZXN0SW5BcHBCcm93c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIKLQotLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdl
Ci17Ci0gICAgaXNEb25lID0gdHJ1ZTsKLX0KLQotQGVuZAotCiBAaW50ZXJmYWNlIEluQXBwQnJv
d3NlclNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgogQGVuZAog
CkBAIC02OSwxMyArNTcsMTUgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKIHsKICAgICBOU1N0
cmluZyAqcmVzcG9uc2UgPSBuaWw7CiAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNF
cXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCJd
KQotICAgICAgICByZXNwb25zZSA9IEAiPHNjcmlwdD53aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SW5BcHBCcm93c2VyUHJpdmFjeS5wb3N0TWVzc2FnZShcImRvbmVcIik7PC9zY3Jp
cHQ+IjsKKyAgICAgICAgcmVzcG9uc2UgPSBAIjxzY3JpcHQ+d2luZG93LndrVXNlclNjcmlwdElu
amVjdGVkID0gZmFsc2U7PC9zY3JpcHQ+IjsKICAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVS
TC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNl
ci1hZ2VudC1zY3JpcHQiXSkKICAgICAgICAgcmVzcG9uc2UgPSBAIjxzY3JpcHQ+IHdpbmRvdy53
a1VzZXJTY3JpcHRJbmplY3RlZCA9IHRydWU7IDwvc2NyaXB0PiI7CiAgICAgZWxzZSBpZiAoW3Rh
c2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl0pCiAgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9k
eSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiI7CiAgICAgZWxzZSBpZiAo
W3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzLWlmcmFtZSJdKQogICAgICAgICByZXNwb25z
ZSA9IEAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjxpZnJhbWUgc3JjPSdp
bi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1z
aGVldHMnPjwvaWZyYW1lPjwvYm9keT4iOworICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJM
LnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC1tZXNz
YWdlLWhhbmRsZXIiXSkKKyAgICAgICAgcmVzcG9uc2UgPSBAIjxib2R5IHN0eWxlPSdiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsnPjwvYm9keT48c2NyaXB0PmlmICh3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycylcbndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKCdGYWlsZWQnKTsgXG5lbHNlIFxuIGRvY3VtZW50LmJvZHkuc3R5bGUuYmFja2dy
b3VuZCA9ICdyZWQnOzwvc2NyaXB0PiI7CiAKICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpbcmVzcG9uc2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsK
QEAgLTk3LDQ3ICs4NywyNCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RTZXR0aW5ncygpCiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKIHsKLSAgICBhdXRvIG1lc3NhZ2VIYW5k
bGVyID0gYWRvcHROUyhbW1Rlc3RJbkFwcEJyb3dzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdF0pOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIGluaXRpYWxpemVJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhb
W1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6dXNlclNjcmlwdFNvdXJjZSBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpZRVNdKTsKIAotICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgY29uZmlndXJhdGlv
biB3aXRob3V0IEluLUFwcCBCcm93c2VyIFByaXZhY3kgc2V0dGluZ3MgdG8gZW5zdXJlIGl0IHdv
cmtzIGFzIGV4cGVjdGVkLgogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3Nl
dE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOk5PXTsKLQogICAg
IGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
Y2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAg
CiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6
dXNlclNjcmlwdC5nZXQoKV07Ci0gICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9s
bGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0
ZXN0SW5BcHBCcm93c2VyUHJpdmFjeSJdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107CisgICAgW1tjb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsK
IAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZh
Y3ktdGVzdC11c2VyLXNjcmlwdCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIAotICAgIFt3ZWJWaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9y
KSB7Ci0gICAgICAgIEVYUEVDVF9FUShZRVMsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIl0gYm9vbFZhbHVlXSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAg
ICB9XTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKLQotICAgIC8vIE5vdyBzZXR1cCBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHNl
dHRpbmdzIGFuZCBleHBlY3QgYSBmYWlsZWQgc2NyaXB0IGV2YWx1YXRpb24gcmVzdWx0LCBhbmQg
YW4gZXJyb3IgbWVzc2FnZS4KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBpbml0aWFsaXplSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107Ci0gICAgW1tj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6
WUVTXTsKLQotICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OwotICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICAvLyBDaGVjayB0aGF0IHJlcXVlc3QgdG8gcmVh
ZCB0aGlzIHZhcmlhYmxlIGlzIHJlamVjdGVkLgotICAgIFt3ZWJWaWV3MiBldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4o
aWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIg
Y29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxh
YmxlIGVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOwogICAgICAgICBFWFBF
Q1RfVFJVRSghIWVycm9yKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTE0OCw5ICsxMTUs
OSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNl
clNjcmlwdEF0U3RhcnQpCiAKICAgICAvLyBUdXJuIGJhY2sgb24gSW4tQXBwIEJyb3dzZXIgUHJp
dmFjeSBxdWlya3MgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZh
cmlhYmxlIHdhcyByZWplY3RlZC4KICAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbW1t3ZWJWaWV3
MiBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrczpZRVNdOwotICAgIFt3ZWJWaWV3MiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
d2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJl
c3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBFWFBFQ1RfRVEoTk8s
IFtbd2ViVmlldzIgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJT
Y3JpcHRJbmplY3RlZCJdIGJvb2xWYWx1ZV0pOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsK
KyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5q
ZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfRVEoTk8sIFtyZXN1bHQgYm9vbFZh
bHVlXSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICB9XTsKQEAgLTE2MSw0NyArMTI4LDI0IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKIAogVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdEVu
ZCkKIHsKLSAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RJbkFwcEJyb3dz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGlzRG9uZSA9IGZhbHNl
OworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAg
YXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhT
b3VyY2U6dXNlclNjcmlwdFNvdXJjZSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlv
blRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFtZU9ubHk6WUVTXSk7Ci0KLSAgICAvLyBGaXJz
dCBzZXQgdXAgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBJbi1BcHAgQnJvd3NlciBQcml2YWN5
IHNldHRpbmdzIHRvIGVuc3VyZSBpdCB3b3JrcyBhcyBleHBlY3RlZC4KKyAgICAKICAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vz
c1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3M6WUVTXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZDpOT107Ci0KICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9w
dE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwotICAgIAogICAgIFtjb25maWd1cmF0aW9uLnVzZXJD
b250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFtj
b25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEluQXBwQnJvd3NlclByaXZhY3kiXTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3M6Tk9dOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAt
YnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQiXV07CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLSAgICAKLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
d2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJl
c3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBFWFBFQ1RfRVEoWUVT
LCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJT
Y3JpcHRJbmplY3RlZCJdIGJvb2xWYWx1ZV0pOwotICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJv
cik7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBpc0RvbmUgPSBmYWxz
ZTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICAvLyBOb3cg
c2V0dXAgSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBzZXR0aW5ncyBhbmQgZXhwZWN0IGEgZmFpbGVk
IHNjcmlwdCBldmFsdWF0aW9uIHJlc3VsdCwgYW5kIGFuIGVycm9yIG1lc3NhZ2UuCi0gICAgaXNE
b25lID0gZmFsc2U7Ci0gICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3M6Tk9dOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107Ci0KLSAgICBhdXRvIHdlYlZpZXcy
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBbd2ViVmlldzIgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCByZXF1ZXN0IHRvIHJlYWQgdGhpcyB2YXJpYWJsZSBpcyByZWplY3Rl
ZC4KLSAgICBbd2ViVmlldzIgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlw
dEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051
bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewogICAgICAgICBFWFBF
Q1RfRkFMU0UocmVzdWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CiAgICAgICAg
IGlzRG9uZSA9IHRydWU7CkBAIC0yMTIsOSArMTU2LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdEVuZCkKIAogICAgIC8vIFR1
cm4gYmFjayBvbiBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHF1aXJrcyB0byBjaGVjayB0aGF0IG9y
aWdpbmFsIGF0dGVtcHQgdG8gc2V0IHRoaXMgdmFyaWFibGUgd2FzIHJlamVjdGVkLgogICAgIGlz
RG9uZSA9IGZhbHNlOwotICAgIFtbW3dlYlZpZXcyIGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2Vz
XSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0gICAgW3dlYlZpZXcy
IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVy
cm9yKSB7Ci0gICAgICAgIEVYUEVDVF9FUShOTywgW1t3ZWJWaWV3MiBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIl0gYm9vbFZhbHVlXSk7
CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9FUShOTywgW3Jlc3VsdCBib29sVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KCEhZXJyb3IpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwpAQCAtMjM4LDcgKzE4
Miw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRV
c2VyQWdlbnRTY3JpcHRzKQogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKIAogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1Vz
ZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0
LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIEVYUEVDVF9FUShZRVMsIFtb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlw
dEluamVjdGVkIl0gYm9vbFZhbHVlXSk7CisgICAgICAgIEVYUEVDVF9FUShZRVMsIFtyZXN1bHQg
Ym9vbFZhbHVlXSk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTI2OCwx
MSArMjEyLDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZh
aWxlZFVzZXJBZ2VudFNjcmlwdHMpCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFN3YXBCYWNr
VG9BcHBCb3VuZFJlamVjdHNVc2VyU2NyaXB0KQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7Ci0gICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0
TlMoW1tUZXN0SW5BcHBCcm93c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
ICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0
V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwogCiAgICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0g
ICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SW5BcHBCcm93c2VyUHJpdmFj
eSJdOwogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93
c2VyUHJpdmFjeVF1aXJrczpOT107CiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKIApAQCAtMjgzLDcgKzIyNSw2IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgU3dhcEJhY2tUb0FwcEJvdW5kUmVqZWN0c1VzZXJT
Y3JpcHQpCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1i
cm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgW2Nv
bmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU2NyaXB0SW1tZWRpYXRl
bHk6dXNlclNjcmlwdC5nZXQoKV07CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
d2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxs
YWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKQEAgLTM4NiwzOSArMzI3
LDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEZpbGVzQXJlQXBwQm91bmQpCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1URVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIElnbm9yZUFwcEJvdW5kRG9tYWluc0FjY2VwdHNVc2VyU2NyaXB0cykKLXsK
LSAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwotICAgIGF1
dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluQXBwQnJvd3NlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhb
W1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6dXNlclNjcmlwdFNvdXJjZSBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpZRVNdKTsKLQotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRl
c3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmln
dXJlSlNDRm9yVGVzdGluZzpZRVNdOwotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEluQXBwQnJvd3NlclByaXZhY3kiXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOwotICAgIFtbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllF
U107Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6WUVTXTsK
LQotICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVI
YW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07
Ci0gICAgCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
LSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS10ZXN0LXVzZXItc2NyaXB0Il1dOwotICAgIAotICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwotICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBbY29u
ZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVs
eTp1c2VyU2NyaXB0LmdldCgpXTsKLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3
aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxh
YmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBFWFBFQ1Rf
RVEoWUVTLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy53
a1VzZXJTY3JpcHRJbmplY3RlZCJdIGJvb2xWYWx1ZV0pOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
ISFlcnJvcik7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBpc0RvbmUg
PSBmYWxzZTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KIHN0
YXRpYyBOU1N0cmluZyAqc3R5bGVTaGVldFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91bmQtY29s
b3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0iOwogc3RhdGljIE5TU3RyaW5nICpiYWNrZ3JvdW5kQ29s
b3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7CiBzdGF0aWMgTlNTdHJpbmcg
KmZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF0uY29udGVudERvY3VtZW50
LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7CkBAIC01
MDYsNiArNDE0LDcwIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRVc2Vy
U3R5bGVTaGVldEFmZmVjdGluZ0FsbEZyYW1lc0ZhaWxzKQogICAgIGV4cGVjdFNjcmlwdEV2YWx1
YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJl
ZEluUkdCKTsKIH0KIAorVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFp
bkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgUmV0
YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBzY2hlbWVI
YW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKwor
ICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJGYWlsZWQiIGFjdGlv
bjpeKCkgeworICAgICAgICBGQUlMKCk7CisgICAgfV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LW1lc3NhZ2Ut
aGFuZGxlciJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBTZXQgdGhl
IGJhY2tncm91bmQgY29sb3IgdG8gcmVkIGlmIG1lc3NhZ2UgaGFuZGxlcnMgcmV0dXJuZWQgbnVs
bCBzbyB3ZSBjYW4KKyAgICAvLyBjaGVjayB3aXRob3V0IG5lZWRpbmcgYSBtZXNzYWdlIGhhbmRs
ZXIuCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNr
Z3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZFRvTm9uQXBwQm91bmREb21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFuZGxl
cnMpCit7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsK
KyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJy
b3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFw
cC1icm93c2VyIl07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJS
ZWNlaXZpbmdNZXNzYWdlOkAiUGFzc2VkIiBhY3Rpb246XigpIHsKKyAgICAgICAgaXNEb25lID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIC8vIE5hdmlnYXRlIHRvIGFuIGFwcC1ib3VuZCBkb21haW4g
YW5kIHdhaXQgZm9yIHRoZSAncGFzcycgbWVzc2FnZSB0byB0ZXN0IHRoZSBoYW5kbGVyIGlzIHdv
cmtpbmcgZmluZS4KKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpbi1h
cHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAg
ICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiRmFpbGVkIiBhY3Rpb246
XigpIHsKKyAgICAgICAgRkFJTCgpOworICAgIH1dOworCisgICAgLy8gTmF2aWdhdGUgYXdheSBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAt
YnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtbWVzc2FnZS1oYW5kbGVyIl1d
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3QyXTsKKyAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBTZXQgdGhlIGJhY2tncm91
bmQgY29sb3IgdG8gcmVkIGlmIG1lc3NhZ2UgaGFuZGxlcnMgcmV0dXJuZWQgbnVsbCBzbyB3ZSBj
YW4KKyAgICAvLyBjaGVjayB3aXRob3V0IG5lZWRpbmcgYSBtZXNzYWdlIGhhbmRsZXIuCisgICAg
ZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29s
b3JTY3JpcHQsIHJlZEluUkdCKTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxv
Y2FsLWZpbGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwKaW5kZXggZWFjYTNmNDlmZDE1ODQw
YTM2ODhhMTBhOTFiNTY1MjQ1NjY4OTNjNS4uYTEyNGIwN2FlNGI4M2JkMGNlZTk1NTM1NGUzNDVk
ZTBlNDlmYWQxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2luLWFwcC1icm93c2VyLXByaXZhY3ktbG9j
YWwtZmlsZS5odG1sCkBAIC0yLDQgKzIsOCBAQAogPGh0bWw+CiA8Ym9keT4KIDwvYm9keT4KKzxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzKQorICAgICAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnUGFz
c2VkJyk7Cis8L3NjcmlwdD4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395099</attachid>
            <date>2020-03-31 15:43:40 -0700</date>
            <delta_ts>2020-03-31 17:26:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209836-20200331154339.patch</filename>
            <type>text/plain</type>
            <size>22496</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJkYmUzZjczNDU2ZjYy
YTcxNDdiY2NmZjcwNjk2YWQzZjhlMzUyZS4uYmNjNzM2MzM2ZjFlNTk4ZjRlMWUxN2ZhNDU3M2E5
MWZiZDM5NGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAzLTMxICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcXVlc3Rz
IGZvciBtZXNzYWdlSGFuZGxlcnMoKSBpbiB0aGUgRE9NV2luZG93IHNob3VsZCBiZSBpZ25vcmVk
IGZvciBub24tYXBwLWJvdW5kIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
MDcxNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElnbm9yZSBjYWxscyBmb3IgV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxlcnMoKSBhbmQg
YWRkIHJlbGVhc2UKKyAgICAgICAgbG9nZ2luZyBpZiB0aGUgZG9tYWluIGlzIG5vdCBhcHAtYm91
bmQuCisKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycyk6CisKIDIwMjAtMDMtMzEgIHlv
dWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBTRFAgZmlsdGVy
aW5nIGFmdGVyIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTg1NDUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAppbmRleCA5MzA5NGZjNGFmYzMxNDNlODRh
MDY1MDRhZDhjODdkZGVmNWM3ZDU0Li5hN2Q4ODUxMDUzZWE2MDdkZWE0YzBmMGE2OWE4NmNkYThk
NWEzYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCkBAIC0yNiw2
ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVzcGFj
ZS5oIgogCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworI2RlZmluZSBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihmcmFt
ZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gV2ViS2l0TmFt
ZXNwYWNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKwogI2lmIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTQ0LDkgKzUwLDE2
IEBAIFdlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSgpID0gZGVmYXVsdDsKIAogVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSogV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxl
cnMoKQogeworICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmluZyBtZXNzYWdlSGFuZGxlcnMoKSBy
ZXF1ZXN0IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKICAgICByZXR1cm4gJm1fbWVzc2FnZUhhbmRsZXJOYW1lc3BhY2UuZ2V0KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCisKKyN1bmRlZiBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VECmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTlmNDJm
OTQ2NmZjMDY2ZjBhNWJhMDZkNjY2ZmQ3ZDhhZTQ5OGVjNy4uMzRkMTdhNTQ5MDJmODQ5ZjIzNGUz
OWQ0ZDgzMDdiMGY0ODM3MjRiMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTMxICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcXVlc3RzIGZvciBtZXNz
YWdlSGFuZGxlcnMoKSBpbiB0aGUgRE9NV2luZG93IHNob3VsZCBiZSBpZ25vcmVkIGZvciBub24t
YXBwLWJvdW5kIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDk4MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMDcxNjA3Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2Yg
dGhpcyBwYXRjaCBpcyBjaGFuZ2VzIHRvIHRoZSB0ZXN0cywgd2hpY2ggZm9ybWVybHkgcmVsaWVk
CisgICAgICAgIG9uIG1lc3NhZ2UgaGFuZGxlcnMgdG8gdGVzdCBzY3JpcHQgaW5qZWN0aW9uIHBy
b3RlY3Rpb25zLiBJIHJld3JvdGUKKyAgICAgICAgdGhyZWUgdGVzdHMgdG8gcmVtb3ZlIHRoZSB1
c2Ugb2YgbWVzc2FnZSBoYW5kbGVycyB3aGljaCB3ZXJlIHVzZWQgdG8KKyAgICAgICAgY29uZmly
bSBub3JtYWwgc2NyaXB0IGluamVjdGlvbiBiZWhhdmlvciBiZWZvcmUgZW5hYmxpbmcgSW4tQXBw
CisgICAgICAgIEJyb3dzZXIgUHJpdmFjeS4gU2luY2Ugbm9ybWFsIHNjcmlwdCBpbmplY3Rpb24g
YmVoYXZpb3IgaXMgdGVzdGVkIGluCisgICAgICAgIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
IGFscmVhZHkgaXQgaXMgdW5lY2Vzc2FyeSB0byB0ZXN0IGhlcmUuCisKKyAgICAgICAgSSByZW1v
dmVkIG9uZSB0ZXN0LCBJZ25vcmVBcHBCb3VuZERvbWFpbnNBY2NlcHRzVXNlclNjcmlwdHMsIHdo
aWNoCisgICAgICAgIGZ1bGx5IHJlbGllZCBvbiBtZXNzYWdlIGhhbmRsZXIgdXNlIGFuZCBjb3Vs
ZCBub3QgYmUgdGVzdGVkIHdpdGhvdXQKKyAgICAgICAgc29tZWhvdyBkaXNhYmxpbmcgdGhpcyBm
ZWF0dXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1Rlc3RJbkFw
cEJyb3dzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVj
ZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbDoK
KyAgICAgICAgQWRkIGEgbWVzc2FnZSBoYW5kbGVyIHRvIHRoaXMgcGFnZSB0byBkZW1vbnN0cmF0
ZSB0aGF0IG1lc3NhZ2UKKyAgICAgICAgaGFuZGxlcnMgd29yayBmb3IgYXBwLWJvdW5kIG5hdmln
YXRpb25zIChmaWxlOi8vIHByb3RvY29sIGlzIGFsd2F5cworICAgICAgICBhcHAtYm91bmQpLgor
CiAyMDIwLTAzLTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAg
UGlQIHN1cHBvcnQgb2YgTWluaUJyb3dzZXIgaXMgYnJva2VuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KaW5kZXggZDllNjE4MWE0NjQxYTA0ZjY4MjQ1OThlZGU4ZDJkMDBkMGNjMThkNS4uMjVlYzAx
NjViZjQ2M2ExZDUyYTBmYzE2YTRjYzVjZDc0ZTEwM2RlYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQpAQCAtNDgsMTggKzQ4LDYgQEAgc3RhdGljIGJvb2wgaXNEb25lOwogCiBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCB1c2VyU2NyaXB0U291cmNlID0gQCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5q
ZWN0ZWQgPSB0cnVlIjsKIAotQGludGVyZmFjZSBUZXN0SW5BcHBCcm93c2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFRlc3RJbkFwcEJyb3dzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcgotCi0tICh2
b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2Vy
Q29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2Fn
ZSAqKW1lc3NhZ2UKLXsKLSAgICBpc0RvbmUgPSB0cnVlOwotfQotCi1AZW5kCi0KIEBpbnRlcmZh
Y2UgSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRs
ZXI+CiBAZW5kCiAKQEAgLTY5LDEzICs1NywxNSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQog
ewogICAgIE5TU3RyaW5nICpyZXNwb25zZSA9IG5pbDsKICAgICBpZiAoW3Rhc2sucmVxdWVzdC5V
UkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVz
ZXItc2NyaXB0Il0pCi0gICAgICAgIHJlc3BvbnNlID0gQCI8c2NyaXB0PndpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RJbkFwcEJyb3dzZXJQcml2YWN5LnBvc3RNZXNzYWdlKFwiZG9u
ZVwiKTs8L3NjcmlwdD4iOworICAgICAgICByZXNwb25zZSA9IEAiPHNjcmlwdD53aW5kb3cud2tV
c2VyU2NyaXB0SW5qZWN0ZWQgPSBmYWxzZTs8L3NjcmlwdD4iOwogICAgIGVsc2UgaWYgKFt0YXNr
LnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93c2VyLXByaXZh
Y3ktdGVzdC11c2VyLWFnZW50LXNjcmlwdCJdKQogICAgICAgICByZXNwb25zZSA9IEAiPHNjcmlw
dD4gd2luZG93LndrVXNlclNjcmlwdEluamVjdGVkID0gdHJ1ZTsgPC9zY3JpcHQ+IjsKICAgICBl
bHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXSkKICAgICAgICAgcmVzcG9u
c2UgPSBAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IjsKICAg
ICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMtaWZyYW1lIl0pCiAgICAg
ICAgIHJlc3BvbnNlID0gQCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PGlm
cmFtZSBzcmM9J2luLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11
c2VyLXN0eWxlLXNoZWV0cyc+PC9pZnJhbWU+PC9ib2R5PiI7CisgICAgZWxzZSBpZiAoW3Rhc2su
cmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS10ZXN0LW1lc3NhZ2UtaGFuZGxlciJdKQorICAgICAgICByZXNwb25zZSA9IEAiPGJvZHkgc3R5
bGU9J2JhY2tncm91bmQtY29sb3I6IGdyZWVuOyc+PC9ib2R5PjxzY3JpcHQ+aWYgKHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzKVxud2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0ZhaWxlZCcpOyBcbmVsc2UgXG4gZG9jdW1lbnQuYm9keS5z
dHlsZS5iYWNrZ3JvdW5kID0gJ3JlZCc7PC9zY3JpcHQ+IjsKIAogICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9u
c2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOwogICAgIFt0YXNr
IGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ11dOwpAQCAtOTcsNDcgKzg3LDI0IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQogewotICAgIGF1dG8g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluQXBwQnJvd3NlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgaW5pdGlhbGl6
ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBhdXRvIHVzZXJTY3JpcHQg
PSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0
U291cmNlIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRT
dGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwogCi0gICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSBj
b25maWd1cmF0aW9uIHdpdGhvdXQgSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBzZXR0aW5ncyB0byBl
bnN1cmUgaXQgd29ya3MgYXMgZXhwZWN0ZWQuCiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0gICAgW1tj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6
Tk9dOwotCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNj
aGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dz
ZXIiXTsKLSAgICAKICAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRk
VXNlclNjcmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKLSAgICBbY29uZmlndXJhdGlvbi51c2VyQ29u
dGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0
KCkgbmFtZTpAInRlc3RJbkFwcEJyb3dzZXJQcml2YWN5Il07CisgICAgW1tjb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZDpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2NyaXB0Il1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgCi0gICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVk
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX0VRKFlFUywgW1t3ZWJWaWV3IG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiXSBib29s
VmFsdWVdKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOwotICAgICAgICBpc0RvbmUg
PSB0cnVlOwotICAgIH1dOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgLy8gTm93IHNldHVwIEluLUFwcCBCcm93c2Vy
IFByaXZhY3kgc2V0dGluZ3MgYW5kIGV4cGVjdCBhIGZhaWxlZCBzY3JpcHQgZXZhbHVhdGlvbiBy
ZXN1bHQsIGFuZCBhbiBlcnJvciBtZXNzYWdlLgotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIGlu
aXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7Ci0gICAgW1tjb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5P
XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZDpZRVNdOwotCi0gICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7Ci0gICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAogICAgIC8vIENoZWNrIHRoYXQgcmVx
dWVzdCB0byByZWFkIHRoaXMgdmFyaWFibGUgaXMgcmVqZWN0ZWQuCi0gICAgW3dlYlZpZXcyIGV2
YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9y
KSB7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlw
dEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwpAQCAt
MTQ4LDkgKzExNSw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21h
aW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKIAogICAgIC8vIFR1cm4gYmFjayBvbiBJbi1BcHAg
QnJvd3NlciBQcml2YWN5IHF1aXJrcyB0byBjaGVjayB0aGF0IG9yaWdpbmFsIGF0dGVtcHQgdG8g
c2V0IHRoaXMgdmFyaWFibGUgd2FzIHJlamVjdGVkLgogICAgIGlzRG9uZSA9IGZhbHNlOwotICAg
IFtbW3dlYlZpZXcyIGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJy
b3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0gICAgW3dlYlZpZXcyIGV2YWx1YXRlSmF2YVNjcmlw
dDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBf
TnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIEVY
UEVDVF9FUShOTywgW1t3ZWJWaWV3MiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2lu
ZG93LndrVXNlclNjcmlwdEluamVjdGVkIl0gYm9vbFZhbHVlXSk7CisgICAgW1tbd2ViVmlldyBj
b25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1
aXJrczpZRVNdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1Vz
ZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0
LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9FUShOTywgW3Jl
c3VsdCBib29sVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOwogICAgICAg
ICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwpAQCAtMTYxLDQ3ICsxMjgsMjQgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0
KQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNl
clNjcmlwdEF0RW5kKQogewotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVz
dEluQXBwQnJvd3NlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgaXNE
b25lID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9j
XSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKLQot
ICAgIC8vIEZpcnN0IHNldCB1cCB0aGUgY29uZmlndXJhdGlvbiB3aXRob3V0IEluLUFwcCBCcm93
c2VyIFByaXZhY3kgc2V0dGluZ3MgdG8gZW5zdXJlIGl0IHdvcmtzIGFzIGV4cGVjdGVkLgorICAg
IAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZ
RVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93
c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOk5PXTsKLQogICAgIGF1dG8gc2NoZW1lSGFu
ZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdl
dCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgCiAgICAgW2NvbmZpZ3Vy
YXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6dXNlclNjcmlwdC5nZXQo
KV07Ci0gICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SW5BcHBCcm93c2Vy
UHJpdmFjeSJdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKIAogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNj
cmlwdCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIAotICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBf
TnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIEVY
UEVDVF9FUShZRVMsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2lu
ZG93LndrVXNlclNjcmlwdEluamVjdGVkIl0gYm9vbFZhbHVlXSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRSghIWVycm9yKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIGlz
RG9uZSA9IGZhbHNlOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQot
ICAgIC8vIE5vdyBzZXR1cCBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHNldHRpbmdzIGFuZCBleHBl
Y3QgYSBmYWlsZWQgc2NyaXB0IGV2YWx1YXRpb24gcmVzdWx0LCBhbmQgYW4gZXJyb3IgbWVzc2Fn
ZS4KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107Ci0gICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKLQotICAgIGF1
dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIFt3ZWJWaWV3
MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiAKICAgICAvLyBDaGVjayB0aGF0IHJlcXVlc3QgdG8gcmVhZCB0aGlzIHZhcmlhYmxl
IGlzIHJlamVjdGVkLgotICAgIFt3ZWJWaWV3MiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
d2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJl
c3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgIFt3ZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRs
ZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAg
ICAgICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOwogICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9y
KTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTIxMiw5ICsxNTYsOSBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0RW5kKQog
CiAgICAgLy8gVHVybiBiYWNrIG9uIEluLUFwcCBCcm93c2VyIFByaXZhY3kgcXVpcmtzIHRvIGNo
ZWNrIHRoYXQgb3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0
ZWQuCiAgICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW1tbd2ViVmlldzIgY29uZmlndXJhdGlvbl0g
cHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKLSAg
ICBbd2ViVmlldzIgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVj
dGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBf
TnVsbGFibGUgZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX0VRKE5PLCBbW3dlYlZpZXcyIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiXSBi
b29sVmFsdWVdKTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXSBf
c2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107CisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJvb2xWYWx1ZV0pOwogICAgICAgICBF
WFBFQ1RfRkFMU0UoISFlcnJvcik7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CkBA
IC0yMzgsNyArMTgyLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJBZ2VudFNjcmlwdHMpCiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRp
ZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
d2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxs
YWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKLSAgICAgICAgRVhQRUNU
X0VRKFlFUywgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cu
d2tVc2VyU2NyaXB0SW5qZWN0ZWQiXSBib29sVmFsdWVdKTsKKyAgICAgICAgRVhQRUNUX0VRKFlF
UywgW3Jlc3VsdCBib29sVmFsdWVdKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsK
IApAQCAtMjY4LDExICsyMTIsOSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJv
dW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0cykKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgU3dhcEJhY2tUb0FwcEJvdW5kUmVqZWN0c1VzZXJTY3JpcHQpCiB7CiAgICAgaW5pdGlhbGl6
ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKLSAgICBhdXRvIG1lc3NhZ2VIYW5k
bGVyID0gYWRvcHROUyhbW1Rlc3RJbkFwcEJyb3dzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdF0pOwogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQg
YWxsb2NdIGluaXRXaXRoU291cmNlOnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVT
XSk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rp
bmc6WUVTXTsKLSAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RJbkFwcEJy
b3dzZXJQcml2YWN5Il07CiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKICAgICBbW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogCkBAIC0yODMs
NyArMjI1LDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBTd2FwQmFja1RvQXBwQm91bmRS
ZWplY3RzVXNlclNjcmlwdCkKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6
Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2NyaXB0Il1dOwogICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiAKICAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTY3Jp
cHRJbW1lZGlhdGVseTp1c2VyU2NyaXB0LmdldCgpXTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVy
Ol4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewpAQCAt
Mzg2LDM5ICszMjcsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0RmlsZXNBcmVB
cHBCb3VuZCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLVRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSWdub3JlQXBwQm91bmREb21haW5zQWNjZXB0c1VzZXJT
Y3JpcHRzKQotewotICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7Ci0gICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0SW5BcHBCcm93c2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQg
PSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0
U291cmNlIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRT
dGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwotCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAgW2NvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJ0ZXN0SW5BcHBCcm93c2VyUHJpdmFjeSJdOwotICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107
Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQ6WUVTXTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0SWdub3Jlc0FwcEJvdW5kRG9t
YWluczpZRVNdOwotCi0gICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJv
d3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBw
LWJyb3dzZXIiXTsKLSAgICAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl0pOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQiXV07Ci0gICAgCi0gICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LQotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6
XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAg
ICAgIEVYUEVDVF9FUShZRVMsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIl0gYm9vbFZhbHVlXSk7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRSghIWVycm9yKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQot
ICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKLX0KLQogc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0gQCJib2R5IHsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CiBzdGF0aWMgTlNTdHJpbmcgKmJh
Y2tncm91bmRDb2xvclNjcmlwdCA9IEAid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Ym9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIjsKIHN0YXRp
YyBOU1N0cmluZyAqZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXS5jb250
ZW50RG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIjsKQEAgLTUwNiw2ICs0MTQsNzAgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25B
cHBCb3VuZFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzRmFpbHMpCiAgICAgZXhwZWN0
U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBmcmFtZUJhY2tncm91bmRDb2xv
clNjcmlwdCwgcmVkSW5SR0IpOwogfQogCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzKQoreworICAgIGluaXRpYWxp
emVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7
CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBh
dXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBh
bGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2No
ZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOworICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworCisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAIkZh
aWxlZCIgYWN0aW9uOl4oKSB7CisgICAgICAgIEZBSUwoKTsKKyAgICB9XTsKKworICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRl
c3QtbWVzc2FnZS1oYW5kbGVyIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IC8vIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byByZWQgaWYgbWVzc2FnZSBoYW5kbGVycyBy
ZXR1cm5lZCBudWxsIHNvIHdlIGNhbgorICAgIC8vIGNoZWNrIHdpdGhvdXQgbmVlZGluZyBhIG1l
c3NhZ2UgaGFuZGxlci4KKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcu
Z2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworfQorCitURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kVG9Ob25BcHBCb3VuZERvbWFpbkNhbm5vdEFjY2Vzc01l
c3NhZ2VIYW5kbGVycykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgUmV0YWluUHRyPFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHRO
UyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFt3ZWJWaWV3IHBl
cmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJQYXNzZWQiIGFjdGlvbjpeKCkgeworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgLy8gTmF2aWdhdGUgdG8gYW4gYXBwLWJv
dW5kIGRvbWFpbiBhbmQgd2FpdCBmb3IgdGhlICdwYXNzJyBtZXNzYWdlIHRvIHRlc3QgdGhlIGhh
bmRsZXIgaXMgd29ya2luZyBmaW5lLgorICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAImluLWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKKworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJGYWls
ZWQiIGFjdGlvbjpeKCkgeworICAgICAgICBGQUlMKCk7CisgICAgfV07CisKKyAgICAvLyBOYXZp
Z2F0ZSBhd2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbi4KKyAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QyID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC1tZXNzYWdl
LWhhbmRsZXIiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdDJdOworICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIC8vIFNldCB0
aGUgYmFja2dyb3VuZCBjb2xvciB0byByZWQgaWYgbWVzc2FnZSBoYW5kbGVycyByZXR1cm5lZCBu
dWxsIHNvIHdlIGNhbgorICAgIC8vIGNoZWNrIHdpdGhvdXQgbmVlZGluZyBhIG1lc3NhZ2UgaGFu
ZGxlci4KKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJh
Y2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworfQorCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2luLWFwcC1icm93c2Vy
LXByaXZhY3ktbG9jYWwtZmlsZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbAppbmRleCBlYWNh
M2Y0OWZkMTU4NDBhMzY4OGExMGE5MWI1NjUyNDU2Njg5M2M1Li5hMTI0YjA3YWU0YjgzYmQwY2Vl
OTU1MzU0ZTM0NWRlMGU0OWZhZDFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2luLWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZS5odG1sCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS1sb2NhbC1maWxlLmh0bWwKQEAgLTIsNCArMiw4IEBACiA8aHRtbD4KIDxib2R5Pgog
PC9ib2R5PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMp
CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKCdQYXNzZWQnKTsKKzwvc2NyaXB0PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395111</attachid>
            <date>2020-03-31 17:26:08 -0700</date>
            <delta_ts>2020-03-31 18:42:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209836-20200331172607.patch</filename>
            <type>text/plain</type>
            <size>22507</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJkYmUzZjczNDU2ZjYy
YTcxNDdiY2NmZjcwNjk2YWQzZjhlMzUyZS4uYmNjNzM2MzM2ZjFlNTk4ZjRlMWUxN2ZhNDU3M2E5
MWZiZDM5NGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAzLTMxICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcXVlc3Rz
IGZvciBtZXNzYWdlSGFuZGxlcnMoKSBpbiB0aGUgRE9NV2luZG93IHNob3VsZCBiZSBpZ25vcmVk
IGZvciBub24tYXBwLWJvdW5kIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
MDcxNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElnbm9yZSBjYWxscyBmb3IgV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxlcnMoKSBhbmQg
YWRkIHJlbGVhc2UKKyAgICAgICAgbG9nZ2luZyBpZiB0aGUgZG9tYWluIGlzIG5vdCBhcHAtYm91
bmQuCisKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycyk6CisKIDIwMjAtMDMtMzEgIHlv
dWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBTRFAgZmlsdGVy
aW5nIGFmdGVyIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTg1NDUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAppbmRleCA5MzA5NGZjNGFmYzMxNDNlODRh
MDY1MDRhZDhjODdkZGVmNWM3ZDU0Li5hYzEyNDdjNjE0ZTE2ZWUwZjU1MmM3NDMwMmYyNjNiMTMy
ODFmNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCkBAIC0yNiw2
ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVzcGFj
ZS5oIgogCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworI2RlZmluZSBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihmcmFt
ZSgpICYmIGZyYW1lKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAg
LSBXZWJLaXROYW1lc3BhY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCiAjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAt
NDQsOSArNTAsMTYgQEAgV2ViS2l0TmFtZXNwYWNlOjp+V2ViS2l0TmFtZXNwYWNlKCkgPSBkZWZh
dWx0OwogCiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKiBXZWJLaXROYW1lc3BhY2U6Om1l
c3NhZ2VIYW5kbGVycygpCiB7CisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+bG9hZGVyKCku
Y2xpZW50KCkuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIklnbm9yaW5nIG1lc3NhZ2VI
YW5kbGVycygpIHJlcXVlc3QgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIHJldHVybiAmbV9tZXNzYWdlSGFuZGxlck5hbWVz
cGFjZS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKworI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1OWY0MmY5NDY2ZmMwNjZmMGE1YmEwNmQ2NjZmZDdkOGFlNDk4ZWM3Li4zNGQxN2E1NDkw
MmY4NDlmMjM0ZTM5ZDRkODMwN2IwZjQ4MzcyNGIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMDMtMzEgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVxdWVz
dHMgZm9yIG1lc3NhZ2VIYW5kbGVycygpIGluIHRoZSBET01XaW5kb3cgc2hvdWxkIGJlIGlnbm9y
ZWQgZm9yIG5vbi1hcHAtYm91bmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTgzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjEwNzE2MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW9zdCBvZiB0aGlzIHBhdGNoIGlzIGNoYW5nZXMgdG8gdGhlIHRlc3RzLCB3aGljaCBmb3Jt
ZXJseSByZWxpZWQKKyAgICAgICAgb24gbWVzc2FnZSBoYW5kbGVycyB0byB0ZXN0IHNjcmlwdCBp
bmplY3Rpb24gcHJvdGVjdGlvbnMuIEkgcmV3cm90ZQorICAgICAgICB0aHJlZSB0ZXN0cyB0byBy
ZW1vdmUgdGhlIHVzZSBvZiBtZXNzYWdlIGhhbmRsZXJzIHdoaWNoIHdlcmUgdXNlZCB0bworICAg
ICAgICBjb25maXJtIG5vcm1hbCBzY3JpcHQgaW5qZWN0aW9uIGJlaGF2aW9yIGJlZm9yZSBlbmFi
bGluZyBJbi1BcHAKKyAgICAgICAgQnJvd3NlciBQcml2YWN5LiBTaW5jZSBub3JtYWwgc2NyaXB0
IGluamVjdGlvbiBiZWhhdmlvciBpcyB0ZXN0ZWQgaW4KKyAgICAgICAgV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW0gYWxyZWFkeSBpdCBpcyB1bmVjZXNzYXJ5IHRvIHRlc3QgaGVyZS4KKworICAg
ICAgICBJIHJlbW92ZWQgb25lIHRlc3QsIElnbm9yZUFwcEJvdW5kRG9tYWluc0FjY2VwdHNVc2Vy
U2NyaXB0cywgd2hpY2gKKyAgICAgICAgZnVsbHkgcmVsaWVkIG9uIG1lc3NhZ2UgaGFuZGxlciB1
c2UgYW5kIGNvdWxkIG5vdCBiZSB0ZXN0ZWQgd2l0aG91dAorICAgICAgICBzb21laG93IGRpc2Fi
bGluZyB0aGlzIGZlYXR1cmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KC1bVGVzdEluQXBwQnJvd3NlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJv
bGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2luLWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwt
ZmlsZS5odG1sOgorICAgICAgICBBZGQgYSBtZXNzYWdlIGhhbmRsZXIgdG8gdGhpcyBwYWdlIHRv
IGRlbW9uc3RyYXRlIHRoYXQgbWVzc2FnZQorICAgICAgICBoYW5kbGVycyB3b3JrIGZvciBhcHAt
Ym91bmQgbmF2aWdhdGlvbnMgKGZpbGU6Ly8gcHJvdG9jb2wgaXMgYWx3YXlzCisgICAgICAgIGFw
cC1ib3VuZCkuCisKIDIwMjAtMDMtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBQaVAgc3VwcG9ydCBvZiBNaW5pQnJvd3NlciBpcyBicm9rZW4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQppbmRleCBkOWU2MTgxYTQ2NDFhMDRmNjgyNDU5OGVkZThkMmQwMGQwY2Mx
OGQ1Li4yNWVjMDE2NWJmNDYzYTFkNTJhMGZjMTZhNGNjNWNkNzRlMTAzZGVhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCkBAIC00OCwxOCArNDgsNiBAQCBzdGF0aWMgYm9vbCBpc0RvbmU7CiAK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVzZXJTY3JpcHRTb3VyY2UgPSBAIndpbmRvdy53a1Vz
ZXJTY3JpcHRJbmplY3RlZCA9IHRydWUiOwogCi1AaW50ZXJmYWNlIFRlc3RJbkFwcEJyb3dzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gVGVzdEluQXBwQnJvd3NlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyCi0KLS0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJv
bGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tT
Y3JpcHRNZXNzYWdlICopbWVzc2FnZQotewotICAgIGlzRG9uZSA9IHRydWU7Ci19Ci0KLUBlbmQK
LQogQGludGVyZmFjZSBJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJM
U2NoZW1lSGFuZGxlcj4KIEBlbmQKIApAQCAtNjksMTMgKzU3LDE1IEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVt
ZVRhc2s+KXRhCiB7CiAgICAgTlNTdHJpbmcgKnJlc3BvbnNlID0gbmlsOwogICAgIGlmIChbdGFz
ay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5LXRlc3QtdXNlci1zY3JpcHQiXSkKLSAgICAgICAgcmVzcG9uc2UgPSBAIjxzY3JpcHQ+d2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEluQXBwQnJvd3NlclByaXZhY3kucG9zdE1l
c3NhZ2UoXCJkb25lXCIpOzwvc2NyaXB0PiI7CisgICAgICAgIHJlc3BvbnNlID0gQCI8c2NyaXB0
PndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCA9IGZhbHNlOzwvc2NyaXB0PiI7CiAgICAgZWxz
ZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItYWdlbnQtc2NyaXB0Il0pCiAgICAgICAgIHJlc3BvbnNl
ID0gQCI8c2NyaXB0PiB3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQgPSB0cnVlOyA8L3Njcmlw
dD4iOwogICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5n
OkAiL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdKQogICAg
ICAgICByZXNwb25zZSA9IEAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwv
Ym9keT4iOwogICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cy1pZnJh
bWUiXSkKICAgICAgICAgcmVzcG9uc2UgPSBAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7Jz48aWZyYW1lIHNyYz0naW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzJz48L2lmcmFtZT48L2JvZHk+IjsKKyAgICBlbHNl
IGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5LXRlc3QtbWVzc2FnZS1oYW5kbGVyIl0pCisgICAgICAgIHJlc3BvbnNlID0g
QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Jz48L2JvZHk+PHNjcmlwdD5p
ZiAod2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMpXG53aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRmFpbGVkJyk7IFxuZWxzZSBcbiBkb2N1
bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmQgPSAncmVkJzs8L3NjcmlwdD4iOwogCiAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07
CiAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNlIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXV07CkBAIC05Nyw0NyArODcsMjQgQEAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogCiBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCiB7
Ci0gICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0SW5BcHBCcm93c2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgIGF1dG8g
dXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNl
OnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CiAKLSAgICAvLyBGaXJzdCBz
ZXQgdXAgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHNl
dHRpbmdzIHRvIGVuc3VyZSBpdCB3b3JrcyBhcyBleHBlY3RlZC4KICAgICBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVT
XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZDpOT107Ci0KICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5B
cHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJp
bi1hcHAtYnJvd3NlciJdOwotICAgIAogICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFtjb25maWd1cmF0
aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdl
SGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEluQXBwQnJvd3NlclByaXZhY3kiXTsKKyAgICBbW2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3M6Tk9dOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3Nlcjov
Ly9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQiXV07CiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LSAgICAKLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2Ny
aXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBFWFBFQ1RfRVEoWUVTLCBbW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmpl
Y3RlZCJdIGJvb2xWYWx1ZV0pOwotICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7Ci0gICAg
ICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICAvLyBOb3cgc2V0dXAgSW4t
QXBwIEJyb3dzZXIgUHJpdmFjeSBzZXR0aW5ncyBhbmQgZXhwZWN0IGEgZmFpbGVkIHNjcmlwdCBl
dmFsdWF0aW9uIHJlc3VsdCwgYW5kIGFuIGVycm9yIG1lc3NhZ2UuCi0gICAgaXNEb25lID0gZmFs
c2U7Ci0gICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKLSAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3M6Tk9dOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkOllFU107Ci0KLSAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgLy8gQ2hl
Y2sgdGhhdCByZXF1ZXN0IHRvIHJlYWQgdGhpcyB2YXJpYWJsZSBpcyByZWplY3RlZC4KLSAgICBb
d2ViVmlldzIgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVk
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
d2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJl
c3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewogICAgICAgICBFWFBFQ1RfRkFMU0Uo
cmVzdWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CkBAIC0xNDgsOSArMTE1LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25B
cHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQogCiAgICAgLy8gVHVybiBiYWNr
IG9uIEluLUFwcCBCcm93c2VyIFByaXZhY3kgcXVpcmtzIHRvIGNoZWNrIHRoYXQgb3JpZ2luYWwg
YXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0ZWQuCiAgICAgaXNEb25lID0g
ZmFsc2U7Ci0gICAgW1tbd2ViVmlldzIgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdIF9zZXRO
ZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKLSAgICBbd2ViVmlldzIgZXZhbHVh
dGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsK
LSAgICAgICAgRVhQRUNUX0VRKE5PLCBbW3dlYlZpZXcyIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiXSBib29sVmFsdWVdKTsKKyAgICBb
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dz
ZXJQcml2YWN5UXVpcmtzOllFU107CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
d2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxs
YWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X0VRKE5PLCBbcmVzdWx0IGJvb2xWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJv
cik7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC0xNjEsNDcgKzEyOCwyNCBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNj
cmlwdEF0U3RhcnQpCiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21h
aW5GYWlsZWRVc2VyU2NyaXB0QXRFbmQpCiB7Ci0gICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFk
b3B0TlMoW1tUZXN0SW5BcHBCcm93c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOwogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJT
Y3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGlt
ZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5
OllFU10pOwotCi0gICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSBjb25maWd1cmF0aW9uIHdpdGhvdXQg
SW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBzZXR0aW5ncyB0byBlbnN1cmUgaXQgd29ya3MgYXMgZXhw
ZWN0ZWQuCisgICAgCiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6Tk9dOwotCiAgICAgYXV0
byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVt
ZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICAKICAg
ICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp1c2Vy
U2NyaXB0LmdldCgpXTsKLSAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIg
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RJ
bkFwcEJyb3dzZXJQcml2YWN5Il07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogCiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10
ZXN0LXVzZXItc2NyaXB0Il1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwog
ICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgCi0gICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsK
LSAgICAgICAgRVhQRUNUX0VRKFlFUywgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiXSBib29sVmFsdWVdKTsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1d
OwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwotCi0gICAgLy8gTm93IHNldHVwIEluLUFwcCBCcm93c2VyIFByaXZhY3kgc2V0dGlu
Z3MgYW5kIGV4cGVjdCBhIGZhaWxlZCBzY3JpcHQgZXZhbHVhdGlvbiByZXN1bHQsIGFuZCBhbiBl
cnJvciBtZXNzYWdlLgotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKLSAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNd
OwotCi0gICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0g
ICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIAogICAgIC8vIENoZWNrIHRoYXQgcmVxdWVzdCB0byByZWFkIHRo
aXMgdmFyaWFibGUgaXMgcmVqZWN0ZWQuCi0gICAgW3dlYlZpZXcyIGV2YWx1YXRlSmF2YVNjcmlw
dDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBf
TnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21w
bGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUg
ZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKCEhZXJyb3IpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwpAQCAtMjEyLDkgKzE1Niw5IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2Ny
aXB0QXRFbmQpCiAKICAgICAvLyBUdXJuIGJhY2sgb24gSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBx
dWlya3MgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlhYmxl
IHdhcyByZWplY3RlZC4KICAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbW1t3ZWJWaWV3MiBjb25m
aWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
czpZRVNdOwotICAgIFt3ZWJWaWV3MiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2Vy
U2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwg
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBFWFBFQ1RfRVEoTk8sIFtbd2Vi
VmlldzIgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJ
bmplY3RlZCJdIGJvb2xWYWx1ZV0pOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJl
ZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQi
IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxs
YWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfRVEoTk8sIFtyZXN1bHQgYm9vbFZhbHVlXSk7
CiAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsK
ICAgICB9XTsKQEAgLTIzOCw3ICsxODIsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5v
bkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0cykKICAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVy
Ol4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAg
ICAgICBFWFBFQ1RfRVEoWUVTLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCJdIGJvb2xWYWx1ZV0pOworICAgICAgICBF
WFBFQ1RfRVEoWUVTLCBbcmVzdWx0IGJvb2xWYWx1ZV0pOwogICAgICAgICBpc0RvbmUgPSB0cnVl
OwogICAgIH1dOwogCkBAIC0yNjgsMTEgKzIxMiw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyQWdlbnRTY3JpcHRzKQogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBTd2FwQmFja1RvQXBwQm91bmRSZWplY3RzVXNlclNjcmlwdCkKIHsKICAg
ICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwotICAgIGF1dG8g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluQXBwQnJvd3NlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dL
VXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6dXNlclNjcmlwdFNvdXJjZSBpbmplY3Rp
b25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZy
YW1lT25seTpZRVNdKTsKIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOwotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJv
bGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAi
dGVzdEluQXBwQnJvd3NlclByaXZhY3kiXTsKICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOwogICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107
CiAKQEAgLTI4Myw3ICsyMjUsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFN3YXBCYWNr
VG9BcHBCb3VuZFJlamVjdHNVc2VyU2NyaXB0KQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1h
cHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQiXV07
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rf
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKIAogICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBf
YWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OnVzZXJTY3JpcHQuZ2V0KCldOwogICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVy
cm9yKSB7CkBAIC0zODYsMzkgKzMyNyw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJv
dXRGaWxlc0FyZUFwcEJvdW5kKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKIH0KIAotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBJZ25vcmVBcHBCb3VuZERvbWFpbnNB
Y2NlcHRzVXNlclNjcmlwdHMpCi17Ci0gICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lU
ZXN0U2V0dGluZ3MoKTsKLSAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RJ
bkFwcEJyb3dzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8g
dXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNl
OnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTXSk7Ci0KLSAgICBXS1dlYlZpZXdD
b25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBbY29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVz
c2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RJbkFwcEJyb3dzZXJQcml2YWN5Il07Ci0gICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzOk5PXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwotICAgIFtjb25maWd1cmF0aW9uIF9zZXRJZ25vcmVz
QXBwQm91bmREb21haW5zOllFU107Ci0KLSAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5T
KFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJpbi1hcHAtYnJvd3NlciJdOwotICAgIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93
c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCJdXTsKLSAgICAK
LSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwotCi0gICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIF9h
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6dXNlclNjcmlwdC5nZXQoKV07Ci0gICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJy
b3IpIHsKLSAgICAgICAgRVhQRUNUX0VRKFlFUywgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiXSBib29sVmFsdWVdKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwot
ICAgIH1dOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwotfQotCiBzdGF0aWMgTlNTdHJpbmcgKnN0eWxlU2hlZXRTb3VyY2UgPSBA
ImJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAhaW1wb3J0YW50OyB9IjsKIHN0YXRpYyBO
U1N0cmluZyAqYmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9y
JykiOwogc3RhdGljIE5TU3RyaW5nICpmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCA9IEAid2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFt
ZScpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNr
Z3JvdW5kLWNvbG9yJykiOwpAQCAtNTA2LDYgKzQxNCw3MCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIE5vbkFwcEJvdW5kVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdBbGxGcmFtZXNGYWlscykK
ICAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGZyYW1lQmFj
a2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CiB9CiAKK1RFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmREb21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFuZGxlcnMpCit7Cisg
ICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hl
bWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2Vy
Il07CisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQ6WUVTXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAiRmFpbGVkIiBhY3Rpb246XigpIHsKKyAgICAgICAgRkFJTCgpOworICAgIH1dOwor
CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2Vy
LXByaXZhY3ktdGVzdC1tZXNzYWdlLWhhbmRsZXIiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b25dOworCisgICAgLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIHJlZCBpZiBtZXNzYWdl
IGhhbmRsZXJzIHJldHVybmVkIG51bGwgc28gd2UgY2FuCisgICAgLy8gY2hlY2sgd2l0aG91dCBu
ZWVkaW5nIGEgbWVzc2FnZSBoYW5kbGVyLgorICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29s
b3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7Cit9CisK
K1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRUb05vbkFwcEJvdW5kRG9tYWluQ2Fu
bm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHNjaGVtZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOworICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAg
W3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAIlBhc3NlZCIgYWN0aW9uOl4o
KSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICAvLyBOYXZpZ2F0ZSB0
byBhbiBhcHAtYm91bmQgZG9tYWluIGFuZCB3YWl0IGZvciB0aGUgJ3Bhc3MnIG1lc3NhZ2UgdG8g
dGVzdCB0aGUgaGFuZGxlciBpcyB3b3JraW5nIGZpbmUuCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiaW4tYXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOworCisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpAIkZhaWxlZCIgYWN0aW9uOl4oKSB7CisgICAgICAgIEZBSUwoKTsKKyAgICB9XTsKKwor
ICAgIC8vIE5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluLgorICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10
ZXN0LW1lc3NhZ2UtaGFuZGxlciJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
Ml07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisg
ICAgLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIHJlZCBpZiBtZXNzYWdlIGhhbmRsZXJz
IHJldHVybmVkIG51bGwgc28gd2UgY2FuCisgICAgLy8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIGEg
bWVzc2FnZSBoYW5kbGVyLgorICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmll
dy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7Cit9CisKICNlbmRpZiAv
LyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2luLWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZS5odG1s
CmluZGV4IGVhY2EzZjQ5ZmQxNTg0MGEzNjg4YTEwYTkxYjU2NTI0NTY2ODkzYzUuLmExMjRiMDdh
ZTRiODNiZDBjZWU5NTUzNTRlMzQ1ZGUwZTQ5ZmFkMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1m
aWxlLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbApAQCAtMiw0ICsyLDggQEAKIDxodG1s
PgogPGJvZHk+CiA8L2JvZHk+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycykKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoJ1Bhc3NlZCcpOworPC9zY3JpcHQ+CiA8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>