<?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>98153</bug_id>
          
          <creation_ts>2012-10-02 05:44:42 -0700</creation_ts>
          <short_desc>[GTK] WebKitWebView doesn&apos;t emit notify:favicon when it changes in some cases in WebKit2</short_desc>
          <delta_ts>2012-10-03 06:06:26 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>98063</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>gustavo</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732580</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-02 05:44:42 -0700</bug_when>
    <thetext>The main problem is that it relies on icon-ready signal to be emitted by the favicon database, but that signal is only emitted when the icon is loaded from the network or imported from the database, but not when the icon is already in memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732591</commentid>
    <comment_count>1</comment_count>
      <attachid>166680</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-02 05:59:19 -0700</bug_when>
    <thetext>Created attachment 166680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732592</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 06:01:45 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732593</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 06:02:04 -0700</bug_when>
    <thetext>Attachment 166680 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1270:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:134:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:142:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732596</commentid>
    <comment_count>4</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2012-10-02 06:08:57 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The main problem is that it relies on icon-ready signal to be
&gt; emitted by the favicon database, but that signal is only emitted
&gt; when the icon is loaded from the network or imported from the
&gt; database, but not when the icon is already in memory.

I tested my patch with this and it seems to work fine now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732614</commentid>
    <comment_count>5</comment_count>
      <attachid>166680</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-02 06:39:24 -0700</bug_when>
    <thetext>Comment on attachment 166680
Patch

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

The patch looks good to me. Only concern I have is whether it would be needed to write / extend a unit test for it.

&gt; Source/WebKit2/ChangeLog:23
&gt; +        known by the database and it doesn&apos;t have a favicon.

Good catch

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1253
&gt; +static void faviconReadyCallback(GObject* object, GAsyncResult* result, gpointer userData)

Nit. I would probably rename this function to better reflect is the async callback for _get_favicon() and not the handler for the icon-ready signal (as it seems to suggest)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732624</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-02 06:55:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 166680 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166680&amp;action=review
&gt; 
&gt; The patch looks good to me. Only concern I have is whether it would be needed to write / extend a unit test for it.

Unit tests are currently broken indeed, but I don&apos;t know why, I&apos;ll look at it.

&gt; &gt; Source/WebKit2/ChangeLog:23
&gt; &gt; +        known by the database and it doesn&apos;t have a favicon.
&gt; 
&gt; Good catch
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1253
&gt; &gt; +static void faviconReadyCallback(GObject* object, GAsyncResult* result, gpointer userData)
&gt; 
&gt; Nit. I would probably rename this function to better reflect is the async callback for _get_favicon() and not the handler for the icon-ready signal (as it seems to suggest)

You are right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732625</commentid>
    <comment_count>7</comment_count>
      <attachid>166680</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-02 06:55:35 -0700</bug_when>
    <thetext>Comment on attachment 166680
Patch

The patch seems to break the unit tests, but  still don&apos;t see why, I&apos;m working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732669</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-02 08:30:08 -0700</bug_when>
    <thetext>It seems it was not my patch, test is failing in the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732868</commentid>
    <comment_count>9</comment_count>
      <attachid>166719</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-02 11:29:19 -0700</bug_when>
    <thetext>Created attachment 166719
Updated patch

It fixes some issues with the previous patch, removing race conditions in the cancellation code and cancelling the operation in WebView when needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732885</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 11:41:49 -0700</bug_when>
    <thetext>Attachment 166719 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1288:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:127:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:135:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732925</commentid>
    <comment_count>11</comment_count>
      <attachid>166719</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-02 12:10:05 -0700</bug_when>
    <thetext>Comment on attachment 166719
Updated patch

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

Okay. This looks reasonable. I&apos;d really like Mario to do an informal review before I r+ this though.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:127
&gt;&gt; +                    _(&quot;Unknown favicon for page %s&quot;), pageURL.utf8().data());
&gt; 
&gt; When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]

I know that we have agreed in the past to line up the arguments, but it seems that the style bot now complains about this.  We should follow the herd here. Sticking with what we agreed to before will just cause us pain, because the bot will never stop complaining.

When does this error case happen? I&apos;m a bit confused by the phrase &quot;Unknown favicon for page...&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:270
&gt; +static void webkitWebViewCancelFavicon(WebKitWebView* webView)

webkitWebViewCancelFaviconRequest?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:288
&gt;  static void iconReadyCallback(WebKitFaviconDatabase *database, const char *uri, WebKitWebView *webView)

Do you mind also fixing the asterisks here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733418</commentid>
    <comment_count>12</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-03 01:00:43 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 166719 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166719&amp;action=review
&gt; 
&gt; Okay. This looks reasonable. I&apos;d really like Mario to do an informal review before I r+ this though.

I have reviewed it and it looks good to me. Only doubt I had was about removing all the code to connect to the cancellable object, but Carlos explained me via jabber that not only it&apos;s not needed[*], but that it was also a source of problems due to a race condition that might happen in some cases.

So, I think an r+ is in place :)

[*] We would not be cancelling anything in the middle of the operation anyway, but just checking if it was cancelled in the _finish() method, and report accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733560</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-03 04:27:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 166719 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166719&amp;action=review
&gt; 
&gt; Okay. This looks reasonable. I&apos;d really like Mario to do an informal review before I r+ this though.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:127
&gt; &gt;&gt; +                    _(&quot;Unknown favicon for page %s&quot;), pageURL.utf8().data());
&gt; &gt; 
&gt; &gt; When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; 
&gt; I know that we have agreed in the past to line up the arguments, but it seems that the style bot now complains about this.  We should follow the herd here. Sticking with what we agreed to before will just cause us pain, because the bot will never stop complaining.
&gt; 
&gt; When does this error case happen? I&apos;m a bit confused by the phrase &quot;Unknown favicon for page...&quot;
&gt; 

There are some cases where we don&apos;t know anything about the favicon, because the page hasn&apos;t been loaded or is being loaded and the icon hasn&apos;t been asked yet. Maybe we could rename it to unknown page, there might be a record in the database for he page, but not for the icon yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733568</commentid>
    <comment_count>14</comment_count>
      <attachid>166855</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-03 04:44:41 -0700</bug_when>
    <thetext>Created attachment 166855
Updated patch

Addressed review comments, workaround style issues, and fix the unit tests. The problem as a special case that happens when you as for an icon when it&apos;s being loaded and the database initial import is ongoing, something that it&apos;s unlikely to happen in a real app, but always happens in unit tests because things are done too early and fast. In such case the icon-data-ready callback can be called before the favicon has been loaded. With this patch WebKitWebView now does the right thing, so instead of waiting for the icon-ready signal, we can wait for the notify::favicon signal os WebKitWebView that will be emitted when the favicon data is actually ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733613</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-03 06:06:26 -0700</bug_when>
    <thetext>Committed r130279: &lt;http://trac.webkit.org/changeset/130279&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166680</attachid>
            <date>2012-10-02 05:59:19 -0700</date>
            <delta_ts>2012-10-02 11:29:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-favicon-fixes.diff</filename>
            <type>text/plain</type>
            <size>14545</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjYjczNzhhLi4yMGE0OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMTAtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFdlYktpdFdlYlZpZXcgZG9lc24ndCBlbWl0IG5vdGlmeTpmYXZp
Y29uIHdoZW4gaXQgY2hhbmdlcyBpbiBzb21lIGNhc2VzIGluIFdlYktpdDIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1haW4gcHJvYmxlbSBpcyB0
aGF0IGl0IHJlbGllcyBvbiBpY29uLXJlYWR5IHNpZ25hbCB0byBiZQorICAgICAgICBlbWl0dGVk
IGJ5IHRoZSBmYXZpY29uIGRhdGFiYXNlLCBidXQgdGhhdCBzaWduYWwgaXMgb25seSBlbWl0dGVk
CisgICAgICAgIHdoZW4gdGhlIGljb24gaXMgbG9hZGVkIGZyb20gdGhlIG5ldHdvcmsgb3IgaW1w
b3J0ZWQgZnJvbSB0aGUKKyAgICAgICAgZGF0YWJhc2UsIGJ1dCBub3Qgd2hlbiB0aGUgaWNvbiBp
cyBhbHJlYWR5IGluIG1lbW9yeS4gVGhlIHdheSB0bworICAgICAgICBkZXRlY3QgaWYgYSB3ZWIg
cGFnZSBkb2Vzbid0IGhhdmUgYSBmYXZpY29uIG9yIGl0J3MgdW5rbm93biBpdCdzCisgICAgICAg
IGFsc28gaW5jb3JyZWN0bHkgZG9uZSBhbmQgdGhlIHdyb25nIGVycm9yIGlzIHJldHVybmVkIGZv
ciBwYWdlcworICAgICAgICBub3QgaGF2aW5nIGEgZmF2aWNvbi4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChHZXRGYXZp
Y29uU3VyZmFjZUFzeW5jRGF0YSk6IEFkZCBhIEdFcnJvciBmaWVsZC4KKyAgICAgICAgKGdldElj
b25TdXJmYWNlU3luY2hyb25vdXNseSk6IEFkZCBhIEdFcnJvciBwYXJhbWV0ZXIgYW5kIGZpbGwg
aXQKKyAgICAgICAgYWNjb3JkaW5nbHkuIFVzZSBpbWFnZUZvclBhZ2VVUkwoKSBpbnN0ZWFkIG9m
CisgICAgICAgIG5hdGl2ZUltYWdlRm9yUGFnZVVSTCgpIGJlY2F1c2UgdGhlIGxhdHRlciBhbHdh
eXMgcmV0dXJucyBOVUxMIGZvcgorICAgICAgICBlbXB0eSBpbWFnZXMsIHNvIGl0J3Mgbm90IHBv
c3NpYmxlIHRvIGtub3cgd2hldGhlciBpdCdzIGFuIGVtcHR5CisgICAgICAgIGltYWdlIG9yIG5v
dC4gSWYgdGhlIGltYWdlIGlzIGVtcHR5IGlzIGJlY2F1c2UgdGhlIHdlYiBwYWdlIGlzCisgICAg
ICAgIGtub3duIGJ5IHRoZSBkYXRhYmFzZSBhbmQgaXQgZG9lc24ndCBoYXZlIGEgZmF2aWNvbi4K
KyAgICAgICAgKHByb2Nlc3NQZW5kaW5nSWNvbnNGb3JVUkkpOiBQYXNzIHRoZSBkYXRhIGVycm9y
IHRvCisgICAgICAgIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSgpLgorICAgICAgICAod2Vi
a2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbik6IFBhc3MgTlVMTCBhcyBlcnJvciB0bworICAg
ICAgICBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoKS4KKyAgICAgICAgKHNldEVycm9yRm9y
QXN5bmNSZXN1bHQpOiBGaWxsIGFsc28gZXJyb3IgZm9yCisgICAgICAgIFdFQktJVF9GQVZJQ09O
X0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fVU5LTk9XTi4KKyAgICAgICAgKHdlYmtpdF9mYXZpY29u
X2RhdGFiYXNlX2dldF9mYXZpY29uKTogSWYgd2UgZ2V0IE5VTEwgYXMgaWNvbiBpbgorICAgICAg
ICB0aGUgZmlyc3QgcGxhY2UsIGNoZWNrIHRoZSBlcnJvciBjb2RlIHJldHVybmVkIGJ5CisgICAg
ICAgIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSgpIGFuZCByZXR1cm4gZWFybHkgaWYgdGhl
IHBhZ2UgZG9lc24ndAorICAgICAgICBoYXZlIGEgZmF2aWNvbi4KKyAgICAgICAgKHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaCk6IEVycm9ycyBhcmUgcHJvY2Vzc2Vk
CisgICAgICAgIGJlZm9yZSBub3csIHNvIHNpbXBseSBwcm9wYWdhdGUgdGhlIGVycm9yIGlmIGFu
eSBvciByZXR1cm4gdGhlCisgICAgICAgIGZhdmljb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUp
OiBLZWVwIGEgcmVmZXJlbmNlIG9mIHRoZSBmYXZpY29uLgorICAgICAgICAod2Via2l0V2ViVmll
d1VwZGF0ZUZhdmljb24pOiBDaGVjayBpZiBmYXZpY29uIGhhcyBjaGFuZ2VkIGFuZAorICAgICAg
ICBzYXZlIGl0IGVtaXR0aW5nIGFsc28gbm90aWZ5OjpmYXZpY29uIHNpZ25hbC4KKyAgICAgICAg
KGljb25SZWFkeUNhbGxiYWNrKTogT25seSB1cGRhdGUgdGhlIGZhdmljb24gaWYgd2UgZG9uJ3Qg
aGF2ZSBvbmUKKyAgICAgICAgYWxyZWFkeS4KKyAgICAgICAgKGZhdmljb25SZWFkeUNhbGxiYWNr
KTogVXBkYXRlIHRoZSBmYXZpY29uLgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRDaGFuZ2Vk
KTogVHJ5IHRvIGdldCB0aGUgZmF2aWNvbiB3aGVuIHRoZSBsb2FkCisgICAgICAgIGhhcyBiZWVu
IGNvbW1pdHRlZCBhbmQgdGhlIFVSSSBpcyB0aGUgZmluYWwgb25lLgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2dldF9mYXZpY29uKTogUmV0dXJuIHRoZSBjYWNoZWQgZmF2aWNvbi4KKwogMjAx
Mi0xMC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHRoZSBTYWZhcmkgMiAtPiBTYWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9ydCBjb2RlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAKaW5kZXggOTBjYzkzNC4uMDhjMjY4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTA5LDYg
KzExMCw3IEBAIHN0cnVjdCBHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSB7CiAgICAgR1JlZlB0
cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+IGZhdmljb25EYXRhYmFzZTsKICAgICBTdHJpbmcgcGFn
ZVVSTDsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpY29uOworICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGU7CiAgICAg
dW5zaWduZWQgbG9uZyBjYW5jZWxsZWRJZDsKIApAQCAtMTIwLDE3ICsxMjIsMjggQEAgc3RydWN0
IEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhIHsKIH07CiBXRUJLSVRfREVGSU5FX0FTWU5DX0RB
VEFfU1RSVUNUKEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKQogCi1zdGF0aWMgY2Fpcm9fc3Vy
ZmFjZV90KiBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoV2ViS2l0RmF2aWNvbkRhdGFiYXNl
KiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQorc3RhdGljIGNhaXJvX3N1cmZhY2Vf
dCogZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIFRoZSBleGFjdCBzaXplIHdlIHBhc3MgaXMg
aXJyZWxldmFudCB0byB0aGUgaWNvbkRhdGFiYXNlIGNvZGUuCiAgICAgLy8gV2UgbXVzdCBwYXNz
IHNvbWV0aGluZyBncmVhdGVyIHRoYW4gMHgwIHRvIGdldCBhbiBpY29uLgotICAgIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyIGljb24gPSBkYXRhYmFzZS0+cHJpdi0+aWNvbkRhdGFiYXNlLT5uYXRp
dmVJbWFnZUZvclBhZ2VVUkwocGFnZVVSTCwgV2ViQ29yZTo6SW50U2l6ZSgxLCAxKSk7Ci0gICAg
aWYgKCFpY29uKQorICAgIFdlYkNvcmU6OkltYWdlKiBpY29uSW1hZ2UgPSBkYXRhYmFzZS0+cHJp
di0+aWNvbkRhdGFiYXNlLT5pbWFnZUZvclBhZ2VVUkwocGFnZVVSTCwgV2ViQ29yZTo6SW50U2l6
ZSgxLCAxKSk7CisgICAgaWYgKCFpY29uSW1hZ2UpIHsKKyAgICAgICAgZ19zZXRfZXJyb3IoZXJy
b3IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFT
RV9FUlJPUl9GQVZJQ09OX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgIF8oIlVua25vd24g
ZmF2aWNvbiBmb3IgcGFnZSAlcyIpLCBwYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGljb24gPSBp
Y29uSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFpY29uKSB7
CisgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJP
UiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1RfRk9VTkQsCisgICAg
ICAgICAgICAgICAgICAgIF8oIlBhZ2UgJXMgZG9lcyBub3QgaGF2ZSBhIGZhdmljb24iKSwgcGFn
ZVVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCi0gICAgcmV0
dXJuIGljb24gPyBpY29uLT5zdXJmYWNlKCkgOiAwOworICAgIHJldHVybiBpY29uLT5zdXJmYWNl
KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRlbGV0ZVBlbmRpbmdJY29uUmVxdWVzdHMoV2ViS2l0RmF2
aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgUGVuZGluZ0ljb25SZXF1ZXN0VmVjdG9yKiByZXF1ZXN0
cywgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQpAQCAtMTQ4LDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lk
IHByb2Nlc3NQZW5kaW5nSWNvbnNGb3JVUkkoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFz
ZSwgY29uc3QgU3RyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpY29ucy0+c2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQgPSBpY29ucy0+YXQoaSku
Z2V0KCk7CiAgICAgICAgIEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKiBkYXRhID0gc3RhdGlj
X2Nhc3Q8R2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRf
Z2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQpKTsKLSAgICAgICAgZGF0YS0+aWNvbiA9IGdldElj
b25TdXJmYWNlU3luY2hyb25vdXNseShkYXRhYmFzZSwgcGFnZVVSTCk7CisgICAgICAgIGRhdGEt
Pmljb24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2UsIHBhZ2VVUkwsICZk
YXRhLT5lcnJvci5vdXRQdHIoKSk7CiAKICAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2Nv
bXBsZXRlKHJlc3VsdCk7CiAgICAgfQpAQCAtMTg4LDcgKzIwMSw3IEBAIGNhaXJvX3N1cmZhY2Vf
dCogd2Via2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbihXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlCiAgICAgQVNTRVJUKFdFQktJVF9JU19GQVZJQ09OX0RBVEFCQVNFKGRhdGFiYXNl
KSk7CiAgICAgQVNTRVJUKCFwYWdlVVJMLmlzTnVsbCgpKTsKIAotICAgIGNhaXJvX3N1cmZhY2Vf
dCogaWNvblN1cmZhY2UgPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2UsIFN0
cmluZzo6ZnJvbVVURjgocGFnZVVSTC5kYXRhKCkpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIGlj
b25TdXJmYWNlID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KGRhdGFiYXNlLCBTdHJpbmc6
OmZyb21VVEY4KHBhZ2VVUkwuZGF0YSgpKSwgMCk7CiAgICAgaWYgKCFpY29uU3VyZmFjZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKQEAgLTI0Nyw2ICsyNjAsMTAgQEAgc3RhdGljIHZvaWQgc2V0RXJy
b3JGb3JBc3luY1Jlc3VsdChHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViS2l0RmF2aWNv
bkRhdGEKICAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9lcnJvcihyZXN1bHQsIFdF
QktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SLCBlcnJvciwgXygiUGFnZSAlcyBkb2VzIG5vdCBo
YXZlIGEgZmF2aWNvbiIpLCBwYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBicmVhazsK
IAorICAgIGNhc2UgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9VTktOT1dO
OgorICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X2Vycm9yKHJlc3VsdCwgV0VCS0lU
X0ZBVklDT05fREFUQUJBU0VfRVJST1IsIGVycm9yLCBfKCJVbmtub3duIGZhdmljb24gZm9yIHBh
Z2UgJXMiKSwgcGFnZVVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0zMDcsNyAr
MzI0LDE4IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2ViS2l0
RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKIAogICAgIC8vIFdlIGFzayBmb3IgdGhl
IGljb24gZGlyZWN0bHkuIElmIHdlIGRvbid0IGdldCB0aGUgaWNvbiBkYXRhIG5vdywKICAgICAv
LyB3ZSdsbCBiZSBub3RpZmllZCBsYXRlciAoZXZlbiBpZiB0aGUgZGF0YWJhc2UgaXMgc3RpbGwg
aW1wb3J0aW5nIGljb25zKS4KLSAgICBkYXRhLT5pY29uID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJv
bm91c2x5KGRhdGFiYXNlLCBkYXRhLT5wYWdlVVJMKTsKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgZGF0YS0+aWNvbiA9IGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseShkYXRhYmFz
ZSwgZGF0YS0+cGFnZVVSTCwgJmVycm9yLm91dFB0cigpKTsKKyAgICBpZiAoZGF0YS0+aWNvbikg
eworICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGVfaW5faWRsZShyZXN1bHQu
Z2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdfZXJyb3JfbWF0Y2hl
cyhlcnJvci5nZXQoKSwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJ
Q09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fTk9UX0ZPVU5EKSkgeworICAgICAgICBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yLnJlbGVhc2UoKSk7
CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZV9pbl9pZGxlKHJlc3VsdC5n
ZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vdCBh
IHZhbGlkIGljb24sIGJ1dCB0aGVyZSdzIGFuIGljb25VUkwgcmVnaXN0ZXJlZCwKICAgICAvLyBv
ciBpdCdzIHN0aWxsIG5vdCByZWdpc3RlcmVkIGJ1dCB0aGUgaW1wb3J0IHByb2Nlc3MgaGFzbid0
CkBAIC0zMTUsMjEgKzM0MywxNCBAQCB2b2lkIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9m
YXZpY29uKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0CiAgICAgLy8gY2Fs
bGVkIGJlZm9yZSBtYWtpbmcgYW5kIGluZm9ybWVkIGRlY2lzaW9uLgogICAgIFN0cmluZyBpY29u
VVJMRm9yUGFnZVVSTDsKICAgICBpY29uRGF0YWJhc2VJbXBsLT5zeW5jaHJvbm91c0ljb25VUkxG
b3JQYWdlVVJMKGRhdGEtPnBhZ2VVUkwsIGljb25VUkxGb3JQYWdlVVJMKTsKLSAgICBpZiAoIWRh
dGEtPmljb24gJiYgKCFpY29uVVJMRm9yUGFnZVVSTC5pc0VtcHR5KCkgfHwgIWljb25EYXRhYmFz
ZUltcGwtPmlzVXJsSW1wb3J0Q29tcGxldGVkKCkpKSB7CisgICAgaWYgKCFpY29uVVJMRm9yUGFn
ZVVSTC5pc0VtcHR5KCkgfHwgIWljb25EYXRhYmFzZUltcGwtPmlzVXJsSW1wb3J0Q29tcGxldGVk
KCkpIHsKICAgICAgICAgUGVuZGluZ0ljb25SZXF1ZXN0VmVjdG9yKiBpY29ucyA9IGdldE9yQ3Jl
YXRlUGVuZGluZ0ljb25SZXF1ZXN0cyhkYXRhYmFzZSwgZGF0YS0+cGFnZVVSTCk7CiAgICAgICAg
IEFTU0VSVChpY29ucyk7CiAgICAgICAgIGljb25zLT5hcHBlbmQocmVzdWx0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIElmIHdlIHJlYWNoZWQgdGhpcyBwb2ludCB3aXRob3V0
IGEgdmFsaWQgaWNvbiwgd2hpY2ggbWVhbnMgdGhhdAotICAgIC8vIHRoZXJlJ3Mgbm8gaWNvblVS
TCByZWdpc3RlcmVkIGZvciB0aGlzIHBhZ2VVUkkgYW5kIHRoZQotICAgIC8vIHVybEltcG9ydCBw
cm9jZXNzIGhhcyBhbHJlYWR5IGZpbmlzaGVkLCBvciBkbyBoYXZlIGEgdmFsaWQgaWNvbgotICAg
IC8vIGJ1dCBpdCdzIGFuIGVtcHR5IGltYWdlLCB0aGF0IG1lYW5zIHRoZXJlJ3Mgbm8gZmF2aWNv
bi4KLSAgICBpZiAoIWRhdGEtPmljb24gfHwgIWNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
ZGF0YS0+aWNvbi5nZXQoKSkpCi0gICAgICAgIHNldEVycm9yRm9yQXN5bmNSZXN1bHQocmVzdWx0
LmdldCgpLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUl9GQVZJQ09OX05PVF9GT1VORCwg
ZGF0YS0+cGFnZVVSTCk7Ci0KLSAgICAvLyBDb21wbGV0ZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nl
c3M7CisgICAgc2V0RXJyb3JGb3JBc3luY1Jlc3VsdChyZXN1bHQuZ2V0KCksIFdFQktJVF9GQVZJ
Q09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fVU5LTk9XTiwgZGF0YS0+cGFnZVVSTCk7CiAgICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlX2luX2lkbGUocmVzdWx0LmdldCgpKTsKIH0K
IApAQCAtMzU0LDI4ICszNzUsMTIgQEAgY2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfZmF2aWNvbl9k
YXRhYmFzZV9nZXRfZmF2aWNvbl9maW5pc2goV2ViS2l0RmF2aWNvbkRhdGFiYXMKIAogICAgIEdl
dEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8R2V0RmF2aWNvblN1
cmZhY2VBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRl
cihzaW1wbGVSZXN1bHQpKTsKICAgICBBU1NFUlQoZGF0YSk7Ci0KLSAgICBpZiAoZGF0YS0+aWNv
bikKLSAgICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKGRhdGEtPmljb24uZ2V0
KCkpOwotCi0gICAgLy8gSWYgdGhlIGljb24gaXMgbm90IGF2YWlsYWJsZSBhdCB0aGlzIHN0YWdl
LCBpbnZlc3RpZ2F0ZSB3aHkKLSAgICAvLyBhbmQgY29tZSB1cCB3aXRoIGEgZGVzY3JpcHRpdmUs
IGFuZCBob3BlZnVsbHkgaGVscGZ1bCwgZXJyb3IuCi0gICAgU3RyaW5nIGljb25VUkxGb3JQYWdl
VVJMOwotICAgIGRhdGFiYXNlLT5wcml2LT5pY29uRGF0YWJhc2UtPnN5bmNocm9ub3VzSWNvblVS
TEZvclBhZ2VVUkwoZGF0YS0+cGFnZVVSTCwgaWNvblVSTEZvclBhZ2VVUkwpOwotCi0gICAgaWYg
KGljb25VUkxGb3JQYWdlVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBJZiB0aGVyZSdzIG5v
IGljb24gVVJMIGluIHRoZSBkYXRhYmFzZSBhdCB0aGlzIHBvaW50LCB3ZSBjYW4KLSAgICAgICAg
Ly8gY29uY2x1ZGUgdGhlcmUncyBubyBmYXZpY29uIGF0IGFsbCBmb3IgdGhlIHJlcXVlc3RlZCBw
YWdlIFVSTC4KLSAgICAgICAgZ19zZXRfZXJyb3IoZXJyb3IsIFdFQktJVF9GQVZJQ09OX0RBVEFC
QVNFX0VSUk9SLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUl9GQVZJQ09OX05PVF9GT1VO
RCwKLSAgICAgICAgICAgICAgICAgICAgXygiUGFnZSAlcyBkb2VzIG5vdCBoYXZlIGEgZmF2aWNv
biIpLCBkYXRhLT5wYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIElmIHRoZSBpY29uIFVSTCBpcyBrbm93biBpdCBvYnZpb3VzbHkgbWVhbnMgdGhhdCB0aGUg
aWNvbiBkYXRhCi0gICAgICAgIC8vIGhhc24ndCBiZWVuIHJldHJpZXZlZCB5ZXQsIHNvIHJlcG9y
dCB0aGF0IGl0J3MgJ3Vua25vd24nLgotICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgV0VCS0lU
X0ZBVklDT05fREFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZB
VklDT05fVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgXygiVW5rbm93biBmYXZpY29uIGZv
ciBwYWdlICVzIiksIGRhdGEtPnBhZ2VVUkwudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGRhdGEt
PmVycm9yKSB7CisgICAgICAgIGdfcHJvcGFnYXRlX2Vycm9yKGVycm9yLCBkYXRhLT5lcnJvci5y
ZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoZGF0YS0+aWNvbi5nZXQoKSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCA2NjBkNWFmLi45MjUwZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNTcsNiArNTcsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0ljb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dPd25QdHJH
dGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CkBAIC0xNDIsNiArMTQzLDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAg
UmVzb3VyY2VzTWFwIHN1YnJlc291cmNlc01hcDsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2ViSW5z
cGVjdG9yPiBpbnNwZWN0b3I7CisKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBmYXZpY29u
OwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAt
MjYzLDEzICsyNjYsMjYgQEAgc3RhdGljIHZvaWQgdXNlckFnZW50Q2hhbmdlZChXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWUKICAgICBnZXRQYWdlKHdl
YlZpZXcpLT5zZXRDdXN0b21Vc2VyQWdlbnQoU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdVcGRhdGVGYXZpY29uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNhaXJvX3N1cmZhY2Vf
dCogZmF2aWNvbikKK3sKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+ZmF2aWNvbi5nZXQoKSA9PSBm
YXZpY29uKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJWaWV3LT5wcml2LT5mYXZpY29uID0g
ZmF2aWNvbjsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViVmlldyksICJmYXZpY29u
Iik7Cit9CisKIHN0YXRpYyB2b2lkIGljb25SZWFkeUNhbGxiYWNrKFdlYktpdEZhdmljb25EYXRh
YmFzZSAqZGF0YWJhc2UsIGNvbnN0IGNoYXIgKnVyaSwgV2ViS2l0V2ViVmlldyAqd2ViVmlldykK
IHsKICAgICAvLyBDb25zaWRlciBvbmx5IHRoZSBpY29uIG1hdGNoaW5nIHRoZSBhY3RpdmUgVVJJ
IGZvciB0aGlzIHdlYnZpZXcuCiAgICAgaWYgKHdlYlZpZXctPnByaXYtPmFjdGl2ZVVSSSAhPSB1
cmkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJW
aWV3KSwgImZhdmljb24iKTsKKyAgICAvLyBVcGRhdGUgdGhlIGZhdmljb24gb25seSBpZiB3ZSBk
b24ndCBoYXZlIG9uZSBhbHJlYWR5LgorICAgIGlmICghd2ViVmlldy0+cHJpdi0+ZmF2aWNvbikg
eworICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBmYXZpY29uID0gYWRvcHRSZWYod2Vi
a2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbihkYXRhYmFzZSwgd2ViVmlldy0+cHJpdi0+YWN0
aXZlVVJJKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZpY29uKHdlYlZpZXcsIGZh
dmljb24uZ2V0KCkpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFNl
dHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykK
QEAgLTEyMzQsNiArMTI1MCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RW1pdERlbGF5
ZWRMb2FkRXZlbnRzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcHJpdi0+d2FpdGluZ0Zv
ck1haW5SZXNvdXJjZSA9IGZhbHNlOwogfQogCitzdGF0aWMgdm9pZCBmYXZpY29uUmVhZHlDYWxs
YmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2Vy
RGF0YSkKK3sKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBmYXZpY29uID0gYWRvcHRSZWYo
d2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fZmluaXNoKFdFQktJVF9GQVZJQ09O
X0RBVEFCQVNFKG9iamVjdCksIHJlc3VsdCwgMCkpOworICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVG
YXZpY29uKFdFQktJVF9XRUJfVklFVyh1c2VyRGF0YSksIGZhdmljb24uZ2V0KCkpOworfQorCiB2
b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRMb2FkRXZlbnQgbG9hZEV2ZW50KQogewogICAgIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xP
QURfU1RBUlRFRCkgewpAQCAtMTI0NCw2ICsxMjY2LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9h
ZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVu
dCkKICAgICAgICAgd2ViVmlldy0+cHJpdi0+bWFpblJlc291cmNlID0gMDsKICAgICAgICAgd2Vi
Vmlldy0+cHJpdi0+d2FpdGluZ0Zvck1haW5SZXNvdXJjZSA9IGZhbHNlOwogICAgIH0gZWxzZSBp
ZiAobG9hZEV2ZW50ID09IFdFQktJVF9MT0FEX0NPTU1JVFRFRCkgeworICAgICAgICB3ZWJraXRf
ZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbih3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmlj
b25fZGF0YWJhc2Uod2ViVmlldy0+cHJpdi0+Y29udGV4dCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXctPnByaXYtPmFjdGl2ZVVSSS5kYXRhKCks
IDAsIGZhdmljb25SZWFkeUNhbGxiYWNrLCB3ZWJWaWV3KTsKICAgICAgICAgd2ViVmlldy0+cHJp
di0+c3VicmVzb3VyY2VzTWFwLmNsZWFyKCk7CiAgICAgICAgIGlmICghd2ViVmlldy0+cHJpdi0+
bWFpblJlc291cmNlKSB7CiAgICAgICAgICAgICAvLyBXaGVuIGEgcGFnZSBpcyBsb2FkZWQgZnJv
bSB0aGUgaGlzdG9yeSBjYWNoZSwgdGhlIG1haW4gcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MKQEAg
LTE5MDksNyArMTkzMyw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICogY29ubmVjdCB0byBub3RpZnk6OmZhdmljb24gc2ln
bmFsIG9mIEB3ZWJfdmlldyB0byBiZSBub3RpZmllZCB3aGVuCiAgKiB0aGUgZmF2aWNvbiBpcyBh
dmFpbGFibGUuCiAgKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIHBvaW50ZXIgdG8g
YSAjY2Fpcm9fc3VyZmFjZV90IHdpdGggdGhlCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IGEgcG9pbnRlciB0byBhICNjYWlyb19zdXJmYWNlX3Qgd2l0aCB0aGUKICAqICAgIGZhdmljb24g
b3IgJU5VTEwgaWYgdGhlcmUncyBubyBpY29uIGFzc29jaWF0ZWQgd2l0aCBAd2ViX3ZpZXcuCiAg
Ki8KIGNhaXJvX3N1cmZhY2VfdCogd2Via2l0X3dlYl92aWV3X2dldF9mYXZpY29uKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCkBAIC0xOTE4LDggKzE5NDIsNyBAQCBjYWlyb19zdXJmYWNlX3QqIHdl
YmtpdF93ZWJfdmlld19nZXRfZmF2aWNvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGlm
ICh3ZWJWaWV3LT5wcml2LT5hY3RpdmVVUkkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKLSAgICByZXR1
cm4gd2Via2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbihkYXRhYmFzZSwgd2ViVmlldy0+cHJp
di0+YWN0aXZlVVJJKTsKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+ZmF2aWNvbi5nZXQoKTsK
IH0KIAogLyoqCg==
</data>
<flag name="commit-queue"
          id="179104"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166719</attachid>
            <date>2012-10-02 11:29:19 -0700</date>
            <delta_ts>2012-10-03 04:44:41 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-favicon-fixes2.diff</filename>
            <type>text/plain</type>
            <size>18710</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjYjczNzhhLi4yMGI0M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMTAtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFdlYktpdFdlYlZpZXcgZG9lc24ndCBlbWl0IG5vdGlmeTpmYXZp
Y29uIHdoZW4gaXQgY2hhbmdlcyBpbiBzb21lIGNhc2VzIGluIFdlYktpdDIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1haW4gcHJvYmxlbSBpcyB0
aGF0IGl0IHJlbGllcyBvbiBpY29uLXJlYWR5IHNpZ25hbCB0byBiZQorICAgICAgICBlbWl0dGVk
IGJ5IHRoZSBmYXZpY29uIGRhdGFiYXNlLCBidXQgdGhhdCBzaWduYWwgaXMgb25seSBlbWl0dGVk
CisgICAgICAgIHdoZW4gdGhlIGljb24gaXMgbG9hZGVkIGZyb20gdGhlIG5ldHdvcmsgb3IgaW1w
b3J0ZWQgZnJvbSB0aGUKKyAgICAgICAgZGF0YWJhc2UsIGJ1dCBub3Qgd2hlbiB0aGUgaWNvbiBp
cyBhbHJlYWR5IGluIG1lbW9yeS4gVGhlIHdheSB0bworICAgICAgICBkZXRlY3QgaWYgYSB3ZWIg
cGFnZSBkb2Vzbid0IGhhdmUgYSBmYXZpY29uIG9yIGl0J3MgdW5rbm93biBpdCdzCisgICAgICAg
IGFsc28gaW5jb3JyZWN0bHkgZG9uZSBhbmQgdGhlIHdyb25nIGVycm9yIGlzIHJldHVybmVkIGZv
ciBwYWdlcworICAgICAgICBub3QgaGF2aW5nIGEgZmF2aWNvbi4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChHZXRGYXZp
Y29uU3VyZmFjZUFzeW5jRGF0YSk6IEFkZCBhIEdFcnJvciBmaWVsZC4KKyAgICAgICAgKGdldElj
b25TdXJmYWNlU3luY2hyb25vdXNseSk6IEFkZCBhIEdFcnJvciBwYXJhbWV0ZXIgYW5kIGZpbGwg
aXQKKyAgICAgICAgYWNjb3JkaW5nbHkuIFVzZSBpbWFnZUZvclBhZ2VVUkwoKSBpbnN0ZWFkIG9m
CisgICAgICAgIG5hdGl2ZUltYWdlRm9yUGFnZVVSTCgpIGJlY2F1c2UgdGhlIGxhdHRlciBhbHdh
eXMgcmV0dXJucyBOVUxMIGZvcgorICAgICAgICBlbXB0eSBpbWFnZXMsIHNvIGl0J3Mgbm90IHBv
c3NpYmxlIHRvIGtub3cgd2hldGhlciBpdCdzIGFuIGVtcHR5CisgICAgICAgIGltYWdlIG9yIG5v
dC4gSWYgdGhlIGltYWdlIGlzIGVtcHR5IGlzIGJlY2F1c2UgdGhlIHdlYiBwYWdlIGlzCisgICAg
ICAgIGtub3duIGJ5IHRoZSBkYXRhYmFzZSBhbmQgaXQgZG9lc24ndCBoYXZlIGEgZmF2aWNvbi4K
KyAgICAgICAgKHByb2Nlc3NQZW5kaW5nSWNvbnNGb3JVUkkpOiBQYXNzIHRoZSBkYXRhIGVycm9y
IHRvCisgICAgICAgIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSgpLiBEb24ndCBzZXQgdGhl
IGljb24gaWYgdGhlIHJlcXVlc3QKKyAgICAgICAgaGFzIGJlZW4gY2FuY2VsbGVkLgorICAgICAg
ICAod2Via2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbik6IFBhc3MgTlVMTCBhcyBlcnJvciB0
bworICAgICAgICBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoKS4KKyAgICAgICAgKHNldEVy
cm9yRm9yQXN5bmNSZXN1bHQpOiBGaWxsIGFsc28gZXJyb3IgZm9yCisgICAgICAgIFdFQktJVF9G
QVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fVU5LTk9XTi4KKyAgICAgICAgKHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uKTogSWYgd2UgZ2V0IE5VTEwgYXMgaWNvbiBpbgor
ICAgICAgICB0aGUgZmlyc3QgcGxhY2UsIGNoZWNrIHRoZSBlcnJvciBjb2RlIHJldHVybmVkIGJ5
CisgICAgICAgIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSgpIGFuZCByZXR1cm4gZWFybHkg
aWYgdGhlIHBhZ2UgZG9lc24ndAorICAgICAgICBoYXZlIGEgZmF2aWNvbi4gUmVtb3ZlIHRoZSBj
YW5jZWxsZWQgc2lnbmFsIHRvIGF2b2lkIHJhY2UKKyAgICAgICAgY29uZGl0aW9ucy4KKyAgICAg
ICAgKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaCk6IEVycm9ycyBh
cmUgcHJvY2Vzc2VkCisgICAgICAgIGJlZm9yZSBub3csIHNvIHNpbXBseSBwcm9wYWdhdGUgdGhl
IGVycm9yIGlmIGFueSBvciByZXR1cm4gdGhlCisgICAgICAgIGZhdmljb24uCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2Vi
Vmlld1ByaXZhdGUpOiBLZWVwIGEgcmVmZXJlbmNlIG9mIHRoZSBmYXZpY29uLgorICAgICAgICAo
d2Via2l0V2ViVmlld0NhbmNlbEZhdmljb24pOiBDYW5jZWwgYW55IGFzeW5jIG9wZXJhdGlvbiB0
byBnZXQKKyAgICAgICAgdGhlIGZhdmljb24uCisgICAgICAgICh3ZWJraXRXZWJWaWV3VXBkYXRl
RmF2aWNvbik6IENoZWNrIGlmIGZhdmljb24gaGFzIGNoYW5nZWQgYW5kCisgICAgICAgIHNhdmUg
aXQgZW1pdHRpbmcgYWxzbyBub3RpZnk6OmZhdmljb24gc2lnbmFsLgorICAgICAgICAoaWNvblJl
YWR5Q2FsbGJhY2spOiBPbmx5IHVwZGF0ZSB0aGUgZmF2aWNvbiBpZiB3ZSBkb24ndCBoYXZlIG9u
ZQorICAgICAgICBhbHJlYWR5LgorICAgICAgICAod2Via2l0V2ViVmlld0ZpbmFsaXplKTogQ2Fs
bCB3ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvbigpLgorICAgICAgICAoZ2V0RmF2aWNvblJlYWR5
Q2FsbGJhY2spOiBVcGRhdGUgdGhlIGZhdmljb24uCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9h
ZENoYW5nZWQpOiBUcnkgdG8gZ2V0IHRoZSBmYXZpY29uIHdoZW4gdGhlIGxvYWQKKyAgICAgICAg
aGFzIGJlZW4gY29tbWl0dGVkIGFuZCB0aGUgVVJJIGlzIHRoZSBmaW5hbCBvbmUuCisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24pOiBSZXR1cm4gdGhlIGNhY2hlZCBmYXZpY29u
LgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0
IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA5MGNjOTM0Li5hNjE1MWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0
ckNhaXJvLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBA
IC0xMDksMjggKzExMCwzMyBAQCBzdHJ1Y3QgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEgewog
ICAgIEdSZWZQdHI8V2ViS2l0RmF2aWNvbkRhdGFiYXNlPiBmYXZpY29uRGF0YWJhc2U7CiAgICAg
U3RyaW5nIHBhZ2VVUkw7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaWNvbjsKKyAgICBH
T3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxh
YmxlOwotICAgIHVuc2lnbmVkIGxvbmcgY2FuY2VsbGVkSWQ7Ci0KLSAgICB+R2V0RmF2aWNvblN1
cmZhY2VBc3luY0RhdGEoKQotICAgIHsKLSAgICAgICAgaWYgKGNhbmNlbGxlZElkKQotICAgICAg
ICAgICAgZ19jYW5jZWxsYWJsZV9kaXNjb25uZWN0KGNhbmNlbGxhYmxlLmdldCgpLCBjYW5jZWxs
ZWRJZCk7Ci0gICAgfQogfTsKIFdFQktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0RmF2
aWNvblN1cmZhY2VBc3luY0RhdGEpCiAKLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGdldEljb25T
dXJmYWNlU3luY2hyb25vdXNseShXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25z
dCBTdHJpbmcmIHBhZ2VVUkwpCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZXRJY29uU3VyZmFj
ZVN5bmNocm9ub3VzbHkoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMLCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgLy8gVGhlIGV4YWN0IHNpemUgd2UgcGFzcyBpcyBpcnJlbGV2YW50IHRvIHRo
ZSBpY29uRGF0YWJhc2UgY29kZS4KICAgICAvLyBXZSBtdXN0IHBhc3Mgc29tZXRoaW5nIGdyZWF0
ZXIgdGhhbiAweDAgdG8gZ2V0IGFuIGljb24uCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIg
aWNvbiA9IGRhdGFiYXNlLT5wcml2LT5pY29uRGF0YWJhc2UtPm5hdGl2ZUltYWdlRm9yUGFnZVVS
TChwYWdlVVJMLCBXZWJDb3JlOjpJbnRTaXplKDEsIDEpKTsKLSAgICBpZiAoIWljb24pCisgICAg
V2ViQ29yZTo6SW1hZ2UqIGljb25JbWFnZSA9IGRhdGFiYXNlLT5wcml2LT5pY29uRGF0YWJhc2Ut
PmltYWdlRm9yUGFnZVVSTChwYWdlVVJMLCBXZWJDb3JlOjpJbnRTaXplKDEsIDEpKTsKKyAgICBp
ZiAoIWljb25JbWFnZSkgeworICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgV0VCS0lUX0ZBVklD
T05fREFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05f
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgXygiVW5rbm93biBmYXZpY29uIGZvciBwYWdl
ICVzIiksIHBhZ2VVUkwudXRmOCgpLmRhdGEoKSk7CisKICAgICAgICAgcmV0dXJuIDA7CisgICAg
fQogCi0gICAgcmV0dXJuIGljb24gPyBpY29uLT5zdXJmYWNlKCkgOiAwOworICAgIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyIGljb24gPSBpY29uSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgaWYgKCFpY29uKSB7CisgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBXRUJL
SVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1Jf
RkFWSUNPTl9OT1RfRk9VTkQsCisgICAgICAgICAgICAgICAgICAgIF8oIlBhZ2UgJXMgZG9lcyBu
b3QgaGF2ZSBhIGZhdmljb24iKSwgcGFnZVVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGljb24tPnN1cmZhY2UoKTsKIH0KIAogc3RhdGlj
IHZvaWQgZGVsZXRlUGVuZGluZ0ljb25SZXF1ZXN0cyhXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRh
dGFiYXNlLCBQZW5kaW5nSWNvblJlcXVlc3RWZWN0b3IqIHJlcXVlc3RzLCBjb25zdCBTdHJpbmcm
IHBhZ2VVUkwpCkBAIC0xNDgsNyArMTU0LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1BlbmRpbmdJ
Y29uc0ZvclVSSShXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHIKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGljb25zLT5zaXplKCk7ICsraSkgewogICAgICAgICBH
U2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGljb25zLT5hdChpKS5nZXQoKTsKICAgICAgICAg
R2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRGYXZpY29u
U3VyZmFjZUFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2lu
dGVyKHJlc3VsdCkpOwotICAgICAgICBkYXRhLT5pY29uID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJv
bm91c2x5KGRhdGFiYXNlLCBwYWdlVVJMKTsKKyAgICAgICAgaWYgKCFnX2NhbmNlbGxhYmxlX2lz
X2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSkpCisgICAgICAgICAgICBkYXRhLT5p
Y29uID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KGRhdGFiYXNlLCBwYWdlVVJMLCAmZGF0
YS0+ZXJyb3Iub3V0UHRyKCkpOwogCiAgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21w
bGV0ZShyZXN1bHQpOwogICAgIH0KQEAgLTE4OCw3ICsxOTUsNyBAQCBjYWlyb19zdXJmYWNlX3Qq
IHdlYmtpdEZhdmljb25EYXRhYmFzZUdldEZhdmljb24oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBk
YXRhYmFzZQogICAgIEFTU0VSVChXRUJLSVRfSVNfRkFWSUNPTl9EQVRBQkFTRShkYXRhYmFzZSkp
OwogICAgIEFTU0VSVCghcGFnZVVSTC5pc051bGwoKSk7CiAKLSAgICBjYWlyb19zdXJmYWNlX3Qq
IGljb25TdXJmYWNlID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KGRhdGFiYXNlLCBTdHJp
bmc6OmZyb21VVEY4KHBhZ2VVUkwuZGF0YSgpKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpY29u
U3VyZmFjZSA9IGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseShkYXRhYmFzZSwgU3RyaW5nOjpm
cm9tVVRGOChwYWdlVVJMLmRhdGEoKSksIDApOwogICAgIGlmICghaWNvblN1cmZhY2UpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0yMDYsMzQgKzIxMyw2IEBAIHN0YXRpYyBQZW5kaW5nSWNvblJl
cXVlc3RWZWN0b3IqIGdldE9yQ3JlYXRlUGVuZGluZ0ljb25SZXF1ZXN0cyhXZWJLaXRGYXZpY29u
RGF0CiAgICAgcmV0dXJuIGljb25zOwogfQogCi1zdGF0aWMgdm9pZCBnZXRJY29uU3VyZmFjZUNh
bmNlbGxlZCh2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3Vs
dCA9IHN0YXRpY19jYXN0PEdTaW1wbGVBc3luY1Jlc3VsdCo+KHVzZXJEYXRhKTsKLQotICAgIC8v
IEdldCB0aGUgZGF0YSB3ZSBtaWdodCBuZWVkIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KLSAg
ICBHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldEZhdmlj
b25TdXJmYWNlQXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3Bv
aW50ZXIocmVzdWx0KSk7Ci0gICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IGRh
dGEtPmZhdmljb25EYXRhYmFzZS5nZXQoKTsKLSAgICBTdHJpbmcgcGFnZVVSTCA9IGRhdGEtPnBh
Z2VVUkw7Ci0KLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0KTsKLQot
ICAgIFBlbmRpbmdJY29uUmVxdWVzdFZlY3RvciogaWNvbnMgPSBkYXRhYmFzZS0+cHJpdi0+cGVu
ZGluZ0ljb25SZXF1ZXN0cy5nZXQocGFnZVVSTCk7Ci0gICAgaWYgKCFpY29ucykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc2l6ZV90IGl0ZW1JbmRleCA9IGljb25zLT5maW5kKHJlc3VsdCk7Ci0g
ICAgaWYgKGl0ZW1JbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgaWNvbnMtPnJlbW92ZShpdGVt
SW5kZXgpOwotICAgIGlmIChpY29ucy0+aXNFbXB0eSgpKQotICAgICAgICBkZWxldGVQZW5kaW5n
SWNvblJlcXVlc3RzKGRhdGFiYXNlLCBpY29ucywgcGFnZVVSTCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGdldEljb25TdXJmYWNlQ2FuY2VsbGVkQ2FsbGJhY2soR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJs
ZSwgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQpCi17Ci0gICAgLy8gSGFuZGxlIGNhbmNlbGxl
ZCBpbiBhIGluIGlkbGUgc2luY2UgaXQgbWlnaHQgYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4K
LSAgICBjYWxsT25NYWluVGhyZWFkKGdldEljb25TdXJmYWNlQ2FuY2VsbGVkLCByZXN1bHQpOwot
fQotCiBzdGF0aWMgdm9pZCBzZXRFcnJvckZvckFzeW5jUmVzdWx0KEdTaW1wbGVBc3luY1Jlc3Vs
dCogcmVzdWx0LCBXZWJLaXRGYXZpY29uRGF0YWJhc2VFcnJvciBlcnJvciwgY29uc3QgU3RyaW5n
JiBwYWdlVVJMID0gU3RyaW5nKCkpCiB7CiAgICAgQVNTRVJUKHJlc3VsdCk7CkBAIC0yNDcsNiAr
MjI2LDEwIEBAIHN0YXRpYyB2b2lkIHNldEVycm9yRm9yQXN5bmNSZXN1bHQoR1NpbXBsZUFzeW5j
UmVzdWx0KiByZXN1bHQsIFdlYktpdEZhdmljb25EYXRhCiAgICAgICAgIGdfc2ltcGxlX2FzeW5j
X3Jlc3VsdF9zZXRfZXJyb3IocmVzdWx0LCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwg
ZXJyb3IsIF8oIlBhZ2UgJXMgZG9lcyBub3QgaGF2ZSBhIGZhdmljb24iKSwgcGFnZVVSTC51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFdFQktJVF9GQVZJQ09OX0RB
VEFCQVNFX0VSUk9SX0ZBVklDT05fVU5LTk9XTjoKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVz
dWx0X3NldF9lcnJvcihyZXN1bHQsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SLCBlcnJv
ciwgXygiVW5rbm93biBmYXZpY29uIGZvciBwYWdlICVzIiksIHBhZ2VVUkwudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQpAQCAtMjgwLDE2ICsyNjMsMTMgQEAgdm9pZCB3ZWJraXRfZmF2aWNv
bl9kYXRhYmFzZV9nZXRfZmF2aWNvbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBj
b25zdAogICAgIGdfcmV0dXJuX2lmX2ZhaWwocGFnZVVSSSk7CiAKICAgICBHUmVmUHRyPEdTaW1w
bGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9u
ZXcoR19PQkpFQ1QoZGF0YWJhc2UpLCBjYWxsYmFjaywgdXNlckRhdGEsIHJlaW50ZXJwcmV0X2Nh
c3Q8Z3BvaW50ZXI+KHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uKSkpOworICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfY2hlY2tfY2FuY2VsbGFibGUocmVzdWx0LmdldCgp
LCBjYW5jZWxsYWJsZSk7CisKICAgICBHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSogZGF0YSA9
IGNyZWF0ZUdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKCk7CiAgICAgZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBkYXRhLCByZWludGVycHJl
dF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEp
KTsKICAgICBkYXRhLT5mYXZpY29uRGF0YWJhc2UgPSBkYXRhYmFzZTsKICAgICBkYXRhLT5wYWdl
VVJMID0gU3RyaW5nOjpmcm9tVVRGOChwYWdlVVJJKTsKICAgICBkYXRhLT5jYW5jZWxsYWJsZSA9
IGNhbmNlbGxhYmxlOwotICAgIGlmIChjYW5jZWxsYWJsZSkgewotICAgICAgICBkYXRhLT5jYW5j
ZWxsZWRJZCA9Ci0gICAgICAgICAgICBnX2NhbmNlbGxhYmxlX2Nvbm5lY3QoY2FuY2VsbGFibGUs
IEdfQ0FMTEJBQ0soZ2V0SWNvblN1cmZhY2VDYW5jZWxsZWRDYWxsYmFjayksIHJlc3VsdC5nZXQo
KSwgMCk7Ci0gICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfY2hlY2tfY2FuY2VsbGFi
bGUocmVzdWx0LmdldCgpLCBjYW5jZWxsYWJsZSk7Ci0gICAgfQogCiAgICAgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IGRhdGFiYXNlLT5wcml2OwogICAgIFdlYkljb25EYXRh
YmFzZSogaWNvbkRhdGFiYXNlSW1wbCA9IHByaXYtPmljb25EYXRhYmFzZS5nZXQoKTsKQEAgLTMw
Nyw3ICsyODcsMTggQEAgdm9pZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihX
ZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdAogCiAgICAgLy8gV2UgYXNrIGZv
ciB0aGUgaWNvbiBkaXJlY3RseS4gSWYgd2UgZG9uJ3QgZ2V0IHRoZSBpY29uIGRhdGEgbm93LAog
ICAgIC8vIHdlJ2xsIGJlIG5vdGlmaWVkIGxhdGVyIChldmVuIGlmIHRoZSBkYXRhYmFzZSBpcyBz
dGlsbCBpbXBvcnRpbmcgaWNvbnMpLgotICAgIGRhdGEtPmljb24gPSBnZXRJY29uU3VyZmFjZVN5
bmNocm9ub3VzbHkoZGF0YWJhc2UsIGRhdGEtPnBhZ2VVUkwpOworICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICBkYXRhLT5pY29uID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KGRh
dGFiYXNlLCBkYXRhLT5wYWdlVVJMLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGlmIChkYXRhLT5p
Y29uKSB7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZV9pbl9pZGxlKHJl
c3VsdC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ19lcnJvcl9t
YXRjaGVzKGVycm9yLmdldCgpLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lU
X0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1RfRk9VTkQpKSB7CisgICAgICAgIGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IucmVsZWFz
ZSgpKTsKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlX2luX2lkbGUocmVz
dWx0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZXJlJ3Mg
bm90IGEgdmFsaWQgaWNvbiwgYnV0IHRoZXJlJ3MgYW4gaWNvblVSTCByZWdpc3RlcmVkLAogICAg
IC8vIG9yIGl0J3Mgc3RpbGwgbm90IHJlZ2lzdGVyZWQgYnV0IHRoZSBpbXBvcnQgcHJvY2VzcyBo
YXNuJ3QKQEAgLTMxNSwyMSArMzA2LDE0IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2Vf
Z2V0X2Zhdmljb24oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKICAgICAv
LyBjYWxsZWQgYmVmb3JlIG1ha2luZyBhbmQgaW5mb3JtZWQgZGVjaXNpb24uCiAgICAgU3RyaW5n
IGljb25VUkxGb3JQYWdlVVJMOwogICAgIGljb25EYXRhYmFzZUltcGwtPnN5bmNocm9ub3VzSWNv
blVSTEZvclBhZ2VVUkwoZGF0YS0+cGFnZVVSTCwgaWNvblVSTEZvclBhZ2VVUkwpOwotICAgIGlm
ICghZGF0YS0+aWNvbiAmJiAoIWljb25VUkxGb3JQYWdlVVJMLmlzRW1wdHkoKSB8fCAhaWNvbkRh
dGFiYXNlSW1wbC0+aXNVcmxJbXBvcnRDb21wbGV0ZWQoKSkpIHsKKyAgICBpZiAoIWljb25VUkxG
b3JQYWdlVVJMLmlzRW1wdHkoKSB8fCAhaWNvbkRhdGFiYXNlSW1wbC0+aXNVcmxJbXBvcnRDb21w
bGV0ZWQoKSkgewogICAgICAgICBQZW5kaW5nSWNvblJlcXVlc3RWZWN0b3IqIGljb25zID0gZ2V0
T3JDcmVhdGVQZW5kaW5nSWNvblJlcXVlc3RzKGRhdGFiYXNlLCBkYXRhLT5wYWdlVVJMKTsKICAg
ICAgICAgQVNTRVJUKGljb25zKTsKICAgICAgICAgaWNvbnMtPmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIHBvaW50IHdp
dGhvdXQgYSB2YWxpZCBpY29uLCB3aGljaCBtZWFucyB0aGF0Ci0gICAgLy8gdGhlcmUncyBubyBp
Y29uVVJMIHJlZ2lzdGVyZWQgZm9yIHRoaXMgcGFnZVVSSSBhbmQgdGhlCi0gICAgLy8gdXJsSW1w
b3J0IHByb2Nlc3MgaGFzIGFscmVhZHkgZmluaXNoZWQsIG9yIGRvIGhhdmUgYSB2YWxpZCBpY29u
Ci0gICAgLy8gYnV0IGl0J3MgYW4gZW1wdHkgaW1hZ2UsIHRoYXQgbWVhbnMgdGhlcmUncyBubyBm
YXZpY29uLgotICAgIGlmICghZGF0YS0+aWNvbiB8fCAhY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShkYXRhLT5pY29uLmdldCgpKSkKLSAgICAgICAgc2V0RXJyb3JGb3JBc3luY1Jlc3VsdChy
ZXN1bHQuZ2V0KCksIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fTk9UX0ZP
VU5ELCBkYXRhLT5wYWdlVVJMKTsKLQotICAgIC8vIENvbXBsZXRlIHRoZSBhc3luY2hyb25vdXMg
cHJvY2VzczsKKyAgICBzZXRFcnJvckZvckFzeW5jUmVzdWx0KHJlc3VsdC5nZXQoKSwgV0VCS0lU
X0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9VTktOT1dOLCBkYXRhLT5wYWdlVVJMKTsK
ICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGVfaW5faWRsZShyZXN1bHQuZ2V0KCkp
OwogfQogCkBAIC0zNTQsMjggKzMzOCwxMiBAQCBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF9mYXZp
Y29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaChXZWJLaXRGYXZpY29uRGF0YWJhcwogCiAg
ICAgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRGYXZp
Y29uU3VyZmFjZUFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dw
b2ludGVyKHNpbXBsZVJlc3VsdCkpOwogICAgIEFTU0VSVChkYXRhKTsKLQotICAgIGlmIChkYXRh
LT5pY29uKQotICAgICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoZGF0YS0+aWNv
bi5nZXQoKSk7Ci0KLSAgICAvLyBJZiB0aGUgaWNvbiBpcyBub3QgYXZhaWxhYmxlIGF0IHRoaXMg
c3RhZ2UsIGludmVzdGlnYXRlIHdoeQotICAgIC8vIGFuZCBjb21lIHVwIHdpdGggYSBkZXNjcmlw
dGl2ZSwgYW5kIGhvcGVmdWxseSBoZWxwZnVsLCBlcnJvci4KLSAgICBTdHJpbmcgaWNvblVSTEZv
clBhZ2VVUkw7Ci0gICAgZGF0YWJhc2UtPnByaXYtPmljb25EYXRhYmFzZS0+c3luY2hyb25vdXNJ
Y29uVVJMRm9yUGFnZVVSTChkYXRhLT5wYWdlVVJMLCBpY29uVVJMRm9yUGFnZVVSTCk7Ci0KLSAg
ICBpZiAoaWNvblVSTEZvclBhZ2VVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIElmIHRoZXJl
J3Mgbm8gaWNvbiBVUkwgaW4gdGhlIGRhdGFiYXNlIGF0IHRoaXMgcG9pbnQsIHdlIGNhbgotICAg
ICAgICAvLyBjb25jbHVkZSB0aGVyZSdzIG5vIGZhdmljb24gYXQgYWxsIGZvciB0aGUgcmVxdWVz
dGVkIHBhZ2UgVVJMLgotICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgV0VCS0lUX0ZBVklDT05f
REFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fTk9U
X0ZPVU5ELAotICAgICAgICAgICAgICAgICAgICBfKCJQYWdlICVzIGRvZXMgbm90IGhhdmUgYSBm
YXZpY29uIiksIGRhdGEtPnBhZ2VVUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgLy8gSWYgdGhlIGljb24gVVJMIGlzIGtub3duIGl0IG9idmlvdXNseSBtZWFucyB0aGF0
IHRoZSBpY29uIGRhdGEKLSAgICAgICAgLy8gaGFzbid0IGJlZW4gcmV0cmlldmVkIHlldCwgc28g
cmVwb3J0IHRoYXQgaXQncyAndW5rbm93bicuCi0gICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBX
RUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJS
T1JfRkFWSUNPTl9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICBfKCJVbmtub3duIGZhdmlj
b24gZm9yIHBhZ2UgJXMiKSwgZGF0YS0+cGFnZVVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAo
ZGF0YS0+ZXJyb3IpIHsKKyAgICAgICAgZ19wcm9wYWdhdGVfZXJyb3IoZXJyb3IsIGRhdGEtPmVy
cm9yLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShkYXRhLT5pY29uLmdldCgpKTsK
IH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwCmluZGV4IDY2MGQ1YWYuLjVlYTg3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC01Nyw2ICs1Nyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSWNvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR093
blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KQEAgLTE0Miw2ICsxNDMsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsK
ICAgICBSZXNvdXJjZXNNYXAgc3VicmVzb3VyY2VzTWFwOwogCiAgICAgR1JlZlB0cjxXZWJLaXRX
ZWJJbnNwZWN0b3I+IGluc3BlY3RvcjsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZh
dmljb247CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGZhdmljb25DYW5jZWxsYWJsZTsKIH07
CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTI2Mywx
MyArMjY3LDM1IEBAIHN0YXRpYyB2b2lkIHVzZXJBZ2VudENoYW5nZWQoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmllCiAgICAgZ2V0UGFnZSh3ZWJWaWV3
KS0+c2V0Q3VzdG9tVXNlckFnZW50KFN0cmluZzo6ZnJvbVVURjgod2Via2l0X3NldHRpbmdzX2dl
dF91c2VyX2FnZW50KHNldHRpbmdzKSkpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
Q2FuY2VsRmF2aWNvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGlmICghd2ViVmll
dy0+cHJpdi0+ZmF2aWNvbkNhbmNlbGxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBnX2Nh
bmNlbGxhYmxlX2NhbmNlbCh3ZWJWaWV3LT5wcml2LT5mYXZpY29uQ2FuY2VsbGFibGUuZ2V0KCkp
OworICAgIHdlYlZpZXctPnByaXYtPmZhdmljb25DYW5jZWxsYWJsZSA9IDA7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZpY29uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNhaXJvX3N1cmZhY2VfdCogZmF2aWNvbikKK3sKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+ZmF2
aWNvbi5nZXQoKSA9PSBmYXZpY29uKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJWaWV3LT5w
cml2LT5mYXZpY29uID0gZmF2aWNvbjsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2Vi
VmlldyksICJmYXZpY29uIik7Cit9CisKIHN0YXRpYyB2b2lkIGljb25SZWFkeUNhbGxiYWNrKFdl
YktpdEZhdmljb25EYXRhYmFzZSAqZGF0YWJhc2UsIGNvbnN0IGNoYXIgKnVyaSwgV2ViS2l0V2Vi
VmlldyAqd2ViVmlldykKIHsKICAgICAvLyBDb25zaWRlciBvbmx5IHRoZSBpY29uIG1hdGNoaW5n
IHRoZSBhY3RpdmUgVVJJIGZvciB0aGlzIHdlYnZpZXcuCiAgICAgaWYgKHdlYlZpZXctPnByaXYt
PmFjdGl2ZVVSSSAhPSB1cmkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdfb2JqZWN0X25vdGlm
eShHX09CSkVDVCh3ZWJWaWV3KSwgImZhdmljb24iKTsKKyAgICAvLyBVcGRhdGUgdGhlIGZhdmlj
b24gb25seSBpZiB3ZSBkb24ndCBoYXZlIG9uZSBhbHJlYWR5LgorICAgIGlmICghd2ViVmlldy0+
cHJpdi0+ZmF2aWNvbikgeworICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBmYXZpY29u
ID0gYWRvcHRSZWYod2Via2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbihkYXRhYmFzZSwgd2Vi
Vmlldy0+cHJpdi0+YWN0aXZlVVJJKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZp
Y29uKHdlYlZpZXcsIGZhdmljb24uZ2V0KCkpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld1NldFNldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncykKQEAgLTQ0OSw2ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3RmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIGlmIChwcml2LT5tb2RhbExvb3AgJiYg
Z19tYWluX2xvb3BfaXNfcnVubmluZyhwcml2LT5tb2RhbExvb3AuZ2V0KCkpKQogICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CiAKKyAgICB3ZWJraXRXZWJW
aWV3Q2FuY2VsRmF2aWNvbih3ZWJWaWV3KTsKICAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdE1h
aW5SZXNvdXJjZVJlc3BvbnNlQ2hhbmdlZFNpZ25hbEhhbmRsZXIod2ViVmlldyk7CiAgICAgd2Vi
a2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJzKHdlYlZpZXcpOwogICAg
IHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0RmF2aWNvbkRhdGFiYXNlU2lnbmFsSGFuZGxlcnMod2Vi
Vmlldyk7CkBAIC0xMjM0LDE2ICsxMjYxLDMyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdF
bWl0RGVsYXllZExvYWRFdmVudHMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBwcml2LT53
YWl0aW5nRm9yTWFpblJlc291cmNlID0gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lkIGdldEZhdmlj
b25SZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdw
b2ludGVyIHVzZXJEYXRhKQoreworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBmYXZpY29uID0gYWRvcHRSZWYod2Via2l0X2Zhdmljb25fZGF0
YWJhc2VfZ2V0X2Zhdmljb25fZmluaXNoKFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFKG9iamVjdCks
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJy
b3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkgeworICAgICAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHVzZXJEYXRhKTsKKyAgICAg
ICAgd2Via2l0V2ViVmlld1VwZGF0ZUZhdmljb24od2ViVmlldywgZmF2aWNvbi5nZXQoKSk7Cisg
ICAgICAgIHdlYlZpZXctPnByaXYtPmZhdmljb25DYW5jZWxsYWJsZSA9IDA7CisgICAgfQorfQor
CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50KQogewogICAgIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lU
X0xPQURfU1RBUlRFRCkgewogICAgICAgICAvLyBGaW5pc2ggYSBwb3NzaWJsZSBwcmV2aW91cyBs
b2FkIHdhaXRpbmcgZm9yIG1haW4gcmVzb3VyY2UuCiAgICAgICAgIHdlYmtpdFdlYlZpZXdFbWl0
RGVsYXllZExvYWRFdmVudHMod2ViVmlldyk7CiAKKyAgICAgICAgd2Via2l0V2ViVmlld0NhbmNl
bEZhdmljb24od2ViVmlldyk7CiAgICAgICAgIHdlYlZpZXctPnByaXYtPmxvYWRpbmdSZXNvdXJj
ZXNNYXAuY2xlYXIoKTsKICAgICAgICAgd2ViVmlldy0+cHJpdi0+bWFpblJlc291cmNlID0gMDsK
ICAgICAgICAgd2ViVmlldy0+cHJpdi0+d2FpdGluZ0Zvck1haW5SZXNvdXJjZSA9IGZhbHNlOwog
ICAgIH0gZWxzZSBpZiAobG9hZEV2ZW50ID09IFdFQktJVF9MT0FEX0NPTU1JVFRFRCkgeworICAg
ICAgICB3ZWJWaWV3LT5wcml2LT5mYXZpY29uQ2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5j
ZWxsYWJsZV9uZXcoKSk7CisgICAgICAgIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZp
Y29uKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSh3ZWJWaWV3LT5wcml2
LT5jb250ZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJLmRhdGEoKSwgd2ViVmlldy0+cHJpdi0+ZmF2aWNvbkNh
bmNlbGxhYmxlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRGYXZpY29uUmVhZHlDYWxsYmFjaywgd2ViVmlldyk7CiAgICAgICAgIHdlYlZpZXct
PnByaXYtPnN1YnJlc291cmNlc01hcC5jbGVhcigpOwogICAgICAgICBpZiAoIXdlYlZpZXctPnBy
aXYtPm1haW5SZXNvdXJjZSkgewogICAgICAgICAgICAgLy8gV2hlbiBhIHBhZ2UgaXMgbG9hZGVk
IGZyb20gdGhlIGhpc3RvcnkgY2FjaGUsIHRoZSBtYWluIHJlc291cmNlIGxvYWQgY2FsbGJhY2tz
CkBAIC0xOTA5LDcgKzE5NTIsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF91
cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqIGNvbm5lY3QgdG8gbm90aWZ5OjpmYXZpY29u
IHNpZ25hbCBvZiBAd2ViX3ZpZXcgdG8gYmUgbm90aWZpZWQgd2hlbgogICogdGhlIGZhdmljb24g
aXMgYXZhaWxhYmxlLgogICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBwb2ludGVy
IHRvIGEgI2NhaXJvX3N1cmZhY2VfdCB3aXRoIHRoZQorICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOiBhIHBvaW50ZXIgdG8gYSAjY2Fpcm9fc3VyZmFjZV90IHdpdGggdGhlCiAgKiAgICBmYXZp
Y29uIG9yICVOVUxMIGlmIHRoZXJlJ3Mgbm8gaWNvbiBhc3NvY2lhdGVkIHdpdGggQHdlYl92aWV3
LgogICovCiBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmlld19nZXRfZmF2aWNvbihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTkxOCw4ICsxOTYxLDcgQEAgY2Fpcm9fc3VyZmFjZV90
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24oV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAg
ICBpZiAod2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2Uod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7Ci0gICAg
cmV0dXJuIHdlYmtpdEZhdmljb25EYXRhYmFzZUdldEZhdmljb24oZGF0YWJhc2UsIHdlYlZpZXct
PnByaXYtPmFjdGl2ZVVSSSk7CisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmZhdmljb24uZ2V0
KCk7CiB9CiAKIC8qKgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166855</attachid>
            <date>2012-10-03 04:44:41 -0700</date>
            <delta_ts>2012-10-03 05:43:50 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-favicon-fixes3.diff</filename>
            <type>text/plain</type>
            <size>26147</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxNmUyZWYyLi40NTE3OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTItMTAtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFdlYktpdFdlYlZpZXcgZG9lc24ndCBlbWl0IG5vdGlmeTpmYXZp
Y29uIHdoZW4gaXQgY2hhbmdlcyBpbiBzb21lIGNhc2VzIGluIFdlYktpdDIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1haW4gcHJvYmxlbSBpcyB0
aGF0IGl0IHJlbGllcyBvbiBpY29uLXJlYWR5IHNpZ25hbCB0byBiZQorICAgICAgICBlbWl0dGVk
IGJ5IHRoZSBmYXZpY29uIGRhdGFiYXNlLCBidXQgdGhhdCBzaWduYWwgaXMgb25seSBlbWl0dGVk
CisgICAgICAgIHdoZW4gdGhlIGljb24gaXMgbG9hZGVkIGZyb20gdGhlIG5ldHdvcmsgb3IgaW1w
b3J0ZWQgZnJvbSB0aGUKKyAgICAgICAgZGF0YWJhc2UsIGJ1dCBub3Qgd2hlbiB0aGUgaWNvbiBp
cyBhbHJlYWR5IGluIG1lbW9yeS4gVGhlIHdheSB0bworICAgICAgICBkZXRlY3QgaWYgYSB3ZWIg
cGFnZSBkb2Vzbid0IGhhdmUgYSBmYXZpY29uIG9yIGl0J3MgdW5rbm93biBpdCdzCisgICAgICAg
IGFsc28gaW5jb3JyZWN0bHkgZG9uZSBhbmQgdGhlIHdyb25nIGVycm9yIGlzIHJldHVybmVkIGZv
ciBwYWdlcworICAgICAgICBub3QgaGF2aW5nIGEgZmF2aWNvbi4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChHZXRGYXZp
Y29uU3VyZmFjZUFzeW5jRGF0YSk6IEFkZCBhIEdFcnJvciBmaWVsZC4KKyAgICAgICAgKGdldElj
b25TdXJmYWNlU3luY2hyb25vdXNseSk6IEFkZCBhIEdFcnJvciBwYXJhbWV0ZXIgYW5kIGZpbGwg
aXQKKyAgICAgICAgYWNjb3JkaW5nbHkuIFVzZSBpbWFnZUZvclBhZ2VVUkwoKSBpbnN0ZWFkIG9m
CisgICAgICAgIG5hdGl2ZUltYWdlRm9yUGFnZVVSTCgpIGJlY2F1c2UgdGhlIGxhdHRlciBhbHdh
eXMgcmV0dXJucyBOVUxMIGZvcgorICAgICAgICBlbXB0eSBpbWFnZXMsIHNvIGl0J3Mgbm90IHBv
c3NpYmxlIHRvIGtub3cgd2hldGhlciBpdCdzIGFuIGVtcHR5CisgICAgICAgIGltYWdlIG9yIG5v
dC4gSWYgdGhlIGltYWdlIGlzIGVtcHR5IGlzIGJlY2F1c2UgdGhlIHdlYiBwYWdlIGlzCisgICAg
ICAgIGtub3duIGJ5IHRoZSBkYXRhYmFzZSBhbmQgaXQgZG9lc24ndCBoYXZlIGEgZmF2aWNvbi4K
KyAgICAgICAgKHByb2Nlc3NQZW5kaW5nSWNvbnNGb3JVUkkpOiBQYXNzIHRoZSBkYXRhIGVycm9y
IHRvCisgICAgICAgIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSgpLiBEb24ndCBzZXQgdGhl
IGljb24gaWYgdGhlIHJlcXVlc3QKKyAgICAgICAgaGFzIGJlZW4gY2FuY2VsbGVkLgorICAgICAg
ICAod2Via2l0RmF2aWNvbkRhdGFiYXNlR2V0RmF2aWNvbik6IFBhc3MgTlVMTCBhcyBlcnJvciB0
bworICAgICAgICBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoKS4KKyAgICAgICAgKHNldEVy
cm9yRm9yQXN5bmNSZXN1bHQpOiBGaWxsIGFsc28gZXJyb3IgZm9yCisgICAgICAgIFdFQktJVF9G
QVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fVU5LTk9XTi4KKyAgICAgICAgKHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uKTogSWYgd2UgZ2V0IE5VTEwgYXMgaWNvbiBpbgor
ICAgICAgICB0aGUgZmlyc3QgcGxhY2UsIGNoZWNrIHRoZSBlcnJvciBjb2RlIHJldHVybmVkIGJ5
CisgICAgICAgIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSgpIGFuZCByZXR1cm4gZWFybHkg
aWYgdGhlIHBhZ2UgZG9lc24ndAorICAgICAgICBoYXZlIGEgZmF2aWNvbi4gUmVtb3ZlIHRoZSBj
YW5jZWxsZWQgc2lnbmFsIHRvIGF2b2lkIHJhY2UKKyAgICAgICAgY29uZGl0aW9ucy4KKyAgICAg
ICAgKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaCk6IEVycm9ycyBh
cmUgcHJvY2Vzc2VkCisgICAgICAgIGJlZm9yZSBub3csIHNvIHNpbXBseSBwcm9wYWdhdGUgdGhl
IGVycm9yIGlmIGFueSBvciByZXR1cm4gdGhlCisgICAgICAgIGZhdmljb24uCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2Vi
Vmlld1ByaXZhdGUpOiBLZWVwIGEgcmVmZXJlbmNlIG9mIHRoZSBmYXZpY29uLgorICAgICAgICAo
d2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KTogQ2FuY2VsIGFueSBhc3luYyBvcGVy
YXRpb24gdG8KKyAgICAgICAgZ2V0IHRoZSBmYXZpY29uLgorICAgICAgICAod2Via2l0V2ViVmll
d1VwZGF0ZUZhdmljb24pOiBDaGVjayBpZiBmYXZpY29uIGhhcyBjaGFuZ2VkIGFuZAorICAgICAg
ICBzYXZlIGl0IGVtaXR0aW5nIGFsc28gbm90aWZ5OjpmYXZpY29uIHNpZ25hbC4KKyAgICAgICAg
KGljb25SZWFkeUNhbGxiYWNrKTogT25seSB1cGRhdGUgdGhlIGZhdmljb24gaWYgd2UgZG9uJ3Qg
aGF2ZSBvbmUKKyAgICAgICAgYWxyZWFkeS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdGaW5hbGl6
ZSk6IENhbGwgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KCkuCisgICAgICAgIChn
ZXRGYXZpY29uUmVhZHlDYWxsYmFjayk6IFVwZGF0ZSB0aGUgZmF2aWNvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdSZXF1ZXN0RmF2aWNvbik6IFJlcXVlc3QgYSBuZXcgZmF2aWNvbi4KKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZCk6IFRyeSB0byBnZXQgdGhlIGZhdmljb24gd2hl
biB0aGUgbG9hZAorICAgICAgICBoYXMgYmVlbiBjb21taXR0ZWQgYW5kIHRoZSBVUkkgaXMgdGhl
IGZpbmFsIG9uZS4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfZmF2aWNvbik6IFJldHVy
biB0aGUgY2FjaGVkIGZhdmljb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6
CisgICAgICAgICh0ZXN0U2V0RGlyZWN0b3J5KToKKyAgICAgICAgKHRlc3RHZXRGYXZpY29uKToK
KyAgICAgICAgKHRlc3RXZWJWaWV3RmF2aWNvbik6CisKIDIwMTItMTAtMDIgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBBUEkg
dG8gZ2V0IHRoZSB3ZWIgdmlldyB0aGF0IGluaXRpYXRlZCBhIGN1c3RvbSBVUkkgcmVxdWVzdCB0
byBXZWJLaXQyIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDkwY2M5MzQuLmE2ZGRlNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTEwOSwyOCArMTEwLDMwIEBAIHN0cnVjdCBHZXRGYXZpY29uU3VyZmFjZUFzeW5j
RGF0YSB7CiAgICAgR1JlZlB0cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+IGZhdmljb25EYXRhYmFz
ZTsKICAgICBTdHJpbmcgcGFnZVVSTDsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpY29u
OworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4g
Y2FuY2VsbGFibGU7Ci0gICAgdW5zaWduZWQgbG9uZyBjYW5jZWxsZWRJZDsKLQotICAgIH5HZXRG
YXZpY29uU3VyZmFjZUFzeW5jRGF0YSgpCi0gICAgewotICAgICAgICBpZiAoY2FuY2VsbGVkSWQp
Ci0gICAgICAgICAgICBnX2NhbmNlbGxhYmxlX2Rpc2Nvbm5lY3QoY2FuY2VsbGFibGUuZ2V0KCks
IGNhbmNlbGxlZElkKTsKLSAgICB9CiB9OwogV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVD
VChHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSkKIAotc3RhdGljIGNhaXJvX3N1cmZhY2VfdCog
Z2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJh
c2UsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKK3N0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGdldElj
b25TdXJmYWNlU3luY2hyb25vdXNseShXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEdFcnJvcioqIGVycm9yKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICAvLyBUaGUgZXhhY3Qgc2l6ZSB3ZSBwYXNzIGlzIGlycmVsZXZh
bnQgdG8gdGhlIGljb25EYXRhYmFzZSBjb2RlLgogICAgIC8vIFdlIG11c3QgcGFzcyBzb21ldGhp
bmcgZ3JlYXRlciB0aGFuIDB4MCB0byBnZXQgYW4gaWNvbi4KLSAgICBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciBpY29uID0gZGF0YWJhc2UtPnByaXYtPmljb25EYXRhYmFzZS0+bmF0aXZlSW1hZ2VG
b3JQYWdlVVJMKHBhZ2VVUkwsIFdlYkNvcmU6OkludFNpemUoMSwgMSkpOwotICAgIGlmICghaWNv
bikKKyAgICBXZWJDb3JlOjpJbWFnZSogaWNvbkltYWdlID0gZGF0YWJhc2UtPnByaXYtPmljb25E
YXRhYmFzZS0+aW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwsIFdlYkNvcmU6OkludFNpemUoMSwgMSkp
OworICAgIGlmICghaWNvbkltYWdlKSB7CisgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBXRUJL
SVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1Jf
RkFWSUNPTl9VTktOT1dOLCBfKCJVbmtub3duIGZhdmljb24gZm9yIHBhZ2UgJXMiKSwgcGFnZVVS
TC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCi0gICAgcmV0dXJu
IGljb24gPyBpY29uLT5zdXJmYWNlKCkgOiAwOworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
IGljb24gPSBpY29uSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYg
KCFpY29uKSB7CisgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBXRUJLSVRfRkFWSUNPTl9EQVRB
QkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1RfRk9V
TkQsIF8oIlBhZ2UgJXMgZG9lcyBub3QgaGF2ZSBhIGZhdmljb24iKSwgcGFnZVVSTC51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGljb24tPnN1
cmZhY2UoKTsKIH0KIAogc3RhdGljIHZvaWQgZGVsZXRlUGVuZGluZ0ljb25SZXF1ZXN0cyhXZWJL
aXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBQZW5kaW5nSWNvblJlcXVlc3RWZWN0b3IqIHJl
cXVlc3RzLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCkBAIC0xNDgsNyArMTUxLDggQEAgc3RhdGlj
IHZvaWQgcHJvY2Vzc1BlbmRpbmdJY29uc0ZvclVSSShXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRh
dGFiYXNlLCBjb25zdCBTdHIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGljb25zLT5zaXpl
KCk7ICsraSkgewogICAgICAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGljb25zLT5h
dChpKS5nZXQoKTsKICAgICAgICAgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBz
dGF0aWNfY2FzdDxHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jl
c3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCkpOwotICAgICAgICBkYXRhLT5pY29uID0g
Z2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KGRhdGFiYXNlLCBwYWdlVVJMKTsKKyAgICAgICAg
aWYgKCFnX2NhbmNlbGxhYmxlX2lzX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSkp
CisgICAgICAgICAgICBkYXRhLT5pY29uID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5KGRh
dGFiYXNlLCBwYWdlVVJMLCAmZGF0YS0+ZXJyb3Iub3V0UHRyKCkpOwogCiAgICAgICAgIGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQpOwogICAgIH0KQEAgLTE4OCw3ICsxOTIs
NyBAQCBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdEZhdmljb25EYXRhYmFzZUdldEZhdmljb24oV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZQogICAgIEFTU0VSVChXRUJLSVRfSVNfRkFWSUNP
Tl9EQVRBQkFTRShkYXRhYmFzZSkpOwogICAgIEFTU0VSVCghcGFnZVVSTC5pc051bGwoKSk7CiAK
LSAgICBjYWlyb19zdXJmYWNlX3QqIGljb25TdXJmYWNlID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJv
bm91c2x5KGRhdGFiYXNlLCBTdHJpbmc6OmZyb21VVEY4KHBhZ2VVUkwuZGF0YSgpKSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV90KiBpY29uU3VyZmFjZSA9IGdldEljb25TdXJmYWNlU3luY2hyb25vdXNs
eShkYXRhYmFzZSwgU3RyaW5nOjpmcm9tVVRGOChwYWdlVVJMLmRhdGEoKSksIDApOwogICAgIGlm
ICghaWNvblN1cmZhY2UpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yMDYsMzQgKzIxMCw2IEBA
IHN0YXRpYyBQZW5kaW5nSWNvblJlcXVlc3RWZWN0b3IqIGdldE9yQ3JlYXRlUGVuZGluZ0ljb25S
ZXF1ZXN0cyhXZWJLaXRGYXZpY29uRGF0CiAgICAgcmV0dXJuIGljb25zOwogfQogCi1zdGF0aWMg
dm9pZCBnZXRJY29uU3VyZmFjZUNhbmNlbGxlZCh2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBHU2lt
cGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEdTaW1wbGVBc3luY1Jlc3VsdCo+
KHVzZXJEYXRhKTsKLQotICAgIC8vIEdldCB0aGUgZGF0YSB3ZSBtaWdodCBuZWVkIGFuZCBjb21w
bGV0ZSB0aGUgcmVxdWVzdC4KLSAgICBHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSogZGF0YSA9
IHN0YXRpY19jYXN0PEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0KSk7Ci0gICAgV2ViS2l0RmF2aWNvbkRh
dGFiYXNlKiBkYXRhYmFzZSA9IGRhdGEtPmZhdmljb25EYXRhYmFzZS5nZXQoKTsKLSAgICBTdHJp
bmcgcGFnZVVSTCA9IGRhdGEtPnBhZ2VVUkw7Ci0KLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRf
Y29tcGxldGUocmVzdWx0KTsKLQotICAgIFBlbmRpbmdJY29uUmVxdWVzdFZlY3RvciogaWNvbnMg
PSBkYXRhYmFzZS0+cHJpdi0+cGVuZGluZ0ljb25SZXF1ZXN0cy5nZXQocGFnZVVSTCk7Ci0gICAg
aWYgKCFpY29ucykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IGl0ZW1JbmRleCA9IGlj
b25zLT5maW5kKHJlc3VsdCk7Ci0gICAgaWYgKGl0ZW1JbmRleCAhPSBub3RGb3VuZCkKLSAgICAg
ICAgaWNvbnMtPnJlbW92ZShpdGVtSW5kZXgpOwotICAgIGlmIChpY29ucy0+aXNFbXB0eSgpKQot
ICAgICAgICBkZWxldGVQZW5kaW5nSWNvblJlcXVlc3RzKGRhdGFiYXNlLCBpY29ucywgcGFnZVVS
TCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldEljb25TdXJmYWNlQ2FuY2VsbGVkQ2FsbGJhY2soR0Nh
bmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQpCi17Ci0g
ICAgLy8gSGFuZGxlIGNhbmNlbGxlZCBpbiBhIGluIGlkbGUgc2luY2UgaXQgbWlnaHQgYmUgY2Fs
bGVkIGZyb20gYW55IHRocmVhZC4KLSAgICBjYWxsT25NYWluVGhyZWFkKGdldEljb25TdXJmYWNl
Q2FuY2VsbGVkLCByZXN1bHQpOwotfQotCiBzdGF0aWMgdm9pZCBzZXRFcnJvckZvckFzeW5jUmVz
dWx0KEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJLaXRGYXZpY29uRGF0YWJhc2VFcnJv
ciBlcnJvciwgY29uc3QgU3RyaW5nJiBwYWdlVVJMID0gU3RyaW5nKCkpCiB7CiAgICAgQVNTRVJU
KHJlc3VsdCk7CkBAIC0yNDcsNiArMjIzLDEwIEBAIHN0YXRpYyB2b2lkIHNldEVycm9yRm9yQXN5
bmNSZXN1bHQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQsIFdlYktpdEZhdmljb25EYXRhCiAg
ICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfZXJyb3IocmVzdWx0LCBXRUJLSVRfRkFW
SUNPTl9EQVRBQkFTRV9FUlJPUiwgZXJyb3IsIF8oIlBhZ2UgJXMgZG9lcyBub3QgaGF2ZSBhIGZh
dmljb24iKSwgcGFnZVVSTC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBj
YXNlIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fVU5LTk9XTjoKKyAgICAg
ICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9lcnJvcihyZXN1bHQsIFdFQktJVF9GQVZJQ09O
X0RBVEFCQVNFX0VSUk9SLCBlcnJvciwgXygiVW5rbm93biBmYXZpY29uIGZvciBwYWdlICVzIiks
IHBhZ2VVUkwudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMjgwLDE2ICsyNjAsMTMg
QEAgdm9pZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihXZWJLaXRGYXZpY29u
RGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdAogICAgIGdfcmV0dXJuX2lmX2ZhaWwocGFnZVVSSSk7
CiAKICAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1QoZGF0YWJhc2UpLCBjYWxsYmFjaywgdXNl
ckRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF9mYXZpY29uX2RhdGFiYXNl
X2dldF9mYXZpY29uKSkpOworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfY2hlY2tfY2Fu
Y2VsbGFibGUocmVzdWx0LmdldCgpLCBjYW5jZWxsYWJsZSk7CisKICAgICBHZXRGYXZpY29uU3Vy
ZmFjZUFzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZUdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKCk7
CiAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0Lmdl
dCgpLCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0RmF2
aWNvblN1cmZhY2VBc3luY0RhdGEpKTsKICAgICBkYXRhLT5mYXZpY29uRGF0YWJhc2UgPSBkYXRh
YmFzZTsKICAgICBkYXRhLT5wYWdlVVJMID0gU3RyaW5nOjpmcm9tVVRGOChwYWdlVVJJKTsKICAg
ICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOwotICAgIGlmIChjYW5jZWxsYWJsZSkg
ewotICAgICAgICBkYXRhLT5jYW5jZWxsZWRJZCA9Ci0gICAgICAgICAgICBnX2NhbmNlbGxhYmxl
X2Nvbm5lY3QoY2FuY2VsbGFibGUsIEdfQ0FMTEJBQ0soZ2V0SWNvblN1cmZhY2VDYW5jZWxsZWRD
YWxsYmFjayksIHJlc3VsdC5nZXQoKSwgMCk7Ci0gICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9zZXRfY2hlY2tfY2FuY2VsbGFibGUocmVzdWx0LmdldCgpLCBjYW5jZWxsYWJsZSk7Ci0gICAg
fQogCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IGRhdGFiYXNlLT5w
cml2OwogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlSW1wbCA9IHByaXYtPmljb25E
YXRhYmFzZS5nZXQoKTsKQEAgLTMwNyw3ICsyODQsMTggQEAgdm9pZCB3ZWJraXRfZmF2aWNvbl9k
YXRhYmFzZV9nZXRfZmF2aWNvbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25z
dAogCiAgICAgLy8gV2UgYXNrIGZvciB0aGUgaWNvbiBkaXJlY3RseS4gSWYgd2UgZG9uJ3QgZ2V0
IHRoZSBpY29uIGRhdGEgbm93LAogICAgIC8vIHdlJ2xsIGJlIG5vdGlmaWVkIGxhdGVyIChldmVu
IGlmIHRoZSBkYXRhYmFzZSBpcyBzdGlsbCBpbXBvcnRpbmcgaWNvbnMpLgotICAgIGRhdGEtPmlj
b24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2UsIGRhdGEtPnBhZ2VVUkwp
OworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBkYXRhLT5pY29uID0gZ2V0SWNvblN1
cmZhY2VTeW5jaHJvbm91c2x5KGRhdGFiYXNlLCBkYXRhLT5wYWdlVVJMLCAmZXJyb3Iub3V0UHRy
KCkpOworICAgIGlmIChkYXRhLT5pY29uKSB7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9jb21wbGV0ZV9pbl9pZGxlKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBXRUJLSVRfRkFWSUNPTl9E
QVRBQkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1Rf
Rk9VTkQpKSB7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3Vs
dC5nZXQoKSwgZXJyb3IucmVsZWFzZSgpKTsKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0
X2NvbXBsZXRlX2luX2lkbGUocmVzdWx0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIC8vIElmIHRoZXJlJ3Mgbm90IGEgdmFsaWQgaWNvbiwgYnV0IHRoZXJlJ3MgYW4gaWNv
blVSTCByZWdpc3RlcmVkLAogICAgIC8vIG9yIGl0J3Mgc3RpbGwgbm90IHJlZ2lzdGVyZWQgYnV0
IHRoZSBpbXBvcnQgcHJvY2VzcyBoYXNuJ3QKQEAgLTMxNSwyMSArMzAzLDE0IEBAIHZvaWQgd2Vi
a2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBk
YXRhYmFzZSwgY29uc3QKICAgICAvLyBjYWxsZWQgYmVmb3JlIG1ha2luZyBhbmQgaW5mb3JtZWQg
ZGVjaXNpb24uCiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMOwogICAgIGljb25EYXRhYmFz
ZUltcGwtPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoZGF0YS0+cGFnZVVSTCwgaWNvblVS
TEZvclBhZ2VVUkwpOwotICAgIGlmICghZGF0YS0+aWNvbiAmJiAoIWljb25VUkxGb3JQYWdlVVJM
LmlzRW1wdHkoKSB8fCAhaWNvbkRhdGFiYXNlSW1wbC0+aXNVcmxJbXBvcnRDb21wbGV0ZWQoKSkp
IHsKKyAgICBpZiAoIWljb25VUkxGb3JQYWdlVVJMLmlzRW1wdHkoKSB8fCAhaWNvbkRhdGFiYXNl
SW1wbC0+aXNVcmxJbXBvcnRDb21wbGV0ZWQoKSkgewogICAgICAgICBQZW5kaW5nSWNvblJlcXVl
c3RWZWN0b3IqIGljb25zID0gZ2V0T3JDcmVhdGVQZW5kaW5nSWNvblJlcXVlc3RzKGRhdGFiYXNl
LCBkYXRhLT5wYWdlVVJMKTsKICAgICAgICAgQVNTRVJUKGljb25zKTsKICAgICAgICAgaWNvbnMt
PmFwcGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgd2Ug
cmVhY2hlZCB0aGlzIHBvaW50IHdpdGhvdXQgYSB2YWxpZCBpY29uLCB3aGljaCBtZWFucyB0aGF0
Ci0gICAgLy8gdGhlcmUncyBubyBpY29uVVJMIHJlZ2lzdGVyZWQgZm9yIHRoaXMgcGFnZVVSSSBh
bmQgdGhlCi0gICAgLy8gdXJsSW1wb3J0IHByb2Nlc3MgaGFzIGFscmVhZHkgZmluaXNoZWQsIG9y
IGRvIGhhdmUgYSB2YWxpZCBpY29uCi0gICAgLy8gYnV0IGl0J3MgYW4gZW1wdHkgaW1hZ2UsIHRo
YXQgbWVhbnMgdGhlcmUncyBubyBmYXZpY29uLgotICAgIGlmICghZGF0YS0+aWNvbiB8fCAhY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShkYXRhLT5pY29uLmdldCgpKSkKLSAgICAgICAgc2V0
RXJyb3JGb3JBc3luY1Jlc3VsdChyZXN1bHQuZ2V0KCksIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNF
X0VSUk9SX0ZBVklDT05fTk9UX0ZPVU5ELCBkYXRhLT5wYWdlVVJMKTsKLQotICAgIC8vIENvbXBs
ZXRlIHRoZSBhc3luY2hyb25vdXMgcHJvY2VzczsKKyAgICBzZXRFcnJvckZvckFzeW5jUmVzdWx0
KHJlc3VsdC5nZXQoKSwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9VTktO
T1dOLCBkYXRhLT5wYWdlVVJMKTsKICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGVf
aW5faWRsZShyZXN1bHQuZ2V0KCkpOwogfQogCkBAIC0zNTQsMjggKzMzNSwxMiBAQCBjYWlyb19z
dXJmYWNlX3QqIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaChXZWJL
aXRGYXZpY29uRGF0YWJhcwogCiAgICAgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEg
PSBzdGF0aWNfY2FzdDxHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5j
X3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZVJlc3VsdCkpOwogICAgIEFTU0VSVChk
YXRhKTsKLQotICAgIGlmIChkYXRhLT5pY29uKQotICAgICAgICByZXR1cm4gY2Fpcm9fc3VyZmFj
ZV9yZWZlcmVuY2UoZGF0YS0+aWNvbi5nZXQoKSk7Ci0KLSAgICAvLyBJZiB0aGUgaWNvbiBpcyBu
b3QgYXZhaWxhYmxlIGF0IHRoaXMgc3RhZ2UsIGludmVzdGlnYXRlIHdoeQotICAgIC8vIGFuZCBj
b21lIHVwIHdpdGggYSBkZXNjcmlwdGl2ZSwgYW5kIGhvcGVmdWxseSBoZWxwZnVsLCBlcnJvci4K
LSAgICBTdHJpbmcgaWNvblVSTEZvclBhZ2VVUkw7Ci0gICAgZGF0YWJhc2UtPnByaXYtPmljb25E
YXRhYmFzZS0+c3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChkYXRhLT5wYWdlVVJMLCBpY29u
VVJMRm9yUGFnZVVSTCk7Ci0KLSAgICBpZiAoaWNvblVSTEZvclBhZ2VVUkwuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gaWNvbiBVUkwgaW4gdGhlIGRhdGFiYXNlIGF0IHRo
aXMgcG9pbnQsIHdlIGNhbgotICAgICAgICAvLyBjb25jbHVkZSB0aGVyZSdzIG5vIGZhdmljb24g
YXQgYWxsIGZvciB0aGUgcmVxdWVzdGVkIHBhZ2UgVVJMLgotICAgICAgICBnX3NldF9lcnJvcihl
cnJvciwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJQ09OX0RBVEFC
QVNFX0VSUk9SX0ZBVklDT05fTk9UX0ZPVU5ELAotICAgICAgICAgICAgICAgICAgICBfKCJQYWdl
ICVzIGRvZXMgbm90IGhhdmUgYSBmYXZpY29uIiksIGRhdGEtPnBhZ2VVUkwudXRmOCgpLmRhdGEo
KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSWYgdGhlIGljb24gVVJMIGlzIGtub3duIGl0
IG9idmlvdXNseSBtZWFucyB0aGF0IHRoZSBpY29uIGRhdGEKLSAgICAgICAgLy8gaGFzbid0IGJl
ZW4gcmV0cmlldmVkIHlldCwgc28gcmVwb3J0IHRoYXQgaXQncyAndW5rbm93bicuCi0gICAgICAg
IGdfc2V0X2Vycm9yKGVycm9yLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lU
X0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICBfKCJVbmtub3duIGZhdmljb24gZm9yIHBhZ2UgJXMiKSwgZGF0YS0+cGFnZVVSTC51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAoZGF0YS0+ZXJyb3IpIHsKKyAgICAgICAgZ19wcm9wYWdhdGVf
ZXJyb3IoZXJyb3IsIGRhdGEtPmVycm9yLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5j
ZShkYXRhLT5pY29uLmdldCgpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDY2MGQ1YWYuLmRiZGE5OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSWNvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRp
bGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTE0Miw2ICsxNDMsOSBAQCBzdHJ1Y3QgX1dl
YktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBSZXNvdXJjZXNNYXAgc3VicmVzb3VyY2VzTWFwOwog
CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJJbnNwZWN0b3I+IGluc3BlY3RvcjsKKworICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb247CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGZh
dmljb25DYW5jZWxsYWJsZTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFM
XSA9IHsgMCwgfTsKQEAgLTI2MywxMyArMjY3LDM1IEBAIHN0YXRpYyB2b2lkIHVzZXJBZ2VudENo
YW5nZWQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmll
CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+c2V0Q3VzdG9tVXNlckFnZW50KFN0cmluZzo6ZnJvbVVU
Rjgod2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRpbmdzKSkpOwogfQogCi1zdGF0
aWMgdm9pZCBpY29uUmVhZHlDYWxsYmFjayhXZWJLaXRGYXZpY29uRGF0YWJhc2UgKmRhdGFiYXNl
LCBjb25zdCBjaGFyICp1cmksIFdlYktpdFdlYlZpZXcgKndlYlZpZXcpCitzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvblJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICBpZiAoIXdlYlZpZXctPnByaXYtPmZhdmljb25DYW5jZWxsYWJsZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwod2ViVmlldy0+cHJpdi0+ZmF2aWNv
bkNhbmNlbGxhYmxlLmdldCgpKTsKKyAgICB3ZWJWaWV3LT5wcml2LT5mYXZpY29uQ2FuY2VsbGFi
bGUgPSAwOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRlRmF2aWNvbihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjYWlyb19zdXJmYWNlX3QqIGZhdmljb24pCit7CisgICAgaWYg
KHdlYlZpZXctPnByaXYtPmZhdmljb24uZ2V0KCkgPT0gZmF2aWNvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgd2ViVmlldy0+cHJpdi0+ZmF2aWNvbiA9IGZhdmljb247CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAiZmF2aWNvbiIpOworfQorCitzdGF0aWMgdm9pZCBp
Y29uUmVhZHlDYWxsYmFjayhXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBj
aGFyKiB1cmksIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgLy8gQ29uc2lkZXIgb25s
eSB0aGUgaWNvbiBtYXRjaGluZyB0aGUgYWN0aXZlIFVSSSBmb3IgdGhpcyB3ZWJ2aWV3LgogICAg
IGlmICh3ZWJWaWV3LT5wcml2LT5hY3RpdmVVUkkgIT0gdXJpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViVmlldyksICJmYXZpY29uIik7CisgICAg
Ly8gVXBkYXRlIHRoZSBmYXZpY29uIG9ubHkgaWYgd2UgZG9uJ3QgaGF2ZSBvbmUgYWxyZWFkeS4K
KyAgICBpZiAoIXdlYlZpZXctPnByaXYtPmZhdmljb24pIHsKKyAgICAgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gZmF2aWNvbiA9IGFkb3B0UmVmKHdlYmtpdEZhdmljb25EYXRhYmFzZUdldEZh
dmljb24oZGF0YWJhc2UsIHdlYlZpZXctPnByaXYtPmFjdGl2ZVVSSSkpOworICAgICAgICB3ZWJr
aXRXZWJWaWV3VXBkYXRlRmF2aWNvbih3ZWJWaWV3LCBmYXZpY29uLmdldCgpKTsKKyAgICB9CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCkBAIC00NDksNiArNDc1LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBpZiAo
cHJpdi0+bW9kYWxMb29wICYmIGdfbWFpbl9sb29wX2lzX3J1bm5pbmcocHJpdi0+bW9kYWxMb29w
LmdldCgpKSkKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChwcml2LT5tb2RhbExvb3AuZ2V0KCkp
OwogCisgICAgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KHdlYlZpZXcpOwogICAg
IHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFs
SGFuZGxlcih3ZWJWaWV3KTsKICAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2ln
bmFsSGFuZGxlcnMod2ViVmlldyk7CiAgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RGYXZpY29u
RGF0YWJhc2VTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKQEAgLTEyMzQsMTYgKzEyNjEsMzkgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0VtaXREZWxheWVkTG9hZEV2ZW50cyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIHByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsK
IH0KIAorc3RhdGljIHZvaWQgZ2V0RmF2aWNvblJlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb24gPSBh
ZG9wdFJlZih3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl9maW5pc2goV0VCS0lU
X0ZBVklDT05fREFUQUJBU0Uob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAg
ICBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJP
Ul9DQU5DRUxMRUQpKSB7CisgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcodXNlckRhdGEpOworICAgICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlRmF2aWNvbih3
ZWJWaWV3LCBmYXZpY29uLmdldCgpKTsKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+ZmF2aWNvbkNh
bmNlbGxhYmxlID0gMDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSZXF1
ZXN0RmF2aWNvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKHByaXYt
PmNvbnRleHQpOworICAgIHByaXYtPmZhdmljb25DYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2Nh
bmNlbGxhYmxlX25ldygpKTsKKyAgICB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNv
bihkYXRhYmFzZSwgcHJpdi0+YWN0aXZlVVJJLmRhdGEoKSwgcHJpdi0+ZmF2aWNvbkNhbmNlbGxh
YmxlLmdldCgpLCBnZXRGYXZpY29uUmVhZHlDYWxsYmFjaywgd2ViVmlldyk7Cit9CisKIHZvaWQg
d2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExv
YWRFdmVudCBsb2FkRXZlbnQpCiB7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3LT5wcml2OwogICAgIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURfU1RBUlRFRCkg
ewogICAgICAgICAvLyBGaW5pc2ggYSBwb3NzaWJsZSBwcmV2aW91cyBsb2FkIHdhaXRpbmcgZm9y
IG1haW4gcmVzb3VyY2UuCiAgICAgICAgIHdlYmtpdFdlYlZpZXdFbWl0RGVsYXllZExvYWRFdmVu
dHMod2ViVmlldyk7CiAKKyAgICAgICAgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0
KHdlYlZpZXcpOwogICAgICAgICB3ZWJWaWV3LT5wcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNs
ZWFyKCk7CiAgICAgICAgIHdlYlZpZXctPnByaXYtPm1haW5SZXNvdXJjZSA9IDA7CiAgICAgICAg
IHdlYlZpZXctPnByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsKICAgICB9IGVs
c2UgaWYgKGxvYWRFdmVudCA9PSBXRUJLSVRfTE9BRF9DT01NSVRURUQpIHsKKyAgICAgICAgd2Vi
a2l0V2ViVmlld1JlcXVlc3RGYXZpY29uKHdlYlZpZXcpOworCiAgICAgICAgIHdlYlZpZXctPnBy
aXYtPnN1YnJlc291cmNlc01hcC5jbGVhcigpOwogICAgICAgICBpZiAoIXdlYlZpZXctPnByaXYt
Pm1haW5SZXNvdXJjZSkgewogICAgICAgICAgICAgLy8gV2hlbiBhIHBhZ2UgaXMgbG9hZGVkIGZy
b20gdGhlIGhpc3RvcnkgY2FjaGUsIHRoZSBtYWluIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzCkBA
IC0xOTA5LDcgKzE5NTksNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF91cmko
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqIGNvbm5lY3QgdG8gbm90aWZ5OjpmYXZpY29uIHNp
Z25hbCBvZiBAd2ViX3ZpZXcgdG8gYmUgbm90aWZpZWQgd2hlbgogICogdGhlIGZhdmljb24gaXMg
YXZhaWxhYmxlLgogICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBwb2ludGVyIHRv
IGEgI2NhaXJvX3N1cmZhY2VfdCB3aXRoIHRoZQorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUp
OiBhIHBvaW50ZXIgdG8gYSAjY2Fpcm9fc3VyZmFjZV90IHdpdGggdGhlCiAgKiAgICBmYXZpY29u
IG9yICVOVUxMIGlmIHRoZXJlJ3Mgbm8gaWNvbiBhc3NvY2lhdGVkIHdpdGggQHdlYl92aWV3Lgog
ICovCiBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmlld19nZXRfZmF2aWNvbihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTkxOCw4ICsxOTY4LDcgQEAgY2Fpcm9fc3VyZmFjZV90KiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24oV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBp
ZiAod2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X2Zhdmljb25fZGF0YWJhc2Uod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7Ci0gICAgcmV0
dXJuIHdlYmtpdEZhdmljb25EYXRhYmFzZUdldEZhdmljb24oZGF0YWJhc2UsIHdlYlZpZXctPnBy
aXYtPmFjdGl2ZVVSSSk7CisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmZhdmljb24uZ2V0KCk7
CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA2
MjEwNmNiLi4zMTMyNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNw
cApAQCAtMzksMTAgKzM5LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2ljb25SZWFkeVNpZ25h
bFJlY2VpdmVkKGZhbHNlKQogICAgICAgICAsIG1fZmF2aWNvbk5vdGlmaWNhdGlvblJlY2VpdmVk
KGZhbHNlKQogICAgIHsKKyAgICAgICAgaWYgKCFnX3N0cl9lcXVhbCh3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KG1fd2ViQ29udGV4dCksIGtUZW1wRGly
ZWN0b3J5KSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRh
YmFzZV9kaXJlY3RvcnkobV93ZWJDb250ZXh0LCBrVGVtcERpcmVjdG9yeSk7CisKKyAgICAgICAg
V2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KGRhdGFiYXNlLCAiZmF2aWNvbi1yZWFkeSIsIEdfQ0FMTEJBQ0soaWNvblJlYWR5Q2FsbGJhY2sp
LCB0aGlzKTsKICAgICB9CiAKICAgICB+RmF2aWNvbkRhdGFiYXNlVGVzdCgpCiAgICAgeworICAg
ICAgICBpZiAobV9mYXZpY29uKQorICAgICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1f
ZmF2aWNvbik7CisKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQpOwogICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoZGF0YWJhc2UsIEdfU0lH
TkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOwogICAgIH0KQEAgLTU4LDMxICs2Niwz
MiBAQCBwdWJsaWM6CiAgICAgICAgIEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QgPSBzdGF0aWNf
Y2FzdDxGYXZpY29uRGF0YWJhc2VUZXN0Kj4oZGF0YSk7CiAgICAgICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1fd2ViVmlldyA9PSB3ZWJWaWV3KTsKICAgICAgICAgdGVzdC0+bV9mYXZpY29uTm90aWZpY2F0
aW9uUmVjZWl2ZWQgPSB0cnVlOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCBnZXRGYXZpY29uQ2FsbGJhY2soR09iamVjdCogc291cmNlT2Jq
ZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogZGF0YSkKICAgICB7CiAgICAgICAgIEZh
dmljb25EYXRhYmFzZVRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxGYXZpY29uRGF0YWJhc2VUZXN0
Kj4oZGF0YSk7CiAgICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UodGVzdC0+bV93ZWJDb250ZXh0KTsK
LQotICAgICAgICB0ZXN0LT5tX2Vycm9yLmNsZWFyKCk7CiAgICAgICAgIHRlc3QtPm1fZmF2aWNv
biA9IHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaChkYXRhYmFzZSwg
cmVzdWx0LCAmdGVzdC0+bV9lcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGdfbWFpbl9sb29wX3F1
aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAg
IH0KIAotICAgIHZvaWQgYXNrRm9ySWNvbkFuZFdhaXRVbnRpbFJlYWR5KCkKKyAgICB2b2lkIHdh
aXRVbnRpbEZhdmljb25DaGFuZ2VkKCkKICAgICB7Ci0gICAgICAgIFdlYktpdEZhdmljb25EYXRh
YmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2Uo
bV93ZWJDb250ZXh0KTsKLSAgICAgICAgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmlj
b24oZGF0YWJhc2UsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCksIDAsIGdldEZh
dmljb25DYWxsYmFjaywgdGhpcyk7Ci0KLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChkYXRhYmFz
ZSwgImZhdmljb24tcmVhZHkiLCBHX0NBTExCQUNLKGljb25SZWFkeUNhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5OjpmYXZpY29uIiwg
R19DQUxMQkFDSyhmYXZpY29uQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0KKyAgICAgICAgbV9m
YXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgbG9u
ZyBoYW5kbGVySUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6ZmF2aWNv
biIsIEdfQ0FMTEJBQ0soZmF2aWNvbkNoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBn
X21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlz
Y29ubmVjdChtX3dlYlZpZXcsIGhhbmRsZXJJRCk7CiAgICAgfQogCi0gICAgdm9pZCBhc2tBbmRX
YWl0Rm9yRmF2aWNvbihjb25zdCBjaGFyKiBwYWdlVVJJKQorICAgIHZvaWQgZ2V0RmF2aWNvbkZv
clBhZ2VVUklBbmRXYWl0VW50aWxSZWFkeShjb25zdCBjaGFyKiBwYWdlVVJJKQogICAgIHsKKyAg
ICAgICAgbV9lcnJvci5jbGVhcigpOworICAgICAgICBpZiAobV9mYXZpY29uKSB7CisgICAgICAg
ICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9mYXZpY29uKTsKKyAgICAgICAgICAgIG1fZmF2
aWNvbiA9IDA7CisgICAgICAgIH0KICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRh
YmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRl
eHQpOwogICAgICAgICB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihkYXRhYmFz
ZSwgcGFnZVVSSSwgMCwgZ2V0RmF2aWNvbkNhbGxiYWNrLCB0aGlzKTsKICAgICAgICAgZ19tYWlu
X2xvb3BfcnVuKG1fbWFpbkxvb3ApOwpAQCAtMTAyLDcgKzExMSw2IEBAIHNlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBh
dGgsIEdIYXNoCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc291
cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogCiAgICAgY2hh
ciogY29udGVudHM7CiAgICAgZ3NpemUgbGVuZ3RoOwpAQCAtMTE4LDEzICsxMjYsMTMgQEAgc2Vy
dmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29u
c3QgY2hhciogcGF0aCwgR0hhc2gKICAgICAgICAgbGVuZ3RoID0gc3RybGVuKGNvbnRlbnRzKTsK
ICAgICB9CiAKKyAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRV
U19PSyk7CiAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHksIFNPVVBfTUVNT1JZX1RBS0UsIGNvbnRlbnRzLCBsZW5ndGgpOwogICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0U2V0RGlyZWN0b3J5KEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7Ci0gICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVj
dG9yeSh0ZXN0LT5tX3dlYkNvbnRleHQsIGtUZW1wRGlyZWN0b3J5KTsKICAgICBnX2Fzc2VydF9j
bXBzdHIoa1RlbXBEaXJlY3RvcnksID09LCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25f
ZGF0YWJhc2VfZGlyZWN0b3J5KHRlc3QtPm1fd2ViQ29udGV4dCkpOwogfQogCkBAIC0xNDIsMzAg
KzE1MCwyOSBAQCBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNvbihGYXZpY29uRGF0YWJhc2VUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFdlIG5lZWQgdG8gbG9hZCB0aGUgcGFnZSBm
aXJzdCB0byBlbnN1cmUgdGhlIGljb24gZGF0YSB3aWxsIGJlCiAgICAgLy8gaW4gdGhlIGRhdGFi
YXNlIGluIGNhc2UgdGhlcmUncyBhbiBhc3NvY2lhdGVkIGZhdmljb24uCiAgICAgdGVzdC0+bG9h
ZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKLSAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAgIC8vIENoZWNrIHRoZSBXZWJLaXRGYXZpY29uRGF0
YWJhc2U6Omljb24tcmVhZHkgc2lnbmFsLgotICAgIHRlc3QtPm1faWNvblJlYWR5U2lnbmFsUmVj
ZWl2ZWQgPSBmYWxzZTsKLSAgICB0ZXN0LT5hc2tGb3JJY29uQW5kV2FpdFVudGlsUmVhZHkoKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxGYXZpY29uQ2hhbmdlZCgpOwogICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1faWNvblJlYWR5U2lnbmFsUmVjZWl2ZWQpOwogCiAgICAgLy8gQ2hlY2sgdGhlIEFQSSByZXRy
aWV2aW5nIGEgdmFsaWQgZmF2aWNvbi4KLSAgICB0ZXN0LT5hc2tBbmRXYWl0Rm9yRmF2aWNvbihr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT5tX2ljb25SZWFk
eVNpZ25hbFJlY2VpdmVkID0gZmFsc2U7CisgICAgdGVzdC0+Z2V0RmF2aWNvbkZvclBhZ2VVUklB
bmRXYWl0VW50aWxSZWFkeShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAg
ICBnX2Fzc2VydCh0ZXN0LT5tX2Zhdmljb24pOwogICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Vycm9y
KTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9pY29uUmVhZHlTaWduYWxSZWNlaXZlZCk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHdpZHRoIGFuZCBoZWlnaHQgbWF0Y2ggdGhvc2UgZnJvbSBibGFuay5p
Y28gKDE2eDE2IGZhdmljb24pLgogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aCh0ZXN0LT5tX2Zhdmljb24pLCA9PSwgMTYpOwogICAgIGdfYXNzZXJ0X2Nt
cGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQodGVzdC0+bV9mYXZpY29uKSwgPT0s
IDE2KTsKLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kodGVzdC0+bV9mYXZpY29uKTsKIAogICAg
IC8vIENoZWNrIHRoZSBBUEkgcmV0cmlldmluZyBhbiBpbnZhbGlkIGZhdmljb24uCiAgICAgdGVz
dC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbm9mYXZpY29uIikuZGF0YSgpKTsK
LSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxG
YXZpY29uQ2hhbmdlZCgpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2ljb25SZWFkeVNpZ25hbFJl
Y2VpdmVkKTsKIAotICAgIHRlc3QtPmFza0FuZFdhaXRGb3JGYXZpY29uKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9ub2Zhdmljb24vIikuZGF0YSgpKTsKKyAgICB0ZXN0LT5nZXRGYXZpY29uRm9y
UGFnZVVSSUFuZFdhaXRVbnRpbFJlYWR5KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9ub2Zhdmlj
b24vIikuZGF0YSgpKTsKICAgICBnX2Fzc2VydCghdGVzdC0+bV9mYXZpY29uKTsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX2Vycm9yICYmICh0ZXN0LT5tX2Vycm9yLT5jb2RlICYgV0VCS0lUX0ZBVklD
T05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1RfRk9VTkQpKTsKKyAgICBnX2Fzc2VydCh0ZXN0
LT5tX2Vycm9yKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9pY29uUmVhZHlTaWduYWxSZWNlaXZl
ZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uVVJJKEZhdmljb25EYXRhYmFzZVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xODMsMTcgKzE5MCwxMyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0Zhdmljb24oRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBnX2Fzc2VydCghaWNvbkZyb21XZWJWaWV3KTsKIAogICAgIHRlc3QtPmxvYWRV
Ukkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7Ci0gICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7Ci0KLSAgICB0ZXN0LT5tX2Zhdmljb25Ob3RpZmljYXRpb25SZWNl
aXZlZCA9IGZhbHNlOwotICAgIHRlc3QtPmFza0Zvckljb25BbmRXYWl0VW50aWxSZWFkeSgpOwor
ICAgIHRlc3QtPndhaXRVbnRpbEZhdmljb25DaGFuZ2VkKCk7CiAgICAgZ19hc3NlcnQodGVzdC0+
bV9mYXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQpOwogCiAgICAgaWNvbkZyb21XZWJWaWV3ID0g
d2Via2l0X3dlYl92aWV3X2dldF9mYXZpY29uKHRlc3QtPm1fd2ViVmlldyk7CiAgICAgZ19hc3Nl
cnQoaWNvbkZyb21XZWJWaWV3KTsKLSAgICBnX2Fzc2VydChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChpY29uRnJvbVdlYlZpZXcpID4gMCk7Ci0gICAgZ19hc3NlcnQoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfaGVpZ2h0KGljb25Gcm9tV2ViVmlldykgPiAwKTsKLSAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3koaWNvbkZyb21XZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKGljb25Gcm9tV2ViVmlldyksID09LCAxNik7CisgICAg
Z19hc3NlcnRfY21wdWludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoaWNvbkZyb21X
ZWJWaWV3KSwgPT0sIDE2KTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQo=
</data>
<flag name="review"
          id="179331"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>