<?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>123375</bug_id>
          
          <creation_ts>2013-10-25 17:13:06 -0700</creation_ts>
          <short_desc>WebIconDatabase can miss private browsing state changes</short_desc>
          <delta_ts>2013-10-27 22:41:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>123389</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943821</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 17:13:06 -0700</bug_when>
    <thetext>WebIconDatabase can miss private browsing state changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943822</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 17:13:23 -0700</bug_when>
    <thetext>In radar as &lt;rdar://problem/15322318&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943823</commentid>
    <comment_count>2</comment_count>
      <attachid>215230</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 17:16:17 -0700</bug_when>
    <thetext>Created attachment 215230
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943828</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 17:27:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/158075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943850</commentid>
    <comment_count>4</comment_count>
      <attachid>215230</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-25 22:03:28 -0700</bug_when>
    <thetext>Comment on attachment 215230
Patch v1 

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

&gt; Source/WebKit2/UIProcess/WebContext.cpp:432
&gt; +    for (size_t i = 0, count = contexts.size(); i &lt; count; ++i)
&gt; +        contexts[i]-&gt;setPrivateBrowsingEnabled(true);

This is semantically incorrect. WebContext::willStopUsingPrivateBrowsing() is called when any context starts to use private browsing. Due to WebKit2 API limitations, the best thing we can do is create a private browsing session just in case. But it doesn&apos;t mean that all context start enter private browsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943896</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-26 10:02:39 -0700</bug_when>
    <thetext>Also, this broke an API test on debug WK2 bot, so I&apos;m going to roll out.

WebKit2.PrivateBrowsingPushStateNoHistoryCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943898</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-26 10:05:02 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 123389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943902</commentid>
    <comment_count>7</comment_count>
      <attachid>215230</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-26 10:08:14 -0700</bug_when>
    <thetext>Comment on attachment 215230
Patch v1 

Rolled out in http://trac.webkit.org/changeset/158087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943926</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-26 16:22:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 215230 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215230&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebContext.cpp:432
&gt; &gt; +    for (size_t i = 0, count = contexts.size(); i &lt; count; ++i)
&gt; &gt; +        contexts[i]-&gt;setPrivateBrowsingEnabled(true);
&gt; 
&gt; This is semantically incorrect. WebContext::willStopUsingPrivateBrowsing() is called when any context starts to use private browsing. Due to WebKit2 API limitations, the best thing we can do is create a private browsing session just in case. But it doesn&apos;t mean that all context start enter private browsing.

Currently, any context being in private browsing means all contexts should be in private browsing.  

If I&apos;m missing some way in which this is not true, please explain further.

I&apos;m also not sure how the semantics are wrong, seeing as WebContexts own their IconDatabases.

I agree willStopUsingPrivateBrowsing was added for private browsing session management, but it&apos;s name does not at all suggest it should only be limited to that use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943927</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-26 16:23:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Also, this broke an API test on debug WK2 bot, so I&apos;m going to roll out.
&gt; 
&gt; WebKit2.PrivateBrowsingPushStateNoHistoryCallback

Without even including details of what broke?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943928</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-26 16:25:30 -0700</bug_when>
    <thetext>The failure:

ASSERTION FAILED: m_ptr
/Volumes/Data/CabUser/build/Debug/usr/local/include/wtf/OwnPtr.h(56) : PtrType WTF::OwnPtr&lt;WebCore::IconDatabase&gt;::operator-&gt;() const [T = WebCore::IconDatabase]
1   0x10ee0f5a0 WTFCrash
2   0x110620825 WTF::OwnPtr&lt;WebCore::IconDatabase&gt;::operator-&gt;() const
3   0x110620514 WebKit::WebIconDatabase::setPrivateBrowsingEnabled(bool)
4   0x110583e2f WebKit::WebContext::setPrivateBrowsingEnabled(bool)
5   0x110583dce WebKit::WebContext::willStartUsingPrivateBrowsing()
6   0x11079896a WebKit::WebPreferences::addPageGroup(WebKit::WebPageGroup*)
7   0x1106a6ef3 WebKit::WebPageGroup::setPreferences(WebKit::WebPreferences*)
8   0x110834542 WKPageGroupSetPreferences
...

Got it.  Will fix in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943929</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-26 16:31:17 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; The failure:
&gt; 
&gt; ASSERTION FAILED: m_ptr
&gt; /Volumes/Data/CabUser/build/Debug/usr/local/include/wtf/OwnPtr.h(56) : PtrType WTF::OwnPtr&lt;WebCore::IconDatabase&gt;::operator-&gt;() const [T = WebCore::IconDatabase]
&gt; 1   0x10ee0f5a0 WTFCrash
&gt; 2   0x110620825 WTF::OwnPtr&lt;WebCore::IconDatabase&gt;::operator-&gt;() const
&gt; 3   0x110620514 WebKit::WebIconDatabase::setPrivateBrowsingEnabled(bool)
&gt; 4   0x110583e2f WebKit::WebContext::setPrivateBrowsingEnabled(bool)
&gt; 5   0x110583dce WebKit::WebContext::willStartUsingPrivateBrowsing()
&gt; 6   0x11079896a WebKit::WebPreferences::addPageGroup(WebKit::WebPageGroup*)
&gt; 7   0x1106a6ef3 WebKit::WebPageGroup::setPreferences(WebKit::WebPreferences*)
&gt; 8   0x110834542 WKPageGroupSetPreferences
&gt; ...
&gt; 
&gt; Got it.  Will fix in a follow up.

Actually, this is odd... having a null icon database seems impossible for a WebContext that hasn&apos;t already been torn down...  yikes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943930</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-26 16:40:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Got it.  Will fix in a follow up.
&gt; 
&gt; Actually, this is odd... having a null icon database seems impossible for a WebContext that hasn&apos;t already been torn down...  yikes.

NM, got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943944</commentid>
    <comment_count>13</comment_count>
      <attachid>215264</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-26 18:23:07 -0700</bug_when>
    <thetext>Created attachment 215264
Patch v2 - Add a necessary null check, more comprehensively set the private browsing value at icon database creation time.

This patch fixes the crash, and is better at the time of icon database creation.

I&apos;m not sure why Alexey states that a WebContext notification for starting/stopping private browsing isn&apos;t a good place to do private browsing maintenance for WebContext-owned objects, but hopefully he can explain along with a review!  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943965</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-27 10:04:04 -0700</bug_when>
    <thetext>&gt; Currently, any context being in private browsing means all contexts should be in private browsing.  

I don&apos;t think that this is accurate, Safari certainly doesn&apos;t guarantee that.

&gt; &gt; WebKit2.PrivateBrowsingPushStateNoHistoryCallback

&gt; Without even including details of what broke?

What details do you think were missing? API tests don&apos;t report anything but the name of the failing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943969</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-27 10:33:31 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; &gt; WebKit2.PrivateBrowsingPushStateNoHistoryCallback
&gt; 
&gt; &gt; Without even including details of what broke?
&gt; 
&gt; What details do you think were missing? API tests don&apos;t report anything but the name of the failing test.

Well it was an ASSERT with a backtrace...  :)  It&apos;s fixed in this patch.

&gt; &gt; Currently, any context being in private browsing means all contexts should be in private browsing.  
&gt; 
&gt; I don&apos;t think that this is accurate, Safari certainly doesn&apos;t guarantee that.
&gt; 

Not talking about Safari, talking about WebKit - Currently, even though there have been various efforts to make private browsing more fine-grained, it really is a single global setting.  Is there any place where changing the WKPreference does not filter down in to every Context, every PageGroup, every Page?

But all of this discussion aside, in WK2, the icon database is a per-WebContext concept. Therefore it makes sense to change the private browsing flag when the WebContext gets notified of a change in the flag.

What I see in the code is are methods named &quot;willStartUsingPrivateBrowsing&quot; and &quot;willStopUsingPrivateBrowsing&quot;.  They implicitly concede that private browsing is currently a global setting, in that they are static methods that notify all instances.  Additionally, their names don&apos;t suggest they have anything &quot;special&quot; about them that makes them insufficient for doing any type of private browsing related work I see fit.

If this patch is really wrong, can I have an alternate suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943973</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-27 11:25:16 -0700</bug_when>
    <thetext>&gt; Well it was an ASSERT with a backtrace...  :)

Ah indeed, there was a stack trace in the log. Sorry, I just didn&apos;t see it there, I only noticed the name in the summary at the end. Anyway, glad that it was easily reproducible for you.

&gt; Not talking about Safari, talking about WebKit - Currently, even though there have been various efforts to make private browsing more fine-grained, it really is a single global setting.  Is there any place where changing the WKPreference does not filter down in to every Context, every PageGroup, every Page?

Setting the preference doesn&apos;t filter down anywhere beyond what it was explicitly set on. That is, the page groups associated with this particular instance of WKPreferences.

WK_EXPORT void WKPreferencesSetPrivateBrowsingEnabled(WKPreferencesRef preferencesRef, bool enabled);

As explained in comment 4, the static willStart/willStopUsingPrivateBrowsing functions in WebContext exist so that we could create a private browsing session in each WebProcess and in NetworkProcess, and - which is more tricky - to delete the sessions when exiting private browsing. But whether network requests will use this session is decided by Settings associated with each Page, not by whether the session exists in the process.

&gt; But all of this discussion aside, in WK2, the icon database is a per-WebContext concept.

IIRC, a PageGroup can span multiple WebContexts, and of course each WebContext can host multiple PageGroups. Anything that is per-WebContext and depends on preferences such as private browsing is  broken by design.

I&apos;d be surprised if there was a way to fix it in WebKit for arbitrary legitimate uses of the existing API. I still think that the patch may be correct for Safari&apos;s use, and all you need is to rename the WebContext::setPrivateBrowsingEnabled function added here to something more like WebContext::setSomePageGroupsMightHavePrivateBrowsingEnabled.

I also think that the time we already spent trying to hack around the existing private browsing API is more than it would take to make a new clean one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943976</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-27 11:56:48 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; But all of this discussion aside, in WK2, the icon database is a per-WebContext concept.
&gt; 
&gt; IIRC, a PageGroup can span multiple WebContexts, and of course each WebContext can host multiple PageGroups. Anything that is per-WebContext and depends on preferences such as private browsing is broken by design.

A lot of things that depend on Preferences/Settings are broken by design  :(

&gt; I&apos;d be surprised if there was a way to fix it in WebKit for arbitrary legitimate uses of the existing API. I still think that the patch may be correct for Safari&apos;s use, and all you need is to rename the WebContext::setPrivateBrowsingEnabled function added here to something more like WebContext::setSomePageGroupsMightHavePrivateBrowsingEnabled.

I will do so!

&gt; I also think that the time we already spent trying to hack around the existing private browsing API is more than it would take to make a new clean one.

Can&apos;t wait for us to get to that, but doing so is also way out of the scope of fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943980</commentid>
    <comment_count>18</comment_count>
      <attachid>215275</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-27 12:12:08 -0700</bug_when>
    <thetext>Created attachment 215275
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944013</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-27 22:41:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/158101</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215230</attachid>
            <date>2013-10-25 17:16:17 -0700</date>
            <delta_ts>2013-10-26 18:23:07 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5029</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZDlkYjJlLi42MDVlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTMtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYkljb25EYXRhYmFzZSBjYW4gbWlzcyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGNoYW5n
ZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTMyMjMxOD4gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3Npbmcp
OiBDYWxsIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSkgb24gZWFjaCBjb250ZXh0Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5n
KTogQ2FsbCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKSBvbiBlYWNoIGNvbnRleHQu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQp
OiBJbiBhZGRpdGlvbiB0byBub3RpZnlpbmcgb3RoZXIgcHJvY2Vzc2VzLCBub3RpZnkgV2ViSWNv
bkRhdGFiYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSWNv
bkRhdGFiYXNlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViSWNvbkRhdGFiYXNlLmg6CisKIDIwMTMtMTAtMjMgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSEFWRV9YUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCA1MGUxOGZiLi5lZDUwMTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC00MjgsMjYgKzQyOCwzNCBAQCB2
b2lkIFdlYkNvbnRleHQ6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Bybwogdm9pZCBXZWJDb250ZXh0Ojp3aWxsU3RhcnRVc2luZ1By
aXZhdGVCcm93c2luZygpCiB7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4
dHMgPSBhbGxDb250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRl
eHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgICAgICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRl
eHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdv
cmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCksIDApOwotI2VuZGlmCi0gICAgICAgIGNvbnRleHRzW2ldLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRl
eHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNvbnRleHRzW2ldLT5zZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKHRydWUpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OndpbGxTdG9w
VXNpbmdQcml2YXRlQnJvd3NpbmcoKQogewogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4m
IGNvbnRleHRzID0gYWxsQ29udGV4dHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQg
PSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7Ci0jaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKLSAgICAgICAgaWYgKGNvbnRleHRzW2ldLT51c2VzTmV0d29ya1Byb2Nlc3MoKSAm
JiBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIGNvbnRleHRzW2ld
LT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7Ci0jZW5kaWYKKyAgICBmb3IgKHNpemVfdCBp
ID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBj
b250ZXh0c1tpXS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSk7Cit9CiAKLSAgICAg
ICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7Cit2b2lkIFdlYkNvbnRleHQ6OnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQoreworICAg
IG1faWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpOworCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICBpZiAodXNlc05l
dHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDAp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7
CiAgICAgfQorI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNTKQorCisgICAgaWYgKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKKyAgICBlbHNl
CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7CiB9CiAKIHZvaWQgKCpzX2ludmFsaWRNZXNzYWdl
Q2FsbGJhY2spKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCmluZGV4IGUwMTM3NWUuLjFmOTg1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaApAQCAtMzk4LDYgKzM5OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5z
aWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwogCisgICAgdm9pZCBzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOworCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAgICAgLy8gUGx1Z2luSW5mb1N0b3JlQ2xpZW50OgogICAgIHZpcnR1YWwgdm9pZCBwbHVn
aW5JbmZvU3RvcmVEaWRMb2FkUGx1Z2lucyhQbHVnaW5JbmZvU3RvcmUqKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKaW5kZXggN2I3Zjk5
OC4uZTEzYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFz
ZS5jcHAKQEAgLTI5Myw0ICsyOTMsOSBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6bm90aWZ5SWNv
bkRhdGFSZWFkeUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogICAgIGRpZENoYW5n
ZUljb25Gb3JQYWdlVVJMKHBhZ2VVUkwpOwogfQogCit2b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit7Cisg
ICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaAppbmRleCAwMWQ1OGVkLi5jZGE0NDU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oCkBAIC04Nyw2ICs4
Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUljb25EYXRhYmFzZUNsaWVudChj
b25zdCBXS0ljb25EYXRhYmFzZUNsaWVudCopOwogCisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKGJvb2wpOworICAgIAogcHJpdmF0ZToKICAgICBXZWJJY29uRGF0YWJhc2UoV2Vi
Q29udGV4dCopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215264</attachid>
            <date>2013-10-26 18:23:07 -0700</date>
            <delta_ts>2013-10-27 12:12:08 -0700</delta_ts>
            <desc>Patch v2 - Add a necessary null check, more comprehensively set the private browsing value at icon database creation time.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6293</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxN2FiMDNlLi45OGM4NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYkljb25EYXRhYmFzZSBjYW4gbWlzcyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGNoYW5n
ZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTMyMjMxOD4gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3Npbmcp
OiBDYWxsIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSkgb24gZWFjaCBjb250ZXh0Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5n
KTogQ2FsbCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKSBvbiBlYWNoIGNvbnRleHQu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQp
OiBJbiBhZGRpdGlvbiB0byBub3RpZnlpbmcgb3RoZXIgcHJvY2Vzc2VzIGFib3V0IHByaXZhdGUg
YnJvd3NpbmcKKyAgICAgICAgICBzZXNzaW9ucywgbm90aWZ5IHRoZSBjb250ZXh04oCZcyBXZWJJ
Y29uRGF0YWJhc2UgYWJvdXQgdGhlIGNoYW5nZSBpbiB2YWx1ZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29udGV4dC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKTog
UHJpbWUgdGhlIEljb25EYXRhYmFzZSB3aXRoIGFuIGluaXRpYWwgcHJpdmF0ZSBicm93c2luZyB2
YWx1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpzZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6CisKIDIw
MTMtMTAtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIC1bV0tCYWNrRm9yd2FyZExpc3QgZm9yd2FyZEl0ZW1dIHJldHVybnMgdGhlIGJhY2sgaXRl
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDUwZTE4ZmIuLmVk
NTAxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTQyOCwy
NiArNDI4LDM0IEBAIHZvaWQgV2ViQ29udGV4dDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJvCiB2b2lkIFdlYkNvbnRleHQ6Ondp
bGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKIHsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dCo+JiBjb250ZXh0cyA9IGFsbENvbnRleHRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAs
IGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmIChjb250ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9j
ZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBjb250
ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7Ci0jZW5kaWYKLSAgICAgICAgY29u
dGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDAs
IGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgY29udGV4
dHNbaV0tPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7CiB9CiAKIHZvaWQgV2ViQ29u
dGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpCiB7CiAgICAgY29uc3QgVmVjdG9y
PFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBhbGxDb250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3
b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKLSNlbmRpZgorICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyAr
K2kpCisgICAgICAgIGNvbnRleHRzW2ldLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNl
KTsKK30KIAotICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKK3ZvaWQgV2Vi
Q29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpCit7CisgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQo
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQor
ICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CisgICAg
ICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpLCAwKTsKICAgICB9CisjZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1Mp
CisKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICAgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkpOworICAgIGVsc2UKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKIH0KIAogdm9pZCAoKnNf
aW52YWxpZE1lc3NhZ2VDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZTAxMzc1ZS4uMWY5ODUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0zOTgsNiArMzk4LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKICAgICB2b2lkIHBsdWdJbkRp
ZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CiAKKyAg
ICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICAvLyBQbHVnaW5JbmZvU3RvcmVDbGllbnQ6CiAgICAgdmly
dHVhbCB2b2lkIHBsdWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSop
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNw
cAppbmRleCA3YjdmOTk4Li4xY2M5NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSWNvbkRhdGFiYXNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
Ykljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNv
bkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2VCYXNlLmg+CkBAIC03
NSw2ICs3NiwxMSBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICBJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7
CiAgICAgbV9kYXRhYmFzZUNsZWFudXBEaXNhYmxlZCA9IHRydWU7CiAgICAgbV9pY29uRGF0YWJh
c2VJbXBsLT5zZXRFbmFibGVkKHRydWUpOworCisgICAgLy8gRklYTUU6IFdlYkljb25EYXRhYmFz
ZXMgYXJlIHBlci1XZWJDb250ZXh0IGJ1dCBXZWJDb250ZXh0J3MgZG9uJ3QgaGF2ZSB0aGVpciBv
d24gbm90aW9uIG9mIHRoZSBjdXJyZW50IHByaXZhdGUgYnJvd3Npbmcgc2V0dGluZy4KKyAgICAv
LyBBcyB3ZSBjbGVhbiB1cCBwcml2YXRlIGJyb3dzaW5nIHRocm91Z2hvdXQgdGhlIHN0YWNrIHdl
IG5lZWQgdG8gY2xlYW4gaXQgdXAgaGVyZS4KKyAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VHcm91cHNBcmVVc2lu
Z1ByaXZhdGVCcm93c2luZygpKTsKKwogICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsLT5vcGVu
KGRpcmVjdG9yeU5hbWUocGF0aCksIHBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBXZWJLaXQyIGljb24gZGF0YWJhc2Ugb24gZGlzayIp
OwogICAgICAgICBtX2ljb25EYXRhYmFzZUltcGwuY2xlYXIoKTsKQEAgLTI5Myw0ICsyOTksMTAg
QEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6Om5vdGlmeUljb25EYXRhUmVhZHlGb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgcGFnZVVSTCkKICAgICBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChwYWdlVVJM
KTsKIH0KIAordm9pZCBXZWJJY29uRGF0YWJhc2U6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQoreworICAgIGlmIChtX2ljb25EYXRhYmFzZUlt
cGwpCisgICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKaW5kZXggMDFkNThlZC4u
Y2RhNDQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaApA
QCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVJY29uRGF0YWJh
c2VDbGllbnQoY29uc3QgV0tJY29uRGF0YWJhc2VDbGllbnQqKTsKIAorICAgIHZvaWQgc2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2ViSWNvbkRh
dGFiYXNlKFdlYkNvbnRleHQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215275</attachid>
            <date>2013-10-27 12:12:08 -0700</date>
            <delta_ts>2013-10-27 19:21:44 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6440</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxN2FiMDNlLi5jNjZiZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYkljb25EYXRhYmFzZSBjYW4gbWlzcyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGNoYW5n
ZXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTMyMjMxOD4gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3Npbmcp
OiBDYWxsIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1
ZSkgb24gZWFjaCBjb250ZXh0LgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3aWxsU3Rv
cFVzaW5nUHJpdmF0ZUJyb3dzaW5nKTogQ2FsbCBzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2
YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKSBvbiBlYWNoIGNvbnRleHQuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBJbiBhZGRpdGlvbiB0
byBub3RpZnlpbmcgb3RoZXIgcHJvY2Vzc2VzIGFib3V0IHByaXZhdGUgYnJvd3NpbmcKKyAgICAg
ICAgICBzZXNzaW9ucywgbm90aWZ5IHRoZSBjb250ZXh04oCZcyBXZWJJY29uRGF0YWJhc2UgYWJv
dXQgdGhlIGNoYW5nZSBpbiB2YWx1ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKTogUHJpbWUgdGhlIEljb25E
YXRhYmFzZSB3aXRoIGFuIGluaXRpYWwgcHJpdmF0ZSBicm93c2luZyB2YWx1ZS4KKyAgICAgICAg
KFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRl
QnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6
CisKIDIwMTMtMTAtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIC1bV0tCYWNrRm9yd2FyZExpc3QgZm9yd2FyZEl0ZW1dIHJldHVybnMgdGhlIGJh
Y2sgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDUwZTE4
ZmIuLjM1MmU1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAg
LTQyOCwyNiArNDI4LDM0IEBAIHZvaWQgV2ViQ29udGV4dDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJvCiB2b2lkIFdlYkNvbnRl
eHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKIHsKICAgICBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IGFsbENvbnRleHRzKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgIGlmIChjb250ZXh0c1tpXS0+dXNlc05ldHdv
cmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAg
ICBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7Ci0jZW5kaWYKLSAgICAg
ICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKLSAgICB9CisgICAgZm9yIChzaXplX3Qg
aSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAg
Y29udGV4dHNbaV0tPnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQodHJ1ZSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93
c2luZygpCiB7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBhbGxD
b250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUo
KTsgaSA8IGNvdW50OyArK2kpIHsKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAg
ICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5u
ZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpLCAwKTsKLSNlbmRpZgorICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNv
bnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNvbnRleHRzW2ldLT5zZXRB
bnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKK30KIAot
ICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKK3ZvaWQgV2ViQ29udGV4dDo6
c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCit7CisgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisKKyNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQorICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2Vz
cygpKSB7CisgICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKICAgICB9CisjZW5kaWYgLy8gRU5BQkxFRChORVRX
T1JLX1BST0NFU1MpCisKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICAgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkpOworICAgIGVsc2UKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKIH0K
IAogdm9pZCAoKnNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZTAxMzc1ZS4uZTU3
OGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0zOTgsNiArMzk4
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKICAgICB2
b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCk7CiAKKyAgICB2b2lkIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoYm9vbCk7CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAv
LyBQbHVnaW5JbmZvU3RvcmVDbGllbnQ6CiAgICAgdmlydHVhbCB2b2lkIHBsdWdpbkluZm9TdG9y
ZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCA3YjdmOTk4Li4xY2M5Nzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJJY29u
RGF0YWJhc2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JY29uRGF0YWJhc2VCYXNlLmg+CkBAIC03NSw2ICs3NiwxMSBAQCB2b2lkIFdlYklj
b25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBJY29u
RGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgbV9kYXRhYmFzZUNsZWFudXBE
aXNhYmxlZCA9IHRydWU7CiAgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRFbmFibGVkKHRydWUp
OworCisgICAgLy8gRklYTUU6IFdlYkljb25EYXRhYmFzZXMgYXJlIHBlci1XZWJDb250ZXh0IGJ1
dCBXZWJDb250ZXh0J3MgZG9uJ3QgaGF2ZSB0aGVpciBvd24gbm90aW9uIG9mIHRoZSBjdXJyZW50
IHByaXZhdGUgYnJvd3Npbmcgc2V0dGluZy4KKyAgICAvLyBBcyB3ZSBjbGVhbiB1cCBwcml2YXRl
IGJyb3dzaW5nIHRocm91Z2hvdXQgdGhlIHN0YWNrIHdlIG5lZWQgdG8gY2xlYW4gaXQgdXAgaGVy
ZS4KKyAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2Vi
UHJlZmVyZW5jZXM6OmFueVBhZ2VHcm91cHNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKKwog
ICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsLT5vcGVuKGRpcmVjdG9yeU5hbWUocGF0aCksIHBh
dGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3Bl
biBXZWJLaXQyIGljb24gZGF0YWJhc2Ugb24gZGlzayIpOwogICAgICAgICBtX2ljb25EYXRhYmFz
ZUltcGwuY2xlYXIoKTsKQEAgLTI5Myw0ICsyOTksMTAgQEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6
Om5vdGlmeUljb25EYXRhUmVhZHlGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKICAg
ICBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKIH0KIAordm9pZCBXZWJJY29uRGF0
YWJhc2U6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKQoreworICAgIGlmIChtX2ljb25EYXRhYmFzZUltcGwpCisgICAgICAgIG1faWNvbkRhdGFi
YXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSWNvbkRhdGFiYXNlLmgKaW5kZXggMDFkNThlZC4uY2RhNDQ1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaApAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGluaXRpYWxpemVJY29uRGF0YWJhc2VDbGllbnQoY29uc3QgV0tJY29uRGF0
YWJhc2VDbGllbnQqKTsKIAorICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29s
KTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2ViSWNvbkRhdGFiYXNlKFdlYkNvbnRleHQqKTsKIAo=
</data>
<flag name="review"
          id="237967"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>