<?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>21594</bug_id>
          
          <creation_ts>2008-10-14 12:23:41 -0700</creation_ts>
          <short_desc>[Gtk] Use GOwnPtr for code that needs it</short_desc>
          <delta_ts>2010-09-15 20:03:13 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39377</dependson>
    
    <dependson>45550</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan Alonzo">jmalonzo</reporter>
          <assigned_to name="Marco Barisione">marco.barisione</assigned_to>
          <cc>abarth</cc>
    
    <cc>diegoe</cc>
    
    <cc>eric</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>95330</commentid>
    <comment_count>0</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-10-14 12:23:41 -0700</bug_when>
    <thetext>We need to start moving stuff to GOwnPtr.

GOwnPtr bug: https://bugs.webkit.org/show_bug.cgi?id=20483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95352</commentid>
    <comment_count>1</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-10-14 13:47:16 -0700</bug_when>
    <thetext>I already have an almost finished patch, I will submit it when also GRefPtr lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102192</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Butenko">a.butenka</who>
    <bug_when>2008-12-10 18:14:29 -0800</bug_when>
    <thetext>#20483 seems already landed. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102253</commentid>
    <comment_count>3</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-12-11 11:13:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; #20483 seems already landed. 
&gt; 

Yes, and we need to use it. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116390</commentid>
    <comment_count>4</comment_count>
    <who name="Diego Escalante Urrelo">diegoe</who>
    <bug_when>2009-04-02 20:56:25 -0700</bug_when>
    <thetext>Marco?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224125</commentid>
    <comment_count>5</comment_count>
      <attachid>55744</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-11 13:30:20 -0700</bug_when>
    <thetext>Created attachment 55744
Convert many uses of raw pointers to GRefPtr and GOwnPtr in WebKitWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224525</commentid>
    <comment_count>6</comment_count>
      <attachid>55744</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-12 04:58:35 -0700</bug_when>
    <thetext>Comment on attachment 55744
Convert many uses of raw pointers to GRefPtr and GOwnPtr in WebKitWebView

&gt;     if (priv-&gt;currentMenu) {
&gt;-        GtkMenu* menu = priv-&gt;currentMenu;
&gt;-        priv-&gt;currentMenu = 0;
&gt;+        GRefPtr&lt;GtkMenu&gt; menu(priv-&gt;currentMenu);
&gt;+        priv-&gt;currentMenu.clear();
&gt; 
&gt;-        gtk_menu_popdown(menu);
&gt;-        g_object_unref(menu);
&gt;+        gtk_menu_popdown(menu.get());
&gt;     }

Couldn&apos;t you just do an adoptGRef and get rid of the .clear() call?


 &gt;-    if (hadj)
&gt;-        g_object_ref(hadj);
&gt;-    if (vadj)
&gt;-        g_object_ref(vadj);
&gt;-
&gt;     WebKitWebViewPrivate* priv = webView-&gt;priv;
&gt;-
&gt;-    if (priv-&gt;horizontalAdjustment)
&gt;-        g_object_unref(priv-&gt;horizontalAdjustment);
&gt;-    if (priv-&gt;verticalAdjustment)
&gt;-        g_object_unref(priv-&gt;verticalAdjustment);
&gt;-
&gt;     priv-&gt;horizontalAdjustment = hadj;
&gt;     priv-&gt;verticalAdjustment = vadj;

This is so full of win I want to cry.

r=me, you can change the thing I pointed out if it makes sense to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224660</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 09:05:50 -0700</bug_when>
    <thetext>(In reply to comment #6)

Thanks for the review. :)

&gt; (From update of attachment 55744 [details])
&gt; &gt;     if (priv-&gt;currentMenu) {
&gt; &gt;-        GtkMenu* menu = priv-&gt;currentMenu;
&gt; &gt;-        priv-&gt;currentMenu = 0;
&gt; &gt;+        GRefPtr&lt;GtkMenu&gt; menu(priv-&gt;currentMenu);
&gt; &gt;+        priv-&gt;currentMenu.clear();
&gt; &gt; 
&gt; &gt;-        gtk_menu_popdown(menu);
&gt; &gt;-        g_object_unref(menu);
&gt; &gt;+        gtk_menu_popdown(menu.get());
&gt; &gt;     }
&gt; 
&gt; Couldn&apos;t you just do an adoptGRef and get rid of the .clear() call?

Hrm. In this case it might cause a double-free when the smart
pointer is actually cleared. It seemed like the peculiar
order of operations here meant that one of the signal handlers
fired by gtk_menu_popdown assumed that priv-&gt;currentMenu was 0.

This doesn&apos;t appear to be the case though, from my testing. I&apos;ll
change this to:

&gt;     if (priv-&gt;currentMenu) {
&gt;       gtk_menu_popdown(menu.get());
&gt;       priv-&gt;currentMenu.clear();
&gt;     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224708</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-12 10:12:27 -0700</bug_when>
    <thetext>Committed r59240: &lt;http://trac.webkit.org/changeset/59240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228038</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-19 16:06:30 -0700</bug_when>
    <thetext>This patch needs a bit of work. I should have a new version soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228680</commentid>
    <comment_count>10</comment_count>
      <attachid>56658</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-20 18:45:13 -0700</bug_when>
    <thetext>Created attachment 56658
Patch which doesn&apos;t change the order of release of members</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228684</commentid>
    <comment_count>11</comment_count>
      <attachid>56658</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-20 18:46:27 -0700</bug_when>
    <thetext>Comment on attachment 56658
Patch which doesn&apos;t change the order of release of members

The previous patch introduced some bad behavior because it re-ordered the operations in the WebKitWebView&apos;s dispose method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229036</commentid>
    <comment_count>12</comment_count>
      <attachid>56658</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 12:18:21 -0700</bug_when>
    <thetext>Comment on attachment 56658
Patch which doesn&apos;t change the order of release of members

WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:1141
 +          GRefPtr&lt;GtkMenu&gt; menu(priv-&gt;currentMenu);
Doesn&apos;t GRefPtr have a .release() method?  Or would that require a GPassRefPtr?

WebKit/gtk/webkit/webkitwebview.cpp:1098
 +      priv-&gt;tooltipText.clear();
Do all of these need to be explicitly cleared?  It seems not.

WebKit/gtk/webkit/webkitwebview.cpp:3879
 +          priv-&gt;encoding.set(g_strdup(encoding.utf8().data()));
Seems we could store the CString instead of the raw char* and that would be cleaner here.

WebKit/gtk/webkit/webkitwebview.cpp:3880
 +          return priv-&gt;encoding.get();
the we would just return encoding.data() instead of having to have an OwnPtr store it.

WebKit/gtk/webkit/webkitwebview.cpp:3879
 +          priv-&gt;encoding.set(g_strdup(encoding.utf8().data()));
Doesn&apos;t this copy twice?  We only need to copy once by creating the utf8 CString, no?

WebKit/gtk/webkit/webkitwebview.cpp:3921
 +          priv-&gt;customEncoding.set(g_strdup(overrideEncoding.utf8().data()));
Here again, couldn&apos;t we just store the CSTring?

WebKit/gtk/webkit/webkitwebview.cpp:4201
 +      priv-&gt;iconURI.set(g_strdup(iconURL.utf8().data()));
And again.. CString.

This is definitely better.  But I think there are too many manual clear() calls, and the string handling could use CString storage instead to save a copy (and make the code simpler).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235469</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-06-08 13:11:28 -0700</bug_when>
    <thetext>The clear calls are necessary because the private segments of GObjects are  allocated and deallocated via GLib&apos;s memory management underneath, so when the go away, they do not call C++ destructors. This may be slightly dangerous though (I&apos;m not certain), because the GRefPtr/GOwnPtr constructor is never called either. I think we need to figure out what the safest / sanest thing to do is when we want to have C++ members in our GObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277447</commentid>
    <comment_count>14</comment_count>
      <attachid>67242</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-10 14:47:53 -0700</bug_when>
    <thetext>Created attachment 67242
Patch for this issue after 45550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279881</commentid>
    <comment_count>15</comment_count>
      <attachid>67242</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-15 18:25:42 -0700</bug_when>
    <thetext>Comment on attachment 67242
Patch for this issue after 45550

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

Someone give this man an award!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279884</commentid>
    <comment_count>16</comment_count>
      <attachid>67242</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-15 18:34:08 -0700</bug_when>
    <thetext>Comment on attachment 67242
Patch for this issue after 45550

Clearing flags on attachment: 67242

Committed r67591: &lt;http://trac.webkit.org/changeset/67591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279885</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-15 18:34:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279923</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-15 20:03:13 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67591 might have broken GTK Linux 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/67589
http://trac.webkit.org/changeset/67590
http://trac.webkit.org/changeset/67591</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55744</attachid>
            <date>2010-05-11 13:30:20 -0700</date>
            <delta_ts>2010-05-20 18:45:10 -0700</delta_ts>
            <desc>Convert many uses of raw pointers to GRefPtr and GOwnPtr in WebKitWebView</desc>
            <filename>bug-21594-20100511133019.patch</filename>
            <type>text/plain</type>
            <size>29570</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggM2JmMjQxZGYyYzRjZDMxZTNiYzFhODNkZDk0ZDcxNjg0YzIyNDY0MC4uZTJmYTI1YjYx
ZGU2NzI4NGIyYTE5ZjI5NTgxYTgzYmMwOGZjMzU3YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1OCBAQAogMjAx
MC0wNS0xMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKKyAgICAg
ICAgW0d0a10gVXNlIEdPd25QdHIgZm9yIGNvZGUgdGhhdCBuZWVkcyBpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1OTQKKworICAgICAgICBDb252
ZXJ0IG1hbnkgdXNlcyBvZiByYXcgcG9pbnRlcnMgdG8gR1JlZlB0ciBhbmQgR093blB0ciBpbiBX
ZWJLaXRXZWJWaWV3LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjppbnB1dE1ldGhvZHNNZW51SXRlbSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
RWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICAoV2Vi
S2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRv
ckNsaWVudDo6fkVkaXRvckNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpwb3N0Q29tbWl0RnJhbWVWaWV3
U2V0dXApOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZGVzdHJveV9tZW51X2NiKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2J1dHRvbl9yZWxlYXNlX2V2ZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19m
b2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfb3V0X2V2ZW50
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsaXplKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZXRfc2Nyb2xsX2FkanVzdG1lbnRzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19kaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZSk6CisgICAgICAg
ICh3ZWJWaWV3R2V0RFBJKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdl
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcXVlcnlfdG9vbHRpcCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2ltX2NvbnRleHQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfc2V0dGluZ3MpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0
b3IpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfem9vbV9pbik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfem9vbV9vdXQpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dldF9lbmNvZGluZyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2N1c3RvbV9lbmNvZGluZyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYWRk
X3Jlc291cmNlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2UpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19jbGVhcl9yZXNvdXJjZXMpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dl
dF9zdWJyZXNvdXJjZXMpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF90b29sdGlwX3Rl
eHQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9pY29uX3VyaSk6CisKKzIwMTAtMDUt
MTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IFhhbiBMb3Blei4KIAogICAgICAgICBbR3RrXSBEb2Vzbid0IHN1cHBvcnQgZ3Rr
LWtleS10aGVtZXMKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudEd0ay5jcHAKaW5kZXggNWMxYmMwYjhkNGQxNTgyOGM2NWE0YmVjYWQ5ZWMxODA3OGFk
YzAwYS4uMDY5ZmIxOWIxYjlkYzQ1YmVkMTZjNzAyNDQ3Zjc5NDdkZGQzOTQ0YSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKKysr
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgc3RhdGljIEd0a1dpZGdldCogaW5wdXRNZXRob2RzTWVudUl0ZW0gKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKICAgICBHdGtXaWRnZXQqIGlt
Q29udGV4dE1lbnUgPSBndGtfbWVudV9uZXcoKTsKLSAgICBndGtfaW1fbXVsdGljb250ZXh0X2Fw
cGVuZF9tZW51aXRlbXMoR1RLX0lNX01VTFRJQ09OVEVYVChwcml2LT5pbUNvbnRleHQpLCBHVEtf
TUVOVV9TSEVMTChpbUNvbnRleHRNZW51KSk7CisgICAgZ3RrX2ltX211bHRpY29udGV4dF9hcHBl
bmRfbWVudWl0ZW1zKEdUS19JTV9NVUxUSUNPTlRFWFQocHJpdi0+aW1Db250ZXh0LmdldCgpKSwg
R1RLX01FTlVfU0hFTEwoaW1Db250ZXh0TWVudSkpOwogCiAgICAgZ3RrX21lbnVfaXRlbV9zZXRf
c3VibWVudShHVEtfTUVOVV9JVEVNKG1lbnVpdGVtKSwgaW1Db250ZXh0TWVudSk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBhNWMzNmU4
MzNhNjhhNzVhODhiZjE0NzIyOWViMTIyNTU0NGU2MmMxLi5kM2Y4ZmExOTVkNGI5YTY0MDM3MDJh
NjRhNjFiNmY5MmM2ZTIyMDJhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuY3BwCkBAIC0yMjAsMTUgKzIyMCwxNSBAQCB2b2lkIEVkaXRvckNsaWVudDo6
c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGFjdGl2ZSkKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKIAogICAgIGlmIChhY3RpdmUpCi0gICAgICAgIGd0
a19pbV9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dCk7CisgICAgICAgIGd0a19pbV9j
b250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAgICAgZWxzZQotICAgICAg
ICBndGtfaW1fY29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgZ3Rr
X2ltX2NvbnRleHRfZm9jdXNfb3V0KHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAKICNpZmRlZiBN
QUVNT19DSEFOR0VTCiAgICAgaWYgKGFjdGl2ZSkKLSAgICAgICAgaGlsZG9uX2d0a19pbV9jb250
ZXh0X3Nob3cocHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgaGlsZG9uX2d0a19pbV9jb250ZXh0
X3Nob3cocHJpdi0+aW1Db250ZXh0LmdldCgpKTsKICAgICBlbHNlCi0gICAgICAgIGhpbGRvbl9n
dGtfaW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4dCk7CisgICAgICAgIGhpbGRvbl9ndGtf
aW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAt
MzY3LDcgKzM2Nyw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKCkKICAgICB1bnNpZ25lZCBlbmQ7CiAgICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkt
PmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHN0YXJ0LCBlbmQpKSB7CiAgICAgICAgIC8vIGd0a19p
bV9jb250ZXh0X3Jlc2V0KCkgY2xlYXJzIHRoZSBjb21wb3NpdGlvbiBmb3IgdXMuCi0gICAgICAg
IGd0a19pbV9jb250ZXh0X3Jlc2V0KHByaXYtPmltQ29udGV4dCk7CisgICAgICAgIGd0a19pbV9j
b250ZXh0X3Jlc2V0KHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAgICAgICAgIHRhcmdldEZyYW1l
LT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uV2l0aG91dERpc3R1cmJpbmdTZWxlY3Rpb24o
KTsKICAgICB9CiB9CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRs
ZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBtX3RyZWF0Q29u
dGV4dENvbW1pdEFzS2V5RXZlbnQgPSAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9z
aXRpb24oKSkKICAgICAgICAgICYmIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpLT5r
ZXl2YWw7CiAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKLSAgICBpZiAoKGd0a19pbV9j
b250ZXh0X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgp
LT5nZGtFdmVudEtleSgpKSAmJiAhbV9wZW5kaW5nQ29tcG9zaXRpb24pCisgICAgaWYgKChndGtf
aW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250ZXh0LmdldCgpLCBldmVudC0+
a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQogICAg
ICAgICB8fCAoIW1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAhdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSkKICAgICAgICAgZXZlbnQtPnByZXZlbnREZWZh
dWx0KCk7CiAKQEAgLTcxNCw4ICs3MTQsOCBAQCBFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVudChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICwgbV9uYXRpdmVXaWRnZXQoZ3RrX3RleHRfdmll
d19uZXcoKSkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+
cHJpdjsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgImNvbW1pdCIsIEdf
Q0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0dGVkKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVj
dChwcml2LT5pbUNvbnRleHQsICJwcmVlZGl0LWNoYW5nZWQiLCBHX0NBTExCQUNLKGltQ29udGV4
dFByZWVkaXRDaGFuZ2VkKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5pbUNv
bnRleHQuZ2V0KCksICJjb21taXQiLCBHX0NBTExCQUNLKGltQ29udGV4dENvbW1pdHRlZCksIHRo
aXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LmdldCgpLCAicHJlZWRp
dC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZCksIHRoaXMpOwog
CiAgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImJhY2tzcGFjZSIs
IEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY3V0LWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0soY3V0
Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTcyOSw4ICs3MjksOCBAQCBFZGl0b3JDbGll
bnQ6OkVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogRWRpdG9yQ2xpZW50Ojp+
RWRpdG9yQ2xpZW50KCkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2Vi
Vmlldy0+cHJpdjsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJp
di0+aW1Db250ZXh0LCAoZ3BvaW50ZXIpaW1Db250ZXh0Q29tbWl0dGVkLCB0aGlzKTsKLSAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+aW1Db250ZXh0LCAoZ3Bv
aW50ZXIpaW1Db250ZXh0UHJlZWRpdENoYW5nZWQsIHRoaXMpOworICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT5pbUNvbnRleHQuZ2V0KCksIChncG9pbnRlcilp
bUNvbnRleHRDb21taXR0ZWQsIHRoaXMpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZnVuYyhwcml2LT5pbUNvbnRleHQuZ2V0KCksIChncG9pbnRlcilpbUNvbnRleHRQcmVl
ZGl0Q2hhbmdlZCwgdGhpcyk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRC
ZWdpbkVkaXRpbmcoRWxlbWVudCopCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGZkMmQ3ZWQzZWVhYjU3MGI1MTNhZDI1ODg5
N2M5MWY5MDZkMjMwYmYuLjk5ZWMyZGEwOTRkMDIwZTFiZDk3NmY5YmYzOTcyMDkzYTNiNmNhNjgg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCkBAIC0xMTM1LDE0ICsxMTM1LDEzIEBAIHN0YXRpYyB2b2lkIHBvc3RDb21taXRGcmFt
ZVZpZXdTZXR1cChXZWJLaXRXZWJGcmFtZSAqZnJhbWUsIEZyYW1lVmlldyAqdmlldywgYm9vCiB7
CiAgICAgV2ViS2l0V2ViVmlldyogY29udGFpbmluZ1dpbmRvdyA9IGdldFZpZXdGcm9tRnJhbWUo
ZnJhbWUpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVX
X0dFVF9QUklWQVRFKGNvbnRhaW5pbmdXaW5kb3cpOwotICAgIHZpZXctPnNldEd0a0FkanVzdG1l
bnRzKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50LCBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQs
IHJlc2V0VmFsdWVzKTsKKyAgICB2aWV3LT5zZXRHdGtBZGp1c3RtZW50cyhwcml2LT5ob3Jpem9u
dGFsQWRqdXN0bWVudC5nZXQoKSwgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50LmdldCgpLCByZXNl
dFZhbHVlcyk7CiAKICAgICBpZiAocHJpdi0+Y3VycmVudE1lbnUpIHsKLSAgICAgICAgR3RrTWVu
dSogbWVudSA9IHByaXYtPmN1cnJlbnRNZW51OwotICAgICAgICBwcml2LT5jdXJyZW50TWVudSA9
IDA7CisgICAgICAgIEdSZWZQdHI8R3RrTWVudT4gbWVudShwcml2LT5jdXJyZW50TWVudSk7Cisg
ICAgICAgIHByaXYtPmN1cnJlbnRNZW51LmNsZWFyKCk7CiAKLSAgICAgICAgZ3RrX21lbnVfcG9w
ZG93bihtZW51KTsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYobWVudSk7CisgICAgICAgIGd0a19t
ZW51X3BvcGRvd24obWVudS5nZXQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgKaW5kZXggMDU3YjBlNWFjYTdhNmRiZjUxMDU4OTEwYjc2MWNiMDliODA3ZjQ0Yy4uYWJj
YTNjODNjYzQzMDQzOTMzMWRiNjdmY2ZmNDcyYjQyNjgzMWZlMyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuaApAQCAtMTE1LDQyICsxMTUsNDIgQEAgZXh0ZXJuICJDIiB7CiAgICAgdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOwogICAg
IHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAgICBXZWJDb3JlOjpQYWdlKiBj
b3JlUGFnZTsKLSAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzOwotICAgICAg
ICBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcjsKLSAgICAgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOworICAgICAgICBHUmVmUHRyPFdlYktpdFdl
YlNldHRpbmdzPiB3ZWJTZXR0aW5nczsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJJbnNwZWN0
b3I+IHdlYkluc3BlY3RvcjsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cz4gd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFt
ZTsKLSAgICAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3Q7Cisg
ICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZExpc3Q7
CiAKLSAgICAgICAgR3RrTWVudSogY3VycmVudE1lbnU7CisgICAgICAgIEdSZWZQdHI8R3RrTWVu
dT4gY3VycmVudE1lbnU7CiAgICAgICAgIGdpbnQgbGFzdFBvcHVwWFBvc2l0aW9uOwogICAgICAg
ICBnaW50IGxhc3RQb3B1cFlQb3NpdGlvbjsKIAogICAgICAgICBIYXNoU2V0PEd0a1dpZGdldCo+
IGNoaWxkcmVuOwogICAgICAgICBib29sIGVkaXRhYmxlOwotICAgICAgICBHdGtJTUNvbnRleHQq
IGltQ29udGV4dDsKKyAgICAgICAgR1JlZlB0cjxHdGtJTUNvbnRleHQ+IGltQ29udGV4dDsKIAog
ICAgICAgICBnYm9vbGVhbiB0cmFuc3BhcmVudDsKIAotICAgICAgICBHdGtBZGp1c3RtZW50KiBo
b3Jpem9udGFsQWRqdXN0bWVudDsKLSAgICAgICAgR3RrQWRqdXN0bWVudCogdmVydGljYWxBZGp1
c3RtZW50OworICAgICAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IGhvcml6b250YWxBZGp1c3Rt
ZW50OworICAgICAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IHZlcnRpY2FsQWRqdXN0bWVudDsK
IAogICAgICAgICBnYm9vbGVhbiB6b29tRnVsbENvbnRlbnQ7CiAgICAgICAgIFdlYktpdExvYWRT
dGF0dXMgbG9hZFN0YXR1czsKLSAgICAgICAgY2hhciogZW5jb2Rpbmc7Ci0gICAgICAgIGNoYXIq
IGN1c3RvbUVuY29kaW5nOworICAgICAgICBHT3duUHRyPGNoYXI+IGVuY29kaW5nOworICAgICAg
ICBHT3duUHRyPGNoYXI+IGN1c3RvbUVuY29kaW5nOwogCi0gICAgICAgIGNoYXIqIGljb25VUkk7
CisgICAgICAgIEdPd25QdHI8Y2hhcj4gaWNvblVSSTsKIAogICAgICAgICBnYm9vbGVhbiBkaXNw
b3Npbmc7CiAgICAgICAgIGdib29sZWFuIHVzZVByaW1hcnlGb3JQYXN0ZTsKIAogICAgICAgICAv
LyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3QgaXMK
ICAgICAgICAgLy8gY3JlYXRlZCB0b28gbGF0ZSBpbiB0aGUgZnJhbWUgbG9hZGluZyBwcm9jZXNz
LgotICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSogbWFpblJlc291cmNlOwotICAgICAgICBjaGFy
KiBtYWluUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBHSGFzaFRhYmxlKiBzdWJSZXNvdXJj
ZXM7Ci0gICAgICAgIGNoYXIqIHRvb2x0aXBUZXh0OworICAgICAgICBHUmVmUHRyPFdlYktpdFdl
YlJlc291cmNlPiBtYWluUmVzb3VyY2U7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gbWFpblJlc291
cmNlSWRlbnRpZmllcjsKKyAgICAgICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBzdWJSZXNvdXJjZXM7
CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdG9vbHRpcFRleHQ7CiAKICAgICAgICAgSGFzaE1hcDxH
ZGtEcmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiA+IGRyYWdnaW5n
RGF0YU9iamVjdHM7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXgg
MTBhMDgyYzg5ODZiNGZlYjRlYzAwNTM1OTRkODE4NWU1YTc5MjU1OS4uY2E3MjY2NWVkOGEwZmY4
YTQwZWU0YzM1N2ZjYzEwZTZiY2Y1YWUzMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKQEAgLTIwNCw5ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X21lbnVfY2IoR3RrT2Jq
ZWN0KiBvYmplY3QsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IFdFQktJVF9XRUJfVklFVyhkYXRhKTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLQotICAgIGdfb2JqZWN0
X3VucmVmKHByaXYtPmN1cnJlbnRNZW51KTsKLSAgICBwcml2LT5jdXJyZW50TWVudSA9IE5VTEw7
CisgICAgcHJpdi0+Y3VycmVudE1lbnUgPSAwOwogfQogCiBzdGF0aWMgdm9pZCBQb3B1cE1lbnVQ
b3NpdGlvbkZ1bmMoR3RrTWVudSogbWVudSwgZ2ludCAqeCwgZ2ludCAqeSwgZ2Jvb2xlYW4gKnB1
c2hJbiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC0yOTYsNyArMjk0LDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWUKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAg
cHJpdi0+Y3VycmVudE1lbnUgPSBHVEtfTUVOVShnX29iamVjdF9yZWYobWVudSkpOworICAgIHBy
aXYtPmN1cnJlbnRNZW51ID0gbWVudTsKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24gPSBl
dmVudC5nbG9iYWxYKCk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gZXZlbnQuZ2xv
YmFsWSgpOwogCkBAIC01NzAsNyArNTY4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19rZXlfcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkKICAg
ICAvLyB0aGUgZXZlbnQgaWYgd2UgZG9uJ3QgaGF2ZSBhIHBlbmRpbmcgY29tcG9zaXRpb24sIGJl
Y2F1c2UgdGhhdCBtZWFucyB3ZQogICAgIC8vIGFyZSB1c2luZyBhIGNvbnRleHQgbGlrZSAnc2lt
cGxlJyB3aGljaCBtYXJrcyBldmVyeSBrZXlzdHJva2UgYXMgZmlsdGVyZWQuCiAgICAgV2ViS2l0
OjpFZGl0b3JDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RWRpdG9yQ2xpZW50
Kj4oY29yZSh3ZWJWaWV3KS0+ZWRpdG9yQ2xpZW50KCkpOwotICAgIGlmIChndGtfaW1fY29udGV4
dF9maWx0ZXJfa2V5cHJlc3Mod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0LCBldmVudCkgJiYgIWNs
aWVudC0+aGFzUGVuZGluZ0NvbXBvc2l0aW9uKCkpCisgICAgaWYgKGd0a19pbV9jb250ZXh0X2Zp
bHRlcl9rZXlwcmVzcyh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQuZ2V0KCksIGV2ZW50KSAmJiAh
Y2xpZW50LT5oYXNQZW5kaW5nQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAK
ICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CkBAIC02MjcsNyArNjI1LDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19idXR0b25fcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnQKICAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkgewogI2lmZGVmIE1BRU1PX0NIQU5HRVMKICAgICAgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgICAgICBoaWxkb25fZ3RrX2ltX2NvbnRl
eHRfZmlsdGVyX2V2ZW50KHByaXYtPmltQ29udGV4dCwgKEdka0V2ZW50KilldmVudCk7CisgICAg
ICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9maWx0ZXJfZXZlbnQocHJpdi0+aW1Db250ZXh0Lmdl
dCgpLCAoR2RrRXZlbnQqKWV2ZW50KTsKICNlbmRpZgogICAgIH0KIApAQCAtNzMwLDcgKzcyOCw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZv
Y3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgp
KTsKIAotICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2LT5pbUNv
bnRleHQpOworICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2LT5p
bUNvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJr
aXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7
CiB9CkBAIC03NDgsNyArNzQ2LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19m
b2N1c19vdXRfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMKICAgICB9CiAK
ICAgICBpZiAod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KQotICAgICAgICBndGtfaW1fY29udGV4
dF9mb2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgZ3RrX2ltX2Nv
bnRleHRfZm9jdXNfb3V0KHdlYlZpZXctPnByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Zm9j
dXNfb3V0X2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQpAQCAtNzg3LDcgKzc4NSw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogCiAgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwogICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBndGtfaW1fY29u
dGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRleHQsIHdpZGdldC0+d2luZG93KTsK
KyAgICBndGtfaW1fY29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRleHQuZ2V0
KCksIHdpZGdldC0+d2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3Nl
dF9zY3JvbGxfYWRqdXN0bWVudHMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0bWVu
dCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaikKQEAgLTc5NiwxOSArNzk0LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zY3JvbGxfYWRqdXN0bWVudHMoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgR3RrQWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpLT52aWV3KCk7
Ci0KLSAgICBpZiAoaGFkaikKLSAgICAgICAgZ19vYmplY3RfcmVmKGhhZGopOwotICAgIGlmICh2
YWRqKQotICAgICAgICBnX29iamVjdF9yZWYodmFkaik7Ci0KICAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICBpZiAocHJpdi0+aG9yaXpvbnRhbEFk
anVzdG1lbnQpCi0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmhvcml6b250YWxBZGp1c3Rt
ZW50KTsKLSAgICBpZiAocHJpdi0+dmVydGljYWxBZGp1c3RtZW50KQotICAgICAgICBnX29iamVj
dF91bnJlZihwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQpOwotCiAgICAgcHJpdi0+aG9yaXpvbnRh
bEFkanVzdG1lbnQgPSBoYWRqOwogICAgIHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9IHZhZGo7
CiAKQEAgLTEwNzYsMjEgKzEwNjIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGlz
cG9zZShHT2JqZWN0KiBvYmplY3QpCiAKICAgICBwcml2LT5kaXNwb3NpbmcgPSBUUlVFOwogCi0g
ICAgaWYgKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIGdfb2JqZWN0X3Vu
cmVmKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50KTsKLSAgICAgICAgcHJpdi0+aG9yaXpvbnRh
bEFkanVzdG1lbnQgPSBOVUxMOwotICAgIH0KLQotICAgIGlmIChwcml2LT52ZXJ0aWNhbEFkanVz
dG1lbnQpIHsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+dmVydGljYWxBZGp1c3RtZW50
KTsKLSAgICAgICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50ID0gTlVMTDsKLSAgICB9Ci0KLSAg
ICBpZiAocHJpdi0+YmFja0ZvcndhcmRMaXN0KSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHBy
aXYtPmJhY2tGb3J3YXJkTGlzdCk7Ci0gICAgICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IE5V
TEw7Ci0gICAgfQotCiAgICAgaWYgKHByaXYtPmNvcmVQYWdlKSB7CiAgICAgICAgIHdlYmtpdF93
ZWJfdmlld19zdG9wX2xvYWRpbmcoV0VCS0lUX1dFQl9WSUVXKG9iamVjdCkpOwogCkBAIC0xMTAw
LDMwICsxMDcxLDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmpl
Y3QqIG9iamVjdCkKICAgICB9CiAKICAgICBpZiAocHJpdi0+d2ViU2V0dGluZ3MpIHsKLSAgICAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdz
LCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7Ci0g
ICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKLSAgICAgICAgcHJpdi0+
d2ViU2V0dGluZ3MgPSBOVUxMOwotCi0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYklu
c3BlY3Rvcik7Ci0gICAgICAgIHByaXYtPndlYkluc3BlY3RvciA9IE5VTEw7Ci0KLSAgICAgICAg
Z19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwotICAgICAgICBwcml2LT53
ZWJXaW5kb3dGZWF0dXJlcyA9IE5VTEw7Ci0KLSAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+
aW1Db250ZXh0KTsKLSAgICAgICAgcHJpdi0+aW1Db250ZXh0ID0gTlVMTDsKLSAgICB9Ci0KLSAg
ICBpZiAocHJpdi0+bWFpblJlc291cmNlKSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
Pm1haW5SZXNvdXJjZSk7Ci0gICAgICAgIHByaXYtPm1haW5SZXNvdXJjZSA9IE5VTEw7Ci0gICAg
fQotCi0gICAgaWYgKHByaXYtPnN1YlJlc291cmNlcykgewotICAgICAgICBnX2hhc2hfdGFibGVf
dW5yZWYocHJpdi0+c3ViUmVzb3VyY2VzKTsKLSAgICAgICAgcHJpdi0+c3ViUmVzb3VyY2VzID0g
TlVMTDsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYt
PndlYlNldHRpbmdzLmdldCgpLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25v
dGlmeSwgd2ViVmlldyk7CisgICAgICAgIHByaXYtPndlYlNldHRpbmdzLmNsZWFyKCk7CiAgICAg
fQogCisgICAgcHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQuY2xlYXIoKTsKKyAgICBwcml2LT52
ZXJ0aWNhbEFkanVzdG1lbnQuY2xlYXIoKTsKKyAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QuY2xl
YXIoKTsKKyAgICBwcml2LT53ZWJJbnNwZWN0b3IuY2xlYXIoKTsKKyAgICBwcml2LT53ZWJXaW5k
b3dGZWF0dXJlcy5jbGVhcigpOworICAgIHByaXYtPmltQ29udGV4dC5jbGVhcigpOworICAgIHBy
aXYtPm1haW5SZXNvdXJjZS5jbGVhcigpOworICAgIHByaXYtPnN1YlJlc291cmNlcy5jbGVhcigp
OwogICAgIHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMuY2xlYXIoKTsKIAogICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBA
IC0xMTM0LDExICsxMDkzLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9X
RUJfVklFVyhvYmplY3QpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmll
dy0+cHJpdjsKIAotICAgIGdfZnJlZShwcml2LT50b29sdGlwVGV4dCk7Ci0gICAgZ19mcmVlKHBy
aXYtPm1haW5SZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGdfZnJlZShwcml2LT5lbmNvZGluZyk7
Ci0gICAgZ19mcmVlKHByaXYtPmN1c3RvbUVuY29kaW5nKTsKLSAgICBnX2ZyZWUocHJpdi0+aWNv
blVSSSk7CisgICAgcHJpdi0+dG9vbHRpcFRleHQuY2xlYXIoKTsKKyAgICBwcml2LT5tYWluUmVz
b3VyY2VJZGVudGlmaWVyLmNsZWFyKCk7CisgICAgcHJpdi0+ZW5jb2RpbmcuY2xlYXIoKTsKKyAg
ICBwcml2LT5jdXN0b21FbmNvZGluZy5jbGVhcigpOworICAgIHByaXYtPmljb25VUkkuY2xlYXIo
KTsKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwogfQpAQCAtMTE4OSw3ICsxMTQ4LDcgQEAgc3RhdGljIEF0a09iamVj
dCogd2Via2l0X3dlYl92aWV3X2dldF9hY2Nlc3NpYmxlKEd0a1dpZGdldCogd2lkZ2V0KQogc3Rh
dGljIGdkb3VibGUgd2ViVmlld0dldERQSShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSBwcml2LT53ZWJTZXR0aW5nczsKKyAgICBXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSBwcml2LT53ZWJTZXR0aW5ncy5nZXQoKTsKICAgICBn
Ym9vbGVhbiBlbmZvcmNlOTZEUEk7CiAgICAgZ19vYmplY3RfZ2V0KHdlYlNldHRpbmdzLCAiZW5m
b3JjZS05Ni1kcGkiLCAmZW5mb3JjZTk2RFBJLCBOVUxMKTsKICAgICBpZiAoZW5mb3JjZTk2RFBJ
KQpAQCAtMTIxNSw3ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NjcmVl
bl9jaGFuZ2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtTY3JlZW4qIHByZXZpb3UKICAgICBpZiAo
cHJpdi0+ZGlzcG9zaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJLaXRXZWJTZXR0aW5n
cyogd2ViU2V0dGluZ3MgPSBwcml2LT53ZWJTZXR0aW5nczsKKyAgICBXZWJLaXRXZWJTZXR0aW5n
cyogd2ViU2V0dGluZ3MgPSBwcml2LT53ZWJTZXR0aW5ncy5nZXQoKTsKICAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogICAgIGdkb3VibGUgRFBJID0g
d2ViVmlld0dldERQSSh3ZWJWaWV3KTsKIApAQCAtMTI2NCw3ICsxMjIzLDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfdmlld19xdWVyeV90b29sdGlwKEd0a1dpZGdldCAqd2lkZ2V0LCBn
aW50IHgsIGdpbnQgeSwKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9X
RUJfVklFV19HRVRfUFJJVkFURSh3aWRnZXQpOwogCiAgICAgaWYgKHByaXYtPnRvb2x0aXBUZXh0
KSB7Ci0gICAgICAgIGd0a190b29sdGlwX3NldF90ZXh0KHRvb2x0aXAsIHByaXYtPnRvb2x0aXBU
ZXh0KTsKKyAgICAgICAgZ3RrX3Rvb2x0aXBfc2V0X3RleHQodG9vbHRpcCwgcHJpdi0+dG9vbHRp
cFRleHQuZ2V0KCkpOwogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKQEAgLTEyNzUsNyAr
MTIzNCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcXVlcnlfdG9vbHRpcChH
dGtXaWRnZXQgKndpZGdldCwgZ2ludCB4LCBnaW50IHksCiBzdGF0aWMgR3RrSU1Db250ZXh0KiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2ltX2NvbnRleHQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDAp
OwotICAgIHJldHVybiBHVEtfSU1fQ09OVEVYVCh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQpOwor
ICAgIHJldHVybiBHVEtfSU1fQ09OVEVYVCh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQuZ2V0KCkp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKQEAgLTI1OTEsNyArMjU1MCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0Ns
YXNzKQogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2Vi
Vmlldy0+cHJpdjsKLSAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSBwcml2LT53
ZWJTZXR0aW5nczsKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSBwcml2LT53
ZWJTZXR0aW5ncy5nZXQoKTsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcp
LT5zZXR0aW5ncygpOwogCiAgICAgZ2NoYXIqIGRlZmF1bHRFbmNvZGluZywgKmN1cnNpdmVGb250
RmFtaWx5LCAqZGVmYXVsdEZvbnRGYW1pbHksICpmYW50YXN5Rm9udEZhbWlseSwgKm1vbm9zcGFj
ZUZvbnRGYW1pbHksICpzYW5zU2VyaWZGb250RmFtaWx5LCAqc2VyaWZGb250RmFtaWx5LCAqdXNl
clN0eWxlc2hlZXRVcmk7CkBAIC0yNzk1LDQwICsyNzU0LDM2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CiAg
ICAgd2ViVmlldy0+cHJpdiA9IHByaXY7CiAKLSAgICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1f
bXVsdGljb250ZXh0X25ldygpOworICAgIHByaXYtPmltQ29udGV4dCA9IGFkb3B0R1JlZihndGtf
aW1fbXVsdGljb250ZXh0X25ldygpKTsKIAogICAgIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CiAg
ICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2Vi
VmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0
OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQod2ViVmlldyks
IGluc3BlY3RvckNsaWVudCwgMCwgMCk7CiAKICAgICAvLyBXZSBhbHNvIGFkZCBhIHNpbXBsZSB3
cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwogICAgIC8vIGludGVyZmFjZSBmb3Ig
dGhlIFdlYiBJbnNwZWN0b3IuCi0gICAgcHJpdi0+d2ViSW5zcGVjdG9yID0gV0VCS0lUX1dFQl9J
TlNQRUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsK
LSAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfaW5zcGVjdG9yX2NsaWVudChwcml2LT53ZWJJ
bnNwZWN0b3IsIHByaXYtPmNvcmVQYWdlKTsKKyAgICBwcml2LT53ZWJJbnNwZWN0b3IgPSBhZG9w
dEdSZWYoV0VCS0lUX1dFQl9JTlNQRUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9J
TlNQRUNUT1IsIE5VTEwpKSk7CisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X2luc3BlY3Rv
cl9jbGllbnQocHJpdi0+d2ViSW5zcGVjdG9yLmdldCgpLCBwcml2LT5jb3JlUGFnZSk7CiAKKyAg
ICAvLyBUaGVzZSBhcmUgY3JlYXRlIHdpdGggZmxvYXRpbmcgcmVmZXJlbmNlcywgc28gdGhleSBz
aG91bGQgbm90IGJlIHdyYXBwZWQgaW4gYWRvcHRHcmVmLgogICAgIHByaXYtPmhvcml6b250YWxB
ZGp1c3RtZW50ID0gR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApKTsKICAgICBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQgPSBHVEtf
QURKVVNUTUVOVChndGtfYWRqdXN0bWVudF9uZXcoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCkpOwogCi0gICAgZ19vYmplY3RfcmVmX3NpbmsocHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQp
OwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCk7Ci0KICAg
ICBHVEtfV0lER0VUX1NFVF9GTEFHUyh3ZWJWaWV3LCBHVEtfQ0FOX0ZPQ1VTKTsKICAgICBwcml2
LT5tYWluRnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKHdlYmtpdF93ZWJfZnJhbWVfbmV3KHdlYlZp
ZXcpKTsKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24gPSBwcml2LT5sYXN0UG9wdXBZUG9z
aXRpb24gPSAtMTsKICAgICBwcml2LT5lZGl0YWJsZSA9IGZhbHNlOwogCi0gICAgcHJpdi0+YmFj
a0ZvcndhcmRMaXN0ID0gd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9uZXdfd2l0aF93ZWJf
dmlldyh3ZWJWaWV3KTsKKyAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QgPSBhZG9wdEdSZWYod2Vi
a2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9uZXdfd2l0aF93ZWJfdmlldyh3ZWJWaWV3KSk7CiAK
ICAgICBwcml2LT56b29tRnVsbENvbnRlbnQgPSBGQUxTRTsKIAotICAgIHByaXYtPndlYlNldHRp
bmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKyAgICBwcml2LT53ZWJTZXR0aW5ncyA9
IGFkb3B0R1JlZih3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+
d2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zZXR0aW5n
c19ub3RpZnkpLCB3ZWJWaWV3KTsKLQotICAgIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0gd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2
LT53ZWJTZXR0aW5ncy5nZXQoKSwgIm5vdGlmeSIsIEdfQ0FMTEJBQ0sod2Via2l0X3dlYl92aWV3
X3NldHRpbmdzX25vdGlmeSksIHdlYlZpZXcpOwogCi0gICAgcHJpdi0+c3ViUmVzb3VyY2VzID0g
Z19oYXNoX3RhYmxlX25ld19mdWxsKGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLCBnX2ZyZWUsIGdf
b2JqZWN0X3VucmVmKTsKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IGFkb3B0R1JlZih3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKSk7CiAKLSAgICBwcml2LT50b29sdGlwVGV4
dCA9IDA7CisgICAgcHJpdi0+c3ViUmVzb3VyY2VzID0gYWRvcHRHUmVmKGdfaGFzaF90YWJsZV9u
ZXdfZnVsbChnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCwgZ19mcmVlLCBnX29iamVjdF91bnJlZikp
OwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTI4ODQsOSAr
MjgzOSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRXZWJTZXR0aW5ncyogd2ViCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92
aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7Ci0gICAgZ19vYmplY3RfdW5yZWYocHJpdi0+
d2ViU2V0dGluZ3MpOwotICAgIGdfb2JqZWN0X3JlZih3ZWJTZXR0aW5ncyk7CisgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLmdldCgpLCAo
Z3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7CiAgICAg
cHJpdi0+d2ViU2V0dGluZ3MgPSB3ZWJTZXR0aW5nczsKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBk
YXRlX3NldHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViU2V0dGluZ3Ms
ICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpLCB3
ZWJWaWV3KTsKQEAgLTI4OTgsNyArMjg1MSw3IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAogICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICByZXR1cm4g
cHJpdi0+d2ViU2V0dGluZ3M7CisgICAgcmV0dXJuIHByaXYtPndlYlNldHRpbmdzLmdldCgpOwog
fQogCiAvKioKQEAgLTI5MjIsNyArMjg3NSw3IEBAIFdlYktpdFdlYkluc3BlY3Rvciogd2Via2l0
X3dlYl92aWV3X2dldF9pbnNwZWN0b3IoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwogCiAg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIHJldHVy
biBwcml2LT53ZWJJbnNwZWN0b3I7CisgICAgcmV0dXJuIHByaXYtPndlYkluc3BlY3Rvci5nZXQo
KTsKIH0KIAogLy8gaW50ZXJuYWwKQEAgLTI5MzMsMTEgKzI4ODYsOSBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRXZQogICAgIGlmICghd2ViV2luZG93RmVhdHVyZXMpCiAgICAgICByZXR1cm47CiAK
LSAgICBpZiAod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwocHJpdi0+d2ViV2luZG93
RmVhdHVyZXMsIHdlYldpbmRvd0ZlYXR1cmVzKSkKKyAgICBpZiAod2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfZXF1YWwocHJpdi0+d2ViV2luZG93RmVhdHVyZXMuZ2V0KCksIHdlYldpbmRvd0Zl
YXR1cmVzKSkKICAgICAgIHJldHVybjsKIAotICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldp
bmRvd0ZlYXR1cmVzKTsKLSAgICBnX29iamVjdF9yZWYod2ViV2luZG93RmVhdHVyZXMpOwogICAg
IHByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0gd2ViV2luZG93RmVhdHVyZXM7CiB9CiAKQEAgLTI5
NTcsNyArMjkwOCw3IEBAIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWCiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAogICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICByZXR1cm4gcHJpdi0+
d2ViV2luZG93RmVhdHVyZXM7CisgICAgcmV0dXJuIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzLmdl
dCgpOwogfQogCiAvKioKQEAgLTMwMjcsNyArMjk3OCw3IEBAIFdlYktpdFdlYkJhY2tGb3J3YXJk
TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdChXZWJLaXRXZWJWaWV3
KiB3CiAgICAgaWYgKCFjb3JlKHdlYlZpZXcpIHx8ICFjb3JlKHdlYlZpZXcpLT5iYWNrRm9yd2Fy
ZExpc3QoKS0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBw
cml2LT5iYWNrRm9yd2FyZExpc3Q7CisgICAgcmV0dXJuIHByaXYtPmJhY2tGb3J3YXJkTGlzdC5n
ZXQoKTsKIH0KIAogLyoqCkBAIC0zNzg3LDcgKzM3MzgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmll
d196b29tX2luKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgZ2Zsb2F0IHpvb21NdWx0aXBsaWVyUmF0
aW87Ci0gICAgZ19vYmplY3RfZ2V0KHByaXYtPndlYlNldHRpbmdzLCAiem9vbS1zdGVwIiwgJnpv
b21NdWx0aXBsaWVyUmF0aW8sIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChwcml2LT53ZWJTZXR0
aW5ncy5nZXQoKSwgInpvb20tc3RlcCIsICZ6b29tTXVsdGlwbGllclJhdGlvLCBOVUxMKTsKIAog
ICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3pvb21fbGV2ZWwod2ViVmlldykgKyB6b29tTXVsdGlwbGllclJhdGlvKTsKIH0KQEAg
LTM4MDgsNyArMzc1OSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3pvb21fb3V0KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZp
ZXctPnByaXY7CiAgICAgZ2Zsb2F0IHpvb21NdWx0aXBsaWVyUmF0aW87Ci0gICAgZ19vYmplY3Rf
Z2V0KHByaXYtPndlYlNldHRpbmdzLCAiem9vbS1zdGVwIiwgJnpvb21NdWx0aXBsaWVyUmF0aW8s
IE5VTEwpOworICAgIGdfb2JqZWN0X2dldChwcml2LT53ZWJTZXR0aW5ncy5nZXQoKSwgInpvb20t
c3RlcCIsICZ6b29tTXVsdGlwbGllclJhdGlvLCBOVUxMKTsKIAogICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwo
d2ViVmlldykgLSB6b29tTXVsdGlwbGllclJhdGlvKTsKIH0KQEAgLTM5MjMsOSArMzg3NCw4IEBA
IGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VuY29kaW5nKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAKICAgICBpZiAoIWVuY29kaW5nLmlzRW1wdHkoKSkgewogICAgICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgICAgIGdfZnJlZShw
cml2LT5lbmNvZGluZyk7Ci0gICAgICAgIHByaXYtPmVuY29kaW5nID0gZ19zdHJkdXAoZW5jb2Rp
bmcudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBwcml2LT5lbmNvZGluZzsKKyAgICAg
ICAgcHJpdi0+ZW5jb2Rpbmcuc2V0KGdfc3RyZHVwKGVuY29kaW5nLnV0ZjgoKS5kYXRhKCkpKTsK
KyAgICAgICAgcmV0dXJuIHByaXYtPmVuY29kaW5nLmdldCgpOwogICAgIH0gZWxzZQogICAgICAg
cmV0dXJuIE5VTEw7CiB9CkBAIC0zOTY2LDkgKzM5MTYsOCBAQCBjb25zdCBjaGFyKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2N1c3RvbV9lbmNvZGluZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAg
ICAgaWYgKCFvdmVycmlkZUVuY29kaW5nLmlzRW1wdHkoKSkgewogICAgICAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgICAgIGdfZnJlZSAocHJpdi0+
Y3VzdG9tRW5jb2RpbmcpOwotICAgICAgICBwcml2LT5jdXN0b21FbmNvZGluZyA9IGdfc3RyZHVw
KG92ZXJyaWRlRW5jb2RpbmcudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBwcml2LT5j
dXN0b21FbmNvZGluZzsKKyAgICAgICAgcHJpdi0+Y3VzdG9tRW5jb2Rpbmcuc2V0KGdfc3RyZHVw
KG92ZXJyaWRlRW5jb2RpbmcudXRmOCgpLmRhdGEoKSkpOworICAgICAgICByZXR1cm4gcHJpdi0+
Y3VzdG9tRW5jb2RpbmcuZ2V0KCk7CiAgICAgfSBlbHNlCiAgICAgICByZXR1cm4gTlVMTDsKIH0K
QEAgLTQxMjMsMTEgKzQwNzIsMTEgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYWRkX3Jlc291cmNl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNoYXIqIGlkZW50aWZpZXIsIFdlYksKIAogICAgIGlm
ICghcHJpdi0+bWFpblJlc291cmNlKSB7CiAgICAgICAgIHByaXYtPm1haW5SZXNvdXJjZSA9IHdl
YlJlc291cmNlOwotICAgICAgICBwcml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVyID0gZ19zdHJk
dXAoaWRlbnRpZmllcik7CisgICAgICAgIHByaXYtPm1haW5SZXNvdXJjZUlkZW50aWZpZXIuc2V0
KGdfc3RyZHVwKGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdf
aGFzaF90YWJsZV9pbnNlcnQocHJpdi0+c3ViUmVzb3VyY2VzLCBpZGVudGlmaWVyLCB3ZWJSZXNv
dXJjZSk7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydChwcml2LT5zdWJSZXNvdXJjZXMuZ2V0KCks
IGlkZW50aWZpZXIsIHdlYlJlc291cmNlKTsKIH0KIAogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtp
dF93ZWJfdmlld19nZXRfcmVzb3VyY2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY2hhciogaWRl
bnRpZmllcikKQEAgLTQxMzUsMTMgKzQwODQsMTMgQEAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtp
dF93ZWJfdmlld19nZXRfcmVzb3VyY2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY2hhciogaWQK
ICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgZ3Bv
aW50ZXIgd2ViUmVzb3VyY2UgPSBOVUxMOwogCi0gICAgZ2Jvb2xlYW4gcmVzb3VyY2VGb3VuZCA9
IGdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQocHJpdi0+c3ViUmVzb3VyY2VzLCBpZGVudGlm
aWVyLCBOVUxMLCAmd2ViUmVzb3VyY2UpOworICAgIGdib29sZWFuIHJlc291cmNlRm91bmQgPSBn
X2hhc2hfdGFibGVfbG9va3VwX2V4dGVuZGVkKHByaXYtPnN1YlJlc291cmNlcy5nZXQoKSwgaWRl
bnRpZmllciwgTlVMTCwgJndlYlJlc291cmNlKTsKIAogICAgIC8vIFRoZSBvbmx5IHJlc291cmNl
IHdlIGRvIG5vdCBzdG9yZSBpbiB0aGlzIGhhc2ggdGFibGUgaXMgdGhlCiAgICAgLy8gbWFpbiEg
IElmIHdlIGRpZCBub3QgZmluZCBhIHJlcXVlc3QsIGl0IHByb2JhYmx5IG1lYW5zIHRoZSBsb2Fk
CiAgICAgLy8gaGFzIGJlZW4gaW50ZXJydXB0ZWQgd2hpbGUgd2hpbGUgYSByZXNvdXJjZSB3YXMg
c3RpbGwgYmVpbmcKICAgICAvLyBsb2FkZWQuCi0gICAgaWYgKCFyZXNvdXJjZUZvdW5kICYmICFn
X3N0cl9lcXVhbChpZGVudGlmaWVyLCBwcml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAg
ICBpZiAoIXJlc291cmNlRm91bmQgJiYgIWdfc3RyX2VxdWFsKGlkZW50aWZpZXIsIHByaXYtPm1h
aW5SZXNvdXJjZUlkZW50aWZpZXIuZ2V0KCkpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAg
IGlmICghd2ViUmVzb3VyY2UpCkBAIC00MTUyLDMwICs0MTAxLDI0IEBAIFdlYktpdFdlYlJlc291
cmNlKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNoYXIqIGlkCiAKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
cmVzb3VyY2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICByZXR1cm4gd2ViVmlldy0+
cHJpdi0+bWFpblJlc291cmNlOworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5tYWluUmVzb3Vy
Y2UuZ2V0KCk7CiB9CiAKIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsZWFyX3Jlc291cmNlcyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKLQotICAgIGdfZnJlZShwcml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVy
KTsKLSAgICBwcml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVyID0gTlVMTDsKLQotICAgIGlmIChw
cml2LT5tYWluUmVzb3VyY2UpIHsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpblJl
c291cmNlKTsKLSAgICAgICAgcHJpdi0+bWFpblJlc291cmNlID0gTlVMTDsKLSAgICB9CisgICAg
cHJpdi0+bWFpblJlc291cmNlSWRlbnRpZmllci5jbGVhcigpOworICAgIHByaXYtPm1haW5SZXNv
dXJjZS5jbGVhcigpOwogCiAgICAgaWYgKHByaXYtPnN1YlJlc291cmNlcykKLSAgICAgICAgZ19o
YXNoX3RhYmxlX3JlbW92ZV9hbGwocHJpdi0+c3ViUmVzb3VyY2VzKTsKKyAgICAgICAgZ19oYXNo
X3RhYmxlX3JlbW92ZV9hbGwocHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKIH0KIAogR0xpc3Qq
IHdlYmtpdF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAg
IEdMaXN0KiBzdWJSZXNvdXJjZXMgPSBnX2hhc2hfdGFibGVfZ2V0X3ZhbHVlcyhwcml2LT5zdWJS
ZXNvdXJjZXMpOwotICAgIHJldHVybiBnX2xpc3RfcmVtb3ZlKHN1YlJlc291cmNlcywgcHJpdi0+
bWFpblJlc291cmNlKTsKKyAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0gZ19oYXNoX3RhYmxlX2dl
dF92YWx1ZXMocHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKKyAgICByZXR1cm4gZ19saXN0X3Jl
bW92ZShzdWJSZXNvdXJjZXMsIHByaXYtPm1haW5SZXNvdXJjZS5nZXQoKSk7CiB9CiAKIC8qIEZy
b20gRXZlbnRIYW5kbGVyLmNwcCAqLwpAQCAtNDE5MSwxMiArNDEzNCwxMSBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19zZXRfdG9vbHRpcF90ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0
IGNoYXIqIHRvb2x0aQogewogI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsIDEyLCAwKQogICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBnX2ZyZWUocHJp
di0+dG9vbHRpcFRleHQpOwogICAgIGlmICh0b29sdGlwICYmICp0b29sdGlwICE9ICdcMCcpIHsK
LSAgICAgICAgcHJpdi0+dG9vbHRpcFRleHQgPSBnX3N0cmR1cCh0b29sdGlwKTsKKyAgICAgICAg
cHJpdi0+dG9vbHRpcFRleHQuc2V0KGdfc3RyZHVwKHRvb2x0aXApKTsKICAgICAgICAgZ3RrX3dp
ZGdldF9zZXRfaGFzX3Rvb2x0aXAoR1RLX1dJREdFVCh3ZWJWaWV3KSwgVFJVRSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgcHJpdi0+dG9vbHRpcFRleHQgPSAwOworICAgICAgICBwcml2LT50b29s
dGlwVGV4dC5jbGVhcigpOwogICAgICAgICBndGtfd2lkZ2V0X3NldF9oYXNfdG9vbHRpcChHVEtf
V0lER0VUKHdlYlZpZXcpLCBGQUxTRSk7CiAgICAgfQogCkBAIC00MjU0LDkgKzQxOTYsOCBAQCBH
X0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF9pY29uX3VyaShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIFN0cmluZyBpY29uVVJMID0gaWNvbkRhdGFiYXNlKCktPmlj
b25VUkxGb3JQYWdlVVJMKGNvcmVQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnBy
ZXR0eVVSTCgpKTsKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+
cHJpdjsKLSAgICBnX2ZyZWUocHJpdi0+aWNvblVSSSk7Ci0gICAgcHJpdi0+aWNvblVSSSA9IGdf
c3RyZHVwKGljb25VUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIHByaXYtPmljb25VUkk7
CisgICAgcHJpdi0+aWNvblVSSS5zZXQoZ19zdHJkdXAoaWNvblVSTC51dGY4KCkuZGF0YSgpKSk7
CisgICAgcmV0dXJuIHByaXYtPmljb25VUkkuZ2V0KCk7CiB9CiAKIC8qKgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56658</attachid>
            <date>2010-05-20 18:45:13 -0700</date>
            <delta_ts>2010-09-10 14:47:50 -0700</delta_ts>
            <desc>Patch which doesn&apos;t change the order of release of members</desc>
            <filename>bug-21594-20100520184512.patch</filename>
            <type>text/plain</type>
            <size>29634</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggZmJkZTZlNTU3Zjc2ZDM2MjQzZDM4NDI1ZjVhMzA5YzgzNmI4Y2I1Ni4uZmUzODQ2MWJh
NmY0ZDlmMWY3Nzg3OGMyYWFjNzMwOWZhZjE3YzBlYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAx
MC0wNS0yMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gVXNlIEdPd25Q
dHIgZm9yIGNvZGUgdGhhdCBuZWVkcyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1OTQKKworICAgICAgICBDb252ZXJ0IG1hbnkgdXNlcyBvZiBy
YXcgcG9pbnRlcnMgdG8gR1JlZlB0ciBhbmQgR093blB0ciBpbiBXZWJLaXRXZWJWaWV3LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjppbnB1dE1ldGhvZHNNZW51SXRlbSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50Ojpz
ZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50Ojpo
YW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OkVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6fkVkaXRvckNs
aWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojpwb3N0Q29tbWl0RnJhbWVWaWV3U2V0dXApOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAoZGVzdHJveV9tZW51X2NiKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
a2V5X3JlbGVhc2VfZXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2J1dHRvbl9yZWxl
YXNlX2V2ZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfb3V0X2V2ZW50KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19yZWFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfc2Nyb2xs
X2FkanVzdG1lbnRzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZSk6CisgICAgICAgICh3ZWJWaWV3R2V0RFBJKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfcXVlcnlfdG9vbHRpcCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2ltX2NvbnRleHQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3NldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IpOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9i
YWNrX2ZvcndhcmRfbGlzdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfem9vbV9pbik6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfem9vbV9vdXQpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2dldF9lbmNvZGluZyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9l
bmNvZGluZyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYWRkX3Jlc291cmNlKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2UpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2dldF9tYWluX3Jlc291cmNlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGVhcl9y
ZXNvdXJjZXMpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zdWJyZXNvdXJjZXMpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF90b29sdGlwX3RleHQpOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2dldF9pY29uX3VyaSk6CisKIDIwMTAtMDUtMTkgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI1OTI0MC4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0
TWVudUNsaWVudEd0ay5jcHAKaW5kZXggNWMxYmMwYjhkNGQxNTgyOGM2NWE0YmVjYWQ5ZWMxODA3
OGFkYzAwYS4uMDY5ZmIxOWIxYjlkYzQ1YmVkMTZjNzAyNDQ3Zjc5NDdkZGQzOTQ0YSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIEd0a1dpZGdldCogaW5wdXRNZXRob2RzTWVudUl0ZW0g
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKICAgICBHdGtXaWRnZXQq
IGltQ29udGV4dE1lbnUgPSBndGtfbWVudV9uZXcoKTsKLSAgICBndGtfaW1fbXVsdGljb250ZXh0
X2FwcGVuZF9tZW51aXRlbXMoR1RLX0lNX01VTFRJQ09OVEVYVChwcml2LT5pbUNvbnRleHQpLCBH
VEtfTUVOVV9TSEVMTChpbUNvbnRleHRNZW51KSk7CisgICAgZ3RrX2ltX211bHRpY29udGV4dF9h
cHBlbmRfbWVudWl0ZW1zKEdUS19JTV9NVUxUSUNPTlRFWFQocHJpdi0+aW1Db250ZXh0LmdldCgp
KSwgR1RLX01FTlVfU0hFTEwoaW1Db250ZXh0TWVudSkpOwogCiAgICAgZ3RrX21lbnVfaXRlbV9z
ZXRfc3VibWVudShHVEtfTUVOVV9JVEVNKG1lbnVpdGVtKSwgaW1Db250ZXh0TWVudSk7CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBhNWMz
NmU4MzNhNjhhNzVhODhiZjE0NzIyOWViMTIyNTU0NGU2MmMxLi5kM2Y4ZmExOTVkNGI5YTY0MDM3
MDJhNjRhNjFiNmY5MmM2ZTIyMDJhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yMjAsMTUgKzIyMCwxNSBAQCB2b2lkIEVkaXRvckNsaWVu
dDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGFjdGl2ZSkKICAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKIAogICAgIGlmIChhY3RpdmUpCi0gICAgICAg
IGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dCk7CisgICAgICAgIGd0a19p
bV9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAgICAgZWxzZQotICAg
ICAgICBndGtfaW1fY29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAg
Z3RrX2ltX2NvbnRleHRfZm9jdXNfb3V0KHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAKICNpZmRl
ZiBNQUVNT19DSEFOR0VTCiAgICAgaWYgKGFjdGl2ZSkKLSAgICAgICAgaGlsZG9uX2d0a19pbV9j
b250ZXh0X3Nob3cocHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgaGlsZG9uX2d0a19pbV9jb250
ZXh0X3Nob3cocHJpdi0+aW1Db250ZXh0LmdldCgpKTsKICAgICBlbHNlCi0gICAgICAgIGhpbGRv
bl9ndGtfaW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4dCk7CisgICAgICAgIGhpbGRvbl9n
dGtfaW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIH0KIApA
QCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKCkKICAgICB1bnNpZ25lZCBlbmQ7CiAgICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9y
KCktPmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHN0YXJ0LCBlbmQpKSB7CiAgICAgICAgIC8vIGd0
a19pbV9jb250ZXh0X3Jlc2V0KCkgY2xlYXJzIHRoZSBjb21wb3NpdGlvbiBmb3IgdXMuCi0gICAg
ICAgIGd0a19pbV9jb250ZXh0X3Jlc2V0KHByaXYtPmltQ29udGV4dCk7CisgICAgICAgIGd0a19p
bV9jb250ZXh0X3Jlc2V0KHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAgICAgICAgIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uV2l0aG91dERpc3R1cmJpbmdTZWxlY3Rp
b24oKTsKICAgICB9CiB9CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6Omhh
bmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBtX3RyZWF0
Q29udGV4dENvbW1pdEFzS2V5RXZlbnQgPSAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29t
cG9zaXRpb24oKSkKICAgICAgICAgICYmIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgp
LT5rZXl2YWw7CiAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKLSAgICBpZiAoKGd0a19p
bV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVu
dCgpLT5nZGtFdmVudEtleSgpKSAmJiAhbV9wZW5kaW5nQ29tcG9zaXRpb24pCisgICAgaWYgKChn
dGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250ZXh0LmdldCgpLCBldmVu
dC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQog
ICAgICAgICB8fCAoIW1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAhdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSkKICAgICAgICAgZXZlbnQtPnByZXZlbnRE
ZWZhdWx0KCk7CiAKQEAgLTcxNCw4ICs3MTQsOCBAQCBFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVu
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICwgbV9uYXRpdmVXaWRnZXQoZ3RrX3RleHRf
dmlld19uZXcoKSkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmll
dy0+cHJpdjsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgImNvbW1pdCIs
IEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0dGVkKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChwcml2LT5pbUNvbnRleHQsICJwcmVlZGl0LWNoYW5nZWQiLCBHX0NBTExCQUNLKGltQ29u
dGV4dFByZWVkaXRDaGFuZ2VkKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5p
bUNvbnRleHQuZ2V0KCksICJjb21taXQiLCBHX0NBTExCQUNLKGltQ29udGV4dENvbW1pdHRlZCks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LmdldCgpLCAicHJl
ZWRpdC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZCksIHRoaXMp
OwogCiAgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImJhY2tzcGFj
ZSIsIEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY3V0LWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0so
Y3V0Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTcyOSw4ICs3MjksOCBAQCBFZGl0b3JD
bGllbnQ6OkVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogRWRpdG9yQ2xpZW50
Ojp+RWRpdG9yQ2xpZW50KCkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1f
d2ViVmlldy0+cHJpdjsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
cHJpdi0+aW1Db250ZXh0LCAoZ3BvaW50ZXIpaW1Db250ZXh0Q29tbWl0dGVkLCB0aGlzKTsKLSAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+aW1Db250ZXh0LCAo
Z3BvaW50ZXIpaW1Db250ZXh0UHJlZWRpdENoYW5nZWQsIHRoaXMpOworICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT5pbUNvbnRleHQuZ2V0KCksIChncG9pbnRl
cilpbUNvbnRleHRDb21taXR0ZWQsIHRoaXMpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nv
bm5lY3RfYnlfZnVuYyhwcml2LT5pbUNvbnRleHQuZ2V0KCksIChncG9pbnRlcilpbUNvbnRleHRQ
cmVlZGl0Q2hhbmdlZCwgdGhpcyk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGRE
aWRCZWdpbkVkaXRpbmcoRWxlbWVudCopCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGZkMmQ3ZWQzZWVhYjU3MGI1MTNhZDI1
ODg5N2M5MWY5MDZkMjMwYmYuLjk5ZWMyZGEwOTRkMDIwZTFiZDk3NmY5YmYzOTcyMDkzYTNiNmNh
NjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCkBAIC0xMTM1LDE0ICsxMTM1LDEzIEBAIHN0YXRpYyB2b2lkIHBvc3RDb21taXRG
cmFtZVZpZXdTZXR1cChXZWJLaXRXZWJGcmFtZSAqZnJhbWUsIEZyYW1lVmlldyAqdmlldywgYm9v
CiB7CiAgICAgV2ViS2l0V2ViVmlldyogY29udGFpbmluZ1dpbmRvdyA9IGdldFZpZXdGcm9tRnJh
bWUoZnJhbWUpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9QUklWQVRFKGNvbnRhaW5pbmdXaW5kb3cpOwotICAgIHZpZXctPnNldEd0a0FkanVz
dG1lbnRzKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50LCBwcml2LT52ZXJ0aWNhbEFkanVzdG1l
bnQsIHJlc2V0VmFsdWVzKTsKKyAgICB2aWV3LT5zZXRHdGtBZGp1c3RtZW50cyhwcml2LT5ob3Jp
em9udGFsQWRqdXN0bWVudC5nZXQoKSwgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50LmdldCgpLCBy
ZXNldFZhbHVlcyk7CiAKICAgICBpZiAocHJpdi0+Y3VycmVudE1lbnUpIHsKLSAgICAgICAgR3Rr
TWVudSogbWVudSA9IHByaXYtPmN1cnJlbnRNZW51OwotICAgICAgICBwcml2LT5jdXJyZW50TWVu
dSA9IDA7CisgICAgICAgIEdSZWZQdHI8R3RrTWVudT4gbWVudShwcml2LT5jdXJyZW50TWVudSk7
CisgICAgICAgIHByaXYtPmN1cnJlbnRNZW51LmNsZWFyKCk7CiAKLSAgICAgICAgZ3RrX21lbnVf
cG9wZG93bihtZW51KTsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYobWVudSk7CisgICAgICAgIGd0
a19tZW51X3BvcGRvd24obWVudS5nZXQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmgKaW5kZXggMDU3YjBlNWFjYTdhNmRiZjUxMDU4OTEwYjc2MWNiMDliODA3ZjQ0Yy4u
YWJjYTNjODNjYzQzMDQzOTMzMWRiNjdmY2ZmNDcyYjQyNjgzMWZlMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHByaXZhdGUuaApAQCAtMTE1LDQyICsxMTUsNDIgQEAgZXh0ZXJuICJDIiB7CiAgICAgdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOwog
ICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAgICBXZWJDb3JlOjpQYWdl
KiBjb3JlUGFnZTsKLSAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzOwotICAg
ICAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcjsKLSAgICAgICAgV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOworICAgICAgICBHUmVmUHRyPFdlYktp
dFdlYlNldHRpbmdzPiB3ZWJTZXR0aW5nczsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJJbnNw
ZWN0b3I+IHdlYkluc3BlY3RvcjsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcz4gd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5G
cmFtZTsKLSAgICAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3Q7
CisgICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZExp
c3Q7CiAKLSAgICAgICAgR3RrTWVudSogY3VycmVudE1lbnU7CisgICAgICAgIEdSZWZQdHI8R3Rr
TWVudT4gY3VycmVudE1lbnU7CiAgICAgICAgIGdpbnQgbGFzdFBvcHVwWFBvc2l0aW9uOwogICAg
ICAgICBnaW50IGxhc3RQb3B1cFlQb3NpdGlvbjsKIAogICAgICAgICBIYXNoU2V0PEd0a1dpZGdl
dCo+IGNoaWxkcmVuOwogICAgICAgICBib29sIGVkaXRhYmxlOwotICAgICAgICBHdGtJTUNvbnRl
eHQqIGltQ29udGV4dDsKKyAgICAgICAgR1JlZlB0cjxHdGtJTUNvbnRleHQ+IGltQ29udGV4dDsK
IAogICAgICAgICBnYm9vbGVhbiB0cmFuc3BhcmVudDsKIAotICAgICAgICBHdGtBZGp1c3RtZW50
KiBob3Jpem9udGFsQWRqdXN0bWVudDsKLSAgICAgICAgR3RrQWRqdXN0bWVudCogdmVydGljYWxB
ZGp1c3RtZW50OworICAgICAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IGhvcml6b250YWxBZGp1
c3RtZW50OworICAgICAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IHZlcnRpY2FsQWRqdXN0bWVu
dDsKIAogICAgICAgICBnYm9vbGVhbiB6b29tRnVsbENvbnRlbnQ7CiAgICAgICAgIFdlYktpdExv
YWRTdGF0dXMgbG9hZFN0YXR1czsKLSAgICAgICAgY2hhciogZW5jb2Rpbmc7Ci0gICAgICAgIGNo
YXIqIGN1c3RvbUVuY29kaW5nOworICAgICAgICBHT3duUHRyPGNoYXI+IGVuY29kaW5nOworICAg
ICAgICBHT3duUHRyPGNoYXI+IGN1c3RvbUVuY29kaW5nOwogCi0gICAgICAgIGNoYXIqIGljb25V
Ukk7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gaWNvblVSSTsKIAogICAgICAgICBnYm9vbGVhbiBk
aXNwb3Npbmc7CiAgICAgICAgIGdib29sZWFuIHVzZVByaW1hcnlGb3JQYXN0ZTsKIAogICAgICAg
ICAvLyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3Qg
aXMKICAgICAgICAgLy8gY3JlYXRlZCB0b28gbGF0ZSBpbiB0aGUgZnJhbWUgbG9hZGluZyBwcm9j
ZXNzLgotICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSogbWFpblJlc291cmNlOwotICAgICAgICBj
aGFyKiBtYWluUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBHSGFzaFRhYmxlKiBzdWJSZXNv
dXJjZXM7Ci0gICAgICAgIGNoYXIqIHRvb2x0aXBUZXh0OworICAgICAgICBHUmVmUHRyPFdlYktp
dFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gbWFpblJl
c291cmNlSWRlbnRpZmllcjsKKyAgICAgICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBzdWJSZXNvdXJj
ZXM7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdG9vbHRpcFRleHQ7CiAKICAgICAgICAgSGFzaE1h
cDxHZGtEcmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiA+IGRyYWdn
aW5nRGF0YU9iamVjdHM7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5k
ZXggMTBhMDgyYzg5ODZiNGZlYjRlYzAwNTM1OTRkODE4NWU1YTc5MjU1OS4uMzM4OGU0ODVlYTQ5
ZjhjZjZiYmVlMjJjYzU0MjA1NWEwYzRjMmMyMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKQEAgLTIwNCw5ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X21lbnVfY2IoR3Rr
T2JqZWN0KiBvYmplY3QsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IFdFQktJVF9XRUJfVklFVyhkYXRhKTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLQotICAgIGdfb2Jq
ZWN0X3VucmVmKHByaXYtPmN1cnJlbnRNZW51KTsKLSAgICBwcml2LT5jdXJyZW50TWVudSA9IE5V
TEw7CisgICAgcHJpdi0+Y3VycmVudE1lbnUgPSAwOwogfQogCiBzdGF0aWMgdm9pZCBQb3B1cE1l
bnVQb3NpdGlvbkZ1bmMoR3RrTWVudSogbWVudSwgZ2ludCAqeCwgZ2ludCAqeSwgZ2Jvb2xlYW4g
KnB1c2hJbiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC0yOTYsNyArMjk0LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWUKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0g
ICAgcHJpdi0+Y3VycmVudE1lbnUgPSBHVEtfTUVOVShnX29iamVjdF9yZWYobWVudSkpOworICAg
IHByaXYtPmN1cnJlbnRNZW51ID0gbWVudTsKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24g
PSBldmVudC5nbG9iYWxYKCk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gZXZlbnQu
Z2xvYmFsWSgpOwogCkBAIC01NzAsNyArNTY4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93
ZWJfdmlld19rZXlfcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkK
ICAgICAvLyB0aGUgZXZlbnQgaWYgd2UgZG9uJ3QgaGF2ZSBhIHBlbmRpbmcgY29tcG9zaXRpb24s
IGJlY2F1c2UgdGhhdCBtZWFucyB3ZQogICAgIC8vIGFyZSB1c2luZyBhIGNvbnRleHQgbGlrZSAn
c2ltcGxlJyB3aGljaCBtYXJrcyBldmVyeSBrZXlzdHJva2UgYXMgZmlsdGVyZWQuCiAgICAgV2Vi
S2l0OjpFZGl0b3JDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RWRpdG9yQ2xp
ZW50Kj4oY29yZSh3ZWJWaWV3KS0+ZWRpdG9yQ2xpZW50KCkpOwotICAgIGlmIChndGtfaW1fY29u
dGV4dF9maWx0ZXJfa2V5cHJlc3Mod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0LCBldmVudCkgJiYg
IWNsaWVudC0+aGFzUGVuZGluZ0NvbXBvc2l0aW9uKCkpCisgICAgaWYgKGd0a19pbV9jb250ZXh0
X2ZpbHRlcl9rZXlwcmVzcyh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQuZ2V0KCksIGV2ZW50KSAm
JiAhY2xpZW50LT5oYXNQZW5kaW5nQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIFRSVUU7
CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC02MjcsNyArNjI1LDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19idXR0b25fcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnQKICAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCkt
PmNhbkVkaXQoKSkgewogI2lmZGVmIE1BRU1PX0NIQU5HRVMKICAgICAgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgICAgICBoaWxkb25fZ3RrX2ltX2Nv
bnRleHRfZmlsdGVyX2V2ZW50KHByaXYtPmltQ29udGV4dCwgKEdka0V2ZW50KilldmVudCk7Cisg
ICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9maWx0ZXJfZXZlbnQocHJpdi0+aW1Db250ZXh0
LmdldCgpLCAoR2RrRXZlbnQqKWV2ZW50KTsKICNlbmRpZgogICAgIH0KIApAQCAtNzMwLDcgKzcy
OCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFt
ZSgpKTsKIAotICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2LT5p
bUNvbnRleHQpOworICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2
LT5pbUNvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3
ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVu
dCk7CiB9CkBAIC03NDgsNyArNzQ2LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19mb2N1c19vdXRfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMKICAgICB9
CiAKICAgICBpZiAod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KQotICAgICAgICBndGtfaW1fY29u
dGV4dF9mb2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgZ3RrX2lt
X2NvbnRleHRfZm9jdXNfb3V0KHdlYlZpZXctPnByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAKICAg
ICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+
Zm9jdXNfb3V0X2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQpAQCAtNzg3LDcgKzc4NSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogCiAg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwogICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBndGtfaW1f
Y29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRleHQsIHdpZGdldC0+d2luZG93
KTsKKyAgICBndGtfaW1fY29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRleHQu
Z2V0KCksIHdpZGdldC0+d2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3NldF9zY3JvbGxfYWRqdXN0bWVudHMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0
bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaikKQEAgLTc5NiwxOSArNzk0LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zY3JvbGxfYWRqdXN0bWVudHMoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgR3RrQWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpLT52aWV3
KCk7Ci0KLSAgICBpZiAoaGFkaikKLSAgICAgICAgZ19vYmplY3RfcmVmKGhhZGopOwotICAgIGlm
ICh2YWRqKQotICAgICAgICBnX29iamVjdF9yZWYodmFkaik7Ci0KICAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICBpZiAocHJpdi0+aG9yaXpvbnRh
bEFkanVzdG1lbnQpCi0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmhvcml6b250YWxBZGp1
c3RtZW50KTsKLSAgICBpZiAocHJpdi0+dmVydGljYWxBZGp1c3RtZW50KQotICAgICAgICBnX29i
amVjdF91bnJlZihwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQpOwotCiAgICAgcHJpdi0+aG9yaXpv
bnRhbEFkanVzdG1lbnQgPSBoYWRqOwogICAgIHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9IHZh
ZGo7CiAKQEAgLTEwNzYsMjAgKzEwNjIsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogCiAgICAgcHJpdi0+ZGlzcG9zaW5nID0gVFJVRTsK
IAotICAgIGlmIChwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudCkgewotICAgICAgICBnX29iamVj
dF91bnJlZihwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudCk7Ci0gICAgICAgIHByaXYtPmhvcml6
b250YWxBZGp1c3RtZW50ID0gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAocHJpdi0+dmVydGljYWxB
ZGp1c3RtZW50KSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPnZlcnRpY2FsQWRqdXN0
bWVudCk7Ci0gICAgICAgIHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9IE5VTEw7Ci0gICAgfQot
Ci0gICAgaWYgKHByaXYtPmJhY2tGb3J3YXJkTGlzdCkgewotICAgICAgICBnX29iamVjdF91bnJl
Zihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwotICAgICAgICBwcml2LT5iYWNrRm9yd2FyZExpc3Qg
PSBOVUxMOwotICAgIH0KKyAgICAvLyBUaGVzZSBtdXN0IGJlIGNsZWFyZWQgQkVGT1JFIHRoZSBj
b3JlUGFnZSBpcyBkZWxldGVkLgorICAgIHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50LmNsZWFy
KCk7CisgICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50LmNsZWFyKCk7CisgICAgcHJpdi0+YmFj
a0ZvcndhcmRMaXN0LmNsZWFyKCk7CiAKICAgICBpZiAocHJpdi0+Y29yZVBhZ2UpIHsKICAgICAg
ICAgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSk7
CkBAIC0xMTAwLDMwICsxMDc2LDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNw
b3NlKEdPYmplY3QqIG9iamVjdCkKICAgICB9CiAKICAgICBpZiAocHJpdi0+d2ViU2V0dGluZ3Mp
IHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndl
YlNldHRpbmdzLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2Vi
Vmlldyk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKLSAgICAg
ICAgcHJpdi0+d2ViU2V0dGluZ3MgPSBOVUxMOwotCi0gICAgICAgIGdfb2JqZWN0X3VucmVmKHBy
aXYtPndlYkluc3BlY3Rvcik7Ci0gICAgICAgIHByaXYtPndlYkluc3BlY3RvciA9IE5VTEw7Ci0K
LSAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwotICAgICAg
ICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IE5VTEw7Ci0KLSAgICAgICAgZ19vYmplY3RfdW5y
ZWYocHJpdi0+aW1Db250ZXh0KTsKLSAgICAgICAgcHJpdi0+aW1Db250ZXh0ID0gTlVMTDsKLSAg
ICB9Ci0KLSAgICBpZiAocHJpdi0+bWFpblJlc291cmNlKSB7Ci0gICAgICAgIGdfb2JqZWN0X3Vu
cmVmKHByaXYtPm1haW5SZXNvdXJjZSk7Ci0gICAgICAgIHByaXYtPm1haW5SZXNvdXJjZSA9IE5V
TEw7Ci0gICAgfQotCi0gICAgaWYgKHByaXYtPnN1YlJlc291cmNlcykgewotICAgICAgICBnX2hh
c2hfdGFibGVfdW5yZWYocHJpdi0+c3ViUmVzb3VyY2VzKTsKLSAgICAgICAgcHJpdi0+c3ViUmVz
b3VyY2VzID0gTlVMTDsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jKHByaXYtPndlYlNldHRpbmdzLmdldCgpLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3Nl
dHRpbmdzX25vdGlmeSwgd2ViVmlldyk7CisgICAgICAgIHByaXYtPndlYlNldHRpbmdzLmNsZWFy
KCk7CiAgICAgfQogCisgICAgcHJpdi0+d2ViSW5zcGVjdG9yLmNsZWFyKCk7CisgICAgcHJpdi0+
d2ViV2luZG93RmVhdHVyZXMuY2xlYXIoKTsKKyAgICBwcml2LT5pbUNvbnRleHQuY2xlYXIoKTsK
KyAgICBwcml2LT5tYWluUmVzb3VyY2UuY2xlYXIoKTsKKyAgICBwcml2LT5zdWJSZXNvdXJjZXMu
Y2xlYXIoKTsKICAgICBwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNsZWFyKCk7CiAKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmpl
Y3QpOwpAQCAtMTEzNCwxMSArMTA5NSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7CiAKLSAgICBnX2ZyZWUocHJpdi0+dG9vbHRpcFRleHQpOwotICAgIGdf
ZnJlZShwcml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBnX2ZyZWUocHJpdi0+ZW5j
b2RpbmcpOwotICAgIGdfZnJlZShwcml2LT5jdXN0b21FbmNvZGluZyk7Ci0gICAgZ19mcmVlKHBy
aXYtPmljb25VUkkpOworICAgIHByaXYtPnRvb2x0aXBUZXh0LmNsZWFyKCk7CisgICAgcHJpdi0+
bWFpblJlc291cmNlSWRlbnRpZmllci5jbGVhcigpOworICAgIHByaXYtPmVuY29kaW5nLmNsZWFy
KCk7CisgICAgcHJpdi0+Y3VzdG9tRW5jb2RpbmcuY2xlYXIoKTsKKyAgICBwcml2LT5pY29uVVJJ
LmNsZWFyKCk7CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KQEAgLTExODksNyArMTE1MCw3IEBAIHN0YXRpYyBB
dGtPYmplY3QqIHdlYmtpdF93ZWJfdmlld19nZXRfYWNjZXNzaWJsZShHdGtXaWRnZXQqIHdpZGdl
dCkKIHN0YXRpYyBnZG91YmxlIHdlYlZpZXdHZXREUEkoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
IHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAg
V2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7CisgICAg
V2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCk7
CiAgICAgZ2Jvb2xlYW4gZW5mb3JjZTk2RFBJOwogICAgIGdfb2JqZWN0X2dldCh3ZWJTZXR0aW5n
cywgImVuZm9yY2UtOTYtZHBpIiwgJmVuZm9yY2U5NkRQSSwgTlVMTCk7CiAgICAgaWYgKGVuZm9y
Y2U5NkRQSSkKQEAgLTEyMTUsNyArMTE3Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19zY3JlZW5fY2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrU2NyZWVuKiBwcmV2aW91CiAg
ICAgaWYgKHByaXYtPmRpc3Bvc2luZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0V2Vi
U2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7CisgICAgV2ViS2l0V2Vi
U2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCk7CiAgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gY29yZSh3ZWJWaWV3KS0+c2V0dGluZ3MoKTsKICAgICBnZG91Ymxl
IERQSSA9IHdlYlZpZXdHZXREUEkod2ViVmlldyk7CiAKQEAgLTEyNjQsNyArMTIyNSw3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcXVlcnlfdG9vbHRpcChHdGtXaWRnZXQgKndp
ZGdldCwgZ2ludCB4LCBnaW50IHksCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBX
RUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2lkZ2V0KTsKIAogICAgIGlmIChwcml2LT50b29s
dGlwVGV4dCkgewotICAgICAgICBndGtfdG9vbHRpcF9zZXRfdGV4dCh0b29sdGlwLCBwcml2LT50
b29sdGlwVGV4dCk7CisgICAgICAgIGd0a190b29sdGlwX3NldF90ZXh0KHRvb2x0aXAsIHByaXYt
PnRvb2x0aXBUZXh0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCkBAIC0x
Mjc1LDcgKzEyMzYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3F1ZXJ5X3Rv
b2x0aXAoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LAogc3RhdGljIEd0a0lNQ29u
dGV4dCogd2Via2l0X3dlYl92aWV3X2dldF9pbV9jb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpLCAwKTsKLSAgICByZXR1cm4gR1RLX0lNX0NPTlRFWFQod2ViVmlldy0+cHJpdi0+aW1Db250
ZXh0KTsKKyAgICByZXR1cm4gR1RLX0lNX0NPTlRFWFQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0
LmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCkBAIC0yNTkxLDcgKzI1NTIsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3Mo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7Ci0gICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0g
cHJpdi0+d2ViU2V0dGluZ3M7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0g
cHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCk7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gY29yZSh3
ZWJWaWV3KS0+c2V0dGluZ3MoKTsKIAogICAgIGdjaGFyKiBkZWZhdWx0RW5jb2RpbmcsICpjdXJz
aXZlRm9udEZhbWlseSwgKmRlZmF1bHRGb250RmFtaWx5LCAqZmFudGFzeUZvbnRGYW1pbHksICpt
b25vc3BhY2VGb250RmFtaWx5LCAqc2Fuc1NlcmlmRm9udEZhbWlseSwgKnNlcmlmRm9udEZhbWls
eSwgKnVzZXJTdHlsZXNoZWV0VXJpOwpAQCAtMjc5NSw0MCArMjc1NiwzNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZp
ZXcpOwogICAgIHdlYlZpZXctPnByaXYgPSBwcml2OwogCi0gICAgcHJpdi0+aW1Db250ZXh0ID0g
Z3RrX2ltX211bHRpY29udGV4dF9uZXcoKTsKKyAgICBwcml2LT5pbUNvbnRleHQgPSBhZG9wdEdS
ZWYoZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKSk7CiAKICAgICBXZWJLaXQ6Okluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KHdlYlZp
ZXcpOwogICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xp
ZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3
IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50KHdl
YlZpZXcpLCBpbnNwZWN0b3JDbGllbnQsIDAsIDApOwogCiAgICAgLy8gV2UgYWxzbyBhZGQgYSBz
aW1wbGUgd3JhcHBlciBjbGFzcyB0byBwcm92aWRlIHRoZSBwdWJsaWMKICAgICAvLyBpbnRlcmZh
Y2UgZm9yIHRoZSBXZWIgSW5zcGVjdG9yLgotICAgIHByaXYtPndlYkluc3BlY3RvciA9IFdFQktJ
VF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBO
VUxMKSk7Ci0gICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X2luc3BlY3Rvcl9jbGllbnQocHJp
di0+d2ViSW5zcGVjdG9yLCBwcml2LT5jb3JlUGFnZSk7CisgICAgcHJpdi0+d2ViSW5zcGVjdG9y
ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfSU5TUEVDVE9SLCBOVUxMKSkpOworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9p
bnNwZWN0b3JfY2xpZW50KHByaXYtPndlYkluc3BlY3Rvci5nZXQoKSwgcHJpdi0+Y29yZVBhZ2Up
OwogCisgICAgLy8gVGhlc2UgYXJlIGNyZWF0ZSB3aXRoIGZsb2F0aW5nIHJlZmVyZW5jZXMsIHNv
IHRoZXkgc2hvdWxkIG5vdCBiZSB3cmFwcGVkIGluIGFkb3B0R3JlZi4KICAgICBwcml2LT5ob3Jp
em9udGFsQWRqdXN0bWVudCA9IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSk7CiAgICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50
ID0gR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjApKTsKIAotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHByaXYtPmhvcml6b250YWxBZGp1
c3RtZW50KTsKLSAgICBnX29iamVjdF9yZWZfc2luayhwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQp
OwotCiAgICAgR1RLX1dJREdFVF9TRVRfRkxBR1Mod2ViVmlldywgR1RLX0NBTl9GT0NVUyk7CiAg
ICAgcHJpdi0+bWFpbkZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX25l
dyh3ZWJWaWV3KSk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWFBvc2l0aW9uID0gcHJpdi0+bGFzdFBv
cHVwWVBvc2l0aW9uID0gLTE7CiAgICAgcHJpdi0+ZWRpdGFibGUgPSBmYWxzZTsKIAotICAgIHBy
aXYtPmJhY2tGb3J3YXJkTGlzdCA9IHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfbmV3X3dp
dGhfd2ViX3ZpZXcod2ViVmlldyk7CisgICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0ID0gYWRvcHRH
UmVmKHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfbmV3X3dpdGhfd2ViX3ZpZXcod2ViVmll
dykpOwogCiAgICAgcHJpdi0+em9vbUZ1bGxDb250ZW50ID0gRkFMU0U7CiAKLSAgICBwcml2LT53
ZWJTZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisgICAgcHJpdi0+d2ViU2V0
dGluZ3MgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKSk7CiAgICAgd2Via2l0
X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3KTsKLSAgICBnX3NpZ25hbF9jb25uZWN0
KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdf
c2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7Ci0KLSAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJl
cyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QocHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCksICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93
ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKIAotICAgIHByaXYtPnN1YlJlc291
cmNlcyA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbChnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCwgZ19m
cmVlLCBnX29iamVjdF91bnJlZik7CisgICAgcHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCkpOwogCi0gICAgcHJpdi0+dG9v
bHRpcFRleHQgPSAwOworICAgIHByaXYtPnN1YlJlc291cmNlcyA9IGFkb3B0R1JlZihnX2hhc2hf
dGFibGVfbmV3X2Z1bGwoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgZ19vYmplY3Rf
dW5yZWYpKTsKIH0KIAogR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCkBAIC0y
ODg0LDkgKzI4NDEsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYgogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyh3ZWJTZXR0aW5ncykpOwogCiAgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywgKGdwb2ludGVyKXdlYmtp
dF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOwotICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPndlYlNldHRpbmdzKTsKLSAgICBnX29iamVjdF9yZWYod2ViU2V0dGluZ3MpOworICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncy5n
ZXQoKSwgKGdwb2ludGVyKXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcp
OwogICAgIHByaXYtPndlYlNldHRpbmdzID0gd2ViU2V0dGluZ3M7CiAgICAgd2Via2l0X3dlYl92
aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlNl
dHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90
aWZ5KSwgd2ViVmlldyk7CkBAIC0yODk4LDcgKzI4NTMsNyBAQCBXZWJLaXRXZWJTZXR0aW5ncyog
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7
CiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAg
cmV0dXJuIHByaXYtPndlYlNldHRpbmdzOworICAgIHJldHVybiBwcml2LT53ZWJTZXR0aW5ncy5n
ZXQoKTsKIH0KIAogLyoqCkBAIC0yOTIyLDcgKzI4NzcsNyBAQCBXZWJLaXRXZWJJbnNwZWN0b3Iq
IHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxM
KTsKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAg
ICByZXR1cm4gcHJpdi0+d2ViSW5zcGVjdG9yOworICAgIHJldHVybiBwcml2LT53ZWJJbnNwZWN0
b3IuZ2V0KCk7CiB9CiAKIC8vIGludGVybmFsCkBAIC0yOTMzLDExICsyODg4LDkgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0V2UKICAgICBpZiAoIXdlYldpbmRvd0ZlYXR1cmVzKQogICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKHByaXYtPndl
YldpbmRvd0ZlYXR1cmVzLCB3ZWJXaW5kb3dGZWF0dXJlcykpCisgICAgaWYgKHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2VxdWFsKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzLmdldCgpLCB3ZWJX
aW5kb3dGZWF0dXJlcykpCiAgICAgICByZXR1cm47CiAKLSAgICBnX29iamVjdF91bnJlZihwcml2
LT53ZWJXaW5kb3dGZWF0dXJlcyk7Ci0gICAgZ19vYmplY3RfcmVmKHdlYldpbmRvd0ZlYXR1cmVz
KTsKICAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYldpbmRvd0ZlYXR1cmVzOwogfQog
CkBAIC0yOTU3LDcgKzI5MTAsNyBAQCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dl
Yl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVgogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAKICAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgcmV0dXJu
IHByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworICAgIHJldHVybiBwcml2LT53ZWJXaW5kb3dGZWF0
dXJlcy5nZXQoKTsKIH0KIAogLyoqCkBAIC0zMDI3LDcgKzI5ODAsNyBAQCBXZWJLaXRXZWJCYWNr
Rm9yd2FyZExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3QoV2ViS2l0
V2ViVmlldyogdwogICAgIGlmICghY29yZSh3ZWJWaWV3KSB8fCAhY29yZSh3ZWJWaWV3KS0+YmFj
a0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBy
ZXR1cm4gcHJpdi0+YmFja0ZvcndhcmRMaXN0OworICAgIHJldHVybiBwcml2LT5iYWNrRm9yd2Fy
ZExpc3QuZ2V0KCk7CiB9CiAKIC8qKgpAQCAtMzc4Nyw3ICszNzQwLDcgQEAgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfem9vbV9pbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogICAgIGdmbG9hdCB6b29tTXVsdGlw
bGllclJhdGlvOwotICAgIGdfb2JqZWN0X2dldChwcml2LT53ZWJTZXR0aW5ncywgInpvb20tc3Rl
cCIsICZ6b29tTXVsdGlwbGllclJhdGlvLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQocHJpdi0+
d2ViU2V0dGluZ3MuZ2V0KCksICJ6b29tLXN0ZXAiLCAmem9vbU11bHRpcGxpZXJSYXRpbywgTlVM
TCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgd2Via2l0
X3dlYl92aWV3X2dldF96b29tX2xldmVsKHdlYlZpZXcpICsgem9vbU11bHRpcGxpZXJSYXRpbyk7
CiB9CkBAIC0zODA4LDcgKzM3NjEsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld196b29tX291dChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3LT5wcml2OwogICAgIGdmbG9hdCB6b29tTXVsdGlwbGllclJhdGlvOwotICAgIGdf
b2JqZWN0X2dldChwcml2LT53ZWJTZXR0aW5ncywgInpvb20tc3RlcCIsICZ6b29tTXVsdGlwbGll
clJhdGlvLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQocHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCks
ICJ6b29tLXN0ZXAiLCAmem9vbU11bHRpcGxpZXJSYXRpbywgTlVMTCk7CiAKICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgd2Via2l0X3dlYl92aWV3X2dldF96b29t
X2xldmVsKHdlYlZpZXcpIC0gem9vbU11bHRpcGxpZXJSYXRpbyk7CiB9CkBAIC0zOTIzLDkgKzM4
NzYsOCBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF9lbmNvZGluZyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgaWYgKCFlbmNvZGluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgICAgICBn
X2ZyZWUocHJpdi0+ZW5jb2RpbmcpOwotICAgICAgICBwcml2LT5lbmNvZGluZyA9IGdfc3RyZHVw
KGVuY29kaW5nLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gcHJpdi0+ZW5jb2Rpbmc7
CisgICAgICAgIHByaXYtPmVuY29kaW5nLnNldChnX3N0cmR1cChlbmNvZGluZy51dGY4KCkuZGF0
YSgpKSk7CisgICAgICAgIHJldHVybiBwcml2LT5lbmNvZGluZy5nZXQoKTsKICAgICB9IGVsc2UK
ICAgICAgIHJldHVybiBOVUxMOwogfQpAQCAtMzk2Niw5ICszOTE4LDggQEAgY29uc3QgY2hhciog
d2Via2l0X3dlYl92aWV3X2dldF9jdXN0b21fZW5jb2RpbmcoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIAogICAgIGlmICghb3ZlcnJpZGVFbmNvZGluZy5pc0VtcHR5KCkpIHsKICAgICAgICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgICAgICBnX2ZyZWUg
KHByaXYtPmN1c3RvbUVuY29kaW5nKTsKLSAgICAgICAgcHJpdi0+Y3VzdG9tRW5jb2RpbmcgPSBn
X3N0cmR1cChvdmVycmlkZUVuY29kaW5nLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4g
cHJpdi0+Y3VzdG9tRW5jb2Rpbmc7CisgICAgICAgIHByaXYtPmN1c3RvbUVuY29kaW5nLnNldChn
X3N0cmR1cChvdmVycmlkZUVuY29kaW5nLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJu
IHByaXYtPmN1c3RvbUVuY29kaW5nLmdldCgpOwogICAgIH0gZWxzZQogICAgICAgcmV0dXJuIE5V
TEw7CiB9CkBAIC00MTIzLDExICs0MDc0LDExIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2FkZF9y
ZXNvdXJjZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjaGFyKiBpZGVudGlmaWVyLCBXZWJLCiAK
ICAgICBpZiAoIXByaXYtPm1haW5SZXNvdXJjZSkgewogICAgICAgICBwcml2LT5tYWluUmVzb3Vy
Y2UgPSB3ZWJSZXNvdXJjZTsKLSAgICAgICAgcHJpdi0+bWFpblJlc291cmNlSWRlbnRpZmllciA9
IGdfc3RyZHVwKGlkZW50aWZpZXIpOworICAgICAgICBwcml2LT5tYWluUmVzb3VyY2VJZGVudGlm
aWVyLnNldChnX3N0cmR1cChpZGVudGlmaWVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KHByaXYtPnN1YlJlc291cmNlcywgaWRlbnRpZmllciwg
d2ViUmVzb3VyY2UpOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQocHJpdi0+c3ViUmVzb3VyY2Vz
LmdldCgpLCBpZGVudGlmaWVyLCB3ZWJSZXNvdXJjZSk7CiB9CiAKIFdlYktpdFdlYlJlc291cmNl
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNo
YXIqIGlkZW50aWZpZXIpCkBAIC00MTM1LDEzICs0MDg2LDEzIEBAIFdlYktpdFdlYlJlc291cmNl
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNo
YXIqIGlkCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owog
ICAgIGdwb2ludGVyIHdlYlJlc291cmNlID0gTlVMTDsKIAotICAgIGdib29sZWFuIHJlc291cmNl
Rm91bmQgPSBnX2hhc2hfdGFibGVfbG9va3VwX2V4dGVuZGVkKHByaXYtPnN1YlJlc291cmNlcywg
aWRlbnRpZmllciwgTlVMTCwgJndlYlJlc291cmNlKTsKKyAgICBnYm9vbGVhbiByZXNvdXJjZUZv
dW5kID0gZ19oYXNoX3RhYmxlX2xvb2t1cF9leHRlbmRlZChwcml2LT5zdWJSZXNvdXJjZXMuZ2V0
KCksIGlkZW50aWZpZXIsIE5VTEwsICZ3ZWJSZXNvdXJjZSk7CiAKICAgICAvLyBUaGUgb25seSBy
ZXNvdXJjZSB3ZSBkbyBub3Qgc3RvcmUgaW4gdGhpcyBoYXNoIHRhYmxlIGlzIHRoZQogICAgIC8v
IG1haW4hICBJZiB3ZSBkaWQgbm90IGZpbmQgYSByZXF1ZXN0LCBpdCBwcm9iYWJseSBtZWFucyB0
aGUgbG9hZAogICAgIC8vIGhhcyBiZWVuIGludGVycnVwdGVkIHdoaWxlIHdoaWxlIGEgcmVzb3Vy
Y2Ugd2FzIHN0aWxsIGJlaW5nCiAgICAgLy8gbG9hZGVkLgotICAgIGlmICghcmVzb3VyY2VGb3Vu
ZCAmJiAhZ19zdHJfZXF1YWwoaWRlbnRpZmllciwgcHJpdi0+bWFpblJlc291cmNlSWRlbnRpZmll
cikpCisgICAgaWYgKCFyZXNvdXJjZUZvdW5kICYmICFnX3N0cl9lcXVhbChpZGVudGlmaWVyLCBw
cml2LT5tYWluUmVzb3VyY2VJZGVudGlmaWVyLmdldCgpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7
CiAKICAgICBpZiAoIXdlYlJlc291cmNlKQpAQCAtNDE1MiwzMCArNDEwMywyNCBAQCBXZWJLaXRX
ZWJSZXNvdXJjZSogd2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjaGFyKiBpZAogCiBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0X3dlYl92aWV3X2dl
dF9tYWluX3Jlc291cmNlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgcmV0dXJuIHdl
YlZpZXctPnByaXYtPm1haW5SZXNvdXJjZTsKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+bWFp
blJlc291cmNlLmdldCgpOwogfQogCiB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGVhcl9yZXNvdXJj
ZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICBnX2ZyZWUocHJpdi0+bWFpblJlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgcHJpdi0+bWFpblJlc291cmNlSWRlbnRpZmllciA9IE5VTEw7Ci0KLSAg
ICBpZiAocHJpdi0+bWFpblJlc291cmNlKSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
Pm1haW5SZXNvdXJjZSk7Ci0gICAgICAgIHByaXYtPm1haW5SZXNvdXJjZSA9IE5VTEw7Ci0gICAg
fQorICAgIHByaXYtPm1haW5SZXNvdXJjZUlkZW50aWZpZXIuY2xlYXIoKTsKKyAgICBwcml2LT5t
YWluUmVzb3VyY2UuY2xlYXIoKTsKIAogICAgIGlmIChwcml2LT5zdWJSZXNvdXJjZXMpCi0gICAg
ICAgIGdfaGFzaF90YWJsZV9yZW1vdmVfYWxsKHByaXYtPnN1YlJlc291cmNlcyk7CisgICAgICAg
IGdfaGFzaF90YWJsZV9yZW1vdmVfYWxsKHByaXYtPnN1YlJlc291cmNlcy5nZXQoKSk7CiB9CiAK
IEdMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNlcyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJp
djsKLSAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0gZ19oYXNoX3RhYmxlX2dldF92YWx1ZXMocHJp
di0+c3ViUmVzb3VyY2VzKTsKLSAgICByZXR1cm4gZ19saXN0X3JlbW92ZShzdWJSZXNvdXJjZXMs
IHByaXYtPm1haW5SZXNvdXJjZSk7CisgICAgR0xpc3QqIHN1YlJlc291cmNlcyA9IGdfaGFzaF90
YWJsZV9nZXRfdmFsdWVzKHByaXYtPnN1YlJlc291cmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIGdf
bGlzdF9yZW1vdmUoc3ViUmVzb3VyY2VzLCBwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkpOwogfQog
CiAvKiBGcm9tIEV2ZW50SGFuZGxlci5jcHAgKi8KQEAgLTQxOTEsMTIgKzQxMzYsMTEgQEAgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Rvb2x0aXBfdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBjaGFyKiB0b29sdGkKIHsKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMiwgMCkK
ICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgZ19m
cmVlKHByaXYtPnRvb2x0aXBUZXh0KTsKICAgICBpZiAodG9vbHRpcCAmJiAqdG9vbHRpcCAhPSAn
XDAnKSB7Ci0gICAgICAgIHByaXYtPnRvb2x0aXBUZXh0ID0gZ19zdHJkdXAodG9vbHRpcCk7Cisg
ICAgICAgIHByaXYtPnRvb2x0aXBUZXh0LnNldChnX3N0cmR1cCh0b29sdGlwKSk7CiAgICAgICAg
IGd0a193aWRnZXRfc2V0X2hhc190b29sdGlwKEdUS19XSURHRVQod2ViVmlldyksIFRSVUUpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHByaXYtPnRvb2x0aXBUZXh0ID0gMDsKKyAgICAgICAgcHJp
di0+dG9vbHRpcFRleHQuY2xlYXIoKTsKICAgICAgICAgZ3RrX3dpZGdldF9zZXRfaGFzX3Rvb2x0
aXAoR1RLX1dJREdFVCh3ZWJWaWV3KSwgRkFMU0UpOwogICAgIH0KIApAQCAtNDI1NCw5ICs0MTk4
LDggQEAgR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19nZXRfaWNvbl91cmko
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBTdHJpbmcgaWNvblVSTCA9IGljb25EYXRhYmFz
ZSgpLT5pY29uVVJMRm9yUGFnZVVSTChjb3JlUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51
cmwoKS5wcmV0dHlVUkwoKSk7CiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXctPnByaXY7Ci0gICAgZ19mcmVlKHByaXYtPmljb25VUkkpOwotICAgIHByaXYtPmljb25V
UkkgPSBnX3N0cmR1cChpY29uVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBwcml2LT5p
Y29uVVJJOworICAgIHByaXYtPmljb25VUkkuc2V0KGdfc3RyZHVwKGljb25VUkwudXRmOCgpLmRh
dGEoKSkpOworICAgIHJldHVybiBwcml2LT5pY29uVVJJLmdldCgpOwogfQogCiAvKioK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67242</attachid>
            <date>2010-09-10 14:47:53 -0700</date>
            <delta_ts>2010-09-15 18:34:08 -0700</delta_ts>
            <desc>Patch for this issue after 45550</desc>
            <filename>bug-21594-20100910144753.patch</filename>
            <type>text/plain</type>
            <size>39248</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggN2Q0Mjg3NDA2ZGQ0MjY5ZTE5NWQ0ZGFkYTMxMTY4ZGJlNDllMWU0NC4uZGYwMTY0Y2Vj
ZTE2MzMwZWY5NjdjMzAxM2Y4ZmE2YThjYTdlMWQ2OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MiBAQAogMjAx
MC0wOS0xMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gVXNlIEdPd25Q
dHIgZm9yIGNvZGUgdGhhdCBuZWVkcyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1OTQKKworICAgICAgICBDb252ZXJ0IGFzIHJlZmVyZW5jZSBj
b3VudGVkIHByaXZhdGUgbWVtYmVycyBvZiBXZWJLaXRXZWJWaWV3IHRvCisgICAgICAgIHNtYXJ0
IHBvaW50ZXJzIGFzIHBvc3NpYmxlLiBUaGlzIHJlbW92ZXMgYSBsb3Qgb2YgdW5lY2Vzc2FyeSBt
YW51YWwKKyAgICAgICAgbWVtb3J5IG1hbmFnZW1lbnQuIEFsc28gY29udmVydCBzb21lIHBvaW50
ZXIgbWVtYmVycyBhd2F5IGZyb20gcG9pbnRlcgorICAgICAgICB0eXBlcywgbm93IHRoYXQgd2Ug
YXJlIHN1cmUgdGhlaXIgZGVzdHJ1Y3RvcnMgYXJlIGNhbGxlZC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5w
dXRNZXRob2RzTWVudUl0ZW0pOiBVcGRhdGVkIHRvIHJlZmxlY3QgUGxhdGZvcm1SZWZQdHIgY2hh
bmdlcy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6c3RhcnREcmFnKTogRGl0dG8uCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kTW91c2VQcmVz
cyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVudCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6On5FZGl0b3JDbGllbnQpOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnBvc3RDb21taXRGcmFtZVZpZXdTZXR1cCk6IERpdHRvLgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6IERpdHRvLgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcDogRGl0dG8uCisgICAgICAgIChkZXN0cm95X21lbnVfY2IpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCk6
IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50KTogRGl0
dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3ByZXNzX2V2ZW50KTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3JlbGVhc2VfZXZlbnQpOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudCk6IERpdHRvLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVudCk6IERpdHRvLgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X3JlYWxpemUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfc2Nyb2xsX2FkanVzdG1lbnRzKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
ZGlzcG9zZSk6IENoYW5nZWQgYWxsIGdfb2JqZWN0X3VucmVmIGNhbGxzIHRvCisgICAgICAgIFBs
YXRmb3JtUmVmUHRyLmNsZWFyKCkuIEFsdGhvdWdoIHRoaXMgd2lsbCBhbHNvIGJlIGRvbmUgYnkg
dGhlIG1hbnVhbAorICAgICAgICBjYWxsIHRvIHRoZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZSBkZXN0
cnVjdG9yLCB0aGUgb3JkZXIgdGhhdCB0aGVzZQorICAgICAgICBmaWVsZHMgYXJlIHplcm8nZCBp
biBpcyBzdGlsbCB2ZXJ5IHNlbnNpdGl2ZS4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19maW5h
bGl6ZSk6IFVwZGF0ZWQgdG8gcmVmbGVjdCBQbGF0Zm9ybVJlZlB0ciBjaGFuZ2VzLgorICAgICAg
ICAod2ViVmlld0dldERQSSk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NjcmVl
bl9jaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQpOiBE
aXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0KTogRGl0dG8uCisg
ICAgICAgIChkb0RyYWdMZWF2ZUxhdGVyKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZHJhZ19sZWF2ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYWdfbW90
aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX3JlY2VpdmVk
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kcm9wKTogRGl0dG8uCisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ltX2NvbnRleHQpOiBEaXR0by4KKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MpOiBEaXR0by4KKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19pbml0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3Nl
dHRpbmdzKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3Rvcik6IERpdHRvLgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMpOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKTogRGl0dG8uCisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KTogRGl0dG8uCisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfem9vbV9pbik6IERpdHRvLgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X3pvb21fb3V0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYWRkX3Jl
c291cmNlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGVhcl9yZXNvdXJjZXMpOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKTogRGl0dG8uCisKKzIwMTAt
MDktMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IFhhbiBMb3Blei4KIAogICAgICAgICBbR1RLXSBQbGFjZW1lbnQgbmV3IC8g
bWFudWFsIGRlc3RydWN0b3IgaW52b2NhdGlvbiBzaG91bGQgYmUgdXNlZCBvbiBwcml2YXRlIEdP
YmplY3QgbWVtb3J5CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRHdGsuY3BwCmluZGV4IDVjMWJjMGI4ZDRkMTU4MjhjNjVhNGJlY2FkOWVjMTgwNzhh
ZGMwMGEuLjA2OWZiMTliMWI5ZGM0NWJlZDE2YzcwMjQ0N2Y3OTQ3ZGRkMzk0NGEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGlucHV0TWV0aG9kc01lbnVJdGVtIChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CiAgICAgR3RrV2lkZ2V0KiBp
bUNvbnRleHRNZW51ID0gZ3RrX21lbnVfbmV3KCk7Ci0gICAgZ3RrX2ltX211bHRpY29udGV4dF9h
cHBlbmRfbWVudWl0ZW1zKEdUS19JTV9NVUxUSUNPTlRFWFQocHJpdi0+aW1Db250ZXh0KSwgR1RL
X01FTlVfU0hFTEwoaW1Db250ZXh0TWVudSkpOworICAgIGd0a19pbV9tdWx0aWNvbnRleHRfYXBw
ZW5kX21lbnVpdGVtcyhHVEtfSU1fTVVMVElDT05URVhUKHByaXYtPmltQ29udGV4dC5nZXQoKSks
IEdUS19NRU5VX1NIRUxMKGltQ29udGV4dE1lbnUpKTsKIAogICAgIGd0a19tZW51X2l0ZW1fc2V0
X3N1Ym1lbnUoR1RLX01FTlVfSVRFTShtZW51aXRlbSksIGltQ29udGV4dE1lbnUpOwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAppbmRleCBiNjA3NWI2OWU4
ZTZmMTQyODFkNTdiZGJkMjE1MTQ5MTI2Y2U2OWQ5Li41NzIwMDk5NjVkZTBjZDhmNmQ3YWYwMWY2
ZmI4NzRlZDk4ZGNlMzhkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Ry
YWdDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dEd0ay5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJh
Z0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLAogICAgIEdP
d25QdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1cnJlbnRfZXZlbnQoKSk7CiAK
ICAgICBHZGtEcmFnQ29udGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2luKEdUS19XSURHRVQo
bV93ZWJWaWV3KSwgdGFyZ2V0TGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlv
bnMoY2xpcGJvYXJkLT5zb3VyY2VPcGVyYXRpb24oKSksIDEsIGN1cnJlbnRFdmVudC5nZXQoKSk7
Ci0gICAgd2ViVmlldy0+cHJpdi0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy0+c2V0KGNvbnRleHQsIGRh
dGFPYmplY3QpOworICAgIHdlYlZpZXctPnByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMuc2V0KGNv
bnRleHQsIGRhdGFPYmplY3QpOwogCiAgICAgLy8gQSBkcmFnIHN0YXJ0aW5nIHNob3VsZCBwcmV2
ZW50IGEgZG91YmxlLWNsaWNrIGZyb20gaGFwcGVuaW5nLiBUaGlzIG1pZ2h0CiAgICAgLy8gaGFw
cGVuIGlmIGEgZHJhZyBpcyBmb2xsb3dlZCB2ZXJ5IHF1aWNrbHkgYnkgYW5vdGhlciBjbGljayAo
bGlrZSBpbiB0aGUgRFJUKS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAppbmRleCA4YTAxOWI0ZTcwYmNiZjFkODlmYjkwMDZjODFiYjUzZGNiYWNkYTA0
Li44ZDQ4NzUzNDkzMDQ2MzRkNTZlMDFmNjU4OTk2NGI4ZjAxYTY4ZWJmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yMjksMTUgKzIyOSwx
NSBAQCB2b2lkIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGFjdGl2ZSkK
ICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKIAogICAg
IGlmIChhY3RpdmUpCi0gICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29u
dGV4dCk7CisgICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dC5n
ZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19vdXQocHJpdi0+
aW1Db250ZXh0KTsKKyAgICAgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfb3V0KHByaXYtPmltQ29u
dGV4dC5nZXQoKSk7CiAKICNpZmRlZiBNQUVNT19DSEFOR0VTCiAgICAgaWYgKGFjdGl2ZSkKLSAg
ICAgICAgaGlsZG9uX2d0a19pbV9jb250ZXh0X3Nob3cocHJpdi0+aW1Db250ZXh0KTsKKyAgICAg
ICAgaGlsZG9uX2d0a19pbV9jb250ZXh0X3Nob3cocHJpdi0+aW1Db250ZXh0LmdldCgpKTsKICAg
ICBlbHNlCi0gICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4
dCk7CisgICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4dC5n
ZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50
OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCkKICAgICB1bnNpZ25lZCBlbmQ7CiAgICAgaWYg
KCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHN0YXJ0LCBl
bmQpKSB7CiAgICAgICAgIC8vIGd0a19pbV9jb250ZXh0X3Jlc2V0KCkgY2xlYXJzIHRoZSBjb21w
b3NpdGlvbiBmb3IgdXMuCi0gICAgICAgIGd0a19pbV9jb250ZXh0X3Jlc2V0KHByaXYtPmltQ29u
dGV4dCk7CisgICAgICAgIGd0a19pbV9jb250ZXh0X3Jlc2V0KHByaXYtPmltQ29udGV4dC5nZXQo
KSk7CiAgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uV2l0
aG91dERpc3R1cmJpbmdTZWxlY3Rpb24oKTsKICAgICB9CiB9CkBAIC03MTAsNyArNzEwLDcgQEAg
dm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50
KiBldmVudCkKICAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQgPSAoIXRhcmdldEZy
YW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgICYmIGV2ZW50LT5rZXlF
dmVudCgpLT5nZGtFdmVudEtleSgpLT5rZXl2YWw7CiAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRp
b24oKTsKLSAgICBpZiAoKGd0a19pbV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNv
bnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpKSAmJiAhbV9wZW5kaW5nQ29t
cG9zaXRpb24pCisgICAgaWYgKChndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+
aW1Db250ZXh0LmdldCgpLCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1f
cGVuZGluZ0NvbXBvc2l0aW9uKQogICAgICAgICB8fCAoIW1fdHJlYXRDb250ZXh0Q29tbWl0QXNL
ZXlFdmVudCAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSkKICAg
ICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CiAKQEAgLTczMCwxMiArNzMwLDEyIEBAIHZv
aWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZE1vdXNlUHJlc3MoKQogICAgIC8vIElu
IHRoaXMgY2FzZSwgaWYgdGhlIGZvY3VzZWQgbm9kZSBpcyBjaGFuZ2VkLCB0aGUgY29tbWl0IHNp
Z25hbCBoYXBwZW5zIGluIGEgZGlmZnJlbnQgbm9kZS4KICAgICAvLyBUaGVyZWZvcmUsIHdlIG5l
ZWQgdG8gY29uZmlybSB0aGUgY3VycmVudCBjb21wb3NpdG9uIGFuZCBpZ25vcmUgdGhlIG5leHQg
Y29tbWl0IHNpZ25hbC4gCiAgICAgR093blB0cjxnY2hhcj4gbmV3UHJlZWRpdCgwKTsKLSAgICBn
dGtfaW1fY29udGV4dF9nZXRfcHJlZWRpdF9zdHJpbmcocHJpdi0+aW1Db250ZXh0LCAmbmV3UHJl
ZWRpdC5vdXRQdHIoKSwgMCwgMCk7CisgICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3Ry
aW5nKHByaXYtPmltQ29udGV4dC5nZXQoKSwgJm5ld1ByZWVkaXQub3V0UHRyKCksIDAsIDApOwog
ICAgIAogICAgIGlmIChnX3V0Zjhfc3RybGVuKG5ld1ByZWVkaXQuZ2V0KCksIC0xKSkgewogICAg
ICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOwogICAgICAg
ICBtX3ByZXZlbnROZXh0Q29tcG9zaXRpb25Db21taXQgPSB0cnVlOwotICAgICAgICBndGtfaW1f
Y29udGV4dF9yZXNldChwcml2LT5pbUNvbnRleHQpOworICAgICAgICBndGtfaW1fY29udGV4dF9y
ZXNldChwcml2LT5pbUNvbnRleHQuZ2V0KCkpOwogICAgIH0gCiB9CiAKQEAgLTc0Nyw4ICs3NDcs
OCBAQCBFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgICwgbV9uYXRpdmVXaWRnZXQoZ3RrX3RleHRfdmlld19uZXcoKSkKIHsKICAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKLSAgICBnX3NpZ25hbF9jb25u
ZWN0KHByaXYtPmltQ29udGV4dCwgImNvbW1pdCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0
dGVkKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5pbUNvbnRleHQsICJwcmVl
ZGl0LWNoYW5nZWQiLCBHX0NBTExCQUNLKGltQ29udGV4dFByZWVkaXRDaGFuZ2VkKSwgdGhpcyk7
CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5pbUNvbnRleHQuZ2V0KCksICJjb21taXQiLCBH
X0NBTExCQUNLKGltQ29udGV4dENvbW1pdHRlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QocHJpdi0+aW1Db250ZXh0LmdldCgpLCAicHJlZWRpdC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhp
bUNvbnRleHRQcmVlZGl0Q2hhbmdlZCksIHRoaXMpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCht
X25hdGl2ZVdpZGdldC5nZXQoKSwgImJhY2tzcGFjZSIsIEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2Fs
bGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgp
LCAiY3V0LWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0soY3V0Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlz
KTsKQEAgLTc2Miw4ICs3NjIsOCBAQCBFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVudChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogRWRpdG9yQ2xpZW50Ojp+RWRpdG9yQ2xpZW50KCkKIHsKICAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKLSAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+aW1Db250ZXh0LCAoZ3BvaW50ZXIp
aW1Db250ZXh0Q29tbWl0dGVkLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u
ZWN0X2J5X2Z1bmMocHJpdi0+aW1Db250ZXh0LCAoZ3BvaW50ZXIpaW1Db250ZXh0UHJlZWRpdENo
YW5nZWQsIHRoaXMpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhw
cml2LT5pbUNvbnRleHQuZ2V0KCksIChncG9pbnRlcilpbUNvbnRleHRDb21taXR0ZWQsIHRoaXMp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT5pbUNvbnRl
eHQuZ2V0KCksIChncG9pbnRlcilpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZCwgdGhpcyk7CiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CmluZGV4IDQ3ZmZhODg5OTRkZWZkYmY3Y2EwZjI4ZWM3MzRlNWNkYjc5NTNlZWQuLmE0MTMzMDE1
YzE4Y2RiN2YzNjQzYzU0MmMwNTdhOWQ3ZWZkZmYzY2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0xMjUyLDE0ICsxMjUy
LDEyIEBAIHN0YXRpYyB2b2lkIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1cChXZWJLaXRXZWJGcmFt
ZSAqZnJhbWUsIEZyYW1lVmlldyAqdmlldywgYm9vCiB7CiAgICAgV2ViS2l0V2ViVmlldyogY29u
dGFpbmluZ1dpbmRvdyA9IGdldFZpZXdGcm9tRnJhbWUoZnJhbWUpOwogICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKGNvbnRhaW5pbmdX
aW5kb3cpOwotICAgIHZpZXctPnNldEd0a0FkanVzdG1lbnRzKHByaXYtPmhvcml6b250YWxBZGp1
c3RtZW50LCBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQsIHJlc2V0VmFsdWVzKTsKKyAgICB2aWV3
LT5zZXRHdGtBZGp1c3RtZW50cyhwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSwgcHJp
di0+dmVydGljYWxBZGp1c3RtZW50LmdldCgpLCByZXNldFZhbHVlcyk7CiAKICAgICBpZiAocHJp
di0+Y3VycmVudE1lbnUpIHsKLSAgICAgICAgR3RrTWVudSogbWVudSA9IHByaXYtPmN1cnJlbnRN
ZW51OwotICAgICAgICBwcml2LT5jdXJyZW50TWVudSA9IDA7Ci0KLSAgICAgICAgZ3RrX21lbnVf
cG9wZG93bihtZW51KTsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYobWVudSk7CisgICAgICAgIFBs
YXRmb3JtUmVmUHRyPEd0a01lbnU+IG1lbnUocHJpdi0+Y3VycmVudE1lbnUpOworICAgICAgICBw
cml2LT5jdXJyZW50TWVudS5jbGVhcigpOworICAgICAgICBndGtfbWVudV9wb3Bkb3duKG1lbnUu
Z2V0KCkpOwogICAgIH0KIAogICAgIC8vIERvIG5vdCBhbGxvdyBjbGljayBjb3VudGluZyBiZXR3
ZWVuIG1haW4gZnJhbWUgbG9hZHMuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggYWJh
M2ViYTJiYTViMTUzNGQ4M2RmN2U0YWNiODE3YTU5ZjlkYWMwOS4uNWM2ZDE1MWI1YmM1YTFhNGVl
Y2QxYzUwNzNhODc2MmI5MzI0MTNjOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAt
MTM0LDI1ICsxMzQsMjUgQEAgZXh0ZXJuICJDIiB7CiAgICAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOwogICAgIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKLSAgICAg
ICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzOwotICAgICAgICBXZWJLaXRXZWJJbnNw
ZWN0b3IqIHdlYkluc3BlY3RvcjsKLSAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdl
YldpbmRvd0ZlYXR1cmVzOworICAgICAgICBQbGF0Zm9ybVJlZlB0cjxXZWJLaXRXZWJTZXR0aW5n
cz4gd2ViU2V0dGluZ3M7CisgICAgICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdFdlYkluc3BlY3Rv
cj4gd2ViSW5zcGVjdG9yOworICAgICAgICBQbGF0Zm9ybVJlZlB0cjxXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcz4gd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1h
aW5GcmFtZTsKLSAgICAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExp
c3Q7CisgICAgICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdD4gYmFj
a0ZvcndhcmRMaXN0OwogCi0gICAgICAgIEd0a01lbnUqIGN1cnJlbnRNZW51OworICAgICAgICBQ
bGF0Zm9ybVJlZlB0cjxHdGtNZW51PiBjdXJyZW50TWVudTsKICAgICAgICAgZ2ludCBsYXN0UG9w
dXBYUG9zaXRpb247CiAgICAgICAgIGdpbnQgbGFzdFBvcHVwWVBvc2l0aW9uOwogCiAgICAgICAg
IEhhc2hTZXQ8R3RrV2lkZ2V0Kj4gY2hpbGRyZW47CiAgICAgICAgIGJvb2wgZWRpdGFibGU7Ci0g
ICAgICAgIEd0a0lNQ29udGV4dCogaW1Db250ZXh0OworICAgICAgICBQbGF0Zm9ybVJlZlB0cjxH
dGtJTUNvbnRleHQ+IGltQ29udGV4dDsKIAogICAgICAgICBnYm9vbGVhbiB0cmFuc3BhcmVudDsK
IAotICAgICAgICBHdGtBZGp1c3RtZW50KiBob3Jpem9udGFsQWRqdXN0bWVudDsKLSAgICAgICAg
R3RrQWRqdXN0bWVudCogdmVydGljYWxBZGp1c3RtZW50OworICAgICAgICBQbGF0Zm9ybVJlZlB0
cjxHdGtBZGp1c3RtZW50PiBob3Jpem9udGFsQWRqdXN0bWVudDsKKyAgICAgICAgUGxhdGZvcm1S
ZWZQdHI8R3RrQWRqdXN0bWVudD4gdmVydGljYWxBZGp1c3RtZW50OwogCiAgICAgICAgIGdib29s
ZWFuIHpvb21GdWxsQ29udGVudDsKICAgICAgICAgV2ViS2l0TG9hZFN0YXR1cyBsb2FkU3RhdHVz
OwpAQCAtMTcwLDE4ICsxNzAsMTcgQEAgZXh0ZXJuICJDIiB7CiAKICAgICAgICAgLy8gVGhlc2Ug
YXJlIGhvc3RlZCBoZXJlIGJlY2F1c2UgdGhlIERhdGFTb3VyY2Ugb2JqZWN0IGlzCiAgICAgICAg
IC8vIGNyZWF0ZWQgdG9vIGxhdGUgaW4gdGhlIGZyYW1lIGxvYWRpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViS2l0V2ViUmVzb3VyY2UqIG1haW5SZXNvdXJjZTsKKyAgICAgICAgUGxhdGZvcm1SZWZQ
dHI8V2ViS2l0V2ViUmVzb3VyY2U+IG1haW5SZXNvdXJjZTsKICAgICAgICAgQ1N0cmluZyBtYWlu
UmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAgICBHSGFzaFRhYmxlKiBzdWJSZXNvdXJjZXM7Cisg
ICAgICAgIFBsYXRmb3JtUmVmUHRyPEdIYXNoVGFibGU+IHN1YlJlc291cmNlczsKICAgICAgICAg
Q1N0cmluZyB0b29sdGlwVGV4dDsKIAogICAgICAgICBpbnQgY3VycmVudENsaWNrQ291bnQ7Ci0g
ICAgICAgIFdlYkNvcmU6OkludFBvaW50KiBwcmV2aW91c0NsaWNrUG9pbnQ7CisgICAgICAgIFdl
YkNvcmU6OkludFBvaW50IHByZXZpb3VzQ2xpY2tQb2ludDsKICAgICAgICAgZ3VpbnQgcHJldmlv
dXNDbGlja0J1dHRvbjsKICAgICAgICAgZ3VpbnQzMiBwcmV2aW91c0NsaWNrVGltZTsKLQotICAg
ICAgICBIYXNoTWFwPEdka0RyYWdDb250ZXh0KiwgUmVmUHRyPFdlYkNvcmU6OkRhdGFPYmplY3RH
dGs+ID4qIGRyYWdnaW5nRGF0YU9iamVjdHM7Ci0gICAgICAgIEhhc2hNYXA8R2RrRHJhZ0NvbnRl
eHQqLCBXZWJLaXQ6OkRyb3BwaW5nQ29udGV4dCo+KiBkcm9wcGluZ0NvbnRleHRzOworICAgICAg
ICBIYXNoTWFwPEdka0RyYWdDb250ZXh0KiwgUmVmUHRyPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+
ID4gZHJhZ2dpbmdEYXRhT2JqZWN0czsKKyAgICAgICAgSGFzaE1hcDxHZGtEcmFnQ29udGV4dCos
IFdlYktpdDo6RHJvcHBpbmdDb250ZXh0Kj4gZHJvcHBpbmdDb250ZXh0czsKICAgICB9OwogCiAg
ICAgI2RlZmluZSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLCBXZWJLaXRX
ZWJGcmFtZVByaXZhdGUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAzZTIz
NTU0NGJhMDkyMjc2NzVhYzI2NTVjZTgxNTVkMmEzODI4MmUxLi4xM2NjNGQ0ODdmYjBlY2IwZGE4
OTY0NDM4Yzk3ZTlhN2ZlZTJhOTFiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApA
QCAtMjEwLDExICsyMTAsNyBAQCBzdGF0aWMgR3RrSU1Db250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2ltX2NvbnRleHQoV2ViS2l0V2ViVmlldyopOwogCiBzdGF0aWMgdm9pZCBkZXN0cm95X21l
bnVfY2IoR3RrT2JqZWN0KiBvYmplY3QsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhkYXRhKTsKLSAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmN1cnJlbnRNZW51KTsKLSAgICBwcml2LT5jdXJyZW50
TWVudSA9IE5VTEw7CisgICAgV0VCS0lUX1dFQl9WSUVXKGRhdGEpLT5wcml2LT5jdXJyZW50TWVu
dSA9IDA7CiB9CiAKIHN0YXRpYyB2b2lkIFBvcHVwTWVudVBvc2l0aW9uRnVuYyhHdGtNZW51KiBt
ZW51LCBnaW50ICp4LCBnaW50ICp5LCBnYm9vbGVhbiAqcHVzaEluLCBncG9pbnRlciB1c2VyRGF0
YSkKQEAgLTMwNCw3ICszMDAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Zv
cndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgICAgICBy
ZXR1cm4gRkFMU0U7CiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9X
RUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICBwcml2LT5jdXJyZW50TWVudSA9IEdU
S19NRU5VKGdfb2JqZWN0X3JlZihtZW51KSk7CisgICAgcHJpdi0+Y3VycmVudE1lbnUgPSBtZW51
OwogICAgIHByaXYtPmxhc3RQb3B1cFhQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFgoKTsKICAgICBw
cml2LT5sYXN0UG9wdXBZUG9zaXRpb24gPSBldmVudC5nbG9iYWxZKCk7CiAKQEAgLTU5Miw3ICs1
ODgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleQogICAgIC8vIHRoZSBldmVudCBpZiB3ZSBk
b24ndCBoYXZlIGEgcGVuZGluZyBjb21wb3NpdGlvbiwgYmVjYXVzZSB0aGF0IG1lYW5zIHdlCiAg
ICAgLy8gYXJlIHVzaW5nIGEgY29udGV4dCBsaWtlICdzaW1wbGUnIHdoaWNoIG1hcmtzIGV2ZXJ5
IGtleXN0cm9rZSBhcyBmaWx0ZXJlZC4KICAgICBXZWJLaXQ6OkVkaXRvckNsaWVudCogY2xpZW50
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpFZGl0b3JDbGllbnQqPihjb3JlKHdlYlZpZXcpLT5lZGl0
b3JDbGllbnQoKSk7Ci0gICAgaWYgKGd0a19pbV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyh3ZWJW
aWV3LT5wcml2LT5pbUNvbnRleHQsIGV2ZW50KSAmJiAhY2xpZW50LT5oYXNQZW5kaW5nQ29tcG9z
aXRpb24oKSkKKyAgICBpZiAoZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHdlYlZpZXct
PnByaXYtPmltQ29udGV4dC5nZXQoKSwgZXZlbnQpICYmICFjbGllbnQtPmhhc1BlbmRpbmdDb21w
b3NpdGlvbigpKQogICAgICAgICByZXR1cm4gVFJVRTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNv
cmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAg
LTY1MSw4ICs2NDcsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2J1dHRvbl9w
cmVzc19ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdQogICAgIC8vIEdESyBsb2dp
YyBmb3IgY291bnRpbmcgY2xpY2tzLgogICAgIGd1aW50MzIgZXZlbnRUaW1lID0gZ2V0RXZlbnRU
aW1lKHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpOwogICAgIGlmICgoZXZlbnQt
PnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgZXZlbnQtPnR5cGUgPT0gR0RLXzNCVVRUT05f
UFJFU1MpCi0gICAgICAgIHx8ICgoYWJzKGV2ZW50LT54IC0gcHJpdi0+cHJldmlvdXNDbGlja1Bv
aW50LT54KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKLSAgICAgICAgICAgICYmIChhYnMoZXZl
bnQtPnkgLSBwcml2LT5wcmV2aW91c0NsaWNrUG9pbnQtPnkoKSkgPCBkb3VibGVDbGlja0Rpc3Rh
bmNlKQorICAgICAgICB8fCAoKGFicyhldmVudC0+eCAtIHByaXYtPnByZXZpb3VzQ2xpY2tQb2lu
dC54KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAgICAgICAgICYmIChhYnMoZXZlbnQt
PnkgLSBwcml2LT5wcmV2aW91c0NsaWNrUG9pbnQueSgpKSA8IGRvdWJsZUNsaWNrRGlzdGFuY2Up
CiAgICAgICAgICAgICAmJiAoZXZlbnRUaW1lIC0gcHJpdi0+cHJldmlvdXNDbGlja1RpbWUgPCBz
dGF0aWNfY2FzdDxndWludD4oZG91YmxlQ2xpY2tUaW1lKSkKICAgICAgICAgICAgICYmIChldmVu
dC0+YnV0dG9uID09IHByaXYtPnByZXZpb3VzQ2xpY2tCdXR0b24pKSkKICAgICAgICAgcHJpdi0+
Y3VycmVudENsaWNrQ291bnQrKzsKQEAgLTY2MSw3ICs2NTcsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X2J1dHRvbl9wcmVzc19ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRCdQogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtRXZlbnQoZXZlbnQpOwog
ICAgIHBsYXRmb3JtRXZlbnQuc2V0Q2xpY2tDb3VudChwcml2LT5jdXJyZW50Q2xpY2tDb3VudCk7
Ci0gICAgKnByaXYtPnByZXZpb3VzQ2xpY2tQb2ludCA9IHBsYXRmb3JtRXZlbnQucG9zKCk7Cisg
ICAgcHJpdi0+cHJldmlvdXNDbGlja1BvaW50ID0gcGxhdGZvcm1FdmVudC5wb3MoKTsKICAgICBw
cml2LT5wcmV2aW91c0NsaWNrQnV0dG9uID0gZXZlbnQtPmJ1dHRvbjsKICAgICBwcml2LT5wcmV2
aW91c0NsaWNrVGltZSA9IGV2ZW50VGltZTsKIApAQCAtNzAyLDcgKzY5OCw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3JlbGVhc2VfZXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50CiAgICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCkpIHsKICNpZmRlZiBNQUVNT19DSEFOR0VTCiAgICAgICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICAgICAgaGlsZG9uX2d0
a19pbV9jb250ZXh0X2ZpbHRlcl9ldmVudChwcml2LT5pbUNvbnRleHQsIChHZGtFdmVudCopZXZl
bnQpOworICAgICAgICBoaWxkb25fZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2V2ZW50KHByaXYtPmlt
Q29udGV4dC5nZXQoKSwgKEdka0V2ZW50KilldmVudCk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTgw
Niw3ICs4MDIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2
ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKgogICAgICAgICAgICAgZm9jdXND
b250cm9sbGVyLT5zZXRGb2N1c2VkRnJhbWUoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkpOwog
CiAgICAgICAgIGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS0+
Y2FuRWRpdCgpKQotICAgICAgICAgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfaW4od2ViVmlldy0+
cHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHdl
YlZpZXctPnByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVudCh3
aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTgyNCw3ICs4MjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRG
b2N1cwogICAgIH0KIAogICAgIGlmICh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQpCi0gICAgICAg
IGd0a19pbV9jb250ZXh0X2ZvY3VzX291dCh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQpOworICAg
ICAgICBndGtfaW1fY29udGV4dF9mb2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0Lmdl
dCgpKTsKIAogICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJl
bnRfY2xhc3MpLT5mb2N1c19vdXRfZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9CkBAIC04NzUsNyAr
ODcxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxpemUoR3RrV2lkZ2V0KiB3
aWRnZXQpCiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdp
ZGdldCk7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owot
ICAgIGd0a19pbV9jb250ZXh0X3NldF9jbGllbnRfd2luZG93KHByaXYtPmltQ29udGV4dCwgd2lu
ZG93KTsKKyAgICBndGtfaW1fY29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRl
eHQuZ2V0KCksIHdpbmRvdyk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRf
c2Nyb2xsX2FkanVzdG1lbnRzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a0FkanVzdG1lbnQq
IGhhZGosIEd0a0FkanVzdG1lbnQqIHZhZGopCkBAIC04ODMsMjYgKzg3OSwxMiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Njcm9sbF9hZGp1c3RtZW50cyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBHdGtBZAogICAgIGlmICghY29yZSh3ZWJWaWV3KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
ZnJhbWUod2ViVmlldykpLT52aWV3KCk7Ci0KLSAgICBpZiAoaGFkaikKLSAgICAgICAgZ19vYmpl
Y3RfcmVmKGhhZGopOwotICAgIGlmICh2YWRqKQotICAgICAgICBnX29iamVjdF9yZWYodmFkaik7
Ci0KLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAg
ICBpZiAocHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQpCi0gICAgICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50KTsKLSAgICBpZiAocHJpdi0+dmVydGljYWxBZGp1
c3RtZW50KQotICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQp
OwotCi0gICAgcHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQgPSBoYWRqOwotICAgIHByaXYtPnZl
cnRpY2FsQWRqdXN0bWVudCA9IHZhZGo7CisgICAgd2ViVmlldy0+cHJpdi0+aG9yaXpvbnRhbEFk
anVzdG1lbnQgPSBoYWRqOworICAgIHdlYlZpZXctPnByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9
IHZhZGo7CiAKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRf
bWFpbl9mcmFtZSh3ZWJWaWV3KSktPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKLQogICAgIHZpZXctPnNldEd0a0FkanVzdG1lbnRzKGhhZGosIHZhZGopOwogfQogCkBA
IC0xMTU4LDc1ICsxMTQwLDQyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3Nl
KEdPYmplY3QqIG9iamVjdCkKIAogICAgIHByaXYtPmRpc3Bvc2luZyA9IFRSVUU7CiAKLSAgICBp
ZiAocHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQpIHsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYo
cHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQpOwotICAgICAgICBwcml2LT5ob3Jpem9udGFsQWRq
dXN0bWVudCA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHByaXYtPnZlcnRpY2FsQWRqdXN0bWVu
dCkgewotICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQpOwot
ICAgICAgICBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQgPSBOVUxMOwotICAgIH0KLQotICAgIGlm
IChwcml2LT5iYWNrRm9yd2FyZExpc3QpIHsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+
YmFja0ZvcndhcmRMaXN0KTsKLSAgICAgICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0ID0gTlVMTDsK
LSAgICB9CisgICAgLy8gVGhlc2Ugc21hcnQgcG9pbnRlcnMgYXJlIGNsZWFyZWQgbWFudWFsbHks
IGJlY2F1c2Ugc29tZSBjbGVhbnVwIG9wZXJhdGlvbnMgYXJlCisgICAgLy8gdmVyeSBzZW5zaXRp
dmUgdG8gdGhlaXIgdmFsdWUuIFdlIG1heSBjcmFzaCBpZiB0aGVzZSBhcmUgZG9uZSBpbiB0aGUg
d3Jvbmcgb3JkZXIuCisgICAgcHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQuY2xlYXIoKTsKKyAg
ICBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQuY2xlYXIoKTsKKyAgICBwcml2LT5iYWNrRm9yd2Fy
ZExpc3QuY2xlYXIoKTsKIAogICAgIGlmIChwcml2LT5jb3JlUGFnZSkgewogICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nKFdFQktJVF9XRUJfVklFVyhvYmplY3QpKTsKLQogICAg
ICAgICBjb3JlKHByaXYtPm1haW5GcmFtZSktPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7
CiAgICAgICAgIGRlbGV0ZSBwcml2LT5jb3JlUGFnZTsKLSAgICAgICAgcHJpdi0+Y29yZVBhZ2Ug
PSBOVUxMOworICAgICAgICBwcml2LT5jb3JlUGFnZSA9IDA7CiAgICAgfQogCiAgICAgaWYgKHBy
aXYtPndlYlNldHRpbmdzKSB7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywgKGdwb2ludGVyKXdlYmtpdF93ZWJfdmlld19zZXR0
aW5nc19ub3RpZnksIHdlYlZpZXcpOwotICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJT
ZXR0aW5ncyk7Ci0gICAgICAgIHByaXYtPndlYlNldHRpbmdzID0gTlVMTDsKLQotICAgICAgICBn
X29iamVjdF91bnJlZihwcml2LT53ZWJJbnNwZWN0b3IpOwotICAgICAgICBwcml2LT53ZWJJbnNw
ZWN0b3IgPSBOVUxMOwotCi0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0Zl
YXR1cmVzKTsKLSAgICAgICAgcHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSBOVUxMOwotCi0gICAg
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29udGV4dCk7Ci0gICAgICAgIHByaXYtPmltQ29u
dGV4dCA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHByaXYtPm1haW5SZXNvdXJjZSkgewotICAg
ICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluUmVzb3VyY2UpOwotICAgICAgICBwcml2LT5t
YWluUmVzb3VyY2UgPSBOVUxMOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMocHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCksIChncG9pbnRlcil3ZWJraXRfd2ViX3Zp
ZXdfc2V0dGluZ3Nfbm90aWZ5LCB3ZWJWaWV3KTsKKyAgICAgICAgcHJpdi0+d2ViU2V0dGluZ3Mu
Y2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAocHJpdi0+c3ViUmVzb3VyY2VzKSB7Ci0gICAgICAg
IGdfaGFzaF90YWJsZV91bnJlZihwcml2LT5zdWJSZXNvdXJjZXMpOwotICAgICAgICBwcml2LT5z
dWJSZXNvdXJjZXMgPSBOVUxMOwotICAgIH0KKyAgICBwcml2LT53ZWJJbnNwZWN0b3IuY2xlYXIo
KTsKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcy5jbGVhcigpOworICAgIHByaXYtPm1haW5S
ZXNvdXJjZS5jbGVhcigpOworICAgIHByaXYtPnN1YlJlc291cmNlcy5jbGVhcigpOwogCi0gICAg
cHJpdi0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy0+Y2xlYXIoKTsKLSAgICBIYXNoTWFwPEdka0RyYWdD
b250ZXh0KiwgRHJvcHBpbmdDb250ZXh0Kj46Oml0ZXJhdG9yIGVuZERyb3BwaW5nQ29udGV4dHMg
PSBwcml2LT5kcm9wcGluZ0NvbnRleHRzLT5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8R2RrRHJh
Z0NvbnRleHQqLCBEcm9wcGluZ0NvbnRleHQqPjo6aXRlcmF0b3IgaXRlciA9IHByaXYtPmRyb3Bw
aW5nQ29udGV4dHMtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kRHJvcHBpbmdDb250ZXh0czsgKytpdGVy
KQorICAgIEhhc2hNYXA8R2RrRHJhZ0NvbnRleHQqLCBEcm9wcGluZ0NvbnRleHQqPjo6aXRlcmF0
b3IgZW5kRHJvcHBpbmdDb250ZXh0cyA9IHByaXYtPmRyb3BwaW5nQ29udGV4dHMuZW5kKCk7Cisg
ICAgZm9yIChIYXNoTWFwPEdka0RyYWdDb250ZXh0KiwgRHJvcHBpbmdDb250ZXh0Kj46Oml0ZXJh
dG9yIGl0ZXIgPSBwcml2LT5kcm9wcGluZ0NvbnRleHRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kRHJv
cHBpbmdDb250ZXh0czsgKytpdGVyKQogICAgICAgICBkZWxldGUgKGl0ZXItPnNlY29uZCk7Ci0g
ICAgcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy0+Y2xlYXIoKTsKKyAgICBwcml2LT5kcm9wcGluZ0Nv
bnRleHRzLmNsZWFyKCk7CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFy
ZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewotICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICBkZWxldGUgcHJpdi0+cHJldmlvdXNDbGlj
a1BvaW50OwotICAgIGRlbGV0ZSBwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzOwotICAgIGRlbGV0
ZSBwcml2LT5kcm9wcGluZ0NvbnRleHRzOwotCiAgICAgLy8gV2UgbmVlZCB0byBtYW51YWxseSBj
YWxsIHRoZSBkZXN0cnVjdG9yIGhlcmUsIHNpbmNlIHRoaXMgb2JqZWN0J3MgbWVtb3J5IGlzIG1h
bmFnZWQKICAgICAvLyBieSBHTGliLiBUaGlzIGNhbGxzIGFsbCBDKysgbWVtYmVycycgZGVzdHJ1
Y3RvcnMgYW5kIHByZXZlbnRzIG1lbW9yeSBsZWFrcy4KLSAgICBwcml2LT5+V2ViS2l0V2ViVmll
d1ByaXZhdGUoKTsKKyAgICBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KS0+cHJpdi0+fldlYktpdFdl
YlZpZXdQcml2YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKQEAgLTEyNzYsNyArMTIyNSw3IEBAIHN0
YXRpYyBBdGtPYmplY3QqIHdlYmtpdF93ZWJfdmlld19nZXRfYWNjZXNzaWJsZShHdGtXaWRnZXQq
IHdpZGdldCkKIHN0YXRpYyBnZG91YmxlIHdlYlZpZXdHZXREUEkoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7
Ci0gICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7
CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3Mu
Z2V0KCk7CiAgICAgZ2Jvb2xlYW4gZW5mb3JjZTk2RFBJOwogICAgIGdfb2JqZWN0X2dldCh3ZWJT
ZXR0aW5ncywgImVuZm9yY2UtOTYtZHBpIiwgJmVuZm9yY2U5NkRQSSwgTlVMTCk7CiAgICAgaWYg
KGVuZm9yY2U5NkRQSSkKQEAgLTEzMDIsNyArMTI1MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19zY3JlZW5fY2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrU2NyZWVuKiBwcmV2
aW91CiAgICAgaWYgKHByaXYtPmRpc3Bvc2luZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7CisgICAgV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3MuZ2V0KCk7CiAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gY29yZSh3ZWJWaWV3KS0+c2V0dGluZ3MoKTsKICAgICBn
ZG91YmxlIERQSSA9IHdlYlZpZXdHZXREUEkod2ViVmlldyk7CiAKQEAgLTEzMzYsMTAgKzEyODUs
MTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4dCkKIAogICAgIC8vIFRoaXMgbWlnaHQgaGFwcGVu
IGlmIGEgZHJhZyBpcyBzdGlsbCBpbiBwcm9ncmVzcyBhZnRlciBhIFdlYktpdFdlYlZpZXcKICAg
ICAvLyBpcyBkaXNwb3NlZCBhbmQgYmVmb3JlIGl0IGlzIGZpbmFsaXplZC4KLSAgICBpZiAoIXBy
aXYtPmRyYWdnaW5nRGF0YU9iamVjdHMtPmNvbnRhaW5zKGNvbnRleHQpKQorICAgIGlmICghcHJp
di0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy5jb250YWlucyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJpdi0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy0+cmVtb3ZlKGNvbnRleHQpOworICAg
IHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMucmVtb3ZlKGNvbnRleHQpOwogCiAgICAgRnJhbWUq
IGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0xMzc0LDEwICsxMzIzLDEwIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtE
cmFnQ29udGV4dCogY29uCiAKICAgICAvLyBUaGlzIG1pZ2h0IGhhcHBlbiBpZiBhIGRyYWcgaXMg
c3RpbGwgaW4gcHJvZ3Jlc3MgYWZ0ZXIgYSBXZWJLaXRXZWJWaWV3CiAgICAgLy8gaXMgZGlwb3Nl
ZCBhbmQgYmVmb3JlIGl0IGlzIGZpbmFsaXplZC4KLSAgICBpZiAoIXByaXYtPmRyYWdnaW5nRGF0
YU9iamVjdHMtPmNvbnRhaW5zKGNvbnRleHQpKQorICAgIGlmICghcHJpdi0+ZHJhZ2dpbmdEYXRh
T2JqZWN0cy5jb250YWlucyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFzdGVi
b2FyZEhlbHBlckluc3RhbmNlKCktPmZpbGxTZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEsIGlu
Zm8sIHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMtPmdldChjb250ZXh0KS5nZXQoKSk7CisgICAg
cGFzdGVib2FyZEhlbHBlckluc3RhbmNlKCktPmZpbGxTZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRh
dGEsIGluZm8sIHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMuZ2V0KGNvbnRleHQpLmdldCgpKTsK
IH0KIAogc3RhdGljIGdib29sZWFuIGRvRHJhZ0xlYXZlTGF0ZXIoRHJvcHBpbmdDb250ZXh0KiBj
b250ZXh0KQpAQCAtMTM4NSw3ICsxMzM0LDcgQEAgc3RhdGljIGdib29sZWFuIGRvRHJhZ0xlYXZl
TGF0ZXIoRHJvcHBpbmdDb250ZXh0KiBjb250ZXh0KQogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBjb250ZXh0LT53ZWJWaWV3OwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKIAotICAgIGlmICghcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy0+Y29udGFp
bnMoY29udGV4dC0+Z2RrQ29udGV4dCkpCisgICAgaWYgKCFwcml2LT5kcm9wcGluZ0NvbnRleHRz
LmNvbnRhaW5zKGNvbnRleHQtPmdka0NvbnRleHQpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAK
ICAgICAvLyBJZiB0aGUgdmlldyBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIGRyYWcgeWV0ICh0aGVy
ZSBhcmUgc3RpbGwgcGVuZGluZyBkYXRhKQpAQCAtMTQwMiw3ICsxMzUxLDcgQEAgc3RhdGljIGdi
b29sZWFuIGRvRHJhZ0xlYXZlTGF0ZXIoRHJvcHBpbmdDb250ZXh0KiBjb250ZXh0KQogICAgIH0K
IAogICAgIGNvcmUod2ViVmlldyktPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbmRlZCgpOwotICAg
IHByaXYtPmRyb3BwaW5nQ29udGV4dHMtPnJlbW92ZShjb250ZXh0LT5nZGtDb250ZXh0KTsKKyAg
ICBwcml2LT5kcm9wcGluZ0NvbnRleHRzLnJlbW92ZShjb250ZXh0LT5nZGtDb250ZXh0KTsKICAg
ICBkZWxldGUgY29udGV4dDsKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0xNDEyLDEzICsxMzYx
LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kcmFnX2xlYXZlKEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBw
cml2ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIGlmICghcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy0+
Y29udGFpbnMoY29udGV4dCkpCisgICAgaWYgKCFwcml2LT5kcm9wcGluZ0NvbnRleHRzLmNvbnRh
aW5zKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBEdXJpbmcgYSBkcm9wIEdU
Sysgd2lsbCBmaXJlIGEgZHJhZy1sZWF2ZSBzaWduYWwgcmlnaHQgYmVmb3JlIGZpcmluZwogICAg
IC8vIHRoZSBkcmFnLWRyb3Agc2lnbmFsLiBXZSB3YW50IHRoZSBhY3Rpb25zIGZvciBkcmFnLWxl
YXZlIHRvIGhhcHBlbiBhZnRlcgogICAgIC8vIHRob3NlIGZvciBkcmFnLWRyb3AsIHNvIHNjaGVk
dWxlIHRoZW0gdG8gaGFwcGVuIGFzeW5jaHJvbm91c2x5IGhlcmUuCi0gICAgZ190aW1lb3V0X2Fk
ZCgwLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihkb0RyYWdMZWF2ZUxhdGVyKSwgcHJp
di0+ZHJvcHBpbmdDb250ZXh0cy0+Z2V0KGNvbnRleHQpKTsKKyAgICBnX3RpbWVvdXRfYWRkKDAs
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGRvRHJhZ0xlYXZlTGF0ZXIpLCBwcml2LT5k
cm9wcGluZ0NvbnRleHRzLmdldChjb250ZXh0KSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfZHJhZ19tb3Rpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0
KiBjb250ZXh0LCBnaW50IHgsIGdpbnQgeSwgZ3VpbnQgdGltZSkKQEAgLTE0MjgsMjEgKzEzNzcs
MjEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmFnX21vdGlvbihHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGMKIAogICAgIERyb3BwaW5nQ29udGV4dCogZHJv
cHBpbmdDb250ZXh0ID0gMDsKICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IEludFBvaW50KHgsIHkp
OwotICAgIGlmICghcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy0+Y29udGFpbnMoY29udGV4dCkpIHsK
KyAgICBpZiAoIXByaXYtPmRyb3BwaW5nQ29udGV4dHMuY29udGFpbnMoY29udGV4dCkpIHsKICAg
ICAgICAgZHJvcHBpbmdDb250ZXh0ID0gbmV3IERyb3BwaW5nQ29udGV4dDsKICAgICAgICAgZHJv
cHBpbmdDb250ZXh0LT53ZWJWaWV3ID0gd2ViVmlldzsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0
LT5nZGtDb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0LT5kYXRhT2Jq
ZWN0ID0gV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6Y3JlYXRlKCk7CiAgICAgICAgIGRyb3BwaW5n
Q29udGV4dC0+ZHJvcEhhcHBlbmVkID0gZmFsc2U7CiAgICAgICAgIGRyb3BwaW5nQ29udGV4dC0+
bGFzdE1vdGlvblBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgIHByaXYtPmRyb3BwaW5nQ29u
dGV4dHMtPnNldChjb250ZXh0LCBkcm9wcGluZ0NvbnRleHQpOworICAgICAgICBwcml2LT5kcm9w
cGluZ0NvbnRleHRzLnNldChjb250ZXh0LCBkcm9wcGluZ0NvbnRleHQpOwogCiAgICAgICAgIFZl
Y3RvcjxHZGtBdG9tPiBhY2NlcHRhYmxlVGFyZ2V0cyhwYXN0ZWJvYXJkSGVscGVySW5zdGFuY2Uo
KS0+ZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGNvbnRleHQpKTsKICAgICAgICAgZHJvcHBp
bmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzID0gYWNjZXB0YWJsZVRhcmdldHMuc2l6ZSgp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFjY2VwdGFibGVUYXJnZXRzLnNpemUo
KTsgaSsrKQogICAgICAgICAgICAgZ3RrX2RyYWdfZ2V0X2RhdGEod2lkZ2V0LCBjb250ZXh0LCBh
Y2NlcHRhYmxlVGFyZ2V0cy5hdChpKSwgdGltZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZHJv
cHBpbmdDb250ZXh0ID0gcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy0+Z2V0KGNvbnRleHQpOworICAg
ICAgICBkcm9wcGluZ0NvbnRleHQgPSBwcml2LT5kcm9wcGluZ0NvbnRleHRzLmdldChjb250ZXh0
KTsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0LT5sYXN0TW90aW9uUG9zaXRpb24gPSBwb3NpdGlv
bjsKICAgICB9CiAKQEAgLTE0NjUsMTAgKzE0MTQsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2RyYWdfZGF0YV9yZWNlaXZlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRl
eHQKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7
CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAg
aWYgKCFwcml2LT5kcm9wcGluZ0NvbnRleHRzLT5jb250YWlucyhjb250ZXh0KSkKKyAgICBpZiAo
IXByaXYtPmRyb3BwaW5nQ29udGV4dHMuY29udGFpbnMoY29udGV4dCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBpbmdDb250ZXh0ID0gcHJpdi0+ZHJvcHBp
bmdDb250ZXh0cy0+Z2V0KGNvbnRleHQpOworICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBpbmdD
b250ZXh0ID0gcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy5nZXQoY29udGV4dCk7CiAgICAgZHJvcHBp
bmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzLS07CiAgICAgcGFzdGVib2FyZEhlbHBlcklu
c3RhbmNlKCktPmZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKHNlbGVjdGlvbkRhdGEsIGluZm8s
IGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQoKSk7CiAKQEAgLTE0OTAsMTAgKzE0Mzks
MTAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmFnX2Ryb3AoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb24KICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAgaWYgKCFwcml2LT5kcm9wcGluZ0NvbnRleHRzLT5j
b250YWlucyhjb250ZXh0KSkKKyAgICBpZiAoIXByaXYtPmRyb3BwaW5nQ29udGV4dHMuY29udGFp
bnMoY29udGV4dCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIERyb3BwaW5nQ29udGV4
dCogZHJvcHBpbmdDb250ZXh0ID0gcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy0+Z2V0KGNvbnRleHQp
OworICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBpbmdDb250ZXh0ID0gcHJpdi0+ZHJvcHBpbmdD
b250ZXh0cy5nZXQoY29udGV4dCk7CiAgICAgZHJvcHBpbmdDb250ZXh0LT5kcm9wSGFwcGVuZWQg
PSB0cnVlOwogCiAgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CkBAIC0xNTIxLDcgKzE0NzAs
NyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3F1ZXJ5X3Rvb2x0aXAoR3RrV2lk
Z2V0ICp3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LAogc3RhdGljIEd0a0lNQ29udGV4dCogd2Via2l0
X3dlYl92aWV3X2dldF9pbV9jb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKLSAg
ICByZXR1cm4gR1RLX0lNX0NPTlRFWFQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKKyAgICBy
ZXR1cm4gR1RLX0lNX0NPTlRFWFQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0LmdldCgpKTsKIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Ns
YXNzKiB3ZWJWaWV3Q2xhc3MpCkBAIC0yODg5LDcgKzI4MzgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykK
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7Ci0gICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0
dGluZ3M7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0
dGluZ3MuZ2V0KCk7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gY29yZSh3ZWJWaWV3KS0+c2V0
dGluZ3MoKTsKIAogICAgIGdjaGFyKiBkZWZhdWx0RW5jb2RpbmcsICpjdXJzaXZlRm9udEZhbWls
eSwgKmRlZmF1bHRGb250RmFtaWx5LCAqZmFudGFzeUZvbnRGYW1pbHksICptb25vc3BhY2VGb250
RmFtaWx5LCAqc2Fuc1NlcmlmRm9udEZhbWlseSwgKnNlcmlmRm9udEZhbWlseSwgKnVzZXJTdHls
ZXNoZWV0VXJpOwpAQCAtMzA5OSw3ICszMDQ4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAvLyBtZW1iZXJzLCB3aGljaCBl
bnN1cmVzIHRoZXkgYXJlIGluaXRpYWxpemVkIHByb3Blcmx5LgogICAgIG5ldyAocHJpdikgV2Vi
S2l0V2ViVmlld1ByaXZhdGUoKTsKIAotICAgIHByaXYtPmltQ29udGV4dCA9IGd0a19pbV9tdWx0
aWNvbnRleHRfbmV3KCk7CisgICAgcHJpdi0+aW1Db250ZXh0ID0gYWRvcHRQbGF0Zm9ybVJlZihn
dGtfaW1fbXVsdGljb250ZXh0X25ldygpKTsKIAogICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VD
bGllbnRzOwogICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJLaXQ6OkNocm9t
ZUNsaWVudCh3ZWJWaWV3KTsKQEAgLTMxMTEsMTUgKzMwNjAsMTMgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIAogICAgIC8vIFdlIGFs
c28gYWRkIGEgc2ltcGxlIHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCiAgICAg
Ly8gaW50ZXJmYWNlIGZvciB0aGUgV2ViIEluc3BlY3Rvci4KLSAgICBwcml2LT53ZWJJbnNwZWN0
b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lO
U1BFQ1RPUiwgTlVMTCkpOwotICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3Jf
Y2xpZW50KHByaXYtPndlYkluc3BlY3RvciwgcHJpdi0+Y29yZVBhZ2UpOworICAgIHByaXYtPndl
Ykluc3BlY3RvciA9IGFkb3B0UGxhdGZvcm1SZWYoV0VCS0lUX1dFQl9JTlNQRUNUT1IoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKSk7CisgICAgd2Via2l0X3dl
Yl9pbnNwZWN0b3Jfc2V0X2luc3BlY3Rvcl9jbGllbnQocHJpdi0+d2ViSW5zcGVjdG9yLmdldCgp
LCBwcml2LT5jb3JlUGFnZSk7CiAKKyAgICAvLyBUaGUgc21hcnQgcG9pbnRlciB3aWxsIGNhbGwg
Z19vYmplY3RfcmVmX3Npbmsgb24gdGhlc2UgYWRqdXN0bWVudHMuCiAgICAgcHJpdi0+aG9yaXpv
bnRhbEFkanVzdG1lbnQgPSBHVEtfQURKVVNUTUVOVChndGtfYWRqdXN0bWVudF9uZXcoMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkpOwogICAgIHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCA9
IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wKSk7CiAKLSAgICBnX29iamVjdF9yZWZfc2luayhwcml2LT5ob3Jpem9udGFsQWRqdXN0
bWVudCk7Ci0gICAgZ19vYmplY3RfcmVmX3NpbmsocHJpdi0+dmVydGljYWxBZGp1c3RtZW50KTsK
LQogICAgIGd0a193aWRnZXRfc2V0X2Nhbl9mb2N1cyhHVEtfV0lER0VUKHdlYlZpZXcpLCBUUlVF
KTsKICAgICBwcml2LT5tYWluRnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKHdlYmtpdF93ZWJfZnJh
bWVfbmV3KHdlYlZpZXcpKTsKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24gPSBwcml2LT5s
YXN0UG9wdXBZUG9zaXRpb24gPSAtMTsKQEAgLTMxMjksMjEgKzMwNzYsMTcgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIAogICAgIHBy
aXYtPnpvb21GdWxsQ29udGVudCA9IEZBTFNFOwogCi0gICAgcHJpdi0+d2ViU2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworICAgIHByaXYtPndlYlNldHRpbmdzID0gYWRvcHRQ
bGF0Zm9ybVJlZih3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+
d2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zZXR0aW5n
c19ub3RpZnkpLCB3ZWJWaWV3KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRp
bmdzLmdldCgpLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nf
bm90aWZ5KSwgd2ViVmlldyk7CiAKLSAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtp
dF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworICAgIHByaXYtPndlYldpbmRvd0ZlYXR1cmVz
ID0gYWRvcHRQbGF0Zm9ybVJlZih3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKSk7CiAK
LSAgICBwcml2LT5zdWJSZXNvdXJjZXMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwoZ19zdHJfaGFz
aCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgZ19vYmplY3RfdW5yZWYpOworICAgIHByaXYtPnN1YlJl
c291cmNlcyA9IGFkb3B0UGxhdGZvcm1SZWYoZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfc3RyX2hh
c2gsIGdfc3RyX2VxdWFsLCBnX2ZyZWUsIGdfb2JqZWN0X3VucmVmKSk7CiAKICAgICBwcml2LT5j
dXJyZW50Q2xpY2tDb3VudCA9IDA7Ci0gICAgcHJpdi0+cHJldmlvdXNDbGlja1BvaW50ID0gbmV3
IEludFBvaW50KDAsIDApOwogICAgIHByaXYtPnByZXZpb3VzQ2xpY2tCdXR0b24gPSAwOwogICAg
IHByaXYtPnByZXZpb3VzQ2xpY2tUaW1lID0gMDsKLQotICAgIHByaXYtPmRyYWdnaW5nRGF0YU9i
amVjdHMgPSBuZXcgSGFzaE1hcDxHZGtEcmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpEYXRh
T2JqZWN0R3RrPiA+KCk7Ci0gICAgcHJpdi0+ZHJvcHBpbmdDb250ZXh0cyA9IG5ldyBIYXNoTWFw
PEdka0RyYWdDb250ZXh0KiwgRHJvcHBpbmdDb250ZXh0Kj4oKTsKICAgICBndGtfZHJhZ19kZXN0
X3NldChHVEtfV0lER0VUKHdlYlZpZXcpLCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVsdHM+KDAp
LCAwLCAwLCBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTksgfCBHREtfQUNU
SU9OX1BSSVZBVEUpKTsKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChHVEtfV0lE
R0VUKHdlYlZpZXcpLCBwYXN0ZWJvYXJkSGVscGVySW5zdGFuY2UoKS0+dGFyZ2V0TGlzdCgpKTsK
IH0KQEAgLTMyMTMsOSArMzE1Niw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5n
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJTZXR0aW5ncyogd2ViCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNldHRpbmdzKSk7CiAKICAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLCAoZ3BvaW50
ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7Ci0gICAgZ19vYmpl
Y3RfdW5yZWYocHJpdi0+d2ViU2V0dGluZ3MpOwotICAgIGdfb2JqZWN0X3JlZih3ZWJTZXR0aW5n
cyk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNl
dHRpbmdzLmdldCgpLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwg
d2ViVmlldyk7CiAgICAgcHJpdi0+d2ViU2V0dGluZ3MgPSB3ZWJTZXR0aW5nczsKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zZXR0
aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKQEAgLTMyMzcsMTAgKzMxNzgsOCBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2Vi
U2V0dGluZ3MqIHdlYgogICovCiBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7Ci0KLSAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgcmV0dXJuIHByaXYtPndl
YlNldHRpbmdzOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3
ZWJWaWV3KSwgMCk7CisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYlNldHRpbmdzLmdldCgp
OwogfQogCiAvKioKQEAgLTMyNTksMjYgKzMxOTgsMTggQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqLwog
V2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3RvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7Ci0KLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7Ci0gICAgcmV0dXJuIHByaXYtPndlYkluc3BlY3RvcjsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOworICAg
IHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJJbnNwZWN0b3IuZ2V0KCk7CiB9CiAKIC8vIGludGVy
bmFsCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXMpCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OwotICAgIAogICAgIGlmICghd2ViV2luZG93RmVhdHVyZXMpCiAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwocHJpdi0+d2ViV2luZG93RmVh
dHVyZXMsIHdlYldpbmRvd0ZlYXR1cmVzKSkKKyAgICBpZiAod2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfZXF1YWwod2ViVmlldy0+cHJpdi0+d2ViV2luZG93RmVhdHVyZXMuZ2V0KCksIHdlYldp
bmRvd0ZlYXR1cmVzKSkKICAgICAgIHJldHVybjsKLQotICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
PndlYldpbmRvd0ZlYXR1cmVzKTsKLSAgICBnX29iamVjdF9yZWYod2ViV2luZG93RmVhdHVyZXMp
OwotICAgIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0gd2ViV2luZG93RmVhdHVyZXM7CisgICAg
d2ViVmlldy0+cHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSB3ZWJXaW5kb3dGZWF0dXJlczsKIH0K
IAogLyoqCkBAIC0zMjk0LDEwICszMjI1LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3NldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2UKICAq
LwogV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2Zl
YXR1cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKLQotICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICByZXR1cm4gcHJpdi0+d2ViV2lu
ZG93RmVhdHVyZXM7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
KHdlYlZpZXcpLCAwKTsKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+d2ViV2luZG93RmVhdHVy
ZXMuZ2V0KCk7CiB9CiAKIC8qKgpAQCAtMzM2MSwxNCArMzI5MCwxMCBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGdibwogICovCiBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlYmtpdF93ZWJfdmll
d19nZXRfYmFja19mb3J3YXJkX2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwot
Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotCisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKICAg
ICBpZiAoIWNvcmUod2ViVmlldykgfHwgIWNvcmUod2ViVmlldyktPmJhY2tGb3J3YXJkTGlzdCgp
LT5lbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHByaXYtPmJh
Y2tGb3J3YXJkTGlzdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHdlYlZpZXctPnBy
aXYtPmJhY2tGb3J3YXJkTGlzdC5nZXQoKTsKIH0KIAogLyoqCkBAIC00MTM1LDcgKzQwNjAsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfdmlld196b29tX2luKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAK
ICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgZ2Zs
b2F0IHpvb21NdWx0aXBsaWVyUmF0aW87Ci0gICAgZ19vYmplY3RfZ2V0KHByaXYtPndlYlNldHRp
bmdzLCAiem9vbS1zdGVwIiwgJnpvb21NdWx0aXBsaWVyUmF0aW8sIE5VTEwpOworICAgIGdfb2Jq
ZWN0X2dldChwcml2LT53ZWJTZXR0aW5ncy5nZXQoKSwgInpvb20tc3RlcCIsICZ6b29tTXVsdGlw
bGllclJhdGlvLCBOVUxMKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3
ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwod2ViVmlldykgKyB6b29tTXVs
dGlwbGllclJhdGlvKTsKIH0KQEAgLTQxNTYsNyArNDA4MSw3IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X3pvb21fb3V0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgZ2Zsb2F0IHpvb21NdWx0aXBsaWVy
UmF0aW87Ci0gICAgZ19vYmplY3RfZ2V0KHByaXYtPndlYlNldHRpbmdzLCAiem9vbS1zdGVwIiwg
Jnpvb21NdWx0aXBsaWVyUmF0aW8sIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChwcml2LT53ZWJT
ZXR0aW5ncy5nZXQoKSwgInpvb20tc3RlcCIsICZ6b29tTXVsdGlwbGllclJhdGlvLCBOVUxMKTsK
IAogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3pvb21fbGV2ZWwod2ViVmlldykgLSB6b29tTXVsdGlwbGllclJhdGlvKTsKIH0K
QEAgLTQ1MTIsMTkgKzQ0MzcsMTkgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYWRkX3Jlc291cmNl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGlkZW50aWZpZXIKICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKICAgICBpZiAoIXByaXYt
Pm1haW5SZXNvdXJjZSkgewotICAgICAgICBwcml2LT5tYWluUmVzb3VyY2UgPSB3ZWJSZXNvdXJj
ZTsKKyAgICAgICAgcHJpdi0+bWFpblJlc291cmNlID0gYWRvcHRQbGF0Zm9ybVJlZih3ZWJSZXNv
dXJjZSk7CiAgICAgICAgIHByaXYtPm1haW5SZXNvdXJjZUlkZW50aWZpZXIgPSBpZGVudGlmaWVy
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19oYXNoX3RhYmxlX2luc2VydChwcml2
LT5zdWJSZXNvdXJjZXMsIGdfc3RyZHVwKGlkZW50aWZpZXIpLCB3ZWJSZXNvdXJjZSk7CisgICAg
Z19oYXNoX3RhYmxlX2luc2VydChwcml2LT5zdWJSZXNvdXJjZXMuZ2V0KCksIGdfc3RyZHVwKGlk
ZW50aWZpZXIpLCB3ZWJSZXNvdXJjZSk7CiB9CiAKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3Jlc291cmNlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNoYXIqIGlkZW50
aWZpZXIpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OwogICAgIGdwb2ludGVyIHdlYlJlc291cmNlID0gMDsKLSAgICBnYm9vbGVhbiByZXNvdXJjZUZv
dW5kID0gZ19oYXNoX3RhYmxlX2xvb2t1cF9leHRlbmRlZChwcml2LT5zdWJSZXNvdXJjZXMsIGlk
ZW50aWZpZXIsIE5VTEwsICZ3ZWJSZXNvdXJjZSk7CisgICAgZ2Jvb2xlYW4gcmVzb3VyY2VGb3Vu
ZCA9IGdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQocHJpdi0+c3ViUmVzb3VyY2VzLmdldCgp
LCBpZGVudGlmaWVyLCBOVUxMLCAmd2ViUmVzb3VyY2UpOwogCiAgICAgLy8gVGhlIG9ubHkgcmVz
b3VyY2Ugd2UgZG8gbm90IHN0b3JlIGluIHRoaXMgaGFzaCB0YWJsZSBpcyB0aGUKICAgICAvLyBt
YWluISAgSWYgd2UgZGlkIG5vdCBmaW5kIGEgcmVxdWVzdCwgaXQgcHJvYmFibHkgbWVhbnMgdGhl
IGxvYWQKQEAgLTQ1NDEsMjkgKzQ0NjYsMjQgQEAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdF93
ZWJfdmlld19nZXRfcmVzb3VyY2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY2hhciogaWQKIAog
V2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5tYWluUmVz
b3VyY2U7CisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPm1haW5SZXNvdXJjZS5nZXQoKTsKIH0K
IAogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xlYXJfcmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OwotCiAgICAgcHJpdi0+bWFpblJlc291cmNlSWRlbnRpZmllciA9ICIiOwotCi0gICAgaWYgKHBy
aXYtPm1haW5SZXNvdXJjZSkgewotICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluUmVz
b3VyY2UpOwotICAgICAgICBwcml2LT5tYWluUmVzb3VyY2UgPSBOVUxMOwotICAgIH0KKyAgICBw
cml2LT5tYWluUmVzb3VyY2UgPSAwOwogCiAgICAgaWYgKHByaXYtPnN1YlJlc291cmNlcykKLSAg
ICAgICAgZ19oYXNoX3RhYmxlX3JlbW92ZV9hbGwocHJpdi0+c3ViUmVzb3VyY2VzKTsKKyAgICAg
ICAgZ19oYXNoX3RhYmxlX3JlbW92ZV9hbGwocHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKIH0K
IAogR0xpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwotICAgIEdMaXN0KiBzdWJSZXNvdXJjZXMgPSBnX2hhc2hfdGFibGVfZ2V0X3ZhbHVlcyhw
cml2LT5zdWJSZXNvdXJjZXMpOwotICAgIHJldHVybiBnX2xpc3RfcmVtb3ZlKHN1YlJlc291cmNl
cywgcHJpdi0+bWFpblJlc291cmNlKTsKKyAgICBHTGlzdCogc3ViUmVzb3VyY2VzID0gZ19oYXNo
X3RhYmxlX2dldF92YWx1ZXMocHJpdi0+c3ViUmVzb3VyY2VzLmdldCgpKTsKKyAgICByZXR1cm4g
Z19saXN0X3JlbW92ZShzdWJSZXNvdXJjZXMsIHByaXYtPm1haW5SZXNvdXJjZS5nZXQoKSk7CiB9
CiAKIC8qIEZyb20gRXZlbnRIYW5kbGVyLmNwcCAqLwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>