<?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>77125</bug_id>
          
          <creation_ts>2012-01-26 11:51:48 -0800</creation_ts>
          <short_desc>[chromium] Add setter/getter to expose drag data as a list of items</short_desc>
          <delta_ts>2012-02-15 15:14:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543341</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-26 11:51:48 -0800</bug_when>
    <thetext>[chromium] Combine URL, HTML and file content setter/getters in WebDragData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543363</commentid>
    <comment_count>1</comment_count>
      <attachid>124159</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-26 12:13:44 -0800</bug_when>
    <thetext>Created attachment 124159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543367</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 12:16:16 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543375</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-26 12:21:47 -0800</bug_when>
    <thetext>I&apos;m not 100% sure about changing WebURL-&gt;WebString for URL data.

Advantages:
- We can support text/uri-list correctly.
- Internally, that&apos;s how we&apos;re going to store the data anyway.

Disadvantages:
- We need a duplicate &apos;convert to URL&apos; implementation on platforms that don&apos;t support text/uri-list (Win, Mac). There will be an implementation in ChromiumDataObject and one in webkit/glue.

Other potential issues to note:
Eventually, I&apos;d like the drag data glue to transfer items back and forth as lists of data as well which means these new methods will be obsoleted quickly. This makes the glue code a little more complicated but possibly more efficient, as it doesn&apos;t require us to iterate through the data store multiple times when converting from WebDragData-&gt;WebDropData. With the current interface, we&apos;ll have to iterate through the data store when we read plain text, URL, HTML, DownloadURL (these can early return as soon as we find them though...), file content, and custom data (these require iterating through the full list every time).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543377</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-26 12:22:43 -0800</bug_when>
    <thetext>Associated Chromium code review at http://codereview.chromium.org/9290052/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543485</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-26 14:25:14 -0800</bug_when>
    <thetext>Hmm, this actually results in some really ugly looking temporary glue code, e.g.

WebString WebDragData::url(WebString&amp; title) const
{
    String title2;
    WebString url = m_privateData-&gt;url(title2);
    title = title2;
    return url;
}

Maybe it&apos;s OK since it&apos;s temporary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543509</commentid>
    <comment_count>6</comment_count>
      <attachid>124159</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-26 14:51:43 -0800</bug_when>
    <thetext>Comment on attachment 124159
Patch

I&apos;m not sure I fully understand why you want to make this change.  Have there been
bugs where people have forgotten to set all properties in a group?  Does this simplify
the implementation somehow?  Couldn&apos;t we also just more explicitly group the related
properties by using a common prefix?  (Well, I guess we already mostly do that.)

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

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:70
&gt; +    WEBKIT_EXPORT WebString url(WebString&amp; title) const;

it is generally bad to have a method named after only one of the properties that it returns.
if you could come up with good names for these sets of properties, then you could define
structs by those names, and then use the name of the struct for the property names.

perhaps you could use the format names that these correspond to as a guide?  hmm... I also
see that WebClipboard has write{URL,HTML} and so on.  it has a similar problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543553</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-26 15:24:27 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 124159 [details])
&gt; I&apos;m not sure I fully understand why you want to make this change.  Have there been
&gt; bugs where people have forgotten to set all properties in a group?  Does this simplify
&gt; the implementation somehow?  Couldn&apos;t we also just more explicitly group the related
&gt; properties by using a common prefix?  (Well, I guess we already mostly do that.)
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124159&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/platform/WebDragData.h:70
&gt; &gt; +    WEBKIT_EXPORT WebString url(WebString&amp; title) const;
&gt; 
&gt; it is generally bad to have a method named after only one of the properties that it returns.
&gt; if you could come up with good names for these sets of properties, then you could define
&gt; structs by those names, and then use the name of the struct for the property names.
&gt; 
&gt; perhaps you could use the format names that these correspond to as a guide?  hmm... I also
&gt; see that WebClipboard has write{URL,HTML} and so on.  it has a similar problem.

Some background:
Today, we have a pretty big mess in ClipboardChromium and DataTransferItemListChromium. We try to keep a dirty bit to figure out when we need to update DataTransferItemListChromium, but ultimately, it&apos;s difficult to keep the two in sync. There are things that are supported in one interface don&apos;t work in the other. For example, you can set your own drag out data by using dataTransfer.setData(&apos;x&apos;, &apos;y&apos;) but dataTransfer.items.add(&apos;y&apos;, &apos;x&apos;) is completely unimplemented and does nothing.

To fix that, I&apos;d like to unify the backing store for ChromiumDataObject and DataTransferItemListChromium. There were two primary approaches I considered:

1. Keep the current approach, using a struct with various named fields to store &quot;special&quot; types of data. This keeps the glue simple, but significantly complicates the generation of dataTransfer.items. We&apos;d need to establish a consistent order of iterating through the special elements, custom MIME types, and file types in order to make sure that DataTransferItemList::item(index) is deterministic when the items of the collection haven&apos;t changed. For example, in a hypothetical situation where we want to get the 5th element of DataTransferItemList, we might have to do the following:
- Check text/plain. The field is set, so add 1 to the counter.
- Check text/url-list. This field is not set, so don&apos;t change the counter.
- Check text/html. This field is set, so increment counter to 2.
- Check custom MIME types. It&apos;s set, so we start iterating through it, incrementing the counter once for each iteration.
- As it turns out, the counter hits 4 before we reach the end of the custom MIME types, so return a DataTransferItem corresponding to the current custom MIME type.

2. Convert ChromiumDataObject to use a similar mechanism to DataTransferItemListChromium internally. We would basically keep a list of DataTransferItems, with an interface that might look something like this:
DataTransferItem:
  String type(); // MIME type
  String data(); // String data, if it&apos;s a string item
  String title();  // URL title if type() == &apos;text/uri-list&apos;
  KURL baseURL();  // Base URL if type() == &apos;text/html&apos;
  String filename();  // Name of a file if this represents a file a user is dragging into a WebView
  // Next 3 members used to handle image drag out
  PassRefPtr&lt;SharedBuffer&gt; bufferData();  // Data for image
  String bufferName();  // Name for image, including extension
  String bufferExtension();  // Just the extension
This leads to a very straightforward ChromiumDataObject/DataTransferItemList implementation, but results in more complicated glue code.

In the original uber patch I posted in https://bugs.webkit.org/show_bug.cgi?id=76598, I opted to take the second approach. If you take a look at the WebDragData.h changes in that patch, I hadn&apos;t completely figured out the story for the glue though--I was trying to make a generic data list node that would be flexible enough to store the types that need to go between the browser and renderer.

This patch is an intermediate step between the current state and the final implementation of #2. In the intermediate stage, it simplifies the glue to be able to set URL/title together in one function call. since we can just add a DataTransferItem to the ChromiumDataObject with the MIME type, URL data, and URL title all set. Otherwise, the setUrlTitle() implementation might look like this:
- If text/uri-list node doesn&apos;t exist in CDO, create it.
- Otherwise, find the existing text/uri-list node.
- Set the title on that text/uri-list node.

Eventually, I&apos;d like to end up with an approach similar to the uber patch though. WebDragData would only expose items() and setItems(), and DataTransferItem would be a concept that the glue layer would understand. The hard work of converting between the list-based approach and the field-based approach would be done in webdropdata.cc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545639</commentid>
    <comment_count>8</comment_count>
      <attachid>124637</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-30 17:31:42 -0800</bug_when>
    <thetext>Created attachment 124637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546850</commentid>
    <comment_count>9</comment_count>
      <attachid>124893</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-01 00:02:27 -0800</bug_when>
    <thetext>Created attachment 124893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549150</commentid>
    <comment_count>10</comment_count>
      <attachid>124893</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-03 15:16:07 -0800</bug_when>
    <thetext>Comment on attachment 124893
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:53
&gt; +    // Internally, we represent data in a drag as a list of

I can&apos;t tell if this sentence stops intentionally or if &apos;struct Item&apos; is the end of the sentence.  Please complete the sentence and end with a period.

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:63
&gt; +        // Only valid when storageType == STRING

Nit: End the sentence with a period, here and below.

&gt; Source/WebKit/chromium/src/WebDragData.cpp:72
&gt; +    HashSet&lt;String&gt; types = m_private-&gt;types();

Can |types| be a const reference?

&gt; Source/WebKit/chromium/src/WebDragData.cpp:128
&gt; +void WebDragData::setItemList(const WebVector&lt;Item&gt;&amp; itemList)
&gt; +{
&gt; +    for (size_t i = 0; i &lt; itemList.size(); ++i)
&gt; +        addItem(itemList[i]);

Do we need to clear out any old items?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549184</commentid>
    <comment_count>11</comment_count>
      <attachid>125439</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-03 15:49:12 -0800</bug_when>
    <thetext>Created attachment 125439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549186</commentid>
    <comment_count>12</comment_count>
      <attachid>125440</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-03 15:50:27 -0800</bug_when>
    <thetext>Created attachment 125440
Patch

Remove merge marker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549187</commentid>
    <comment_count>13</comment_count>
      <attachid>124893</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-03 15:51:00 -0800</bug_when>
    <thetext>Comment on attachment 124893
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:53
&gt;&gt; +    // Internally, we represent data in a drag as a list of
&gt; 
&gt; I can&apos;t tell if this sentence stops intentionally or if &apos;struct Item&apos; is the end of the sentence.  Please complete the sentence and end with a period.

I removed this stale comment and added more useful comments on storageType.

&gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:63
&gt;&gt; +        // Only valid when storageType == STRING
&gt; 
&gt; Nit: End the sentence with a period, here and below.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebDragData.cpp:72
&gt;&gt; +    HashSet&lt;String&gt; types = m_private-&gt;types();
&gt; 
&gt; Can |types| be a const reference?

Yes, we&apos;re binding to a temporary but it doesn&apos;t really matter in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549205</commentid>
    <comment_count>14</comment_count>
      <attachid>125440</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-03 16:08:35 -0800</bug_when>
    <thetext>Comment on attachment 125440
Patch

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

Code seems fine.  Please let fishd also review.

&gt; Source/WebKit/chromium/ChangeLog:10
&gt; +        simplifythe serialization/deserialization between platform-specific data and WebDragData.

Nit: missing space between &apos;simplifythe&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549301</commentid>
    <comment_count>15</comment_count>
      <attachid>125458</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-03 18:31:41 -0800</bug_when>
    <thetext>Created attachment 125458
Patch

Fix typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550116</commentid>
    <comment_count>16</comment_count>
      <attachid>125458</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-06 11:09:24 -0800</bug_when>
    <thetext>Comment on attachment 125458
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:53
&gt; +    struct Item {

Do you think there will be files (.h or .cc) where we will only need to deal
with the Item struct, possibly requiring a forward declaration?  Perhaps it
should be declared at the top-level in its own header file?

WebDragDataItem?

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:54
&gt; +        enum StorageType {

nit: enums should be named like so:

  enum Foo {
      FooBar,
      FooBaz,
      ...
  };

These should be StorageType{String,Filename,SharedBuffer}

NOTE: The term &quot;shared buffer&quot; is really more of a WebCore thing.  Maybe
instead of &quot;sharedBufferData&quot; you should call it &quot;binaryData&quot;?

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:103
&gt; +    WebVector&lt;Item&gt; itemList() const;

nit: we usually just pluralize the name instead.  itemList -&gt; items</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550141</commentid>
    <comment_count>17</comment_count>
      <attachid>125678</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-06 11:39:22 -0800</bug_when>
    <thetext>Created attachment 125678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550142</commentid>
    <comment_count>18</comment_count>
      <attachid>125458</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-06 11:39:52 -0800</bug_when>
    <thetext>Comment on attachment 125458
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:53
&gt;&gt; +    struct Item {
&gt; 
&gt; Do you think there will be files (.h or .cc) where we will only need to deal
&gt; with the Item struct, possibly requiring a forward declaration?  Perhaps it
&gt; should be declared at the top-level in its own header file?
&gt; 
&gt; WebDragDataItem?

I haven&apos;t encountered any instances of needing a forward declaration during the process of this conversion. Do you think it&apos;s still necessary?

&gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:54
&gt;&gt; +        enum StorageType {
&gt; 
&gt; nit: enums should be named like so:
&gt; 
&gt;   enum Foo {
&gt;       FooBar,
&gt;       FooBaz,
&gt;       ...
&gt;   };
&gt; 
&gt; These should be StorageType{String,Filename,SharedBuffer}
&gt; 
&gt; NOTE: The term &quot;shared buffer&quot; is really more of a WebCore thing.  Maybe
&gt; instead of &quot;sharedBufferData&quot; you should call it &quot;binaryData&quot;?

Done.

&gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:103
&gt;&gt; +    WebVector&lt;Item&gt; itemList() const;
&gt; 
&gt; nit: we usually just pluralize the name instead.  itemList -&gt; items

I used item and itemList for consistency because the DataTransferItem spec in HTML5 uses the same naming scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557501</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-15 13:26:31 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 125458 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125458&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:53
&gt; &gt;&gt; +    struct Item {
&gt; &gt; 
&gt; &gt; Do you think there will be files (.h or .cc) where we will only need to deal
&gt; &gt; with the Item struct, possibly requiring a forward declaration?  Perhaps it
&gt; &gt; should be declared at the top-level in its own header file?
&gt; &gt; 
&gt; &gt; WebDragDataItem?
&gt; 
&gt; I haven&apos;t encountered any instances of needing a forward declaration during the process of this conversion. Do you think it&apos;s still necessary?

OK

&gt; &gt;&gt; Source/WebKit/chromium/public/platform/WebDragData.h:103
&gt; &gt;&gt; +    WebVector&lt;Item&gt; itemList() const;
&gt; &gt; 
&gt; &gt; nit: we usually just pluralize the name instead.  itemList -&gt; items
&gt; 
&gt; I used item and itemList for consistency because the DataTransferItem spec in HTML5 uses the same naming scheme.

I think it is better to be consistent with the WebKit API, which you are modifying, than with HTML5 :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557503</commentid>
    <comment_count>20</comment_count>
      <attachid>125678</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-15 13:29:19 -0800</bug_when>
    <thetext>Comment on attachment 125678
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebDragData.h:60
&gt; +        // There are three different types of data we store in Item nodes:

nit: I&apos;d probably just make these comments above each enum value.

  enum StorageType {
      // Blah, blah, blah
      StorageTypeString,

      // Blah, blah, blah
      StorageTypeFilename,

      ...
  };

This way it is a bit less verbose as you don&apos;t need to repeat the enum value name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557622</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-15 15:14:33 -0800</bug_when>
    <thetext>Committed r107846: &lt;http://trac.webkit.org/changeset/107846&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124159</attachid>
            <date>2012-01-26 12:13:44 -0800</date>
            <delta_ts>2012-01-30 17:31:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120126121342.patch</filename>
            <type>text/plain</type>
            <size>6168</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDZkYzAwY2Q5YjNiMzgwODlkYzUxNTkzZWY2NTY3NDllNGJjYTgxNDQuLmYyOGJmOGU5ODg5MzA3
MjllYWQzN2U4NDM3Y2ExM2EwNmNjNmEyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDEtMjYgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb21iaW5lIFVSTCwgSFRNTCBhbmQgZmlsZSBj
b250ZW50IHNldHRlci9nZXR0ZXJzIGluIFdlYkRyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzEyNQorCisgICAgICAgIEFzIHBhcnQgb2Yg
dGhlIHdvcmsgdG8gY29tYmluZSB0aGUgZGF0YSBzdG9yZSBiYWNraW5nIENocm9taXVtRGF0YU9i
amVjdCBhbmQKKyAgICAgICAgRGF0YVRyYW5zZmVySXRlbUxpc3RDaHJvbWl1bSwgd2Ugd2FudCB0
byByZXByZXNlbnQgdGhlIGRhdGEgc3RvcmUgYXMgYSBsaXN0IG9mIGl0ZW1zLiBTaW5jZQorICAg
ICAgICBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHlwZSB3aWxsIGJlIHN0
b3JlZCBpbiB0aGUgc2FtZSBsaXN0IG5vZGUgKGUuZy4gYmFzZQorICAgICAgICBVUkwgb2YgSFRN
TCBjb250ZW50KSwgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byBjb21iaW5lIGdldHRlcnMvc2V0dGVy
cyBvZiByZWxhdGVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaDoKKyAgICAg
ICAgKFdlYkRyYWdEYXRhKToKKyAgICAgICAgKiBzcmMvV2ViRHJhZ0RhdGEuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6dXJsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRyYWdEYXRhOjpzZXRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFn
RGF0YTo6aHRtbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpzZXRIVE1MKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OmZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRHJhZ0RhdGE6OmZpbGVFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFn
RGF0YTo6c2V0RmlsZUV4dGVuc2lvbik6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkRyYWdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJEcmFnRGF0YS5oCmluZGV4IDE3MTIzMWVjYTM0YmE0Nzc3ZDZhYmVhNDIzNjNjNGRjOTZkMzk2
NjcuLjhkZDlkNjk4NTE3ZWM3NjUxN2MxYjM0OTQ3YmVkNzA0MmYyOGY5NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaApA
QCAtNjYsMTggKzY2LDE5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcHJpdmF0ZTsgfQogCisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB1cmwo
V2ViU3RyaW5nJiB0aXRsZSkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVSTChj
b25zdCBXZWJTdHJpbmcmIHVybCwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSk7CisKKyAgICAvLyBG
SVhNRTogVG8gYmUgcmVtb3ZlZCBhZnRlciBDaHJvbWl1bSByb2xsLgogICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIHVybCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVUkwo
Y29uc3QgV2ViVVJMJik7Ci0KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB1cmxUaXRsZSgp
IGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVUkxUaXRsZShjb25zdCBXZWJTdHJp
bmcmKTsKIAogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRvd25sb2FkTWV0YWRhdGEoKSBj
b25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RG93bmxvYWRNZXRhZGF0YShjb25zdCBX
ZWJTdHJpbmcmKTsKIAotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGZpbGVFeHRlbnNpb24o
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RmlsZUV4dGVuc2lvbihjb25zdCBX
ZWJTdHJpbmcmKTsKLQogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjb250YWluc0ZpbGVuYW1lcygp
IGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBmaWxlbmFtZXMoV2ViVmVjdG9yPFdlYlN0
cmluZz4mKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RmlsZW5hbWVzKGNvbnN0
IFdlYlZlY3RvcjxXZWJTdHJpbmc+Jik7CkBAIC04NiwxNSArODcsMjAgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHBsYWluVGV4dCgpIGNvbnN0OwogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRQbGFpblRleHQoY29uc3QgV2ViU3RyaW5nJik7CiAKKyAgICBXRUJLSVRf
RVhQT1JUIFdlYlN0cmluZyBodG1sKFdlYlVSTCYgYmFzZVVSTCkgY29uc3Q7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEhUTUwoY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViVVJMJiBiYXNl
VVJMKTsKKyAgICAvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCBhZnRlciBDaHJvbWl1bSByb2xsLgog
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0bWxUZXh0KCkgY29uc3Q7CiAgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEhUTUxUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCiAgICAgV0VCS0lU
X0VYUE9SVCBXZWJVUkwgaHRtbEJhc2VVUkwoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0SFRNTEJhc2VVUkwoY29uc3QgV2ViVVJMJik7CiAKKyAgICBXRUJLSVRfRVhQT1JUIFdl
YkRhdGEgZmlsZUNvbnRlbnQoV2ViU3RyaW5nJiBuYW1lLCBXZWJTdHJpbmcmIGV4dGVuc2lvbikg
Y29uc3Q7CisgICAgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgYWZ0ZXIgQ2hyb21pdW0gcm9sbC4K
ICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBmaWxlQ29udGVudEZpbGVuYW1lKCkgY29uc3Q7
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVDb250ZW50RmlsZW5hbWUoY29uc3QgV2Vi
U3RyaW5nJik7Ci0KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBmaWxlRXh0ZW5zaW9uKCkg
Y29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVFeHRlbnNpb24oY29uc3QgV2Vi
U3RyaW5nJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJEYXRhIGZpbGVDb250ZW50KCkgY29uc3Q7
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVDb250ZW50KGNvbnN0IFdlYkRhdGEmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwCmluZGV4IDVjMzEy
MzkxOGFmNjNmZTgxNTQzMzBmZGZmMjUyYWU3MWNjMWU5NGEuLjQwY2JhNDRiZmNiOGVmYmUwNDRk
YjEzZTVlZjQyY2ViYjhjMDM1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
cmFnRGF0YS5jcHAKQEAgLTY2LDYgKzY2LDE4IEBAIHZvaWQgV2ViRHJhZ0RhdGE6OmFzc2lnbihj
b25zdCBXZWJEcmFnRGF0YSYgb3RoZXIpCiAgICAgYXNzaWduKHApOwogfQogCitXZWJTdHJpbmcg
V2ViRHJhZ0RhdGE6OnVybChXZWJTdHJpbmcmIHRpdGxlKSBjb25zdAoreworICAgIHRpdGxlID0g
dXJsVGl0bGUoKTsKKyAgICByZXR1cm4gdXJsKCk7Cit9CisKK3ZvaWQgV2ViRHJhZ0RhdGE6OnNl
dFVSTChjb25zdCBXZWJTdHJpbmcmIHVybCwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICBzZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOworICAgIHNldFVSTFRpdGxlKHRpdGxlKTsKK30K
KwogV2ViU3RyaW5nIFdlYkRyYWdEYXRhOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNO
dWxsKCkpOwpAQCAtMTA0LDE4ICsxMTYsNiBAQCB2b2lkIFdlYkRyYWdEYXRhOjpzZXREb3dubG9h
ZE1ldGFkYXRhKGNvbnN0IFdlYlN0cmluZyYgZG93bmxvYWRNZXRhZGF0YSkKICAgICBtX3ByaXZh
dGUtPnNldERhdGEobWltZVR5cGVEb3dubG9hZFVSTCwgZG93bmxvYWRNZXRhZGF0YSk7CiB9CiAK
LVdlYlN0cmluZyBXZWJEcmFnRGF0YTo6ZmlsZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKCFpc051bGwoKSk7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZmlsZUV4dGVuc2lvbigpOwot
fQotCi12b2lkIFdlYkRyYWdEYXRhOjpzZXRGaWxlRXh0ZW5zaW9uKGNvbnN0IFdlYlN0cmluZyYg
ZmlsZUV4dGVuc2lvbikKLXsKLSAgICBlbnN1cmVNdXRhYmxlKCk7Ci0gICAgbV9wcml2YXRlLT5z
ZXRGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pOwotfQotCiBib29sIFdlYkRyYWdEYXRhOjpj
b250YWluc0ZpbGVuYW1lcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc051bGwoKSk7CkBAIC0x
NTcsNiArMTU3LDE4IEBAIHZvaWQgV2ViRHJhZ0RhdGE6OnNldFBsYWluVGV4dChjb25zdCBXZWJT
dHJpbmcmIHBsYWluVGV4dCkKICAgICBtX3ByaXZhdGUtPnNldERhdGEobWltZVR5cGVUZXh0UGxh
aW4sIHBsYWluVGV4dCk7CiB9CiAKK1dlYlN0cmluZyBXZWJEcmFnRGF0YTo6aHRtbChXZWJVUkwm
IGJhc2VVUkwpIGNvbnN0Cit7CisgICAgYmFzZVVSTCA9IGh0bWxCYXNlVVJMKCk7CisgICAgcmV0
dXJuIGh0bWxUZXh0KCk7Cit9CisKK3ZvaWQgV2ViRHJhZ0RhdGE6OnNldEhUTUwoY29uc3QgV2Vi
U3RyaW5nJiBodG1sLCBjb25zdCBXZWJVUkwmIGJhc2VVUkwpCit7CisgICAgc2V0SFRNTFRleHQo
aHRtbCk7CisgICAgc2V0SFRNTEJhc2VVUkwoYmFzZVVSTCk7Cit9CisKIFdlYlN0cmluZyBXZWJE
cmFnRGF0YTo6aHRtbFRleHQoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNOdWxsKCkpOwpAQCAt
MTgyLDYgKzE5NCwxMyBAQCB2b2lkIFdlYkRyYWdEYXRhOjpzZXRIVE1MQmFzZVVSTChjb25zdCBX
ZWJVUkwmIGh0bWxCYXNlVVJMKQogICAgIG1fcHJpdmF0ZS0+c2V0SHRtbEJhc2VVcmwoaHRtbEJh
c2VVUkwpOwogfQogCitXZWJEYXRhIFdlYkRyYWdEYXRhOjpmaWxlQ29udGVudChXZWJTdHJpbmcm
IG5hbWUsIFdlYlN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAoreworICAgIG5hbWUgPSBmaWxlQ29u
dGVudEZpbGVuYW1lKCk7CisgICAgZXh0ZW5zaW9uID0gZmlsZUV4dGVuc2lvbigpOworICAgIHJl
dHVybiBmaWxlQ29udGVudCgpOworfQorCiBXZWJTdHJpbmcgV2ViRHJhZ0RhdGE6OmZpbGVDb250
ZW50RmlsZW5hbWUoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNOdWxsKCkpOwpAQCAtMTk0LDYg
KzIxMywxOCBAQCB2b2lkIFdlYkRyYWdEYXRhOjpzZXRGaWxlQ29udGVudEZpbGVuYW1lKGNvbnN0
IFdlYlN0cmluZyYgZmlsZW5hbWUpCiAgICAgbV9wcml2YXRlLT5zZXRGaWxlQ29udGVudEZpbGVu
YW1lKGZpbGVuYW1lKTsKIH0KIAorV2ViU3RyaW5nIFdlYkRyYWdEYXRhOjpmaWxlRXh0ZW5zaW9u
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5maWxlRXh0ZW5zaW9uKCk7Cit9CisKK3ZvaWQgV2ViRHJhZ0RhdGE6OnNldEZpbGVFeHRlbnNp
b24oY29uc3QgV2ViU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQoreworICAgIGVuc3VyZU11dGFibGUo
KTsKKyAgICBtX3ByaXZhdGUtPnNldEZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbik7Cit9CisK
IFdlYkRhdGEgV2ViRHJhZ0RhdGE6OmZpbGVDb250ZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQo
IWlzTnVsbCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124637</attachid>
            <date>2012-01-30 17:31:42 -0800</date>
            <delta_ts>2012-02-01 00:02:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120130173141.patch</filename>
            <type>text/plain</type>
            <size>6958</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg1ZTNmZDFmMjQ1MTcwOGI4YjcxZTQ4YmMzMTIwNjkxMmU5Y2M4YTEuLjU3NDM4MGQ3YzJiYjNj
MTllMzU3ZjY3YjhkNmVkZmIwNGJiNDY3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDEtMzAgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc2V0dGVyL2dldHRlciB0byBleHBvc2Ug
ZHJhZyBkYXRhIGFzIGEgbGlzdCBvZiBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjUKKworICAgICAgICBUaGlzIGNoYW5nZSBzdXBwb3J0
cyB0aGUgdW5pZmljYXRpb24gb2YgdGhlIGRhdGEgc3RvcmUgYmFja2luZyBDaHJvbWl1bURhdGFP
YmplY3QgYW5kCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0Q2hyb21pdW0uIENocm9taXVt
RGF0YU9iamVjdCB3aWxsIHJlcHJlc2VudCBkcmFnZ2luZyBhbmQgY2xpcGJvYXJkIGRhdGEKKyAg
ICAgICAgYXMgYSBsaXN0IG9mIGRhdGEgbm9kZXMgdG8gbWFrZSBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZCB0byBpbXBsZW1lbnQgdGhlIEhUTUwgc3BlYyBmb3IKKyAgICAgICAgRGF0YVRyYW5zZmVy
SXRlbUxpc3QuIFRodXMsIHdlIGV4dGVuZCB0aGUgYWJzdHJhY3Rpb24gdG8gdGhlIHdlYmtpdCBn
bHVlIGxheWVyIHRvCisgICAgICAgIHNpbXBsaWZ5dGhlIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxp
emF0aW9uIGJldHdlZW4gcGxhdGZvcm0tc3BlY2lmaWMgZGF0YSBhbmQgV2ViRHJhZ0RhdGEuCisg
ICAgICAgIFRoZSBvdGhlciBzZXR0ZXIvZ2V0dGVyIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQgYW5k
IHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgQ2hyb21p
dW0gY29kZSBhcmUgZ29uZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYkRyYWdEYXRhKToKKyAgICAgICAgKCk6CisgICAgICAgICogc3Jj
L1dlYkRyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6Oml0ZW1MaXN0
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpzZXRJ
dGVtTGlzdCk6CisKIDIwMTItMDEtMjcgIEplZmYgVGltYW51cyAgPHR3aXpAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIEdhbmVzaCB0
ZXh0dXJlIGNhY2hlIHRvIHByZXZlbnQgcGVyZm9ybWFuY2UgcHJvYmxlbXMgb24gYWR2YW5jZWQg
Q2FudmFzMkQgcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAppbmRleCAxNzEyMzFlY2EzNGJhNDc3N2Q2YWJlYTQyMzYz
YzRkYzk2ZDM5NjY3Li5kYmIxYmZiNTFkOTA2YTk3NTNhZDk4ZDRjMDRkMDIyZTdlOTQyNGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFn
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRy
YWdEYXRhLmgKQEAgLTMyLDcgKzMyLDkgQEAKICNkZWZpbmUgV2ViRHJhZ0RhdGFfaAogCiAjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYlN0
cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsgfQpAQCAtNDEs
MTUgKzQzLDQxIEBAIG5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
UGFzc1JlZlB0cjsgfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViRGF0YTsKIGNs
YXNzIFdlYkRyYWdEYXRhUHJpdmF0ZTsKLWNsYXNzIFdlYlVSTDsKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiAKIC8vIEhvbGRzIGRhdGEgdGhhdCBtYXkgYmUgZXhjaGFu
Z2VkIHRocm91Z2ggYSBkcmFnLW4tZHJvcCBvcGVyYXRpb24uICBJdCBpcwogLy8gaW5leHBlbnNp
dmUgdG8gY29weSBhIFdlYkRyYWdEYXRhIG9iamVjdC4KIGNsYXNzIFdlYkRyYWdEYXRhIHsKIHB1
YmxpYzoKKyAgICAvLyBJbnRlcm5hbGx5LCB3ZSByZXByZXNlbnQgZGF0YSBpbiBhIGRyYWcgYXMg
YSBsaXN0IG9mCisgICAgc3RydWN0IEl0ZW0geworICAgICAgICBlbnVtIFN0b3JhZ2VUeXBlIHsK
KyAgICAgICAgICAgIFNUUklORywKKyAgICAgICAgICAgIEZJTEVOQU1FLAorICAgICAgICAgICAg
U0hBUkVEX0JVRkZFUiwKKyAgICAgICAgfTsKKworICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdl
VHlwZTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU1RSSU5H
CisgICAgICAgIFdlYlN0cmluZyBzdHJpbmdUeXBlOworICAgICAgICBXZWJTdHJpbmcgc3RyaW5n
RGF0YTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gRklMRU5B
TUUKKyAgICAgICAgV2ViU3RyaW5nIGZpbGVuYW1lRGF0YTsKKworICAgICAgICAvLyBPbmx5IHZh
bGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU0hBUkVEX0JVRkZFUgorICAgICAgICBXZWJEYXRhIHNo
YXJlZEJ1ZmZlckRhdGE7CisKKyAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRlZCB3aXRoIGEgbGlu
ayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxpc3QiCisgICAgICAgIC8vIEZpbGVuYW1l
IHdoZW4gc3RvcmFnZVR5cGUgPT0gU0hBUkVEX0JVRkZFUgorICAgICAgICBXZWJTdHJpbmcgdGl0
bGU7CisKKyAgICAgICAgLy8gT25seSB2YWxpZCB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvaHRt
bCIKKyAgICAgICAgV2ViVVJMIGJhc2VVUkw7CisgICAgfTsKKwogICAgIH5XZWJEcmFnRGF0YSgp
IHsgcmVzZXQoKTsgfQogCiAgICAgV2ViRHJhZ0RhdGEoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KQEAg
LTY2LDYgKzk0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9wcml2YXRlOyB9CiAKKyAgICBXZWJWZWN0b3I8SXRlbT4gaXRlbUxpc3QoKSBjb25zdDsK
KyAgICB2b2lkIHNldEl0ZW1MaXN0KGNvbnN0IFdlYlZlY3RvcjxJdGVtPiYpOworCiAgICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFVSTChjb25zdCBXZWJVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RHJhZ0RhdGEuY3BwCmluZGV4IDVjMzEyMzkxOGFmNjNmZTgxNTQzMzBmZGZmMjUyYWU3MWNjMWU5
NGEuLjE0OGM5NmY3MDU2YzNmYzBlZDJhMzEzYmRjZWRhNzc4YjBlNDkxNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAKQEAgLTY2LDYgKzY2LDg0IEBAIHZv
aWQgV2ViRHJhZ0RhdGE6OmFzc2lnbihjb25zdCBXZWJEcmFnRGF0YSYgb3RoZXIpCiAgICAgYXNz
aWduKHApOwogfQogCitXZWJWZWN0b3I8V2ViRHJhZ0RhdGE6Okl0ZW0+IFdlYkRyYWdEYXRhOjpp
dGVtTGlzdCgpIGNvbnN0Cit7CisgICAgVmVjdG9yPEl0ZW0+IGl0ZW1MaXN0OworICAgIEhhc2hT
ZXQ8U3RyaW5nPiB0eXBlcyA9IG1fcHJpdmF0ZS0+dHlwZXMoKTsKKyAgICBpZiAodHlwZXMuY29u
dGFpbnMobWltZVR5cGVUZXh0UGxhaW4pKSB7CisgICAgICAgIEl0ZW0gaXRlbTsKKyAgICAgICAg
aXRlbS5zdG9yYWdlVHlwZSA9IEl0ZW06OlNUUklORzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBl
ID0gU3RyaW5nKG1pbWVUeXBlVGV4dFBsYWluKTsKKyAgICAgICAgYm9vbCBpZ25vcmVkOworICAg
ICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERhdGEobWltZVR5cGVUZXh0UGxh
aW4sIGlnbm9yZWQpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAg
IGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRVUklMaXN0KSkgeworICAgICAgICBJdGVt
IGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTVFJJTkc7CisgICAgICAg
IGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlwZVRleHRVUklMaXN0KTsKKyAgICAgICAg
Ym9vbCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERh
dGEobWltZVR5cGVVUkwsIGlnbm9yZWQpOworICAgICAgICBpdGVtLnRpdGxlID0gbV9wcml2YXRl
LT51cmxUaXRsZSgpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAg
IGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRIVE1MKSkgeworICAgICAgICBJdGVtIGl0
ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTVFJJTkc7CisgICAgICAgIGl0
ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlwZVRleHRIVE1MKTsKKyAgICAgICAgYm9vbCBp
Z25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERhdGEobWlt
ZVR5cGVUZXh0SFRNTCwgaWdub3JlZCk7CisgICAgICAgIGl0ZW0uYmFzZVVSTCA9IG1fcHJpdmF0
ZS0+aHRtbEJhc2VVcmwoKTsKKyAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOworICAgIH0K
KyAgICBpZiAodHlwZXMuY29udGFpbnMobWltZVR5cGVEb3dubG9hZFVSTCkpIHsKKyAgICAgICAg
SXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U1RSSU5HOworICAg
ICAgICBpdGVtLnN0cmluZ1R5cGUgPSBTdHJpbmcobWltZVR5cGVEb3dubG9hZFVSTCk7CisgICAg
ICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRlbS5zdHJpbmdEYXRhID0gbV9wcml2YXRlLT5n
ZXREYXRhKG1pbWVUeXBlRG93bmxvYWRVUkwsIGlnbm9yZWQpOworICAgICAgICBpdGVtTGlzdC5h
cHBlbmQoaXRlbSk7CisgICAgfQorICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBj
dXN0b21EYXRhID0gbV9wcml2YXRlLT5jdXN0b21EYXRhKCk7CisgICAgZm9yIChIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjdXN0b21EYXRhLmJlZ2luKCk7IGl0
ICE9IGN1c3RvbURhdGEuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgSXRlbSBpdGVtOworICAgICAg
ICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U1RSSU5HOworICAgICAgICBpdGVtLnN0cmluZ1R5
cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGl0ZW0uc3RyaW5nRGF0YSA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgaWYgKG1fcHJpdmF0ZS0+
ZmlsZUNvbnRlbnQoKSkgeworICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFn
ZVR5cGUgPSBJdGVtOjpTSEFSRURfQlVGRkVSOworICAgICAgICBpdGVtLnNoYXJlZEJ1ZmZlckRh
dGEgPSBtX3ByaXZhdGUtPmZpbGVDb250ZW50KCk7CisgICAgICAgIGl0ZW0udGl0bGUgPSBtX3By
aXZhdGUtPmZpbGVDb250ZW50RmlsZW5hbWUoKTsKKyAgICB9CisgICAgLy8gV2UgZG9uJ3QgaGFu
ZGxlIGZpbGVuYW1lcyBoZXJlLCBzaW5jZSB0aGV5IGFyZSBuZXZlciB1c2VkIGZvciBkcmFnZ2lu
ZyBvdXQuCisgICAgcmV0dXJuIGl0ZW1MaXN0OworfQorCit2b2lkIFdlYkRyYWdEYXRhOjpzZXRJ
dGVtTGlzdChjb25zdCBXZWJWZWN0b3I8SXRlbT4mIGl0ZW1MaXN0KQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaXRlbUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgSXRl
bSYgaXRlbSA9IGl0ZW1MaXN0W2ldOworICAgICAgICBzd2l0Y2ggKGl0ZW0uc3RvcmFnZVR5cGUp
IHsKKyAgICAgICAgY2FzZSBJdGVtOjpTVFJJTkc6CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dERhdGEoaXRlbS5zdHJpbmdUeXBlLCBpdGVtLnN0cmluZ0RhdGEpOworICAgICAgICAgICAgaWYg
KFN0cmluZyhpdGVtLnN0cmluZ1R5cGUpID09IG1pbWVUeXBlVGV4dFVSSUxpc3QpCisgICAgICAg
ICAgICAgICAgbV9wcml2YXRlLT5zZXRVcmxUaXRsZShpdGVtLnRpdGxlKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKFN0cmluZyhpdGVtLnN0cmluZ1R5cGUpID09IG1pbWVUeXBlVGV4dEhUTUwpCisg
ICAgICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRIdG1sQmFzZVVybChpdGVtLmJhc2VVUkwpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgSXRlbTo6RklMRU5BTUU6CisgICAg
ICAgICAgICBtX3ByaXZhdGUtPmFkZEZpbGVuYW1lKGl0ZW0uZmlsZW5hbWVEYXRhKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIEl0ZW06OlNIQVJFRF9CVUZGRVI6CisgICAg
ICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBkcmFnZ2luZyBpbi4KKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCiBX
ZWJTdHJpbmcgV2ViRHJhZ0RhdGE6OnVybCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc051bGwo
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124893</attachid>
            <date>2012-02-01 00:02:27 -0800</date>
            <delta_ts>2012-02-03 15:51:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120201000226.patch</filename>
            <type>text/plain</type>
            <size>7181</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDAyMGFhYjZiNzliNjgyZGM3MTc3ZjNmOWFiZjIwMzYyNzczYzVlOTQuLmJjYmU5MDI3NGZjNGI3
N2IzYzNjMzQ1NDU0OWJkMzNjN2RlYzE3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTItMDItMDEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc2V0dGVyL2dldHRlciB0byBleHBvc2Ug
ZHJhZyBkYXRhIGFzIGEgbGlzdCBvZiBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjUKKworICAgICAgICBUaGlzIGNoYW5nZSBzdXBwb3J0
cyB0aGUgdW5pZmljYXRpb24gb2YgdGhlIGRhdGEgc3RvcmUgYmFja2luZyBDaHJvbWl1bURhdGFP
YmplY3QgYW5kCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0Q2hyb21pdW0uIENocm9taXVt
RGF0YU9iamVjdCB3aWxsIHJlcHJlc2VudCBkcmFnZ2luZyBhbmQgY2xpcGJvYXJkIGRhdGEKKyAg
ICAgICAgYXMgYSBsaXN0IG9mIGRhdGEgbm9kZXMgdG8gbWFrZSBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZCB0byBpbXBsZW1lbnQgdGhlIEhUTUwgc3BlYyBmb3IKKyAgICAgICAgRGF0YVRyYW5zZmVy
SXRlbUxpc3QuIFRodXMsIHdlIGV4dGVuZCB0aGUgYWJzdHJhY3Rpb24gdG8gdGhlIHdlYmtpdCBn
bHVlIGxheWVyIHRvCisgICAgICAgIHNpbXBsaWZ5dGhlIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxp
emF0aW9uIGJldHdlZW4gcGxhdGZvcm0tc3BlY2lmaWMgZGF0YSBhbmQgV2ViRHJhZ0RhdGEuCisg
ICAgICAgIFRoZSBvdGhlciBzZXR0ZXIvZ2V0dGVyIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQgYW5k
IHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgQ2hyb21p
dW0gY29kZSBhcmUgZ29uZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYkRyYWdEYXRhKToKKyAgICAgICAgKiBzcmMvV2ViRHJhZ0RhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6aXRlbUxpc3QpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OnNldEl0ZW1MaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OmFkZEl0ZW0pOgorCisKIDIwMTItMDEtMzAgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDYzMjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAppbmRleCAxNzEyMzFlY2EzNGJhNDc3
N2Q2YWJlYTQyMzYzYzRkYzk2ZDM5NjY3Li45NjU5NzFhN2FkZTBiYjI0ODMzODViMmMzM2ZiYzY4
N2FiYzM0YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJEcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkRyYWdEYXRhLmgKQEAgLTMyLDcgKzMyLDkgQEAKICNkZWZpbmUgV2ViRHJhZ0Rh
dGFfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVj
dDsgfQpAQCAtNDEsMTUgKzQzLDQxIEBAIG5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3Mg
V2ViRGF0YTsKIGNsYXNzIFdlYkRyYWdEYXRhUHJpdmF0ZTsKLWNsYXNzIFdlYlVSTDsKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiAKIC8vIEhvbGRzIGRhdGEgdGhhdCBt
YXkgYmUgZXhjaGFuZ2VkIHRocm91Z2ggYSBkcmFnLW4tZHJvcCBvcGVyYXRpb24uICBJdCBpcwog
Ly8gaW5leHBlbnNpdmUgdG8gY29weSBhIFdlYkRyYWdEYXRhIG9iamVjdC4KIGNsYXNzIFdlYkRy
YWdEYXRhIHsKIHB1YmxpYzoKKyAgICAvLyBJbnRlcm5hbGx5LCB3ZSByZXByZXNlbnQgZGF0YSBp
biBhIGRyYWcgYXMgYSBsaXN0IG9mCisgICAgc3RydWN0IEl0ZW0geworICAgICAgICBlbnVtIFN0
b3JhZ2VUeXBlIHsKKyAgICAgICAgICAgIFNUUklORywKKyAgICAgICAgICAgIEZJTEVOQU1FLAor
ICAgICAgICAgICAgU0hBUkVEX0JVRkZFUiwKKyAgICAgICAgfTsKKworICAgICAgICBTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5
cGUgPT0gU1RSSU5HCisgICAgICAgIFdlYlN0cmluZyBzdHJpbmdUeXBlOworICAgICAgICBXZWJT
dHJpbmcgc3RyaW5nRGF0YTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5
cGUgPT0gRklMRU5BTUUKKyAgICAgICAgV2ViU3RyaW5nIGZpbGVuYW1lRGF0YTsKKworICAgICAg
ICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU0hBUkVEX0JVRkZFUgorICAgICAg
ICBXZWJEYXRhIHNoYXJlZEJ1ZmZlckRhdGE7CisKKyAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRl
ZCB3aXRoIGEgbGluayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxpc3QiCisgICAgICAg
IC8vIEZpbGVuYW1lIHdoZW4gc3RvcmFnZVR5cGUgPT0gU0hBUkVEX0JVRkZFUgorICAgICAgICBX
ZWJTdHJpbmcgdGl0bGU7CisKKyAgICAgICAgLy8gT25seSB2YWxpZCB3aGVuIHN0cmluZ1R5cGUg
PT0gInRleHQvaHRtbCIKKyAgICAgICAgV2ViVVJMIGJhc2VVUkw7CisgICAgfTsKKwogICAgIH5X
ZWJEcmFnRGF0YSgpIHsgcmVzZXQoKTsgfQogCiAgICAgV2ViRHJhZ0RhdGEoKSA6IG1fcHJpdmF0
ZSgwKSB7IH0KQEAgLTY2LDYgKzk0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9CiAKKyAgICBXZWJWZWN0b3I8SXRlbT4gaXRlbUxp
c3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEl0ZW1MaXN0KGNvbnN0IFdlYlZlY3RvcjxJdGVtPiYp
OworCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwmKTsKIApAQCAtMTA0LDYgKzEzNSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPEN1c3RvbURhdGE+
IGN1c3RvbURhdGEoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q3VzdG9tRGF0
YShjb25zdCBXZWJWZWN0b3I8Q3VzdG9tRGF0YT4mKTsKKyAgICB2b2lkIGFkZEl0ZW0oY29uc3Qg
SXRlbSYpOwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViRHJhZ0RhdGEoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdD4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcAppbmRleCA1YzMxMjM5MThhZjYz
ZmU4MTU0MzMwZmRmZjI1MmFlNzFjYzFlOTRhLi4zZGQwNTJkM2JhZjA4MzU0MTBlYTI2MzFkNmI4
YjBkNzRiZDZkMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
cmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEu
Y3BwCkBAIC02Niw2ICs2Niw4NyBAQCB2b2lkIFdlYkRyYWdEYXRhOjphc3NpZ24oY29uc3QgV2Vi
RHJhZ0RhdGEmIG90aGVyKQogICAgIGFzc2lnbihwKTsKIH0KIAorV2ViVmVjdG9yPFdlYkRyYWdE
YXRhOjpJdGVtPiBXZWJEcmFnRGF0YTo6aXRlbUxpc3QoKSBjb25zdAoreworICAgIFZlY3RvcjxJ
dGVtPiBpdGVtTGlzdDsKKyAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBtX3ByaXZhdGUtPnR5
cGVzKCk7CisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKG1pbWVUeXBlVGV4dFBsYWluKSkgeworICAg
ICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTVFJJTkc7
CisgICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlwZVRleHRQbGFpbik7Cisg
ICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRlbS5zdHJpbmdEYXRhID0gbV9wcml2YXRl
LT5nZXREYXRhKG1pbWVUeXBlVGV4dFBsYWluLCBpZ25vcmVkKTsKKyAgICAgICAgaXRlbUxpc3Qu
YXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBpZiAodHlwZXMuY29udGFpbnMobWltZVR5cGVUZXh0
VVJJTGlzdCkpIHsKKyAgICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBl
ID0gSXRlbTo6U1RSSU5HOworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBTdHJpbmcobWltZVR5
cGVUZXh0VVJJTGlzdCk7CisgICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRlbS5zdHJp
bmdEYXRhID0gbV9wcml2YXRlLT5nZXREYXRhKG1pbWVUeXBlVVJMLCBpZ25vcmVkKTsKKyAgICAg
ICAgaXRlbS50aXRsZSA9IG1fcHJpdmF0ZS0+dXJsVGl0bGUoKTsKKyAgICAgICAgaXRlbUxpc3Qu
YXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBpZiAodHlwZXMuY29udGFpbnMobWltZVR5cGVUZXh0
SFRNTCkpIHsKKyAgICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0g
SXRlbTo6U1RSSU5HOworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBTdHJpbmcobWltZVR5cGVU
ZXh0SFRNTCk7CisgICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRlbS5zdHJpbmdEYXRh
ID0gbV9wcml2YXRlLT5nZXREYXRhKG1pbWVUeXBlVGV4dEhUTUwsIGlnbm9yZWQpOworICAgICAg
ICBpdGVtLmJhc2VVUkwgPSBtX3ByaXZhdGUtPmh0bWxCYXNlVXJsKCk7CisgICAgICAgIGl0ZW1M
aXN0LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKG1pbWVUeXBl
RG93bmxvYWRVUkwpKSB7CisgICAgICAgIEl0ZW0gaXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdl
VHlwZSA9IEl0ZW06OlNUUklORzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBlID0gU3RyaW5nKG1p
bWVUeXBlRG93bmxvYWRVUkwpOworICAgICAgICBib29sIGlnbm9yZWQ7CisgICAgICAgIGl0ZW0u
c3RyaW5nRGF0YSA9IG1fcHJpdmF0ZS0+Z2V0RGF0YShtaW1lVHlwZURvd25sb2FkVVJMLCBpZ25v
cmVkKTsKKyAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBjb25zdCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiYgY3VzdG9tRGF0YSA9IG1fcHJpdmF0ZS0+Y3VzdG9tRGF0
YSgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gY3VzdG9tRGF0YS5iZWdpbigpOyBpdCAhPSBjdXN0b21EYXRhLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIEl0ZW0gaXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9IEl0ZW06OlNUUklO
RzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBlID0gaXQtPmZpcnN0OworICAgICAgICBpdGVtLnN0
cmluZ0RhdGEgPSBpdC0+c2Vjb25kOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7Cisg
ICAgfQorICAgIGlmIChtX3ByaXZhdGUtPmZpbGVDb250ZW50KCkpIHsKKyAgICAgICAgSXRlbSBp
dGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U0hBUkVEX0JVRkZFUjsKKyAg
ICAgICAgaXRlbS5zaGFyZWRCdWZmZXJEYXRhID0gbV9wcml2YXRlLT5maWxlQ29udGVudCgpOwor
ICAgICAgICBpdGVtLnRpdGxlID0gbV9wcml2YXRlLT5maWxlQ29udGVudEZpbGVuYW1lKCk7Cisg
ICAgfQorICAgIC8vIFdlIGRvbid0IGhhbmRsZSBmaWxlbmFtZXMgaGVyZSwgc2luY2UgdGhleSBh
cmUgbmV2ZXIgdXNlZCBmb3IgZHJhZ2dpbmcgb3V0LgorICAgIHJldHVybiBpdGVtTGlzdDsKK30K
Kwordm9pZCBXZWJEcmFnRGF0YTo6c2V0SXRlbUxpc3QoY29uc3QgV2ViVmVjdG9yPEl0ZW0+JiBp
dGVtTGlzdCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1MaXN0LnNpemUoKTsg
KytpKQorICAgICAgICBhZGRJdGVtKGl0ZW1MaXN0W2ldKTsKK30KKwordm9pZCBXZWJEcmFnRGF0
YTo6YWRkSXRlbShjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHN3aXRjaCAoaXRlbS5zdG9yYWdl
VHlwZSkgeworICAgIGNhc2UgSXRlbTo6U1RSSU5HOgorICAgICAgICBtX3ByaXZhdGUtPnNldERh
dGEoaXRlbS5zdHJpbmdUeXBlLCBpdGVtLnN0cmluZ0RhdGEpOworICAgICAgICBpZiAoU3RyaW5n
KGl0ZW0uc3RyaW5nVHlwZSkgPT0gbWltZVR5cGVUZXh0VVJJTGlzdCkKKyAgICAgICAgICAgIG1f
cHJpdmF0ZS0+c2V0VXJsVGl0bGUoaXRlbS50aXRsZSk7CisgICAgICAgIGVsc2UgaWYgKFN0cmlu
ZyhpdGVtLnN0cmluZ1R5cGUpID09IG1pbWVUeXBlVGV4dEhUTUwpCisgICAgICAgICAgICBtX3By
aXZhdGUtPnNldEh0bWxCYXNlVXJsKGl0ZW0uYmFzZVVSTCk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEl0ZW06OkZJTEVOQU1FOgorICAgICAgICBtX3ByaXZhdGUtPmFkZEZpbGVuYW1lKGl0
ZW0uZmlsZW5hbWVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSXRlbTo6U0hBUkVE
X0JVRkZFUjoKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZHJhZ2dp
bmcgaW4uCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogV2ViU3Ry
aW5nIFdlYkRyYWdEYXRhOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNOdWxsKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125439</attachid>
            <date>2012-02-03 15:49:12 -0800</date>
            <delta_ts>2012-02-03 15:50:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120203154911.patch</filename>
            <type>text/plain</type>
            <size>7988</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMyM2M0Mjk5YWY3ODJkYmZkNGU1YTQ2YWY4YzYxYzdjNzljYzlhMTEuLmY4ODMyYWZjNWQxMmM2
NzNjNWRkM2VlNWQzZmE5MmQ0NDAzZjZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc2V0dGVyL2dldHRlciB0byBleHBvc2Ug
ZHJhZyBkYXRhIGFzIGEgbGlzdCBvZiBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjUKKworICAgICAgICBUaGlzIGNoYW5nZSBzdXBwb3J0
cyB0aGUgdW5pZmljYXRpb24gb2YgdGhlIGRhdGEgc3RvcmUgYmFja2luZyBDaHJvbWl1bURhdGFP
YmplY3QgYW5kCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0Q2hyb21pdW0uIENocm9taXVt
RGF0YU9iamVjdCB3aWxsIHJlcHJlc2VudCBkcmFnZ2luZyBhbmQgY2xpcGJvYXJkIGRhdGEKKyAg
ICAgICAgYXMgYSBsaXN0IG9mIGRhdGEgbm9kZXMgdG8gbWFrZSBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZCB0byBpbXBsZW1lbnQgdGhlIEhUTUwgc3BlYyBmb3IKKyAgICAgICAgRGF0YVRyYW5zZmVy
SXRlbUxpc3QuIFRodXMsIHdlIGV4dGVuZCB0aGUgYWJzdHJhY3Rpb24gdG8gdGhlIHdlYmtpdCBn
bHVlIGxheWVyIHRvCisgICAgICAgIHNpbXBsaWZ5dGhlIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxp
emF0aW9uIGJldHdlZW4gcGxhdGZvcm0tc3BlY2lmaWMgZGF0YSBhbmQgV2ViRHJhZ0RhdGEuCisg
ICAgICAgIFRoZSBvdGhlciBzZXR0ZXIvZ2V0dGVyIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQgYW5k
IHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgQ2hyb21p
dW0gY29kZSBhcmUgZ29uZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYkRyYWdEYXRhKToKKyAgICAgICAgKiBzcmMvV2ViRHJhZ0RhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6aXRlbUxpc3QpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OnNldEl0ZW1MaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OmFkZEl0ZW0pOgorCiAyMDEyLTAyLTAyICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVhbnVwOiBNb3Zl
IGNocm9tZS1zcGVjaWZpYyBmaWxlc3lzdGVtIHR5cGUgaGFuZGxpbmcgY29kZSAoZm9yIEZpbGVT
eXN0ZW0gQVBJKSB1bmRlciBjaHJvbWl1bSBkaXJlY3RvcnkgKHJlLWxhbmRpbmcgcjEwNTM5NSkK
QEAgLTMwOCw2ICszMzIsNyBAQAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCiAK
ICAgICAgICAgKiBERVBTOgorPj4+Pj4+PiBnY2xpZW50CiAKIDIwMTItMDEtMzAgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAppbmRleCAxNzEyMzFl
Y2EzNGJhNDc3N2Q2YWJlYTQyMzYzYzRkYzk2ZDM5NjY3Li4yMzliZmY2Zjk4NTU0ZTk1YTk5MzE5
ZTcxNTEyYjY1ZTZlYzkxN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKQEAgLTMyLDcgKzMyLDkgQEAKICNkZWZpbmUg
V2ViRHJhZ0RhdGFfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGF0
YS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIENocm9taXVt
RGF0YU9iamVjdDsgfQpAQCAtNDEsMTUgKzQzLDQ3IEBAIG5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkRyYWdEYXRhUHJpdmF0ZTsKLWNsYXNzIFdlYlVS
TDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiAKIC8vIEhvbGRzIGRh
dGEgdGhhdCBtYXkgYmUgZXhjaGFuZ2VkIHRocm91Z2ggYSBkcmFnLW4tZHJvcCBvcGVyYXRpb24u
ICBJdCBpcwogLy8gaW5leHBlbnNpdmUgdG8gY29weSBhIFdlYkRyYWdEYXRhIG9iamVjdC4KIGNs
YXNzIFdlYkRyYWdEYXRhIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgSXRlbSB7CisgICAgICAgIGVu
dW0gU3RvcmFnZVR5cGUgeworICAgICAgICAgICAgU1RSSU5HLAorICAgICAgICAgICAgRklMRU5B
TUUsCisgICAgICAgICAgICBTSEFSRURfQlVGRkVSLAorICAgICAgICB9OworCisgICAgICAgIC8v
IFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSB3ZSBzdG9yZSBpbiBJdGVt
IG5vZGVzOgorICAgICAgICAvLyAgIEl0ZW06OlNUUklORzogU3RyaW5nIGRhdGEgd2l0aCBhbiBh
c3NvY2lhdGVkIE1JTUUgdHlwZS4gRGVwZW5kaW5nIG9uIHRoZSBNSU1FIHR5cGUsCisgICAgICAg
IC8vICAgICAgICAgICAgICAgICB0aGVyZSBtYXkgYmUgb3B0aW9uYWwgbWV0YWRhdGEgYXR0cmli
dXRlcyBhcyB3ZWxsLgorICAgICAgICAvLyAgIEl0ZW06OkZJTEVOQU1FOiBTdG9yZXMgdGhlIG5h
bWUgb2Ygb25lIGZpbGUgYmVpbmcgZHJhZ2dlZCBpbnRvIHRoZSByZW5kZXJlci4KKyAgICAgICAg
Ly8gICBJdGVtOjpTSEFSRURfQlVGRkVSOiBBbiBpbWFnZSBiZWluZyBkcmFnZ2VkIG91dCBvZiB0
aGUgcmVuZGVyZXIuIENvbnRhaW5zIGEgYnVmZmVyCisgICAgICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgaG9sZGluZyB0aGUgaW1hZ2UgZGF0YSBhcyB3ZWxsIGFzIHRoZSBzdWdnZXN0ZWQg
bmFtZSBmb3Igc2F2aW5nCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGlt
YWdlIHRvLgorICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZTsKKworICAgICAgICAvLyBP
bmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU1RSSU5HLgorICAgICAgICBXZWJTdHJpbmcg
c3RyaW5nVHlwZTsKKyAgICAgICAgV2ViU3RyaW5nIHN0cmluZ0RhdGE7CisKKyAgICAgICAgLy8g
T25seSB2YWxpZCB3aGVuIHN0b3JhZ2VUeXBlID09IEZJTEVOQU1FLgorICAgICAgICBXZWJTdHJp
bmcgZmlsZW5hbWVEYXRhOworCisgICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdG9yYWdlVHlw
ZSA9PSBTSEFSRURfQlVGRkVSLgorICAgICAgICBXZWJEYXRhIHNoYXJlZEJ1ZmZlckRhdGE7CisK
KyAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRlZCB3aXRoIGEgbGluayB3aGVuIHN0cmluZ1R5cGUg
PT0gInRleHQvdXJpLWxpc3QiLgorICAgICAgICAvLyBGaWxlbmFtZSB3aGVuIHN0b3JhZ2VUeXBl
ID09IFNIQVJFRF9CVUZGRVIuCisgICAgICAgIFdlYlN0cmluZyB0aXRsZTsKKworICAgICAgICAv
LyBPbmx5IHZhbGlkIHdoZW4gc3RyaW5nVHlwZSA9PSAidGV4dC9odG1sIi4KKyAgICAgICAgV2Vi
VVJMIGJhc2VVUkw7CisgICAgfTsKKwogICAgIH5XZWJEcmFnRGF0YSgpIHsgcmVzZXQoKTsgfQog
CiAgICAgV2ViRHJhZ0RhdGEoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KQEAgLTY2LDYgKzEwMCw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsg
fQogCisgICAgV2ViVmVjdG9yPEl0ZW0+IGl0ZW1MaXN0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRJ
dGVtTGlzdChjb25zdCBXZWJWZWN0b3I8SXRlbT4mKTsKKwogICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIHVybCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVUkwoY29uc3Qg
V2ViVVJMJik7CiAKQEAgLTEwNCw2ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJL
SVRfRVhQT1JUIFdlYlZlY3RvcjxDdXN0b21EYXRhPiBjdXN0b21EYXRhKCkgY29uc3Q7CiAgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEN1c3RvbURhdGEoY29uc3QgV2ViVmVjdG9yPEN1c3RvbURh
dGE+Jik7CisgICAgdm9pZCBhZGRJdGVtKGNvbnN0IEl0ZW0mKTsKIAogI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgogICAgIFdlYkRyYWdEYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
cmFnRGF0YS5jcHAKaW5kZXggNWMzMTIzOTE4YWY2M2ZlODE1NDMzMGZkZmYyNTJhZTcxY2MxZTk0
YS4uNzg3ZTM4NDQ5NmZiYjY1ZTY3OWY4NGFjNzIwYTQyMTNjYTQ1NmZhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcApAQCAtNjYsNiArNjYsODggQEAgdm9p
ZCBXZWJEcmFnRGF0YTo6YXNzaWduKGNvbnN0IFdlYkRyYWdEYXRhJiBvdGhlcikKICAgICBhc3Np
Z24ocCk7CiB9CiAKK1dlYlZlY3RvcjxXZWJEcmFnRGF0YTo6SXRlbT4gV2ViRHJhZ0RhdGE6Oml0
ZW1MaXN0KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8SXRlbT4gaXRlbUxpc3Q7CisgICAgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiB0eXBlcyA9IG1fcHJpdmF0ZS0+dHlwZXMoKTsKKyAgICBpZiAodHlw
ZXMuY29udGFpbnMobWltZVR5cGVUZXh0UGxhaW4pKSB7CisgICAgICAgIEl0ZW0gaXRlbTsKKyAg
ICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9IEl0ZW06OlNUUklORzsKKyAgICAgICAgaXRlbS5zdHJp
bmdUeXBlID0gU3RyaW5nKG1pbWVUeXBlVGV4dFBsYWluKTsKKyAgICAgICAgYm9vbCBpZ25vcmVk
OworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERhdGEobWltZVR5cGVU
ZXh0UGxhaW4sIGlnbm9yZWQpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7CisgICAg
fQorICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRVUklMaXN0KSkgeworICAgICAg
ICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTVFJJTkc7Cisg
ICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlwZVRleHRVUklMaXN0KTsKKyAg
ICAgICAgYm9vbCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUt
PmdldERhdGEobWltZVR5cGVVUkwsIGlnbm9yZWQpOworICAgICAgICBpdGVtLnRpdGxlID0gbV9w
cml2YXRlLT51cmxUaXRsZSgpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7CisgICAg
fQorICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRIVE1MKSkgeworICAgICAgICBJ
dGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTVFJJTkc7CisgICAg
ICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlwZVRleHRIVE1MKTsKKyAgICAgICAg
Ym9vbCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERh
dGEobWltZVR5cGVUZXh0SFRNTCwgaWdub3JlZCk7CisgICAgICAgIGl0ZW0uYmFzZVVSTCA9IG1f
cHJpdmF0ZS0+aHRtbEJhc2VVcmwoKTsKKyAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOwor
ICAgIH0KKyAgICBpZiAodHlwZXMuY29udGFpbnMobWltZVR5cGVEb3dubG9hZFVSTCkpIHsKKyAg
ICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U1RSSU5H
OworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBTdHJpbmcobWltZVR5cGVEb3dubG9hZFVSTCk7
CisgICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRlbS5zdHJpbmdEYXRhID0gbV9wcml2
YXRlLT5nZXREYXRhKG1pbWVUeXBlRG93bmxvYWRVUkwsIGlnbm9yZWQpOworICAgICAgICBpdGVt
TGlzdC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBjdXN0b21EYXRhID0gbV9wcml2YXRlLT5jdXN0b21EYXRhKCk7CisgICAgZm9yIChIYXNo
TWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjdXN0b21EYXRhLmJlZ2lu
KCk7IGl0ICE9IGN1c3RvbURhdGEuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgSXRlbSBpdGVtOwor
ICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U1RSSU5HOworICAgICAgICBpdGVtLnN0
cmluZ1R5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGl0ZW0uc3RyaW5nRGF0YSA9IGl0LT5zZWNv
bmQ7CisgICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgaWYgKG1fcHJp
dmF0ZS0+ZmlsZUNvbnRlbnQoKSkgeworICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0u
c3RvcmFnZVR5cGUgPSBJdGVtOjpTSEFSRURfQlVGRkVSOworICAgICAgICBpdGVtLnNoYXJlZEJ1
ZmZlckRhdGEgPSBtX3ByaXZhdGUtPmZpbGVDb250ZW50KCk7CisgICAgICAgIGl0ZW0udGl0bGUg
PSBtX3ByaXZhdGUtPmZpbGVDb250ZW50RmlsZW5hbWUoKTsKKyAgICB9CisgICAgLy8gV2UgZG9u
J3QgaGFuZGxlIGZpbGVuYW1lcyBoZXJlLCBzaW5jZSB0aGV5IGFyZSBuZXZlciB1c2VkIGZvciBk
cmFnZ2luZyBvdXQuCisgICAgcmV0dXJuIGl0ZW1MaXN0OworfQorCit2b2lkIFdlYkRyYWdEYXRh
OjpzZXRJdGVtTGlzdChjb25zdCBXZWJWZWN0b3I8SXRlbT4mIGl0ZW1MaXN0KQoreworICAgIG1f
cHJpdmF0ZS0+Y2xlYXJBbGwoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1MaXN0
LnNpemUoKTsgKytpKQorICAgICAgICBhZGRJdGVtKGl0ZW1MaXN0W2ldKTsKK30KKwordm9pZCBX
ZWJEcmFnRGF0YTo6YWRkSXRlbShjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHN3aXRjaCAoaXRl
bS5zdG9yYWdlVHlwZSkgeworICAgIGNhc2UgSXRlbTo6U1RSSU5HOgorICAgICAgICBtX3ByaXZh
dGUtPnNldERhdGEoaXRlbS5zdHJpbmdUeXBlLCBpdGVtLnN0cmluZ0RhdGEpOworICAgICAgICBp
ZiAoU3RyaW5nKGl0ZW0uc3RyaW5nVHlwZSkgPT0gbWltZVR5cGVUZXh0VVJJTGlzdCkKKyAgICAg
ICAgICAgIG1fcHJpdmF0ZS0+c2V0VXJsVGl0bGUoaXRlbS50aXRsZSk7CisgICAgICAgIGVsc2Ug
aWYgKFN0cmluZyhpdGVtLnN0cmluZ1R5cGUpID09IG1pbWVUeXBlVGV4dEhUTUwpCisgICAgICAg
ICAgICBtX3ByaXZhdGUtPnNldEh0bWxCYXNlVXJsKGl0ZW0uYmFzZVVSTCk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEl0ZW06OkZJTEVOQU1FOgorICAgICAgICBtX3ByaXZhdGUtPmFkZEZp
bGVuYW1lKGl0ZW0uZmlsZW5hbWVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSXRl
bTo6U0hBUkVEX0JVRkZFUjoKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIHdo
ZW4gZHJhZ2dpbmcgaW4uCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30K
KwogV2ViU3RyaW5nIFdlYkRyYWdEYXRhOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNO
dWxsKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125440</attachid>
            <date>2012-02-03 15:50:27 -0800</date>
            <delta_ts>2012-02-03 18:31:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120203155026.patch</filename>
            <type>text/plain</type>
            <size>7837</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMyM2M0Mjk5YWY3ODJkYmZkNGU1YTQ2YWY4YzYxYzdjNzljYzlhMTEuLjBmNjc1MWRkNTVkMTk1
NmNlODgwNDNjY2JkN2MxNmI2Njg3N2RmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc2V0dGVyL2dldHRlciB0byBleHBvc2Ug
ZHJhZyBkYXRhIGFzIGEgbGlzdCBvZiBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjUKKworICAgICAgICBUaGlzIGNoYW5nZSBzdXBwb3J0
cyB0aGUgdW5pZmljYXRpb24gb2YgdGhlIGRhdGEgc3RvcmUgYmFja2luZyBDaHJvbWl1bURhdGFP
YmplY3QgYW5kCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0Q2hyb21pdW0uIENocm9taXVt
RGF0YU9iamVjdCB3aWxsIHJlcHJlc2VudCBkcmFnZ2luZyBhbmQgY2xpcGJvYXJkIGRhdGEKKyAg
ICAgICAgYXMgYSBsaXN0IG9mIGRhdGEgbm9kZXMgdG8gbWFrZSBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZCB0byBpbXBsZW1lbnQgdGhlIEhUTUwgc3BlYyBmb3IKKyAgICAgICAgRGF0YVRyYW5zZmVy
SXRlbUxpc3QuIFRodXMsIHdlIGV4dGVuZCB0aGUgYWJzdHJhY3Rpb24gdG8gdGhlIHdlYmtpdCBn
bHVlIGxheWVyIHRvCisgICAgICAgIHNpbXBsaWZ5dGhlIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxp
emF0aW9uIGJldHdlZW4gcGxhdGZvcm0tc3BlY2lmaWMgZGF0YSBhbmQgV2ViRHJhZ0RhdGEuCisg
ICAgICAgIFRoZSBvdGhlciBzZXR0ZXIvZ2V0dGVyIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQgYW5k
IHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaW4KKyAgICAgICAgQ2hyb21p
dW0gY29kZSBhcmUgZ29uZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYkRyYWdEYXRhKToKKyAgICAgICAgKiBzcmMvV2ViRHJhZ0RhdGEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6aXRlbUxpc3QpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OnNldEl0ZW1MaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OmFkZEl0ZW0pOgorCiAyMDEyLTAyLTAyICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVhbnVwOiBNb3Zl
IGNocm9tZS1zcGVjaWZpYyBmaWxlc3lzdGVtIHR5cGUgaGFuZGxpbmcgY29kZSAoZm9yIEZpbGVT
eXN0ZW0gQVBJKSB1bmRlciBjaHJvbWl1bSBkaXJlY3RvcnkgKHJlLWxhbmRpbmcgcjEwNTM5NSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRy
YWdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFn
RGF0YS5oCmluZGV4IDE3MTIzMWVjYTM0YmE0Nzc3ZDZhYmVhNDIzNjNjNGRjOTZkMzk2NjcuLjIz
OWJmZjZmOTg1NTRlOTVhOTkzMTllNzE1MTJiNjVlNmVjOTE3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaApAQCAtMzIs
NyArMzIsOSBAQAogI2RlZmluZSBXZWJEcmFnRGF0YV9oCiAKICNpbmNsdWRlICJXZWJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVVJMLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OyB9CkBAIC00MSwxNSArNDMsNDcgQEAgbmFt
ZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJEYXRhOwogY2xhc3MgV2ViRHJhZ0RhdGFQ
cml2YXRlOwotY2xhc3MgV2ViVVJMOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZl
Y3RvcjsKIAogLy8gSG9sZHMgZGF0YSB0aGF0IG1heSBiZSBleGNoYW5nZWQgdGhyb3VnaCBhIGRy
YWctbi1kcm9wIG9wZXJhdGlvbi4gIEl0IGlzCiAvLyBpbmV4cGVuc2l2ZSB0byBjb3B5IGEgV2Vi
RHJhZ0RhdGEgb2JqZWN0LgogY2xhc3MgV2ViRHJhZ0RhdGEgewogcHVibGljOgorICAgIHN0cnVj
dCBJdGVtIHsKKyAgICAgICAgZW51bSBTdG9yYWdlVHlwZSB7CisgICAgICAgICAgICBTVFJJTkcs
CisgICAgICAgICAgICBGSUxFTkFNRSwKKyAgICAgICAgICAgIFNIQVJFRF9CVUZGRVIsCisgICAg
ICAgIH07CisKKyAgICAgICAgLy8gVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCB0eXBlcyBvZiBk
YXRhIHdlIHN0b3JlIGluIEl0ZW0gbm9kZXM6CisgICAgICAgIC8vICAgSXRlbTo6U1RSSU5HOiBT
dHJpbmcgZGF0YSB3aXRoIGFuIGFzc29jaWF0ZWQgTUlNRSB0eXBlLiBEZXBlbmRpbmcgb24gdGhl
IE1JTUUgdHlwZSwKKyAgICAgICAgLy8gICAgICAgICAgICAgICAgIHRoZXJlIG1heSBiZSBvcHRp
b25hbCBtZXRhZGF0YSBhdHRyaWJ1dGVzIGFzIHdlbGwuCisgICAgICAgIC8vICAgSXRlbTo6RklM
RU5BTUU6IFN0b3JlcyB0aGUgbmFtZSBvZiBvbmUgZmlsZSBiZWluZyBkcmFnZ2VkIGludG8gdGhl
IHJlbmRlcmVyLgorICAgICAgICAvLyAgIEl0ZW06OlNIQVJFRF9CVUZGRVI6IEFuIGltYWdlIGJl
aW5nIGRyYWdnZWQgb3V0IG9mIHRoZSByZW5kZXJlci4gQ29udGFpbnMgYSBidWZmZXIKKyAgICAg
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSBpbWFnZSBkYXRhIGFzIHdl
bGwgYXMgdGhlIHN1Z2dlc3RlZCBuYW1lIGZvciBzYXZpbmcKKyAgICAgICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICB0aGUgaW1hZ2UgdG8uCisgICAgICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2VU
eXBlOworCisgICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdG9yYWdlVHlwZSA9PSBTVFJJTkcu
CisgICAgICAgIFdlYlN0cmluZyBzdHJpbmdUeXBlOworICAgICAgICBXZWJTdHJpbmcgc3RyaW5n
RGF0YTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gRklMRU5B
TUUuCisgICAgICAgIFdlYlN0cmluZyBmaWxlbmFtZURhdGE7CisKKyAgICAgICAgLy8gT25seSB2
YWxpZCB3aGVuIHN0b3JhZ2VUeXBlID09IFNIQVJFRF9CVUZGRVIuCisgICAgICAgIFdlYkRhdGEg
c2hhcmVkQnVmZmVyRGF0YTsKKworICAgICAgICAvLyBUaXRsZSBhc3NvY2lhdGVkIHdpdGggYSBs
aW5rIHdoZW4gc3RyaW5nVHlwZSA9PSAidGV4dC91cmktbGlzdCIuCisgICAgICAgIC8vIEZpbGVu
YW1lIHdoZW4gc3RvcmFnZVR5cGUgPT0gU0hBUkVEX0JVRkZFUi4KKyAgICAgICAgV2ViU3RyaW5n
IHRpdGxlOworCisgICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdHJpbmdUeXBlID09ICJ0ZXh0
L2h0bWwiLgorICAgICAgICBXZWJVUkwgYmFzZVVSTDsKKyAgICB9OworCiAgICAgfldlYkRyYWdE
YXRhKCkgeyByZXNldCgpOyB9CiAKICAgICBXZWJEcmFnRGF0YSgpIDogbV9wcml2YXRlKDApIHsg
fQpAQCAtNjYsNiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiAhbV9wcml2YXRlOyB9CiAKKyAgICBXZWJWZWN0b3I8SXRlbT4gaXRlbUxpc3QoKSBj
b25zdDsKKyAgICB2b2lkIHNldEl0ZW1MaXN0KGNvbnN0IFdlYlZlY3RvcjxJdGVtPiYpOworCiAg
ICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwmKTsKIApAQCAtMTA0LDYgKzE0MSw3IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPEN1c3RvbURhdGE+IGN1c3Rv
bURhdGEoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q3VzdG9tRGF0YShjb25z
dCBXZWJWZWN0b3I8Q3VzdG9tRGF0YT4mKTsKKyAgICB2b2lkIGFkZEl0ZW0oY29uc3QgSXRlbSYp
OwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViRHJhZ0RhdGEoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdD4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcAppbmRleCA1YzMxMjM5MThhZjYzZmU4MTU0
MzMwZmRmZjI1MmFlNzFjYzFlOTRhLi43ODdlMzg0NDk2ZmJiNjVlNjc5Zjg0YWM3MjBhNDIxM2Nh
NDU2ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwCkBA
IC02Niw2ICs2Niw4OCBAQCB2b2lkIFdlYkRyYWdEYXRhOjphc3NpZ24oY29uc3QgV2ViRHJhZ0Rh
dGEmIG90aGVyKQogICAgIGFzc2lnbihwKTsKIH0KIAorV2ViVmVjdG9yPFdlYkRyYWdEYXRhOjpJ
dGVtPiBXZWJEcmFnRGF0YTo6aXRlbUxpc3QoKSBjb25zdAoreworICAgIFZlY3RvcjxJdGVtPiBp
dGVtTGlzdDsKKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHR5cGVzID0gbV9wcml2YXRlLT50
eXBlcygpOworICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRQbGFpbikpIHsKKyAg
ICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U1RSSU5H
OworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBTdHJpbmcobWltZVR5cGVUZXh0UGxhaW4pOwor
ICAgICAgICBib29sIGlnbm9yZWQ7CisgICAgICAgIGl0ZW0uc3RyaW5nRGF0YSA9IG1fcHJpdmF0
ZS0+Z2V0RGF0YShtaW1lVHlwZVRleHRQbGFpbiwgaWdub3JlZCk7CisgICAgICAgIGl0ZW1MaXN0
LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKG1pbWVUeXBlVGV4
dFVSSUxpc3QpKSB7CisgICAgICAgIEl0ZW0gaXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdlVHlw
ZSA9IEl0ZW06OlNUUklORzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBlID0gU3RyaW5nKG1pbWVU
eXBlVGV4dFVSSUxpc3QpOworICAgICAgICBib29sIGlnbm9yZWQ7CisgICAgICAgIGl0ZW0uc3Ry
aW5nRGF0YSA9IG1fcHJpdmF0ZS0+Z2V0RGF0YShtaW1lVHlwZVVSTCwgaWdub3JlZCk7CisgICAg
ICAgIGl0ZW0udGl0bGUgPSBtX3ByaXZhdGUtPnVybFRpdGxlKCk7CisgICAgICAgIGl0ZW1MaXN0
LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKG1pbWVUeXBlVGV4
dEhUTUwpKSB7CisgICAgICAgIEl0ZW0gaXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9
IEl0ZW06OlNUUklORzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBlID0gU3RyaW5nKG1pbWVUeXBl
VGV4dEhUTUwpOworICAgICAgICBib29sIGlnbm9yZWQ7CisgICAgICAgIGl0ZW0uc3RyaW5nRGF0
YSA9IG1fcHJpdmF0ZS0+Z2V0RGF0YShtaW1lVHlwZVRleHRIVE1MLCBpZ25vcmVkKTsKKyAgICAg
ICAgaXRlbS5iYXNlVVJMID0gbV9wcml2YXRlLT5odG1sQmFzZVVybCgpOworICAgICAgICBpdGVt
TGlzdC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlw
ZURvd25sb2FkVVJMKSkgeworICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFn
ZVR5cGUgPSBJdGVtOjpTVFJJTkc7CisgICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyht
aW1lVHlwZURvd25sb2FkVVJMKTsKKyAgICAgICAgYm9vbCBpZ25vcmVkOworICAgICAgICBpdGVt
LnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERhdGEobWltZVR5cGVEb3dubG9hZFVSTCwgaWdu
b3JlZCk7CisgICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGN1c3RvbURhdGEgPSBtX3ByaXZhdGUtPmN1c3RvbURh
dGEoKTsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGN1c3RvbURhdGEuYmVnaW4oKTsgaXQgIT0gY3VzdG9tRGF0YS5lbmQoKTsgKytpdCkgewor
ICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTVFJJ
Tkc7CisgICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IGl0LT5maXJzdDsKKyAgICAgICAgaXRlbS5z
dHJpbmdEYXRhID0gaXQtPnNlY29uZDsKKyAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOwor
ICAgIH0KKyAgICBpZiAobV9wcml2YXRlLT5maWxlQ29udGVudCgpKSB7CisgICAgICAgIEl0ZW0g
aXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9IEl0ZW06OlNIQVJFRF9CVUZGRVI7Cisg
ICAgICAgIGl0ZW0uc2hhcmVkQnVmZmVyRGF0YSA9IG1fcHJpdmF0ZS0+ZmlsZUNvbnRlbnQoKTsK
KyAgICAgICAgaXRlbS50aXRsZSA9IG1fcHJpdmF0ZS0+ZmlsZUNvbnRlbnRGaWxlbmFtZSgpOwor
ICAgIH0KKyAgICAvLyBXZSBkb24ndCBoYW5kbGUgZmlsZW5hbWVzIGhlcmUsIHNpbmNlIHRoZXkg
YXJlIG5ldmVyIHVzZWQgZm9yIGRyYWdnaW5nIG91dC4KKyAgICByZXR1cm4gaXRlbUxpc3Q7Cit9
CisKK3ZvaWQgV2ViRHJhZ0RhdGE6OnNldEl0ZW1MaXN0KGNvbnN0IFdlYlZlY3RvcjxJdGVtPiYg
aXRlbUxpc3QpCit7CisgICAgbV9wcml2YXRlLT5jbGVhckFsbCgpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbUxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIGFkZEl0ZW0oaXRlbUxp
c3RbaV0pOworfQorCit2b2lkIFdlYkRyYWdEYXRhOjphZGRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0p
Cit7CisgICAgc3dpdGNoIChpdGVtLnN0b3JhZ2VUeXBlKSB7CisgICAgY2FzZSBJdGVtOjpTVFJJ
Tkc6CisgICAgICAgIG1fcHJpdmF0ZS0+c2V0RGF0YShpdGVtLnN0cmluZ1R5cGUsIGl0ZW0uc3Ry
aW5nRGF0YSk7CisgICAgICAgIGlmIChTdHJpbmcoaXRlbS5zdHJpbmdUeXBlKSA9PSBtaW1lVHlw
ZVRleHRVUklMaXN0KQorICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRVcmxUaXRsZShpdGVtLnRp
dGxlKTsKKyAgICAgICAgZWxzZSBpZiAoU3RyaW5nKGl0ZW0uc3RyaW5nVHlwZSkgPT0gbWltZVR5
cGVUZXh0SFRNTCkKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0SHRtbEJhc2VVcmwoaXRlbS5i
YXNlVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSXRlbTo6RklMRU5BTUU6CisgICAg
ICAgIG1fcHJpdmF0ZS0+YWRkRmlsZW5hbWUoaXRlbS5maWxlbmFtZURhdGEpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBJdGVtOjpTSEFSRURfQlVGRkVSOgorICAgICAgICAvLyBUaGlzIHNo
b3VsZCBuZXZlciBoYXBwZW4gd2hlbiBkcmFnZ2luZyBpbi4KKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCiBXZWJTdHJpbmcgV2ViRHJhZ0RhdGE6OnVybCgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFpc051bGwoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125458</attachid>
            <date>2012-02-03 18:31:41 -0800</date>
            <delta_ts>2012-02-06 11:39:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120203183140.patch</filename>
            <type>text/plain</type>
            <size>7838</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMyM2M0Mjk5YWY3ODJkYmZkNGU1YTQ2YWY4YzYxYzdjNzljYzlhMTEuLjk1YTI4NzllYWNiNDlh
OTU5ZDUyZTQ5NzVjZGUyMTNkNDI1YWEyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc2V0dGVyL2dldHRlciB0byBleHBvc2Ug
ZHJhZyBkYXRhIGFzIGEgbGlzdCBvZiBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjUKKworICAgICAgICBUaGlzIGNoYW5nZSBzdXBwb3J0
cyB0aGUgdW5pZmljYXRpb24gb2YgdGhlIGRhdGEgc3RvcmUgYmFja2luZyBDaHJvbWl1bURhdGFP
YmplY3QgYW5kCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0Q2hyb21pdW0uIENocm9taXVt
RGF0YU9iamVjdCB3aWxsIHJlcHJlc2VudCBkcmFnZ2luZyBhbmQgY2xpcGJvYXJkIGRhdGEKKyAg
ICAgICAgYXMgYSBsaXN0IG9mIGRhdGEgbm9kZXMgdG8gbWFrZSBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZCB0byBpbXBsZW1lbnQgdGhlIEhUTUwgc3BlYyBmb3IKKyAgICAgICAgRGF0YVRyYW5zZmVy
SXRlbUxpc3QuIFRodXMsIHdlIGV4dGVuZCB0aGUgYWJzdHJhY3Rpb24gdG8gdGhlIHdlYmtpdCBn
bHVlIGxheWVyIHRvCisgICAgICAgIHNpbXBsaWZ5IHRoZSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFs
aXphdGlvbiBiZXR3ZWVuIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEgYW5kIFdlYkRyYWdEYXRhLgor
ICAgICAgICBUaGUgb3RoZXIgc2V0dGVyL2dldHRlciBtZXRob2RzIGFyZSBkZXByZWNhdGVkIGFu
ZCB3aWxsIGJlIHJlbW92ZWQgb25jZSB0aGUgZGVwZW5kZW5jaWVzIGluCisgICAgICAgIENocm9t
aXVtIGNvZGUgYXJlIGdvbmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJEcmFnRGF0YSk6CisgICAgICAgICogc3JjL1dlYkRyYWdEYXRh
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6Oml0ZW1MaXN0KToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpzZXRJdGVtTGlzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjphZGRJdGVtKToKKwogMjAxMi0wMi0wMiAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2xlYW51cDogTW92
ZSBjaHJvbWUtc3BlY2lmaWMgZmlsZXN5c3RlbSB0eXBlIGhhbmRsaW5nIGNvZGUgKGZvciBGaWxl
U3lzdGVtIEFQSSkgdW5kZXIgY2hyb21pdW0gZGlyZWN0b3J5IChyZS1sYW5kaW5nIHIxMDUzOTUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJE
cmFnRGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJh
Z0RhdGEuaAppbmRleCAxNzEyMzFlY2EzNGJhNDc3N2Q2YWJlYTQyMzYzYzRkYzk2ZDM5NjY3Li4y
MzliZmY2Zjk4NTU0ZTk1YTk5MzE5ZTcxNTEyYjY1ZTZlYzkxN2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKQEAgLTMy
LDcgKzMyLDkgQEAKICNkZWZpbmUgV2ViRHJhZ0RhdGFfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsgfQpAQCAtNDEsMTUgKzQzLDQ3IEBAIG5h
bWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkRyYWdEYXRh
UHJpdmF0ZTsKLWNsYXNzIFdlYlVSTDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJW
ZWN0b3I7CiAKIC8vIEhvbGRzIGRhdGEgdGhhdCBtYXkgYmUgZXhjaGFuZ2VkIHRocm91Z2ggYSBk
cmFnLW4tZHJvcCBvcGVyYXRpb24uICBJdCBpcwogLy8gaW5leHBlbnNpdmUgdG8gY29weSBhIFdl
YkRyYWdEYXRhIG9iamVjdC4KIGNsYXNzIFdlYkRyYWdEYXRhIHsKIHB1YmxpYzoKKyAgICBzdHJ1
Y3QgSXRlbSB7CisgICAgICAgIGVudW0gU3RvcmFnZVR5cGUgeworICAgICAgICAgICAgU1RSSU5H
LAorICAgICAgICAgICAgRklMRU5BTUUsCisgICAgICAgICAgICBTSEFSRURfQlVGRkVSLAorICAg
ICAgICB9OworCisgICAgICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgdHlwZXMgb2Yg
ZGF0YSB3ZSBzdG9yZSBpbiBJdGVtIG5vZGVzOgorICAgICAgICAvLyAgIEl0ZW06OlNUUklORzog
U3RyaW5nIGRhdGEgd2l0aCBhbiBhc3NvY2lhdGVkIE1JTUUgdHlwZS4gRGVwZW5kaW5nIG9uIHRo
ZSBNSU1FIHR5cGUsCisgICAgICAgIC8vICAgICAgICAgICAgICAgICB0aGVyZSBtYXkgYmUgb3B0
aW9uYWwgbWV0YWRhdGEgYXR0cmlidXRlcyBhcyB3ZWxsLgorICAgICAgICAvLyAgIEl0ZW06OkZJ
TEVOQU1FOiBTdG9yZXMgdGhlIG5hbWUgb2Ygb25lIGZpbGUgYmVpbmcgZHJhZ2dlZCBpbnRvIHRo
ZSByZW5kZXJlci4KKyAgICAgICAgLy8gICBJdGVtOjpTSEFSRURfQlVGRkVSOiBBbiBpbWFnZSBi
ZWluZyBkcmFnZ2VkIG91dCBvZiB0aGUgcmVuZGVyZXIuIENvbnRhaW5zIGEgYnVmZmVyCisgICAg
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgaW1hZ2UgZGF0YSBhcyB3
ZWxsIGFzIHRoZSBzdWdnZXN0ZWQgbmFtZSBmb3Igc2F2aW5nCisgICAgICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgdGhlIGltYWdlIHRvLgorICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdl
VHlwZTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU1RSSU5H
LgorICAgICAgICBXZWJTdHJpbmcgc3RyaW5nVHlwZTsKKyAgICAgICAgV2ViU3RyaW5nIHN0cmlu
Z0RhdGE7CisKKyAgICAgICAgLy8gT25seSB2YWxpZCB3aGVuIHN0b3JhZ2VUeXBlID09IEZJTEVO
QU1FLgorICAgICAgICBXZWJTdHJpbmcgZmlsZW5hbWVEYXRhOworCisgICAgICAgIC8vIE9ubHkg
dmFsaWQgd2hlbiBzdG9yYWdlVHlwZSA9PSBTSEFSRURfQlVGRkVSLgorICAgICAgICBXZWJEYXRh
IHNoYXJlZEJ1ZmZlckRhdGE7CisKKyAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRlZCB3aXRoIGEg
bGluayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxpc3QiLgorICAgICAgICAvLyBGaWxl
bmFtZSB3aGVuIHN0b3JhZ2VUeXBlID09IFNIQVJFRF9CVUZGRVIuCisgICAgICAgIFdlYlN0cmlu
ZyB0aXRsZTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RyaW5nVHlwZSA9PSAidGV4
dC9odG1sIi4KKyAgICAgICAgV2ViVVJMIGJhc2VVUkw7CisgICAgfTsKKwogICAgIH5XZWJEcmFn
RGF0YSgpIHsgcmVzZXQoKTsgfQogCiAgICAgV2ViRHJhZ0RhdGEoKSA6IG1fcHJpdmF0ZSgwKSB7
IH0KQEAgLTY2LDYgKzEwMCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIW1fcHJpdmF0ZTsgfQogCisgICAgV2ViVmVjdG9yPEl0ZW0+IGl0ZW1MaXN0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRJdGVtTGlzdChjb25zdCBXZWJWZWN0b3I8SXRlbT4mKTsKKwog
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHVybCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRVUkwoY29uc3QgV2ViVVJMJik7CiAKQEAgLTEwNCw2ICsxNDEsNyBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxDdXN0b21EYXRhPiBjdXN0
b21EYXRhKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEN1c3RvbURhdGEoY29u
c3QgV2ViVmVjdG9yPEN1c3RvbURhdGE+Jik7CisgICAgdm9pZCBhZGRJdGVtKGNvbnN0IEl0ZW0m
KTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkRyYWdEYXRhKGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAKaW5kZXggNWMzMTIzOTE4YWY2M2ZlODE1
NDMzMGZkZmYyNTJhZTcxY2MxZTk0YS4uNzg3ZTM4NDQ5NmZiYjY1ZTY3OWY4NGFjNzIwYTQyMTNj
YTQ1NmZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcApA
QCAtNjYsNiArNjYsODggQEAgdm9pZCBXZWJEcmFnRGF0YTo6YXNzaWduKGNvbnN0IFdlYkRyYWdE
YXRhJiBvdGhlcikKICAgICBhc3NpZ24ocCk7CiB9CiAKK1dlYlZlY3RvcjxXZWJEcmFnRGF0YTo6
SXRlbT4gV2ViRHJhZ0RhdGE6Oml0ZW1MaXN0KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8SXRlbT4g
aXRlbUxpc3Q7CisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiB0eXBlcyA9IG1fcHJpdmF0ZS0+
dHlwZXMoKTsKKyAgICBpZiAodHlwZXMuY29udGFpbnMobWltZVR5cGVUZXh0UGxhaW4pKSB7Cisg
ICAgICAgIEl0ZW0gaXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9IEl0ZW06OlNUUklO
RzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBlID0gU3RyaW5nKG1pbWVUeXBlVGV4dFBsYWluKTsK
KyAgICAgICAgYm9vbCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZh
dGUtPmdldERhdGEobWltZVR5cGVUZXh0UGxhaW4sIGlnbm9yZWQpOworICAgICAgICBpdGVtTGlz
dC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRl
eHRVUklMaXN0KSkgeworICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5
cGUgPSBJdGVtOjpTVFJJTkc7CisgICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1l
VHlwZVRleHRVUklMaXN0KTsKKyAgICAgICAgYm9vbCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0
cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERhdGEobWltZVR5cGVVUkwsIGlnbm9yZWQpOworICAg
ICAgICBpdGVtLnRpdGxlID0gbV9wcml2YXRlLT51cmxUaXRsZSgpOworICAgICAgICBpdGVtTGlz
dC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRl
eHRIVE1MKSkgeworICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUg
PSBJdGVtOjpTVFJJTkc7CisgICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlw
ZVRleHRIVE1MKTsKKyAgICAgICAgYm9vbCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0Rh
dGEgPSBtX3ByaXZhdGUtPmdldERhdGEobWltZVR5cGVUZXh0SFRNTCwgaWdub3JlZCk7CisgICAg
ICAgIGl0ZW0uYmFzZVVSTCA9IG1fcHJpdmF0ZS0+aHRtbEJhc2VVcmwoKTsKKyAgICAgICAgaXRl
bUxpc3QuYXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBpZiAodHlwZXMuY29udGFpbnMobWltZVR5
cGVEb3dubG9hZFVSTCkpIHsKKyAgICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3Jh
Z2VUeXBlID0gSXRlbTo6U1RSSU5HOworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBTdHJpbmco
bWltZVR5cGVEb3dubG9hZFVSTCk7CisgICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRl
bS5zdHJpbmdEYXRhID0gbV9wcml2YXRlLT5nZXREYXRhKG1pbWVUeXBlRG93bmxvYWRVUkwsIGln
bm9yZWQpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBjdXN0b21EYXRhID0gbV9wcml2YXRlLT5jdXN0b21E
YXRhKCk7CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBjdXN0b21EYXRhLmJlZ2luKCk7IGl0ICE9IGN1c3RvbURhdGEuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U1RS
SU5HOworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGl0ZW0u
c3RyaW5nRGF0YSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVtKTsK
KyAgICB9CisgICAgaWYgKG1fcHJpdmF0ZS0+ZmlsZUNvbnRlbnQoKSkgeworICAgICAgICBJdGVt
IGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTSEFSRURfQlVGRkVSOwor
ICAgICAgICBpdGVtLnNoYXJlZEJ1ZmZlckRhdGEgPSBtX3ByaXZhdGUtPmZpbGVDb250ZW50KCk7
CisgICAgICAgIGl0ZW0udGl0bGUgPSBtX3ByaXZhdGUtPmZpbGVDb250ZW50RmlsZW5hbWUoKTsK
KyAgICB9CisgICAgLy8gV2UgZG9uJ3QgaGFuZGxlIGZpbGVuYW1lcyBoZXJlLCBzaW5jZSB0aGV5
IGFyZSBuZXZlciB1c2VkIGZvciBkcmFnZ2luZyBvdXQuCisgICAgcmV0dXJuIGl0ZW1MaXN0Owor
fQorCit2b2lkIFdlYkRyYWdEYXRhOjpzZXRJdGVtTGlzdChjb25zdCBXZWJWZWN0b3I8SXRlbT4m
IGl0ZW1MaXN0KQoreworICAgIG1fcHJpdmF0ZS0+Y2xlYXJBbGwoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGl0ZW1MaXN0LnNpemUoKTsgKytpKQorICAgICAgICBhZGRJdGVtKGl0ZW1M
aXN0W2ldKTsKK30KKwordm9pZCBXZWJEcmFnRGF0YTo6YWRkSXRlbShjb25zdCBJdGVtJiBpdGVt
KQoreworICAgIHN3aXRjaCAoaXRlbS5zdG9yYWdlVHlwZSkgeworICAgIGNhc2UgSXRlbTo6U1RS
SU5HOgorICAgICAgICBtX3ByaXZhdGUtPnNldERhdGEoaXRlbS5zdHJpbmdUeXBlLCBpdGVtLnN0
cmluZ0RhdGEpOworICAgICAgICBpZiAoU3RyaW5nKGl0ZW0uc3RyaW5nVHlwZSkgPT0gbWltZVR5
cGVUZXh0VVJJTGlzdCkKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0VXJsVGl0bGUoaXRlbS50
aXRsZSk7CisgICAgICAgIGVsc2UgaWYgKFN0cmluZyhpdGVtLnN0cmluZ1R5cGUpID09IG1pbWVU
eXBlVGV4dEhUTUwpCisgICAgICAgICAgICBtX3ByaXZhdGUtPnNldEh0bWxCYXNlVXJsKGl0ZW0u
YmFzZVVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEl0ZW06OkZJTEVOQU1FOgorICAg
ICAgICBtX3ByaXZhdGUtPmFkZEZpbGVuYW1lKGl0ZW0uZmlsZW5hbWVEYXRhKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgSXRlbTo6U0hBUkVEX0JVRkZFUjoKKyAgICAgICAgLy8gVGhpcyBz
aG91bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZHJhZ2dpbmcgaW4uCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK30KKwogV2ViU3RyaW5nIFdlYkRyYWdEYXRhOjp1cmwoKSBjb25z
dAogewogICAgIEFTU0VSVCghaXNOdWxsKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125678</attachid>
            <date>2012-02-06 11:39:22 -0800</date>
            <delta_ts>2012-02-15 13:29:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77125-20120206113921.patch</filename>
            <type>text/plain</type>
            <size>8044</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMyM2M0Mjk5YWY3ODJkYmZkNGU1YTQ2YWY4YzYxYzdjNzljYzlhMTEuLjk1YTI4NzllYWNiNDlh
OTU5ZDUyZTQ5NzVjZGUyMTNkNDI1YWEyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgc2V0dGVyL2dldHRlciB0byBleHBvc2Ug
ZHJhZyBkYXRhIGFzIGEgbGlzdCBvZiBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjUKKworICAgICAgICBUaGlzIGNoYW5nZSBzdXBwb3J0
cyB0aGUgdW5pZmljYXRpb24gb2YgdGhlIGRhdGEgc3RvcmUgYmFja2luZyBDaHJvbWl1bURhdGFP
YmplY3QgYW5kCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0Q2hyb21pdW0uIENocm9taXVt
RGF0YU9iamVjdCB3aWxsIHJlcHJlc2VudCBkcmFnZ2luZyBhbmQgY2xpcGJvYXJkIGRhdGEKKyAg
ICAgICAgYXMgYSBsaXN0IG9mIGRhdGEgbm9kZXMgdG8gbWFrZSBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZCB0byBpbXBsZW1lbnQgdGhlIEhUTUwgc3BlYyBmb3IKKyAgICAgICAgRGF0YVRyYW5zZmVy
SXRlbUxpc3QuIFRodXMsIHdlIGV4dGVuZCB0aGUgYWJzdHJhY3Rpb24gdG8gdGhlIHdlYmtpdCBn
bHVlIGxheWVyIHRvCisgICAgICAgIHNpbXBsaWZ5IHRoZSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFs
aXphdGlvbiBiZXR3ZWVuIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEgYW5kIFdlYkRyYWdEYXRhLgor
ICAgICAgICBUaGUgb3RoZXIgc2V0dGVyL2dldHRlciBtZXRob2RzIGFyZSBkZXByZWNhdGVkIGFu
ZCB3aWxsIGJlIHJlbW92ZWQgb25jZSB0aGUgZGVwZW5kZW5jaWVzIGluCisgICAgICAgIENocm9t
aXVtIGNvZGUgYXJlIGdvbmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJEcmFnRGF0YSk6CisgICAgICAgICogc3JjL1dlYkRyYWdEYXRh
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6Oml0ZW1MaXN0KToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpzZXRJdGVtTGlzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjphZGRJdGVtKToKKwogMjAxMi0wMi0wMiAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2xlYW51cDogTW92
ZSBjaHJvbWUtc3BlY2lmaWMgZmlsZXN5c3RlbSB0eXBlIGhhbmRsaW5nIGNvZGUgKGZvciBGaWxl
U3lzdGVtIEFQSSkgdW5kZXIgY2hyb21pdW0gZGlyZWN0b3J5IChyZS1sYW5kaW5nIHIxMDUzOTUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJE
cmFnRGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJh
Z0RhdGEuaAppbmRleCAxNzEyMzFlY2EzNGJhNDc3N2Q2YWJlYTQyMzYzYzRkYzk2ZDM5NjY3Li43
ZTk1Mzk5MzdiMzVhMWUxMTFiN2EyZjUxZDMyZDQ3Mzg2ZTdhY2ExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKQEAgLTMy
LDcgKzMyLDkgQEAKICNkZWZpbmUgV2ViRHJhZ0RhdGFfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsgfQpAQCAtNDEsMTUgKzQzLDQ3IEBAIG5h
bWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkRyYWdEYXRh
UHJpdmF0ZTsKLWNsYXNzIFdlYlVSTDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJW
ZWN0b3I7CiAKIC8vIEhvbGRzIGRhdGEgdGhhdCBtYXkgYmUgZXhjaGFuZ2VkIHRocm91Z2ggYSBk
cmFnLW4tZHJvcCBvcGVyYXRpb24uICBJdCBpcwogLy8gaW5leHBlbnNpdmUgdG8gY29weSBhIFdl
YkRyYWdEYXRhIG9iamVjdC4KIGNsYXNzIFdlYkRyYWdEYXRhIHsKIHB1YmxpYzoKKyAgICBzdHJ1
Y3QgSXRlbSB7CisgICAgICAgIGVudW0gU3RvcmFnZVR5cGUgeworICAgICAgICAgICAgU3RvcmFn
ZVR5cGVTdHJpbmcsCisgICAgICAgICAgICBTdG9yYWdlVHlwZUZpbGVuYW1lLAorICAgICAgICAg
ICAgU3RvcmFnZVR5cGVCaW5hcnlEYXRhLAorICAgICAgICB9OworCisgICAgICAgIC8vIFRoZXJl
IGFyZSB0aHJlZSBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSB3ZSBzdG9yZSBpbiBJdGVtIG5vZGVz
OgorICAgICAgICAvLyAgIEl0ZW06OlN0b3JhZ2VUeXBlU3RyaW5nOiBTdHJpbmcgZGF0YSB3aXRo
IGFuIGFzc29jaWF0ZWQgTUlNRSB0eXBlLiBEZXBlbmRpbmcgb24gdGhlCisgICAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUUgdHlwZSwgdGhlcmUgbWF5IGJlIG9wdGlvbmFs
IG1ldGFkYXRhIGF0dHJpYnV0ZXMgYXMgd2VsbC4KKyAgICAgICAgLy8gICBJdGVtOjpTdG9yYWdl
VHlwZUZpbGVuYW1lOiBTdG9yZXMgdGhlIG5hbWUgb2Ygb25lIGZpbGUgYmVpbmcgZHJhZ2dlZCBp
bnRvIHRoZSByZW5kZXJlci4KKyAgICAgICAgLy8gICBJdGVtOjpTdG9yYWdlVHlwZUJpbmFyeURh
dGE6IEFuIGltYWdlIGJlaW5nIGRyYWdnZWQgb3V0IG9mIHRoZSByZW5kZXJlci4gQ29udGFpbnMg
YQorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyIGhvbGRp
bmcgdGhlIGltYWdlIGRhdGEgYXMgd2VsbCBhcyB0aGUgc3VnZ2VzdGVkCisgICAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGZvciBzYXZpbmcgdGhlIGltYWdlIHRv
LgorICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZTsKKworICAgICAgICAvLyBPbmx5IHZh
bGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVTdHJpbmcuCisgICAgICAgIFdlYlN0
cmluZyBzdHJpbmdUeXBlOworICAgICAgICBXZWJTdHJpbmcgc3RyaW5nRGF0YTsKKworICAgICAg
ICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVGaWxlbmFtZS4K
KyAgICAgICAgV2ViU3RyaW5nIGZpbGVuYW1lRGF0YTsKKworICAgICAgICAvLyBPbmx5IHZhbGlk
IHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVCaW5hcnlEYXRhLgorICAgICAgICBXZWJE
YXRhIGJpbmFyeURhdGE7CisKKyAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRlZCB3aXRoIGEgbGlu
ayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxpc3QiLgorICAgICAgICAvLyBGaWxlbmFt
ZSB3aGVuIHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlQmluYXJ5RGF0YS4KKyAgICAgICAgV2Vi
U3RyaW5nIHRpdGxlOworCisgICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdHJpbmdUeXBlID09
ICJ0ZXh0L2h0bWwiLgorICAgICAgICBXZWJVUkwgYmFzZVVSTDsKKyAgICB9OworCiAgICAgfldl
YkRyYWdEYXRhKCkgeyByZXNldCgpOyB9CiAKICAgICBXZWJEcmFnRGF0YSgpIDogbV9wcml2YXRl
KDApIHsgfQpAQCAtNjYsNiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9CiAKKyAgICBXZWJWZWN0b3I8SXRlbT4gaXRlbUxp
c3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEl0ZW1MaXN0KGNvbnN0IFdlYlZlY3RvcjxJdGVtPiYp
OworCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwmKTsKIApAQCAtMTA0LDYgKzE0MSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPEN1c3RvbURhdGE+
IGN1c3RvbURhdGEoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q3VzdG9tRGF0
YShjb25zdCBXZWJWZWN0b3I8Q3VzdG9tRGF0YT4mKTsKKyAgICB2b2lkIGFkZEl0ZW0oY29uc3Qg
SXRlbSYpOwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViRHJhZ0RhdGEoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdD4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcAppbmRleCA1YzMxMjM5MThhZjYz
ZmU4MTU0MzMwZmRmZjI1MmFlNzFjYzFlOTRhLi45ZjA5NzUxM2EzMGVhZDExNWU4OGE5NWIyZGQx
MzZkOTVhODEwY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
cmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEu
Y3BwCkBAIC02Niw2ICs2Niw4OCBAQCB2b2lkIFdlYkRyYWdEYXRhOjphc3NpZ24oY29uc3QgV2Vi
RHJhZ0RhdGEmIG90aGVyKQogICAgIGFzc2lnbihwKTsKIH0KIAorV2ViVmVjdG9yPFdlYkRyYWdE
YXRhOjpJdGVtPiBXZWJEcmFnRGF0YTo6aXRlbUxpc3QoKSBjb25zdAoreworICAgIFZlY3RvcjxJ
dGVtPiBpdGVtTGlzdDsKKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHR5cGVzID0gbV9wcml2
YXRlLT50eXBlcygpOworICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRQbGFpbikp
IHsKKyAgICAgICAgSXRlbSBpdGVtOworICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6
U3RvcmFnZVR5cGVTdHJpbmc7CisgICAgICAgIGl0ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1l
VHlwZVRleHRQbGFpbik7CisgICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgaXRlbS5zdHJp
bmdEYXRhID0gbV9wcml2YXRlLT5nZXREYXRhKG1pbWVUeXBlVGV4dFBsYWluLCBpZ25vcmVkKTsK
KyAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBpZiAodHlwZXMuY29u
dGFpbnMobWltZVR5cGVUZXh0VVJJTGlzdCkpIHsKKyAgICAgICAgSXRlbSBpdGVtOworICAgICAg
ICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U3RvcmFnZVR5cGVTdHJpbmc7CisgICAgICAgIGl0
ZW0uc3RyaW5nVHlwZSA9IFN0cmluZyhtaW1lVHlwZVRleHRVUklMaXN0KTsKKyAgICAgICAgYm9v
bCBpZ25vcmVkOworICAgICAgICBpdGVtLnN0cmluZ0RhdGEgPSBtX3ByaXZhdGUtPmdldERhdGEo
bWltZVR5cGVVUkwsIGlnbm9yZWQpOworICAgICAgICBpdGVtLnRpdGxlID0gbV9wcml2YXRlLT51
cmxUaXRsZSgpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGlm
ICh0eXBlcy5jb250YWlucyhtaW1lVHlwZVRleHRIVE1MKSkgeworICAgICAgICBJdGVtIGl0ZW07
CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTdG9yYWdlVHlwZVN0cmluZzsKKyAg
ICAgICAgaXRlbS5zdHJpbmdUeXBlID0gU3RyaW5nKG1pbWVUeXBlVGV4dEhUTUwpOworICAgICAg
ICBib29sIGlnbm9yZWQ7CisgICAgICAgIGl0ZW0uc3RyaW5nRGF0YSA9IG1fcHJpdmF0ZS0+Z2V0
RGF0YShtaW1lVHlwZVRleHRIVE1MLCBpZ25vcmVkKTsKKyAgICAgICAgaXRlbS5iYXNlVVJMID0g
bV9wcml2YXRlLT5odG1sQmFzZVVybCgpOworICAgICAgICBpdGVtTGlzdC5hcHBlbmQoaXRlbSk7
CisgICAgfQorICAgIGlmICh0eXBlcy5jb250YWlucyhtaW1lVHlwZURvd25sb2FkVVJMKSkgewor
ICAgICAgICBJdGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTdG9y
YWdlVHlwZVN0cmluZzsKKyAgICAgICAgaXRlbS5zdHJpbmdUeXBlID0gU3RyaW5nKG1pbWVUeXBl
RG93bmxvYWRVUkwpOworICAgICAgICBib29sIGlnbm9yZWQ7CisgICAgICAgIGl0ZW0uc3RyaW5n
RGF0YSA9IG1fcHJpdmF0ZS0+Z2V0RGF0YShtaW1lVHlwZURvd25sb2FkVVJMLCBpZ25vcmVkKTsK
KyAgICAgICAgaXRlbUxpc3QuYXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgY3VzdG9tRGF0YSA9IG1fcHJpdmF0ZS0+Y3VzdG9tRGF0YSgpOwor
ICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY3Vz
dG9tRGF0YS5iZWdpbigpOyBpdCAhPSBjdXN0b21EYXRhLmVuZCgpOyArK2l0KSB7CisgICAgICAg
IEl0ZW0gaXRlbTsKKyAgICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9IEl0ZW06OlN0b3JhZ2VUeXBl
U3RyaW5nOworICAgICAgICBpdGVtLnN0cmluZ1R5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGl0
ZW0uc3RyaW5nRGF0YSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGl0ZW1MaXN0LmFwcGVuZChpdGVt
KTsKKyAgICB9CisgICAgaWYgKG1fcHJpdmF0ZS0+ZmlsZUNvbnRlbnQoKSkgeworICAgICAgICBJ
dGVtIGl0ZW07CisgICAgICAgIGl0ZW0uc3RvcmFnZVR5cGUgPSBJdGVtOjpTdG9yYWdlVHlwZUJp
bmFyeURhdGE7CisgICAgICAgIGl0ZW0uYmluYXJ5RGF0YSA9IG1fcHJpdmF0ZS0+ZmlsZUNvbnRl
bnQoKTsKKyAgICAgICAgaXRlbS50aXRsZSA9IG1fcHJpdmF0ZS0+ZmlsZUNvbnRlbnRGaWxlbmFt
ZSgpOworICAgIH0KKyAgICAvLyBXZSBkb24ndCBoYW5kbGUgZmlsZW5hbWVzIGhlcmUsIHNpbmNl
IHRoZXkgYXJlIG5ldmVyIHVzZWQgZm9yIGRyYWdnaW5nIG91dC4KKyAgICByZXR1cm4gaXRlbUxp
c3Q7Cit9CisKK3ZvaWQgV2ViRHJhZ0RhdGE6OnNldEl0ZW1MaXN0KGNvbnN0IFdlYlZlY3RvcjxJ
dGVtPiYgaXRlbUxpc3QpCit7CisgICAgbV9wcml2YXRlLT5jbGVhckFsbCgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaXRlbUxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIGFkZEl0ZW0o
aXRlbUxpc3RbaV0pOworfQorCit2b2lkIFdlYkRyYWdEYXRhOjphZGRJdGVtKGNvbnN0IEl0ZW0m
IGl0ZW0pCit7CisgICAgc3dpdGNoIChpdGVtLnN0b3JhZ2VUeXBlKSB7CisgICAgY2FzZSBJdGVt
OjpTdG9yYWdlVHlwZVN0cmluZzoKKyAgICAgICAgbV9wcml2YXRlLT5zZXREYXRhKGl0ZW0uc3Ry
aW5nVHlwZSwgaXRlbS5zdHJpbmdEYXRhKTsKKyAgICAgICAgaWYgKFN0cmluZyhpdGVtLnN0cmlu
Z1R5cGUpID09IG1pbWVUeXBlVGV4dFVSSUxpc3QpCisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFVybFRpdGxlKGl0ZW0udGl0bGUpOworICAgICAgICBlbHNlIGlmIChTdHJpbmcoaXRlbS5zdHJp
bmdUeXBlKSA9PSBtaW1lVHlwZVRleHRIVE1MKQorICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRI
dG1sQmFzZVVybChpdGVtLmJhc2VVUkwpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJdGVt
OjpTdG9yYWdlVHlwZUZpbGVuYW1lOgorICAgICAgICBtX3ByaXZhdGUtPmFkZEZpbGVuYW1lKGl0
ZW0uZmlsZW5hbWVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSXRlbTo6U3RvcmFn
ZVR5cGVCaW5hcnlEYXRhOgorICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gd2hl
biBkcmFnZ2luZyBpbi4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
CiBXZWJTdHJpbmcgV2ViRHJhZ0RhdGE6OnVybCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc051
bGwoKSk7Cg==
</data>
<flag name="review"
          id="127238"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="129300"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>