<?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>61155</bug_id>
          
          <creation_ts>2011-05-19 16:27:46 -0700</creation_ts>
          <short_desc>[fileapi] Add a File::createWithName method to avoid obfuscated filename leakage from FileEntry.file() method</short_desc>
          <delta_ts>2011-05-23 13:47:24 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ericu</cc>
    
    <cc>jianli</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>406730</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 16:27:46 -0700</bug_when>
    <thetext>[fileapi] Add a File::createWithName method to avoid obfuscated filename leakage from FileEntry.file() method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406732</commentid>
    <comment_count>1</comment_count>
      <attachid>94143</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 16:32:39 -0700</bug_when>
    <thetext>Created attachment 94143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406735</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 16:34:58 -0700</bug_when>
    <thetext>This patch also happens to ensure the MIME type of the File is chosen based on FileEntry.name instead of the obfuscated name (covered by the same tests).

I tested this locally in chrome with --use-obfuscated-file-system --allow-file-access-from-files --unlimited-quota-for-files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406742</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-05-19 16:44:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This patch also happens to ensure the MIME type of the File is chosen based on FileEntry.name instead of the obfuscated name (covered by the same tests).
&gt; 
&gt; I tested this locally in chrome with --use-obfuscated-file-system --allow-file-access-from-files --unlimited-quota-for-files

Can you add a layout test for this?

Also, for the new File constructor:
   File(const String&amp; path, const String&amp; name);
it seems that you allow name to be empty. This seems to be unnatural.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406744</commentid>
    <comment_count>4</comment_count>
      <attachid>94143</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 16:44:39 -0700</bug_when>
    <thetext>Comment on attachment 94143
Patch

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

&gt; Source/WebCore/fileapi/File.cpp:39
&gt; +    const String&amp; nameForMIMEType = !name.isEmpty() ? name : path;

I thought about making name a required argument and always using it to figure out the MIME type but was a little worried that this could change behavior on some platform where pathGetFileName() did something surprising (basically, anything other than pulling out the last path component).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406746</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 16:47:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; This patch also happens to ensure the MIME type of the File is chosen based on FileEntry.name instead of the obfuscated name (covered by the same tests).
&gt; &gt; 
&gt; &gt; I tested this locally in chrome with --use-obfuscated-file-system --allow-file-access-from-files --unlimited-quota-for-files
&gt; 
&gt; Can you add a layout test for this?

You mean with the Chromium flag set?  I&apos;ll defer to Eric about whether that&apos;s a good idea at this point.  Is there some standard way to say &quot;run this test with the following Chromium flag set?&quot;  I&apos;m not aware of one.

&gt; Also, for the new File constructor:
&gt;    File(const String&amp; path, const String&amp; name);
&gt; it seems that you allow name to be empty. This seems to be unnatural.

Not sure what you mean by &quot;allow&quot;.  The existing code doesn&apos;t care of m_path is empty, nor if m_name ends up empty.  What did you think the code should do if name is empty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406749</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 16:56:42 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; This patch also happens to ensure the MIME type of the File is chosen based on FileEntry.name instead of the obfuscated name (covered by the same tests).
&gt; &gt; &gt; 
&gt; &gt; &gt; I tested this locally in chrome with --use-obfuscated-file-system --allow-file-access-from-files --unlimited-quota-for-files
&gt; &gt; 
&gt; &gt; Can you add a layout test for this?
&gt; 
&gt; You mean with the Chromium flag set?  I&apos;ll defer to Eric about whether that&apos;s a good idea at this point.  Is there some standard way to say &quot;run this test with the following Chromium flag set?&quot;  I&apos;m not aware of one.

Also, I should say that --use-obfuscated-file-system will be the default very soon (by M13), at which point the existing tests will provide this coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406751</commentid>
    <comment_count>7</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-05-19 16:58:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; This patch also happens to ensure the MIME type of the File is chosen based on FileEntry.name instead of the obfuscated name (covered by the same tests).
&gt; &gt; 
&gt; &gt; I tested this locally in chrome with --use-obfuscated-file-system --allow-file-access-from-files --unlimited-quota-for-files
&gt; 
&gt; Can you add a layout test for this?

There&apos;s no way to test this via layout test yet, as this constructor isn&apos;t exposed to javascript.  When Chromium switches to using obfuscated filesystem paths [next week], the existing layout test fast/filesystem/file-from-file-entry.html will test this code [in fact, it&apos;s why we&apos;re adding this before making the Chromium change].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406756</commentid>
    <comment_count>8</comment_count>
      <attachid>94143</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-05-19 17:06:24 -0700</bug_when>
    <thetext>Comment on attachment 94143
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        Added an optional name argument to ensure MIME type lookup uses the

I think you can move your comment &quot;Added an ...&quot; to be immediately following &quot;: &quot; of the previous line.

&gt; Source/WebCore/ChangeLog:24
&gt; +        as it now needs to mutate the created File before returning it.

Not sure I understand your comment about &quot;out-of-lined&quot; and &quot;mutate&quot;.  Probably just the first half sentence seems to be enough.

&gt; Source/WebCore/fileapi/File.h:56
&gt; +    static PassRefPtr&lt;File&gt; createWithName(const String&amp; path, const String&amp; name)

Please add the comment saying that |name| is the filename that is observed by the user, that might be different from the real filename embedded in |path|.

Or maybe even better, consider rename |name| to something like |observedName|.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406771</commentid>
    <comment_count>9</comment_count>
      <attachid>94150</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 17:35:26 -0700</bug_when>
    <thetext>Created attachment 94150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406772</commentid>
    <comment_count>10</comment_count>
      <attachid>94143</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-19 17:35:33 -0700</bug_when>
    <thetext>Comment on attachment 94143
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:20
&gt;&gt; +        Added an optional name argument to ensure MIME type lookup uses the
&gt; 
&gt; I think you can move your comment &quot;Added an ...&quot; to be immediately following &quot;: &quot; of the previous line.

Done, and same elsewhere.

&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt; +        as it now needs to mutate the created File before returning it.
&gt; 
&gt; Not sure I understand your comment about &quot;out-of-lined&quot; and &quot;mutate&quot;.  Probably just the first half sentence seems to be enough.

Done.

&gt;&gt; Source/WebCore/fileapi/File.h:56
&gt;&gt; +    static PassRefPtr&lt;File&gt; createWithName(const String&amp; path, const String&amp; name)
&gt; 
&gt; Please add the comment saying that |name| is the filename that is observed by the user, that might be different from the real filename embedded in |path|.
&gt; 
&gt; Or maybe even better, consider rename |name| to something like |observedName|.

I&apos;d rather the comment in this case, actually, otherwise the comment is specifying how it will be called, which is really up to the callers.  See if you like my comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406814</commentid>
    <comment_count>11</comment_count>
      <attachid>94150</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-05-19 18:52:56 -0700</bug_when>
    <thetext>Comment on attachment 94150
Patch

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

&gt; Source/WebCore/fileapi/File.cpp:39
&gt; +    const String&amp; nameForMIMEType = !name.isEmpty() ? name : path;

Simpler to say:
  static PassOwnPtr&lt;BlobData&gt; createBlobDataForFile(const String&amp; path, const String&amp; nameForMIMEType = String())
  {
      ...
      if (nameForMIMEType.isEmpty())
          nameForMIMEType = path;

&gt; Source/WebCore/fileapi/File.h:56
&gt; +    // Create a file whose name, for purposes of MIME type and access through |File.name|, does not match its path.

How about something like:
  // Create a file with different name exposed to the user (File.type and File.name in DOM), that is different from the one provided in the path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408040</commentid>
    <comment_count>12</comment_count>
      <attachid>94438</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-23 10:28:32 -0700</bug_when>
    <thetext>Created attachment 94438
Update comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408045</commentid>
    <comment_count>13</comment_count>
      <attachid>94150</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-23 10:31:00 -0700</bug_when>
    <thetext>Comment on attachment 94150
Patch

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

&gt;&gt; Source/WebCore/fileapi/File.cpp:39
&gt;&gt; +    const String&amp; nameForMIMEType = !name.isEmpty() ? name : path;
&gt; 
&gt; Simpler to say:
&gt;   static PassOwnPtr&lt;BlobData&gt; createBlobDataForFile(const String&amp; path, const String&amp; nameForMIMEType = String())
&gt;   {
&gt;       ...
&gt;       if (nameForMIMEType.isEmpty())
&gt;           nameForMIMEType = path;

No can do: references can&apos;t be re-bound.  I _could_ do

static PassOwnPtr&lt;BlobData&gt; createBlobDataForFile(const String&amp; path, String nameForMIMEType = String())
{
    ...
    if (nameForMIMEType.isEmpty())
          nameForMIMEType = path;
}

But that incurs unnecessary copies.

&gt;&gt; Source/WebCore/fileapi/File.h:56
&gt;&gt; +    // Create a file whose name, for purposes of MIME type and access through |File.name|, does not match its path.
&gt; 
&gt; How about something like:
&gt;   // Create a file with different name exposed to the user (File.type and File.name in DOM), that is different from the one provided in the path.

Done.  Now reads: 

// Create a file with a name exposed to the author (via File.name and associated DOM properties) that differs from the one provided in the path.

(switched &quot;user&quot; for &quot;author&quot;, avoided direct mention of MIME type)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408057</commentid>
    <comment_count>14</comment_count>
      <attachid>94438</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-05-23 10:43:14 -0700</bug_when>
    <thetext>Comment on attachment 94438
Update comment

Looks good except one minor comment. Please fix it before you land the patch.

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        (WebCore::DOMFileSystem::createFile): Updated to call createWithName()

Please end the sentence with period and do the same thing for other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408080</commentid>
    <comment_count>15</comment_count>
      <attachid>94445</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-05-23 11:00:55 -0700</bug_when>
    <thetext>Created attachment 94445
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408241</commentid>
    <comment_count>16</comment_count>
      <attachid>94445</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-23 13:47:17 -0700</bug_when>
    <thetext>Comment on attachment 94445
Patch for landing

Clearing flags on attachment: 94445

Committed r87095: &lt;http://trac.webkit.org/changeset/87095&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408242</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-23 13:47:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94143</attachid>
            <date>2011-05-19 16:32:39 -0700</date>
            <delta_ts>2011-05-19 17:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61155-20110519163238.patch</filename>
            <type>text/plain</type>
            <size>8819</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY3MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMjdmZDNiN2VlNWRkMzI5
NTQzODA1NjAwZDlkZDM0Y2ZlZTg0MjFjLi5mMjAyNTc5NWM3YWM4NWY0YWYzOWU3NjlkOTRhNWY0
NmViYzdkNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDUtMTkgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2ZpbGVhcGldIEFkZCBhIEZpbGU6OmNyZWF0ZVdpdGhOYW1l
IG1ldGhvZCB0byBhdm9pZCBvYmZ1c2NhdGVkIGZpbGVuYW1lIGxlYWthZ2UgZnJvbSBGaWxlRW50
cnkuZmlsZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjExNTUKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOiBmYXN0
L2ZpbGVzeXN0ZW0vZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1l
bnRyeS5odG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRtbAorCisgICAgICAgICog
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW06OmNyZWF0ZUZpbGUpOgorICAgICAgICBVcGRhdGVkIHRvIGNhbGwgY3JlYXRlV2l0aE5hbWUo
KTsKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKToKKyAgICAgICAgVXBkYXRlZCB0
byBjYWxsIGNyZWF0ZVdpdGhOYW1lKCk7CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJsb2JEYXRhRm9yRmlsZSk6CisgICAgICAgIEFkZGVkIGFu
IG9wdGlvbmFsIG5hbWUgYXJndW1lbnQgdG8gZW5zdXJlIE1JTUUgdHlwZSBsb29rdXAgdXNlcyB0
aGUKKyAgICAgICAgcGFzc2VkLWluIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVh
dGVXaXRoUmVsYXRpdmVQYXRoKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGNyZWF0ZSgpIGZvciBj
b25zaXN0ZW5jeSB3aXRoIG5ldyBtZXRob2QgYW5kIG91dC1vZi1saW5lZAorICAgICAgICBhcyBp
dCBub3cgbmVlZHMgdG8gbXV0YXRlIHRoZSBjcmVhdGVkIEZpbGUgYmVmb3JlIHJldHVybmluZyBp
dC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkvRmls
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aE5hbWUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpzZXRGaWxlTGlzdCk6CisgICAgICAgIFVwZGF0ZWQgdGhlIHNpbmdsZSBjYWxsZXIgb2YgRmls
ZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aCgpLgorCiAyMDExLTA1LTE3ICBKZXJlbXkgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggY2ViMmNhMzQw
NmQ0NWQ1ZDNhZmM0ODczYWZhMDJiM2FmNGY5MDIyNi4uNzM0MmFjZDBlNWRmZjZhMDE0ZjYzOTY0
NWFkMDJiY2Y5YTJjZGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwCkBAIC0xMTcsOSArMTE3LDkgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgR2V0UGF0aENhbGxi
YWNrIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxHZXRQYXRoQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGaWxlQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhDYWxsYmFjaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHBhdGgs
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEdldFBhdGhDYWxsYmFjayhmaWxlc3lzdGVtLCBwYXRoLCBuYW1lLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVh
ZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCkBAIC0xMjcsMjAgKzEyNywy
MiBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG1fcGF0aCA9IG1ldGFkYXRhLnBsYXRmb3JtUGF0aDsKIAotICAgICAg
ICBtX2ZpbGVzeXN0ZW0tPnNjaGVkdWxlQ2FsbGJhY2sobV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFz
ZSgpLCBGaWxlOjpjcmVhdGUobV9wYXRoKSk7CisgICAgICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1
bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGU6OmNyZWF0ZVdpdGhO
YW1lKG1fcGF0aCwgbV9uYW1lKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldFBhdGhDYWxs
YmFjayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIEdldFBhdGhDYWxsYmFjayhQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgICAgIDogRmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKICAgICAgICAgLCBtX2ZpbGVzeXN0
ZW0oZmlsZXN5c3RlbSkKICAgICAgICAgLCBtX3BhdGgocGF0aCkKKyAgICAgICAgLCBtX25hbWUo
bmFtZSkKICAgICAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAg
ewogICAgIH0KIAogICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CiAgICAg
U3RyaW5nIG1fcGF0aDsKKyAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZlB0cjxGaWxlQ2FsbGJh
Y2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogfTsKIApAQCAtMTUwLDcgKzE1Miw3IEBAIHZvaWQgRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1Jl
ZlB0cjxGaWxlQ2FsbGJhCiB7CiAgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxl
U3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsKIAot
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBHZXRQYXRo
Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZv
cm1QYXRoLCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIGZpbGVF
bnRyeS0+bmFtZSgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW1TeW5jLmNwcAppbmRleCAwZDI2YmI2MjI0NGFkZDhkNzQ5NTQ1ZGFiMzUzZDYzNDBlMWZjNjE3
Li5lZTZhM2FjNDAwNGMwMzYyYzdmZDU1N2U4N2NjOGQ2ZjlkNWY2NzFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBA
IFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmls
ZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFCiAgICAgfQogICAgIGlmICghcmVzdWx0LT5tX3BhdGgu
aXNFbXB0eSgpKQogICAgICAgICBwbGF0Zm9ybVBhdGggPSByZXN1bHQtPm1fcGF0aDsKLSAgICBy
ZXR1cm4gRmlsZTo6Y3JlYXRlKHBsYXRmb3JtUGF0aCk7CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0
ZVdpdGhOYW1lKHBsYXRmb3JtUGF0aCwgZmlsZUVudHJ5LT5uYW1lKCkpOwogfQogCiBuYW1lc3Bh
Y2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggZGQ4MWY1YWQ2NTI1MDY0MDBlMjRjM2Ex
NzA4NzAwMWQ2Nzc1NTJjYi4uMDQ0OGIwYTYxYzFkMDY0Nzk2NTUwNTkwNjA5Njk0MDEyNjhkZjY1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0zMywxMiArMzMsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRh
dGFGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRh
PiBjcmVhdGVCbG9iRGF0YUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWUgPSBTdHJpbmcoKSkKIHsKICAgICBTdHJpbmcgdHlwZTsKLSAgICBpbnQgaW5kZXggPSBw
YXRoLnJldmVyc2VGaW5kKCcuJyk7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lRm9yTUlNRVR5cGUg
PSAhbmFtZS5pc0VtcHR5KCkgPyBuYW1lIDogcGF0aDsKKyAgICBpbnQgaW5kZXggPSBuYW1lRm9y
TUlNRVR5cGUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAg
IHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihwYXRoLnN1
YnN0cmluZyhpbmRleCArIDEpKTsKKyAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dE1JTUVUeXBlRm9yRXh0ZW5zaW9uKG5hbWVGb3JNSU1FVHlwZS5zdWJzdHJpbmcoaW5kZXggKyAx
KSk7CiAKICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgp
OwogICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZSh0eXBlKTsKQEAgLTQ2LDYgKzQ3LDE1IEBA
IHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBibG9iRGF0YS5yZWxlYXNlKCk7CiB9CiAKKyNpZiBF
TkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKK1Bhc3NSZWZQdHI8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0
aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQ
YXRoKQoreworICAgIFJlZlB0cjxGaWxlPiBmaWxlID0gYWRvcHRSZWYobmV3IEZpbGUocGF0aCkp
OworICAgIGZpbGUtPm1fcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoOworICAgIHJldHVybiBm
aWxlLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiBGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlKHBhdGgpLCAtMSkKICAgICAsIG1f
cGF0aChwYXRoKQpAQCAtNjAsMTMgKzcwLDEyIEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX25hbWUgPSBw
YXRoR2V0RmlsZU5hbWUocGF0aCk7CiB9CiAKLSNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
LUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYgcGF0
aCkKLSAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlKHBhdGgpLCAtMSkKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCitGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lKQorICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCwgbmFtZSks
IC0xKQogICAgICwgbV9wYXRoKHBhdGgpCi0gICAgLCBtX3JlbGF0aXZlUGF0aChyZWxhdGl2ZVBh
dGgpCisgICAgLCBtX25hbWUobmFtZSkKIHsKLSAgICBtX25hbWUgPSBwYXRoR2V0RmlsZU5hbWUo
cGF0aCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMjJiMDM1ZDFlNDE5
NWVlMTE3NmFlMGVjNzM4MWFlZDM5OTAyYzM0Li4zNGVlNGFlMjc5ZWE4MTcyM2VjZDIwNWZiMmFm
Njc5YWM5YjBjMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDksOSArNDksMTMgQEAgcHVi
bGljOgogICAgIH0KIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3Qg
U3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxh
dGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7
CisjZW5kaWYKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShyZWxhdGl2ZVBh
dGgsIHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIG5hbWUp
KTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzUsMTIgKzc5LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgCisKICAgICAvLyBGb3IgZGVz
ZXJpYWxpemF0aW9uLgogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBz
cmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKLSNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9B
RCkKLSAgICBGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcmIHBh
dGgpOworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fcGF0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGE0ZDFkZDM2NWJiM2U5NjdkZTIw
NWUzZDJkZmQ5MDUzNzgyM2M3NGUuLmU3ZGNkNWMxMmUxYWQ5ZTliN2YwNzJlYTgyZDFmNDAyYjA2
ZDc2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTc4LDcgKzE3
OCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhdGhzKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewog
ICAgICAgICAgICAgLy8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4
cG9zaW5nIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHNjcmlwdC4KICAgICAgICAgICAgIFN0cmluZyBy
ZWxhdGl2ZVBhdGggPSBwYXRoc1tpXS5zdWJzdHJpbmcoMSArIHJvb3RQYXRoLmxlbmd0aCgpKS5y
ZXBsYWNlKCdcXCcsICcvJyk7Ci0gICAgICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6
Y3JlYXRlKHJlbGF0aXZlUGF0aCwgcGF0aHNbaV0pKTsKKyAgICAgICAgICAgIG1fZmlsZUxpc3Qt
PmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKHBhdGhzW2ldLCByZWxhdGl2ZVBh
dGgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94150</attachid>
            <date>2011-05-19 17:35:26 -0700</date>
            <delta_ts>2011-05-23 10:31:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61155-20110519173525.patch</filename>
            <type>text/plain</type>
            <size>8761</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY3MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMjdmZDNiN2VlNWRkMzI5
NTQzODA1NjAwZDlkZDM0Y2ZlZTg0MjFjLi5mYTFjNDczNzdhNjM5OWM0ZjZmZDAwMDlhZDU1NjI1
NmZiNzk3Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTkgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2ZpbGVhcGldIEFkZCBhIEZpbGU6OmNyZWF0ZVdpdGhOYW1l
IG1ldGhvZCB0byBhdm9pZCBvYmZ1c2NhdGVkIGZpbGVuYW1lIGxlYWthZ2UgZnJvbSBGaWxlRW50
cnkuZmlsZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjExNTUKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOiBmYXN0
L2ZpbGVzeXN0ZW0vZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1l
bnRyeS5odG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRtbAorCisgICAgICAgICog
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW06OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgY3JlYXRlV2l0aE5hbWUoKQorICAgICAg
ICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgY3JlYXRlV2l0aE5h
bWUoKQorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCbG9iRGF0YUZvckZpbGUpOiBBZGRlZCBhbiBvcHRpb25hbCBuYW1lIGFyZ3VtZW50IHRvIGZp
eCBNSU1FIHR5cGUgbG9va3VwCisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKTogUmVuYW1lZCBmcm9tIGNyZWF0ZSgpIGZvciBjb25zaXN0ZW5jeSB3aXRoIG5l
dyBtZXRob2QKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aE5hbWUpOgorICAg
ICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpzZXRGaWxlTGlzdCk6IFVwZGF0ZWQgdGhlIHNpbmdsZSBjYWxsZXIgb2YgRmlsZTo6
Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aCgpCisKIDIwMTEtMDUtMTcgIEplcmVteSBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBjZWIyY2EzNDA2ZDQ1
ZDVkM2FmYzQ4NzNhZmEwMmIzYWY0ZjkwMjI2Li43MzQyYWNkMGU1ZGZmNmEwMTRmNjM5NjQ1YWQw
MmJjZjlhMmNkZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAK
QEAgLTExNyw5ICsxMTcsOSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBHZXRQYXRoQ2FsbGJhY2sg
OiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEdldFBhdGhDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRQYXRoQ2FsbGJhY2soZmlsZXN5c3RlbSwgcGF0aCwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHBhdGgsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0
YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTEyNywyMCArMTI3LDIyIEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbV9wYXRoID0gbWV0YWRhdGEucGxhdGZvcm1QYXRoOwogCi0gICAgICAgIG1f
ZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCks
IEZpbGU6OmNyZWF0ZShtX3BhdGgpKTsKKyAgICAgICAgbV9maWxlc3lzdGVtLT5zY2hlZHVsZUNh
bGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUo
bV9wYXRoLCBtX25hbWUpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR2V0UGF0aENhbGxiYWNr
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgR2V0UGF0aENhbGxiYWNrKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICAgICAgOiBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAgICAgICAsIG1fZmlsZXN5c3RlbShm
aWxlc3lzdGVtKQogICAgICAgICAsIG1fcGF0aChwYXRoKQorICAgICAgICAsIG1fbmFtZShuYW1l
KQogICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICB7CiAg
ICAgfQogCiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKICAgICBTdHJp
bmcgbV9wYXRoOworICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4g
bV9zdWNjZXNzQ2FsbGJhY2s7CiB9OwogCkBAIC0xNTAsNyArMTUyLDcgQEAgdm9pZCBET01GaWxl
U3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRy
PEZpbGVDYWxsYmEKIHsKICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0
ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwogCi0gICAg
bV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIEdldFBhdGhDYWxs
YmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBh
dGgsIEdldFBhdGhDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgZmlsZUVudHJ5
LT5uYW1lKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCmluZGV4IDBkMjZiYjYyMjQ0YWRkOGQ3NDk1NDVkYWIzNTNkNjM0MGUxZmM2MTcuLmVl
NmEzYWM0MDA0YzAzNjJjN2ZkNTU3ZTg3Y2M4ZDZmOWQ1ZjY3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUGFz
c1JlZlB0cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50
cnlTeW5jKiBmaWxlRW50cnksIEUKICAgICB9CiAgICAgaWYgKCFyZXN1bHQtPm1fcGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHBsYXRmb3JtUGF0aCA9IHJlc3VsdC0+bV9wYXRoOwotICAgIHJldHVy
biBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKTsKKyAgICByZXR1cm4gRmlsZTo6Y3JlYXRlV2l0
aE5hbWUocGxhdGZvcm1QYXRoLCBmaWxlRW50cnktPm5hbWUoKSk7CiB9CiAKIG5hbWVzcGFjZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBkZDgxZjVhZDY1MjUwNjQwMGUyNGMzYTE3MDg3
MDAxZDY3NzU1MmNiLi4wNDQ4YjBhNjFjMWQwNjQ3OTY1NTA1OTA2MDk2OTQwMTI2OGRmNjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZv
ckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNy
ZWF0ZUJsb2JEYXRhRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSA9IFN0cmluZygpKQogewogICAgIFN0cmluZyB0eXBlOwotICAgIGludCBpbmRleCA9IHBhdGgu
cmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWVGb3JNSU1FVHlwZSA9ICFu
YW1lLmlzRW1wdHkoKSA/IG5hbWUgOiBwYXRoOworICAgIGludCBpbmRleCA9IG5hbWVGb3JNSU1F
VHlwZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgdHlw
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKHBhdGguc3Vic3Ry
aW5nKGluZGV4ICsgMSkpOworICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JFeHRlbnNpb24obmFtZUZvck1JTUVUeXBlLnN1YnN0cmluZyhpbmRleCArIDEpKTsK
IAogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CiAg
ICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKHR5cGUpOwpAQCAtNDYsNiArNDcsMTUgQEAgc3Rh
dGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuIGJsb2JEYXRhLnJlbGVhc2UoKTsKIH0KIAorI2lmIEVOQUJM
RShESVJFQ1RPUllfVVBMT0FEKQorUGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgp
Cit7CisgICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7Cisg
ICAgZmlsZS0+bV9yZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVBhdGg7CisgICAgcmV0dXJuIGZpbGUu
cmVsZWFzZSgpOworfQorI2VuZGlmCisKIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCksIC0xKQogICAgICwgbV9wYXRo
KHBhdGgpCkBAIC02MCwxMyArNzAsMTIgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIG1fbmFtZSA9IHBhdGhH
ZXRGaWxlTmFtZShwYXRoKTsKIH0KIAotI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQotRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRoKQot
ICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCksIC0xKQorI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKK0ZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZShwYXRoLCBuYW1lKSwgLTEp
CiAgICAgLCBtX3BhdGgocGF0aCkKLSAgICAsIG1fcmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aCkK
KyAgICAsIG1fbmFtZShuYW1lKQogewotICAgIG1fbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRo
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IGQyMmIwMzVkMWU0MTk1ZWUx
MTc2YWUwZWM3MzgxYWVkMzk5MDJjMzQuLmVkOTQ0ZWY5ZjE2MWRlMGUyMjU3MzYyZjg2OWM0MDc2
NjQyOGVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC00OSw5ICs0OSwxNCBAQCBwdWJsaWM6
CiAgICAgfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJp
bmcmIHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZl
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIC8vIENyZWF0ZSBhIGZpbGUgd2hv
c2UgbmFtZSwgZm9yIHB1cnBvc2VzIG9mIE1JTUUgdHlwZSBhbmQgYWNjZXNzIHRocm91Z2ggfEZp
bGUubmFtZXwsIGRvZXMgbm90IG1hdGNoIGl0cyBwYXRoLgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZpbGU+IGNyZWF0ZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHJlbGF0aXZlUGF0
aCwgcGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSkp
OwogICAgIH0KICNlbmRpZgogCkBAIC03NSwxMiArODAsMTIgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICAKKwogICAgIC8vIEZvciBkZXNl
cmlhbGl6YXRpb24uCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNy
Y1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKIAotI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FE
KQotICAgIEZpbGUoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYgcGF0
aCk7CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggYTRkMWRkMzY1YmIzZTk2N2RlMjA1
ZTNkMmRmZDkwNTM3ODIzYzc0ZS4uZTdkY2Q1YzEyZTFhZDllOWI3ZjA3MmVhODJkMWY0MDJiMDZk
NzZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNzgsNyArMTc4
LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGF0aHMpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAg
ICAgICAgICAgICAvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZvcmUgZXhw
b3NpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gc2NyaXB0LgogICAgICAgICAgICAgU3RyaW5nIHJl
bGF0aXZlUGF0aCA9IHBhdGhzW2ldLnN1YnN0cmluZygxICsgcm9vdFBhdGgubGVuZ3RoKCkpLnJl
cGxhY2UoJ1xcJywgJy8nKTsKLSAgICAgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpj
cmVhdGUocmVsYXRpdmVQYXRoLCBwYXRoc1tpXSkpOworICAgICAgICAgICAgbV9maWxlTGlzdC0+
YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgocGF0aHNbaV0sIHJlbGF0aXZlUGF0
aCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94438</attachid>
            <date>2011-05-23 10:28:32 -0700</date>
            <delta_ts>2011-05-23 11:00:50 -0700</delta_ts>
            <desc>Update comment</desc>
            <filename>bug-61155-20110523102831.patch</filename>
            <type>text/plain</type>
            <size>8794</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY3MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMjdmZDNiN2VlNWRkMzI5
NTQzODA1NjAwZDlkZDM0Y2ZlZTg0MjFjLi5mYTFjNDczNzdhNjM5OWM0ZjZmZDAwMDlhZDU1NjI1
NmZiNzk3Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTkgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2ZpbGVhcGldIEFkZCBhIEZpbGU6OmNyZWF0ZVdpdGhOYW1l
IG1ldGhvZCB0byBhdm9pZCBvYmZ1c2NhdGVkIGZpbGVuYW1lIGxlYWthZ2UgZnJvbSBGaWxlRW50
cnkuZmlsZSgpIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjExNTUKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOiBmYXN0
L2ZpbGVzeXN0ZW0vZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1l
bnRyeS5odG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRtbAorCisgICAgICAgICog
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW06OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgY3JlYXRlV2l0aE5hbWUoKQorICAgICAg
ICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgY3JlYXRlV2l0aE5h
bWUoKQorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCbG9iRGF0YUZvckZpbGUpOiBBZGRlZCBhbiBvcHRpb25hbCBuYW1lIGFyZ3VtZW50IHRvIGZp
eCBNSU1FIHR5cGUgbG9va3VwCisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKTogUmVuYW1lZCBmcm9tIGNyZWF0ZSgpIGZvciBjb25zaXN0ZW5jeSB3aXRoIG5l
dyBtZXRob2QKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aE5hbWUpOgorICAg
ICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpzZXRGaWxlTGlzdCk6IFVwZGF0ZWQgdGhlIHNpbmdsZSBjYWxsZXIgb2YgRmlsZTo6
Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aCgpCisKIDIwMTEtMDUtMTcgIEplcmVteSBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBjZWIyY2EzNDA2ZDQ1
ZDVkM2FmYzQ4NzNhZmEwMmIzYWY0ZjkwMjI2Li43MzQyYWNkMGU1ZGZmNmEwMTRmNjM5NjQ1YWQw
MmJjZjlhMmNkZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAK
QEAgLTExNyw5ICsxMTcsOSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBHZXRQYXRoQ2FsbGJhY2sg
OiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEdldFBhdGhDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRQYXRoQ2FsbGJhY2soZmlsZXN5c3RlbSwgcGF0aCwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHBhdGgsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0
YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTEyNywyMCArMTI3LDIyIEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbV9wYXRoID0gbWV0YWRhdGEucGxhdGZvcm1QYXRoOwogCi0gICAgICAgIG1f
ZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCks
IEZpbGU6OmNyZWF0ZShtX3BhdGgpKTsKKyAgICAgICAgbV9maWxlc3lzdGVtLT5zY2hlZHVsZUNh
bGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUo
bV9wYXRoLCBtX25hbWUpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR2V0UGF0aENhbGxiYWNr
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgR2V0UGF0aENhbGxiYWNrKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICAgICAgOiBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAgICAgICAsIG1fZmlsZXN5c3RlbShm
aWxlc3lzdGVtKQogICAgICAgICAsIG1fcGF0aChwYXRoKQorICAgICAgICAsIG1fbmFtZShuYW1l
KQogICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICB7CiAg
ICAgfQogCiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKICAgICBTdHJp
bmcgbV9wYXRoOworICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4g
bV9zdWNjZXNzQ2FsbGJhY2s7CiB9OwogCkBAIC0xNTAsNyArMTUyLDcgQEAgdm9pZCBET01GaWxl
U3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRy
PEZpbGVDYWxsYmEKIHsKICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0
ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwogCi0gICAg
bV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIEdldFBhdGhDYWxs
YmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBh
dGgsIEdldFBhdGhDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgZmlsZUVudHJ5
LT5uYW1lKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCmluZGV4IDBkMjZiYjYyMjQ0YWRkOGQ3NDk1NDVkYWIzNTNkNjM0MGUxZmM2MTcuLmVl
NmEzYWM0MDA0YzAzNjJjN2ZkNTU3ZTg3Y2M4ZDZmOWQ1ZjY3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUGFz
c1JlZlB0cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50
cnlTeW5jKiBmaWxlRW50cnksIEUKICAgICB9CiAgICAgaWYgKCFyZXN1bHQtPm1fcGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHBsYXRmb3JtUGF0aCA9IHJlc3VsdC0+bV9wYXRoOwotICAgIHJldHVy
biBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKTsKKyAgICByZXR1cm4gRmlsZTo6Y3JlYXRlV2l0
aE5hbWUocGxhdGZvcm1QYXRoLCBmaWxlRW50cnktPm5hbWUoKSk7CiB9CiAKIG5hbWVzcGFjZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBkZDgxZjVhZDY1MjUwNjQwMGUyNGMzYTE3MDg3
MDAxZDY3NzU1MmNiLi4wNDQ4YjBhNjFjMWQwNjQ3OTY1NTA1OTA2MDk2OTQwMTI2OGRmNjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZv
ckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNy
ZWF0ZUJsb2JEYXRhRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSA9IFN0cmluZygpKQogewogICAgIFN0cmluZyB0eXBlOwotICAgIGludCBpbmRleCA9IHBhdGgu
cmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWVGb3JNSU1FVHlwZSA9ICFu
YW1lLmlzRW1wdHkoKSA/IG5hbWUgOiBwYXRoOworICAgIGludCBpbmRleCA9IG5hbWVGb3JNSU1F
VHlwZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgdHlw
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKHBhdGguc3Vic3Ry
aW5nKGluZGV4ICsgMSkpOworICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JFeHRlbnNpb24obmFtZUZvck1JTUVUeXBlLnN1YnN0cmluZyhpbmRleCArIDEpKTsK
IAogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CiAg
ICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKHR5cGUpOwpAQCAtNDYsNiArNDcsMTUgQEAgc3Rh
dGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuIGJsb2JEYXRhLnJlbGVhc2UoKTsKIH0KIAorI2lmIEVOQUJM
RShESVJFQ1RPUllfVVBMT0FEKQorUGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgp
Cit7CisgICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7Cisg
ICAgZmlsZS0+bV9yZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVBhdGg7CisgICAgcmV0dXJuIGZpbGUu
cmVsZWFzZSgpOworfQorI2VuZGlmCisKIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCksIC0xKQogICAgICwgbV9wYXRo
KHBhdGgpCkBAIC02MCwxMyArNzAsMTIgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIG1fbmFtZSA9IHBhdGhH
ZXRGaWxlTmFtZShwYXRoKTsKIH0KIAotI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQotRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRoKQot
ICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCksIC0xKQorI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKK0ZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZShwYXRoLCBuYW1lKSwgLTEp
CiAgICAgLCBtX3BhdGgocGF0aCkKLSAgICAsIG1fcmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aCkK
KyAgICAsIG1fbmFtZShuYW1lKQogewotICAgIG1fbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRo
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IGQyMmIwMzVkMWU0MTk1ZWUx
MTc2YWUwZWM3MzgxYWVkMzk5MDJjMzQuLjEzYTkxZmUzZTQxZjk1ZmI5YjIzYWNkNmIwZWViZGMx
NTQ0M2Q0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC00OSw5ICs0OSwxNCBAQCBwdWJsaWM6
CiAgICAgfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJp
bmcmIHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZl
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0
aCBhIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEgRmlsZS5uYW1lIGFuZCBhc3NvY2lh
dGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgb25lIHByb3ZpZGVkIGlu
IHRoZSBwYXRoLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHJlbGF0aXZlUGF0aCwgcGF0aCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSkpOwogICAgIH0KICNlbmRpZgogCkBAIC03
NSwxMiArODAsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoKTsKLSAgICAKKwogICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24uCiAgICAgRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBl
KTsKIAotI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQotICAgIEZpbGUoY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQorICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
I2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKaW5kZXggYTRkMWRkMzY1YmIzZTk2N2RlMjA1ZTNkMmRmZDkwNTM3ODIzYzc0ZS4uZTdk
Y2Q1YzEyZTFhZDllOWI3ZjA3MmVhODJkMWY0MDJiMDZkNzZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBl
OjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBOb3JtYWxpemUg
YmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZvcmUgZXhwb3NpbmcgdGhlIHJlbGF0aXZlIHBhdGgg
dG8gc2NyaXB0LgogICAgICAgICAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aCA9IHBhdGhzW2ldLnN1
YnN0cmluZygxICsgcm9vdFBhdGgubGVuZ3RoKCkpLnJlcGxhY2UoJ1xcJywgJy8nKTsKLSAgICAg
ICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocmVsYXRpdmVQYXRoLCBwYXRo
c1tpXSkpOworICAgICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhS
ZWxhdGl2ZVBhdGgocGF0aHNbaV0sIHJlbGF0aXZlUGF0aCkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94445</attachid>
            <date>2011-05-23 11:00:55 -0700</date>
            <delta_ts>2011-05-23 13:47:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-61155-20110523110052.patch</filename>
            <type>text/plain</type>
            <size>8792</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY3MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMjdmZDNiN2VlNWRkMzI5
NTQzODA1NjAwZDlkZDM0Y2ZlZTg0MjFjLi44ZjRhMDQzOGNkZWZlMmYwNmFkNWRhYmRkMjRkMjdm
NzYwMTA5ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTkgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBM
aS4KKworICAgICAgICBbZmlsZWFwaV0gQWRkIGEgRmlsZTo6Y3JlYXRlV2l0aE5hbWUgbWV0aG9k
IHRvIGF2b2lkIG9iZnVzY2F0ZWQgZmlsZW5hbWUgbGVha2FnZSBmcm9tIEZpbGVFbnRyeS5maWxl
KCkgbWV0aG9kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MTE1NQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHM6IGZhc3QvZmlsZXN5
c3RlbS9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0
bWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCisKKyAgICAgICAgKiBmaWxlYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlRmlsZSk6IFVwZGF0ZWQgdG8gY2FsbCBjcmVhdGVXaXRoTmFtZSgpLgorICAgICAgICAqIGZp
bGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5
c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgY3JlYXRlV2l0aE5hbWUoKS4K
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxv
YkRhdGFGb3JGaWxlKTogQWRkZWQgYW4gb3B0aW9uYWwgbmFtZSBhcmd1bWVudCB0byBmaXggTUlN
RSB0eXBlIGxvb2t1cC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2
ZVBhdGgpOiBSZW5hbWVkIGZyb20gY3JlYXRlKCkgZm9yIGNvbnNpc3RlbmN5IHdpdGggbmV3IG1l
dGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aE5hbWUpOgorICAgICAg
ICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRU
eXBlOjpzZXRGaWxlTGlzdCk6IFVwZGF0ZWQgdGhlIHNpbmdsZSBjYWxsZXIgb2YgRmlsZTo6Y3Jl
YXRlV2l0aFJlbGF0aXZlUGF0aCgpLgorCiAyMDExLTA1LTE3ICBKZXJlbXkgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggY2ViMmNhMzQwNmQ0NWQ1
ZDNhZmM0ODczYWZhMDJiM2FmNGY5MDIyNi4uNzM0MmFjZDBlNWRmZjZhMDE0ZjYzOTY0NWFkMDJi
Y2Y5YTJjZGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBA
IC0xMTcsOSArMTE3LDkgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgR2V0UGF0aENhbGxiYWNrIDog
cHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxHZXRQYXRoQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHBhdGgsIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEdldFBhdGhDYWxsYmFjayhmaWxlc3lzdGVtLCBwYXRoLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFk
YXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCkBAIC0xMjcsMjAgKzEyNywyMiBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIG1fcGF0aCA9IG1ldGFkYXRhLnBsYXRmb3JtUGF0aDsKIAotICAgICAgICBtX2Zp
bGVzeXN0ZW0tPnNjaGVkdWxlQ2FsbGJhY2sobV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpLCBG
aWxlOjpjcmVhdGUobV9wYXRoKSk7CisgICAgICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxs
YmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGU6OmNyZWF0ZVdpdGhOYW1lKG1f
cGF0aCwgbV9uYW1lKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldFBhdGhDYWxsYmFjayhQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIEdldFBhdGhDYWxsYmFjayhQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgICAgIDogRmlsZVN5c3Rl
bUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKICAgICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmls
ZXN5c3RlbSkKICAgICAgICAgLCBtX3BhdGgocGF0aCkKKyAgICAgICAgLCBtX25hbWUobmFtZSkK
ICAgICAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgewogICAg
IH0KIAogICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5n
IG1fcGF0aDsKKyAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IG1f
c3VjY2Vzc0NhbGxiYWNrOwogfTsKIApAQCAtMTUwLDcgKzE1Miw3IEBAIHZvaWQgRE9NRmlsZVN5
c3RlbTo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxG
aWxlQ2FsbGJhCiB7CiAgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVt
LT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsKIAotICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBHZXRQYXRoQ2FsbGJh
Y2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRo
LCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIGZpbGVFbnRyeS0+
bmFtZSgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5j
LmNwcAppbmRleCAwZDI2YmI2MjI0NGFkZDhkNzQ5NTQ1ZGFiMzUzZDYzNDBlMWZjNjE3Li5lZTZh
M2FjNDAwNGMwMzYyYzdmZDU1N2U4N2NjOGQ2ZjlkNWY2NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIFBhc3NS
ZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5
U3luYyogZmlsZUVudHJ5LCBFCiAgICAgfQogICAgIGlmICghcmVzdWx0LT5tX3BhdGguaXNFbXB0
eSgpKQogICAgICAgICBwbGF0Zm9ybVBhdGggPSByZXN1bHQtPm1fcGF0aDsKLSAgICByZXR1cm4g
RmlsZTo6Y3JlYXRlKHBsYXRmb3JtUGF0aCk7CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZVdpdGhO
YW1lKHBsYXRmb3JtUGF0aCwgZmlsZUVudHJ5LT5uYW1lKCkpOwogfQogCiBuYW1lc3BhY2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggZGQ4MWY1YWQ2NTI1MDY0MDBlMjRjM2ExNzA4NzAw
MWQ2Nzc1NTJjYi4uMDQ0OGIwYTYxYzFkMDY0Nzk2NTUwNTkwNjA5Njk0MDEyNjhkZjY1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0zMywxMiArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVh
dGVCbG9iRGF0YUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUg
PSBTdHJpbmcoKSkKIHsKICAgICBTdHJpbmcgdHlwZTsKLSAgICBpbnQgaW5kZXggPSBwYXRoLnJl
dmVyc2VGaW5kKCcuJyk7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lRm9yTUlNRVR5cGUgPSAhbmFt
ZS5pc0VtcHR5KCkgPyBuYW1lIDogcGF0aDsKKyAgICBpbnQgaW5kZXggPSBuYW1lRm9yTUlNRVR5
cGUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgIHR5cGUg
PSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihwYXRoLnN1YnN0cmlu
ZyhpbmRleCArIDEpKTsKKyAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVU
eXBlRm9yRXh0ZW5zaW9uKG5hbWVGb3JNSU1FVHlwZS5zdWJzdHJpbmcoaW5kZXggKyAxKSk7CiAK
ICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwogICAg
IGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZSh0eXBlKTsKQEAgLTQ2LDYgKzQ3LDE1IEBAIHN0YXRp
YyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoKQogICAgIHJldHVybiBibG9iRGF0YS5yZWxlYXNlKCk7CiB9CiAKKyNpZiBFTkFCTEUo
RElSRUNUT1JZX1VQTE9BRCkKK1Bhc3NSZWZQdHI8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0
aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQor
eworICAgIFJlZlB0cjxGaWxlPiBmaWxlID0gYWRvcHRSZWYobmV3IEZpbGUocGF0aCkpOworICAg
IGZpbGUtPm1fcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoOworICAgIHJldHVybiBmaWxlLnJl
bGVhc2UoKTsKK30KKyNlbmRpZgorCiBGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlKHBhdGgpLCAtMSkKICAgICAsIG1fcGF0aChw
YXRoKQpAQCAtNjAsMTMgKzcwLDEyIEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBtX25hbWUgPSBwYXRoR2V0
RmlsZU5hbWUocGF0aCk7CiB9CiAKLSNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKLUZpbGU6
OkZpbGUoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYgcGF0aCkKLSAg
ICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlKHBhdGgpLCAtMSkKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCitGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGUocGF0aCwgbmFtZSksIC0xKQog
ICAgICwgbV9wYXRoKHBhdGgpCi0gICAgLCBtX3JlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpCisg
ICAgLCBtX25hbWUobmFtZSkKIHsKLSAgICBtX25hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMjJiMDM1ZDFlNDE5NWVlMTE3
NmFlMGVjNzM4MWFlZDM5OTAyYzM0Li4xM2E5MWZlM2U0MWY5NWZiOWIyM2FjZDZiMGVlYmRjMTU0
NDNkNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDksOSArNDksMTQgQEAgcHVibGljOgog
ICAgIH0KIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5n
JiBwYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CisjZW5k
aWYKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRl
ZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0
aGUgcGF0aC4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRmlsZShyZWxhdGl2ZVBhdGgsIHBhdGgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIG5hbWUpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzUs
MTIgKzgwLDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0gICAgCisKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAgIEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7
CiAKLSNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKLSAgICBGaWxlKGNvbnN0IFN0cmluZyYg
cmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgpOworI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICNl
bmRpZgogCiAgICAgU3RyaW5nIG1fcGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IGE0ZDFkZDM2NWJiM2U5NjdkZTIwNWUzZDJkZmQ5MDUzNzgyM2M3NGUuLmU3ZGNk
NWMxMmUxYWQ5ZTliN2YwNzJlYTgyZDFmNDAyYjA2ZDc2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6
c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgLy8gTm9ybWFsaXplIGJh
Y2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4cG9zaW5nIHRoZSByZWxhdGl2ZSBwYXRoIHRv
IHNjcmlwdC4KICAgICAgICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBwYXRoc1tpXS5zdWJz
dHJpbmcoMSArIHJvb3RQYXRoLmxlbmd0aCgpKS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0gICAgICAg
ICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHJlbGF0aXZlUGF0aCwgcGF0aHNb
aV0pKTsKKyAgICAgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKHBhdGhzW2ldLCByZWxhdGl2ZVBhdGgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>