<?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>193962</bug_id>
          
          <creation_ts>2019-01-29 04:07:39 -0800</creation_ts>
          <short_desc>Dispatch pointercancel events when content is panned or zoomed on iOS</short_desc>
          <delta_ts>2020-11-24 23:06:00 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>samuelmtimbo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1499502</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-29 04:07:39 -0800</bug_when>
    <thetext>When a UA gesture starts, we should dispatch a pointercancel event and stop dispatching more pointer events for all of the touch identifiers involved in that gesture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499503</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-29 04:08:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/47629134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500773</commentid>
    <comment_count>2</comment_count>
      <attachid>360774</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-31 14:05:39 -0800</bug_when>
    <thetext>Created attachment 360774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500810</commentid>
    <comment_count>3</comment_count>
      <attachid>360774</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-01-31 14:30:25 -0800</bug_when>
    <thetext>Comment on attachment 360774
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        has been cancelled, which is important because a cancelled pointer should no longer dispatch any further pointer events, and
&gt; +        to cancel a pointer.

did you mean cancel the capture?

&gt; Source/WebCore/dom/PointerEvent.h:59
&gt; +    static Ref&lt;PointerEvent&gt; create(const AtomicString&amp; type, int32_t pointerId, String pointerType)

We really need PointerID to be a type somewhere.

&gt; Source/WebCore/page/PointerCaptureController.h:59
&gt; +        String pointerType;

This should be an enum by this point. It probably should be an enum on PointerEvent too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500813</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-31 14:32:58 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 360774 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=360774&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        has been cancelled, which is important because a cancelled pointer should no longer dispatch any further pointer events, and
&gt; &gt; +        to cancel a pointer.
&gt; 
&gt; did you mean cancel the capture?

No, there is one new method to check whether a pointer has been cancelled, and one to cancel it.

&gt; &gt; Source/WebCore/dom/PointerEvent.h:59
&gt; &gt; +    static Ref&lt;PointerEvent&gt; create(const AtomicString&amp; type, int32_t pointerId, String pointerType)
&gt; 
&gt; We really need PointerID to be a type somewhere.

Agreed. What&apos;s the best way to achieve this?

&gt; &gt; Source/WebCore/page/PointerCaptureController.h:59
&gt; &gt; +        String pointerType;
&gt; 
&gt; This should be an enum by this point. It probably should be an enum on
&gt; PointerEvent too.

I&apos;d like to address this as a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501265</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-02-01 13:53:58 -0800</bug_when>
    <thetext>Committed r240875: &lt;https://trac.webkit.org/changeset/240875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503246</commentid>
    <comment_count>6</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:18:46 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708599</commentid>
    <comment_count>7</comment_count>
    <who name="Samuel">samuelmtimbo</who>
    <bug_when>2020-11-18 07:33:45 -0800</bug_when>
    <thetext>I have been experiencing exactly this issue on iOS (13 and 14) (iPad Pro) for a while. When I start panning (scrolling) an overflown list, &quot;pointerdown&quot; is fired but there is no subsequent &quot;pointercancel&quot;.

This page demonstrates the problem:

https://abiding-vigorous-bill.glitch.me/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710036</commentid>
    <comment_count>8</comment_count>
    <who name="Samuel">samuelmtimbo</who>
    <bug_when>2020-11-24 23:06:00 -0800</bug_when>
    <thetext>(In reply to Samuel from comment #7)
&gt; I have been experiencing exactly this issue on iOS (13 and 14) (iPad Pro)
&gt; for a while. When I start panning (scrolling) an overflown list,
&gt; &quot;pointerdown&quot; is fired but there is no subsequent &quot;pointercancel&quot;.
&gt; 
&gt; This page demonstrates the problem:
&gt; 
&gt; https://abiding-vigorous-bill.glitch.me/

Forget about this comment. My mistake.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360774</attachid>
            <date>2019-01-31 14:05:39 -0800</date>
            <delta_ts>2019-01-31 14:30:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193962-20190131230537.patch</filename>
            <type>text/plain</type>
            <size>33742</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIyYzdlZWNkOTVkNzc3
OTdhYmNkODNkMDk4MWRkNGVjNzIyZGUzZC4uOTJiNjliNmJhMTUwMzQ1YmFmYzg5NjU1ZWI4NTAw
YjliNDgyYjQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTAxLTMxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgRGlzcGF0Y2ggcG9pbnRl
cmNhbmNlbCBldmVudHMgd2hlbiBjb250ZW50IGlzIHBhbm5lZCBvciB6b29tZWQgb24gaU9TCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM5NjIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NjI5MTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSB0d28gbmV3IG1ldGhvZHMgb24gUG9pbnRl
ckNhcHR1cmVDb250cm9sbGVyIHNvIHRoYXQsIGdpdmVuIGEgcG9pbnRlciBpZCwgaXQgY2FuIGJl
IGVzdGFibGlzaGVkIHdoZXRoZXIgdGhpcyBwb2ludGVyCisgICAgICAgIGhhcyBiZWVuIGNhbmNl
bGxlZCwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UgYSBjYW5jZWxsZWQgcG9pbnRlciBzaG91
bGQgbm8gbG9uZ2VyIGRpc3BhdGNoIGFueSBmdXJ0aGVyIHBvaW50ZXIgZXZlbnRzLCBhbmQKKyAg
ICAgICAgdG8gY2FuY2VsIGEgcG9pbnRlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogTWFrZSBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaCBQcml2YXRl
IHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIGZyb20gV2ViS2l0LgorICAgICAgICAqIGRvbS9Q
b2ludGVyRXZlbnQuaDogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5ICNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpIHNpbmNlIHRoZSBlbnRpcmUgZmlsZSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiBvbmUu
CisgICAgICAgIFRoZW4gd2UgYWRkIGEgbmV3IGNyZWF0ZSgpIG1ldGhvZCB0aGF0IHRha2VzIGFu
IGV2ZW50IHR5cGUsIGEgcG9pbnRlciBpZCBhbmQgYSBwb2ludGVyIHR5cGUgKHRvdWNoIHZzLiBw
ZW4pIHRoYXQgd2UgdXNlCisgICAgICAgIHRvIGNyZWF0ZSBwb2ludGVyY2FuY2VsIGV2ZW50cyBp
biBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OmNhbmNlbFBvaW50ZXIoKS4KKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6IFBhc3MgdGhlIFBh
Z2UgYXMgYSBwYXJhbWV0ZXIgd2hlbiBjcmVhdGluZyB0aGUgUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyLgorICAgICAgICAqIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6UG9pbnRlckNhcHR1cmVDb250
cm9sbGVyKTogQWRkIGEgUGFnZSByZWZlcmVuY2UgdG8gdGhlIGNvbnN0cnVjdG9yIHNpbmNlIHdl
J2xsIG5lZWQKKyAgICAgICAgdGhlIHBhZ2UgdG8gYWNjZXNzIGl0cyBtYWluIGZyYW1lJ3MgRXZl
bnRIYW5kbGVyIHRvIHBlcmZvcm0gaGl0IHRlc3RpbmcgaW4gY2FzZSB3ZSBkbyBub3QgaGF2ZSBh
IGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlCisgICAgICAgIGluIGNhbmNlbFBvaW50ZXIoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cmVsZWFzZVBvaW50ZXJD
YXB0dXJlKTogRHJpdmUtYnksIHJlbW92ZSB0aGUgdGhlIGltcGxpY2l0IHBhcmFtZXRlciBzaW5j
ZSBvbiBpT1Mgd2UKKyAgICAgICAgZG9uJ3QgbmVlZCB0byBkaWZmZXJlbnRpYXRlLiBXZSdsbCBi
cmluZyB0aGlzIGJhY2sgZm9yIHRoZSBtYWNPUyB3b3JrLgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRlckNhcHR1cmVDb250cm9sbGVyOjpoYXNDYW5jZWxsZWRQb2ludGVyRXZlbnRGb3JJZGVudGlm
aWVyKTogTmV3IG1ldGhvZCB3ZSdsbCB1c2Ugd2hlbiBkaXNwYXRjaGluZyBwb2ludGVyCisgICAg
ICAgIGV2ZW50cyB0byBpZGVudGlmeSB3aGV0aGVyIGEgcG9pbnRlciBpZCBoYXMgYWxyZWFkeSBi
ZWVuIGNhbmNlbGxlZCB3aGljaCB3aWxsIGFsbG93IGZvciBfbm90XyBkaXNwYXRjaGluZyBhbnkg
ZnVydGhlcgorICAgICAgICBwb2ludGVyIGV2ZW50cyBmb3IgdGhpcyBwb2ludGVyIGlkLgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpwb2ludGVyRXZlbnRXaWxs
QmVEaXNwYXRjaGVkKTogS2VlcCB0cmFjayBvZiB0aGUgcG9pbnRlciB0eXBlIHNvIHdlIGNhbiBw
cmVzZXJ2ZSBpdAorICAgICAgICB3aGVuIGRpc3BhdGNoaW5nIHBvaW50ZXJjYW5jZWwgZXZlbnRz
IGZvciBhIGdpdmVuIHBvaW50ZXIgaWQuCisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXI6OmNhbmNlbFBvaW50ZXIpOiBEaXNwYXRjaCBhIHBvaW50ZXJjYW5jZWwgZm9y
IHRoZSBwcm92aWRlZCBwb2ludGVyIGlkLCB1c2luZyB0aGUgY2FwdHVyZQorICAgICAgICB0YXJn
ZXQgb3ZlcnJpZGUgYXMgdGhlIGV2ZW50J3MgdGFyZ2V0LCBpZiB0aGVyZSBpcyBvbmUsIGFuZCBv
dGhlcndpc2UgaGl0LXRlc3RpbmcgYXQgdGhlIHByb3ZpZGVkIGxvY2F0aW9uIHRvIGZpZ3VyZSBv
dXQKKyAgICAgICAgd2hhdCB0aGUgdGFyZ2V0IHNob3VsZCBiZS4KKyAgICAgICAgKiBwYWdlL1Bv
aW50ZXJDYXB0dXJlQ29udHJvbGxlci5oOiBTd2l0Y2ggdGhlIHRhcmdldCBvdmVycmlkZXMgZnJv
bSBFbGVtZW50KiB0byBSZWZQdHI8RWxlbWVudD4gdG8gZW5zdXJlIGl0IG1heSBub3QgYmUKKyAg
ICAgICAgZGVsZXRlZCB3aGlsZSB3ZSBzdGlsbCBuZWVkIHRoZW0uIEV4aXN0aW5nIGNvZGUgYWxy
ZWFkeSBlbnN1cmVzIHRoZXNlIGdldCBzZXQgdG8gbnVsbHB0ci4KKwogMjAxOS0wMS0zMSAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZvcm1hbGl6ZSBXZWJL
aXRBZGRpdGlvbnMgbWVjaGFuaXNtIG9mIExvYWRPcHRpbWl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZmRhNzE1
ZDg3ZTMyZDU3ZWNjMzAwZGU1MjgxNjM2MmJhNGMyYTZjNS4uNjBkMGJiZDMzNTA1Mjk2MTNlZDlm
Zjc1OTQ2NDlkNjg0M2U0OTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxOS0wMS0z
MSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIERpc3BhdGNo
IHBvaW50ZXJjYW5jZWwgZXZlbnRzIHdoZW4gY29udGVudCBpcyBwYW5uZWQgb3Igem9vbWVkIG9u
IGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
OTYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzYyOTEzND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgdXNlci1hZ2VudC1wcm92aWRl
ZCBpbnRlcmFjdGlvbiwgc3VjaCBhcyBwYW5uaW5nIG9yIHpvb21pbmcgb24gaU9TLCB1c2VzIGEg
c2V0IG9mIHRvdWNoZXMsIHdlIHNob3VsZCBkaXNwYXRjaCBhIHBvaW50ZXJjYW5jZWwKKyAgICAg
ICAgZXZlbnQgZm9yIHRoZSBwb2ludGVyIGlkcyBvZiB0aGUgdG91Y2hlcyBpbnZvbHZlZC4gVG8g
ZmFjaWxpdGF0ZSB0aGlzLCB3ZSBhZGQgYSBuZXcgbWV0aG9kIG9uIFdLQ29udGVudFZpZXcgdG8g
Y2FuY2VsIGFsbCB0aGUgcG9pbnRlcnMKKyAgICAgICAgbWF0Y2hpbmcgYWN0aXZlIHRvdWNoZXMg
Zm9yIGEgcHJvdmlkZWQgVUlHZXN0dXJlUmVjb2duaXplciB0aHJvdWdoIGFuIGFzeW5jIElQQyBj
YWxsIGludG8gdGhlIFdlYiBwcm9jZXNzIHVzaW5nIHRoZSBuZXcgbWV0aG9kCisgICAgICAgIFBv
aW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6Y2FuY2VsUG9pbnRlcigpLgorCisgICAgICAgICogUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOiBBZGQgdGhlIG5lY2Vzc2FyeSBmb3J3YXJkIGRlY2xh
cmF0aW9uIGZvciBhIG5lY2Vzc2FyeSBVSUtpdCBTUEkgYWxsb3dpbmcgdXMgdG8gZ2V0IHRoZSBz
ZXQgb2YgbGFzdC1zZWVuCisgICAgICAgIFVJVG91Y2hlcyBieSB0aGUgaWRlbnRpZmllciBnZW5l
cmF0ZWQgZm9yIHRoZSBtYXRjaGluZyBXZWJLaXQgdG91Y2guCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3
V2lsbEJlZ2luWm9vbWluZzp3aXRoVmlldzpdKTogRGlzcGF0Y2ggdG91Y2hjYW5jZWwgZXZlbnRz
IGZvciBhbGwgcG9pbnRlcnMgaW52b2x2ZWQgaW4gYSBwaW5jaCBnZXN0dXJlIG9uIHRoZQorICAg
ICAgICB0b3AtbGV2ZWwgVUlTY3JvbGxWaWV3LgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9s
bFZpZXc6YWRqdXN0ZWRPZmZzZXRGb3JPZmZzZXQ6dHJhbnNsYXRpb246c3RhcnRQb2ludDpsb2Nh
dGlvbkluVmlldzpob3Jpem9udGFsVmVsb2NpdHk6dmVydGljYWxWZWxvY2l0eTpdKTogRGlzcGF0
Y2gKKyAgICAgICAgdG91Y2hjYW5jZWwgZXZlbnRzIGZvciBhbGwgcG9pbnRlcnMgaW52b2x2ZWQg
aW4gYSBwYW4gZ2VzdHVyZSBvbiB0aGUgdG9wLWxldmVsIFVJU2Nyb2xsVmlldy4gV2UgY2FuIGlu
ZmVyIHRoaXMgYnkgbG9va2luZyBhdCB3aGV0aGVyIHRoZQorICAgICAgICBhZGp1c3RlZCBjb250
ZW50IG9mZnNldCwgYWZ0ZXIgYWNjb3VudGluZyBmb3IgdGhlIHBlcm1pdHRlZCB0b3VjaCBhY3Rp
b25zLCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgY29udGVudCBvZmZzZXQuCisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogRXhwb3NlIGEgbmV3IHZpcnR1YWwgY2FuY2Vs
UG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcigpIG1ldGhvZCB3aGljaCB3aWxsIGFsbG93IHRo
ZSBpT1MgaW1wbGVtZW50YXRpb24gdG8KKyAgICAgICAgZm9yd2FyZCB0aGUgY2FsbCB0byBXS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmNhbmNl
bFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOiBFeHBvc2UgdGhl
IFdlYlBhZ2VQcm94eSBzdWNoIHRoYXQgd2UgbWF5IGFjY2VzcyBpdCB0byBjYW5jZWwgcG9pbnRl
cnMgZm9yCisgICAgICAgIGEgZ2l2ZW4gZ2VzdHVyZSByZWNvZ25pemVyIGZyb20gd2l0aGluIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OndlYlBhZ2VQcm94eSBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAgICgt
W1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBfc2Nyb2xsVmlldzphZGp1c3RlZE9m
ZnNldEZvck9mZnNldDp0cmFuc2xhdGlvbjpzdGFydFBvaW50OmxvY2F0aW9uSW5WaWV3Omhvcml6
b250YWxWZWxvY2l0eTp2ZXJ0aWNhbFZlbG9jaXR5Ol0pOgorICAgICAgICBEaXNwYXRjaCB0b3Vj
aGNhbmNlbCBldmVudHMgZm9yIGFsbCBwb2ludGVycyBpbnZvbHZlZCBpbiBhIHBhbiBnZXN0dXJl
IG9uIGEgbmVzdGVkIFVJU2Nyb2xsVmlldy4gV2UgY2FuIGluZmVyIHRoaXMgYnkgbG9va2luZyBh
dAorICAgICAgICB3aGV0aGVyIHRoZSBhZGp1c3RlZCBjb250ZW50IG9mZnNldCwgYWZ0ZXIgYWNj
b3VudGluZyBmb3IgdGhlIHBlcm1pdHRlZCB0b3VjaCBhY3Rpb25zLCBpcyBkaWZmZXJlbnQgZnJv
bSB0aGUgb3JpZ2luYWwgY29udGVudCBvZmZzZXQuCisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9k
ZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzp3aXRoVmlldzpd
KTogRGlzcGF0Y2ggdG91Y2hjYW5jZWwgZXZlbnRzIGZvciBhbGwgcG9pbnRlcnMgaW52b2x2ZWQg
aW4gYQorICAgICAgICBwaW5jaCBnZXN0dXJlIG9uIGEgbmVzdGVkIFVJU2Nyb2xsVmlldy4KKyAg
ICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIGNhbmNlbFBvaW50ZXJz
Rm9yR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbFBvaW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29n
bml6ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2du
aXplcjpdKTogT2J0YWluIGFsbCBhY3RpdmUgVUlUb3VjaCBvYmplY3RzIGZvciB0aGUgdmlldyBh
bmQgZGlzcGF0Y2ggYSBwb2ludGVyY2FuY2VsIGV2ZW50LAorICAgICAgICB0aHJvdWdoIHRoZSBX
ZWJQYWdlUHJveHksIGZvciBhbGwgdG91Y2hlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVk
IGdlc3R1cmUgcmVjb2duaXplci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhbmNlbFBvaW50ZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMDEtMzEgIEppZXdlbiBUYW4gIDxq
aWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3JtYWxpemUgV2ViS2l0QWRkaXRpb25z
IG1lY2hhbmlzbSBvZiBMb2FkT3B0aW1pemVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmVhZDczYzk4OTQ5NzYyZTIyNTQwMDI4
ODM3ODBhZGY0ZTdhNmE5Yi4uYjlhZTBiZWFiMjJjZjI5ZjlkYTI1NjVlYTcyZGQ5MTg0ODVlMTA1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjExOCw3ICsyMTE4LDcgQEAKIAkJNzFBMUI2MDgxREVFNUFENzAwNzNCQ0ZCIC8q
IG1vZGVybi1tZWRpYS1jb250cm9scy1sb2NhbGl6ZWQtc3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBMUI2MDYxREVFNUE4MjAwNzNC
Q0ZCIC8qIG1vZGVybi1tZWRpYS1jb250cm9scy1sb2NhbGl6ZWQtc3RyaW5ncy5qcyAqLzsgfTsK
IAkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTU3REYwMTU0QkUyNUMw
MDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggKi87IH07CiAJCTcxQjI4NDI3MjAzQ0VDNEMw
MDM2QUE1RCAvKiBKU0NTU0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzFCMjg0MjYyMDNDRUMwRDAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NzFCNUFCMjYyMUYxRDlGNDAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCNUFCMjQyMUYx
RDlFMjAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oICovOyB9OworCQk3MUI1
QUIyNjIxRjFEOUY0MDAzNzZFNUMgLyogUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUI1QUIyNDIxRjFEOUUy
MDAzNzZFNUMgLyogUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFCN0VFMEQyMUI1QzY4NzAwMzFDMUVG
IC8qIFRvdWNoQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MUFFRTRFQjIxQjVBNDlDMDBEREIwMzYgLyogVG91Y2hBY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUMyOUUzMjIwM0NF
NzgxMDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MUMyOUUzMDIwM0NFNzZCMDA4RjM2RDIgLyogQ1NTQW5pbWF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzFDOTE2MDgxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQzkxNjA3
MUQxNDgzQTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2lu
dGVyRXZlbnQuaAppbmRleCAyNTA1OWFmMDMzMzM1MjAwMzE4YjIwMGU4YzA5N2U0ZDdlNGUzYzI5
Li4zYmNmYTk1Mzc2NDUxMzkzYWM1NmQ5M2Q5ZDg4ZTcxMmVhZjE3YjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BvaW50ZXJFdmVudC5oCkBAIC01Niw3ICs1NiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBvaW50ZXJFdmVudCh0eXBlLCBXVEZNb3ZlKGluaXRpYWxpemVyKSkp
OwogICAgIH0KIAotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICBzdGF0aWMgUmVmPFBv
aW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgaW50MzJfdCBwb2lu
dGVySWQsIFN0cmluZyBwb2ludGVyVHlwZSkKKyAgICB7CisgICAgICAgIEluaXQgaW5pdGlhbGl6
ZXI7CisgICAgICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSB0cnVlOworICAgICAgICBpbml0aWFs
aXplci5wb2ludGVySWQgPSBwb2ludGVySWQ7CisgICAgICAgIGluaXRpYWxpemVyLnBvaW50ZXJU
eXBlID0gcG9pbnRlclR5cGU7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJF
dmVudCh0eXBlLCBXVEZNb3ZlKGluaXRpYWxpemVyKSkpOworICAgIH0KKwogICAgIHN0YXRpYyBS
ZWY8UG9pbnRlckV2ZW50PiBjcmVhdGVGb3JQb2ludGVyQ2FwdHVyZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IFBvaW50ZXJFdmVudCYgcG9pbnRlckV2ZW50KQogICAgIHsKICAgICAg
ICAgSW5pdCBpbml0aWFsaXplcjsKQEAgLTY2LDcgKzc0LDYgQEAgcHVibGljOgogICAgICAgICBp
bml0aWFsaXplci5wb2ludGVyVHlwZSA9IHBvaW50ZXJFdmVudC5wb2ludGVyVHlwZSgpOwogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0
aWFsaXplcikpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50
PiBjcmVhdGVGb3JCaW5kaW5ncygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZmQ2NjYw
N2RjZGRjNDBlZGI5MjhkMzA2M2U4ZDI5OTA5YzA0OTA0Yy4uMDc4MzAwNGYxMDdkMDNjMzA3MGFl
ZTUyZjRkZmZjNWIyZTk2ZjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTYsNyArMjE2LDcg
QEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAg
ICwgbV91c2VySW5wdXRCcmlkZ2Uoc3RkOjptYWtlX3VuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0
aGlzKSkKICAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQp
KQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigpKQorICAg
ICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2Fw
dHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJM
b2NrQ29udHJvbGxlcj4oKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
Q2FwdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDY1ZDgxM2Q0MjQwZGE3Mjg2ZDg2YzIwYjI5YzBk
Njg4NjMyN2MwNDIuLjFjOTU5MjJkYzJhYzljMDkxYjMyYmY0NTgxMWYwYTM1MzMxM2JhYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTM2LDcg
KzM3LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CitQb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXI6OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihQYWdlJiBwYWdlKQorICAgIDog
bV9wYWdlKHBhZ2UpCit7Cit9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlcjo6c2V0UG9pbnRlckNhcHR1cmUoRWxlbWVudCogY2FwdHVyaW5nVGFyZ2V0LCBpbnQz
Ml90IHBvaW50ZXJJZCkKIHsKQEAgLTY4LDcgKzcyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUG9p
bnRlckNhcHR1cmVDb250cm9sbGVyOjpzZXRQb2ludGVyQ2FwdHVyZShFbGVtZW50KiBjYXB0dXJp
bmcKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBQb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXI6OnJlbGVhc2VQb2ludGVyQ2FwdHVyZShFbGVtZW50KiBjYXB0dXJpbmdUYXJn
ZXQsIGludDMyX3QgcG9pbnRlcklkLCBJbXBsaWNpdENhcHR1cmUgaW1wbGljaXQpCitFeGNlcHRp
b25Pcjx2b2lkPiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnJlbGVhc2VQb2ludGVyQ2FwdHVy
ZShFbGVtZW50KiBjYXB0dXJpbmdUYXJnZXQsIGludDMyX3QgcG9pbnRlcklkKQogewogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVyZXZlbnRzLyNyZWxlYXNpbmctcG9pbnRlci1j
YXB0dXJlCiAKQEAgLTc4LDcgKzgyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyOjpyZWxlYXNlUG9pbnRlckNhcHR1cmUoRWxlbWVudCogY2FwdHUKICAgICAv
LyAxLiBJZiB0aGUgcG9pbnRlcklkIHByb3ZpZGVkIGFzIHRoZSBtZXRob2QncyBhcmd1bWVudCBk
b2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIGFjdGl2ZSBwb2ludGVycyBhbmQgdGhlc2Ugc3RlcHMg
YXJlIG5vdAogICAgIC8vIGJlaW5nIGludm9rZWQgYXMgYSByZXN1bHQgb2YgdGhlIGltcGxpY2l0
IHJlbGVhc2Ugb2YgcG9pbnRlciBjYXB0dXJlLCB0aGVuIHRocm93IGEgRE9NRXhjZXB0aW9uIHdp
dGggdGhlIG5hbWUgTm90Rm91bmRFcnJvci4KICAgICBhdXRvIGl0ZXJhdG9yID0gbV9hY3RpdmVQ
b2ludGVySWRzVG9DYXB0dXJpbmdEYXRhLmZpbmQocG9pbnRlcklkKTsKLSAgICBpZiAoaW1wbGlj
aXQgPT0gSW1wbGljaXRDYXB0dXJlOjpObyAmJiBpdGVyYXRvciA9PSBtX2FjdGl2ZVBvaW50ZXJJ
ZHNUb0NhcHR1cmluZ0RhdGEuZW5kKCkpCisgICAgaWYgKGl0ZXJhdG9yID09IG1fYWN0aXZlUG9p
bnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5lbmQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdEZvdW5kRXJyb3IgfTsKIAogICAgIC8vIDIuIElmIGhhc1BvaW50ZXJDYXB0dXJlIGlzIGZh
bHNlIGZvciB0aGUgRWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9pbnRlcklkLCB0aGVuIHRl
cm1pbmF0ZSB0aGVzZSBzdGVwcy4KQEAgLTEyNCw2ICsxMjgsMTIgQEAgdm9pZCBQb2ludGVyQ2Fw
dHVyZUNvbnRyb2xsZXI6OnRvdWNoRW5kZWRPcldhc0NhbmNlbGxlZEZvcklkZW50aWZpZXIoaW50
MzJfdCBwb2kKICAgICBtX2FjdGl2ZVBvaW50ZXJJZHNUb0NhcHR1cmluZ0RhdGEucmVtb3ZlKHBv
aW50ZXJJZCk7CiB9CiAKK2Jvb2wgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpoYXNDYW5jZWxs
ZWRQb2ludGVyRXZlbnRGb3JJZGVudGlmaWVyKGludDMyX3QgcG9pbnRlcklkKQoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX2FjdGl2ZVBvaW50ZXJJZHNUb0NhcHR1cmluZ0RhdGEuZmluZChwb2lu
dGVySWQpOworICAgIHJldHVybiBpdGVyYXRvciAhPSBtX2FjdGl2ZVBvaW50ZXJJZHNUb0NhcHR1
cmluZ0RhdGEuZW5kKCkgJiYgaXRlcmF0b3ItPnZhbHVlLmNhbmNlbGxlZDsKK30KKwogdm9pZCBQ
b2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBvaW50ZXJFdmVudFdpbGxCZURpc3BhdGNoZWQoY29u
c3QgUG9pbnRlckV2ZW50JiBldmVudCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKIHsKICAgICAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vcG9pbnRlcmV2ZW50cy8jaW1wbGljaXQtcG9pbnRlci1jYXB0
dXJlCkBAIC0xNDIsNyArMTUyLDkgQEAgdm9pZCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBv
aW50ZXJFdmVudFdpbGxCZURpc3BhdGNoZWQoY29uc3QgUG9pbnRlckV2ZW50JgogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIHBvaW50ZXJJZCA9IGV2ZW50LnBvaW50ZXJJZCgpOwotICAgIG1f
YWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5zZXQocG9pbnRlcklkLCBDYXB0dXJpbmdE
YXRhIHsgfSk7CisgICAgQ2FwdHVyaW5nRGF0YSBjYXB0dXJpbmdEYXRhOworICAgIGNhcHR1cmlu
Z0RhdGEucG9pbnRlclR5cGUgPSBldmVudC5wb2ludGVyVHlwZSgpOworICAgIG1fYWN0aXZlUG9p
bnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5zZXQocG9pbnRlcklkLCBjYXB0dXJpbmdEYXRhKTsKICAg
ICBzZXRQb2ludGVyQ2FwdHVyZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLCBwb2ludGVySWQp
OwogfQogCkBAIC0xNzEsNiArMTgzLDQ4IEBAIHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVy
Ojpwb2ludGVyRXZlbnRXYXNEaXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJFdmVudCYgZXZlCiAgICAg
cHJvY2Vzc1BlbmRpbmdQb2ludGVyQ2FwdHVyZShldmVudCk7CiB9CiAKK3ZvaWQgUG9pbnRlckNh
cHR1cmVDb250cm9sbGVyOjpjYW5jZWxQb2ludGVyKGludDMyX3QgcG9pbnRlcklkLCBjb25zdCBJ
bnRQb2ludCYgZG9jdW1lbnRQb2ludCkKK3sKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
cG9pbnRlcmV2ZW50cy8jdGhlLXBvaW50ZXJjYW5jZWwtZXZlbnQKKworICAgIC8vIEEgdXNlciBh
Z2VudCBNVVNUIGZpcmUgYSBwb2ludGVyIGV2ZW50IG5hbWVkIHBvaW50ZXJjYW5jZWwgaW4gdGhl
IGZvbGxvd2luZyBjaXJjdW1zdGFuY2VzOgorICAgIC8vCisgICAgLy8gVGhlIHVzZXIgYWdlbnQg
aGFzIGRldGVybWluZWQgdGhhdCBhIHBvaW50ZXIgaXMgdW5saWtlbHkgdG8gY29udGludWUgdG8g
cHJvZHVjZSBldmVudHMgKGZvciBleGFtcGxlLCBiZWNhdXNlIG9mIGEgaGFyZHdhcmUgZXZlbnQp
LgorICAgIC8vIEFmdGVyIGhhdmluZyBmaXJlZCB0aGUgcG9pbnRlcmRvd24gZXZlbnQsIGlmIHRo
ZSBwb2ludGVyIGlzIHN1YnNlcXVlbnRseSB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlIHBhZ2Ugdmll
d3BvcnQgKGUuZy4gcGFubmluZyBvciB6b29taW5nKS4KKyAgICAvLyBJbW1lZGlhdGVseSBiZWZv
cmUgZHJhZyBvcGVyYXRpb24gc3RhcnRzIFtIVE1MXSwgZm9yIHRoZSBwb2ludGVyIHRoYXQgY2F1
c2VkIHRoZSBkcmFnIG9wZXJhdGlvbi4KKyAgICAvLyBBZnRlciBmaXJpbmcgdGhlIHBvaW50ZXJj
YW5jZWwgZXZlbnQsIGEgdXNlciBhZ2VudCBNVVNUIGFsc28gZmlyZSBhIHBvaW50ZXIgZXZlbnQg
bmFtZWQgcG9pbnRlcm91dCBmb2xsb3dlZCBieSBmaXJpbmcgYSBwb2ludGVyIGV2ZW50IG5hbWVk
IHBvaW50ZXJsZWF2ZS4KKworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVyZXZl
bnRzLyNpbXBsaWNpdC1yZWxlYXNlLW9mLXBvaW50ZXItY2FwdHVyZQorCisgICAgLy8gSW1tZWRp
YXRlbHkgYWZ0ZXIgZmlyaW5nIHRoZSBwb2ludGVydXAgb3IgcG9pbnRlcmNhbmNlbCBldmVudHMs
IGEgdXNlciBhZ2VudCBNVVNUIGNsZWFyIHRoZSBwZW5kaW5nIHBvaW50ZXIgY2FwdHVyZSB0YXJn
ZXQKKyAgICAvLyBvdmVycmlkZSBmb3IgdGhlIHBvaW50ZXJJZCBvZiB0aGUgcG9pbnRlcnVwIG9y
IHBvaW50ZXJjYW5jZWwgZXZlbnQgdGhhdCB3YXMganVzdCBkaXNwYXRjaGVkLCBhbmQgdGhlbiBy
dW4gUHJvY2VzcyBQZW5kaW5nCisgICAgLy8gUG9pbnRlciBDYXB0dXJlIHN0ZXBzIHRvIGZpcmUg
bG9zdHBvaW50ZXJjYXB0dXJlIGlmIG5lY2Vzc2FyeS4gQWZ0ZXIgcnVubmluZyBQcm9jZXNzIFBl
bmRpbmcgUG9pbnRlciBDYXB0dXJlIHN0ZXBzLCBpZiB0aGUKKyAgICAvLyBwb2ludGVyIHN1cHBv
cnRzIGhvdmVyLCB1c2VyIGFnZW50IE1VU1QgYWxzbyBzZW5kIGNvcnJlc3BvbmRpbmcgYm91bmRh
cnkgZXZlbnRzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mCisg
ICAgLy8gdGhlIHBvaW50ZXIgd2l0aCBubyBjYXB0dXJlLgorCisgICAgYXV0byBpdGVyYXRvciA9
IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5maW5kKHBvaW50ZXJJZCk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2FwdHVyaW5nRGF0YSA9IGl0ZXJhdG9yLT52
YWx1ZTsKKyAgICBpZiAoY2FwdHVyaW5nRGF0YS5jYW5jZWxsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGNhcHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRlID0gbnVsbHB0cjsKKyAg
ICBjYXB0dXJpbmdEYXRhLmNhbmNlbGxlZCA9IHRydWU7CisKKyAgICBhdXRvJiB0YXJnZXQgPSBj
YXB0dXJpbmdEYXRhLnRhcmdldE92ZXJyaWRlOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICB0
YXJnZXQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0
UG9pbnQoZG9jdW1lbnRQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0Nv
bnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCkuaW5uZXJOb25T
aGFyZWRFbGVtZW50KCk7CisKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBldmVudCA9IFBvaW50ZXJFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wb2ludGVy
Y2FuY2VsRXZlbnQsIHBvaW50ZXJJZCwgY2FwdHVyaW5nRGF0YS5wb2ludGVyVHlwZSk7CisgICAg
dGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBwcm9jZXNzUGVuZGluZ1BvaW50ZXJD
YXB0dXJlKFdURk1vdmUoZXZlbnQpKTsKK30KKwogdm9pZCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xs
ZXI6OnByb2Nlc3NQZW5kaW5nUG9pbnRlckNhcHR1cmUoY29uc3QgUG9pbnRlckV2ZW50JiBldmVu
dCkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vcG9pbnRlcmV2ZW50cy8jcHJvY2Vz
cy1wZW5kaW5nLXBvaW50ZXItY2FwdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckNhcHR1cmVDb250cm9sbGVyLmgKaW5kZXggOGU3ZDIyMDE4MzVhMmY4OGI4MTJmMWM1NWVmNjAz
YTMyNDcxMjZhOC4uNzIwYTU3NzQyMzU1MDk2NTljN2E1ZjQwYTlhYTI1MTg2YTdlZTA2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCkBAIC0z
OCwyNyArMzgsMzEgQEAgY2xhc3MgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFBvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlcigpOwotCi0gICAgZW51bSBjbGFzcyBJbXBsaWNpdENhcHR1cmUgOiB1aW50OF90IHsg
WWVzLCBObyB9OworICAgIGV4cGxpY2l0IFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihQYWdlJik7
CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQb2ludGVyQ2FwdHVyZShFbGVtZW50KiwgaW50
MzJfdCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVsZWFzZVBvaW50ZXJDYXB0dXJlKEVsZW1l
bnQqLCBpbnQzMl90LCBJbXBsaWNpdENhcHR1cmUgaW1wbGljaXQgPSBJbXBsaWNpdENhcHR1cmU6
Ok5vKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZWxlYXNlUG9pbnRlckNhcHR1cmUoRWxlbWVu
dCosIGludDMyX3QpOwogICAgIGJvb2wgaGFzUG9pbnRlckNhcHR1cmUoRWxlbWVudCosIGludDMy
X3QpOwogCiAgICAgdm9pZCBwb2ludGVyTG9ja1dhc0FwcGxpZWQoKTsKIAogICAgIHZvaWQgdG91
Y2hFbmRlZE9yV2FzQ2FuY2VsbGVkRm9ySWRlbnRpZmllcihpbnQzMl90KTsKKyAgICBib29sIGhh
c0NhbmNlbGxlZFBvaW50ZXJFdmVudEZvcklkZW50aWZpZXIoaW50MzJfdCk7CiAgICAgdm9pZCBw
b2ludGVyRXZlbnRXaWxsQmVEaXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJFdmVudCYsIEV2ZW50VGFy
Z2V0Kik7CiAgICAgdm9pZCBwb2ludGVyRXZlbnRXYXNEaXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJF
dmVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsUG9pbnRlcihpbnQzMl90LCBj
b25zdCBJbnRQb2ludCYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDYXB0dXJpbmdEYXRhIHsK
LSAgICAgICAgRWxlbWVudCogcGVuZGluZ1RhcmdldE92ZXJyaWRlOwotICAgICAgICBFbGVtZW50
KiB0YXJnZXRPdmVycmlkZTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBlbmRpbmdUYXJnZXRP
dmVycmlkZTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHRhcmdldE92ZXJyaWRlOworICAgICAg
ICBTdHJpbmcgcG9pbnRlclR5cGU7CisgICAgICAgIGJvb2wgY2FuY2VsbGVkIHsgZmFsc2UgfTsK
ICAgICB9OwogCiAgICAgdm9pZCBwcm9jZXNzUGVuZGluZ1BvaW50ZXJDYXB0dXJlKGNvbnN0IFBv
aW50ZXJFdmVudCYpOworCisgICAgUGFnZSYgbV9wYWdlOwogICAgIEhhc2hNYXA8aW50MzJfdCwg
Q2FwdHVyaW5nRGF0YT4gbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0dXJpbmdEYXRhOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCA1M2YzZmY3MWUx
ZTg5MDBiMDJhODdiMzUxZTUyOTkzNjVjN2Y5OWJhLi4wOTc4ZTZkYTQ3YTc5ZDY0ODRiOWNmMTg4
MjZiYmQ0ZTVlYTM5Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9p
b3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaApAQCAtMTAzMSw2ICsxMDMxLDExIEBAIHR5cGVkZWYgTlNJbnRlZ2VyIFVJQ29tcG9zaXRp
bmdNb2RlOwogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAorLy8gRklYTUU6
IDxyZGFyOi8vcHJvYmxlbS80NzcxNDU2Mj4KK0BpbnRlcmZhY2UgVUlXZWJUb3VjaEV2ZW50c0dl
c3R1cmVSZWNvZ25pemVyICgpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTWFw
VGFibGU8TlNOdW1iZXIgKiwgVUlUb3VjaCAqPiAqYWN0aXZlVG91Y2hlc0J5SWRlbnRpZmllcjsK
K0BlbmQKKwogQGludGVyZmFjZSBVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCA6IFVJUHJlc3Nlc0V2
ZW50CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDg3OGUzZTJmMzViZjkzMzNjODdmMGRiNzc5MzQzNGY1OWYxMDIwMjMuLjlh
NzNhMzZjNGZlZjk3N2U4OWFjYzI1ZGZmY2QzYTFjNzQxZDhhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjU1MSw2ICsyNTUxLDEw
IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxCZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcgd2l0aFZpZXc6KFVJVmlldyAqCiAgICAgICAgIFtfY29udGVudFZpZXcgc2Nyb2xs
Vmlld1dpbGxTdGFydFBhbk9yUGluY2hHZXN0dXJlXTsKICAgICB9CiAgICAgW19jb250ZW50Vmll
dyB3aWxsU3RhcnRab29tT3JTY3JvbGxdOworCisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQor
ICAgIFtfY29udGVudFZpZXcgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjpzY3Jv
bGxWaWV3LnBpbmNoR2VzdHVyZVJlY29nbml6ZXJdOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpc2Ny
b2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CkBAIC0y
NjM1LDggKzI2MzksMTAgQEAgLSAodm9pZClzY3JvbGxWaWV3RGlkU2Nyb2xsVG9Ub3A6KFVJU2Ny
b2xsVmlldyAqKXNjcm9sbFZpZXcKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAtIChDR1Bv
aW50KV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IGFkanVzdGVkT2Zmc2V0
Rm9yT2Zmc2V0OihDR1BvaW50KW9mZnNldCB0cmFuc2xhdGlvbjooQ0dQb2ludCl0cmFuc2xhdGlv
biBzdGFydFBvaW50OihDR1BvaW50KXN0YXJ0IGxvY2F0aW9uSW5WaWV3OihDR1BvaW50KWxvY2F0
aW9uSW5WaWV3IGhvcml6b250YWxWZWxvY2l0eTooaW5vdXQgZG91YmxlICopaHYgdmVydGljYWxW
ZWxvY2l0eTooaW5vdXQgZG91YmxlICopdnYKIHsKLSAgICBpZiAoIVtfY29udGVudFZpZXcgcHJl
dmVudHNQYW5uaW5nSW5YQXhpc10gJiYgIVtfY29udGVudFZpZXcgcHJldmVudHNQYW5uaW5nSW5Z
QXhpc10pCisgICAgaWYgKCFbX2NvbnRlbnRWaWV3IHByZXZlbnRzUGFubmluZ0luWEF4aXNdICYm
ICFbX2NvbnRlbnRWaWV3IHByZXZlbnRzUGFubmluZ0luWUF4aXNdKSB7CisgICAgICAgIFtfY29u
dGVudFZpZXcgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjpzY3JvbGxWaWV3LnBh
bkdlc3R1cmVSZWNvZ25pemVyXTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CiAKICAg
ICBDR1BvaW50IGFkanVzdGVkQ29udGVudE9mZnNldCA9IENHUG9pbnRNYWtlKG9mZnNldC54LCBv
ZmZzZXQueSk7CiAgICAgaWYgKFtfY29udGVudFZpZXcgcHJldmVudHNQYW5uaW5nSW5YQXhpc10p
CkBAIC0yNjQ0LDYgKzI2NTAsMTEgQEAgLSAoQ0dQb2ludClfc2Nyb2xsVmlldzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldyBhZGp1c3RlZE9mZnNldEZvck9mZnNldDooQ0dQb2kKICAgICBpZiAo
W19jb250ZW50VmlldyBwcmV2ZW50c1Bhbm5pbmdJbllBeGlzXSkKICAgICAgICAgYWRqdXN0ZWRD
b250ZW50T2Zmc2V0LnkgPSBzdGFydC55OwogCisgICAgaWYgKCghW19jb250ZW50VmlldyBwcmV2
ZW50c1Bhbm5pbmdJblhBeGlzXSAmJiBhZGp1c3RlZENvbnRlbnRPZmZzZXQueCAhPSBzdGFydC54
KQorICAgICAgICB8fCAoIVtfY29udGVudFZpZXcgcHJldmVudHNQYW5uaW5nSW5ZQXhpc10gJiYg
YWRqdXN0ZWRDb250ZW50T2Zmc2V0LnkgIT0gc3RhcnQueSkpIHsKKyAgICAgICAgW19jb250ZW50
VmlldyBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOnNjcm9sbFZpZXcucGFuR2Vz
dHVyZVJlY29nbml6ZXJdOworICAgIH0KKwogICAgIHJldHVybiBhZGp1c3RlZENvbnRlbnRPZmZz
ZXQ7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA0ODcy
Yzk0YTQxZDdlMjgzMDU1OTlkNDBjZWViOTQ2YzFlODA5NDAxLi45NjE3ZDBkYWMwM2JlZjY2MjEz
ZDJlZDA2ZTg2OTY0NzYyMzkyYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC01Miw2ICs1Miw3IEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxl
V3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNNZW51OwogT0JKQ19DTEFTUyBOU1NldDsKK09CSkNfQ0xB
U1MgVUlHZXN0dXJlUmVjb2duaXplcjsKIE9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKIE9CSkNf
Q0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKQEAgLTQ3Nyw2ICs0NzgsMTEgQEAgcHVi
bGljOgogI2lmIEhBVkUoUEVOQ0lMS0lUKQogICAgIHZpcnR1YWwgUmV0YWluUHRyPFdLRHJhd2lu
Z1ZpZXc+IGNyZWF0ZURyYXdpbmdWaWV3KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2du
aXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgeyB9CisjZW5kaWYKKwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuaAppbmRleCBkZjA3MTU2NjJmNGRjOTk1Y2JkNTM1Y2EzN2U4MWMyNmEyOWQzZTEzLi4wYTMw
NzA5Nzc5M2UyYmUwMjkxODVmNTIxMTE1YjdiZDhkMTE5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGlj
OgogICAgIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCByb290U2Nyb2xsaW5nTm9kZUlEKCkgY29u
c3Q7CiAKICAgICBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29u
c3Q7CisgICAgV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dl
YlBhZ2VQcm94eTsgfQogCiAgICAgc3RydWN0IFJlcXVlc3RlZFNjcm9sbEluZm8gewogICAgICAg
ICBib29sIHJlcXVlc3RzU2Nyb2xsUG9zaXRpb25VcGRhdGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRl
eCBhMzRjODBjNzA1N2RmZDBjMGMzYTkwNDQyNjU3MjUzMjFhN2EyY2I5Li45MmRiZTc5ZWQ2YzMy
MDAyNDczOWYxZTZjMGNmMWIyYTgzN2I0ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNjcsNiArNjcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOwogI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKICAgICBPcHRpb25hbDxUb3VjaEFjdGlvbkRhdGE+IHRvdWNoQWN0aW9uRGF0YSgp
IGNvbnN0OworICAgIHZvaWQgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdl
c3R1cmVSZWNvZ25pemVyKik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRl
eCBkYzU1ZGE5NDFjMDM3ZmFiNjM0YjhlMDhhMTFkZWNhYjMyNTE1YTQ1Li4wMzk1N2Y0NDhjZTIx
MmIwMjkyZWVmOWVmYWMxNDVhMzIwZTdkMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC00Myw2ICs0
MywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQorI2ltcG9ydCAiUGFnZUNsaWVudC5oIgor
I2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdh
dGUKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZToo
V2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKilkZWxlZ2F0ZQpA
QCAtMTQxLDggKzE0NSwxMCBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmREZWNlbGVyYXRpbmc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIC0gKENHUG9pbnQpX3Njcm9sbFZpZXc6KFVJU2Ny
b2xsVmlldyAqKXNjcm9sbFZpZXcgYWRqdXN0ZWRPZmZzZXRGb3JPZmZzZXQ6KENHUG9pbnQpb2Zm
c2V0IHRyYW5zbGF0aW9uOihDR1BvaW50KXRyYW5zbGF0aW9uIHN0YXJ0UG9pbnQ6KENHUG9pbnQp
c3RhcnQgbG9jYXRpb25JblZpZXc6KENHUG9pbnQpbG9jYXRpb25JblZpZXcgaG9yaXpvbnRhbFZl
bG9jaXR5Oihpbm91dCBkb3VibGUgKilodiB2ZXJ0aWNhbFZlbG9jaXR5Oihpbm91dCBkb3VibGUg
Kil2dgogewogICAgIGF1dG8gdG91Y2hBY3Rpb25EYXRhID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVs
ZWdhdGUtPnRvdWNoQWN0aW9uRGF0YSgpOwotICAgIGlmICghdG91Y2hBY3Rpb25EYXRhKQorICAg
IGlmICghdG91Y2hBY3Rpb25EYXRhKSB7CisgICAgICAgIFtzZWxmIGNhbmNlbFBvaW50ZXJzRm9y
R2VzdHVyZVJlY29nbml6ZXI6c2Nyb2xsVmlldy5wYW5HZXN0dXJlUmVjb2duaXplcl07CiAgICAg
ICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQogCiAgICAgYXV0byB0b3VjaEFjdGlvbnMgPSB0b3Vj
aEFjdGlvbkRhdGEtPnRvdWNoQWN0aW9uczsKICAgICBpZiAodG91Y2hBY3Rpb25zID09IFdlYkNv
cmU6OlRvdWNoQWN0aW9uOjpBdXRvIHx8IHRvdWNoQWN0aW9ucyA9PSBXZWJDb3JlOjpUb3VjaEFj
dGlvbjo6TWFuaXB1bGF0aW9uKQpAQCAtMTU1LDggKzE2MSwyMyBAQCAtIChDR1BvaW50KV9zY3Jv
bGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IGFkanVzdGVkT2Zmc2V0Rm9yT2Zmc2V0
OihDR1BvaQogICAgIGlmICghdG91Y2hBY3Rpb25zLmNvbnRhaW5zKFdlYkNvcmU6OlRvdWNoQWN0
aW9uOjpQYW5ZKSkKICAgICAgICAgYWRqdXN0ZWRDb250ZW50T2Zmc2V0LnkgPSBzdGFydC55Owog
CisgICAgaWYgKCh0b3VjaEFjdGlvbnMuY29udGFpbnMoV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBh
blgpICYmIGFkanVzdGVkQ29udGVudE9mZnNldC54ICE9IHN0YXJ0LngpCisgICAgICAgIHx8ICh0
b3VjaEFjdGlvbnMuY29udGFpbnMoV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblkpICYmIGFkanVz
dGVkQ29udGVudE9mZnNldC55ICE9IHN0YXJ0LnkpKSB7CisgICAgICAgIFtzZWxmIGNhbmNlbFBv
aW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6c2Nyb2xsVmlldy5wYW5HZXN0dXJlUmVjb2duaXpl
cl07CisgICAgfQorCiAgICAgcmV0dXJuIGFkanVzdGVkQ29udGVudE9mZnNldDsKIH0KKworLSAo
dm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmll
dyB3aXRoVmlldzooVUlWaWV3ICopdmlldworeworICAgIFtzZWxmIGNhbmNlbFBvaW50ZXJzRm9y
R2VzdHVyZVJlY29nbml6ZXI6c2Nyb2xsVmlldy5waW5jaEdlc3R1cmVSZWNvZ25pemVyXTsKK30K
KworLSAodm9pZCljYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBfc2Nyb2xsaW5nVHJlZU5vZGVE
ZWxlZ2F0ZS0+Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihnZXN0dXJlUmVjb2du
aXplcik7Cit9CiAjZW5kaWYKIAogQGVuZApAQCAtMzM0LDYgKzM1NSwxMSBAQCBPcHRpb25hbDxU
b3VjaEFjdGlvbkRhdGE+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnRv
dWNoQWN0aW9uRGF0YQogewogICAgIHJldHVybiBkb3duY2FzdDxSZW1vdGVTY3JvbGxpbmdUcmVl
PihzY3JvbGxpbmdUcmVlKCkpLnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKS50b3VjaEFjdGlv
bkRhdGFGb3JTY3JvbGxOb2RlSUQoc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGluZ05vZGVJRCgpKTsK
IH0KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjYW5jZWxQ
b2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVS
ZWNvZ25pemVyKQoreworICAgIGRvd25jYXN0PFJlbW90ZVNjcm9sbGluZ1RyZWU+KHNjcm9sbGlu
Z1RyZWUoKSkuc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpLndlYlBhZ2VQcm94eSgpLnBhZ2VD
bGllbnQoKS5jYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKGdlc3R1cmVSZWNvZ25p
emVyKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGY4YTI5OTUwODc5MjgxMTAyNmM2YmYyNDk2
N2E5NTYzZmNjYThlZTIuLjMyMjVkNDM3YmU1MWFlM2ZlZTAzMDNkNzAyYjRjNDRlMWQ5NzkwNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjY0OSw2ICsy
NjQ5LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2
ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogfQogI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2Vs
UG9pbnRlcihpbnQzMl90IHBvaW50ZXJJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRvY3Vt
ZW50UG9pbnQpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5j
ZWxQb2ludGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCksIG1fcGFnZUlEKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQnkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNhYmQzMzVmOTcwMTA1
NzRhNjRjNDdjZDk0YmNhMDNiNTYzYTZhNDYuLjFlMjBjNGJlOTA4ZGY5YTY5YThlNGU4OTc1YmI2
MTJhOTU3ZDlhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03
OTAsNiArNzkwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVO
VFMpCisgICAgdm9pZCBjYW5jZWxQb2ludGVyKGludDMyX3QsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CisjZW5kaWYKKwogICAgIHZvaWQgc2Nyb2xsQnkoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgdm9pZCBjZW50ZXJTZWxlY3Rp
b25JblZpc2libGVBcmVhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNThiZTc2YjdhYTUyZTAwYWUzM2UxNjk3YTc3Yjg1Mjli
YjhhMTUzMy4uYTNjNmQzYWY4OWQ1MDY2Nzc5NTg3MDRkZDkwMTY2N2RiNDFlOTZlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTIz
OSw2ICsyMzksMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gY3Jl
YXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgdm9pZCBj
YW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSBv
dmVycmlkZTsKKyNlbmRpZgorCiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKICAg
ICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDRh
OTkyYmYyMzRlNDEwMDU2YjIxYThhODliYWU4NTg3MzhiN2RhODguLjE1MDljYzI3NDI5OTQzYWNi
ZGMzNWE2OGYyNTVmOWVlYmJhZDYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTg0NCw2ICs4NDQsMTMgQEAgUmV0YWluUHRy
PFdLRHJhd2luZ1ZpZXc+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nVmlldyhXZWJDb3Jl
OjpHcmFwaGljc0xheWUKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihV
SUdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplcikKK3sKKyAgICBbbV9jb250ZW50
VmlldyBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25pemVy
XTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggYWYyZjEwOWY3MjIzMGZhMWYxYjg2MTMy
ZTFlOGU0NWMwYjVlMjU1ZC4uZmFkMGJjYmFlMjgzM2JmZTFmZDdmYzk1NTFmNDZjODU3ZGJkZWEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaApAQCAtMzc4LDYgKzM3OCwxMCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVj
dGlvbkRhdGEgewogLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlv
biB3aXRoU2VuZGVyOihpZClzZW5kZXI7CiAtIChpZCl0YXJnZXRGb3JBY3Rpb25Gb3JXZWJWaWV3
OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcjsKIAorI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKKy0gKHZvaWQpY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjooVUlH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCisKICNkZWZpbmUg
REVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcoX2FjdGlvbikgXAogICAg
IC0gKHZvaWQpX2FjdGlvbiAjIyBGb3JXZWJWaWV3OihpZClzZW5kZXI7CiBGT1JfRUFDSF9XS0NP
TlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklF
VykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IDVlYWJhMGY1M2NjOWI0NmFiZDA4ZWQ4ZWZkYWExZmZmYmY1
ZjA2NTAuLjdhOTg2NDI5YjE1MmEzNmMwMzQ3MDk2MWU0OTQwNWM5OGUzZWMzMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtMTE0Niw2ICsxMTQ2LDIyIEBAIC0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25k
ZXJGb3JXZWJWaWV3CiAgICAgcmV0dXJuIHN1cGVyRGlkUmVzaWduOwogfQogCisjaWYgRU5BQkxF
KFBPSU5URVJfRVZFTlRTKQorLSAodm9pZCljYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25p
emVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICAvLyBG
SVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ3NzE0NTYyPgorICAgIGlmICghW190b3VjaEV2ZW50R2Vz
dHVyZVJlY29nbml6ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY3RpdmVUb3VjaGVz
QnlJZGVudGlmaWVyKV0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TTWFwVGFibGU8TlNOdW1i
ZXIgKiwgVUlUb3VjaCAqPiAqYWN0aXZlVG91Y2hlcyA9IFtfdG91Y2hFdmVudEdlc3R1cmVSZWNv
Z25pemVyIGFjdGl2ZVRvdWNoZXNCeUlkZW50aWZpZXJdOworICAgIGZvciAoTlNOdW1iZXIgKnRv
dWNoSWRlbnRpZmllciBpbiBhY3RpdmVUb3VjaGVzKSB7CisgICAgICAgIFVJVG91Y2ggKnRvdWNo
ID0gW2FjdGl2ZVRvdWNoZXMgb2JqZWN0Rm9yS2V5OnRvdWNoSWRlbnRpZmllcl07CisgICAgICAg
IGlmIChbdG91Y2guZ2VzdHVyZVJlY29nbml6ZXJzIGNvbnRhaW5zT2JqZWN0Omdlc3R1cmVSZWNv
Z25pemVyXSkKKyAgICAgICAgICAgIF9wYWdlLT5jYW5jZWxQb2ludGVyKFt0b3VjaElkZW50aWZp
ZXIgdW5zaWduZWRJbnRWYWx1ZV0sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbdG91Y2ggbG9j
YXRpb25JblZpZXc6c2VsZl0pKTsKKyAgICB9Cit9CisjZW5kaWYKKwogLSAodm9pZClfd2ViVG91
Y2hFdmVudHNSZWNvZ25pemVkOihVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogewogICAgIGlmICghX3BhZ2UtPmlzVmFsaWQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjNhOTc4MGE4YWZl
OTgxODBiZjM3MDNmNjVjYzRlMDNmMzMxOWJmZi4uZjA4MGYyZWEyNmNlZWQxOTRkZWNkYWJkOTAx
YzgwOGNlNzdjMzNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTE5MCw2ICsxOTAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1By
aW50Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmFuZ2UuaD4KQEAgLTI3OTYsNiArMjc5NywxMyBAQCB2b2lk
IFdlYlBhZ2U6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQordm9pZCBXZWJQYWdlOjpjYW5j
ZWxQb2ludGVyKGludDMyX3QgcG9pbnRlcklkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZG9j
dW1lbnRQb2ludCkKK3sKKyAgICBtX3BhZ2UtPnBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcigpLmNh
bmNlbFBvaW50ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKIHN0YXRpYyBib29sIGhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBQYWdlKiBwYWdlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDFiZTU5MDZjOTVkNTE4ZDM2
NTFiOWE3NmMzMjZiMTAwZDJmNzYxMTUuLjIyZDA1ZDVhZjEwY2ZhOTZiNzU0YjE0Nzc5MjQ0MWQ4
Mzg1MjQ3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTEyNDAsNiArMTI0MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgdG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykK
KyAgICB2b2lkIGNhbmNlbFBvaW50ZXIoaW50MzJfdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBjb250ZXh0
TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAgICAgdm9p
ZCBjb250ZXh0TWVudUZvcktleUV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0N2U5Y2U2YmE3YzY5OTJi
MWQ4Nzk2YjI3ZTBkYzg5OGE3MDJmN2U4Li5mYzFjZTMzMWY1Yzk4M2ZhNDJjMjZmOGM1OGY5Zjg5
NWRmNTgwMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEyNyw2ICsxMjcsMTAgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZl
bnQgZXZlbnQpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICBDYW5j
ZWxQb2ludGVyKGludDMyX3QgcG9pbnRlcklkLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBv
aW50KQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBEaWRFbmRD
b2xvclBpY2tlcigpCiAgICAgRGlkQ2hvb3NlQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCg==
</data>
<flag name="review"
          id="377470"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>