<?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>178670</bug_id>
          
          <creation_ts>2017-10-23 09:49:22 -0700</creation_ts>
          <short_desc>Drop confusing Event::dispatched() method</short_desc>
          <delta_ts>2017-11-15 12:58:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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=178886</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=178897</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1363304</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-23 09:49:22 -0700</bug_when>
    <thetext>Drop confusing Event::dispatched() method and use Event::isBeingDispatched() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363306</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-23 09:52:09 -0700</bug_when>
    <thetext>Call sites want to check the &quot;dispatch&quot; flag on an event which gets set at the beginning of dispatchEvent() and unset at the end of dispatchEvent():
- https://dom.spec.whatwg.org/#dispatch-flag
- https://dom.spec.whatwg.org/#ref-for-dispatch-flag③
- https://dom.spec.whatwg.org/#dom-event-initevent

So isBeingDispatched() is the correct way of checking the Event&apos;s &quot;dispatch&quot; flag, dispatched() is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363312</commentid>
    <comment_count>2</comment_count>
      <attachid>324563</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-23 10:20:22 -0700</bug_when>
    <thetext>Created attachment 324563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363356</commentid>
    <comment_count>3</comment_count>
      <attachid>324563</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-23 12:12:32 -0700</bug_when>
    <thetext>Comment on attachment 324563
Patch

I guess we can also add a test for FetchEvent at some point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363367</commentid>
    <comment_count>4</comment_count>
      <attachid>324563</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-23 12:36:28 -0700</bug_when>
    <thetext>Comment on attachment 324563
Patch

Clearing flags on attachment: 324563

Committed r223849: &lt;https://trac.webkit.org/changeset/223849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363368</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-23 12:36:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364878</commentid>
    <comment_count>6</comment_count>
      <attachid>324563</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-26 10:01:21 -0700</bug_when>
    <thetext>Comment on attachment 324563
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        The right way to check the Event&apos;s &quot;dispatch&quot; flag is the Event::isBeingDispatched()
&gt; +        method, so use this instead. One side effect of this change is that it is now
&gt; +        possible to call the init*Event() method on events that have already been dispatched
&gt; +        in order to dispatch them again, as per the specification.

I wouldn’t call this a side effect; this is the main benefit of the patch! The &quot;dispatched&quot; function could have been named &quot;wasDispatched&quot;. I implemented the original rule, thinking it was correct. Maybe WebKit was always peculiar and different from other browsers. I had thought it matched them.

Some loose ends:

- This change opens the door for web content to re-use events that it did not create, using init functions to re-initialize with new values. This could may lead to problems due to properties that events have that are not normally settable by the DOM, and properties that might be hidden from it entirely. Some examples: Event::m_composed, Event::m_underlyingEvent, MouseRelatedEvent::m_isSimulated, WheelEvent::m_wheelEvent, WheelEvent::m_initializedWithPlatformWheelEvent. I think these things need to be cleared out by the init functions now; before it was safe to leave them alone because events with unusual settings for these were already dispatched, and so the init functions wouldn’t do anything to them at all. I think that any property not set by the init function may be dangerous now. Or harmless but with some strange effect. Or maybe entirely harmless.

- Looks like DOMWindow::dispatchEvent leaves the event in &quot;isBeingDispatched&quot; state forever. I don’t see any code to clear the target, reset the propagation flags, and set the event phase back to none. In fact, I don’t think those things should all be done with separate functions. The three dispatchEvent functions have all sorts of differences, and maybe we can refactor a bit so they share a little bit more code. No test coverage for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365008</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-26 13:27:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 324563 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324563&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:22
&gt; &gt; +        The right way to check the Event&apos;s &quot;dispatch&quot; flag is the Event::isBeingDispatched()
&gt; &gt; +        method, so use this instead. One side effect of this change is that it is now
&gt; &gt; +        possible to call the init*Event() method on events that have already been dispatched
&gt; &gt; +        in order to dispatch them again, as per the specification.
&gt; 
&gt; I wouldn’t call this a side effect; this is the main benefit of the patch!
&gt; The &quot;dispatched&quot; function could have been named &quot;wasDispatched&quot;. I
&gt; implemented the original rule, thinking it was correct. Maybe WebKit was
&gt; always peculiar and different from other browsers. I had thought it matched
&gt; them.
&gt; 
&gt; Some loose ends:
&gt; 
&gt; - This change opens the door for web content to re-use events that it did
&gt; not create, using init functions to re-initialize with new values. This
&gt; could may lead to problems due to properties that events have that are not
&gt; normally settable by the DOM, and properties that might be hidden from it
&gt; entirely. Some examples: Event::m_composed, Event::m_underlyingEvent,
&gt; MouseRelatedEvent::m_isSimulated, WheelEvent::m_wheelEvent,
&gt; WheelEvent::m_initializedWithPlatformWheelEvent. I think these things need
&gt; to be cleared out by the init functions now; before it was safe to leave
&gt; them alone because events with unusual settings for these were already
&gt; dispatched, and so the init functions wouldn’t do anything to them at all. I
&gt; think that any property not set by the init function may be dangerous now.
&gt; Or harmless but with some strange effect. Or maybe entirely harmless.

Per spec, initEvent() should not reset Event::m_composed:
https://dom.spec.whatwg.org/#concept-event-initialize

I&apos;ll take a look at the others.

&gt; - Looks like DOMWindow::dispatchEvent leaves the event in
&gt; &quot;isBeingDispatched&quot; state forever. I don’t see any code to clear the target,
&gt; reset the propagation flags, and set the event phase back to none. In fact,
&gt; I don’t think those things should all be done with separate functions. The
&gt; three dispatchEvent functions have all sorts of differences, and maybe we
&gt; can refactor a bit so they share a little bit more code. No test coverage
&gt; for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372292</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:58:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324563</attachid>
            <date>2017-10-23 10:20:22 -0700</date>
            <delta_ts>2017-10-23 12:36:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178670-20171023102021.patch</filename>
            <type>text/plain</type>
            <size>20029</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE1NzU1NDBmNjM5NjYz
MjA1MTJkZWExYjIzYjQ5ZjE4N2VhZTY3MS4uMjVhNjFkY2U1NTYyZDNhMDVjY2FmMWU0ZTUzZjg5
NmU1YTI5YTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTEwLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBjb25mdXNpbmcgRXZl
bnQ6OmRpc3BhdGNoZWQoKSBtZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERyb3AgY29uZnVzaW5nIEV2ZW50OjpkaXNwYXRjaGVkKCkgbWV0aG9k
LiBXaGF0IHRoZSBjYWxsIHNpdGVzIHdhbnQgdG8gZG8gaXMgY2hlY2sKKyAgICAgICAgdGhhdCB0
aGUgRXZlbnQncyAiZGlzcGF0Y2giIGZsYWcgaXMgc2V0OgorICAgICAgICAtIGh0dHBzOi8vZG9t
LnNwZWMud2hhdHdnLm9yZy8jZGlzcGF0Y2gtZmxhZworCisgICAgICAgIFRoaXMgZmxhZyBnZXRz
IHNldCBhdCB0aGUgYmVnaW5uaW5nIG9mIGRpc3BhdGNoRXZlbnQoKSBhbmQgdW5zZXQgYXQgdGhl
IGVuZCBvZgorICAgICAgICBkaXNwYXRjaEV2ZW50KCk6CisgICAgICAgIC0gaHR0cHM6Ly9kb20u
c3BlYy53aGF0d2cub3JnLyNyZWYtZm9yLWRpc3BhdGNoLWZsYWfikaIKKworICAgICAgICBTZWUg
YXMgYW4gZXhhbXBsZSBldmVudC5pbml0RXZlbnQoKToKKyAgICAgICAgLSBodHRwczovL2RvbS5z
cGVjLndoYXR3Zy5vcmcvI2RvbS1ldmVudC1pbml0ZXZlbnQKKworICAgICAgICBUaGUgcmlnaHQg
d2F5IHRvIGNoZWNrIHRoZSBFdmVudCdzICJkaXNwYXRjaCIgZmxhZyBpcyB0aGUgRXZlbnQ6Omlz
QmVpbmdEaXNwYXRjaGVkKCkKKyAgICAgICAgbWV0aG9kLCBzbyB1c2UgdGhpcyBpbnN0ZWFkLiBP
bmUgc2lkZSBlZmZlY3Qgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBpcyBub3cKKyAgICAgICAg
cG9zc2libGUgdG8gY2FsbCB0aGUgaW5pdCpFdmVudCgpIG1ldGhvZCBvbiBldmVudHMgdGhhdCBo
YXZlIGFscmVhZHkgYmVlbiBkaXNwYXRjaGVkCisgICAgICAgIGluIG9yZGVyIHRvIGRpc3BhdGNo
IHRoZW0gYWdhaW4sIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBUZXN0OiBm
YXN0L2V2ZW50cy9pbml0RXZlbnQtYWZ0ZXItZGlzcGF0Y2hpbmcuaHRtbAorCisgICAgICAgICog
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25F
dmVudDo6aW5pdENvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25F
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmlj
ZU1vdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3Jp
ZW50YXRpb25FdmVudCk6CisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0hh
c2hDaGFuZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAqIGRvbS9P
dmVyZmxvd0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok92ZXJmbG93RXZlbnQ6OmluaXRP
dmVyZmxvd0V2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRFdmVudDo6aW5pdFRleHRFdmVudCk6CisgICAgICAgICogZG9tL1RvdWNoRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6aW5pdFRvdWNoRXZlbnQpOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6Omlu
aXRVSUV2ZW50KToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50Ojppbml0U3RvcmFn
ZUV2ZW50KToKKwogMjAxNy0xMC0yMyAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0NvbnRleHQzRCB1c2FnZSBmcm9t
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKaW5kZXggOTE1YmUwMjJhMjA4MDYwOGE2OTZiYjI4ODJiMGQ0Y2VjOTBiZGYwYy4u
MGUzOGE2NzE4Y2QxZGFkMmU3OTAyOGI4OTAwNTZhNmZjYjY0MmM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCBDb21wb3NpdGlvbkV2
ZW50Ojp+Q29tcG9zaXRpb25FdmVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBDb21wb3NpdGlvbkV2
ZW50Ojppbml0Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhKQogewotICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgaWYgKGlzQmVpbmdEaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGV2aWNlTW90aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2
ZW50LmNwcAppbmRleCBlYjRiYmY3YzliZWUyYzdmYmNkZDYxMTNlOTA3ZDg4MTUxOGE0NGVjLi40
YTRiM2UzYjJkNGYyYTA3YzdkNjI4N2FkNzMxNjg5OTY3NmRmMmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gRGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsKCkgY29uc3QKIAogdm9pZCBE
ZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0aW9uYWw8RGV2
aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb24sIHN0ZDo6b3B0aW9u
YWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRp
bmdHcmF2aXR5LCBzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+
JiYgcm90YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpCiB7Ci0gICAg
aWYgKGRpc3BhdGNoZWQoKSkKKyAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW5pdEV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCmluZGV4IGFkZDhl
YmM0ODVhZGYzYWM0NWY1N2E0NTY4YmJhZDlkYWExZmYzMDUuLmIxNzgwNDZmMTEzMTJmYTg1MGVi
OTg1MzI5NDk5MGUxZTk2YTVmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25FdmVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0CiAKIHZvaWQg
RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRp
bmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpCiB7Ci0gICAgaWYgKGRp
c3BhdGNoZWQoKSkKKyAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaW5pdEV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOwpAQCAtODgsNyAr
ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29s
dXRlKCkgY29uc3QKIAogdm9pZCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3Jp
ZW50YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9v
bCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gYWJzb2x1dGUpCiB7Ci0gICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICBpZiAoaXNCZWlu
Z0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdEV2ZW50KHR5cGUsIGJ1
YmJsZXMsIGNhbmNlbGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA3OWZkZjkxYmZiZjU3ODQyYmI5
M2IyMzY5MThmMDI2NGM1YTU0MzY4Li41ODg1YzNhMzkxMTY5ZjM2MDllYmExZThmZTNmOWZiOTJj
ODUwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtMTY1LDYgKzE2NSw4IEBAIHB1YmxpYzoKICAgICBF
dmVudCogdW5kZXJseWluZ0V2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nRXZlbnQu
Z2V0KCk7IH0KICAgICB2b2lkIHNldFVuZGVybHlpbmdFdmVudChFdmVudCopOwogCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBkaXNwYXRjaCBmbGFnIGlzIHNldC4KKyAgICAvLyBodHRwczov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Rpc3BhdGNoLWZsYWcKICAgICBib29sIGlzQmVpbmdEaXNw
YXRjaGVkKCkgY29uc3QgeyByZXR1cm4gZXZlbnRQaGFzZSgpOyB9CiAKICAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAt
MTc3LDcgKzE3OSw2IEBAIHByb3RlY3RlZDoKICAgICBFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IEV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRUYXJnZXQoKTsKLSAgICBib29sIGRpc3BhdGNoZWQoKSBjb25zdCB7IHJldHVybiBt
X3RhcmdldDsgfQogCiBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSGFzaENoYW5nZUV2ZW50LmgKaW5kZXggZjJjM2Q5NGE4NzEzM2VhNjQwMDlkMmUyYmMw
OWEzMzJlOTJmYWMwNi4uYWUzNjc0N2IxYzc3MzVhNzdjNjQ1ZGZiYzY5NzFhNWNlM2U1MmQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGluaXRIYXNoQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYg
b2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCkKICAgICB7Ci0gICAgICAgIGlmIChkaXNwYXRj
aGVkKCkpCisgICAgICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGluaXRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggYWU2ZWRmYjZmMThkYmM0
MzFiOGUwMzYwNzY5MWQ1MTUwMTM1MDg0ZC4uNDAzYWZhOTU0MGU5MDM3MDY2MzI4ZGZkZWNlNzc4
ODg1MWUwMzIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZrZXlJZGVudGlmaWVyLCB1bnNpZ25lZCBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBo
S2V5KQogewotICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdmlldywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4
IGI1MTk0NWE4Yjk4NzJiNTgzN2M4MDY4YzI5YmJmZTcwODE2MWNlNzkuLjU0ODU5NmNmMWY4NWU0
OWNmOGFiMWEwMTEyYjYzZDRjNmViZjM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkgPSBk
ZWZhdWx0OwogCiB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIEpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiB7Ci0gICAgaWYgKGRpc3Bh
dGNoZWQoKSkKKyAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5jcHAKaW5kZXggOGViZDQ3YTdiYzEyZmU3OWIwYzRlMjU5YzNmZWFiMDZmYmE5
YTcwMi4uMDBkMDVkZWJjMzZiZGJhZDk0MThlZTAwOTAxZjk5MjdiOWI5NDQyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIE1vdXNlRXZlbnQ6On5Nb3Vz
ZUV2ZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
RE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGlu
dCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0KQogewotICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgaWYgKGlzQmVp
bmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PdmVy
Zmxvd0V2ZW50LmNwcAppbmRleCBkYzgwMTc4NGE2Mzk0NWI0NDkzNTQ0NTk3ZTgwYTUzOTVlZjA2
ZDAzLi41MjUzZDc0NjY0Y2UwZjg1MTAxNDJmYjdjNTYxOTIyNzFmYjhjNTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIEV2ZW50SW50ZXJmYWNl
IE92ZXJmbG93RXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKIAogdm9pZCBPdmVyZmxvd0V2
ZW50Ojppbml0T3ZlcmZsb3dFdmVudCh1bnNpZ25lZCBzaG9ydCBvcmllbnQsIGJvb2wgaG9yaXpv
bnRhbE92ZXJmbG93LCBib29sIHZlcnRpY2FsT3ZlcmZsb3cpCiB7Ci0gICAgaWYgKGRpc3BhdGNo
ZWQoKSkKKyAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5vdmVyZmxvd2NoYW5nZWRFdmVudCwgZmFsc2UsIGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKaW5kZXggYWVjNjE2ZWNjYTkwMjE1ZTI4YzUz
MDZlN2RhNTExZGU4MmZjY2QzMC4uM2VkNjY4NTUwMjc0NDM0MmMwODc5NDM2M2Y0ZmRmYmYwNzE3
Mjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBUZXh0
RXZlbnQ6On5UZXh0RXZlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgVGV4dEV2ZW50Ojppbml0VGV4
dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYg
KGRpc3BhdGNoZWQoKSkKKyAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAppbmRleCBlN2Q2MTYwM2NiYTA5YTU5YWEy
NWFjOTgwMzVmNjI3OTEyZTNkNTQzLi42MWMwOGYyMWRhMzhiYWE3YTExMGYyMmRjYTZhNTdiZTkz
YjY4M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgVG91Y2hFdmVudDo6aW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExp
c3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgIERPTVdpbmRvdyogdmlldywgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKIHsKLSAgICBp
ZiAoZGlzcGF0Y2hlZCgpKQorICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpbml0VUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50LmNwcAppbmRleCA3YzZhNmE3M2NkOTI5NThlMjI1YTBhYzUyMjRmODYwMGUx
OGY5MjkzLi5hYjIwZWVjYjljNTgzMWRlZjAyNzljYTc4YTBlN2NjNWZhODU2MjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgRE9NV2luZG93
KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQogewotICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAg
aWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluaXRFdmVu
dCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVs
RXZlbnQuY3BwCmluZGV4IGI4NDlkOGNmN2MxN2EyZmZlNGJmODcyNGJlODFkODEyYmI5ZDNhNjMu
LmQxNzUyYmYyOWU0MmRmZmEwMDQ2NGI2ODE4YjIxMzhlNWY2ZDE0NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV2hlZWxFdmVudDo6V2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiAKIHZvaWQg
V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwg
RE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50
IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXkpCiB7Ci0gICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICBpZiAoaXNCZWluZ0Rpc3BhdGNo
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGluaXRVSUV2ZW50KGV2ZW50TmFtZXMo
KS53aGVlbEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUV2ZW50LmNwcAppbmRleCAxYmQ4ZGI5ZjllZDNmNGI3NjEyZGI0NjE3MDdjN2FkNjFl
Y2FkNmFmLi5mMDliMTRmMGVkMjgxMGFkODk0YzJmOTVmZDU4ZjZjN2I2NWYwZmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFN0b3Jh
Z2VFdmVudDo6U3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbGl6ZXIsIElzCiAKIHZvaWQgU3RvcmFnZUV2ZW50Ojppbml0U3RvcmFnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTdG9yYWdlKiBzdG9yYWdlQXJlYSkKIHsK
LSAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBiYWE3NjU2YjVlNWUzOGJhZmMxZWIzNjc5OTk3MDYyNzZiNzQyZWE4Li5mNzFm
ZWYwYjE1MzVkNGM2MjFkMjA5NDk5OTcxNDgxZDA5MmU4NTI0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTctMTAtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBEcm9wIGNvbmZ1c2luZyBFdmVudDo6ZGlzcGF0Y2hlZCgpIG1ldGhvZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NjcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVy
YWdlLgorCisgICAgICAgICogZmFzdC9ldmVudHMvaW5pdEV2ZW50LWFmdGVyLWRpc3BhdGNoaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5pdEV2ZW50LWFm
dGVyLWRpc3BhdGNoaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE3LTEwLTIyICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjE5Njc1KTog
V2ViIEluc3BlY3RvcjogQ29tbWFuZExpbmVBUEkgZ2V0RXZlbnRMaXN0ZW5lcnMgZG9lcyBub3Qg
d29yawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5pdEV2ZW50LWFmdGVy
LWRpc3BhdGNoaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2luaXRF
dmVudC1hZnRlci1kaXNwYXRjaGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmEzNzEwMjMy
ZjI3ZWY5MDdmYmVlMzA3ZDQzY2ZjMDljNzMyOTVjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2luaXRFdmVudC1hZnRlci1kaXNwYXRjaGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMDcgQEAKK1Rlc3RzIHRoYXQgdGhlIHZhcmlvdXMgaW5pdCpFdmVudCgp
IGZ1bmN0aW9ucyB3b3JrIG9uIGFuIGV2ZW50IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwYXRj
aGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworKiBDb21wb3NpdGlvbkV2ZW50
LnByb3RvdHlwZS5pbml0Q29tcG9zaXRpb25FdmVudCgpCit0ZXN0RXZlbnQgPSBkb2N1bWVudC5j
cmVhdGVFdmVudChjcmVhdGVFdmVudFN0cmluZykKK1BBU1MgdGVzdEV2ZW50Ll9fcHJvdG9fXyBp
cyB3aW5kb3dbZXZlbnRUeXBlXS5wcm90b3R5cGUKK3Rlc3RFdmVudFtpbml0TWV0aG9kTmFtZV0o
J2ZpcnN0VHlwZScsIHRydWUsIHRydWUpCitQQVNTIHRlc3RFdmVudC50eXBlIGlzICJmaXJzdFR5
cGUiCitQQVNTIHRlc3RFdmVudC5idWJibGVzIGlzIHRydWUKK1BBU1MgdGVzdEV2ZW50LmNhbmNl
bGFibGUgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQodGVzdEV2ZW50
KSBpcyB0cnVlCit0ZXN0RXZlbnRbaW5pdE1ldGhvZE5hbWVdKCdzZWNvbmRUeXBlJywgZmFsc2Us
IGZhbHNlKQorUEFTUyB0ZXN0RXZlbnQudHlwZSBpcyAic2Vjb25kVHlwZSIKK1BBU1MgdGVzdEV2
ZW50LmJ1YmJsZXMgaXMgZmFsc2UKK1BBU1MgdGVzdEV2ZW50LmNhbmNlbGFibGUgaXMgZmFsc2UK
K1BBU1MgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KHRlc3RFdmVudCkgaXMgdHJ1ZQorCisq
IEhhc2hDaGFuZ2VFdmVudC5wcm90b3R5cGUuaW5pdEhhc2hDaGFuZ2VFdmVudCgpCit0ZXN0RXZl
bnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChjcmVhdGVFdmVudFN0cmluZykKK1BBU1MgdGVzdEV2
ZW50Ll9fcHJvdG9fXyBpcyB3aW5kb3dbZXZlbnRUeXBlXS5wcm90b3R5cGUKK3Rlc3RFdmVudFtp
bml0TWV0aG9kTmFtZV0oJ2ZpcnN0VHlwZScsIHRydWUsIHRydWUpCitQQVNTIHRlc3RFdmVudC50
eXBlIGlzICJmaXJzdFR5cGUiCitQQVNTIHRlc3RFdmVudC5idWJibGVzIGlzIHRydWUKK1BBU1Mg
dGVzdEV2ZW50LmNhbmNlbGFibGUgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5ib2R5LmRpc3BhdGNo
RXZlbnQodGVzdEV2ZW50KSBpcyB0cnVlCit0ZXN0RXZlbnRbaW5pdE1ldGhvZE5hbWVdKCdzZWNv
bmRUeXBlJywgZmFsc2UsIGZhbHNlKQorUEFTUyB0ZXN0RXZlbnQudHlwZSBpcyAic2Vjb25kVHlw
ZSIKK1BBU1MgdGVzdEV2ZW50LmJ1YmJsZXMgaXMgZmFsc2UKK1BBU1MgdGVzdEV2ZW50LmNhbmNl
bGFibGUgaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KHRlc3RFdmVu
dCkgaXMgdHJ1ZQorCisqIEtleWJvYXJkRXZlbnQucHJvdG90eXBlLmluaXRLZXlib2FyZEV2ZW50
KCkKK3Rlc3RFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KGNyZWF0ZUV2ZW50U3RyaW5nKQor
UEFTUyB0ZXN0RXZlbnQuX19wcm90b19fIGlzIHdpbmRvd1tldmVudFR5cGVdLnByb3RvdHlwZQor
dGVzdEV2ZW50W2luaXRNZXRob2ROYW1lXSgnZmlyc3RUeXBlJywgdHJ1ZSwgdHJ1ZSkKK1BBU1Mg
dGVzdEV2ZW50LnR5cGUgaXMgImZpcnN0VHlwZSIKK1BBU1MgdGVzdEV2ZW50LmJ1YmJsZXMgaXMg
dHJ1ZQorUEFTUyB0ZXN0RXZlbnQuY2FuY2VsYWJsZSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmJv
ZHkuZGlzcGF0Y2hFdmVudCh0ZXN0RXZlbnQpIGlzIHRydWUKK3Rlc3RFdmVudFtpbml0TWV0aG9k
TmFtZV0oJ3NlY29uZFR5cGUnLCBmYWxzZSwgZmFsc2UpCitQQVNTIHRlc3RFdmVudC50eXBlIGlz
ICJzZWNvbmRUeXBlIgorUEFTUyB0ZXN0RXZlbnQuYnViYmxlcyBpcyBmYWxzZQorUEFTUyB0ZXN0
RXZlbnQuY2FuY2VsYWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZl
bnQodGVzdEV2ZW50KSBpcyB0cnVlCisKKyogTWVzc2FnZUV2ZW50LnByb3RvdHlwZS5pbml0TWVz
c2FnZUV2ZW50KCkKK3Rlc3RFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KGNyZWF0ZUV2ZW50
U3RyaW5nKQorUEFTUyB0ZXN0RXZlbnQuX19wcm90b19fIGlzIHdpbmRvd1tldmVudFR5cGVdLnBy
b3RvdHlwZQordGVzdEV2ZW50W2luaXRNZXRob2ROYW1lXSgnZmlyc3RUeXBlJywgdHJ1ZSwgdHJ1
ZSkKK1BBU1MgdGVzdEV2ZW50LnR5cGUgaXMgImZpcnN0VHlwZSIKK1BBU1MgdGVzdEV2ZW50LmJ1
YmJsZXMgaXMgdHJ1ZQorUEFTUyB0ZXN0RXZlbnQuY2FuY2VsYWJsZSBpcyB0cnVlCitQQVNTIGRv
Y3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudCh0ZXN0RXZlbnQpIGlzIHRydWUKK3Rlc3RFdmVudFtp
bml0TWV0aG9kTmFtZV0oJ3NlY29uZFR5cGUnLCBmYWxzZSwgZmFsc2UpCitQQVNTIHRlc3RFdmVu
dC50eXBlIGlzICJzZWNvbmRUeXBlIgorUEFTUyB0ZXN0RXZlbnQuYnViYmxlcyBpcyBmYWxzZQor
UEFTUyB0ZXN0RXZlbnQuY2FuY2VsYWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5ib2R5LmRp
c3BhdGNoRXZlbnQodGVzdEV2ZW50KSBpcyB0cnVlCisKKyogVGV4dEV2ZW50LnByb3RvdHlwZS5p
bml0VGV4dEV2ZW50KCkKK3Rlc3RFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KGNyZWF0ZUV2
ZW50U3RyaW5nKQorUEFTUyB0ZXN0RXZlbnQuX19wcm90b19fIGlzIHdpbmRvd1tldmVudFR5cGVd
LnByb3RvdHlwZQordGVzdEV2ZW50W2luaXRNZXRob2ROYW1lXSgnZmlyc3RUeXBlJywgdHJ1ZSwg
dHJ1ZSkKK1BBU1MgdGVzdEV2ZW50LnR5cGUgaXMgImZpcnN0VHlwZSIKK1BBU1MgdGVzdEV2ZW50
LmJ1YmJsZXMgaXMgdHJ1ZQorUEFTUyB0ZXN0RXZlbnQuY2FuY2VsYWJsZSBpcyB0cnVlCitQQVNT
IGRvY3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudCh0ZXN0RXZlbnQpIGlzIHRydWUKK3Rlc3RFdmVu
dFtpbml0TWV0aG9kTmFtZV0oJ3NlY29uZFR5cGUnLCBmYWxzZSwgZmFsc2UpCitQQVNTIHRlc3RF
dmVudC50eXBlIGlzICJzZWNvbmRUeXBlIgorUEFTUyB0ZXN0RXZlbnQuYnViYmxlcyBpcyBmYWxz
ZQorUEFTUyB0ZXN0RXZlbnQuY2FuY2VsYWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5ib2R5
LmRpc3BhdGNoRXZlbnQodGVzdEV2ZW50KSBpcyB0cnVlCisKKyogVUlFdmVudC5wcm90b3R5cGUu
aW5pdFVJRXZlbnQoKQordGVzdEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoY3JlYXRlRXZl
bnRTdHJpbmcpCitQQVNTIHRlc3RFdmVudC5fX3Byb3RvX18gaXMgd2luZG93W2V2ZW50VHlwZV0u
cHJvdG90eXBlCit0ZXN0RXZlbnRbaW5pdE1ldGhvZE5hbWVdKCdmaXJzdFR5cGUnLCB0cnVlLCB0
cnVlKQorUEFTUyB0ZXN0RXZlbnQudHlwZSBpcyAiZmlyc3RUeXBlIgorUEFTUyB0ZXN0RXZlbnQu
YnViYmxlcyBpcyB0cnVlCitQQVNTIHRlc3RFdmVudC5jYW5jZWxhYmxlIGlzIHRydWUKK1BBU1Mg
ZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KHRlc3RFdmVudCkgaXMgdHJ1ZQordGVzdEV2ZW50
W2luaXRNZXRob2ROYW1lXSgnc2Vjb25kVHlwZScsIGZhbHNlLCBmYWxzZSkKK1BBU1MgdGVzdEV2
ZW50LnR5cGUgaXMgInNlY29uZFR5cGUiCitQQVNTIHRlc3RFdmVudC5idWJibGVzIGlzIGZhbHNl
CitQQVNTIHRlc3RFdmVudC5jYW5jZWxhYmxlIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LmJvZHku
ZGlzcGF0Y2hFdmVudCh0ZXN0RXZlbnQpIGlzIHRydWUKKworKiBTdG9yYWdlRXZlbnQucHJvdG90
eXBlLmluaXRTdG9yYWdlRXZlbnQoKQordGVzdEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
Y3JlYXRlRXZlbnRTdHJpbmcpCitQQVNTIHRlc3RFdmVudC5fX3Byb3RvX18gaXMgd2luZG93W2V2
ZW50VHlwZV0ucHJvdG90eXBlCit0ZXN0RXZlbnRbaW5pdE1ldGhvZE5hbWVdKCdmaXJzdFR5cGUn
LCB0cnVlLCB0cnVlKQorUEFTUyB0ZXN0RXZlbnQudHlwZSBpcyAiZmlyc3RUeXBlIgorUEFTUyB0
ZXN0RXZlbnQuYnViYmxlcyBpcyB0cnVlCitQQVNTIHRlc3RFdmVudC5jYW5jZWxhYmxlIGlzIHRy
dWUKK1BBU1MgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KHRlc3RFdmVudCkgaXMgdHJ1ZQor
dGVzdEV2ZW50W2luaXRNZXRob2ROYW1lXSgnc2Vjb25kVHlwZScsIGZhbHNlLCBmYWxzZSkKK1BB
U1MgdGVzdEV2ZW50LnR5cGUgaXMgInNlY29uZFR5cGUiCitQQVNTIHRlc3RFdmVudC5idWJibGVz
IGlzIGZhbHNlCitQQVNTIHRlc3RFdmVudC5jYW5jZWxhYmxlIGlzIGZhbHNlCitQQVNTIGRvY3Vt
ZW50LmJvZHkuZGlzcGF0Y2hFdmVudCh0ZXN0RXZlbnQpIGlzIHRydWUKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2luaXRFdmVudC1hZnRlci1kaXNwYXRjaGluZy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5pdEV2ZW50LWFmdGVyLWRpc3BhdGNoaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGIxMjJlYzUyOWE4NThkMmZhZDRkY2JiZjBiMjhmMWMwNjlkNzAxOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2luaXRFdmVudC1hZnRlci1kaXNw
YXRjaGluZy5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIHZhcmlvdXMgaW5pdCpFdmVu
dCgpIGZ1bmN0aW9ucyB3b3JrIG9uIGFuIGV2ZW50IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNw
YXRjaGVkLiIpOworCitmdW5jdGlvbiB0ZXN0RXZlbnRJbml0RnVuY3Rpb24oX2NyZWF0ZUV2ZW50
U3RyaW5nLCBfZXZlbnRUeXBlLCBfaW5pdE1ldGhvZE5hbWUpCit7CisgICAgY3JlYXRlRXZlbnRT
dHJpbmcgPSBfY3JlYXRlRXZlbnRTdHJpbmc7CisgICAgZXZlbnRUeXBlID0gX2V2ZW50VHlwZTsK
KyAgICBpbml0TWV0aG9kTmFtZSA9IF9pbml0TWV0aG9kTmFtZTsKKworICAgIGRlYnVnKCIqICIg
KyBldmVudFR5cGUgKyAiLnByb3RvdHlwZS4iICsgaW5pdE1ldGhvZE5hbWUgKyAiKCkiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0ZXN0RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChjcmVhdGVFdmVu
dFN0cmluZykiKTsKKyAgICBzaG91bGRCZSgidGVzdEV2ZW50Ll9fcHJvdG9fXyIsICJ3aW5kb3db
ZXZlbnRUeXBlXS5wcm90b3R5cGUiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0RXZlbnRbaW5pdE1l
dGhvZE5hbWVdKCdmaXJzdFR5cGUnLCB0cnVlLCB0cnVlKSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygidGVzdEV2ZW50LnR5cGUiLCAiZmlyc3RUeXBlIik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0ZXN0RXZlbnQuYnViYmxlcyIpOworICAgIHNob3VsZEJlVHJ1ZSgidGVzdEV2ZW50LmNhbmNl
bGFibGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRvY3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudCh0
ZXN0RXZlbnQpIik7CisgICAgZXZhbEFuZExvZygidGVzdEV2ZW50W2luaXRNZXRob2ROYW1lXSgn
c2Vjb25kVHlwZScsIGZhbHNlLCBmYWxzZSkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InRlc3RFdmVudC50eXBlIiwgInNlY29uZFR5cGUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ0ZXN0
RXZlbnQuYnViYmxlcyIpOworICAgIHNob3VsZEJlRmFsc2UoInRlc3RFdmVudC5jYW5jZWxhYmxl
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQodGVzdEV2
ZW50KSIpOworICAgIGRlYnVnKCIiKTsKK30KKwordGVzdEV2ZW50SW5pdEZ1bmN0aW9uKCJjb21w
b3NpdGlvbmV2ZW50IiwgIkNvbXBvc2l0aW9uRXZlbnQiLCAiaW5pdENvbXBvc2l0aW9uRXZlbnQi
KTsKK3Rlc3RFdmVudEluaXRGdW5jdGlvbigiaGFzaGNoYW5nZWV2ZW50IiwgIkhhc2hDaGFuZ2VF
dmVudCIsICJpbml0SGFzaENoYW5nZUV2ZW50Iik7Cit0ZXN0RXZlbnRJbml0RnVuY3Rpb24oImtl
eWJvYXJkZXZlbnQiLCAiS2V5Ym9hcmRFdmVudCIsICJpbml0S2V5Ym9hcmRFdmVudCIpOwordGVz
dEV2ZW50SW5pdEZ1bmN0aW9uKCJtZXNzYWdlZXZlbnQiLCAiTWVzc2FnZUV2ZW50IiwgImluaXRN
ZXNzYWdlRXZlbnQiKTsKK3Rlc3RFdmVudEluaXRGdW5jdGlvbigidGV4dGV2ZW50IiwgIlRleHRF
dmVudCIsICJpbml0VGV4dEV2ZW50Iik7Cit0ZXN0RXZlbnRJbml0RnVuY3Rpb24oInVpZXZlbnQi
LCAiVUlFdmVudCIsICJpbml0VUlFdmVudCIpOwordGVzdEV2ZW50SW5pdEZ1bmN0aW9uKCJzdG9y
YWdlZXZlbnQiLCAiU3RvcmFnZUV2ZW50IiwgImluaXRTdG9yYWdlRXZlbnQiKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>