<?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>203088</bug_id>
          
          <creation_ts>2019-10-17 09:41:06 -0700</creation_ts>
          <short_desc>WebAnimation should never prevent entering the back/forward cache</short_desc>
          <delta_ts>2019-10-30 01:50:22 -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>WebCore 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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203075</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>
          
          <blocked>202293</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1580996</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-17 09:41:06 -0700</bug_when>
    <thetext>WebAnimation should never prevent entering the back/forward cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581022</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-17 10:01:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/56374249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581827</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-21 02:09:15 -0700</bug_when>
    <thetext>So to fix we need to:

- remove WebAnimation::shouldPreventEnteringBackForwardCache_DEPRECATED()
- subclass ActiveDOMObject::suspend() and ActiveDOMObject::resume()
- queue events between calls to suspend() and resume() or use a WindowEventLoop (though I&apos;m not sure that is always possible since a WebAnimation may not be associated with a Document directly)
- don&apos;t resolve promises while the document is suspended

We might need something similar for DocumentTimeline, although it&apos;s possible that already happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581846</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-21 07:32:00 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #2)
&gt; So to fix we need to:
&gt; 
&gt; - remove WebAnimation::shouldPreventEnteringBackForwardCache_DEPRECATED()
&gt; - subclass ActiveDOMObject::suspend() and ActiveDOMObject::resume()
&gt; - queue events between calls to suspend() and resume() or use a
&gt; WindowEventLoop (though I&apos;m not sure that is always possible since a
&gt; WebAnimation may not be associated with a Document directly)

ActiveDOMObject need a script execution context when constructed. So presumably WebAnimation has one on construction.

If you cannot use WindowEventLoop, we have GenericEventQueue &amp; SuspendableTaskQueue.
In your case, since you have both promises and events, SuspendableTaskQueue may be better. You can add such data member and then simply enqueue lambdas that either dispatch events or resolve promises. Those data types are PageCache aware and will delay things during suspension for you.

&gt; - don&apos;t resolve promises while the document is suspended
&gt; 
&gt; We might need something similar for DocumentTimeline, although it&apos;s possible
&gt; that already happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581867</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-21 09:45:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to Antoine Quint from comment #2)
&gt; &gt; So to fix we need to:
&gt; &gt; 
&gt; &gt; - remove WebAnimation::shouldPreventEnteringBackForwardCache_DEPRECATED()
&gt; &gt; - subclass ActiveDOMObject::suspend() and ActiveDOMObject::resume()
&gt; &gt; - queue events between calls to suspend() and resume() or use a
&gt; &gt; WindowEventLoop (though I&apos;m not sure that is always possible since a
&gt; &gt; WebAnimation may not be associated with a Document directly)
&gt; 
&gt; ActiveDOMObject need a script execution context when constructed. So
&gt; presumably WebAnimation has one on construction.
&gt; 
&gt; If you cannot use WindowEventLoop, we have GenericEventQueue &amp;
&gt; SuspendableTaskQueue.
&gt; In your case, since you have both promises and events, SuspendableTaskQueue
&gt; may be better. You can add such data member and then simply enqueue lambdas
&gt; that either dispatch events or resolve promises. Those data types are
&gt; PageCache aware and will delay things during suspension for you.

Right, we have a Document at creation time. It may not necessarily match the animation&apos;s associated document, but for the purpose of the back/forward cache, that should be fine since they will all be associated with the same top-level navigation.

I will look into SuspendableTaskQueue, it seems to be the most appropriate for my use. Thanks for the tips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582424</commentid>
    <comment_count>5</comment_count>
      <attachid>381558</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-22 10:09:50 -0700</bug_when>
    <thetext>Created attachment 381558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582428</commentid>
    <comment_count>6</comment_count>
      <attachid>381558</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-22 10:24:24 -0700</bug_when>
    <thetext>Comment on attachment 381558
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        We remove the Web Animation subclass of the deprecated method ActiveDOMObject::shouldPreventEnteringBackForwardCache_DEPRECATED()

s/subclass/override

&gt; Source/WebCore/animation/WebAnimation.cpp:-616
&gt; -        callOnMainThread([this, pendingActivity = makePendingActivity(*this), event = WTFMove(event)]() {

You likely want to add `|| m_taskQueue-&gt;hasPendingTasks()` to WebAnimation::hasPendingActivity(), to make sure that your JS wrapper does not get collected until the event actually fires.
You used to enforce this behavior via a `pendingActivity = makePendingActivity(*this)` here.

&gt; Source/WebCore/animation/WebAnimation.cpp:618
&gt; +            this-&gt;dispatchEvent(event);

this-&gt; should not be needed.

&gt; Source/WebCore/animation/WebAnimation.cpp:1163
&gt; +    ActiveDOMObject::suspend(reasonForSuspension);

Not needed.

&gt; Source/WebCore/animation/WebAnimation.cpp:1169
&gt; +    ActiveDOMObject::resume();

Not needed.

&gt; LayoutTests/webanimations/animation-page-cache.html:52
&gt; +        // Load a new page, and let it go back after 500ms.

This says 500ms but your next line says 1 second.
Either way, this seems like a pretty slow test, it&apos;d be good to shorten this if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582445</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-22 10:58:30 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 381558 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381558&amp;action=review
&gt; 
&gt; &gt; LayoutTests/webanimations/animation-page-cache.html:52
&gt; &gt; +        // Load a new page, and let it go back after 500ms.
&gt; 
&gt; This says 500ms but your next line says 1 second.
&gt; Either way, this seems like a pretty slow test, it&apos;d be good to shorten this
&gt; if possible.

It is tricky, there needs to be some real delay if we want to have a guarantee that we navigate forward and backward while the animation is live. I think we can shorten it a bit, which I will do in the next patch, but it is necessary for some time to elapse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582446</commentid>
    <comment_count>8</comment_count>
      <attachid>381566</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-22 11:00:24 -0700</bug_when>
    <thetext>Created attachment 381566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582448</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-22 11:07:50 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 381558 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381558&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        We remove the Web Animation subclass of the deprecated method ActiveDOMObject::shouldPreventEnteringBackForwardCache_DEPRECATED()
&gt; 
&gt; s/subclass/override
&gt; 
&gt; &gt; Source/WebCore/animation/WebAnimation.cpp:-616
&gt; &gt; -        callOnMainThread([this, pendingActivity = makePendingActivity(*this), event = WTFMove(event)]() {
&gt; 
&gt; You likely want to add `|| m_taskQueue-&gt;hasPendingTasks()` to
&gt; WebAnimation::hasPendingActivity(), to make sure that your JS wrapper does
&gt; not get collected until the event actually fires.
&gt; You used to enforce this behavior via a `pendingActivity =
&gt; makePendingActivity(*this)` here.


I&apos;ll have to research this some more, but adding this check makes webanimations/leak-document-with-web-animation.html regress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585047</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 13:06:29 -0700</bug_when>
    <thetext>I found the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585048</commentid>
    <comment_count>11</comment_count>
      <attachid>382212</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 13:07:52 -0700</bug_when>
    <thetext>Created attachment 382212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585050</commentid>
    <comment_count>12</comment_count>
      <attachid>382212</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 13:08:29 -0700</bug_when>
    <thetext>Comment on attachment 382212
Patch

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

&gt; Source/WebCore/platform/SuspendableTaskQueue.h:61
&gt; +    bool hasPendingTasks() const { return !m_pendingTasks.isEmpty(); }

This was the bug, wasn&apos;t your fault :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585157</commentid>
    <comment_count>13</comment_count>
      <attachid>382212</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-29 16:07:23 -0700</bug_when>
    <thetext>Comment on attachment 382212
Patch

Clearing flags on attachment: 382212

Committed r251742: &lt;https://trac.webkit.org/changeset/251742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585158</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-29 16:07:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585304</commentid>
    <comment_count>15</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-10-30 01:50:22 -0700</bug_when>
    <thetext>Thanks for wrapping this up Chris!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381558</attachid>
            <date>2019-10-22 10:09:50 -0700</date>
            <delta_ts>2019-10-22 11:00:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203088-20191022190948.patch</filename>
            <type>text/plain</type>
            <size>11855</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiNTk4Yjg4ZGY3M2Qz
ZGVjOGIwOWI1MWRmMDNiYzllYjMzZjY5ZS4uYjRlN2Q0NzhjMjZhMGUxMjViZTI5MDliZjJlNzcz
YmVkNjdhZjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTIyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQW5pbWF0aW9uIHNo
b3VsZCBuZXZlciBwcmV2ZW50IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzA4OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTYzNzQyNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1j
YWNoZS5odG1sCisKKyAgICAgICAgV2UgcmVtb3ZlIHRoZSBXZWIgQW5pbWF0aW9uIHN1YmNsYXNz
IG9mIHRoZSBkZXByZWNhdGVkIG1ldGhvZCBBY3RpdmVET01PYmplY3Q6OnNob3VsZFByZXZlbnRF
bnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCgpCisgICAgICAgIGFuZCBpbnN0ZWFk
IGVuc3VyZSBldmVudCBkaXNwYXRjaCBpcyBzdXNwZW5kZWQgYWxvbmcgd2l0aCB0aGUgV2ViQW5p
bWF0aW9uIG9iamVjdCB0aHJvdWdoIHRoZSBhZG9wdGlvbiBvZiBhIFN1c3BlbmRhYmxlVGFza1F1
ZXVlLgorCisgICAgICAgIFdlIGFsc28gZW5zdXJlIGFuIGFuaW1hdGlvbiBjb3JyZWN0bHkgc3Vz
cGVuZHMgaXRzZWxmIHdoZW4gQWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kKCkgYW5kIEFjdGl2ZURP
TU9iamVjdDo6cmVzdW1lKCkgYXJlIGNhbGxlZC4KKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZXNl
IG1ldGhvZHMgc2hvd2VkIHRoYXQgd2UgaGF2ZSBzb21lIHBsYWNlaG9sZGVycyBpbiBEZWNsYXJh
dGl2ZUFuaW1hdGlvbiB0aGF0IHdlcmUgbm90IG5lY2Vzc2FyeSwgc28gd2UgcmVtb3ZlIHRob3Nl
LgorCisgICAgICAgIEZpbmFsbHksIHdlIG5vIGxvbmdlciBuZWVkIHRvIHRyYWNrIHRoZSBzdG9w
cGVkIHN0YXRlIHNpbmNlIHRoZSBTdXNwZW5kYWJsZVRhc2tRdWV1ZSB3aWxsIGNsb3NlIGl0c2Vs
ZiB3aGVuIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpCisgICAgICAgIGlzIGNhbGxlZC4KKworICAg
ICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaDoKKyAgICAgICAgKiBhbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6V2ViQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlv
blBsYXliYWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkFuaW1hdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b246OnNob3VsZFByZXZlbnRFbnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorCiAyMDE5
LTEwLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VzcGVu
ZCBkZWRpY2F0ZWQgd29ya2VyIHRocmVhZHMgd2hpbGUgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5j
cHAKaW5kZXggYmI4Y2E4NDU5MDU5NWFjODkyMTI3Mjc1MDUyZmU4ZmM3YzkxNzMyOC4uNmRlNmMz
NDczZjBhN2U3OTQxMGQyNzI1ZGMzYjFjZmZiY2FhYTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC0zNDYsMTkgKzM0Niw0
IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmVudChjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMKICAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NUcmFu
c2l0aW9uPih0aGlzKS0+dHJhbnNpdGlvblByb3BlcnR5KCksIHRpbWUsIFBzZXVkb0VsZW1lbnQ6
OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5nRWxlbWVudC0+cHNldWRvSWQoKSkp
KTsKIH0KIAotdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3RvcCgpCi17Ci0gICAgV2ViQW5p
bWF0aW9uOjpzdG9wKCk7Ci19Ci0KLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnN1c3BlbmQo
UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5k
KHJlYXNvbik7Ci19Ci0KLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlc3VtZSgpCi17Ci0g
ICAgV2ViQW5pbWF0aW9uOjpyZXN1bWUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAppbmRl
eCAzMWQwY2ZiZDQ2ZmFkMjE4ZDVmYWVmYTVhMjkwMDg4MTNhMWRkZDEzLi5jOTY2ZTU4YzJkZjEw
MTMwNGM5NDJhMGZmYTRlODI4YzZkYWMzMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaApAQCAtODEsMTEgKzgxLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgU2Vjb25kcyk7CiAg
ICAgdm9pZCByZW1vdmUoKSBmaW5hbDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICB2
b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUo
KSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLQogICAgIGJvb2wgbV93YXNQZW5kaW5n
IHsgZmFsc2UgfTsKICAgICBBbmltYXRpb25FZmZlY3RQaGFzZSBtX3ByZXZpb3VzUGhhc2UgeyBB
bmltYXRpb25FZmZlY3RQaGFzZTo6SWRsZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9X
ZWJBbmltYXRpb24uY3BwCmluZGV4IDM5ZjZiMzQ0YzdiNDQ1ZTY0NDdmODkyZDY2MzFmZmUyZTUx
MTFhMzcuLjJkYzA2ODI2ZGE3ODI4OTVlZTdlNTVkNjNjODE5ZDMzY2U1ZTMyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIFdl
YkFuaW1hdGlvbjo6V2ViQW5pbWF0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2N1bWVudCkKICAgICAsIG1fcmVhZHlQcm9taXNlKG1ha2VVbmlxdWVSZWY8
UmVhZHlQcm9taXNlPigqdGhpcywgJldlYkFuaW1hdGlvbjo6cmVhZHlQcm9taXNlUmVzb2x2ZSkp
CiAgICAgLCBtX2ZpbmlzaGVkUHJvbWlzZShtYWtlVW5pcXVlUmVmPEZpbmlzaGVkUHJvbWlzZT4o
KnRoaXMsICZXZWJBbmltYXRpb246OmZpbmlzaGVkUHJvbWlzZVJlc29sdmUpKQorICAgICwgbV90
YXNrUXVldWUoU3VzcGVuZGFibGVUYXNrUXVldWU6OmNyZWF0ZShkb2N1bWVudCkpCiB7CiAgICAg
bV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpA
QCAtNjEzLDkgKzYxNCw4IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjplbnF1ZXVlQW5pbWF0aW9uUGxh
eWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hCiAgICAgICAgIGRvd25j
YXN0PERvY3VtZW50VGltZWxpbmU+KCptX3RpbWVsaW5lKS5lbnF1ZXVlQW5pbWF0aW9uUGxheWJh
Y2tFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT3RoZXJ3
aXNlLCBxdWV1ZSBhIHRhc2sgdG8gZGlzcGF0Y2ggZXZlbnQgYXQgYW5pbWF0aW9uLiBUaGUgdGFz
ayBzb3VyY2UgZm9yIHRoaXMgdGFzayBpcyB0aGUgRE9NIG1hbmlwdWxhdGlvbiB0YXNrIHNvdXJj
ZS4KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFr
ZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkgewotICAg
ICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkKLSAgICAgICAgICAgICAgICB0aGlzLT5kaXNwYXRj
aEV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFt0aGlzLCBl
dmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAgICAgICAgICB0aGlzLT5kaXNwYXRjaEV2ZW50
KGV2ZW50KTsKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtMTE1NywxOSArMTE1NywyMSBAQCBj
b25zdCBjaGFyKiBXZWJBbmltYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAg
IHJldHVybiAiQW5pbWF0aW9uIjsKIH0KIAotLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5ldmVyIHBy
ZXZlbnQgZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLWJvb2wgV2ViQW5pbWF0aW9u
OjpzaG91bGRQcmV2ZW50RW50ZXJpbmdCYWNrRm9yd2FyZENhY2hlX0RFUFJFQ0FURUQoKSBjb25z
dAordm9pZCBXZWJBbmltYXRpb246OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb25G
b3JTdXNwZW5zaW9uKQogewotICAgIC8vIFVzZSB0aGUgYmFzZSBjbGFzcydzIGltcGxlbWVudGF0
aW9uIG9mIGhhc1BlbmRpbmdBY3Rpdml0eSgpIHNpbmNlIHdlIHdvdWxkbid0IHdhbnQgdGhlIGN1
c3RvbSBpbXBsZW1lbnRhdGlvbgotICAgIC8vIGluIHRoaXMgY2xhc3MgZGVzaWduZWQgdG8ga2Vl
cCBKUyB3cmFwcGVycyBhbGl2ZSB0byBpbnRlcmZlcmUgd2l0aCB0aGUgYWJpbGl0eSBmb3IgYSBw
YWdlIHVzaW5nIGFuaW1hdGlvbnMKLSAgICAvLyB0byBlbnRlciB0aGUgYmFjay9mb3J3YXJkIGNh
Y2hlLgotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwor
ICAgIHNldFN1c3BlbmRlZCh0cnVlKTsKKyAgICBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmQocmVh
c29uRm9yU3VzcGVuc2lvbik7Cit9CisKK3ZvaWQgV2ViQW5pbWF0aW9uOjpyZXN1bWUoKQorewor
ICAgIHNldFN1c3BlbmRlZChmYWxzZSk7CisgICAgQWN0aXZlRE9NT2JqZWN0OjpyZXN1bWUoKTsK
IH0KIAogdm9pZCBXZWJBbmltYXRpb246OnN0b3AoKQogewogICAgIEFjdGl2ZURPTU9iamVjdDo6
c3RvcCgpOwotICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICByZW1vdmVBbGxFdmVudExpc3Rl
bmVycygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5kZXgg
ZDQxNTlkZmFkMjE4YTE4ZGYwYzE1MmE2YTA1MTQ1NTVjNmQwZTZlNC4uMWMxMWRjZmVmNDJhMzlj
YTc3MzVhMGU3NzBlZDk5NWIxNGI2MmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJB
bmltYXRpb24uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUg
IlN1c3BlbmRhYmxlVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KQEAgLTE0MCw4ICsxNDEsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
V2ViQW5pbWF0aW9uKERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKLQog
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIERpZFNlZWsgOiB1aW50OF90IHsgWWVzLCBObyB9Owog
ICAgIGVudW0gY2xhc3MgU3luY2hyb25vdXNseU5vdGlmeSA6IHVpbnQ4X3QgeyBZZXMsIE5vIH07
CkBAIC0xNzYsNiArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QW5pbWF0aW9uVGltZWxp
bmU+IG1fdGltZWxpbmU7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgVW5pcXVlUmVmPEZpbmlzaGVkUHJvbWlzZT4gbV9maW5pc2hlZFByb21pc2U7Cisg
ICAgVW5pcXVlUmVmPFN1c3BlbmRhYmxlVGFza1F1ZXVlPiBtX3Rhc2tRdWV1ZTsKICAgICBNYXJr
YWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9wcmV2aW91c0N1cnJlbnRU
aW1lOwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX3N0
YXJ0VGltZTsKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4g
bV9ob2xkVGltZTsKQEAgLTE4NSw3ICsxODUsNiBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fc3Vz
cGVuZENvdW50IHsgMCB9OwogCi0gICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmluaXNoTm90aWZpY2F0
aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nOwogICAgIGJvb2wgbV9pc1JlbGV2YW50OwpAQCAtMTk3
LDcgKzE5Niw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc2hv
dWxkUHJldmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZV9ERVBSRUNBVEVEKCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZv
aWQgcmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAKICAgICAvLyBFdmVu
dFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gV2ViQW5pbWF0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMWU3ODY5ZWYwMDBiYzJhNTRkYjE3ZDFmM2VkNDk2NTI5YjI1M2ZjNS4uODhi
MjU3NDcxZGFhOTgzMGE4NmM2MzYyZmVhZjIwNzU5MDRiZjc0MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE5LTEwLTIyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViQW5pbWF0aW9uIHNob3VsZCBuZXZlciBwcmV2ZW50IGVudGVyaW5nIHRoZSBiYWNr
L2ZvcndhcmQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMzA4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYzNzQyNDk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qg
dGhhdCBjaGVja3MgdGhhdCBhbiBBbmltYXRpb24gdGhhdCB3b3VsZCBydW4gcGFzdCBhIHBhZ2Un
cyBuYXZpZ2F0aW9uIGlzIGNvcnJlY3RseSBzdXNwZW5kZWQKKyAgICAgICAgYW5kIHJlc3VtZWQg
YXMgaXQgZW50ZXJzIGFuZCBsZWF2ZXMgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KKworICAgICAg
ICAqIHdlYmFuaW1hdGlvbnMvYW5pbWF0aW9uLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FuaW1hdGlvbi1wYWdlLWNhY2hlLmh0bWw6IEFk
ZGVkLgorCiAyMDE5LTEwLTIxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIE11bHRpcGxlIGZhc3Qvc2Nyb2xsaW5nL2lvcyB0ZXN0cyBmYWlsaW5nIHdp
dGggdW5leHBlY3RlZCBzY3JvbGxiYXJzIGFwcGVhcmluZyBpbiByZXN1bHQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYW5pbWF0aW9uLXBhZ2UtY2FjaGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1jYWNoZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODIxMDM3YmQzOTg1MjZhZTk4NDUyOTYzZjc5MWY4MGM5Yjgz
MTQyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYW5pbWF0
aW9uLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgdGhlIHBhZ2UgY2FjaGUgc3VzcGVuZHMgYW5kIHJlc3VtZXMgV2ViIEFuaW1h
dGlvbnMgZnJvbSB0aGUgcGFnZSBjYWNoZS4gVGhlIHRlc3Qgc3RhcnRzIGFuIGFuaW1hdGlvbiwg
dGhlbiBuYXZpZ2F0ZXMgYXdheSwgd2FpdHMgYSBiaXQsIG5hdmlnYXRlcyBiYWNrLCBjb25maXJt
aW5nIHRoYXQgdGhlIHRpbWVsaW5lIGZyb3plIGF0IGEgZ2l2ZW4gdGltZSBhbmQgcmVzdW1lZCBp
biB0aGUgc2FtZSBzcG90LCBhZHZhbmNpbmcgdGhlIGFuaW1hdGlvbi4gSWYgc3VjY2Vzc2Z1bCwg
aXQgb3V0cHV0cyAnUEFTUycgYmVsb3cuCitQQVNTLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1jYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMjM4Mjc2
OGYxNjkxZGUyMmNlMzBjNGE1YWU1ODkyODYxZDE4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJhbmltYXRpb25zL2FuaW1hdGlvbi1wYWdlLWNhY2hlLmh0bWwKQEAgLTAsMCAr
MSw2MiBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVC
YWNrRm9yd2FyZENhY2hlPXRydWUgXSAtLT4KKzxodG1sPgorPHNjcmlwdD4KKworbGV0IHN1c3Bl
bmRlZCA9IGZhbHNlOworbGV0IHJlc3RvcmVkID0gZmFsc2U7CisKK3NldFRpbWVvdXQoKCkgPT4g
eworICAgIGZpbmlzaChgVElNRU9VVDogc3VzcGVuZGVkID0gJHtzdXNwZW5kZWR9LCByZXN0b3Jl
ZCA9ICR7cmVzdG9yZWR9LmApOworfSwgNTAwMCk7CisKK2Z1bmN0aW9uIGZpbmlzaChtc2cpCit7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gbXNn
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGV2ZW50ID0+
IHsKKyAgICBzdXNwZW5kZWQgPSBldmVudC5wZXJzaXN0ZWQ7CisgICAgaWYgKCFzdXNwZW5kZWQp
CisgICAgICAgIGZpbmlzaCgiRkFJTDogZXZlbnQucGVyc2lzdGVkIHdhcyBmYWxzZSBmb3IgcGFn
ZWhpZGUgZXZlbnQuIikKK30pOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZXNob3ci
LCBldmVudCA9PiB7CisgICAgLy8gSWYgd2UgaGF2ZW4ndCBiZWVuIHN1c3BlbmRlZCwgdGhlbiB0
aGlzIGlzIHRoZSBpbml0aWFsIHBhZ2UgbG9hZCwgbm90IHRoZSBiYWNrIG5hdmlnYXRpb24uCisg
ICAgaWYgKCFzdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc3RvcmVkID0gZXZl
bnQucGVyc2lzdGVkOworICAgIGlmICghcmVzdG9yZWQpCisgICAgICAgIGZpbmlzaCgiRkFJTDog
ZXZlbnQucGVyc2lzdGVkIHdhcyBmYWxzZSBmb3IgcGFnZXNob3cgZXZlbnQuIikKK30pOworCit3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGV2ZW50ID0+IHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIC8v
IFdlIHN0YXJ0IGFuIGFuaW1hdGlvbiB0aGF0IGlzIGp1c3QgbG9uZyBlbm91Z2ggdGhhdCBpdCB3
b3VsZCBmaW5pc2ggd2hpbGUgdGhlIHBhZ2UgaXMgaGlkZGVuLgorICAgIGRvY3VtZW50LmJvZHku
YW5pbWF0ZSh7IGJhY2tncm91bmRDb2xvcjogInJlZCIgfSwgNTAwKS5maW5pc2hlZC50aGVuKCgp
ID0+IHsKKyAgICAgICAgaWYgKCFzdXNwZW5kZWQpCisgICAgICAgICAgICBmaW5pc2goIkZBSUw6
IEFuaW1hdGlvbiBmaW5pc2hlZCBidXQgcHJldmVudGVkIHRoZSBwYWdlIGZyb20gYmVpbmcgc3Vz
cGVuZGVkLiIpOworICAgICAgICBlbHNlIGlmICghcmVzdG9yZWQpCisgICAgICAgICAgICBmaW5p
c2goIkZBSUw6IEFuaW1hdGlvbiBmaW5pc2hlZCBidXQgcHJldmVudGVkIHRoZSBwYWdlIGZyb20g
YmVpbmcgcmVzdG9yZWQuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpbmlzaCgiUEFT
Uy4iKTsKKyAgICB9KTsKKworICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7CisgICAg
ICAgIC8vIExvYWQgYSBuZXcgcGFnZSwgYW5kIGxldCBpdCBnbyBiYWNrIGFmdGVyIDUwMG1zLgor
ICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8Ym9keSBvbmxv
YWQ9J3NldFRpbWVvdXQoKCkgPT4gaGlzdG9yeS5iYWNrKCksIDEwMDApJz48L2JvZHk+IjsKKyAg
ICB9KTsKK30pOworCis8L3NjcmlwdD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
dGhlIHBhZ2UgY2FjaGUgc3VzcGVuZHMgYW5kIHJlc3VtZXMgV2ViIEFuaW1hdGlvbnMgZnJvbSB0
aGUgcGFnZSBjYWNoZS4gVGhlIHRlc3Qgc3RhcnRzIGFuIGFuaW1hdGlvbiwgdGhlbiBuYXZpZ2F0
ZXMgYXdheSwgd2FpdHMgYSBiaXQsIG5hdmlnYXRlcyBiYWNrLCBjb25maXJtaW5nIHRoYXQgdGhl
IHRpbWVsaW5lIGZyb3plIGF0IGEgZ2l2ZW4gdGltZSBhbmQgcmVzdW1lZCBpbiB0aGUgc2FtZSBz
cG90LCBhZHZhbmNpbmcgdGhlIGFuaW1hdGlvbi4gSWYgc3VjY2Vzc2Z1bCwgaXQgb3V0cHV0cyAn
UEFTUycgYmVsb3cuCis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381566</attachid>
            <date>2019-10-22 11:00:24 -0700</date>
            <delta_ts>2019-10-29 13:07:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203088-20191022200022.patch</filename>
            <type>text/plain</type>
            <size>12116</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiNTk4Yjg4ZGY3M2Qz
ZGVjOGIwOWI1MWRmMDNiYzllYjMzZjY5ZS4uNTE5YThkZjFjYzM2YmNiNTI1YjkxMTU0NGM3MmQ3
MWQzOTI0MzIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTEwLTIyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQW5pbWF0aW9uIHNo
b3VsZCBuZXZlciBwcmV2ZW50IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzA4OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTYzNzQyNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1j
YWNoZS5odG1sCisKKyAgICAgICAgV2UgcmVtb3ZlIHRoZSBXZWIgQW5pbWF0aW9uIG92ZXJyaWRl
IG9mIHRoZSBkZXByZWNhdGVkIG1ldGhvZCBBY3RpdmVET01PYmplY3Q6OnNob3VsZFByZXZlbnRF
bnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCgpCisgICAgICAgIGFuZCBpbnN0ZWFk
IGVuc3VyZSBldmVudCBkaXNwYXRjaCBpcyBzdXNwZW5kZWQgYWxvbmcgd2l0aCB0aGUgV2ViQW5p
bWF0aW9uIG9iamVjdCB0aHJvdWdoIHRoZSBhZG9wdGlvbiBvZiBhIFN1c3BlbmRhYmxlVGFza1F1
ZXVlLgorCisgICAgICAgIFdlIGFsc28gZW5zdXJlIGFuIGFuaW1hdGlvbiBjb3JyZWN0bHkgc3Vz
cGVuZHMgaXRzZWxmIHdoZW4gQWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kKCkgYW5kIEFjdGl2ZURP
TU9iamVjdDo6cmVzdW1lKCkgYXJlIGNhbGxlZC4KKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZXNl
IG1ldGhvZHMgc2hvd2VkIHRoYXQgd2UgaGF2ZSBzb21lIHBsYWNlaG9sZGVycyBpbiBEZWNsYXJh
dGl2ZUFuaW1hdGlvbiB0aGF0IHdlcmUgbm90IG5lY2Vzc2FyeSwgc28gd2UgcmVtb3ZlIHRob3Nl
LgorCisgICAgICAgIEZpbmFsbHksIHdlIG5vIGxvbmdlciBuZWVkIHRvIHRyYWNrIHRoZSBzdG9w
cGVkIHN0YXRlIHNpbmNlIHRoZSBTdXNwZW5kYWJsZVRhc2tRdWV1ZSB3aWxsIGNsb3NlIGl0c2Vs
ZiB3aGVuIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpCisgICAgICAgIGlzIGNhbGxlZC4KKworICAg
ICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaDoKKyAgICAgICAgKiBhbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6V2ViQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlv
blBsYXliYWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkFuaW1hdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246
OnNob3VsZFByZXZlbnRFbnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorCiAyMDE5LTEw
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VzcGVuZCBk
ZWRpY2F0ZWQgd29ya2VyIHRocmVhZHMgd2hpbGUgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAK
aW5kZXggYmI4Y2E4NDU5MDU5NWFjODkyMTI3Mjc1MDUyZmU4ZmM3YzkxNzMyOC4uNmRlNmMzNDcz
ZjBhN2U3OTQxMGQyNzI1ZGMzYjFjZmZiY2FhYTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC0zNDYsMTkgKzM0Niw0IEBA
IHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmVudChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIFNlY29uZHMKICAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZl
bnQoVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NUcmFuc2l0
aW9uPih0aGlzKS0+dHJhbnNpdGlvblByb3BlcnR5KCksIHRpbWUsIFBzZXVkb0VsZW1lbnQ6OnBz
ZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5nRWxlbWVudC0+cHNldWRvSWQoKSkpKTsK
IH0KIAotdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3RvcCgpCi17Ci0gICAgV2ViQW5pbWF0
aW9uOjpzdG9wKCk7Ci19Ci0KLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnN1c3BlbmQoUmVh
c29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKHJl
YXNvbik7Ci19Ci0KLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlc3VtZSgpCi17Ci0gICAg
V2ViQW5pbWF0aW9uOjpyZXN1bWUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAppbmRleCAz
MWQwY2ZiZDQ2ZmFkMjE4ZDVmYWVmYTVhMjkwMDg4MTNhMWRkZDEzLi5jOTY2ZTU4YzJkZjEwMTMw
NGM5NDJhMGZmYTRlODI4YzZkYWMzMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRGVjbGFyYXRpdmVBbmltYXRpb24uaApAQCAtODEsMTEgKzgxLDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgU2Vjb25kcyk7CiAgICAg
dm9pZCByZW1vdmUoKSBmaW5hbDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICB2b2lk
IHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBm
aW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLQogICAgIGJvb2wgbV93YXNQZW5kaW5nIHsg
ZmFsc2UgfTsKICAgICBBbmltYXRpb25FZmZlY3RQaGFzZSBtX3ByZXZpb3VzUGhhc2UgeyBBbmlt
YXRpb25FZmZlY3RQaGFzZTo6SWRsZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJB
bmltYXRpb24uY3BwCmluZGV4IDM5ZjZiMzQ0YzdiNDQ1ZTY0NDdmODkyZDY2MzFmZmUyZTUxMTFh
MzcuLjIxZTkxMTMxOWE0ZTFhYjQ2NDkzYTVkOWI5YTEzOGJhOTQxNTVlNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIFdlYkFu
aW1hdGlvbjo6V2ViQW5pbWF0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdChkb2N1bWVudCkKICAgICAsIG1fcmVhZHlQcm9taXNlKG1ha2VVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPigqdGhpcywgJldlYkFuaW1hdGlvbjo6cmVhZHlQcm9taXNlUmVzb2x2ZSkpCiAg
ICAgLCBtX2ZpbmlzaGVkUHJvbWlzZShtYWtlVW5pcXVlUmVmPEZpbmlzaGVkUHJvbWlzZT4oKnRo
aXMsICZXZWJBbmltYXRpb246OmZpbmlzaGVkUHJvbWlzZVJlc29sdmUpKQorICAgICwgbV90YXNr
UXVldWUoU3VzcGVuZGFibGVUYXNrUXVldWU6OmNyZWF0ZShkb2N1bWVudCkpCiB7CiAgICAgbV9y
ZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAt
NjEzLDkgKzYxNCw4IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjplbnF1ZXVlQW5pbWF0aW9uUGxheWJh
Y2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hCiAgICAgICAgIGRvd25jYXN0
PERvY3VtZW50VGltZWxpbmU+KCptX3RpbWVsaW5lKS5lbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tF
dmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT3RoZXJ3aXNl
LCBxdWV1ZSBhIHRhc2sgdG8gZGlzcGF0Y2ggZXZlbnQgYXQgYW5pbWF0aW9uLiBUaGUgdGFzayBz
b3VyY2UgZm9yIHRoaXMgdGFzayBpcyB0aGUgRE9NIG1hbmlwdWxhdGlvbiB0YXNrIHNvdXJjZS4K
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcyksIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkgewotICAgICAg
ICAgICAgaWYgKCFtX2lzU3RvcHBlZCkKLSAgICAgICAgICAgICAgICB0aGlzLT5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFt0aGlzLCBldmVu
dCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsK
ICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtMTE1NywyNiArMTE1NywyNiBAQCBjb25zdCBjaGFy
KiBXZWJBbmltYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAi
QW5pbWF0aW9uIjsKIH0KIAotLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5ldmVyIHByZXZlbnQgZW50
ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLWJvb2wgV2ViQW5pbWF0aW9uOjpzaG91bGRQ
cmV2ZW50RW50ZXJpbmdCYWNrRm9yd2FyZENhY2hlX0RFUFJFQ0FURUQoKSBjb25zdAordm9pZCBX
ZWJBbmltYXRpb246OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKIHsKLSAgICAvLyBVc2Ug
dGhlIGJhc2UgY2xhc3MncyBpbXBsZW1lbnRhdGlvbiBvZiBoYXNQZW5kaW5nQWN0aXZpdHkoKSBz
aW5jZSB3ZSB3b3VsZG4ndCB3YW50IHRoZSBjdXN0b20gaW1wbGVtZW50YXRpb24KLSAgICAvLyBp
biB0aGlzIGNsYXNzIGRlc2lnbmVkIHRvIGtlZXAgSlMgd3JhcHBlcnMgYWxpdmUgdG8gaW50ZXJm
ZXJlIHdpdGggdGhlIGFiaWxpdHkgZm9yIGEgcGFnZSB1c2luZyBhbmltYXRpb25zCi0gICAgLy8g
dG8gZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLSAgICByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICBzZXRTdXNwZW5kZWQodHJ1ZSk7Cit9CisK
K3ZvaWQgV2ViQW5pbWF0aW9uOjpyZXN1bWUoKQoreworICAgIHNldFN1c3BlbmRlZChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjpzdG9wKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6
OnN0b3AoKTsKLSAgICBtX2lzU3RvcHBlZCA9IHRydWU7CiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0
ZW5lcnMoKTsKIH0KIAogYm9vbCBXZWJBbmltYXRpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7CiAgICAgLy8gS2VlcCB0aGUgSlMgd3JhcHBlciBhbGl2ZSBpZiB0aGUgYW5pbWF0aW9u
IGlzIGNvbnNpZGVyZWQgcmVsZXZhbnQgb3IgY291bGQgYmVjb21lIHJlbGV2YW50IGFnYWluIGJ5
IHZpcnR1ZSBvZiBoYXZpbmcgYSB0aW1lbGluZS4KLSAgICByZXR1cm4gbV90aW1lbGluZSB8fCBt
X2lzUmVsZXZhbnQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAg
ICByZXR1cm4gbV90aW1lbGluZSB8fCBtX2lzUmVsZXZhbnQgfHwgbV90YXNrUXVldWUtPmhhc1Bl
bmRpbmdUYXNrcygpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9
CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVSZWxldmFuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oCmluZGV4IGQ0MTU5ZGZhZDIxOGExOGRmMGMxNTJhNmEwNTE0
NTU1YzZkMGU2ZTQuLjFjMTFkY2ZlZjQyYTM5Y2E3NzM1YTBlNzcwZWQ5OTViMTRiNjJmOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJTdXNwZW5kYWJsZVRhc2tRdWV1ZS5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvblV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xNDAsOCArMTQxLDYgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdlYkFuaW1hdGlvbihEb2N1bWVudCYpOwogCi0g
ICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBEaWRT
ZWVrIDogdWludDhfdCB7IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIFN5bmNocm9ub3VzbHlO
b3RpZnkgOiB1aW50OF90IHsgWWVzLCBObyB9OwpAQCAtMTc2LDYgKzE3NSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiBtX3RpbWVsaW5lOwogICAgIFVuaXF1ZVJl
ZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIFVuaXF1ZVJlZjxGaW5pc2hlZFBy
b21pc2U+IG1fZmluaXNoZWRQcm9taXNlOworICAgIFVuaXF1ZVJlZjxTdXNwZW5kYWJsZVRhc2tR
dWV1ZT4gbV90YXNrUXVldWU7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2Fi
bGVUcmFpdHM+IG1fcHJldmlvdXNDdXJyZW50VGltZTsKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBT
ZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9zdGFydFRpbWU7CiAgICAgTWFya2FibGU8U2Vjb25k
cywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1faG9sZFRpbWU7CkBAIC0xODUsNyArMTg1LDYg
QEAgcHJpdmF0ZToKIAogICAgIGludCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKIAotICAgIGJvb2wg
bV9pc1N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZzsKICAg
ICBib29sIG1faXNSZWxldmFudDsKQEAgLTE5Nyw3ICsxOTYsOSBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbDsKLSAgICBib29sIHNob3VsZFByZXZlbnRFbnRlcmluZ0JhY2tGb3J3YXJk
Q2FjaGVfREVQUkVDQVRFRCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYkFuaW1h
dGlvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFlNzg2OWVmMDAwYmMyYTU0
ZGIxN2QxZjNlZDQ5NjUyOWIyNTNmYzUuLjg4YjI1NzQ3MWRhYTk4MzBhODZjNjM2MmZlYWYyMDc1
OTA0YmY3NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMC0yMiAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFuaW1hdGlvbiBzaG91bGQgbmV2
ZXIgcHJldmVudCBlbnRlcmluZyB0aGUgYmFjay9mb3J3YXJkIGNhY2hlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMwODgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU2Mzc0MjQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYW4gQW5pbWF0aW9u
IHRoYXQgd291bGQgcnVuIHBhc3QgYSBwYWdlJ3MgbmF2aWdhdGlvbiBpcyBjb3JyZWN0bHkgc3Vz
cGVuZGVkCisgICAgICAgIGFuZCByZXN1bWVkIGFzIGl0IGVudGVycyBhbmQgbGVhdmVzIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUuCisKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FuaW1hdGlvbi1w
YWdlLWNhY2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9h
bmltYXRpb24tcGFnZS1jYWNoZS5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0yMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNdWx0aXBsZSBmYXN0L3Nj
cm9sbGluZy9pb3MgdGVzdHMgZmFpbGluZyB3aXRoIHVuZXhwZWN0ZWQgc2Nyb2xsYmFycyBhcHBl
YXJpbmcgaW4gcmVzdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2Fu
aW1hdGlvbi1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlv
bnMvYW5pbWF0aW9uLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMTAzN2Jk
Mzk4NTI2YWU5ODQ1Mjk2M2Y3OTFmODBjOWI4MzE0MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJhbmltYXRpb25zL2FuaW1hdGlvbi1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBwYWdlIGNhY2hlIHN1
c3BlbmRzIGFuZCByZXN1bWVzIFdlYiBBbmltYXRpb25zIGZyb20gdGhlIHBhZ2UgY2FjaGUuIFRo
ZSB0ZXN0IHN0YXJ0cyBhbiBhbmltYXRpb24sIHRoZW4gbmF2aWdhdGVzIGF3YXksIHdhaXRzIGEg
Yml0LCBuYXZpZ2F0ZXMgYmFjaywgY29uZmlybWluZyB0aGF0IHRoZSB0aW1lbGluZSBmcm96ZSBh
dCBhIGdpdmVuIHRpbWUgYW5kIHJlc3VtZWQgaW4gdGhlIHNhbWUgc3BvdCwgYWR2YW5jaW5nIHRo
ZSBhbmltYXRpb24uIElmIHN1Y2Nlc3NmdWwsIGl0IG91dHB1dHMgJ1BBU1MnIGJlbG93LgorUEFT
Uy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYW5pbWF0aW9uLXBhZ2Ut
Y2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYW5pbWF0aW9uLXBhZ2UtY2Fj
aGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMjY1N2I0MmNhOTM4ZmJmNzdjNzhiN2FkYjNiODViYjU4YzUy
ODdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hbmltYXRp
b24tcGFnZS1jYWNoZS5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFja0ZvcndhcmRDYWNoZT10cnVlIF0gLS0+Cis8
aHRtbD4KKzxzY3JpcHQ+CisKK2xldCBzdXNwZW5kZWQgPSBmYWxzZTsKK2xldCByZXN0b3JlZCA9
IGZhbHNlOworCitmdW5jdGlvbiBmaW5pc2gobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBldmVudCA9PiB7CisgICAgc3VzcGVuZGVkID0gZXZl
bnQucGVyc2lzdGVkOworICAgIGlmICghc3VzcGVuZGVkKQorICAgICAgICBmaW5pc2goIkZBSUw6
IGV2ZW50LnBlcnNpc3RlZCB3YXMgZmFsc2UgZm9yIHBhZ2VoaWRlIGV2ZW50LiIpCit9KTsKKwor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93IiwgZXZlbnQgPT4geworICAgIC8vIElm
IHdlIGhhdmVuJ3QgYmVlbiBzdXNwZW5kZWQsIHRoZW4gdGhpcyBpcyB0aGUgaW5pdGlhbCBwYWdl
IGxvYWQsIG5vdCB0aGUgYmFjayBuYXZpZ2F0aW9uLgorICAgIGlmICghc3VzcGVuZGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICByZXN0b3JlZCA9IGV2ZW50LnBlcnNpc3RlZDsKKyAgICBpZiAo
IXJlc3RvcmVkKQorICAgICAgICBmaW5pc2goIkZBSUw6IGV2ZW50LnBlcnNpc3RlZCB3YXMgZmFs
c2UgZm9yIHBhZ2VzaG93IGV2ZW50LiIpCit9KTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
IkRPTUNvbnRlbnRMb2FkZWQiLCBldmVudCA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICAvLyBXZSBzdGFydCBhbiBhbmltYXRpb24g
dGhhdCBpcyBqdXN0IGxvbmcgZW5vdWdoIHRoYXQgaXQgd291bGQgZmluaXNoIHdoaWxlIHRoZSBw
YWdlIGlzIGhpZGRlbi4KKyAgICBkb2N1bWVudC5ib2R5LmFuaW1hdGUoeyBiYWNrZ3JvdW5kQ29s
b3I6ICJyZWQiIH0sIDUwMCkuZmluaXNoZWQudGhlbigoKSA9PiB7CisgICAgICAgIGlmICghc3Vz
cGVuZGVkKQorICAgICAgICAgICAgZmluaXNoKCJGQUlMOiBBbmltYXRpb24gZmluaXNoZWQgYnV0
IHByZXZlbnRlZCB0aGUgcGFnZSBmcm9tIGJlaW5nIHN1c3BlbmRlZC4iKTsKKyAgICAgICAgZWxz
ZSBpZiAoIXJlc3RvcmVkKQorICAgICAgICAgICAgZmluaXNoKCJGQUlMOiBBbmltYXRpb24gZmlu
aXNoZWQgYnV0IHByZXZlbnRlZCB0aGUgcGFnZSBmcm9tIGJlaW5nIHJlc3RvcmVkLiIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmaW5pc2goIlBBU1MuIik7CisgICAgfSk7CisKKyAgICBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICAvLyBMb2FkIGEgbmV3IHBhZ2Us
IGFuZCBsZXQgaXQgZ28gYmFjayBhZnRlciAyNTBtcy4KKyAgICAgICAgd2luZG93LmxvY2F0aW9u
LmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPGJvZHkgb25sb2FkPSdzZXRUaW1lb3V0KCgpID0+IGhp
c3RvcnkuYmFjaygpLCAyNTApJz48L2JvZHk+IjsKKyAgICB9KTsKK30pOworCis8L3NjcmlwdD4K
Kzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHBhZ2UgY2FjaGUgc3VzcGVuZHMg
YW5kIHJlc3VtZXMgV2ViIEFuaW1hdGlvbnMgZnJvbSB0aGUgcGFnZSBjYWNoZS4gVGhlIHRlc3Qg
c3RhcnRzIGFuIGFuaW1hdGlvbiwgdGhlbiBuYXZpZ2F0ZXMgYXdheSwgd2FpdHMgYSBiaXQsIG5h
dmlnYXRlcyBiYWNrLCBjb25maXJtaW5nIHRoYXQgdGhlIHRpbWVsaW5lIGZyb3plIGF0IGEgZ2l2
ZW4gdGltZSBhbmQgcmVzdW1lZCBpbiB0aGUgc2FtZSBzcG90LCBhZHZhbmNpbmcgdGhlIGFuaW1h
dGlvbi4gSWYgc3VjY2Vzc2Z1bCwgaXQgb3V0cHV0cyAnUEFTUycgYmVsb3cuCis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382212</attachid>
            <date>2019-10-29 13:07:52 -0700</date>
            <delta_ts>2019-10-29 16:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203088-20191029130751.patch</filename>
            <type>text/plain</type>
            <size>15923</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1OGRiNTM4MGY1MGZk
NDA3OGM2MjNlODM3Yzk5YTgyMzFhNTkwZS4uYzhhNGI2YmJkNDRiNTY2OGQzMzQ5Yjc4ZGFkZDY3
MDRjMjRhNjUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTEwLTI5ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQW5pbWF0aW9uIHNo
b3VsZCBuZXZlciBwcmV2ZW50IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzA4OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTYzNzQyNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1j
YWNoZS5odG1sCisKKyAgICAgICAgV2UgcmVtb3ZlIHRoZSBXZWIgQW5pbWF0aW9uIG92ZXJyaWRl
IG9mIHRoZSBkZXByZWNhdGVkIG1ldGhvZCBBY3RpdmVET01PYmplY3Q6OnNob3VsZFByZXZlbnRF
bnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCgpCisgICAgICAgIGFuZCBpbnN0ZWFk
IGVuc3VyZSBldmVudCBkaXNwYXRjaCBpcyBzdXNwZW5kZWQgYWxvbmcgd2l0aCB0aGUgV2ViQW5p
bWF0aW9uIG9iamVjdCB0aHJvdWdoIHRoZSBhZG9wdGlvbiBvZiBhIFN1c3BlbmRhYmxlVGFza1F1
ZXVlLgorCisgICAgICAgIFdlIGFsc28gZW5zdXJlIGFuIGFuaW1hdGlvbiBjb3JyZWN0bHkgc3Vz
cGVuZHMgaXRzZWxmIHdoZW4gQWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kKCkgYW5kIEFjdGl2ZURP
TU9iamVjdDo6cmVzdW1lKCkgYXJlIGNhbGxlZC4KKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZXNl
IG1ldGhvZHMgc2hvd2VkIHRoYXQgd2UgaGF2ZSBzb21lIHBsYWNlaG9sZGVycyBpbiBEZWNsYXJh
dGl2ZUFuaW1hdGlvbiB0aGF0IHdlcmUgbm90IG5lY2Vzc2FyeSwgc28gd2UgcmVtb3ZlIHRob3Nl
LgorCisgICAgICAgIEZpbmFsbHksIHdlIG5vIGxvbmdlciBuZWVkIHRvIHRyYWNrIHRoZSBzdG9w
cGVkIHN0YXRlIHNpbmNlIHRoZSBTdXNwZW5kYWJsZVRhc2tRdWV1ZSB3aWxsIGNsb3NlIGl0c2Vs
ZiB3aGVuIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpCisgICAgICAgIGlzIGNhbGxlZC4KKworICAg
ICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaDoKKyAgICAgICAgKiBhbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6V2ViQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlv
blBsYXliYWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkFuaW1hdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246
OnNob3VsZFByZXZlbnRFbnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorCiAyMDE5LTEw
LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgPGlucHV0IHR5
cGU9InJhbmdlIj4uc2V0QXR0cmlidXRlKCJ2YWx1ZSIpIGRvZXMgbm90IHVwZGF0ZSB0aGUgdmFs
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24u
Y3BwCmluZGV4IGJiOGNhODQ1OTA1OTVhYzg5MjEyNzI3NTA1MmZlOGZjN2M5MTczMjguLjZkZTZj
MzQ3M2YwYTdlNzk0MTBkMjcyNWRjM2IxY2ZmYmNhYWE3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAtMzQ2LDE5ICszNDYs
NCBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjplbnF1ZXVlRE9NRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBTZWNvbmRzCiAgICAgICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJh
bnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50
Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkp
KSk7CiB9CiAKLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnN0b3AoKQotewotICAgIFdlYkFu
aW1hdGlvbjo6c3RvcCgpOwotfQotCi12b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQotewotICAgIFdlYkFuaW1hdGlvbjo6c3VzcGVu
ZChyZWFzb24pOwotfQotCi12b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpyZXN1bWUoKQotewot
ICAgIFdlYkFuaW1hdGlvbjo6cmVzdW1lKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5k
ZXggMzFkMGNmYmQ0NmZhZDIxOGQ1ZmFlZmE1YTI5MDA4ODEzYTFkZGQxMy4uYzk2NmU1OGMyZGYx
MDEzMDRjOTQyYTBmZmE0ZTgyOGM2ZGFjMzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKQEAgLTgxLDExICs4MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBlbnF1ZXVlRE9NRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIFNlY29uZHMpOwog
ICAgIHZvaWQgcmVtb3ZlKCkgZmluYWw7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QuCi0gICAg
dm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1l
KCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0KICAgICBib29sIG1fd2FzUGVuZGlu
ZyB7IGZhbHNlIH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsg
QW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcAppbmRleCAzOWY2YjM0NGM3YjQ0NWU2NDQ3Zjg5MmQ2NjMxZmZlMmU1
MTExYTM3Li44ODRmZjRjNzQwYWYwMTUzODQ0NDc5YmQ4N2IwMmQ2NGJlYjQ1YjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNjcsNiArNjcsNyBAQCBX
ZWJBbmltYXRpb246OldlYkFuaW1hdGlvbihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoZG9jdW1lbnQpCiAgICAgLCBtX3JlYWR5UHJvbWlzZShtYWtlVW5pcXVlUmVm
PFJlYWR5UHJvbWlzZT4oKnRoaXMsICZXZWJBbmltYXRpb246OnJlYWR5UHJvbWlzZVJlc29sdmUp
KQogICAgICwgbV9maW5pc2hlZFByb21pc2UobWFrZVVuaXF1ZVJlZjxGaW5pc2hlZFByb21pc2U+
KCp0aGlzLCAmV2ViQW5pbWF0aW9uOjpmaW5pc2hlZFByb21pc2VSZXNvbHZlKSkKKyAgICAsIG1f
dGFza1F1ZXVlKFN1c3BlbmRhYmxlVGFza1F1ZXVlOjpjcmVhdGUoZG9jdW1lbnQpKQogewogICAg
IG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsK
QEAgLTYxMyw5ICs2MTQsOCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlvblBs
YXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgT3B0aW9uYQogICAgICAgICBkb3du
Y2FzdDxEb2N1bWVudFRpbWVsaW5lPigqbV90aW1lbGluZSkuZW5xdWV1ZUFuaW1hdGlvblBsYXli
YWNrRXZlbnQoV1RGTW92ZShldmVudCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVy
d2lzZSwgcXVldWUgYSB0YXNrIHRvIGRpc3BhdGNoIGV2ZW50IGF0IGFuaW1hdGlvbi4gVGhlIHRh
c2sgc291cmNlIGZvciB0aGlzIHRhc2sgaXMgdGhlIERPTSBtYW5pcHVsYXRpb24gdGFzayBzb3Vy
Y2UuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSgpIHsKLSAg
ICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpCi0gICAgICAgICAgICAgICAgdGhpcy0+ZGlzcGF0
Y2hFdmVudChldmVudCk7CisgICAgICAgIG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbdGhpcywg
ZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0geworICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVu
dCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTExNTcsMjYgKzExNTcsMjcgQEAgY29uc3Qg
Y2hhciogV2ViQW5pbWF0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gIkFuaW1hdGlvbiI7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBuZXZlciBwcmV2ZW50
IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCi1ib29sIFdlYkFuaW1hdGlvbjo6c2hv
dWxkUHJldmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZV9ERVBSRUNBVEVEKCkgY29uc3QKK3Zv
aWQgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCiB7Ci0gICAgLy8g
VXNlIHRoZSBiYXNlIGNsYXNzJ3MgaW1wbGVtZW50YXRpb24gb2YgaGFzUGVuZGluZ0FjdGl2aXR5
KCkgc2luY2Ugd2Ugd291bGRuJ3Qgd2FudCB0aGUgY3VzdG9tIGltcGxlbWVudGF0aW9uCi0gICAg
Ly8gaW4gdGhpcyBjbGFzcyBkZXNpZ25lZCB0byBrZWVwIEpTIHdyYXBwZXJzIGFsaXZlIHRvIGlu
dGVyZmVyZSB3aXRoIHRoZSBhYmlsaXR5IGZvciBhIHBhZ2UgdXNpbmcgYW5pbWF0aW9ucwotICAg
IC8vIHRvIGVudGVyIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCi0gICAgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgc2V0U3VzcGVuZGVkKHRydWUpOwor
fQorCit2b2lkIFdlYkFuaW1hdGlvbjo6cmVzdW1lKCkKK3sKKyAgICBzZXRTdXNwZW5kZWQoZmFs
c2UpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6c3RvcCgpCiB7CisgICAgbV90YXNrUXVldWUt
PmNhbmNlbEFsbFRhc2tzKCk7CiAgICAgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCk7Ci0gICAgbV9p
c1N0b3BwZWQgPSB0cnVlOwogICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKIGJv
b2wgV2ViQW5pbWF0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIC8vIEtl
ZXAgdGhlIEpTIHdyYXBwZXIgYWxpdmUgaWYgdGhlIGFuaW1hdGlvbiBpcyBjb25zaWRlcmVkIHJl
bGV2YW50IG9yIGNvdWxkIGJlY29tZSByZWxldmFudCBhZ2FpbiBieSB2aXJ0dWUgb2YgaGF2aW5n
IGEgdGltZWxpbmUuCi0gICAgcmV0dXJuIG1fdGltZWxpbmUgfHwgbV9pc1JlbGV2YW50IHx8IEFj
dGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1fdGltZWxp
bmUgfHwgbV9pc1JlbGV2YW50IHx8IG1fdGFza1F1ZXVlLT5oYXNQZW5kaW5nVGFza3MoKSB8fCBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIFdlYkFuaW1h
dGlvbjo6dXBkYXRlUmVsZXZhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b24uaAppbmRleCBkNDE1OWRmYWQyMThhMThkZjBjMTUyYTZhMDUxNDU1NWM2ZDBlNmU0Li4xYzEx
ZGNmZWY0MmEzOWNhNzczNWEwZTc3MGVkOTk1YjE0YjYyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgi
CisjaW5jbHVkZSAiU3VzcGVuZGFibGVUYXNrUXVldWUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRp
b25VdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgpAQCAtMTQwLDggKzE0MSw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBXZWJBbmltYXRpb24oRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGlkU2VlayA6IHVpbnQ4X3QgeyBZ
ZXMsIE5vIH07CiAgICAgZW51bSBjbGFzcyBTeW5jaHJvbm91c2x5Tm90aWZ5IDogdWludDhfdCB7
IFllcywgTm8gfTsKQEAgLTE3Niw2ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBbmlt
YXRpb25UaW1lbGluZT4gbV90aW1lbGluZTsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBt
X3JlYWR5UHJvbWlzZTsKICAgICBVbmlxdWVSZWY8RmluaXNoZWRQcm9taXNlPiBtX2ZpbmlzaGVk
UHJvbWlzZTsKKyAgICBVbmlxdWVSZWY8U3VzcGVuZGFibGVUYXNrUXVldWU+IG1fdGFza1F1ZXVl
OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX3ByZXZp
b3VzQ3VycmVudFRpbWU7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVU
cmFpdHM+IG1fc3RhcnRUaW1lOwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmth
YmxlVHJhaXRzPiBtX2hvbGRUaW1lOwpAQCAtMTg1LDcgKzE4NSw2IEBAIHByaXZhdGU6CiAKICAg
ICBpbnQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAKLSAgICBib29sIG1faXNTdG9wcGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9maW5p
c2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmc7CiAgICAgYm9vbCBtX2lzUmVsZXZh
bnQ7CkBAIC0xOTcsNyArMTk2LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7Ci0g
ICAgYm9vbCBzaG91bGRQcmV2ZW50RW50ZXJpbmdCYWNrRm9yd2FyZENhY2hlX0RFUFJFQ0FURUQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmlu
YWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJBbmltYXRpb25FdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1c3Bl
bmRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXNwZW5kYWJsZVRh
c2tRdWV1ZS5oCmluZGV4IGIzMjYwZjQzM2U1MTc5Y2I5MjQ1ODdjZDE4MmRmZGRkOGMxOGQ3Mjku
LjViYTJjYjA4NjFjZmY0ZGIxZDc0OWFkMWU3YmU2MjgwNWZhMGQxOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1c3BlbmRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3VzcGVuZGFibGVUYXNrUXVldWUuaApAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAKLSAgICBib29sIGhhc1BlbmRpbmdUYXNrcygpIGNvbnN0
IHsgcmV0dXJuIG1fcGVuZGluZ1Rhc2tzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzUGVuZGlu
Z1Rhc2tzKCkgY29uc3QgeyByZXR1cm4gIW1fcGVuZGluZ1Rhc2tzLmlzRW1wdHkoKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBVbmlxdWVSZWY8U3VzcGVuZGFibGVUYXNrUXVldWU+IFdURjo6
bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8U3VzcGVuZGFibGVUYXNrUXVldWUs
IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqJj4oV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dComKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ODFkYWJiOTExZWZmZmY1YWU4YzgxNzI1MDNkNDNjYWZl
ZDY1MmE2Li5iYzQ4NmMwYzE4YzkyMDZhZjBiOTNiMWRkOTM1YmIzZmI5YTZkMmNjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTktMTAtMjkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJBbmltYXRpb24gc2hvdWxkIG5ldmVyIHByZXZlbnQgZW50ZXJp
bmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDg4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjM3NDI0
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBuZXcgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGFuIEFuaW1hdGlvbiB0aGF0IHdvdWxkIHJ1biBw
YXN0IGEgcGFnZSdzIG5hdmlnYXRpb24gaXMgY29ycmVjdGx5IHN1c3BlbmRlZAorICAgICAgICBh
bmQgcmVzdW1lZCBhcyBpdCBlbnRlcnMgYW5kIGxlYXZlcyB0aGUgYmFjay9mb3J3YXJkIGNhY2hl
LgorCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1jYWNoZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvYW5pbWF0aW9uLXBhZ2UtY2Fj
aGUuaHRtbDogQWRkZWQuCisKIDIwMTktMTAtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiPi5zZXRBdHRyaWJ1dGUoInZhbHVl
IikgZG9lcyBub3QgdXBkYXRlIHRoZSB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1jYWNoZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJhbmltYXRpb25zL2FuaW1hdGlvbi1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MjEwMzdiZDM5ODUyNmFlOTg0NTI5NjNmNzkxZjgwYzliODMxNDIyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hbmltYXRpb24tcGFnZS1jYWNoZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUg
cGFnZSBjYWNoZSBzdXNwZW5kcyBhbmQgcmVzdW1lcyBXZWIgQW5pbWF0aW9ucyBmcm9tIHRoZSBw
YWdlIGNhY2hlLiBUaGUgdGVzdCBzdGFydHMgYW4gYW5pbWF0aW9uLCB0aGVuIG5hdmlnYXRlcyBh
d2F5LCB3YWl0cyBhIGJpdCwgbmF2aWdhdGVzIGJhY2ssIGNvbmZpcm1pbmcgdGhhdCB0aGUgdGlt
ZWxpbmUgZnJvemUgYXQgYSBnaXZlbiB0aW1lIGFuZCByZXN1bWVkIGluIHRoZSBzYW1lIHNwb3Qs
IGFkdmFuY2luZyB0aGUgYW5pbWF0aW9uLiBJZiBzdWNjZXNzZnVsLCBpdCBvdXRwdXRzICdQQVNT
JyBiZWxvdy4KK1BBU1MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2Fu
aW1hdGlvbi1wYWdlLWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FuaW1h
dGlvbi1wYWdlLWNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2NTdiNDJjYTkzOGZiZjc3Yzc4Yjdh
ZGIzYjg1YmI1OGM1Mjg3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1h
dGlvbnMvYW5pbWF0aW9uLXBhZ2UtY2FjaGUuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IWRvY3R5
cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8c2NyaXB0PgorCitsZXQgc3VzcGVuZGVkID0gZmFsc2U7Cits
ZXQgcmVzdG9yZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gZmluaXNoKG1zZykKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBtc2c7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
Kword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZXZlbnQgPT4geworICAgIHN1
c3BlbmRlZCA9IGV2ZW50LnBlcnNpc3RlZDsKKyAgICBpZiAoIXN1c3BlbmRlZCkKKyAgICAgICAg
ZmluaXNoKCJGQUlMOiBldmVudC5wZXJzaXN0ZWQgd2FzIGZhbHNlIGZvciBwYWdlaGlkZSBldmVu
dC4iKQorfSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGV2ZW50ID0+
IHsKKyAgICAvLyBJZiB3ZSBoYXZlbid0IGJlZW4gc3VzcGVuZGVkLCB0aGVuIHRoaXMgaXMgdGhl
IGluaXRpYWwgcGFnZSBsb2FkLCBub3QgdGhlIGJhY2sgbmF2aWdhdGlvbi4KKyAgICBpZiAoIXN1
c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzdG9yZWQgPSBldmVudC5wZXJzaXN0
ZWQ7CisgICAgaWYgKCFyZXN0b3JlZCkKKyAgICAgICAgZmluaXNoKCJGQUlMOiBldmVudC5wZXJz
aXN0ZWQgd2FzIGZhbHNlIGZvciBwYWdlc2hvdyBldmVudC4iKQorfSk7CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZXZlbnQgPT4geworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgLy8gV2Ugc3RhcnQg
YW4gYW5pbWF0aW9uIHRoYXQgaXMganVzdCBsb25nIGVub3VnaCB0aGF0IGl0IHdvdWxkIGZpbmlz
aCB3aGlsZSB0aGUgcGFnZSBpcyBoaWRkZW4uCisgICAgZG9jdW1lbnQuYm9keS5hbmltYXRlKHsg
YmFja2dyb3VuZENvbG9yOiAicmVkIiB9LCA1MDApLmZpbmlzaGVkLnRoZW4oKCkgPT4geworICAg
ICAgICBpZiAoIXN1c3BlbmRlZCkKKyAgICAgICAgICAgIGZpbmlzaCgiRkFJTDogQW5pbWF0aW9u
IGZpbmlzaGVkIGJ1dCBwcmV2ZW50ZWQgdGhlIHBhZ2UgZnJvbSBiZWluZyBzdXNwZW5kZWQuIik7
CisgICAgICAgIGVsc2UgaWYgKCFyZXN0b3JlZCkKKyAgICAgICAgICAgIGZpbmlzaCgiRkFJTDog
QW5pbWF0aW9uIGZpbmlzaGVkIGJ1dCBwcmV2ZW50ZWQgdGhlIHBhZ2UgZnJvbSBiZWluZyByZXN0
b3JlZC4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmluaXNoKCJQQVNTLiIpOworICAg
IH0pOworCisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgLy8gTG9h
ZCBhIG5ldyBwYWdlLCBhbmQgbGV0IGl0IGdvIGJhY2sgYWZ0ZXIgMjUwbXMuCisgICAgICAgIHdp
bmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxib2R5IG9ubG9hZD0nc2V0VGlt
ZW91dCgoKSA9PiBoaXN0b3J5LmJhY2soKSwgMjUwKSc+PC9ib2R5PiI7CisgICAgfSk7Cit9KTsK
KworPC9zY3JpcHQ+Cis8Ym9keT4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBwYWdlIGNh
Y2hlIHN1c3BlbmRzIGFuZCByZXN1bWVzIFdlYiBBbmltYXRpb25zIGZyb20gdGhlIHBhZ2UgY2Fj
aGUuIFRoZSB0ZXN0IHN0YXJ0cyBhbiBhbmltYXRpb24sIHRoZW4gbmF2aWdhdGVzIGF3YXksIHdh
aXRzIGEgYml0LCBuYXZpZ2F0ZXMgYmFjaywgY29uZmlybWluZyB0aGF0IHRoZSB0aW1lbGluZSBm
cm96ZSBhdCBhIGdpdmVuIHRpbWUgYW5kIHJlc3VtZWQgaW4gdGhlIHNhbWUgc3BvdCwgYWR2YW5j
aW5nIHRoZSBhbmltYXRpb24uIElmIHN1Y2Nlc3NmdWwsIGl0IG91dHB1dHMgJ1BBU1MnIGJlbG93
LgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvbGVhay1kb2N1bWVudC13aXRoLXdlYi1hbmltYXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWFrLWRvY3VtZW50
LXdpdGgtd2ViLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKaW5kZXggM2M3YzkwYzYxNTdmOGMxNGU5
NWVjYzQwMjU3OTI1MDcwOWJkZTE4NS4uODIzMjg1YmUxYjZmNjFmMGQ5MTgzMzRjM2MwZjRkNDNh
N2UwZTcxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWFrLWRvY3Vt
ZW50LXdpdGgtd2ViLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9sZWFrLWRvY3VtZW50LXdpdGgtd2ViLWFuaW1hdGlvbi1leHBlY3RlZC50eHQK
QEAgLTQsOSArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogVGhlIGlmcmFtZSBo
YXMgZmluaXNoZWQgbG9hZGluZy4KLVRoZSBpZnJhbWUgaGFzIGJlZW4gZGVzdHJveWVkLgotUEFT
UyBpbnRlcm5hbHMubnVtYmVyT2ZMaXZlRG9jdW1lbnRzKCkgaXMgbnVtYmVyT2ZMaXZlRG9jdW1l
bnRzQWZ0ZXJJZnJhbWVMb2FkZWQgLSAxCi0KK1BBU1MgVGhlIGRvY3VtZW50IHdhcyBkZXN0cm95
ZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWFrLWRvY3VtZW50LXdpdGgtd2Vi
LWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWFrLWRvY3VtZW50
LXdpdGgtd2ViLWFuaW1hdGlvbi5odG1sCmluZGV4IDNlYzlhNWEyMTQxY2RlOWU2M2EyYmVjMTgz
NjM4MGRiOGJiYzhhZGMuLjIwNTVkNzFlZDM0YWFjZDg2NGMxZWQ3ZmNjMzliMGQ3NjA0MWRmOWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvbGVhay1kb2N1bWVudC13aXRo
LXdlYi1hbmltYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlYWst
ZG9jdW1lbnQtd2l0aC13ZWItYW5pbWF0aW9uLmh0bWwKQEAgLTEsMTcgKzEsMTMgQEAKIDwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBhc3NlcnRzIHRoYXQgRG9jdW1lbnQgZG9lc24ndCBsZWFrIHdoZW4gYSBXZWIg
QW5pbWF0aW9uIGlzIGNyZWF0ZWQuIik7CiAKIGlmICh3aW5kb3cuaW50ZXJuYWxzKQogICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCi1nYygpOwotCi12YXIgbnVtYmVyT2ZMaXZlRG9jdW1lbnRz
QWZ0ZXJJZnJhbWVMb2FkZWQgPSAwOwotCiBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIGlmICgh
d2luZG93LmludGVybmFscykKICAgICAgICAgcmV0dXJuOwpAQCAtMjIsMjcgKzE4LDM1IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgICAgIGlmIChmcmFtZS5zcmMgPT09ICdhYm91dDpibGFu
aycpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBudW1iZXJPZkxpdmVEb2N1
bWVudHNBZnRlcklmcmFtZUxvYWRlZCA9IGludGVybmFscy5udW1iZXJPZkxpdmVEb2N1bWVudHMo
KTsKKyAgICAgICAgZG9jdW1lbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLmRvY3VtZW50SWRlbnRp
ZmllcihmcmFtZS5jb250ZW50RG9jdW1lbnQpOwogICAgICAgICBkZWJ1ZygiVGhlIGlmcmFtZSBo
YXMgZmluaXNoZWQgbG9hZGluZy4iKTsKIAogICAgICAgICBmcmFtZS5yZW1vdmUoKTsKICAgICAg
ICAgZnJhbWUgPSBudWxsOwogCi0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAg
ICAgZ2MoKTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgIGRlYnVnKCJUaGUgaWZyYW1lIGhhcyBiZWVuIGRlc3Ryb3llZC4iKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRCZSgiaW50ZXJuYWxzLm51bWJlck9mTGl2ZURvY3VtZW50cygpIiwgIm51
bWJlck9mTGl2ZURvY3VtZW50c0FmdGVySWZyYW1lTG9hZGVkIC0gMSIpOwotICAgICAgICAgICAg
ICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgdGltZW91dCA9IDA7CisgICAg
ICAgIGhhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHsKKyAgICAgICAgICAgIGlmICghaW50ZXJu
YWxzLmlzRG9jdW1lbnRBbGl2ZShkb2N1bWVudElkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChoYW5kbGUpOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRo
ZSBkb2N1bWVudCB3YXMgZGVzdHJveWVkIik7CiAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGltZW91dCsrOworICAgICAgICAgICAgaWYg
KHRpbWVvdXQgPT0gNTAwKSB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChoYW5kbGUp
OworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRoZSBkb2N1bWVudCB3YXMgbGVha2VkIik7
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgfSwgMTApOwogICAg
IH0KIAogICAgIGZyYW1lLnNyYyA9ICdyZXNvdXJjZXMvd2ViLWFuaW1hdGlvbi1sZWFrLWlmcmFt
ZS5odG1sJzsKIH0KIAogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>