<?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>66668</bug_id>
          
          <creation_ts>2011-08-22 06:16:25 -0700</creation_ts>
          <short_desc>[Qt][WK2] Split the QtWebPageProxy into PageClient and QtPageProxy</short_desc>
          <delta_ts>2011-12-02 05:38:18 -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>WebKit2</component>
          <version>528+ (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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Jesus Sanchez-Palencia">jesus</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454559</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-22 06:16:25 -0700</bug_when>
    <thetext>Currently, the QtWebPageProxy does too much by aggregating the calls back and forth between the Views and the Proxy. We should try to split this class into QtPageClient (interfacing to the viewinterface) and the page proxy (QtPageProxy?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454565</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-22 06:20:22 -0700</bug_when>
    <thetext>woot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509273</commentid>
    <comment_count>2</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-25 14:57:06 -0800</bug_when>
    <thetext>We are handling this on a Meta bug now.

In fact, we have extended the idea of this clean-up into splitting everything but the PageClient out of QtWebPageProxy. On a first moment, I actually worked on splitting it like that (PageClient and QtPageProxy) but in the end we had two strongly related &quot;monsters&quot;.

The new approach turned out to be the best solution so far.

*** This bug has been marked as a duplicate of bug 72943 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512919</commentid>
    <comment_count>3</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-12-01 11:15:03 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; *** This bug has been marked as a duplicate of bug 72943 ***

I&apos;m reopening this and marking it as a blocker of https://bugs.webkit.org/show_bug.cgi?id=72943 .

After another try, I believe I have a proposal for this that might make sense and I would like to gather your opinion on this. A patch proposal is coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513010</commentid>
    <comment_count>4</comment_count>
      <attachid>117465</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-12-01 12:51:30 -0800</bug_when>
    <thetext>Created attachment 117465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513613</commentid>
    <comment_count>5</comment_count>
      <attachid>117465</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-02 01:29:34 -0800</bug_when>
    <thetext>Comment on attachment 117465
Patch

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

&gt; Source/WebKit2/UIProcess/qt/QtPageClient.cpp:173
&gt; +    m_qtWebPageProxy-&gt;didReceiveMessageFromNavigatorQtObject(message);

QtWebPageProxy::didReceiveMessageFromNavigatorQtObject should probably be folded into this class altogether or this should just call directly the qml web view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513616</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-02 01:37:02 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Currently, the QtWebPageProxy does too much by aggregating the calls back and forth between the Views and the Proxy. We should try to split this class into QtPageClient (interfacing to the viewinterface) and the page proxy (QtPageProxy?).

Perhaps we can even avoid a QtPageProxy altogether. The state that I see in that class currently looks movable into the webview or into the concrete clients. So perhaps we can eliminate this proxy altogether in the future. Does that make sense? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513620</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-02 01:57:24 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Perhaps we can even avoid a QtPageProxy altogether. The state that I see in that class currently looks movable into the webview or into the concrete clients. So perhaps we can eliminate this proxy altogether in the future. Does that make sense? :)

QtWebPageProxy is an old artifact originating from QWKPage. Since you only have one view left, it probably makes sense to kill that class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513688</commentid>
    <comment_count>8</comment_count>
      <attachid>117465</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-02 05:11:38 -0800</bug_when>
    <thetext>Comment on attachment 117465
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513696</commentid>
    <comment_count>9</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-12-02 05:38:18 -0800</bug_when>
    <thetext>Committed r101788: &lt;http://trac.webkit.org/changeset/101788&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117465</attachid>
            <date>2011-12-01 12:51:30 -0800</date>
            <delta_ts>2011-12-02 05:11:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66668-20111201175110.patch</filename>
            <type>text/plain</type>
            <size>31352</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTVlNjEyNmRkNzgwYmVh
YThiYzhhMTQ0YjI3ZDVkNDZmOTlhMDllMy4uODBmNjAxZTRmMzIwNTNhYTc2ZDA0YzI4MWM4MTQw
N2M0NmI3NDhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDExLTEyLTAxICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdW1dLMl0gU3BsaXQgdGhlIFF0V2ViUGFnZVByb3h5IGludG8gUGFnZUNsaWVudCBh
bmQgUXRQYWdlUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY2NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3BsaXQgUXRQYWdlQ2xpZW50IG91dCBvZiBRdFdlYlBhZ2VQcm94eS4KKyAgICAgICAg
VGhpcyBjbGllbnQgd2lsbCBsaXZlIGluIFFRdWlja1dlYlZpZXdQcml2YXRlIGFuZCBjb21tdW5p
Y2F0ZSBkaXJlY3RseQorICAgICAgICB3aXRoIFF0V2ViUGFnZVByb3h5IGFuZCBRdFdlYlBhZ2VF
dmVudEhhbmRsZXIuIFRoZSBmdW5jdGlvbnMgdGhhdCBuZWVkCisgICAgICAgIGFueXRoaW5nIGVs
c2UgdGhhbiB0aGVzZSBlbnRpdGllcyB3aWxsIG5lZWQgdG8gY2FsbCB0aGUgcHJvcGVyIGltcGxl
bWVudGF0aW9uCisgICAgICAgIHRocm91Z2ggUXRXZWJQYWdlUHJveHkgaXRzZWxmLgorICAgICAg
ICBXaXRoIHRoaXMgd2UgaGF2ZSBhIGNsZWFyIHNlcGFyYXRpb24gYmV0d2VlbiBQYWdlQ2xpZW50
IGFuZCBQYWdlUHJveHksIGhhdmluZworICAgICAgICB0d28gd2VsbCBkZWZpbmVkIGFuZCBzZXBh
cmF0ZWQgZW50aXRpZXMgZm9yIGhvb2tpbmcgb3VyIGNsaWVudHMgd2l0aCBvdXIgQVBJIGxheWVy
IChRdFdlYlBhZ2VQcm94eSkKKyAgICAgICAgYW5kIGZvciBob29raW5nIHRoZSBXZWJQYWdlUHJv
eHkgd2l0aCBvdXIgY2xpZW50IGltcGxlbWVudGF0aW9ucyAoUXRQYWdlQ2xpZW50KS4KKyAgICAg
ICAgQXMgYSBwb3NpdGl2ZSBzaWRlLWVmZmVjdCB3ZSBoYXZlIGEgY2xlYW5lciBRdFdlYlBhZ2VQ
cm94eS4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVp
Y2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3X3BfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFF0UGFnZUNsaWVudDo6UXRQYWdlQ2xpZW50KToKKyAgICAgICAgKFF0UGFn
ZUNsaWVudDo6flF0UGFnZUNsaWVudCk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OmNyZWF0ZURy
YXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpzZXRWaWV3TmVlZHNEaXNw
bGF5KToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAg
ICAgICAoUXRQYWdlQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoUXRQYWdlQ2xp
ZW50OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpkaWRDaGFu
Z2VDb250ZW50c1NpemUpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpkaWRDaGFuZ2VWaWV3cG9y
dFByb3BlcnRpZXMpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpzdGFydERyYWcpOgorICAgICAg
ICAoUXRQYWdlQ2xpZW50OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoUXRQYWdl
Q2xpZW50OjpzZXRDdXJzb3IpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpzZXRDdXJzb3JIaWRk
ZW5VbnRpbE1vdXNlTW92ZXMpOgorICAgICAgICAoUXRQYWdlQ2xpZW50Ojp0b29sVGlwQ2hhbmdl
ZCk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgorICAgICAg
ICAoUXRQYWdlQ2xpZW50OjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CisgICAgICAgIChRdFBhZ2VD
bGllbnQ6OmNhblVuZG9SZWRvKToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6ZXhlY3V0ZVVuZG9S
ZWRvKToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAg
ICAgICAoUXRQYWdlQ2xpZW50Ojpjb252ZXJ0VG9Vc2VyU3BhY2UpOgorICAgICAgICAoUXRQYWdl
Q2xpZW50OjpzY3JlZW5Ub1dpbmRvdyk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OndpbmRvd1Rv
U2NyZWVuKToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgor
ICAgICAgICAoUXRQYWdlQ2xpZW50OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAg
KFF0UGFnZUNsaWVudDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKToKKyAgICAgICAgKFF0UGFn
ZUNsaWVudDo6ZGlkRmluZFpvb21hYmxlQXJlYSk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFF0UGFnZUNs
aWVudDo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6ZGlzcGxh
eVZpZXcpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpzY3JvbGxWaWV3KToKKyAgICAgICAgKFF0
UGFnZUNsaWVudDo6dmlld1NpemUpOgorICAgICAgICAoUXRQYWdlQ2xpZW50Ojppc1ZpZXdXaW5k
b3dBY3RpdmUpOgorICAgICAgICAoUXRQYWdlQ2xpZW50Ojppc1ZpZXdGb2N1c2VkKToKKyAgICAg
ICAgKFF0UGFnZUNsaWVudDo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6
OmlzVmlld0luV2luZG93KToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6ZW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OmV4aXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFF0UGFnZUNsaWVudDo6cGFnZUNsb3NlZCk6CisgICAgICAgIChR
dFBhZ2VDbGllbnQ6OmRvbmVXaXRoS2V5RXZlbnQpOgorICAgICAgICAoUXRQYWdlQ2xpZW50Ojpz
ZXRGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6ZGlkQ29tbWl0TG9hZEZv
ck1haW5GcmFtZSk6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmdEYXRh
Rm9yQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpjdXN0b21S
ZXByZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpzZXRDdXN0
b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAgICAoUXRQYWdlQ2xpZW50OjpkaWRD
aGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6Zmlu
ZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoUXRQYWdlQ2xpZW50Ojpj
b3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFF0UGFn
ZUNsaWVudDo6c2V0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFF0UGFnZUNsaWVudDo6c2V0UGFn
ZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKwogMjAxMS0xMi0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXN0b3JlIFdl
YktpdDIgU2FmYXJpIG1lbnUgaXRlbXMgYWZ0ZXIgY2FwYWJpbGl0aWVzIHJlZmFjdG9yaW5nIHJl
Z3Jlc3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCA0YjdmY2U5NDFlZmM5NjNlYmJkMzgyNDY1ZjY1NjRi
MWNlNWM4ZWFiLi4xYjYzYTI3ZDYzY2I1M2QzMzQwODZkY2JmZjU2ZjI3MzBmNDc2NDFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKQEAgLTI1Miw2ICsyNTIsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmggXAorICAgIFVJUHJvY2Vzcy9xdC9R
dFBhZ2VDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5oIFwKICAgICBVSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaCBcCkBAIC01NjQsNiArNTY1LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRE
aWFsb2dSdW5uZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3Bw
IFwKKyAgICBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9s
aWN5Q2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApp
bmRleCBmMGZhNjY4YTFmYzBmNmM4ZWM4NWEzMjJiYWE4MGFjYTc0NWQ2MDBkLi5iZjhiZjk0OTM5
MDA2MmRkOTRlYjM0YjdhZGJlMmFhODYxZDNiZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTQ5LDggKzQ5LDEwIEBAIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2
aWV3cG9ydCwgV0tDb250ZXh0UmVmCiAgICAgUU9iamVjdDo6Y29ubmVjdCh2aWV3cG9ydCwgU0lH
TkFMKHZpc2libGVDaGFuZ2VkKCkpLCB2aWV3cG9ydCwgU0xPVChfcV9vblZpc2libGVDaGFuZ2Vk
KCkpKTsKICAgICBwYWdlVmlldy5yZXNldChuZXcgUVF1aWNrV2ViUGFnZSh2aWV3cG9ydCkpOwog
CisgICAgcGFnZUNsaWVudC5yZXNldChuZXcgUXRQYWdlQ2xpZW50KCkpOworCiAgICAgUVF1aWNr
V2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRhdGEoKS0+
ZDsKLSAgICBzZXRQYWdlUHJveHkobmV3IFF0V2ViUGFnZVByb3h5KHBhZ2VWaWV3LmRhdGEoKSwg
cV9wdHIsIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikpOworICAgIHNldFBhZ2VQcm94eShuZXcg
UXRXZWJQYWdlUHJveHkocGFnZVZpZXcuZGF0YSgpLCBxX3B0ciwgcGFnZUNsaWVudC5kYXRhKCks
IGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikpOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFn
ZVByb3h5KHBhZ2VQcm94eS5kYXRhKCkpOwogCiAgICAgcGFnZUxvYWRDbGllbnQucmVzZXQobmV3
IFF0V2ViUGFnZUxvYWRDbGllbnQocGFnZVByb3h5LT5wYWdlUmVmKCksIHFfcHRyKSk7CkBAIC02
Miw2ICs2NCw5IEBAIFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShR
UXVpY2tXZWJWaWV3KiB2aWV3cG9ydCwgV0tDb250ZXh0UmVmCiAgICAgc2V0VXNlVHJhZGl0aW9u
YWxEZXNrdG9wQmVoYXZpb3VyKGZhbHNlKTsKICAgICBRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpn
ZXQocGFnZVByb3h5LT5wcmVmZXJlbmNlcygpKS0+c2V0QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNl
c1ByaXZhdGU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkLCB0cnVlKTsKIAorICAgIHBh
Z2VDbGllbnQtPnNldEV2ZW50SGFuZGxlcihldmVudEhhbmRsZXIuZGF0YSgpKTsKKyAgICBwYWdl
Q2xpZW50LT5zZXRQYWdlUHJveHkocGFnZVByb3h5LmRhdGEoKSk7CisKICAgICAvLyBDcmVhdGVz
IGEgcGFnZSB3aXRoIHRoZSBwYWdlIGNyZWF0aW9uIHBhcmFtZXRlcnMuCiAgICAgcGFnZVByb3h5
LT5pbml0KGV2ZW50SGFuZGxlci5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IGU2Y2E1NTNjMDdkNDM0
YzA0MGNhNGIyM2VlMTFkNWJhNDgxZjUzZDQuLjc5OTNmMmU0OGI4YWRjN2ZmODdhMDZiZWEwZTUz
MDI0ZmExMjNkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgcXF1aWNrd2Vi
dmlld19wX3BfaAogI2RlZmluZSBxcXVpY2t3ZWJ2aWV3X3BfcF9oCiAKKyNpbmNsdWRlICJRdFBh
Z2VDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VMb2Fk
Q2xpZW50LmgiCkBAIC0xMTIsNiArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Vmll
d0luQXR0YWNoZWRQcm9wZXJ0aWVzKFFPYmplY3QqKTsKIAorICAgIFFTY29wZWRQb2ludGVyPFF0
UGFnZUNsaWVudD4gcGFnZUNsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxRdFdlYlBhZ2VFdmVu
dEhhbmRsZXI+IGV2ZW50SGFuZGxlcjsKIAogICAgIFFTY29wZWRQb2ludGVyPFF0V2ViUGFnZUxv
YWRDbGllbnQ+IHBhZ2VMb2FkQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRQYWdlQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGJhOGMxZWM3Y2U4NzgxMDQ0NDRlNWFlNTcy
MTllMzkzMmY3MjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0UGFnZUNsaWVudC5jcHAKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRQYWdlQ2xpZW50LmgiCisKKyNpbmNs
dWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5o
IgorI2luY2x1ZGUgIlF0V2ViVW5kb0NvbW1hbmQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dVByb3h5UXQuaCIKKyNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUG9wdXBNZW51UHJveHlRdERlc2t0b3AuaCIKKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+
CisjaW5jbHVkZSA8UVVuZG9TdGFjaz4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitRdFBhZ2VDbGllbnQ6OlF0UGFn
ZUNsaWVudCgpCisgICAgOiBtX3F0V2ViUGFnZVByb3h5KDApCit7Cit9CisKK1F0UGFnZUNsaWVu
dDo6flF0UGFnZUNsaWVudCgpCit7Cit9CisKK1Bhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4g
UXRQYWdlQ2xpZW50OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKK3sKKyAgICByZXR1cm4gbV9x
dFdlYlBhZ2VQcm94eS0+Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOworfQorCit2b2lkIFF0UGFn
ZUNsaWVudDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQoreworICAgIG1fcXRXZWJQYWdlUHJveHktPnNldFZpZXdOZWVkc0Rpc3BsYXkocmVjdCk7Cit9
CisKK3ZvaWQgUXRQYWdlQ2xpZW50OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2lu
dCYgcG9zKQoreworICAgIG1fcXRXZWJQYWdlUHJveHktPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBv
cyk7Cit9CisKK3ZvaWQgUXRQYWdlQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goKQoreworICAgIG1f
cXRXZWJQYWdlUHJveHktPnByb2Nlc3NEaWRDcmFzaCgpOworfQorCit2b2lkIFF0UGFnZUNsaWVu
dDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKK3sKKyAgICBtX3F0V2ViUGFnZVByb3h5LT5kaWRSZWxh
dW5jaFByb2Nlc3MoKTsKK30KKwordm9pZCBRdFBhZ2VDbGllbnQ6OmRpZENoYW5nZUNvbnRlbnRz
U2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQoreworICAgIG1fcXRXZWJQYWdlUHJveHktPmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShuZXdTaXplKTsKK30KKwordm9pZCBRdFBhZ2VDbGllbnQ6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyYgYXJncykKK3sKKyAgICBtX3F0V2ViUGFnZVByb3h5LT5kaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoYXJncyk7Cit9CisKK3ZvaWQgUXRQYWdlQ2xpZW50OjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJh
Z0ltYWdlKQoreworICAgIG1fcXRXZWJQYWdlUHJveHktPnN0YXJ0RHJhZyhkcmFnRGF0YSwgZHJh
Z0ltYWdlKTsKK30KKwordm9pZCBRdFBhZ2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVxdWVzdChE
b3dubG9hZFByb3h5KiBkb3dubG9hZCkKK3sKKyAgICBtX3F0V2ViUGFnZVByb3h5LT5oYW5kbGVE
b3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworfQorCit2b2lkIFF0UGFnZUNsaWVudDo6c2V0Q3Vy
c29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQoreworICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGEgdGVtcG9yYXJ5IGZpeCB1bnRpbCB3ZSBnZXQgY3Vyc29yIHN1cHBvcnQgaW4gUU1MIGl0
ZW1zLgorICAgIFFHdWlBcHBsaWNhdGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoKmN1cnNvci5wbGF0
Zm9ybUN1cnNvcigpKTsKK30KKwordm9pZCBRdFBhZ2VDbGllbnQ6OnNldEN1cnNvckhpZGRlblVu
dGlsTW91c2VNb3Zlcyhib29sIGhpZGRlblVudGlsTW91c2VNb3ZlcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFF0UGFnZUNsaWVudDo6dG9vbFRpcENoYW5nZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sdGlwKQoreworICAgIC8vIFRoZXJlIGlzIG5v
dCB5ZXQgYW55IFVJIGRlZmluZWQgZm9yIHRoZSB0b29sdGlwcyBmb3IgbW9iaWxlIHNvIHdlIGln
bm9yZSB0aGUgY2hhbmdlLgorfQorCit2b2lkIFF0UGFnZUNsaWVudDo6cmVnaXN0ZXJFZGl0Q29t
bWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQoreworICAgIG1fcXRXZWJQYWdlUHJveHktPnJlZ2lz
dGVyRWRpdENvbW1hbmQoY29tbWFuZCwgdW5kb09yUmVkbyk7Cit9CisKK3ZvaWQgUXRQYWdlQ2xp
ZW50OjpjbGVhckFsbEVkaXRDb21tYW5kcygpCit7CisgICAgbV9xdFdlYlBhZ2VQcm94eS0+Y2xl
YXJBbGxFZGl0Q29tbWFuZHMoKTsKK30KKworYm9vbCBRdFBhZ2VDbGllbnQ6OmNhblVuZG9SZWRv
KFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQoreworICAgIHJldHVybiBtX3F0
V2ViUGFnZVByb3h5LT5jYW5VbmRvUmVkbyh1bmRvT3JSZWRvKTsKK30KKwordm9pZCBRdFBhZ2VD
bGllbnQ6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVk
bykKK3sKKyAgICBtX3F0V2ViUGFnZVByb3h5LT5leGVjdXRlVW5kb1JlZG8odW5kb09yUmVkbyk7
Cit9CisKK0Zsb2F0UmVjdCBRdFBhZ2VDbGllbnQ6OmNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdDsKK30KKworRmxvYXRSZWN0IFF0
UGFnZUNsaWVudDo6Y29udmVydFRvVXNlclNwYWNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sK
KyAgICByZXR1cm4gcmVjdDsKK30KKworSW50UG9pbnQgUXRQYWdlQ2xpZW50OjpzY3JlZW5Ub1dp
bmRvdyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHBvaW50OworfQorCitJ
bnRSZWN0IFF0UGFnZUNsaWVudDo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICByZXR1cm4gcmVjdDsKK30KKworUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
UXRQYWdlQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSkKK3sKKyAgICByZXR1cm4gbV9xdFdlYlBhZ2VQcm94eS0+Y3JlYXRlUG9wdXBNZW51UHJv
eHkod2ViUGFnZVByb3h5KTsKK30KKworUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBR
dFBhZ2VDbGllbnQ6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAg
ICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eVF0OjpjcmVhdGUobV9xdFdlYlBhZ2VQcm94eSk7
Cit9CisKK3ZvaWQgUXRQYWdlQ2xpZW50OjpmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3Qg
VmVjdG9yPEludFJlY3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFF0
UGFnZUNsaWVudDo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBJbnRQb2ludCYgdGFyZ2V0LCBj
b25zdCBJbnRSZWN0JiBhcmVhKQoreworICAgIEFTU0VSVChtX2V2ZW50SGFuZGxlcik7CisgICAg
bV9ldmVudEhhbmRsZXItPmRpZEZpbmRab29tYWJsZUFyZWEodGFyZ2V0LCBhcmVhKTsKK30KKwor
dm9pZCBRdFBhZ2VDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3F0V2ViUGFnZVByb3h5LT5kaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChtZXNzYWdlKTsKK30KKworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCit2b2lkIFF0UGFnZUNsaWVudDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sK
KyAgICBBU1NFUlQobV9ldmVudEhhbmRsZXIpOworICAgIG1fZXZlbnRIYW5kbGVyLT5kb25lV2l0
aFRvdWNoRXZlbnQoZXZlbnQsIHdhc0V2ZW50SGFuZGxlZCk7Cit9CisjZW5kaWYKKwordm9pZCBR
dFBhZ2VDbGllbnQ6OmRpc3BsYXlWaWV3KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgor
fQorCit2b2lkIFF0UGFnZUNsaWVudDo6c2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKworV2ViQ29yZTo6SW50U2l6ZSBRdFBhZ2VDbGll
bnQ6OnZpZXdTaXplKCkKK3sKKyAgICByZXR1cm4gbV9xdFdlYlBhZ2VQcm94eS0+dmlld1NpemUo
KTsKK30KKworYm9vbCBRdFBhZ2VDbGllbnQ6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBzY2VuZSBncmFwaCBkb2VzIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGJl
aW5nIGFjdGl2ZSBvciBub3Qgd2hlbiB0aGlzIHdhcyB3cml0dGVuLgorICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFF0UGFnZUNsaWVudDo6aXNWaWV3Rm9jdXNlZCgpCit7CisgICAgaWYgKCFt
X3F0V2ViUGFnZVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9x
dFdlYlBhZ2VQcm94eS0+aXNWaWV3Rm9jdXNlZCgpOworfQorCitib29sIFF0UGFnZUNsaWVudDo6
aXNWaWV3VmlzaWJsZSgpCit7CisgICAgaWYgKCFtX3F0V2ViUGFnZVByb3h5KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9xdFdlYlBhZ2VQcm94eS0+aXNWaWV3VmlzaWJs
ZSgpOworfQorCitib29sIFF0UGFnZUNsaWVudDo6aXNWaWV3SW5XaW5kb3coKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUXRQYWdlQ2xp
ZW50OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgUXRQYWdlQ2xpZW50
OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBh
Z2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOWU4NDc4YTU2NjFlZDZhYzcyMzg2OTFmZmVhMjJhYjY4Zjg2ZmIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5o
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0UGFn
ZUNsaWVudF9oCisjZGVmaW5lIFF0UGFnZUNsaWVudF9oCisKKyNpbmNsdWRlICJEcmF3aW5nQXJl
YVByb3h5LmgiCisjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgIlBhZ2VD
bGllbnQuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJWaWV3cG9y
dEFyZ3VtZW50cy5oIgorCitjbGFzcyBRdFdlYlBhZ2VFdmVudEhhbmRsZXI7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIFF0UGFnZUNsaWVudCA6IHB1YmxpYyBXZWJLaXQ6OlBh
Z2VDbGllbnQgeworcHVibGljOgorICAgIFF0UGFnZUNsaWVudCgpOworICAgIH5RdFBhZ2VDbGll
bnQoKTsKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVE
cmF3aW5nQXJlYVByb3h5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5Vmlldygp
OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNj
cm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCk7CisgICAgdmlydHVhbCBib29sIGlzVmll
d1dpbmRvd0FjdGl2ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCk7CisgICAg
dmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3SW5X
aW5kb3coKTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2
b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpOworICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsK
KyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lk
IHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlQ2xvc2Vk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNvbnN0
IFdlYkNvcmU6OkRyYWdEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFn
ZSk7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOworICAgIHZpcnR1
YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOworICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRv
UmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
VW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JlZW5Ub1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0
TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNh
dG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRl
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShib29sIHVz
ZUN1c3RvbVJlcHJlc2VudGF0aW9uKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJikgeyB9CisgICAgdmlydHVhbCBk
b3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCkgeyByZXR1cm4gMTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNv
bnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CisgICAgdmlydHVhbCB2b2lk
IGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY291bnRT
dHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0
aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRv
clF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9h
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSopOworCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisjZW5kaWYKKworICAgIHZvaWQgc2V0RXZlbnRI
YW5kbGVyKFF0V2ViUGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKSB7IG1fZXZlbnRIYW5k
bGVyID0gZXZlbnRIYW5kbGVyOyB9CisgICAgdm9pZCBzZXRQYWdlUHJveHkoUXRXZWJQYWdlUHJv
eHkqIHBhZ2VQcm94eSkgeyBtX3F0V2ViUGFnZVByb3h5ID0gcGFnZVByb3h5OyB9CisKK3ByaXZh
dGU6CisgICAgUXRXZWJQYWdlUHJveHkqIG1fcXRXZWJQYWdlUHJveHk7CisgICAgUXRXZWJQYWdl
RXZlbnRIYW5kbGVyKiBtX2V2ZW50SGFuZGxlcjsKK307CisKKyNlbmRpZiAvKiBRdFBhZ2VDbGll
bnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNGFjMDRmNGRmZGJlYjg4NDRhNDQzMTM1NmEyN2JlMDNmM2FiNGY2Mi4uYWIxZGI0
N2Y0ZjhhNmM4NTNhZmZiNjgzMDA2NGI1MWE3MjY2OTBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5j
bHVkZSAicXF1aWNrd2Vidmlld19wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIK
ICNpbmNsdWRlICJxcXVpY2t3ZWJwYWdlX3AuaCIKLSNpbmNsdWRlICJRdFdlYkVycm9yLmgiCiAj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCiAjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRl
bV9wX3AuaCIKICNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXNfcC5oIgpAQCAtMzYsMTAgKzM1LDgg
QEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgInF3a2hpc3Rv
cnkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5X3AuaCIKLSNpbmNsdWRlICJGaW5kSW5kaWNhdG9y
LmgiCi0jaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKKyNpbmNsdWRlICJRdFBhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJR
dFdlYlVuZG9Db21tYW5kLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCkBAIC01
MCwxNiArNDcsOSBAQAogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0
LmgiCiAjaW5jbHVkZSA8UURyYWc+Ci0jaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgotI2luY2x1
ZGUgPFFKU0VuZ2luZT4KICNpbmNsdWRlIDxRTWltZURhdGE+Ci0jaW5jbHVkZSA8UVN0eWxlSGlu
dHM+CiAjaW5jbHVkZSA8UVVuZG9TdGFjaz4KLSNpbmNsdWRlIDxRdERlYnVnPgotI2luY2x1ZGUg
PFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3Vw
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgpAQCAtNjcsMTQgKzU3LDE0IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVF0
V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShRUXVpY2tXZWJQYWdlKiBxbWxXZWJQYWdlLCBR
UXVpY2tXZWJWaWV3KiBxbWxXZWJWaWV3LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFFR
dWlja1dlYlBhZ2UqIHFtbFdlYlBhZ2UsIFFRdWlja1dlYlZpZXcqIHFtbFdlYlZpZXcsIFF0UGFn
ZUNsaWVudCAqcGFnZUNsaWVudCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1fcW1sV2ViUGFnZShxbWxXZWJQYWdlKQogICAgICwg
bV9xbWxXZWJWaWV3KHFtbFdlYlZpZXcpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dFJlZiA/IFF0
V2ViQ29udGV4dDo6Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSkgOiBRdFdlYkNvbnRleHQ6OmRl
ZmF1bHRDb250ZXh0KCkpCiAgICAgLCBtX3VuZG9TdGFjayhhZG9wdFB0cihuZXcgUVVuZG9TdGFj
ayh0aGlzKSkpCiAgICAgLCBtX25hdmlnYXRvclF0T2JqZWN0RW5hYmxlZChmYWxzZSkKIHsKLSAg
ICBtX3dlYlBhZ2VQcm94eSA9IG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCB0b0ltcGwo
cGFnZUdyb3VwUmVmKSk7CisgICAgbV93ZWJQYWdlUHJveHkgPSBtX2NvbnRleHQtPmNyZWF0ZVdl
YlBhZ2UocGFnZUNsaWVudCwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwogICAgIG1faGlzdG9yeSA9
IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMsIG1fd2ViUGFnZVByb3h5LT5i
YWNrRm9yd2FyZExpc3QoKSk7CiB9CiAKQEAgLTEyMiw0MyArMTEyLDE2IEBAIHZvaWQgUXRXZWJQ
YWdlUHJveHk6OmhpZGVDb250ZXh0TWVudSgpCiAgICAgICAgIGFjdGl2ZU1lbnUtPmhpZGUoKTsK
IH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNv
ciYgY3Vyc29yKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGZpeCB1bnRp
bCB3ZSBnZXQgY3Vyc29yIHN1cHBvcnQgaW4gUU1MIGl0ZW1zLgotICAgIFFHdWlBcHBsaWNhdGlv
bjo6c2V0T3ZlcnJpZGVDdXJzb3IoKmN1cnNvci5wbGF0Zm9ybUN1cnNvcigpKTsKLX0KLQotdm9p
ZCBRdFdlYlBhZ2VQcm94eTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlk
ZGVuVW50aWxNb3VzZU1vdmVzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQg
UXRXZWJQYWdlUHJveHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpCiB7CiAgICAgbV9xbWxXZWJQYWdlLT51cGRhdGUoKTsKIH0KIAotdm9pZCBRdFdlYlBhZ2VQ
cm94eTo6ZGlzcGxheVZpZXcoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi19Ci0KLXZv
aWQgUXRXZWJQYWdlUHJveHk6OnNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQotewotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCi19Ci0KIFdlYkNvcmU6OkludFNpemUgUXRXZWJQYWdlUHJveHk6
OnZpZXdTaXplKCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZShtX3FtbFdlYlBhZ2Ut
PndpZHRoKCksIG1fcW1sV2ViUGFnZS0+aGVpZ2h0KCkpOwogfQogCi1ib29sIFF0V2ViUGFnZVBy
b3h5Ojppc1ZpZXdXaW5kb3dBY3RpdmUoKQotewotICAgIC8vIEZJWE1FOiBUaGUgc2NlbmUgZ3Jh
cGggZG9lcyBub3QgaGF2ZSB0aGUgY29uY2VwdCBvZiBiZWluZyBhY3RpdmUgb3Igbm90IHdoZW4g
dGhpcyB3YXMgd3JpdHRlbi4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBRdFdlYlBhZ2VQ
cm94eTo6aXNWaWV3Rm9jdXNlZCgpCiB7CiAgICAgcmV0dXJuIG1fcW1sV2ViVmlldy0+aGFzRm9j
dXMoKTsKQEAgLTE2OSwyMiArMTMyLDYgQEAgYm9vbCBRdFdlYlBhZ2VQcm94eTo6aXNWaWV3Vmlz
aWJsZSgpCiAgICAgcmV0dXJuIG1fcW1sV2ViVmlldy0+aXNWaXNpYmxlKCkgJiYgbV9xbWxXZWJQ
YWdlLT5pc1Zpc2libGUoKTsKIH0KIAotYm9vbCBRdFdlYlBhZ2VQcm94eTo6aXNWaWV3SW5XaW5k
b3coKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQgUXRXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQot
dm9pZCBRdFdlYlBhZ2VQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotfQotCiB2b2lkIFF0V2ViUGFnZVByb3h5OjpwYWdl
RGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zKQogewogICAgIG1fcW1sV2ViVmll
dy0+ZF9mdW5jKCktPnNjcm9sbFBvc2l0aW9uUmVxdWVzdGVkKHBvcyk7CkBAIC0yMDAsMTEgKzE0
Nyw2IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50CiAgICAgbV9xbWxXZWJWaWV3LT5kX2Z1bmMo
KS0+ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCi12b2lkIFF0V2ViUGFn
ZVByb3h5Ojp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rv
b2x0aXApCi17Ci0gICAgLy8gVGhlcmUgaXMgbm90IHlldCBhbnkgVUkgZGVmaW5lZCBmb3IgdGhl
IHRvb2x0aXBzIGZvciBtb2JpbGUgc28gd2UgaWdub3JlIHRoZSBjaGFuZ2UuCi19Ci0KIHZvaWQg
UXRXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29t
bWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykK
IHsKICAgICBpZiAodW5kb09yUmVkbyA9PSBXZWJQYWdlUHJveHk6OlVuZG8pIHsKQEAgLTIzNSw3
MiArMTc3LDIwIEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdl
UHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKICAgICAgICAgbV91bmRvU3RhY2stPnJlZG8o
KTsKIH0KIAotRmxvYXRSZWN0IFF0V2ViUGFnZVByb3h5Ojpjb252ZXJ0VG9EZXZpY2VTcGFjZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgcmV0dXJuIHJlY3Q7Ci19Ci0KLUludFBvaW50
IFF0V2ViUGFnZVByb3h5OjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCi17
Ci0gICAgcmV0dXJuIHBvaW50OwotfQotCi1JbnRSZWN0IFF0V2ViUGFnZVByb3h5Ojp3aW5kb3dU
b1NjcmVlbihjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIHJldHVybiByZWN0OwotfQotCi1G
bG9hdFJlY3QgUXRXZWJQYWdlUHJveHk6OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCi17Ci0gICAgcmV0dXJuIHJlY3Q7Ci19Ci0KIHZvaWQgUXRXZWJQYWdlUHJveHk6
OnNlbGVjdGlvbkNoYW5nZWQoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCkKIHsKIH0KIAotdm9pZCBR
dFdlYlBhZ2VQcm94eTo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCkKLXsKLX0KLQogUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUXRXZWJQ
YWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgcmV0
dXJuIFdlYlBvcHVwTWVudVByb3h5UXREZXNrdG9wOjpjcmVhdGUobV93ZWJQYWdlUHJveHkuZ2V0
KCksIG1fcW1sV2ViVmlldyk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
UXRXZWJQYWdlUHJveHk6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKLXsK
LSAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eVF0OjpjcmVhdGUodGhpcyk7Ci19Ci0KLXZv
aWQgUXRXZWJQYWdlUHJveHk6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpCi17Ci19Ci0KLXZvaWQgUXRXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoYm9vbCB1c2VDdXN0b21SZXByZXNlbnRh
dGlvbikKLXsKLX0KLQotdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJikKLXsKLX0KLQotdm9pZCBRdFdlYlBhZ2VQcm94
eTo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogV0tQYWdlUmVmIFF0V2ViUGFnZVByb3h5OjpwYWdl
UmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gdG9BUEkobV93ZWJQYWdlUHJveHkuZ2V0KCkpOzsK
IH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBJbnRQ
b2ludCYgdGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBhcmVhKQotewotICAgIEFTU0VSVChtX2V2ZW50
SGFuZGxlcik7Ci0gICAgbV9ldmVudEhhbmRsZXItPmRpZEZpbmRab29tYWJsZUFyZWEodGFyZ2V0
LCBhcmVhKTsKLX0KLQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
TmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIFFWYXJpYW50
TWFwIHZhcmlhbnRNYXA7CkBAIC01MzYsMTQgKzQyNiw2IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6
OnJlbmRlclRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmCiAgICAgICAgIGRyYXdpbmdBcmVhLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zv
cm0sIG9wYWNpdHkpOwogfQogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgUXRXZWJQ
YWdlUHJveHk6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBl
dmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCi17Ci0gICAgQVNTRVJUKG1fZXZlbnRIYW5kbGVy
KTsKLSAgICBtX2V2ZW50SGFuZGxlci0+ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50LCB3YXNFdmVu
dEhhbmRsZWQpOwotfQotI2VuZGlmCi0KIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNldFZpc2libGVD
b250ZW50UmVjdEFuZFNjYWxlKGNvbnN0IFFSZWN0RiYgdmlzaWJsZUNvbnRlbnRSZWN0LCBmbG9h
dCBzY2FsZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCAzMzE3MDQ0
NTRlM2M5YzFmZDA0MTI2NWIwODY4MTE4ZTE5NGI0MzEyLi4yZTZiZTU2MmFlMTM5YjBjNjJmMDE2
ZTczMGU3MDdiZjI1MDRmM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuaApAQCAtMjIsMTQgKzIyLDExIEBACiAjZGVmaW5lIFF0V2ViUGFnZVByb3h5
X2gKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlICJMYXllclRyZWVD
b250ZXh0LmgiCi0jaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlF0V2ViQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CiAjaW5jbHVkZSA8UU1lbnU+CiAjaW5jbHVk
ZSA8UVNoYXJlZFBvaW50ZXI+CiAKQEAgLTM3LDYgKzM0LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNF
CiBjbGFzcyBRVW5kb1N0YWNrOwogUVRfRU5EX05BTUVTUEFDRQogCitjbGFzcyBRdFBhZ2VDbGll
bnQ7CiBjbGFzcyBRUXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1aWNrV2ViVmlldzsKIGNsYXNzIFF0
V2ViRXJyb3I7CkBAIC01Miw3ICs1MCw3IEBAIGNsYXNzIFF0V2ViQ29udGV4dDsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIC8vIEZJWE1FOiBuZWVkcyBmb2N1cyBpbi9vdXQsIHdpbmRvdyBh
Y3RpdmF0aW9uLCBzdXBwb3J0IHRocm91Z2ggdmlld1N0YXRlRGlkQ2hhbmdlKCkuCi1jbGFzcyBR
dFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRT2JqZWN0LCBXZWJLaXQ6OlBhZ2VDbGllbnQgeworY2xh
c3MgUXRXZWJQYWdlUHJveHkgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIAogcHVi
bGljOgpAQCAtNzAsNjYgKzY4LDMzIEBAIHB1YmxpYzoKICAgICAgICAgV2ViQWN0aW9uQ291bnQK
ICAgICB9OwogCi0gICAgUXRXZWJQYWdlUHJveHkoUVF1aWNrV2ViUGFnZSosIFFRdWlja1dlYlZp
ZXcqLCBXS0NvbnRleHRSZWYgPSAwLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFF0V2ViUGFn
ZVByb3h5KFFRdWlja1dlYlBhZ2UqLCBRUXVpY2tXZWJWaWV3KiwgUXRQYWdlQ2xpZW50KiwgV0tD
b250ZXh0UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKICAgICB+UXRXZWJQYWdlUHJveHko
KTsKIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3
aW5nQXJlYVByb3h5KCk7Ci0KLSAgICAvLyBQYWdlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwbGF5VmlldygpOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bE9mZnNldCk7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIGlz
Vmlld0ZvY3VzZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCk7Ci0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5j
aFByb2Nlc3MoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9y
dFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmLCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29y
KGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRk
ZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCBoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOwotICAgIHZpcnR1
YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxX
ZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6VW5kb09y
UmVkbyk7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7Ci0gICAgdmly
dHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7Ci0gICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZl
cnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0
IFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sLCBib29sLCBib29sLCBib29s
KTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZElu
ZGljYXRvcihQYXNzUmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwg
Ym9vbCBhbmltYXRlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lKGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmKTsKLSAgICB2aXJ0
dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoKSB7IHJldHVybiAxOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3Vi
bGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1l
KCkgY29uc3QgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmxhc2hCYWNraW5nU3RvcmVVcGRhdGVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgdXBkYXRlUmVjdHMpOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwg
RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJv
bU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOworICAgIFBhc3NPd25QdHI8RHJhd2lu
Z0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOworCisgICAgdm9pZCBzZXRWaWV3
TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICBXZWJDb3JlOjpJbnRT
aXplIHZpZXdTaXplKCk7CisgICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCk7CisgICAgYm9vbCBpc1Zp
ZXdWaXNpYmxlKCk7CisKKyAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CisgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICB2b2lkIGRp
ZFJlbGF1bmNoUHJvY2VzcygpOworCisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CisKKyAgICB2b2lkIHN0YXJ0
RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBkcmFnSW1hZ2UpOworICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YktpdDo6V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYktpdDo6V2ViUGFnZVByb3h5OjpVbmRvT3JS
ZWRvKTsKKyAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CisgICAgYm9vbCBjYW5VbmRv
UmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOworICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CisKKyAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQo
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7CisgICAgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVw
TWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBT
dHJpbmcmKTsKIAogICAgIGJvb2wgY2FuR29CYWNrKCkgY29uc3Q7CiAgICAgdm9pZCBnb0JhY2so
KTsKQEAgLTIwMiw3ICsxNjcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisgICAgdm9pZCBk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZl
bnRIYW5kbGVkKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPFF0V2ViQ29udGV4dD4gbV9jb250ZXh0
Owo=
</data>
<flag name="review"
          id="116904"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>