<?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>58401</bug_id>
          
          <creation_ts>2011-04-12 17:19:50 -0700</creation_ts>
          <short_desc>Enable folder drag-n-drop when using a &quot;webkitdirectory&quot; file input</short_desc>
          <delta_ts>2011-06-20 14:36:09 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Gregg">johnnyg</reporter>
          <assigned_to name="John Gregg">johnnyg</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384537</commentid>
    <comment_count>0</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-12 17:19:50 -0700</bug_when>
    <thetext>Enable folder drag-n-drop when using a &quot;webkitdirectory&quot; file input</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384560</commentid>
    <comment_count>1</comment_count>
      <attachid>89318</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-12 17:37:52 -0700</bug_when>
    <thetext>Created attachment 89318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384687</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-12 22:50:10 -0700</bug_when>
    <thetext>This is confusing. I can drag and drop folders onto webkitdirectory inputs perfectly fine in Safari 5. What does this patch enable?

+    virtual void enumerateDirectory(const WTF::String&amp;, PassRefPtr&lt;WebCore::FileChooser&gt;);

This almost certainly shouldn&apos;t be a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384697</commentid>
    <comment_count>3</comment_count>
      <attachid>89318</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-04-12 23:16:52 -0700</bug_when>
    <thetext>Comment on attachment 89318
Patch

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

&gt; Source/WebKit/chromium/public/WebViewClient.h:175
&gt; +    virtual bool enumerateDirectory(const WebString&amp; path,

enumerateChosenDirectory might be a better name here.  you want to convey the fact
that only chosen directories may be enumerated, right?  any reason not to name it
like this?

this function shouldn&apos;t live in the &quot;editing&quot; section of WebViewClient.  it might be
nice to group it with runFileChooser, since the two functions are related.  however,
that lives in a section for &quot;dialogs&quot; :(  maybe put this in the &quot;misc&quot; section nearby
the queryIconForFiles method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384977</commentid>
    <comment_count>4</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-13 10:14:37 -0700</bug_when>
    <thetext>Alexey: You can always drag a directory onto the input, but what happens is that you get a single File with path = that directory.  On a webkitdirectory input in Chromium, where DIRECTORY_UPLOAD is enabled, that&apos;s inconsistent with what happens when you select the directory through the selection dialog, where the directory is enumerated and you get a list of all the Files with the webkitRelativePath attribute.  This patch makes drag-n-drop consistent with selecting a directory through the dialog, by doing the equivalent enumeration.

&gt; +    virtual void enumerateDirectory(const WTF::String&amp;, PassRefPtr&lt;WebCore::FileChooser&gt;);
&gt; This almost certainly shouldn&apos;t be a PassRefPtr.

Can you clarify?  It&apos;s the same pattern as runOpenPanel().

Darin: I will rearrange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384991</commentid>
    <comment_count>5</comment_count>
      <attachid>89400</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-13 10:40:19 -0700</bug_when>
    <thetext>Created attachment 89400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385005</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-13 10:57:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Alexey: You can always drag a directory onto the input, but what happens is that you get a single File with path = that directory.

That&apos;s a requirement of HTML5. &quot;Unless the multiple attribute is set, there must be no more than one file in the list of selected files.&quot;

Was webkitdirectory discussed on appropriate mailing lists? There are many ways one could upload a directory, for example, it can be archived as a .zip file. Is there a spec for webkitdirectory that I could read to figure out what the idea behind it is?

&gt; &gt; +    virtual void enumerateDirectory(const WTF::String&amp;, PassRefPtr&lt;WebCore::FileChooser&gt;);
&gt; &gt; This almost certainly shouldn&apos;t be a PassRefPtr.
&gt; 
&gt; Can you clarify?  It&apos;s the same pattern as runOpenPanel().

PassRefPtr should only be used when passing ownership, and neither enumerateDirectory() nor runOpenPanel() pass FileChooser ownership. See e.g. RenderFileUploadControl::click() - it passes m_fileChooser, obviously keeping ownership for itself.

So, runOpenPanel() should be changed to take a raw pointer (or a reference if the argument can&apos;t be null).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385020</commentid>
    <comment_count>7</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-13 11:12:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Alexey: You can always drag a directory onto the input, but what happens is that you get a single File with path = that directory.
&gt; 
&gt; That&apos;s a requirement of HTML5. &quot;Unless the multiple attribute is set, there must be no more than one file in the list of selected files.&quot;
&gt; 
&gt; Was webkitdirectory discussed on appropriate mailing lists? There are many ways one could upload a directory, for example, it can be archived as a .zip file. Is there a spec for webkitdirectory that I could read to figure out what the idea behind it is?

It was discussed at some length about a year ago -- indeed there were many options proposed, but the   conclusion was to proceed with an experimental implementation.  There is no official spec, but the behavior is as described in the original proposal.  Regarding the semantics of multiple, I would think &quot;directory&quot; (aka &quot;webkitdirectory&quot;) implies &quot;multiple&quot;.

[http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-April/025764.html]

&gt; 
&gt; &gt; &gt; +    virtual void enumerateDirectory(const WTF::String&amp;, PassRefPtr&lt;WebCore::FileChooser&gt;);
&gt; &gt; &gt; This almost certainly shouldn&apos;t be a PassRefPtr.
&gt; &gt; 
&gt; &gt; Can you clarify?  It&apos;s the same pattern as runOpenPanel().
&gt; 
&gt; PassRefPtr should only be used when passing ownership, and neither enumerateDirectory() nor runOpenPanel() pass FileChooser ownership. See e.g. RenderFileUploadControl::click() - it passes m_fileChooser, obviously keeping ownership for itself.
&gt; 
&gt; So, runOpenPanel() should be changed to take a raw pointer (or a reference if the argument can&apos;t be null).

Makes sense.  I will address this in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385085</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-13 11:51:14 -0700</bug_when>
    <thetext>Thanks, I&apos;ve read through the e-mail thread now.

This is not the right place to discuss it, but since there is no other discussion going on anywhere at the moment, I&apos;ll dump my concerns here.

With this proposal, there will be separate &quot;multiple&quot; and &quot;directory&quot; file input modifications, and they will be limited in different ways. Users will be able to upload multiple arbitrary files with the first variety, and they&apos;ll only be able to upload a single full directory with the second. I don&apos;t see how users could possibly ever learn the difference, or what the use case for allowing only the latter is.

Well, there is a use case for only uploading full directories, and that&apos;s OS X document bundles, which look like normal files to users. Safari already handles that case by creating a .zip archive on upload, so there is no need for new attributes for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385126</commentid>
    <comment_count>9</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-13 12:16:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Thanks, I&apos;ve read through the e-mail thread now.
&gt; 
&gt; This is not the right place to discuss it, but since there is no other discussion going on anywhere at the moment, I&apos;ll dump my concerns here.

I&apos;ll respond to your concerns, but I agree it would be more appropriate to address the concerns elsewhere, perhaps in the context of evaluating the experiment for something spec&apos;d and permanent.  My goal with this bug is to fix a clear deficiency of the experimental feature.

&gt; 
&gt; With this proposal, there will be separate &quot;multiple&quot; and &quot;directory&quot; file input modifications, and they will be limited in different ways. Users will be able to upload multiple arbitrary files with the first variety, and they&apos;ll only be able to upload a single full directory with the second. I don&apos;t see how users could possibly ever learn the difference, or what the use case for allowing only the latter is.

This is true, it is up to the web application to use the right control and present it in a clear way.  That&apos;s a limitation of file inputs and the traditional UI that browsers use to present them (the multiple attribute is also not apparent to the user in Safari Chrome Firefox).  I agree with the comments on the original thread that better UI will help, such as an input that accepts anything dragged on it and has buttons for selecting and/or appending anything through dialogs.  One outcome could be that the webkitdirectory work is eventually rolled into that, but that is a larger undertaking.

&gt; 
&gt; Well, there is a use case for only uploading full directories, and that&apos;s OS X document bundles, which look like normal files to users. Safari already handles that case by creating a .zip archive on upload, so there is no need for new attributes for that.

The premise of this feature is that there are use cases for having a input with the semantics of representing a full directory.  Using a .zip file does not achieve that -- it has the semantics of a single file, and particularly doesn&apos;t expose the hierarchy to the web application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385167</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-13 13:06:16 -0700</bug_when>
    <thetext>&gt; My goal with this bug is to fix a clear deficiency of the experimental feature.

Given that the code in this patch is all under an #if, I don&apos;t have an objection to it.

Do you have a plan for the feature to either come out of experimental stage, or be dropped? With the information I have, I would consider dropping it soon - with the UI complications that it has, there doesn&apos;t seem to much chance of it being enabled by default or in many ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385192</commentid>
    <comment_count>11</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-13 13:53:56 -0700</bug_when>
    <thetext>Returning to a more immediate question, I took another look at the RefPtr usage and I think the use of PassRefPtr is preferable here.  

The enumeration is asynchronous, so in Chromium we put the FileChooser into a completion object (both here and in runOpenPanel) and we want to guarantee that FileChooser remains alive until completion, using a RefPtr&lt;FileChooser&gt;.  Putting a raw pointer in that completion object appears to risk a use-after-free bug if the RenderFileUploadControl is destroyed when the file chooser finishes.

Most other ports do runOpenPanel in a synchronous fashion -- WebKit2 is async, and puts the raw pointer in a completion object, maybe that&apos;s safe -- but the point is it&apos;s very hard to tell by code inspection.  It seems better to use refcounting in this case (given what FileChooser::disconnectClient() does to allow files to come back after the RenderFileUploadControl goes away).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385216</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-13 14:18:11 -0700</bug_when>
    <thetext>I disagree. The implementation may or may not temporarily protect the pointer, but this has nothing to do with the idea of taking ownership, or with the performance optimization from PassRefPtr.

It&apos;s certainly fine to use RefPtr in the completion object, but that doesn&apos;t mean that a function argument can be a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385242</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-13 14:32:27 -0700</bug_when>
    <thetext>Having PassRefPtr as an argument is very dangerous, and a common source of mistakes - see e.g. bug 58383 that was fixed today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385424</commentid>
    <comment_count>14</comment_count>
      <attachid>89511</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-13 18:18:01 -0700</bug_when>
    <thetext>Created attachment 89511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386678</commentid>
    <comment_count>15</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-15 09:38:11 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Having PassRefPtr as an argument is very dangerous, and a common source of mistakes - see e.g. bug 58383 that was fixed today.

Okay, I&apos;m fine with using your approach here.  Patch updated to not use PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387432</commentid>
    <comment_count>16</comment_count>
      <attachid>89511</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-04-17 15:24:58 -0700</bug_when>
    <thetext>Comment on attachment 89511
Patch

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

&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:117
&gt; +    return;

gratuitous return statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388351</commentid>
    <comment_count>17</comment_count>
      <attachid>90163</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-19 01:10:54 -0700</bug_when>
    <thetext>Created attachment 90163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388352</commentid>
    <comment_count>18</comment_count>
      <attachid>90163</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2011-04-19 01:12:02 -0700</bug_when>
    <thetext>Comment on attachment 90163
Patch

same patch with extra return; removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388389</commentid>
    <comment_count>19</comment_count>
      <attachid>90163</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-19 03:08:08 -0700</bug_when>
    <thetext>Comment on attachment 90163
Patch

Clearing flags on attachment: 90163

Committed r84238: &lt;http://trac.webkit.org/changeset/84238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388397</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-19 04:01:48 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 90163:

fast/canvas/webgl/gl-teximage.html bug 58766 (authors: kbr@google.com, mihaip@chromium.org, and zmo@google.com)
fast/dom/onerror-img.html bug 51019
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423914</commentid>
    <comment_count>21</comment_count>
      <attachid>89511</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-06-20 13:26:29 -0700</bug_when>
    <thetext>Comment on attachment 89511
Patch

A attachment obsoleted this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423960</commentid>
    <comment_count>22</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-06-20 14:36:09 -0700</bug_when>
    <thetext>Patch was committed in #19.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89318</attachid>
            <date>2011-04-12 17:37:52 -0700</date>
            <delta_ts>2011-04-13 10:40:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58401-20110412173751.patch</filename>
            <type>text/plain</type>
            <size>9452</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDQtMTIgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZvbGRlciBkcmFnLW4tZHJvcCB3aGVuIHVzaW5nIGEg
IndlYmtpdGRpcmVjdG9yeSIgZmlsZSBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDEKKworICAgICAgICBUaGlzIHVzZXMgYSBuZXcgQ2hy
b21lQ2xpZW50IEFQSSB0byBlbnVtZXJhdGUgdGhlIGRpcmVjdG9yeSBhbmQgCisgICAgICAgIHJl
dHVybiBhbGwgdGhlIGZpbGVzLCBhcyBpZiB0aGUgdXNlciBoYWQgc2VsZWN0ZWQgdGhhdCBkaXJl
Y3RvcnkKKyAgICAgICAgYnkgY2xpY2tpbmcgdGhlIGNvbnRyb2wgaW4gdGhlIG5vcm1hbCB3YXku
CisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUNocm9tZUNsaWVudDo6ZW51bWVyYXRlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmVudW1lcmF0ZURpcmVjdG9yeSk6
CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2w6OnJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5VXBsb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNlaXZlRHJvcHBlZEZp
bGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDoKKwog
MjAxMS0wNC0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAg
ICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIq
KSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gODM2MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw2ICs0
NDQsMTMgQEAgdm9pZCBDaHJvbWU6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvbgogICAgIG1f
Y2xpZW50LT5jYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoZnJhbWUs
IGdlb2xvY2F0aW9uKTsKIH0KIAorI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQordm9pZCBD
aHJvbWU6OmVudW1lcmF0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQoreworICAgIG1fY2xpZW50LT5lbnVtZXJhdGVEaXJl
Y3RvcnkocGF0aCwgZmlsZUNob29zZXIpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lOjpydW5P
cGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3Nl
cikKIHsKICAgICBtX2NsaWVudC0+cnVuT3BlblBhbmVsKGZyYW1lLCBmaWxlQ2hvb3Nlcik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOworI2lmIEVOQUJMRShESVJFQ1RPUllfVVBM
T0FEKQorICAgICAgICB2b2lkIGVudW1lcmF0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBQYXNz
UmVmUHRyPEZpbGVDaG9vc2VyPik7CisjZW5kaWYKIAogICAgICAgICB2b2lkIGRpc3BhdGNoVmll
d3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gODM2MDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiAr
MjI0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJl
cXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2
aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmls
ZUNob29zZXIqKSA9IDA7CiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAgICAgICAg
Ly8gQXN5Y2hyb25vdXMgcmVxdWVzdCB0byBlbnVtZXJhdGUgYWxsIGZpbGVzIGluIGEgZGlyZWN0
b3J5LgorICAgICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CisjZW5kaWYKKwogICAgICAgICAvLyBO
b3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBjaGFuZ2VkLiBUaGlz
IGZ1bmN0aW9uCiAgICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50bHksIHNvIGhhbmRs
aW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVE
aWRDaGFuZ2UoY29uc3QgTm9kZSopID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkocmV2aXNpb24gODM2MDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDEzIEBAIGJvb2wgUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OmFsbG93c0RpcmUKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwogICAgIHJldHVybiBpbnB1dC0+ZmFz
dEhhc0F0dHJpYnV0ZSh3ZWJraXRkaXJlY3RvcnlBdHRyKTsKIH0KKwordm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKQoreworICAgIGlmIChDaHJvbWUqIGNocm9tZVBvaW50ZXIgPSBjaHJv
bWUoKSkKKyAgICAgICAgY2hyb21lUG9pbnRlci0+ZW51bWVyYXRlRGlyZWN0b3J5KHBhdGhzWzBd
LCBtX2ZpbGVDaG9vc2VyKTsKKyAgICByZXR1cm47Cit9CiAjZW5kaWYKIAogU3RyaW5nIFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjphY2NlcHRUeXBlcygpCkBAIC0zMDQsNiArMzExLDEzIEBAIFZp
c2libGVQb3NpdGlvbiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDoKIAogdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cmVjZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpCiB7CisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgaWYgKGFsbG93c0Rp
cmVjdG9yeVVwbG9hZCgpKSB7CisgICAgICAgIHJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5VXBsb2Fk
KHBhdGhzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKGFsbG93
c011bHRpcGxlRmlsZXMoKSkKICAgICAgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMocGF0
aHMpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCShyZXZpc2lvbiA4MzYwMikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzKCk7
CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiAgICAgYm9vbCBhbGxvd3NEaXJlY3RvcnlV
cGxvYWQoKTsKKyAgICB2b2lkIHJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5VXBsb2FkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKICAgICBTdHJpbmcgYWNjZXB0VHlwZXMoKTsKICAgICB2
b2lkIGNob29zZUljb25Gb3JGaWxlcyhGaWxlQ2hvb3NlciosIGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODM2NzIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIwIEBACisyMDExLTA0LTEyICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBmb2xk
ZXIgZHJhZy1uLWRyb3Agd2hlbiB1c2luZyBhICJ3ZWJraXRkaXJlY3RvcnkiIGZpbGUgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDAxCisK
KyAgICAgICAgVGhpcyB1c2VzIGEgbmV3IENocm9tZUNsaWVudCBBUEkgdG8gZW51bWVyYXRlIHRo
ZSBkaXJlY3RvcnkgYW5kIAorICAgICAgICByZXR1cm4gYWxsIHRoZSBmaWxlcywgYXMgaWYgdGhl
IHVzZXIgaGFkIHNlbGVjdGVkIHRoYXQgZGlyZWN0b3J5CisgICAgICAgIGJ5IGNsaWNraW5nIHRo
ZSBjb250cm9sIGluIHRoZSBub3JtYWwgd2F5LgorCisgICAgICAgICogcHVibGljL1dlYlZpZXdD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZW51bWVyYXRlRGlyZWN0
b3J5KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudEltcGw6OmVudW1lcmF0ZURpcmVjdG9yeSk6CisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMS0wNC0xMiAgSmlhbiBMaSAgPGppYW5saUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgzNjQ5LgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2
aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2ICsxNjgsMTIgQEAgcHVibGljOgogICAgIC8v
IGluZGljYXRpbmcgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24gc2hvdWxkIGJlIHN1cHByZXNzZWQu
CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIC8vIFRoaXMgbWV0aG9kIGVudW1lcmF0ZXMgYWxsIHRoZSBmaWxlcyBp
biB0aGUgcGF0aC4gSXQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgIC8vIGFuZCBhc3luY2hyb25v
dXNseSBpbnZva2VzIHRoZSBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24gd2l0aCBhbGwgdGhlCisg
ICAgLy8gZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gUmV0dXJucyBmYWxzZSBpZiB0aGUgV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uCisgICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQuCisgICAgdmly
dHVhbCBib29sIGVudW1lcmF0ZURpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24q
KSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRGlhbG9ncyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA4MzYwMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDIyIEBAIHZvaWQgQ2hyb21lQ2xpZW50
SW1wbDo6Y2hvb3NlSWNvbkZvckZpbGUKICAgICAgICAgaWNvbkNvbXBsZXRpb24tPmRpZExvYWRJ
Y29uKFdlYkRhdGEoKSk7CiB9CiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKK3ZvaWQg
Q2hyb21lQ2xpZW50SW1wbDo6ZW51bWVyYXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIpCit7CisgICAgV2ViVmlld0NsaWVu
dCogY2xpZW50ID0gbV93ZWJWaWV3LT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbCogY2hvb3NlckNv
bXBsZXRpb24gPQorICAgICAgICBuZXcgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbChmaWxl
Q2hvb3Nlcik7CisKKyAgICAvLyBJZiB0aGUgZW51bWVyYXRpb24gY2FuJ3QgaGFwcGVuLCBjYWxs
IHRoZSBjYWxsYmFjayB3aXRoIGFuIGVtcHR5IGxpc3QuCisgICAgaWYgKCFjbGllbnQtPmVudW1l
cmF0ZURpcmVjdG9yeShwYXRoLCBjaG9vc2VyQ29tcGxldGlvbikpCisgICAgICAgIGNob29zZXJD
b21wbGV0aW9uLT5kaWRDaG9vc2VGaWxlKFdlYlZlY3RvcjxXZWJTdHJpbmc+KCkpOworfQorI2Vu
ZGlmCisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIq
IHBvcHVwQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRSZWN0JiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaGFuZGxlRXh0ZXJuYWxseSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiAr
MTM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlv
biopOwogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29z
ZXIqKTsKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAgICB2aXJ0dWFsIHZvaWQgZW51
bWVyYXRlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
aWxlQ2hvb3Nlcj4pOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6Ok5vZGUqKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89400</attachid>
            <date>2011-04-13 10:40:19 -0700</date>
            <delta_ts>2011-04-13 18:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58401-20110413104018.patch</filename>
            <type>text/plain</type>
            <size>9562</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDQtMTIgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZvbGRlciBkcmFnLW4tZHJvcCB3aGVuIHVzaW5nIGEg
IndlYmtpdGRpcmVjdG9yeSIgZmlsZSBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDEKKworICAgICAgICBUaGlzIHVzZXMgYSBuZXcgQ2hy
b21lQ2xpZW50IEFQSSB0byBlbnVtZXJhdGUgdGhlIGRpcmVjdG9yeSBhbmQgCisgICAgICAgIHJl
dHVybiBhbGwgdGhlIGZpbGVzLCBhcyBpZiB0aGUgdXNlciBoYWQgc2VsZWN0ZWQgdGhhdCBkaXJl
Y3RvcnkKKyAgICAgICAgYnkgY2xpY2tpbmcgdGhlIGNvbnRyb2wgaW4gdGhlIG5vcm1hbCB3YXku
CisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUNocm9tZUNsaWVudDo6ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmVudW1lcmF0ZUNob3Nl
bkRpcmVjdG9yeSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5
VXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNl
aXZlRHJvcHBlZEZpbGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuaDoKKwogMjAxMS0wNC0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZ
X1VQTE9BRCkKKyAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0KKyNlbmRpZgorCiAgICAgdmly
dHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRmlsZUNob29zZXIqKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2
aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0NCw2ICs0NDQsMTMgQEAgdm9pZCBDaHJvbWU6OmNhbmNlbEdlb2xvY2F0aW9u
UGVybWlzc2lvbgogICAgIG1fY2xpZW50LT5jYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Rm9yRnJhbWUoZnJhbWUsIGdlb2xvY2F0aW9uKTsKIH0KIAorI2lmIEVOQUJMRShESVJFQ1RP
UllfVVBMT0FEKQordm9pZCBDaHJvbWU6OmVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQoreworICAg
IG1fY2xpZW50LT5lbnVtZXJhdGVDaG9zZW5EaXJlY3RvcnkocGF0aCwgZmlsZUNob29zZXIpOwor
fQorI2VuZGlmCisKIHZvaWQgQ2hyb21lOjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNz
UmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikKIHsKICAgICBtX2NsaWVudC0+cnVuT3Bl
blBhbmVsKGZyYW1lLCBmaWxlQ2hvb3Nlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlz
aW9uIDgzNjAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDYgKzE1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAg
dm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3Nl
ciopOworI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQorICAgICAgICB2b2lkIGVudW1lcmF0
ZUNob3NlbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7
CisjZW5kaWYKIAogICAgICAgICB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29u
IGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKSA9IDA7CiAKKyNp
ZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAgICAgICAgLy8gQXN5Y2hyb25vdXMgcmVxdWVz
dCB0byBlbnVtZXJhdGUgYWxsIGZpbGVzIGluIGEgZGlyZWN0b3J5IGNob3NlbiBieSB0aGUgdXNl
ci4KKyAgICAgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgPSAwOworI2VuZGlmCisKICAgICAgICAg
Ly8gTm90aWZpY2F0aW9uIHRoYXQgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCBoYXMgY2hhbmdlZC4g
VGhpcyBmdW5jdGlvbgogICAgICAgICAvLyB3aWxsIGJlIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBo
YW5kbGluZyBzaG91bGQgYmUgdmVyeSBmYXN0LgogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0
YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHJldmlzaW9uIDgz
NjAyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9s
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSwxMyBAQCBib29sIFJlbmRlckZpbGVV
cGxvYWRDb250cm9sOjphbGxvd3NEaXJlCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKICAgICByZXR1cm4gaW5wdXQt
PmZhc3RIYXNBdHRyaWJ1dGUod2Via2l0ZGlyZWN0b3J5QXR0cik7CiB9CisKK3ZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5VXBsb2FkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocykKK3sKKyAgICBpZiAoQ2hyb21lKiBjaHJvbWVQb2ludGVyID0g
Y2hyb21lKCkpCisgICAgICAgIGNocm9tZVBvaW50ZXItPmVudW1lcmF0ZUNob3NlbkRpcmVjdG9y
eShwYXRoc1swXSwgbV9maWxlQ2hvb3Nlcik7CisgICAgcmV0dXJuOworfQogI2VuZGlmCiAKIFN0
cmluZyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6YWNjZXB0VHlwZXMoKQpAQCAtMzA0LDYgKzMx
MSwxMyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6CiAKIHZvaWQg
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKQogeworI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQorICAgIGlm
IChhbGxvd3NEaXJlY3RvcnlVcGxvYWQoKSkgeworICAgICAgICByZWNlaXZlRHJvcEZvckRpcmVj
dG9yeVVwbG9hZChwYXRocyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAg
IGlmIChhbGxvd3NNdWx0aXBsZUZpbGVzKCkpCiAgICAgICAgIG1fZmlsZUNob29zZXItPmNob29z
ZUZpbGVzKHBhdGhzKTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAkocmV2aXNpb24gODM2MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxsb3dzTXVsdGlw
bGVGaWxlcygpOwogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogICAgIGJvb2wgYWxsb3dz
RGlyZWN0b3J5VXBsb2FkKCk7CisgICAgdm9pZCByZWNlaXZlRHJvcEZvckRpcmVjdG9yeVVwbG9h
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAgICAgU3RyaW5nIGFjY2VwdFR5cGVz
KCk7CiAgICAgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoRmlsZUNob29zZXIqLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgz
NjcyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNC0xMiAgSm9obiBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGUgZm9sZGVyIGRyYWctbi1kcm9wIHdoZW4gdXNpbmcgYSAid2Via2l0ZGlyZWN0b3J5IiBm
aWxlIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODQwMQorCisgICAgICAgIFRoaXMgdXNlcyBhIG5ldyBDaHJvbWVDbGllbnQgQVBJIHRvIGVu
dW1lcmF0ZSB0aGUgZGlyZWN0b3J5IGFuZCAKKyAgICAgICAgcmV0dXJuIGFsbCB0aGUgZmlsZXMs
IGFzIGlmIHRoZSB1c2VyIGhhZCBzZWxlY3RlZCB0aGF0IGRpcmVjdG9yeQorICAgICAgICBieSBj
bGlja2luZyB0aGUgY29udHJvbCBpbiB0aGUgbm9ybWFsIHdheS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmVudW1l
cmF0ZUNob3NlbkRpcmVjdG9yeSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnVtZXJhdGVDaG9zZW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisKIDIwMTEtMDQtMTIg
IEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI4MzY0OS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIy
LDEyIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgaWNvbiBpcyBzaG93biBpbiBhIGZpbGUgdXBsb2Fk
IGNvbnRyb2wuCiAgICAgdmlydHVhbCBib29sIHF1ZXJ5SWNvbkZvckZpbGVzKGNvbnN0IFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JiBmaWxlbmFtZXMsIFdlYkljb25Mb2FkaW5nQ29tcGxldGlvbiopIHsg
cmV0dXJuIGZhbHNlOyB9CiAKKyAgICAvLyBUaGlzIG1ldGhvZCBlbnVtZXJhdGVzIGFsbCB0aGUg
ZmlsZXMgaW4gdGhlIHBhdGguIEl0IHJldHVybnMgaW1tZWRpYXRlbHkKKyAgICAvLyBhbmQgYXN5
bmNocm9ub3VzbHkgaW52b2tlcyB0aGUgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uIHdpdGggYWxs
IHRoZQorICAgIC8vIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIFJldHVybnMgZmFsc2UgaWYgdGhl
IFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbgorICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLgor
ICAgIHZpcnR1YWwgYm9vbCBlbnVtZXJhdGVDaG9zZW5EaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5n
JiBwYXRoLCBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24qKSB7IHJldHVybiBmYWxzZTsgfQorCiAK
ICAgICAvLyBOYXZpZ2F0aW9uYWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4Myw2ICs2ODMsMjIgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpjaG9vc2VJY29uRm9yRmls
ZQogICAgICAgICBpY29uQ29tcGxldGlvbi0+ZGlkTG9hZEljb24oV2ViRGF0YSgpKTsKIH0KIAor
I2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjplbnVt
ZXJhdGVDaG9zZW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPiBmaWxlQ2hvb3NlcikKK3sKKyAgICBXZWJWaWV3Q2xpZW50KiBjbGllbnQgPSBtX3dl
YlZpZXctPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKiBjaG9vc2VyQ29tcGxldGlvbiA9CisgICAg
ICAgIG5ldyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKGZpbGVDaG9vc2VyKTsKKworICAg
IC8vIElmIHRoZSBlbnVtZXJhdGlvbiBjYW4ndCBoYXBwZW4sIGNhbGwgdGhlIGNhbGxiYWNrIHdp
dGggYW4gZW1wdHkgbGlzdC4KKyAgICBpZiAoIWNsaWVudC0+ZW51bWVyYXRlQ2hvc2VuRGlyZWN0
b3J5KHBhdGgsIGNob29zZXJDb21wbGV0aW9uKSkKKyAgICAgICAgY2hvb3NlckNvbXBsZXRpb24t
PmRpZENob29zZUZpbGUoV2ViVmVjdG9yPFdlYlN0cmluZz4oKSk7Cit9CisjZW5kaWYKKwogdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjpwb3B1cE9wZW5lZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250
YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVF
eHRlcm5hbGx5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkocmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOworI2lm
IEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQorICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVDaG9z
ZW5EaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVD
aG9vc2VyPik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNv
cmU6OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6Tm9kZSopOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89511</attachid>
            <date>2011-04-13 18:18:01 -0700</date>
            <delta_ts>2011-06-20 13:26:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58401-20110413181800.patch</filename>
            <type>text/plain</type>
            <size>9502</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDQtMTIgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZvbGRlciBkcmFnLW4tZHJvcCB3aGVuIHVzaW5nIGEg
IndlYmtpdGRpcmVjdG9yeSIgZmlsZSBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDEKKworICAgICAgICBUaGlzIHVzZXMgYSBuZXcgQ2hy
b21lQ2xpZW50IEFQSSB0byBlbnVtZXJhdGUgdGhlIGRpcmVjdG9yeSBhbmQgCisgICAgICAgIHJl
dHVybiBhbGwgdGhlIGZpbGVzLCBhcyBpZiB0aGUgdXNlciBoYWQgc2VsZWN0ZWQgdGhhdCBkaXJl
Y3RvcnkKKyAgICAgICAgYnkgY2xpY2tpbmcgdGhlIGNvbnRyb2wgaW4gdGhlIG5vcm1hbCB3YXku
CisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUNocm9tZUNsaWVudDo6ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmVudW1lcmF0ZUNob3Nl
bkRpcmVjdG9yeSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnJlY2VpdmVEcm9wRm9yRGlyZWN0b3J5
VXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNl
aXZlRHJvcHBlZEZpbGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuaDoKKwogMjAxMS0wNC0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZ
X1VQTE9BRCkKKyAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYsIEZpbGVDaG9vc2VyKikgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBy
dW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVD
aG9vc2VyKikgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDgzNjAy
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NDQsNiArNDQ0LDEzIEBAIHZvaWQgQ2hyb21lOjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb24K
ICAgICBtX2NsaWVudC0+Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1l
KGZyYW1lLCBnZW9sb2NhdGlvbik7CiB9CiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
K3ZvaWQgQ2hyb21lOjplbnVtZXJhdGVDaG9zZW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
LCBGaWxlQ2hvb3NlciogZmlsZUNob29zZXIpCit7CisgICAgbV9jbGllbnQtPmVudW1lcmF0ZUNo
b3NlbkRpcmVjdG9yeShwYXRoLCBmaWxlQ2hvb3Nlcik7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJv
bWU6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IGZp
bGVDaG9vc2VyKQogewogICAgIG1fY2xpZW50LT5ydW5PcGVuUGFuZWwoZnJhbWUsIGZpbGVDaG9v
c2VyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2b2lkIGNob29zZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CisjaWYgRU5BQkxFKERJUkVD
VE9SWV9VUExPQUQpCisgICAgICAgIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYsIEZpbGVDaG9vc2VyKik7CisjZW5kaWYKIAogICAgICAgICB2b2lkIGRpc3BhdGNo
Vmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gODM2MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQs
NiArMjI0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQXN5bmNocm9ub3Vz
IHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
RmlsZUNob29zZXIqKSA9IDA7CiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAgICAg
ICAgLy8gQXN5Y2hyb25vdXMgcmVxdWVzdCB0byBlbnVtZXJhdGUgYWxsIGZpbGVzIGluIGEgZGly
ZWN0b3J5IGNob3NlbiBieSB0aGUgdXNlci4KKyAgICAgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0
ZUNob3NlbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBGaWxlQ2hvb3NlciopID0gMDsKKyNlbmRp
ZgorCiAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IHRoZSBnaXZlbiBmb3JtIGVsZW1lbnQg
aGFzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24KICAgICAgICAgLy8gd2lsbCBiZSBjYWxsZWQgZnJl
cXVlbnRseSwgc28gaGFuZGxpbmcgc2hvdWxkIGJlIHZlcnkgZmFzdC4KICAgICAgICAgdmlydHVh
bCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgPSAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
CShyZXZpc2lvbiA4MzYwMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksMTMgQEAgYm9v
bCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6YWxsb3dzRGlyZQogICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CiAgICAg
cmV0dXJuIGlucHV0LT5mYXN0SGFzQXR0cmlidXRlKHdlYmtpdGRpcmVjdG9yeUF0dHIpOwogfQor
Cit2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNlaXZlRHJvcEZvckRpcmVjdG9yeVVw
bG9hZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit7CisgICAgaWYgKENocm9tZSogY2hy
b21lUG9pbnRlciA9IGNocm9tZSgpKQorICAgICAgICBjaHJvbWVQb2ludGVyLT5lbnVtZXJhdGVD
aG9zZW5EaXJlY3RvcnkocGF0aHNbMF0sIG1fZmlsZUNob29zZXIuZ2V0KCkpOworICAgIHJldHVy
bjsKK30KICNlbmRpZgogCiBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmFjY2VwdFR5
cGVzKCkKQEAgLTMwNCw2ICszMTEsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sOgogCiB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNlaXZlRHJvcHBl
ZEZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKKyNpZiBFTkFCTEUoRElSRUNU
T1JZX1VQTE9BRCkKKyAgICBpZiAoYWxsb3dzRGlyZWN0b3J5VXBsb2FkKCkpIHsKKyAgICAgICAg
cmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQocGF0aHMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKICAgICBpZiAoYWxsb3dzTXVsdGlwbGVGaWxlcygpKQogICAgICAgICBt
X2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhwYXRocyk7CiAgICAgZWxzZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJKHJl
dmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxv
YWRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGFsbG93c011bHRpcGxlRmlsZXMoKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9B
RCkKICAgICBib29sIGFsbG93c0RpcmVjdG9yeVVwbG9hZCgpOworICAgIHZvaWQgcmVjZWl2ZURy
b3BGb3JEaXJlY3RvcnlVcGxvYWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogICAg
IFN0cmluZyBhY2NlcHRUeXBlcygpOwogICAgIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKEZpbGVD
aG9vc2VyKiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA4MzY3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQtMTIgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZvbGRlciBkcmFnLW4tZHJvcCB3aGVuIHVzaW5nIGEg
IndlYmtpdGRpcmVjdG9yeSIgZmlsZSBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDEKKworICAgICAgICBUaGlzIHVzZXMgYSBuZXcgQ2hy
b21lQ2xpZW50IEFQSSB0byBlbnVtZXJhdGUgdGhlIGRpcmVjdG9yeSBhbmQgCisgICAgICAgIHJl
dHVybiBhbGwgdGhlIGZpbGVzLCBhcyBpZiB0aGUgdXNlciBoYWQgc2VsZWN0ZWQgdGhhdCBkaXJl
Y3RvcnkKKyAgICAgICAgYnkgY2xpY2tpbmcgdGhlIGNvbnRyb2wgaW4gdGhlIG5vcm1hbCB3YXku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50OjplbnVtZXJhdGVDaG9zZW5EaXJlY3RvcnkpOgorICAgICAgICAqIHNyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6
ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1w
bC5oOgorCiAyMDExLTA0LTEyICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODM2NDkuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCShyZXZpc2lvbiA4MzYwMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDYgKzEyMiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGljb24gaXMgc2hv
d24gaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sLgogICAgIHZpcnR1YWwgYm9vbCBxdWVyeUljb25G
b3JGaWxlcyhjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsZW5hbWVzLCBXZWJJY29uTG9h
ZGluZ0NvbXBsZXRpb24qKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgLy8gVGhpcyBtZXRob2Qg
ZW51bWVyYXRlcyBhbGwgdGhlIGZpbGVzIGluIHRoZSBwYXRoLiBJdCByZXR1cm5zIGltbWVkaWF0
ZWx5CisgICAgLy8gYW5kIGFzeW5jaHJvbm91c2x5IGludm9rZXMgdGhlIFdlYkZpbGVDaG9vc2Vy
Q29tcGxldGlvbiB3aXRoIGFsbCB0aGUKKyAgICAvLyBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24KKyAgICAvLyB3aWxs
IG5ldmVyIGJlIGNhbGxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgZW51bWVyYXRlQ2hvc2VuRGlyZWN0
b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uKikgeyBy
ZXR1cm4gZmFsc2U7IH0KKwogCiAgICAgLy8gTmF2aWdhdGlvbmFsIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4
MzYwMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDIyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6Y2hvb3NlSWNvbkZvckZpbGUKICAgICAgICAgaWNvbkNvbXBsZXRpb24tPmRpZExvYWRJY29u
KFdlYkRhdGEoKSk7CiB9CiAKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKK3ZvaWQgQ2hy
b21lQ2xpZW50SW1wbDo6ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKQoreworICAgIFdlYlZpZXdDbGllbnQqIGNsaWVu
dCA9IG1fd2ViVmlldy0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwqIGNob29zZXJDb21wbGV0aW9u
ID0KKyAgICAgICAgbmV3IFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoZmlsZUNob29zZXIp
OworCisgICAgLy8gSWYgdGhlIGVudW1lcmF0aW9uIGNhbid0IGhhcHBlbiwgY2FsbCB0aGUgY2Fs
bGJhY2sgd2l0aCBhbiBlbXB0eSBsaXN0LgorICAgIGlmICghY2xpZW50LT5lbnVtZXJhdGVDaG9z
ZW5EaXJlY3RvcnkocGF0aCwgY2hvb3NlckNvbXBsZXRpb24pKQorICAgICAgICBjaG9vc2VyQ29t
cGxldGlvbi0+ZGlkQ2hvb3NlRmlsZShXZWJWZWN0b3I8V2ViU3RyaW5nPigpKTsKK30KKyNlbmRp
ZgorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnBvcHVwT3BlbmVkKFBvcHVwQ29udGFpbmVyKiBw
b3B1cENvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SW50UmVjdCYgYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGhhbmRsZUV4dGVybmFsbHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA4MzYwMikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEz
OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24q
KTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVDaG9vc2Vy
Kik7CisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgdmlydHVhbCB2b2lkIGVudW1l
cmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OkZpbGVDaG9v
c2VyKik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6Tm9kZSopOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90163</attachid>
            <date>2011-04-19 01:10:54 -0700</date>
            <delta_ts>2011-04-19 03:08:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58401-20110419101052.patch</filename>
            <type>text/plain</type>
            <size>9485</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDQtMTIgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlz
aGVyLgorCisgICAgICAgIEVuYWJsZSBmb2xkZXIgZHJhZy1uLWRyb3Agd2hlbiB1c2luZyBhICJ3
ZWJraXRkaXJlY3RvcnkiIGZpbGUgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4NDAxCisKKyAgICAgICAgVGhpcyB1c2VzIGEgbmV3IENocm9t
ZUNsaWVudCBBUEkgdG8gZW51bWVyYXRlIHRoZSBkaXJlY3RvcnkgYW5kIAorICAgICAgICByZXR1
cm4gYWxsIHRoZSBmaWxlcywgYXMgaWYgdGhlIHVzZXIgaGFkIHNlbGVjdGVkIHRoYXQgZGlyZWN0
b3J5CisgICAgICAgIGJ5IGNsaWNraW5nIHRoZSBjb250cm9sIGluIHRoZSBub3JtYWwgd2F5Lgor
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1w
dHlDaHJvbWVDbGllbnQ6OmVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjplbnVtZXJhdGVDaG9zZW5E
aXJlY3RvcnkpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNlaXZlRHJvcEZvckRpcmVjdG9yeVVw
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cmVjZWl2
ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmg6CisKIDIwMTEtMDQtMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCShyZXZpc2lvbiA4MzYwMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5MiwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRl
cigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERJUkVDVE9SWV9V
UExPQUQpCisgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmLCBGaWxlQ2hvb3NlciopIHsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVu
T3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hv
b3NlciopIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA4MzYwMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0
LDYgKzQ0NCwxMyBAQCB2b2lkIENocm9tZTo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uCiAg
ICAgbV9jbGllbnQtPmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShm
cmFtZSwgZ2VvbG9jYXRpb24pOwogfQogCisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCit2
b2lkIENocm9tZTo6ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKQoreworICAgIG1fY2xpZW50LT5lbnVtZXJhdGVDaG9z
ZW5EaXJlY3RvcnkocGF0aCwgZmlsZUNob29zZXIpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21l
OjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxl
Q2hvb3NlcikKIHsKICAgICBtX2NsaWVudC0+cnVuT3BlblBhbmVsKGZyYW1lLCBmaWxlQ2hvb3Nl
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBh
c3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOworI2lmIEVOQUJMRShESVJFQ1RP
UllfVVBMT0FEKQorICAgICAgICB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBT
dHJpbmcmLCBGaWxlQ2hvb3NlciopOworI2VuZGlmCiAKICAgICAgICAgdm9pZCBkaXNwYXRjaFZp
ZXdwb3J0RGF0YURpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDgzNjAyKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDYg
KzIyNCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEFzeW5jaHJvbm91cyBy
ZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4KICAgICAgICAg
dmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZp
bGVDaG9vc2VyKikgPSAwOwogCisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgICAg
IC8vIEFzeWNocm9ub3VzIHJlcXVlc3QgdG8gZW51bWVyYXRlIGFsbCBmaWxlcyBpbiBhIGRpcmVj
dG9yeSBjaG9zZW4gYnkgdGhlIHVzZXIuCisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVD
aG9zZW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgRmlsZUNob29zZXIqKSA9IDA7CisjZW5kaWYK
KwogICAgICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhh
cyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCiAgICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1
ZW50bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAko
cmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDEyIEBAIGJvb2wg
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmFsbG93c0RpcmUKICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwogICAgIHJl
dHVybiBpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRkaXJlY3RvcnlBdHRyKTsKIH0KKwor
dm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxv
YWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQoreworICAgIGlmIChDaHJvbWUqIGNocm9t
ZVBvaW50ZXIgPSBjaHJvbWUoKSkKKyAgICAgICAgY2hyb21lUG9pbnRlci0+ZW51bWVyYXRlQ2hv
c2VuRGlyZWN0b3J5KHBhdGhzWzBdLCBtX2ZpbGVDaG9vc2VyLmdldCgpKTsKK30KICNlbmRpZgog
CiBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmFjY2VwdFR5cGVzKCkKQEAgLTMwNCw2
ICszMTAsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOgogCiB2
b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocykKIHsKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAg
ICBpZiAoYWxsb3dzRGlyZWN0b3J5VXBsb2FkKCkpIHsKKyAgICAgICAgcmVjZWl2ZURyb3BGb3JE
aXJlY3RvcnlVcGxvYWQocGF0aHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAoYWxsb3dzTXVsdGlwbGVGaWxlcygpKQogICAgICAgICBtX2ZpbGVDaG9vc2VyLT5j
aG9vc2VGaWxlcyhwYXRocyk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJKHJldmlzaW9uIDgzNjAyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG93c011
bHRpcGxlRmlsZXMoKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKICAgICBib29sIGFs
bG93c0RpcmVjdG9yeVVwbG9hZCgpOworICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlV
cGxvYWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogICAgIFN0cmluZyBhY2NlcHRU
eXBlcygpOwogICAgIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKEZpbGVDaG9vc2VyKiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA4MzY3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQtMTIgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAg
IEVuYWJsZSBmb2xkZXIgZHJhZy1uLWRyb3Agd2hlbiB1c2luZyBhICJ3ZWJraXRkaXJlY3Rvcnki
IGZpbGUgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4NDAxCisKKyAgICAgICAgVGhpcyB1c2VzIGEgbmV3IENocm9tZUNsaWVudCBBUEkgdG8g
ZW51bWVyYXRlIHRoZSBkaXJlY3RvcnkgYW5kIAorICAgICAgICByZXR1cm4gYWxsIHRoZSBmaWxl
cywgYXMgaWYgdGhlIHVzZXIgaGFkIHNlbGVjdGVkIHRoYXQgZGlyZWN0b3J5CisgICAgICAgIGJ5
IGNsaWNraW5nIHRoZSBjb250cm9sIGluIHRoZSBub3JtYWwgd2F5LgorCisgICAgICAgICogcHVi
bGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZW51
bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmVudW1lcmF0ZUNob3NlbkRp
cmVjdG9yeSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMS0wNC0x
MiAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjgzNjQ5LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlld0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsx
MjIsMTIgQEAgcHVibGljOgogICAgIC8vIFRoZSBpY29uIGlzIHNob3duIGluIGEgZmlsZSB1cGxv
YWQgY29udHJvbC4KICAgICB2aXJ0dWFsIGJvb2wgcXVlcnlJY29uRm9yRmlsZXMoY29uc3QgV2Vi
VmVjdG9yPFdlYlN0cmluZz4mIGZpbGVuYW1lcywgV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uKikg
eyByZXR1cm4gZmFsc2U7IH0KIAorICAgIC8vIFRoaXMgbWV0aG9kIGVudW1lcmF0ZXMgYWxsIHRo
ZSBmaWxlcyBpbiB0aGUgcGF0aC4gSXQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgIC8vIGFuZCBh
c3luY2hyb25vdXNseSBpbnZva2VzIHRoZSBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24gd2l0aCBh
bGwgdGhlCisgICAgLy8gZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gUmV0dXJucyBmYWxzZSBpZiB0
aGUgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uCisgICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQu
CisgICAgdmlydHVhbCBib29sIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBXZWJTdHJp
bmcmIHBhdGgsIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopIHsgcmV0dXJuIGZhbHNlOyB9CisK
IAogICAgIC8vIE5hdmlnYXRpb25hbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjgzLDYgKzY4MywyMiBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmNob29zZUljb25Gb3JG
aWxlCiAgICAgICAgIGljb25Db21wbGV0aW9uLT5kaWRMb2FkSWNvbihXZWJEYXRhKCkpOwogfQog
CisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCit2b2lkIENocm9tZUNsaWVudEltcGw6OmVu
dW1lcmF0ZUNob3NlbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVDaG9vc2VyKiBm
aWxlQ2hvb3NlcikKK3sKKyAgICBXZWJWaWV3Q2xpZW50KiBjbGllbnQgPSBtX3dlYlZpZXctPmNs
aWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJGaWxl
Q2hvb3NlckNvbXBsZXRpb25JbXBsKiBjaG9vc2VyQ29tcGxldGlvbiA9CisgICAgICAgIG5ldyBX
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKGZpbGVDaG9vc2VyKTsKKworICAgIC8vIElmIHRo
ZSBlbnVtZXJhdGlvbiBjYW4ndCBoYXBwZW4sIGNhbGwgdGhlIGNhbGxiYWNrIHdpdGggYW4gZW1w
dHkgbGlzdC4KKyAgICBpZiAoIWNsaWVudC0+ZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KHBhdGgs
IGNob29zZXJDb21wbGV0aW9uKSkKKyAgICAgICAgY2hvb3NlckNvbXBsZXRpb24tPmRpZENob29z
ZUZpbGUoV2ViVmVjdG9yPFdlYlN0cmluZz4oKSk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVD
bGllbnRJbXBsOjpwb3B1cE9wZW5lZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGJvdW5kcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbGx5
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
aAkocmV2aXNpb24gODM2MDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rmls
ZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOworI2lmIEVOQUJMRShE
SVJFQ1RPUllfVVBMT0FEKQorICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVDaG9zZW5EaXJlY3Rv
cnkoY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOworI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2
aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>