<?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>156089</bug_id>
          
          <creation_ts>2016-03-31 16:14:57 -0700</creation_ts>
          <short_desc>Add some logic to decide when a video can control the videoControlsManager</short_desc>
          <delta_ts>2016-04-04 14:21:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Local 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179656</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-03-31 16:14:57 -0700</bug_when>
    <thetext>Add some logic to decide when a video can control the videoControlsManager

rdar://problem/23833752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179690</commentid>
    <comment_count>1</comment_count>
      <attachid>275360</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-03-31 17:12:26 -0700</bug_when>
    <thetext>Created attachment 275360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179896</commentid>
    <comment_count>2</comment_count>
      <attachid>275421</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-04-01 11:16:56 -0700</bug_when>
    <thetext>Created attachment 275421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179919</commentid>
    <comment_count>3</comment_count>
      <attachid>275421</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-04-01 13:07:59 -0700</bug_when>
    <thetext>Comment on attachment 275421
Patch

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

This looks good to me modulo the minor nits noted, but I am not a WK2 reviewer so someone else will have to give the official nod.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4847
&gt; +        if (endedPlayback() &amp;&amp; document().page() &amp;&amp; is&lt;HTMLVideoElement&gt;(*this))

As we discussed, this will cause issues when a video&apos;s src is changed in the &apos;ended&apos; event to make a playlist. Probably worth filing a bug to investigate this.

&gt; Source/WebCore/html/MediaElementSession.cpp:219
&gt; +    // FIXME: Audio elements should be able to have a controls manager as well. Audio elements
&gt; +    // should probably only have a controls manager if they started playing via a user gesture.

It would be good to have a bug number here.

&gt; Source/WebCore/html/MediaElementSession.cpp:233
&gt; +    if (renderer-&gt;clientWidth() &gt;= elementMainContentMinimumWidth &amp;&amp; renderer-&gt;clientHeight() &gt;= elementMainContentMinimumHeight) {
&gt; +        if (element.hasAudio() &amp;&amp; element.hasVideo())
&gt; +            return true;
&gt; +    }

Do you care if the &lt;video&gt; is visible in the page or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180494</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-04-04 14:21:59 -0700</bug_when>
    <thetext>Thanks Eric and Tim!

(In reply to comment #3)
&gt; Comment on attachment 275421 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275421&amp;action=review
&gt; 
&gt; This looks good to me modulo the minor nits noted, but I am not a WK2
&gt; reviewer so someone else will have to give the official nod.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4847
&gt; &gt; +        if (endedPlayback() &amp;&amp; document().page() &amp;&amp; is&lt;HTMLVideoElement&gt;(*this))
&gt; 
&gt; As we discussed, this will cause issues when a video&apos;s src is changed in the
&gt; &apos;ended&apos; event to make a playlist. Probably worth filing a bug to investigate
&gt; this.
&gt; 

YouTube playlists do seem to work. Can you think of another playlist that might fail? I do want to file a bug, but I would like to have an example.

&gt; &gt; Source/WebCore/html/MediaElementSession.cpp:219
&gt; &gt; +    // FIXME: Audio elements should be able to have a controls manager as well. Audio elements
&gt; &gt; +    // should probably only have a controls manager if they started playing via a user gesture.
&gt; 
&gt; It would be good to have a bug number here.
&gt; 

Added one: rdar://problem/25537071

&gt; &gt; Source/WebCore/html/MediaElementSession.cpp:233
&gt; &gt; +    if (renderer-&gt;clientWidth() &gt;= elementMainContentMinimumWidth &amp;&amp; renderer-&gt;clientHeight() &gt;= elementMainContentMinimumHeight) {
&gt; &gt; +        if (element.hasAudio() &amp;&amp; element.hasVideo())
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; 
&gt; Do you care if the &lt;video&gt; is visible in the page or not?

I think I might…still thinking this over actually. I can imagine kind of see it either way. If the video is still playing and the audio is still happening, it seems like it shouldn&apos;t matter that it has been scroll offscreen? But if the video stopped because it was scrolled away, then then we do care. We&apos;ll have to think this through.

Thank you!

http://trac.webkit.org/changeset/199022</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275360</attachid>
            <date>2016-03-31 17:12:26 -0700</date>
            <delta_ts>2016-04-01 11:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>21096</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAzLTMxICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc29tZSBsb2dpYyB0byBkZWNp
ZGUgd2hlbiBhIHZpZGVvIGNhbiBjb250cm9sIHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDg5CisgICAg
ICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjM4MzM3NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRo
aXMgcGF0Y2gsIGEgdmlkZW8gY2FuIHRha2Ugb3ZlciB0aGUgdmlkZW9Db250cm9sc01hbmFnZXIg
aWYgYWxsIG9mIAorICAgICAgICB0aGVzZSBjb25kaXRpb25zIGFyZSBtZXQ6CisgICAgICAgIC1Q
bGF5YmFjayBpcyBwZXJtaXR0ZWQKKyAgICAgICAgLVRoZSB2aWRlbyBoYXMgYSByZW5kZXJlcgor
ICAgICAgICAtVGhlIHZpZGVvIGlzIDQwMHgzMDAgb3IgbGFyZ2VyCisgICAgICAgIEFORAorICAg
ICAgICAtVGhlIHZpZGVvIGhhcyBib3RoIGF1ZGlvIGFuZCB2aWRlbworCisgICAgICAgIElmIHRo
b3NlIGNyaXRlcmlhIGFyZSBub3QgbWV0IHRoZSB2aWRlbyB3aWxsIHN0aWxsIGJlIGFsbG93ZWQg
dG8gdGFrZSBvdmVyIAorICAgICAgICB0aGUgdmlkZW9Db250cm9sc01hbmFnZXIgaWY6CisgICAg
ICAgIC1QbGF5YmFjayBpcyBwZXJtaXR0ZWQKKyAgICAgICAgLVRoZSB2aWRlbyBoYXMgYSByZW5k
ZXJlcgorICAgICAgICAtVGhlIHZpZGVvIHN0YXJ0ZWQgcGxheWluZyBiZWNhdXNlIG9mIGEgdXNl
ciBnZXN0dXJlLgorCisgICAgICAgIElmIG11bHRpcGxlIHZpZGVvcyBtZWV0IHRoaXMgY3JpdGVy
aWEsIHRoZW4gdGhlIHZpZGVvIHRoYXQgbW9zdCByZWNlbnRseSAKKyAgICAgICAgc3RhcnRlZCBw
bGF5aW5nIHdpbGwgdGFrZSBvdmVyIHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlci4KKworICAgICAg
ICBXZSBtaWdodCBjb25zaWRlciBtb3JlIHJlc3RyaWN0aW9ucyBpbiB0aGUgZnV0dXJlLCBidXQg
dGhpcyBzZWVtcyBsaWtlIGEgZ29vZCAKKyAgICAgICAgcGxhY2UgdG8gc3RhcnQuCisKKyAgICAg
ICAgTW92ZSBhbGwgZGVjaXNpb25zIGFib3V0IHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlciB0byB1
cGRhdGVQbGF5U3RhdGUoKSAKKyAgICAgICAgaW5zdGVhZCBvZiBwbGF5SW50ZXJuYWwoKS4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKworICAgICAgICBJZiB0aGUgdmlkZW8gd2ls
bCBwbGF5IGFmdGVyIHVwZGF0ZVBsYXlTdGF0ZSwgdGhlbiBpbnZva2UgCisgICAgICAgIHNldFVw
VmlkZW9Db250cm9sc01hbmFnZXIoKSBpZiBjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCkgaXMg
dHJ1ZS4gSWYgdGhlIAorICAgICAgICB2aWRlbyB3aWxsIG5vdCBiZSBwbGF5aW5nIGFmdGVyIHVw
ZGF0ZVBsYXlTdGF0ZSwgdGhlbiBjaGVjayB0byBzZWUgaWYgCisgICAgICAgIGVuZGVkUGxheWJh
Y2soKSBpcyB0cnVlLiBJZiBpdCBpcywgdGhlbiBpbnZva2UgY2xlYXJWaWRlb0NvbnRyb2xzTWFu
YWdlcigpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0
YXRlKToKKworICAgICAgICBUaGUgbG9naWMgZm9yIHRoZSBoZXVyaXN0aWMgaXMgaGVyZToKKyAg
ICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcik6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisKKyAgICAgICAgTmV3IENocm9tZUNsaWVu
dCBmdW5jdGlvbiBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkuCisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKwogMjAxNi0wMy0zMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE5NTYwNSk6IEFTU0VSVElPTiBGQUlMRUQ6
ICFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
ODg0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5OTEsMTQgKzI5OTEsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXlJbnRlcm5hbCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogcmRh
cjovL3Byb2JsZW0vMjM4MzM3NTIgV2UgbmVlZCB0byBiZSBtb3JlIHN0cmF0ZWdpYyBhYm91dCB3
aGVuIHdlIHNldCB1cCB0aGUgdmlkZW8gY29udHJvbHMgbWFuYWdlci4KLSAgICAvLyBJdCdzIHJl
YWxseSBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyIHNpbmNlIHdlIG9ubHkgd2FudCBhIGNvbnRyb2xzCi0gICAgLy8gbWFu
YWdlciBmb3IgdGhlIGN1cnJlbnRTZXNzaW9uLgotICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSAm
JiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpIHsKLSAgICAgICAgSFRNTFZpZGVvRWxlbWVu
dCYgYXNWaWRlbyA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAg
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwVmlkZW9Db250cm9sc01h
bmFnZXIoYXNWaWRlbyk7Ci0gICAgfQotCiAgICAgLy8gNC44LjEwLjkuIFBsYXlpbmcgdGhlIG1l
ZGlhIHJlc291cmNlCiAgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRX
T1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3Vy
Y2UpOwpAQCAtNDgxNSw2ICs0ODA3LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
UGxheVN0YXRlKCkKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoJXApIC0gc2hvdWxkQmVQbGF5aW5nID0gJXMsIHBsYXllclBhdXNlZCA9ICVzIiwgdGhp
cywgYm9vbFN0cmluZyhzaG91bGRCZVBsYXlpbmcpLCBib29sU3RyaW5nKHBsYXllclBhdXNlZCkp
OwogCiAgICAgaWYgKHNob3VsZEJlUGxheWluZykgeworICAgICAgICBpZiAoZG9jdW1lbnQoKS5w
YWdlKCkgJiYgbV9tZWRpYVNlc3Npb24tPmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKnRoaXMp
KSB7CisgICAgICAgICAgICBIVE1MVmlkZW9FbGVtZW50JiBhc1ZpZGVvID0gZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4oKnRoaXMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLnNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoYXNWaWRlbyk7CisgICAg
ICAgIH0KKwogICAgICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7CiAgICAgICAgIGludmFsaWRh
dGVDYWNoZWRUaW1lKCk7CiAKQEAgLTQ4NDcsNiArNDg0NCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGlt
ZXIoKTsKICAgICAgICAgc2V0UGxheWluZyh0cnVlKTsKICAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoZW5kZWRQbGF5YmFjaygpICYmIGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxWaWRlb0Vs
ZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5jbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7CisKICAgICAgICAgaWYgKCFwbGF5
ZXJQYXVzZWQpCiAgICAgICAgICAgICBtX3BsYXllci0+cGF1c2UoKTsKICAgICAgICAgcmVmcmVz
aENhY2hlZFRpbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcAkocmV2aXNpb24gMTk4ODQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMywzMSBAQCBi
b29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdl
cihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBBdWRpbyBlbGVtZW50cyBzaG91bGQgYmUgYWJsZSB0byBoYXZlIGEgY29udHJvbHMgbWFuYWdl
ciBhcyB3ZWxsLiBBdWRpbyBlbGVtZW50cworICAgIC8vIHNob3VsZCBwcm9iYWJseSBvbmx5IGhh
dmUgYSBjb250cm9scyBtYW5hZ2VyIGlmIHRoZXkgc3RhcnRlZCBwbGF5aW5nIHZpYSBhIHVzZXIg
Z2VzdHVyZS4KKyAgICBpZiAoIWVsZW1lbnQuaXNWaWRlbygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIXBsYXliYWNrUGVybWl0dGVkKGVsZW1lbnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZW5kZXJCb3gqIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94
PihlbGVtZW50LnJlbmRlcmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChyZW5kZXJlci0+Y2xpZW50V2lkdGgoKSA+PSBlbGVtZW50TWFp
bkNvbnRlbnRNaW5pbXVtV2lkdGggJiYgcmVuZGVyZXItPmNsaWVudEhlaWdodCgpID49IGVsZW1l
bnRNYWluQ29udGVudE1pbmltdW1IZWlnaHQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXVk
aW8oKSAmJiBlbGVtZW50Lmhhc1ZpZGVvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9y
TWVkaWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYg
ZWxlbWVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCShyZXZpc2lvbiAxOTg4NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OwogICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVk
aWFFbGVtZW50JikgY29uc3Q7CiAKKyAgICBib29sIGNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIo
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBI
VE1MTWVkaWFFbGVtZW50Jik7CiAgICAgYm9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhj
b25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw2ICszNDIsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xz
TWFuYWdlcihIVE1MVmlkZW9FbGVtZW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVmlk
ZW9Db250cm9sc01hbmFnZXIoKSB7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBleGl0Vmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmlt
YXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSAvKnRhcmdldE1vZGUqLykgeyB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTg5MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1NyBAQAorMjAxNi0wMy0zMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHNvbWUgbG9naWMgdG8gZGVjaWRlIHdoZW4gYSB2aWRlbyBj
YW4gY29udHJvbCB0aGUgdmlkZW9Db250cm9sc01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjA4OQorICAgICAgICAtYW5kIGNvcnJlc3Bv
bmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIzODMzNzUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJpZ2dlc3QgY2hhbmdlIGluIFdl
YktpdDIgaXMgdG8gcHVzaCBhbGwgb2YgdGhlIGxvZ2ljIGZvciB0aGUgCisgICAgICAgIHZpZGVv
Q29udHJvbHNNYW5hZ2VyIGludG8gV2ViQ29yZS4gV2l0aCB0aGlzIGNoYW5nZSwgV2ViQ29yZSB3
aWxsIGludm9rZSAKKyAgICAgICAgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHdoZW4gdGhl
cmUgaXMgYSB2aWRlbyB0byBjb250cm9sIHRoZSBtYW5hZ2VyLCBhbmQgCisgICAgICAgIGl0IHdp
bGwgY2FsbCBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkgd2hlbiB0aGVyZSBpcyBub3QuCisK
KyAgICAgICAgQWRkIGNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIpOgorCisgICAgICAgIFJlLW5hbWUgaXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoKSB0byB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpLiBUaGlz
IAorICAgICAgICB0aWVzIHRoZSBsb2dpYyB0byB0aGUgbGlmZXRpbWUgb2YgdGhlIHZpZGVvQ29u
dHJvbHNNYW5hZ2VyIGluc3RlYWQgb2YgCisgICAgICAgIGZpZ3VyaW5nIGl0IG91dCBpbiB0aGUg
VUlQcm9jZXNzIGJhc2VkIG9uIHRoZSBtZWRpYSBzdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppc1BsYXlpbmdNZWRp
YURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoK
KworICAgICAgICBBbHNvIGNoYW5nZSBpc1BsYXlpbmdWaWRlb1dpdGhBdWRpbygpIGludG8gaGFz
QWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKSAKKyAgICAgICAgQWdhaW4sIHRoaXMgdGll
cyB0aGUgbG9naWMgdG8gdGhlIGxpZmV0aW1lIG9mIHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlciAK
KyAgICAgICAgaW5zdGVhZCBvZiBmaWd1cmluZyBpdCBvdXQgaW4gdGhlIFVJUHJvY2VzcyBiYXNl
ZCBvbiB0aGUgbWVkaWEgc3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZpZGVvQ29udHJvbHNNYW5hZ2Vy
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRl
b0ZvckNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQ
bGF5aW5nVmlkZW9XaXRoQXVkaW8pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogRGVs
ZXRlZC4KKworICAgICAgICBOZXcgV2ViQ2hyb21lQ2xpZW50IGZ1bmN0aW9uIGNsZWFyVmlkZW9D
b250cm9sc01hbmFnZXIoKS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y2xl
YXJWaWRlb0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKworICAgICAgICBEbyB0aGUgd29yayB0byBjbGVhciB0
aGUgdmlkZW9Db250cm9sc01hbmFnZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdp
dGhvdXRBbmltYXRpb24pOgorCiAyMDE2LTAzLTMxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBBdXRvbWF0aW9uOiB0aGUgaW50ZXJhY3Rpb24gcXVldWUgaW4g
V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlJbnRlcmFjdGlvbnMgZG9lc24ndCB3b3Jr
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE5ODg0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0Niw3ICszNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZGVvQ29udHJvbHNNYW5h
Z2VyRGlkQ2hhbmdlKCkgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk0LDE5ICs1
OTk0LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW4KICAgICBN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgb2xkU3RhdGUgPSBtX21lZGlhU3RhdGU7CiAg
ICAgbV9tZWRpYVN0YXRlID0gc3RhdGU7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKChv
bGRTdGF0ZSAmIHBsYXlpbmdNZWRpYU1hc2spICE9IChtX21lZGlhU3RhdGUgJiBwbGF5aW5nTWVk
aWFNYXNrKSkKLSAgICAgICAgbV9wYWdlQ2xpZW50LmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKCk7
Ci0jZW5kaWYKLQogICAgIHBsYXlpbmdNZWRpYU1hc2sgfD0gTWVkaWFQcm9kdWNlcjo6SGFzQWN0
aXZlTWVkaWFDYXB0dXJlRGV2aWNlOwogICAgIGlmICgob2xkU3RhdGUgJiBwbGF5aW5nTWVkaWFN
YXNrKSAhPSAobV9tZWRpYVN0YXRlICYgcGxheWluZ01lZGlhTWFzaykpCiAgICAgICAgIG1fdWlD
bGllbnQtPmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCp0aGlzKTsKIH0KIAotYm9vbCBXZWJQYWdl
UHJveHk6OmlzUGxheWluZ1ZpZGVvV2l0aEF1ZGlvKCkgY29uc3QKKyNpZiBQTEFURk9STShNQUMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKQorewor
ICAgIG1fcGFnZUNsaWVudC52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOworfQorI2Vu
ZGlmCisKK2Jvb2wgV2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdl
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ0F1ZGlvICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1Zp
ZGVvOworICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgJiYgbV92aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLT5jb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKSAmJiBtX21lZGlhU3RhdGUg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW87CiB9CiAKICNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTAyMCw3ICsxMDIwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncywgdWludDY0X3QpOwogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncyBtZWRpYVN0YXRlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RhdGU7IH0K
IAotICAgIGJvb2wgaXNQbGF5aW5nVmlkZW9XaXRoQXVkaW8oKSBjb25zdDsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgdm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOworICAgIGJv
b2wgaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKSBjb25zdDsKKyNlbmRpZgogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0
aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmgJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM4LDYgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyCiAgICAgdm9pZCBzZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0
X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0b3IsIFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKTsKICAgICB2b2lkIHNldFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQodWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKTsK
ICAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQg
c2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRv
dWJsZSBob3N0VGltZSk7CiAgICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTk4ODQyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBtZXNzYWdlcyAtPiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJvCiAgICAgQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogICAgIFByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQogICAgIFNldFVw
VmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQorICAgIENsZWFy
VmlkZW9Db250cm9sc01hbmFnZXIoKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKQogICAgIEV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRv
TW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0JKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQxMiwxMSArNDEyLDI1IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXQKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9
IGNvbnRleHRJZDsKICAgICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwogICAgIGFkZENsaWVudEZvckNvbnRleHQobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpOworCisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFu
YWdlckRpZENoYW5nZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKICNl
bmRpZgogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYXJWaWRl
b0NvbnRyb2xzTWFuYWdlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghbV9jb250
cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUNsaWVu
dEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkID0gMDsKKyAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlk
Q2hhbmdlKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgZW5zdXJlSW50
ZXJmYWNlKGNvbnRleHRJZCkucmVzZXRNZWRpYVN0YXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMTk4ODQyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNCw3ICszMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21wbGV0ZUltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbigpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUoQ0dTaXpl
KTsKICAgICB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7Ci0gICAgdm9pZCBpc1Bs
YXlpbmdNZWRpYURpZENoYW5nZSgpOworICAgIHZvaWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRD
aGFuZ2UoKTsKIAogICAgIHZvaWQgc2V0SWdub3Jlc05vbldoZWVsRXZlbnRzKGJvb2wpOwogICAg
IGJvb2wgaWdub3Jlc05vbldoZWVsRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTm9u
V2hlZWxFdmVudHM7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4OSw3ICsyMzg5
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaQogICAgIG1faXNI
YW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlID0gZmFsc2U7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6
OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKCkKK3ZvaWQgV2ViVmlld0ltcGw6OnZpZGVvQ29udHJv
bHNNYW5hZ2VyRGlkQ2hhbmdlKCkKIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAogICAgIHVwZGF0ZVdlYlZpZXdJbXBsQWRkaXRpb25zKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lv
biAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBpc1Bs
YXlpbmdNZWRpYURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2hvd1BsYXRmb3JtQ29udGV4
dE1lbnUoTlNNZW51ICosIFdlYkNvcmU6OkludFBvaW50KSBvdmVycmlkZTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lv
biAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NzksOSArNzc5LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkSGFuZGxlQWNjZXB0ZWRDYQogICAgIG1faW1wbC0+ZGlkSGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGUoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6aXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2UoKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2Uo
KQogewotICAgIG1faW1wbC0+aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoKTsKKyAgICBtX2ltcGwt
PnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudElt
cGw6OnNob3dQbGF0Zm9ybUNvbnRleHRNZW51KE5TTWVudSAqbWVudSwgSW50UG9pbnQgbG9jYXRp
b24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxOTg4NDIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2MCw2ICs4NjAsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldFVwVmlkZW9Db250cm9scwogICAgIG1fcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpLT5zZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKHZpZGVvRWxlbWVudCk7CiB9CiAKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkKK3sKKyAgICBtX3Bh
Z2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+Y2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigp
OworfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAg
ICBBU1NFUlQobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTk4ODQyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQogICAgIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpIG92ZXJyaWRlOwogICAg
IHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSBvdmVycmlkZTsKICNpZiBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCShyZXZpc2lvbiAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYpOwogICAgIHZvaWQgZXhpdFZp
ZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSk7CiAgICAgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQmKTsKKyAgICB2b2lkIGNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKTsKICAgICAK
IHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHJldmlzaW9uIDE5ODg0MikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDYgKzM0NCwxOCBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnNldFVwVmlkCiAjZW5kaWYKIH0KIAordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkKK3sKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgaWYgKCFtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCk7CisgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhclZp
ZGVvQ29udHJvbHNNYW5hZ2VyKCksIG1fcGFnZS0+cGFnZUlEKCkpOworI2VuZGlmCit9CisKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdp
dGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0
TW9kZSkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275421</attachid>
            <date>2016-04-01 11:16:56 -0700</date>
            <delta_ts>2016-04-04 10:59:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>21247</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAzLTMxICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc29tZSBsb2dpYyB0byBkZWNp
ZGUgd2hlbiBhIHZpZGVvIGNhbiBjb250cm9sIHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDg5CisgICAg
ICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjM4MzM3NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRo
aXMgcGF0Y2gsIGEgdmlkZW8gY2FuIHRha2Ugb3ZlciB0aGUgdmlkZW9Db250cm9sc01hbmFnZXIg
aWYgYWxsIG9mIAorICAgICAgICB0aGVzZSBjb25kaXRpb25zIGFyZSBtZXQ6CisgICAgICAgIC1Q
bGF5YmFjayBpcyBwZXJtaXR0ZWQKKyAgICAgICAgLVRoZSB2aWRlbyBoYXMgYSByZW5kZXJlcgor
ICAgICAgICAtVGhlIHZpZGVvIGlzIDQwMHgzMDAgb3IgbGFyZ2VyCisgICAgICAgIEFORAorICAg
ICAgICAtVGhlIHZpZGVvIGhhcyBib3RoIGF1ZGlvIGFuZCB2aWRlbworCisgICAgICAgIElmIHRo
b3NlIGNyaXRlcmlhIGFyZSBub3QgbWV0IHRoZSB2aWRlbyB3aWxsIHN0aWxsIGJlIGFsbG93ZWQg
dG8gdGFrZSBvdmVyIAorICAgICAgICB0aGUgdmlkZW9Db250cm9sc01hbmFnZXIgaWY6CisgICAg
ICAgIC1QbGF5YmFjayBpcyBwZXJtaXR0ZWQKKyAgICAgICAgLVRoZSB2aWRlbyBoYXMgYSByZW5k
ZXJlcgorICAgICAgICAtVGhlIHZpZGVvIHN0YXJ0ZWQgcGxheWluZyBiZWNhdXNlIG9mIGEgdXNl
ciBnZXN0dXJlLgorCisgICAgICAgIElmIG11bHRpcGxlIHZpZGVvcyBtZWV0IHRoaXMgY3JpdGVy
aWEsIHRoZW4gdGhlIHZpZGVvIHRoYXQgbW9zdCByZWNlbnRseSAKKyAgICAgICAgc3RhcnRlZCBw
bGF5aW5nIHdpbGwgdGFrZSBvdmVyIHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlci4KKworICAgICAg
ICBXZSBtaWdodCBjb25zaWRlciBtb3JlIHJlc3RyaWN0aW9ucyBpbiB0aGUgZnV0dXJlLCBidXQg
dGhpcyBzZWVtcyBsaWtlIGEgZ29vZCAKKyAgICAgICAgcGxhY2UgdG8gc3RhcnQuCisKKyAgICAg
ICAgTW92ZSBhbGwgZGVjaXNpb25zIGFib3V0IHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlciB0byB1
cGRhdGVQbGF5U3RhdGUoKSAKKyAgICAgICAgaW5zdGVhZCBvZiBwbGF5SW50ZXJuYWwoKS4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKworICAgICAgICBJZiB0aGUgdmlkZW8gd2ls
bCBwbGF5IGFmdGVyIHVwZGF0ZVBsYXlTdGF0ZSwgdGhlbiBpbnZva2UgCisgICAgICAgIHNldFVw
VmlkZW9Db250cm9sc01hbmFnZXIoKSBpZiBjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCkgaXMg
dHJ1ZS4gSWYgdGhlIAorICAgICAgICB2aWRlbyB3aWxsIG5vdCBiZSBwbGF5aW5nIGFmdGVyIHVw
ZGF0ZVBsYXlTdGF0ZSwgdGhlbiBjaGVjayB0byBzZWUgaWYgCisgICAgICAgIGVuZGVkUGxheWJh
Y2soKSBpcyB0cnVlLiBJZiBpdCBpcywgdGhlbiBpbnZva2UgY2xlYXJWaWRlb0NvbnRyb2xzTWFu
YWdlcigpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0
YXRlKToKKworICAgICAgICBUaGUgbG9naWMgZm9yIHRoZSBoZXVyaXN0aWMgaXMgaGVyZToKKyAg
ICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcik6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisKKyAgICAgICAgTmV3IENocm9tZUNsaWVu
dCBmdW5jdGlvbiBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkuCisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKwogMjAxNi0wMy0zMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE5NTYwNSk6IEFTU0VSVElPTiBGQUlMRUQ6
ICFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
ODg0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5OTEsMTQgKzI5OTEsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXlJbnRlcm5hbCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogcmRh
cjovL3Byb2JsZW0vMjM4MzM3NTIgV2UgbmVlZCB0byBiZSBtb3JlIHN0cmF0ZWdpYyBhYm91dCB3
aGVuIHdlIHNldCB1cCB0aGUgdmlkZW8gY29udHJvbHMgbWFuYWdlci4KLSAgICAvLyBJdCdzIHJl
YWxseSBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyIHNpbmNlIHdlIG9ubHkgd2FudCBhIGNvbnRyb2xzCi0gICAgLy8gbWFu
YWdlciBmb3IgdGhlIGN1cnJlbnRTZXNzaW9uLgotICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSAm
JiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpIHsKLSAgICAgICAgSFRNTFZpZGVvRWxlbWVu
dCYgYXNWaWRlbyA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKLSAgICAgICAg
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnNldFVwVmlkZW9Db250cm9sc01h
bmFnZXIoYXNWaWRlbyk7Ci0gICAgfQotCiAgICAgLy8gNC44LjEwLjkuIFBsYXlpbmcgdGhlIG1l
ZGlhIHJlc291cmNlCiAgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRX
T1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oTG9hZE1lZGlhUmVzb3Vy
Y2UpOwpAQCAtNDgxNSw2ICs0ODA3LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
UGxheVN0YXRlKCkKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoJXApIC0gc2hvdWxkQmVQbGF5aW5nID0gJXMsIHBsYXllclBhdXNlZCA9ICVzIiwgdGhp
cywgYm9vbFN0cmluZyhzaG91bGRCZVBsYXlpbmcpLCBib29sU3RyaW5nKHBsYXllclBhdXNlZCkp
OwogCiAgICAgaWYgKHNob3VsZEJlUGxheWluZykgeworICAgICAgICBpZiAoZG9jdW1lbnQoKS5w
YWdlKCkgJiYgbV9tZWRpYVNlc3Npb24tPmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKnRoaXMp
KSB7CisgICAgICAgICAgICBIVE1MVmlkZW9FbGVtZW50JiBhc1ZpZGVvID0gZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4oKnRoaXMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLnNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoYXNWaWRlbyk7CisgICAg
ICAgIH0KKwogICAgICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7CiAgICAgICAgIGludmFsaWRh
dGVDYWNoZWRUaW1lKCk7CiAKQEAgLTQ4NDcsNiArNDg0NCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGlt
ZXIoKTsKICAgICAgICAgc2V0UGxheWluZyh0cnVlKTsKICAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoZW5kZWRQbGF5YmFjaygpICYmIGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxWaWRlb0Vs
ZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5jbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7CisKICAgICAgICAgaWYgKCFwbGF5
ZXJQYXVzZWQpCiAgICAgICAgICAgICBtX3BsYXllci0+cGF1c2UoKTsKICAgICAgICAgcmVmcmVz
aENhY2hlZFRpbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcAkocmV2aXNpb24gMTk4ODQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMywzMSBAQCBi
b29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdl
cihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBBdWRpbyBlbGVtZW50cyBzaG91bGQgYmUgYWJsZSB0byBoYXZlIGEgY29udHJvbHMgbWFuYWdl
ciBhcyB3ZWxsLiBBdWRpbyBlbGVtZW50cworICAgIC8vIHNob3VsZCBwcm9iYWJseSBvbmx5IGhh
dmUgYSBjb250cm9scyBtYW5hZ2VyIGlmIHRoZXkgc3RhcnRlZCBwbGF5aW5nIHZpYSBhIHVzZXIg
Z2VzdHVyZS4KKyAgICBpZiAoIWVsZW1lbnQuaXNWaWRlbygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIXBsYXliYWNrUGVybWl0dGVkKGVsZW1lbnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZW5kZXJCb3gqIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94
PihlbGVtZW50LnJlbmRlcmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChyZW5kZXJlci0+Y2xpZW50V2lkdGgoKSA+PSBlbGVtZW50TWFp
bkNvbnRlbnRNaW5pbXVtV2lkdGggJiYgcmVuZGVyZXItPmNsaWVudEhlaWdodCgpID49IGVsZW1l
bnRNYWluQ29udGVudE1pbmltdW1IZWlnaHQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXVk
aW8oKSAmJiBlbGVtZW50Lmhhc1ZpZGVvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9y
TWVkaWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYg
ZWxlbWVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCShyZXZpc2lvbiAxOTg4NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OwogICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVk
aWFFbGVtZW50JikgY29uc3Q7CiAKKyAgICBib29sIGNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIo
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBI
VE1MTWVkaWFFbGVtZW50Jik7CiAgICAgYm9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhj
b25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw2ICszNDIsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xz
TWFuYWdlcihIVE1MVmlkZW9FbGVtZW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVmlk
ZW9Db250cm9sc01hbmFnZXIoKSB7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBleGl0Vmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmlt
YXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSAvKnRhcmdldE1vZGUqLykgeyB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTg5MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1NyBAQAorMjAxNi0wMy0zMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHNvbWUgbG9naWMgdG8gZGVjaWRlIHdoZW4gYSB2aWRlbyBj
YW4gY29udHJvbCB0aGUgdmlkZW9Db250cm9sc01hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjA4OQorICAgICAgICAtYW5kIGNvcnJlc3Bv
bmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIzODMzNzUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJpZ2dlc3QgY2hhbmdlIGluIFdl
YktpdDIgaXMgdG8gcHVzaCBhbGwgb2YgdGhlIGxvZ2ljIGZvciB0aGUgCisgICAgICAgIHZpZGVv
Q29udHJvbHNNYW5hZ2VyIGludG8gV2ViQ29yZS4gV2l0aCB0aGlzIGNoYW5nZSwgV2ViQ29yZSB3
aWxsIGludm9rZSAKKyAgICAgICAgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcigpIHdoZW4gdGhl
cmUgaXMgYSB2aWRlbyB0byBjb250cm9sIHRoZSBtYW5hZ2VyLCBhbmQgCisgICAgICAgIGl0IHdp
bGwgY2FsbCBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCkgd2hlbiB0aGVyZSBpcyBub3QuCisK
KyAgICAgICAgQWRkIGNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIpOgorCisgICAgICAgIFJlLW5hbWUgaXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoKSB0byB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpLiBUaGlz
IAorICAgICAgICB0aWVzIHRoZSBsb2dpYyB0byB0aGUgbGlmZXRpbWUgb2YgdGhlIHZpZGVvQ29u
dHJvbHNNYW5hZ2VyIGluc3RlYWQgb2YgCisgICAgICAgIGZpZ3VyaW5nIGl0IG91dCBpbiB0aGUg
VUlQcm9jZXNzIGJhc2VkIG9uIHRoZSBtZWRpYSBzdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppc1BsYXlpbmdNZWRp
YURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoK
KworICAgICAgICBBbHNvIGNoYW5nZSBpc1BsYXlpbmdWaWRlb1dpdGhBdWRpbygpIGludG8gaGFz
QWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKSAKKyAgICAgICAgQWdhaW4sIHRoaXMgdGll
cyB0aGUgbG9naWMgdG8gdGhlIGxpZmV0aW1lIG9mIHRoZSB2aWRlb0NvbnRyb2xzTWFuYWdlciAK
KyAgICAgICAgaW5zdGVhZCBvZiBmaWd1cmluZyBpdCBvdXQgaW4gdGhlIFVJUHJvY2VzcyBiYXNl
ZCBvbiB0aGUgbWVkaWEgc3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZpZGVvQ29udHJvbHNNYW5hZ2Vy
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRl
b0ZvckNvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQ
bGF5aW5nVmlkZW9XaXRoQXVkaW8pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogRGVs
ZXRlZC4KKworICAgICAgICBOZXcgV2ViQ2hyb21lQ2xpZW50IGZ1bmN0aW9uIGNsZWFyVmlkZW9D
b250cm9sc01hbmFnZXIoKS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y2xl
YXJWaWRlb0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKworICAgICAgICBEbyB0aGUgd29yayB0byBjbGVhciB0
aGUgdmlkZW9Db250cm9sc01hbmFnZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdp
dGhvdXRBbmltYXRpb24pOgorCiAyMDE2LTAzLTMxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBBdXRvbWF0aW9uOiB0aGUgaW50ZXJhY3Rpb24gcXVldWUgaW4g
V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlJbnRlcmFjdGlvbnMgZG9lc24ndCB3b3Jr
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE5ODg0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0Niw3ICszNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5n
TWVkaWFEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZGVvQ29udHJvbHNNYW5h
Z2VyRGlkQ2hhbmdlKCkgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk0LDIwICs1
OTk0LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW4KICAgICBN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgb2xkU3RhdGUgPSBtX21lZGlhU3RhdGU7CiAg
ICAgbV9tZWRpYVN0YXRlID0gc3RhdGU7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKChv
bGRTdGF0ZSAmIHBsYXlpbmdNZWRpYU1hc2spICE9IChtX21lZGlhU3RhdGUgJiBwbGF5aW5nTWVk
aWFNYXNrKSkKLSAgICAgICAgbV9wYWdlQ2xpZW50LmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKCk7
Ci0jZW5kaWYKLQogICAgIHBsYXlpbmdNZWRpYU1hc2sgfD0gTWVkaWFQcm9kdWNlcjo6SGFzQWN0
aXZlTWVkaWFDYXB0dXJlRGV2aWNlOwogICAgIGlmICgob2xkU3RhdGUgJiBwbGF5aW5nTWVkaWFN
YXNrKSAhPSAobV9tZWRpYVN0YXRlICYgcGxheWluZ01lZGlhTWFzaykpCiAgICAgICAgIG1fdWlD
bGllbnQtPmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCp0aGlzKTsKIH0KIAotYm9vbCBXZWJQYWdl
UHJveHk6OmlzUGxheWluZ1ZpZGVvV2l0aEF1ZGlvKCkgY29uc3QKKyNpZiBQTEFURk9STShNQUMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKQorewor
ICAgIG1fcGFnZUNsaWVudC52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOworfQorCiti
b29sIFdlYlBhZ2VQcm94eTo6aGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKSBjb25z
dAogewotICAgIHJldHVybiBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdB
dWRpbyAmJiBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbzsKKyNp
ZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgcmV0dXJuIG1fdmlkZW9GdWxs
c2NyZWVuTWFuYWdlciAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdl
ckludGVyZmFjZSgpICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JW
aWRlbzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CisjZW5kaWYKIAogI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQogdm9pZCBXZWJQYWdlUHJveHk6Omhhc01lZGlhU2Vzc2lv
bldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxOTg4NDIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMjAsNyArMTAyMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENo
YW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MsIHVpbnQ2NF90KTsK
ICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZs
YWdzKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRlOyB9CiAKLSAgICBib29sIGlzUGxheWlu
Z1ZpZGVvV2l0aEF1ZGlvKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgdmlk
ZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKKyAgICBib29sIGhhc0FjdGl2ZVZpZGVvRm9y
Q29udHJvbHNNYW5hZ2VyKCkgY29uc3Q7CisjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQogICAgIHZvaWQgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRD
aGFuZ2UoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCShyZXZpc2lv
biAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgog
ICAgIHZvaWQgc2V0dXBGdWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMy
X3QgdmlkZW9MYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxv
YXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CiAgICAgdm9p
ZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCk7Cisg
ICAgdm9pZCBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAgdm9pZCByZXNldE1lZGlh
U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHNldEN1cnJlbnRUaW1lKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOwogICAg
IHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVk
VGltZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDcgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clBybwogICAgIENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBQcmVw
YXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIHZpc2libGUsIFdl
YkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCkKICAgICBTZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2Vy
V2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBDbGVhclZpZGVvQ29udHJvbHNNYW5hZ2Vy
KCkKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
ICAgICBFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWludDY0X3QgY29udGV4
dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
dmlkZW9GdWxsc2NyZWVuTW9kZSkKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCShyZXZpc2lvbiAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MTIsMTEgKzQxMiwyNSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
c2V0CiAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7CiAgICAgZW5z
dXJlSW50ZXJmYWNlKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKS5lbnN1cmVDb250cm9sc01h
bmFnZXIoKTsKICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKTsKKworICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRJZCk7CiAjZW5kaWYKIH0KIAordm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKQor
eworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKTsKKyAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7
CisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOworI2VuZGlmCit9
CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUo
dWludDY0X3QgY29udGV4dElkKQogewogICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnJl
c2V0TWVkaWFTdGF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsNyArMzI0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGxldGVJbW1lZGlhdGVBY3Rpb25BbmltYXRpb24oKTsK
ICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRTaXplKENHU2l6ZSk7CiAgICAgdm9pZCBkaWRIYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZSgpOwotICAgIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uo
KTsKKyAgICB2b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lk
IHNldElnbm9yZXNOb25XaGVlbEV2ZW50cyhib29sKTsKICAgICBib29sIGlnbm9yZXNOb25XaGVl
bEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc05vbldoZWVsRXZlbnRzOyB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZp
c2lvbiAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzODksNyArMjM4OSw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGkKICAgICBtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRp
ZGF0ZSA9IGZhbHNlOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjppc1BsYXlpbmdNZWRpYURpZENo
YW5nZSgpCit2b2lkIFdlYlZpZXdJbXBsOjp2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgp
CiB7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKICAgICB1
cGRhdGVXZWJWaWV3SW1wbEFkZGl0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTk4ODQyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNyArMjExLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkSGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGUoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNob3dQbGF0Zm9ybUNvbnRleHRNZW51KE5TTWVudSAqLCBXZWJD
b3JlOjpJbnRQb2ludCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTk4ODQyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzc5LDkgKzc3OSw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEhhbmRsZUFjY2VwdGVk
Q2EKICAgICBtX2ltcGwtPmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKCkKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkKIHsKLSAgICBtX2ltcGwtPmlz
UGxheWluZ01lZGlhRGlkQ2hhbmdlKCk7CisgICAgbV9pbXBsLT52aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSgpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93UGxhdGZvcm1Db250
ZXh0TWVudShOU01lbnUgKm1lbnUsIEludFBvaW50IGxvY2F0aW9uKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTk4ODQyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NjAsNiArODYwLDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRVcFZpZGVvQ29udHJv
bHMKICAgICBtX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+c2V0VXBWaWRlb0NvbnRy
b2xzTWFuYWdlcih2aWRlb0VsZW1lbnQpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6Y2xl
YXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCit7CisgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyKCktPmNsZWFyVmlkZW9Db250cm9sc01hbmFnZXIoKTsKK30KKwogdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKG1vZGUgIT0gSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE5ODg0MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0NSw2ICsyNDUsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBib29sIHN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5h
Z2VyKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFy
VmlkZW9Db250cm9sc01hbmFnZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGVudGVyVmlkZW9GdWxs
c2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50Jikgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAkocmV2aXNp
b24gMTk4ODQyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQmKTsKICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVX
aXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgc2V0VXBW
aWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jik7CisgICAgdm9p
ZCBjbGVhclZpZGVvQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCShyZXZpc2lvbiAxOTg4NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM0NCw2ICszNDQsMTggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
ZXRVcFZpZAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y2xl
YXJWaWRlb0NvbnRyb2xzTWFuYWdlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgh
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92
ZUNsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOworICAgIG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYXJWaWRlb0NvbnRyb2xzTWFuYWdlcigp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCiB7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCg==
</data>
<flag name="review"
          id="299766"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>