<?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>198584</bug_id>
          
          <creation_ts>2019-06-05 15:36:26 -0700</creation_ts>
          <short_desc>Allow WebKitTestRunner to terminate network process after it finishes service worker file operations</short_desc>
          <delta_ts>2019-06-06 18:29:17 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=198435</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1542192</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-05 15:36:26 -0700</bug_when>
    <thetext>Allow WebKitTestRunner to terminate network process after network process finishes all file operation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542224</commentid>
    <comment_count>1</comment_count>
      <attachid>371451</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-05 16:57:22 -0700</bug_when>
    <thetext>Created attachment 371451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542495</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-06 11:41:12 -0700</bug_when>
    <thetext>Should the behavior to store to disk be built into testRunner.terminateNetworkProcess? Under what conditions do we want a test to terminate the network process with potential data loss?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542515</commentid>
    <comment_count>3</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-06 12:08:17 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #2)
&gt; Should the behavior to store to disk be built into
&gt; testRunner.terminateNetworkProcess? Under what conditions do we want a test
&gt; to terminate the network process with potential data loss?

When network process crashes, it&apos;s possible that writes to disk are not done as they happen on the background threads. I think terminateNetworkProcess just simulates the crash.

But if we want to test the case where network process crashes after writes are done, can we just wait for the writes to complete instead of introducing an internal API to force flush to disk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542568</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-06 15:33:09 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #3)
&gt; (In reply to Geoffrey Garen from comment #2)
&gt; &gt; Should the behavior to store to disk be built into
&gt; &gt; testRunner.terminateNetworkProcess? Under what conditions do we want a test
&gt; &gt; to terminate the network process with potential data loss?

I initially tried this approach, but this made the patch a bit more complex than this one.
terminateNetworkProcess is currently synchronous and I did not want to change that so that would require using synchronous IPC for making sure the data is written.

I could see some usecases where we would like to crash the network process while it is trying to write Cache API files and see whether we are able to recover from some kind of data corruption. But that may be more easily covered with API tests.

&gt; When network process crashes, it&apos;s possible that writes to disk are not done
&gt; as they happen on the background threads. I think terminateNetworkProcess
&gt; just simulates the crash.
&gt; 
&gt; But if we want to test the case where network process crashes after writes
&gt; are done, can we just wait for the writes to complete instead of introducing
&gt; an internal API to force flush to disk?

Waiting for the writes to finish will require an additional IPC call, right?
I had a tentative patch reusing prepareToSuspend and making it AsyncReply, then terminating NetworkProcess on the reply. Overall, this was a bigger patch.

As a side note, another nicety we could add to terminateNetworkProcess would be promisifying it and resolve the promise when WebProcess sees its network process IPC connection get lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542571</commentid>
    <comment_count>5</comment_count>
      <attachid>371451</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-06 15:35:40 -0700</bug_when>
    <thetext>Comment on attachment 371451
Patch

Hmmm... I guess if we need to test network process crashes, that is a case where we want to separate data flush from crash.

I don&apos;t think it&apos;s possible to wait for the data to be flushed; there&apos;s no way to know when to stop waiting. We could add a short delay, but in the past that approach has caused test flakiness on our bots. But maybe you have a suggestion for how to wait?

I&apos;ll say r=me for now, but if you have a suggestion, we should consider it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542594</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-06 16:08:40 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #5)
&gt; Comment on attachment 371451 [details]
&gt; Patch
&gt; 
&gt; Hmmm... I guess if we need to test network process crashes, that is a case
&gt; where we want to separate data flush from crash.
&gt; 
&gt; I don&apos;t think it&apos;s possible to wait for the data to be flushed; there&apos;s no
&gt; way to know when to stop waiting. We could add a short delay, but in the
&gt; past that approach has caused test flakiness on our bots. But maybe you have
&gt; a suggestion for how to wait?
&gt; 
&gt; I&apos;ll say r=me for now, but if you have a suggestion, we should consider it.

For layout test, it may be tricky (do we want to test process crash in layout test?). For API test, we can make use of different web views like storing data via one view and getting from another; or use WKWebsiteDataStore fetchDataRecordsOfTypes, which fetches data on disk. We may also prepare files on disk to pretend writes are done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542670</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-06 17:59:37 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #6)
&gt; (In reply to Geoffrey Garen from comment #5)
&gt; &gt; Comment on attachment 371451 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Hmmm... I guess if we need to test network process crashes, that is a case
&gt; &gt; where we want to separate data flush from crash.
&gt; &gt; 
&gt; &gt; I don&apos;t think it&apos;s possible to wait for the data to be flushed; there&apos;s no
&gt; &gt; way to know when to stop waiting. We could add a short delay, but in the
&gt; &gt; past that approach has caused test flakiness on our bots. But maybe you have
&gt; &gt; a suggestion for how to wait?

The idea is to make it good enough to remove flakiness.
Hopefully, the current patch is sufficient for that purpose.
If not, we can make it more robust, for instance by clearing the in memory representation and reading the data from disk before crashing the network process.

&gt; &gt; I&apos;ll say r=me for now, but if you have a suggestion, we should consider it.
&gt; 
&gt; For layout test, it may be tricky (do we want to test process crash in
&gt; layout test?). For API test, we can make use of different web views like
&gt; storing data via one view and getting from another; or use
&gt; WKWebsiteDataStore fetchDataRecordsOfTypes, which fetches data on disk. We
&gt; may also prepare files on disk to pretend writes are done.

We do test network process/service worker process crash with layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542673</commentid>
    <comment_count>8</comment_count>
      <attachid>371451</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-06 18:28:59 -0700</bug_when>
    <thetext>Comment on attachment 371451
Patch

Clearing flags on attachment: 371451

Committed r246184: &lt;https://trac.webkit.org/changeset/246184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542674</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-06 18:29:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542675</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-06 18:29:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/51507937&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371451</attachid>
            <date>2019-06-05 16:57:22 -0700</date>
            <delta_ts>2019-06-06 18:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198584-20190605165721.patch</filename>
            <type>text/plain</type>
            <size>12500</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZkZjY1MDZkNjNiZDY5
ZjcwYjFkMGFlNDE2NzYyNmFjMDAzNDkwNS4uODRkYmEwYzZjNzQ5ZDhkOWE5ZmQxODM5ZjA4OGYx
OTNiMTE3YWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTA2LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXZWJLaXRUZXN0
UnVubmVyIHRvIHRlcm1pbmF0ZSBuZXR3b3JrIHByb2Nlc3MgYWZ0ZXIgaXQgZmluaXNoZXMgc2Vy
dmljZSB3b3JrZXIgZmlsZSBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwcm9taXNlLWJhc2VkIGludGVybmFsIEFQSSB0byBz
dG9yZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25zIG9uIGRpc2suCisgICAgICAgIENvdmVy
ZWQgYnkgdXBkYXRlZCB0ZXN0LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2spOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RvcmVSZWdpc3RyYXRpb25z
T25EaXNrRm9yVGVzdGluZyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25TdG9yZTo6
c3RhcnRTdXNwZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvblN0b3JlOjpj
bG9zZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c3RvcmVSZWdpc3Ry
YXRpb25zT25EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Lmg6CisKIDIwMTktMDYtMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpbmlzaCBjbGVhbnVwIG9mIFN0cmluZzo6bnVtYmVyIGZvciBmbG9hdGluZyBwb2ludApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2NjdmOGQ3MWYyNmU1NzA0NGUzYzczYzZjNjQ5MWMzMjFiMDU2MmQ2Li5hNzVm
MWE0YTJiMTZiNjg1YzlhZGYzZDIyMDhhNmQ5MTEwZWUwN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE5LTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBXZWJLaXRUZXN0UnVubmVyIHRvIHRlcm1pbmF0ZSBuZXR3b3JrIHByb2Nl
c3MgYWZ0ZXIgaXQgZmluaXNoZXMgc2VydmljZSB3b3JrZXIgZmlsZSBvcGVyYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSVBDIGJpbmRp
bmcgdG8gbmV3IGludGVybmFsIEFQSS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRl
c3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaDoKKwogMjAxOS0wNi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGFuIGVudW1lcmF0aW9uIGluIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyBjYWxsYmFjawpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGM1OTZhNThiOWJkOWVmYmYzNmIwNzNmOTAz
MWU5ODYzZmE3OWZmMTAuLjI0OTk1ZTg3OTFiOTRmODg4NGI1NzhmOTcxMTUwODgyYjZkMGIxMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ3OTYsNiArNDc5NiwxOSBA
QCBib29sIEludGVybmFsczo6YXVkaW9TZXNzaW9uQWN0aXZlKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCku
c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGNvbnRleHREb2N1bWVudCgpLT5zZXNz
aW9uSUQoKSk7CisgICAgY29ubmVjdGlvbi5zdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0
aW5nKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKCk7CisgICAgfSk7CisjZW5kaWYKK30KKwogdm9pZCBJbnRlcm5hbHM6OmNs
ZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNjc1YzgwYWNkMTc1ZTM5ODRjZDRj
NWI2ZTQ2M2U1N2JkZmM2OGYxOS4uNjViYTA2ZjI0YjMzNjAxNzY3MzUwZDM4YTVjOWFjNWUyMTE1
NjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03MTgsNiArNzE4LDggQEAg
cHVibGljOgogICAgIGRvdWJsZSBwcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUoKSBjb25zdDsKICAg
ICBib29sIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNvbnN0OwogCisgICAgdm9pZCBzdG9yZVJlZ2lz
dHJhdGlvbnNPbkRpc2soRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCiAgICAgdm9pZCBj
bGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKICAgICB2b2lkIGNhY2hlU3RvcmFnZUVuZ2luZVJlcHJlc2VudGF0aW9uKERPTVBy
b21pc2VEZWZlcnJlZDxJRExET01TdHJpbmc+JiYpOwogICAgIHZvaWQgc2V0UmVzcG9uc2VTaXpl
V2l0aFBhZGRpbmcoRmV0Y2hSZXNwb25zZSYsIHVpbnQ2NF90IHNpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDBhZjMzNzUzY2Q0NzQ4MTI1NDBlMjNhOTZmMDZhNjY0
ZjI5ZWU2NzcuLjM0MDM2ZDdkNmUwYTdjNGFiOGI1NTM5ZjdiYWU3MDA2YzJkZWU5NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY5Miw2ICs2OTIsNyBAQCBlbnVtIENv
bXBvc2l0aW5nUG9saWN5IHsKICAgICBib29sZWFuIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxp
dmUoKTsKIAogICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihEb2N1
bWVudCBkb2N1bWVudCk7CisgICAgUHJvbWlzZTx2b2lkPiBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRp
c2soKTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNl
bnRhdGlvbigpOwogICAgIFByb21pc2U8RE9NU3RyaW5nPiBjYWNoZVN0b3JhZ2VFbmdpbmVSZXBy
ZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDY0ZjllMjM2MmY0ZDgyZjIwNzBiZGFjZDY2OTM2MmYx
MmQxMjg3Y2YuLjI1MTkyNWJlOGFlNmE2NzU0MjFkY2ZlYWY1ODk0YTg0YzNiNDA0NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmgKQEAgLTg4LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxl
YWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgp
ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9
CisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVudENvbm5lY3Rpb24oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvblN0b3JlLmNwcAppbmRleCA0NDJlNjJmOWRhYTNlZDA5MzFlZTdmM2ZiZmFi
NWViODZhZWM5ODZjLi5iYjJlMTRkZDgyNTJlMDFmOTg0ZmUyMTI3MzExMTQ5ZjllY2E3MjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvblN0b3JlLmNwcApAQCAtODcsNiArODcsMTEgQEAgdm9pZCBSZWdpc3RyYXRp
b25TdG9yZTo6Zmx1c2hDaGFuZ2VzKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb24KIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OnN0YXJ0U3VzcGVuc2lvbihXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2lz
U3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBjbG9zZURhdGFiYXNlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwordm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6Y2xvc2VEYXRhYmFzZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CiAgICAgbV9kYXRh
YmFzZS0+Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0
b3JlLmgKaW5kZXggOGRiYzMxOTY2MTg3NWRhMTMzMWQwMzk4ZmE0NjNmZWI0ZmZjNWFhMC4uMWRk
NWE4Y2Q2ZmMxYmI2OTc3MmI2MTJiN2VkZmQyYjUxZTAzNjY0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUu
aApAQCAtNDgsMTAgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWdpc3RyYXRpb25T
dG9yZShTV1NlcnZlciYsIFN0cmluZyYmIGRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICB+UmVnaXN0
cmF0aW9uU3RvcmUoKTsKIAotICAgIHZvaWQgY2xlYXJBbGwoV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZmx1c2hDaGFuZ2VzKFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBmbHVzaENoYW5nZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIAotICAgIHZvaWQgc3RhcnRTdXNwZW5zaW9uKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHN0YXJ0U3VzcGVuc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgZW5kU3VzcGVuc2lvbigpOwogCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20g
dGhlIFNXU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDc2NTQxZjYwOTlkYmY5YzYxNDkxYTk0YTNjODJhZDhlNWZm
Y2YxZGYuLmM3NjI5MDNjYzkzZjgyNDRkYzk5NTJlNzFlY2M4Nzk3YWQ2OGQzMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBA
IC04NzgsNiArODc4LDE1IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OndoZW5SZWdpc3Ry
YXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVlCiAgICAgbV9yZWdpc3Ry
YXRpb25SZWFkeVJlcXVlc3RzLmFwcGVuZCh7IHRvcE9yaWdpbiwgY2xpZW50VVJMLCByZWdpc3Ry
YXRpb25SZWFkeVJlcXVlc3RJZGVudGlmaWVyIH0pOwogfQogCit2b2lkIFNXU2VydmVyOjpDb25u
ZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9zZXJ2ZXIubV9yZWdpc3RyYXRpb25TdG9yZSkg
eworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc2Vy
dmVyLm1fcmVnaXN0cmF0aW9uU3RvcmUtPmNsb3NlRGF0YWJhc2UoV1RGTW92ZShjYWxsYmFjaykp
OworfQorCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZXNvbHZlUmVnaXN0cmF0aW9uUmVh
ZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIG1f
cmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgcmVx
dWVzdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCmluZGV4IDY3NzUzODgxZTk4NmZlZWQ4ZDE2N2UxOWI1MTk1OWI2YzhjOWU4OTUuLjNj
OTdlODc5NTg5OWY1OTg2ZGVmNTNkZmUwNjllMzEwOGRlNWM0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEwMSw2ICsxMDEs
OCBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3luY1Rlcm1pbmF0ZVdv
cmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5UmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBV
UkwmIGNsaWVudFVSTCk7CiAKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZVJlZ2lz
dHJhdGlvbnNPbkRpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoU2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXIsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA3YzUwZTYyNGEzMTgxNDk5ZTNhNTNm
OGI3M2ZiMThlY2E3NmI5MjlmLi5hYjI0NjhlOGNlM2NiNWM2ZGRmYzgyOGNlNzViZmQ4YzFmNjI3
ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTQ2LDYgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
IHsKICAgICBTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciB3b3JrZXJJZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwogCiAgICAg
U2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQorICAgIFN0b3JlUmVnaXN0cmF0
aW9uc09uRGlzaygpIC0+ICgpIEFzeW5jCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBkNTNkMTMzZDcyNWUyN2EwNzMyZDUyN2Qz
Y2QwYmE2ZDdmNjdhNjA1Li41NzkwNTQ1MDViYmI2NjI2OTQyOTU0NDA4YjExYjIxYjA0YWM1MDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI2OSw2ICsyNjksMTIgQEAgdm9pZCBXZWJTV0Ns
aWVudENvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAgIGVuc3VyZUNvbm5lY3Rp
b25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3Rh
dGUgeyBtX2lzVGhyb3R0bGVhYmxlIH0pOwogfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpTdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCAxZWU3Mjg0NDY0OGIwOWVmZjYwMTZjMzE2MWViYmMzZTEz
MjkwOWJhLi42ZGViZDhhZmYxNzBkNTQ4Y2EwYjQ4MzczMjcxYzRlZmI0NzcxZWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaApAQCAtOTMsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpIGZpbmFsOwog
ICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzVGhyb3R0
bGVhYmxlOyB9CisgICAgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAKICAgICB2b2lkIHNjaGVkdWxlU3Rv
cmFnZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NDYwOGQwZGM1MTZkMTc0OTI5YjZhMTUyYTA2OGNlMjRlY2JjZTVhNy4uZWQ1NzAzOWE3NzNjNzUw
MGM0M2RkNDU1ZmRlNWQ4ZjA0MmEyNzNmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA2
LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBX
ZWJLaXRUZXN0UnVubmVyIHRvIHRlcm1pbmF0ZSBuZXR3b3JrIHByb2Nlc3MgYWZ0ZXIgaXQgZmlu
aXNoZXMgc2VydmljZSB3b3JrZXIgZmlsZSBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1ODQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1uZXR3b3JrcHJvY2Vzcy1jcmFzaC5odG1sOgorCiAyMDE5LTA2LTA1ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgdGVzdCBs
YW5kZWQgZmxha3kgaW4gMjQ1ODczIFsgUmVsZWFzZSBdIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci1uZXR3b3JrcHJvY2Vzcy1jcmFzaC5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nlc3MtY3Jhc2gu
aHRtbAppbmRleCA5YzI5MmJiOWMzM2NiY2I5MDcxODE0YzM2NTM4YjU4NzM1ZGZhM2E0Li5jOTJi
NWIwMjkyMTIyNDhlNTk0NGYyMjI2Njg4ZjYyMGE0OTllMTE2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nl
c3MtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRtbApAQCAtNDUsNiArNDUsOSBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKIH0sICJGcmFtZSBiZWluZyBjb250cm9s
bGVkIik7CiAKIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICBhd2FpdCBpbnRlcm5hbHMuc3RvcmVSZWdpc3RyYXRpb25zT25E
aXNrKCk7CisKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LnRlc3RSdW5uZXIu
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIHRlc3RSdW5uZXIudGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>