<?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>66717</bug_id>
          
          <creation_ts>2011-08-22 14:46:35 -0700</creation_ts>
          <short_desc>Delay GC triggered NP object destruction to the next runloop cycle</short_desc>
          <delta_ts>2012-01-04 12:30:50 -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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>aroben</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454947</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-22 14:46:35 -0700</bug_when>
    <thetext>Delay GC triggered NP object destruction to the next runloop cycle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454951</commentid>
    <comment_count>1</comment_count>
      <attachid>104743</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-22 14:48:46 -0700</bug_when>
    <thetext>Created attachment 104743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454954</commentid>
    <comment_count>2</comment_count>
      <attachid>104743</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-22 14:55:13 -0700</bug_when>
    <thetext>Comment on attachment 104743
Patch

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

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp:80
&gt; +NPObject* JSNPObject::releaseObject()

Maybe this should be called leakNPObject() that would match the WTF idiom. Bonus points for adding WARN_UNUSED_RETURN to the declaration!

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp:83
&gt; +    ASSERT_GC_OBJECT_INHERITS(this, &amp;s_info);

I like to add a newline after asserts.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:47
&gt; +    : RunLoop::Timer&lt;NPRuntimeObjectMap&gt;(RunLoop::current(), this, &amp;NPRuntimeObjectMap::invalidateQueuedObjects)

I think this should use WebProcess::shared().runLoop().

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:289
&gt; +    // queue

No need to put &quot;queue&quot; on a new line.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h:54
&gt; +class NPRuntimeObjectMap : private JSC::WeakHandleOwner, RunLoop::Timer&lt;NPRuntimeObjectMap&gt; {

NPRuntimeObject shouldn&apos;t inherit from RunLoop::Timer, the timer should be a member variable of NPRuntimeObjectMap.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeUtilities.cpp:109
&gt; +    ASSERT(npObject-&gt;referenceCount &gt;= 1);
&gt; +    npObject-&gt;referenceCount--;
&gt; +    if (npObject-&gt;referenceCount)
&gt; +        return true;
&gt; +    if (npObject-&gt;_class-&gt;deallocate)
&gt; +        return false;
&gt; +    deallocateNPObject(npObject);
&gt; +    return true;

I&apos;d like to see some more comments here.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeUtilities.h:57
&gt; +bool trySafeReleaseNPObject(NPObject*);

Please add a comment specifying what this function does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455002</commentid>
    <comment_count>3</comment_count>
      <attachid>104753</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-22 15:28:18 -0700</bug_when>
    <thetext>Created attachment 104753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455009</commentid>
    <comment_count>4</comment_count>
      <attachid>104753</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-22 15:37:04 -0700</bug_when>
    <thetext>Comment on attachment 104753
Patch

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

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h:53
&gt; +    // Used to invalidate an NPObject asynchronously

Periods at ends of comments is the usual WebKit style.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:223
&gt; +    Vector&lt;Strong&lt;JSNPObject&gt; &gt; jsNPObjects;

This could just be called “objects” or “objectsToInvalidate” instead of having a clump of characters at the beginning.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:229
&gt; +        jsNPObjects[i].clear();

Is it important to clear each of these explicitly rather than just destroying them? We could just wrap braces around this code so that the local vector is destroyed before the rest of the code runs and maybe leave out that explicit clear.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:240
&gt; +    Vector&lt;NPObject*&gt; localNPObjects;
&gt; +    localNPObjects.swap(m_npObjectsToFinalize);
&gt; +    for (size_t i = 0; i &lt; localNPObjects.size(); ++i)
&gt; +        deallocateNPObject(localNPObjects[i]);

Why is this implemented differently from invalidateQueuedObjects? Can these share code? If they can’t for a good reason, please add a “why” comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455016</commentid>
    <comment_count>5</comment_count>
      <attachid>104756</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-22 15:50:45 -0700</bug_when>
    <thetext>Created attachment 104756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455030</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-22 16:08:55 -0700</bug_when>
    <thetext>Committed r93555: &lt;http://trac.webkit.org/changeset/93555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455137</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-08-22 18:28:23 -0700</bug_when>
    <thetext>Why do we need to do this? (Either the bug or the ChangeLog or both should say!) Can you write a regression test?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104743</attachid>
            <date>2011-08-22 14:48:46 -0700</date>
            <delta_ts>2011-08-22 15:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66717-20110822144845.patch</filename>
            <type>text/plain</type>
            <size>8963</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1MTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3OGM4Nzk4YzBjMDYyMGM4
MzQ1NjNkMTQ0YWVjNzRlOTBmYjZhZDVhLi5hYmExY2MyZmJiODBlZGU4MzQ0OWRjYTZmYjYyYWIx
NjczYjJmYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMjIgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBEZWxheSBHQyB0cmlnZ2VyZWQg
TlAgb2JqZWN0IGRlc3RydWN0aW9uIHRvIHRoZSBuZXh0IHJ1bmxvb3AgY3ljbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsYXkgZGVzdHJ1Y3Rpb24g
b2YgcGx1Z2luIG9iamVjdHMgY2F1c2VkIGJ5IEdDIHVudGlsIHRoZSBuZXh0CisgICAgICAgIHJ1
bmxvb3AgY3ljbGUgc28gdGhhdCB0aGV5IGNhbiBleGVjdXRlIEpTIGluIHRoZWlyIGZpbmFsaXpl
cnMuCisgICAgICAgIFdlIGRvIHRoaXMgdXNpbmcgYSB6ZXJvIGRlbGF5IHRpbWVyIGNvdXBsZWQg
d2l0aCBhIHF1ZXVlIG9mCisgICAgICAgIG9iamVjdHMgdG8gYmUgZmluYWxpc2VkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOUFJ1bnRpbWVPYmplY3RNYXA6Ok5QUnVudGltZU9iamVjdE1hcCk6CisgICAgICAgIChXZWJL
aXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5Q
UnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMpOgorICAgICAgICAoV2Vi
S2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmFkZFRvSW52YWxpZGF0aW9uUXVldWUpOgorICAgICAg
ICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnRyeVNhZmVSZWxlYXNlTlBPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuaDoKKwogMjAxMS0wOC0xOSAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIg
YXR0ZW1wdCBhdCBmaXhpbmcgdGhlIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5k
ZXggMmFlYWFkNmNkZjdlZjA3MjZlYTU2Y2EyNDE0NzQ1YzdlMzUyM2FhYS4uOGJhNTg5ZmQ4NGY2
YjY1MWNhYjVkNWEwNmFmMDg4OTdlN2NlOTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNzcs
NiArNzcsMTUgQEAgdm9pZCBKU05QT2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX25wT2JqZWN0
ID0gMDsKIH0KIAorTlBPYmplY3QqIEpTTlBPYmplY3Q6OnJlbGVhc2VPYmplY3QoKQoreworICAg
IEFTU0VSVChtX25wT2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMs
ICZzX2luZm8pOworICAgIE5QT2JqZWN0KiBvYmplY3QgPSBtX25wT2JqZWN0OworICAgIG1fbnBP
YmplY3QgPSAwOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKIEpTVmFsdWUgSlNOUE9iamVjdDo6
Y2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQogewog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aAppbmRleCBhZjkxZGE4NGFhNDJhMmNlNWZjMWY2YzYxNTdiZTM0OThlNzIxMzlmLi4yZGM1Yjg4
MzYzNzIwMmVlNzA3YWI1ZjQ5NjFmZTQxY2JlZjEwMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTUw
LDYgKzUwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKKyAgICAvLyBV
c2VkIHRvIGludmFsaWRhdGUgYW4gTlBPYmplY3QgYXN5bmNocm9ub3VzbHkKKyAgICBOUE9iamVj
dCogcmVsZWFzZU9iamVjdCgpOworCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxNZXRob2QoSlNDOjpF
eGVjU3RhdGUqLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSk7CiAgICAgSlNDOjpKU1ZhbHVlIGNh
bGxPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBKU0M6OkpTVmFsdWUgY2FsbENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmlu
ZGV4IDNjM2I3YTUxODRjMzRhOWFlYTAwOTkyZjYzMzFhY2VjYzAzYjY3YTguLmU1M2JjODk2ZDJh
OWQyYjA2ZGQxODIzMGY4NTFmZDQzZWU5ZDI3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmpl
Y3RNYXAuY3BwCkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAKIE5QUnVu
dGltZU9iamVjdE1hcDo6TlBSdW50aW1lT2JqZWN0TWFwKFBsdWdpblZpZXcqIHBsdWdpblZpZXcp
Ci0gICAgOiBtX3BsdWdpblZpZXcocGx1Z2luVmlldykKKyAgICA6IFJ1bkxvb3A6OlRpbWVyPE5Q
UnVudGltZU9iamVjdE1hcD4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTlBSdW50aW1lT2Jq
ZWN0TWFwOjppbnZhbGlkYXRlUXVldWVkT2JqZWN0cykKKyAgICAsIG1fcGx1Z2luVmlldyhwbHVn
aW5WaWV3KQogewogfQogCkBAIC0yMTgsOSArMjE5LDI0IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0
TWFwOjppbnZhbGlkYXRlKCkKICAgICBBU1NFUlQobV9ucEpTT2JqZWN0cy5pc0VtcHR5KCkpOwog
CiAgICAgSGFzaE1hcDxOUE9iamVjdCosIEpTQzo6V2VhazxKU05QT2JqZWN0PiA+OjppdGVyYXRv
ciBlbmQgPSBtX2pzTlBPYmplY3RzLmVuZCgpOworICAgIFZlY3RvcjxTdHJvbmc8SlNOUE9iamVj
dD4gPiBqc05QT2JqZWN0czsKICAgICBmb3IgKEhhc2hNYXA8TlBPYmplY3QqLCBKU0M6OldlYWs8
SlNOUE9iamVjdD4gPjo6aXRlcmF0b3IgcHRyID0gbV9qc05QT2JqZWN0cy5iZWdpbigpOyBwdHIg
IT0gZW5kOyArK3B0cikKLSAgICAgICAgcHRyLT5zZWNvbmQuZ2V0KCktPmludmFsaWRhdGUoKTsK
KyAgICAgICAganNOUE9iamVjdHMuYXBwZW5kKFN0cm9uZzxKU05QT2JqZWN0PihnbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRGF0YSgpLCBwdHItPnNlY29uZCkpOwogICAgIG1fanNOUE9iamVjdHMuY2xl
YXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpzTlBPYmplY3RzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGpzTlBPYmplY3RzW2ldLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIGpzTlBP
YmplY3RzW2ldLmNsZWFyKCk7CisgICAgfQorICAgIAorICAgIC8vIERlYWwgd2l0aCBhbnkgb2Jq
ZWN0cyB0aGF0IHdlcmUgc2NoZWR1bGVkIGZvciBkZWxheWVkIGRlc3RydWN0aW9uCisgICAgaWYg
KG1fbnBPYmplY3RzVG9GaW5hbGl6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBB
U1NFUlQoaXNBY3RpdmUoKSk7CisgICAgc3RvcCgpOworICAgIFZlY3RvcjxOUE9iamVjdCo+IGxv
Y2FsTlBPYmplY3RzOworICAgIGxvY2FsTlBPYmplY3RzLnN3YXAobV9ucE9iamVjdHNUb0ZpbmFs
aXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvY2FsTlBPYmplY3RzLnNpemUoKTsg
KytpKQorICAgICAgICBkZWFsbG9jYXRlTlBPYmplY3QobG9jYWxOUE9iamVjdHNbaV0pOwogfQog
CiBKU0dsb2JhbE9iamVjdCogTlBSdW50aW1lT2JqZWN0TWFwOjpnbG9iYWxPYmplY3QoKSBjb25z
dApAQCAtMjY1LDE0ICsyODEsMzUgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6Om1vdmVHbG9i
YWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZ2xvYmFsRXhjZXB0
aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKIH0KIAordm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6Omlu
dmFsaWRhdGVRdWV1ZWRPYmplY3RzKCkKK3sKKyAgICBBU1NFUlQobV9ucE9iamVjdHNUb0ZpbmFs
aXplLnNpemUoKSk7CisgICAgLy8gV2UgZGVsaWJlcmF0ZWx5IHJlLXJlcXVlc3QgbV9ucE9iamVj
dHNUb0ZpbmFsaXplLnNpemUoKSBhcyBjdXN0b20gZGVhbGxvYworICAgIC8vIGZ1bmN0aW9ucyBt
YXkgZXhlY3V0ZSBKUyBhbmQgc28gZ2V0IG1vcmUgb2JqZWN0cyBhZGRlZCB0byB0aGUgZGVhbGxv
YworICAgIC8vIHF1ZXVlCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25wT2JqZWN0c1Rv
RmluYWxpemUuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlYWxsb2NhdGVOUE9iamVjdChtX25wT2Jq
ZWN0c1RvRmluYWxpemVbaV0pOworICAgIG1fbnBPYmplY3RzVG9GaW5hbGl6ZS5jbGVhcigpOwor
fQorCit2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6YWRkVG9JbnZhbGlkYXRpb25RdWV1ZShOUE9i
amVjdCogbnBPYmplY3QpCit7CisgICAgaWYgKHRyeVNhZmVSZWxlYXNlTlBPYmplY3QobnBPYmpl
Y3QpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fbnBPYmplY3RzVG9GaW5hbGl6ZS5pc0Vt
cHR5KCkpCisgICAgICAgIHN0YXJ0T25lU2hvdCgwKTsKKyAgICBBU1NFUlQoaXNBY3RpdmUoKSk7
CisgICAgbV9ucE9iamVjdHNUb0ZpbmFsaXplLmFwcGVuZChucE9iamVjdCk7Cit9CisKIHZvaWQg
TlBSdW50aW1lT2JqZWN0TWFwOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBIYXNoTWFwPE5QT2JqZWN0KiwgSlNDOjpXZWFr
PEpTTlBPYmplY3Q+ID46Oml0ZXJhdG9yIGZvdW5kID0gbV9qc05QT2JqZWN0cy5maW5kKHN0YXRp
Y19jYXN0PE5QT2JqZWN0Kj4oY29udGV4dCkpOwogICAgIEFTU0VSVChmb3VuZCAhPSBtX2pzTlBP
YmplY3RzLmVuZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgYXNPYmplY3QoaGFuZGxl
LmdldCgpKSA9PSBmb3VuZC0+c2Vjb25kKTsKLQotICAgIGZvdW5kLT5zZWNvbmQuZ2V0KCktPmlu
dmFsaWRhdGUoKTsKKyAgICBKU05QT2JqZWN0KiBvYmplY3QgPSBmb3VuZC0+c2Vjb25kLmdldCgp
OwogICAgIG1fanNOUE9iamVjdHMucmVtb3ZlKGZvdW5kKTsKKyAgICBhZGRUb0ludmFsaWRhdGlv
blF1ZXVlKG9iamVjdC0+cmVsZWFzZU9iamVjdCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKaW5kZXggNTkxYTEwZDU1NjQwNDUyZDY1
YzI1OTQ1NzBlZDU1NDdjNTIzY2JmMS4uM2M4ZTY2NWJhNWM3YTAxYzE1MzQ0YjhiYThmMjRmYWUz
ZTFjN2YwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaApAQCAtMjYsNiArMjYsOSBA
QAogI2lmbmRlZiBOUEpTT2JqZWN0V3JhcHBlck1hcF9oCiAjZGVmaW5lIE5QSlNPYmplY3RXcmFw
cGVyTWFwX2gKIAorCisjaW5jbHVkZSAiUnVuTG9vcC5oIgorCiAjaW5jbHVkZSA8aGVhcC9XZWFr
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtNDgsNyArNTEsNyBAQCBjbGFzcyBOUEpTT2JqZWN0OwogY2xhc3MgUGx1Z2luVmlldzsKIAog
Ly8gQSBwZXIgcGx1Zy1pbiBtYXAgb2YgTlBPYmplY3RzIHRoYXQgd3JhcCBKYXZhU2NyaXB0IG9i
amVjdHMuCi1jbGFzcyBOUFJ1bnRpbWVPYmplY3RNYXAgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRs
ZU93bmVyIHsKK2NsYXNzIE5QUnVudGltZU9iamVjdE1hcCA6IHByaXZhdGUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIsIFJ1bkxvb3A6OlRpbWVyPE5QUnVudGltZU9iamVjdE1hcD4gewogcHVibGljOgog
ICAgIGV4cGxpY2l0IE5QUnVudGltZU9iamVjdE1hcChQbHVnaW5WaWV3Kik7CiAKQEAgLTg3LDEx
ICs5MCwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYWtIYW5kbGVPd25lcgogICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBj
b250ZXh0KTsKKyAgICB2b2lkIGFkZFRvSW52YWxpZGF0aW9uUXVldWUoTlBPYmplY3QqKTsKKyAg
ICB2b2lkIGludmFsaWRhdGVRdWV1ZWRPYmplY3RzKCk7CiAKICAgICBQbHVnaW5WaWV3KiBtX3Bs
dWdpblZpZXc7CiAKICAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBOUEpTT2JqZWN0Kj4gbV9u
cEpTT2JqZWN0czsKICAgICBIYXNoTWFwPE5QT2JqZWN0KiwgSlNDOjpXZWFrPEpTTlBPYmplY3Q+
ID4gbV9qc05QT2JqZWN0czsKKyAgICBWZWN0b3I8TlBPYmplY3QqPiBtX25wT2JqZWN0c1RvRmlu
YWxpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0
aWxpdGllcy5jcHAKaW5kZXggZTkyZjAyNjdmZjQ5NzllYzg3NzZmYTQ2NDA2YTNjYzFmMDA5YjBl
Zi4uNTgxMzMzMjYwYTAwZWY3MzA0ZjhkOWVhNmRlM2IxNzZlYzgxNDA5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZVV0aWxpdGllcy5jcHAKQEAgLTkzLDYgKzkzLDIyIEBAIHZvaWQgcmV0YWluTlBP
YmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIG5wT2JqZWN0LT5yZWZlcmVuY2VDb3VudCsr
OwogfQogCitib29sIHRyeVNhZmVSZWxlYXNlTlBPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQor
eworICAgIEFTU0VSVChucE9iamVjdCk7CisgICAgaWYgKCFucE9iamVjdCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgCisgICAgQVNTRVJUKG5wT2JqZWN0LT5yZWZlcmVuY2VDb3VudCA+PSAx
KTsKKyAgICBucE9iamVjdC0+cmVmZXJlbmNlQ291bnQtLTsKKyAgICBpZiAobnBPYmplY3QtPnJl
ZmVyZW5jZUNvdW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobnBPYmplY3QtPl9j
bGFzcy0+ZGVhbGxvY2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlYWxsb2NhdGVO
UE9iamVjdChucE9iamVjdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmVsZWFzZU5Q
T2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKIHsKICAgICBBU1NFUlQobnBPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVu
dGltZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZVV0aWxpdGllcy5oCmluZGV4IDczMDlmZDRiMWFlYzc3NTU4OTU0NWMyYzBl
ZDAxMjJiMmE4OWJiODUuLjJkZDY0YTBiZjNhNzlhZjI3M2Y0YWY5NTY1Y2YxYzkxYjNkMTQ2Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmgKQEAgLTU0LDYgKzU0LDcgQEAgdm9pZCBk
ZWFsbG9jYXRlTlBPYmplY3QoTlBPYmplY3QqKTsKIAogdm9pZCByZXRhaW5OUE9iamVjdChOUE9i
amVjdCopOwogdm9pZCByZWxlYXNlTlBPYmplY3QoTlBPYmplY3QqKTsKK2Jvb2wgdHJ5U2FmZVJl
bGVhc2VOUE9iamVjdChOUE9iamVjdCopOwogCiB2b2lkIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZShO
UFZhcmlhbnQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104753</attachid>
            <date>2011-08-22 15:28:18 -0700</date>
            <delta_ts>2011-08-22 15:50:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66717-20110822152817.patch</filename>
            <type>text/plain</type>
            <size>9352</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1MTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3OGM4Nzk4YzBjMDYyMGM4
MzQ1NjNkMTQ0YWVjNzRlOTBmYjZhZDVhLi5hYmExY2MyZmJiODBlZGU4MzQ0OWRjYTZmYjYyYWIx
NjczYjJmYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMjIgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBEZWxheSBHQyB0cmlnZ2VyZWQg
TlAgb2JqZWN0IGRlc3RydWN0aW9uIHRvIHRoZSBuZXh0IHJ1bmxvb3AgY3ljbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsYXkgZGVzdHJ1Y3Rpb24g
b2YgcGx1Z2luIG9iamVjdHMgY2F1c2VkIGJ5IEdDIHVudGlsIHRoZSBuZXh0CisgICAgICAgIHJ1
bmxvb3AgY3ljbGUgc28gdGhhdCB0aGV5IGNhbiBleGVjdXRlIEpTIGluIHRoZWlyIGZpbmFsaXpl
cnMuCisgICAgICAgIFdlIGRvIHRoaXMgdXNpbmcgYSB6ZXJvIGRlbGF5IHRpbWVyIGNvdXBsZWQg
d2l0aCBhIHF1ZXVlIG9mCisgICAgICAgIG9iamVjdHMgdG8gYmUgZmluYWxpc2VkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOUFJ1bnRpbWVPYmplY3RNYXA6Ok5QUnVudGltZU9iamVjdE1hcCk6CisgICAgICAgIChXZWJL
aXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5Q
UnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMpOgorICAgICAgICAoV2Vi
S2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmFkZFRvSW52YWxpZGF0aW9uUXVldWUpOgorICAgICAg
ICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnRyeVNhZmVSZWxlYXNlTlBPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuaDoKKwogMjAxMS0wOC0xOSAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIg
YXR0ZW1wdCBhdCBmaXhpbmcgdGhlIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5k
ZXggMmFlYWFkNmNkZjdlZjA3MjZlYTU2Y2EyNDE0NzQ1YzdlMzUyM2FhYS4uNjI4Y2FjMjIyYjgw
NTQyMGIxNmQ4OGIxMzg1Mjg2OTNlMjBjYjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNzcs
NiArNzcsMTYgQEAgdm9pZCBKU05QT2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX25wT2JqZWN0
ID0gMDsKIH0KIAorTlBPYmplY3QqIEpTTlBPYmplY3Q6OmxlYWtOUE9iamVjdCgpCit7CisgICAg
QVNTRVJUKG1fbnBPYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywg
JnNfaW5mbyk7CisKKyAgICBOUE9iamVjdCogb2JqZWN0ID0gbV9ucE9iamVjdDsKKyAgICBtX25w
T2JqZWN0ID0gMDsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCiBKU1ZhbHVlIEpTTlBPYmplY3Q6
OmNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgKaW5kZXggYWY5MWRhODRhYTQyYTJjZTVmYzFmNmM2MTU3YmUzNDk4ZTcyMTM5Zi4uMDlkMjEx
YTYzOTZkNmM0NGM5MTU3N2FjY2UxMWVlOTQ0ZTdhNzc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC01
MCw2ICs1MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCisgICAgLy8g
VXNlZCB0byBpbnZhbGlkYXRlIGFuIE5QT2JqZWN0IGFzeW5jaHJvbm91c2x5CisgICAgTlBPYmpl
Y3QqIGxlYWtOUE9iamVjdCgpOworCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxNZXRob2QoSlNDOjpF
eGVjU3RhdGUqLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSk7CiAgICAgSlNDOjpKU1ZhbHVlIGNh
bGxPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBKU0M6OkpTVmFsdWUgY2FsbENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmlu
ZGV4IDNjM2I3YTUxODRjMzRhOWFlYTAwOTkyZjYzMzFhY2VjYzAzYjY3YTguLjkxNGI2OTQzYWNj
MmEwMTQ4ODhiNjBkNzQyYWU4NDhjMjkxOTIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmpl
Y3RNYXAuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTlBKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Tb3VyY2VDb2RlLmg+CkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBOUFJ1bnRpbWVPYmplY3RNYXA6Ok5QUnVudGltZU9iamVjdE1hcChQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3KQogICAgIDogbV9wbHVnaW5WaWV3KHBsdWdpblZpZXcpCisgICAgLCBtX2ZpbmFsaXph
dGlvblRpbWVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSwgdGhpcywgJk5QUnVudGlt
ZU9iamVjdE1hcDo6aW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMpCiB7CiB9CiAKQEAgLTIxOCw5ICsy
MjAsMjQgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmludmFsaWRhdGUoKQogICAgIEFTU0VS
VChtX25wSlNPYmplY3RzLmlzRW1wdHkoKSk7CiAKICAgICBIYXNoTWFwPE5QT2JqZWN0KiwgSlND
OjpXZWFrPEpTTlBPYmplY3Q+ID46Oml0ZXJhdG9yIGVuZCA9IG1fanNOUE9iamVjdHMuZW5kKCk7
CisgICAgVmVjdG9yPFN0cm9uZzxKU05QT2JqZWN0PiA+IGpzTlBPYmplY3RzOwogICAgIGZvciAo
SGFzaE1hcDxOUE9iamVjdCosIEpTQzo6V2VhazxKU05QT2JqZWN0PiA+OjppdGVyYXRvciBwdHIg
PSBtX2pzTlBPYmplY3RzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQotICAgICAgICBwdHIt
PnNlY29uZC5nZXQoKS0+aW52YWxpZGF0ZSgpOworICAgICAgICBqc05QT2JqZWN0cy5hcHBlbmQo
U3Ryb25nPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCksIHB0ci0+c2Vj
b25kKSk7CiAgICAgbV9qc05QT2JqZWN0cy5jbGVhcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwganNOUE9iamVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAganNOUE9iamVjdHNbaV0t
PmludmFsaWRhdGUoKTsKKyAgICAgICAganNOUE9iamVjdHNbaV0uY2xlYXIoKTsKKyAgICB9Cisg
ICAgCisgICAgLy8gRGVhbCB3aXRoIGFueSBvYmplY3RzIHRoYXQgd2VyZSBzY2hlZHVsZWQgZm9y
IGRlbGF5ZWQgZGVzdHJ1Y3Rpb24KKyAgICBpZiAobV9ucE9iamVjdHNUb0ZpbmFsaXplLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2ZpbmFsaXphdGlvblRpbWVyLmlz
QWN0aXZlKCkpOworICAgIG1fZmluYWxpemF0aW9uVGltZXIuc3RvcCgpOworICAgIFZlY3RvcjxO
UE9iamVjdCo+IGxvY2FsTlBPYmplY3RzOworICAgIGxvY2FsTlBPYmplY3RzLnN3YXAobV9ucE9i
amVjdHNUb0ZpbmFsaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvY2FsTlBPYmpl
Y3RzLnNpemUoKTsgKytpKQorICAgICAgICBkZWFsbG9jYXRlTlBPYmplY3QobG9jYWxOUE9iamVj
dHNbaV0pOwogfQogCiBKU0dsb2JhbE9iamVjdCogTlBSdW50aW1lT2JqZWN0TWFwOjpnbG9iYWxP
YmplY3QoKSBjb25zdApAQCAtMjY1LDE0ICsyODIsMzQgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RN
YXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKIH0KIAordm9pZCBOUFJ1bnRpbWVP
YmplY3RNYXA6OmludmFsaWRhdGVRdWV1ZWRPYmplY3RzKCkKK3sKKyAgICBBU1NFUlQobV9ucE9i
amVjdHNUb0ZpbmFsaXplLnNpemUoKSk7CisgICAgLy8gV2UgZGVsaWJlcmF0ZWx5IHJlLXJlcXVl
c3QgbV9ucE9iamVjdHNUb0ZpbmFsaXplLnNpemUoKSBhcyBjdXN0b20gZGVhbGxvYworICAgIC8v
IGZ1bmN0aW9ucyBtYXkgZXhlY3V0ZSBKUyBhbmQgc28gZ2V0IG1vcmUgb2JqZWN0cyBhZGRlZCB0
byB0aGUgZGVhbGxvYyBxdWV1ZQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ucE9iamVj
dHNUb0ZpbmFsaXplLnNpemUoKTsgKytpKQorICAgICAgICBkZWFsbG9jYXRlTlBPYmplY3QobV9u
cE9iamVjdHNUb0ZpbmFsaXplW2ldKTsKKyAgICBtX25wT2JqZWN0c1RvRmluYWxpemUuY2xlYXIo
KTsKK30KKwordm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmFkZFRvSW52YWxpZGF0aW9uUXVldWUo
TlBPYmplY3QqIG5wT2JqZWN0KQoreworICAgIGlmICh0cnlTYWZlUmVsZWFzZU5QT2JqZWN0KG5w
T2JqZWN0KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX25wT2JqZWN0c1RvRmluYWxpemUu
aXNFbXB0eSgpKQorICAgICAgICBtX2ZpbmFsaXphdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
KyAgICBBU1NFUlQobV9maW5hbGl6YXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBtX25wT2Jq
ZWN0c1RvRmluYWxpemUuYXBwZW5kKG5wT2JqZWN0KTsKK30KKwogdm9pZCBOUFJ1bnRpbWVPYmpl
Y3RNYXA6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBj
b250ZXh0KQogewogICAgIEhhc2hNYXA8TlBPYmplY3QqLCBKU0M6OldlYWs8SlNOUE9iamVjdD4g
Pjo6aXRlcmF0b3IgZm91bmQgPSBtX2pzTlBPYmplY3RzLmZpbmQoc3RhdGljX2Nhc3Q8TlBPYmpl
Y3QqPihjb250ZXh0KSk7CiAgICAgQVNTRVJUKGZvdW5kICE9IG1fanNOUE9iamVjdHMuZW5kKCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBhc09iamVjdChoYW5kbGUuZ2V0KCkpID09IGZv
dW5kLT5zZWNvbmQpOwotCi0gICAgZm91bmQtPnNlY29uZC5nZXQoKS0+aW52YWxpZGF0ZSgpOwor
ICAgIEpTTlBPYmplY3QqIG9iamVjdCA9IGZvdW5kLT5zZWNvbmQuZ2V0KCk7CiAgICAgbV9qc05Q
T2JqZWN0cy5yZW1vdmUoZm91bmQpOworICAgIGFkZFRvSW52YWxpZGF0aW9uUXVldWUob2JqZWN0
LT5sZWFrTlBPYmplY3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9i
amVjdE1hcC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5oCmluZGV4IDU5MWExMGQ1NTY0MDQ1MmQ2NWMyNTk0NTcwZWQ1NTQ3
YzUyM2NiZjEuLmJlZjcwMWJlZTc5NTY4MjZjODg2MDQyZTBlNzgyMmMzNGU4NDU3ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKQEAgLTI2LDYgKzI2LDkgQEAKICNpZm5kZWYgTlBK
U09iamVjdFdyYXBwZXJNYXBfaAogI2RlZmluZSBOUEpTT2JqZWN0V3JhcHBlck1hcF9oCiAKKwor
I2luY2x1ZGUgIlJ1bkxvb3AuaCIKKwogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTg3LDExICs5MCwx
NSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYWtIYW5kbGVPd25lcgogICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
KTsKKyAgICB2b2lkIGFkZFRvSW52YWxpZGF0aW9uUXVldWUoTlBPYmplY3QqKTsKKyAgICB2b2lk
IGludmFsaWRhdGVRdWV1ZWRPYmplY3RzKCk7CiAKICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZp
ZXc7CiAKICAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBOUEpTT2JqZWN0Kj4gbV9ucEpTT2Jq
ZWN0czsKICAgICBIYXNoTWFwPE5QT2JqZWN0KiwgSlNDOjpXZWFrPEpTTlBPYmplY3Q+ID4gbV9q
c05QT2JqZWN0czsKKyAgICBWZWN0b3I8TlBPYmplY3QqPiBtX25wT2JqZWN0c1RvRmluYWxpemU7
CisgICAgUnVuTG9vcDo6VGltZXI8TlBSdW50aW1lT2JqZWN0TWFwPiBtX2ZpbmFsaXphdGlvblRp
bWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGls
aXRpZXMuY3BwCmluZGV4IGU5MmYwMjY3ZmY0OTc5ZWM4Nzc2ZmE0NjQwNmEzY2MxZjAwOWIwZWYu
LjcxYmY5MGI0ZDYwMDc4YThlNzJmZDNiZGVkNmY5NTRiYWJhMDZlNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVVdGlsaXRpZXMuY3BwCkBAIC05Myw2ICs5MywyMyBAQCB2b2lkIHJldGFpbk5QT2Jq
ZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICBucE9iamVjdC0+cmVmZXJlbmNlQ291bnQrKzsK
IH0KIAorYm9vbCB0cnlTYWZlUmVsZWFzZU5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKK3sK
KyAgICBBU1NFUlQobnBPYmplY3QpOworICAgIGlmICghbnBPYmplY3QpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIAorICAgIEFTU0VSVChucE9iamVjdC0+cmVmZXJlbmNlQ291bnQgPj0gMSk7
CisKKyAgICBucE9iamVjdC0+cmVmZXJlbmNlQ291bnQtLTsKKyAgICBpZiAobnBPYmplY3QtPnJl
ZmVyZW5jZUNvdW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobnBPYmplY3QtPl9j
bGFzcy0+ZGVhbGxvY2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlYWxsb2NhdGVO
UE9iamVjdChucE9iamVjdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmVsZWFzZU5Q
T2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKIHsKICAgICBBU1NFUlQobnBPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVu
dGltZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZVV0aWxpdGllcy5oCmluZGV4IDczMDlmZDRiMWFlYzc3NTU4OTU0NWMyYzBl
ZDAxMjJiMmE4OWJiODUuLjJmMTM1YjI1MDQ2NWE0ZmJmMzE5OWNkYjUxMmM1YzJjYmJhMWE4NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmgKQEAgLTU0LDYgKzU0LDE0IEBAIHZvaWQg
ZGVhbGxvY2F0ZU5QT2JqZWN0KE5QT2JqZWN0Kik7CiAKIHZvaWQgcmV0YWluTlBPYmplY3QoTlBP
YmplY3QqKTsKIHZvaWQgcmVsZWFzZU5QT2JqZWN0KE5QT2JqZWN0Kik7CisgICAgCisvLyBUaGlz
IGZ1bmN0aW9uIGRlY3JlbWVudHMgdGhlIHJlZmNvdW50IG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0
LiBJZiB0aGUKKy8vIHJlZmNvdW50IHJlYWNoZXMgMCBpdCB3aWxsIGF0dGVtcHQgdG8gZGVzdHJv
eSB0aGUgb2JqZWN0LiBJZiB0aGUgb2JqZWN0IGhhcworLy8gYSBjdXN0b20gZGVhbGxvY2F0ZSBm
dW5jdGlvbiBpdCB3aWxsIGZhaWwgYW5kIHJldHVybiBmYWxzZSwgc28gaXQgd2lsbCBiZQorLy8g
dXAgdG8gdGhlIGNhbGxlciB0byBjYWxsIGRlYWxsb2NhdGVOUE9iamVjdC4KKy8vIFRoaXMgZnVu
Y3Rpb24gaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIGRlbGF5ZWQgZmluYWxpemF0aW9uIG9mIE5Q
T2JqZWN0cworLy8gcmVsZWFzZWQgZHVyaW5nIEdDLgorYm9vbCB0cnlTYWZlUmVsZWFzZU5QT2Jq
ZWN0KE5QT2JqZWN0Kik7CiAKIHZvaWQgcmVsZWFzZU5QVmFyaWFudFZhbHVlKE5QVmFyaWFudCop
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104756</attachid>
            <date>2011-08-22 15:50:45 -0700</date>
            <delta_ts>2011-08-22 16:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66717-20110822155044.patch</filename>
            <type>text/plain</type>
            <size>9135</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1MTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3OGM4Nzk4YzBjMDYyMGM4
MzQ1NjNkMTQ0YWVjNzRlOTBmYjZhZDVhLi5hYmExY2MyZmJiODBlZGU4MzQ0OWRjYTZmYjYyYWIx
NjczYjJmYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMjIgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBEZWxheSBHQyB0cmlnZ2VyZWQg
TlAgb2JqZWN0IGRlc3RydWN0aW9uIHRvIHRoZSBuZXh0IHJ1bmxvb3AgY3ljbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsYXkgZGVzdHJ1Y3Rpb24g
b2YgcGx1Z2luIG9iamVjdHMgY2F1c2VkIGJ5IEdDIHVudGlsIHRoZSBuZXh0CisgICAgICAgIHJ1
bmxvb3AgY3ljbGUgc28gdGhhdCB0aGV5IGNhbiBleGVjdXRlIEpTIGluIHRoZWlyIGZpbmFsaXpl
cnMuCisgICAgICAgIFdlIGRvIHRoaXMgdXNpbmcgYSB6ZXJvIGRlbGF5IHRpbWVyIGNvdXBsZWQg
d2l0aCBhIHF1ZXVlIG9mCisgICAgICAgIG9iamVjdHMgdG8gYmUgZmluYWxpc2VkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOUFJ1bnRpbWVPYmplY3RNYXA6Ok5QUnVudGltZU9iamVjdE1hcCk6CisgICAgICAgIChXZWJL
aXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5Q
UnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMpOgorICAgICAgICAoV2Vi
S2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmFkZFRvSW52YWxpZGF0aW9uUXVldWUpOgorICAgICAg
ICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnRyeVNhZmVSZWxlYXNlTlBPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuaDoKKwogMjAxMS0wOC0xOSAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIg
YXR0ZW1wdCBhdCBmaXhpbmcgdGhlIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5k
ZXggMmFlYWFkNmNkZjdlZjA3MjZlYTU2Y2EyNDE0NzQ1YzdlMzUyM2FhYS4uNjI4Y2FjMjIyYjgw
NTQyMGIxNmQ4OGIxMzg1Mjg2OTNlMjBjYjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNzcs
NiArNzcsMTYgQEAgdm9pZCBKU05QT2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX25wT2JqZWN0
ID0gMDsKIH0KIAorTlBPYmplY3QqIEpTTlBPYmplY3Q6OmxlYWtOUE9iamVjdCgpCit7CisgICAg
QVNTRVJUKG1fbnBPYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywg
JnNfaW5mbyk7CisKKyAgICBOUE9iamVjdCogb2JqZWN0ID0gbV9ucE9iamVjdDsKKyAgICBtX25w
T2JqZWN0ID0gMDsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCiBKU1ZhbHVlIEpTTlBPYmplY3Q6
OmNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgKaW5kZXggYWY5MWRhODRhYTQyYTJjZTVmYzFmNmM2MTU3YmUzNDk4ZTcyMTM5Zi4uZjM0NDY2
OWNjZDg5MDc4NDYwODQ1ODVlYmMyMTQ5MzFhYjcwMTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC01
MCw2ICs1MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCisgICAgLy8g
VXNlZCB0byBpbnZhbGlkYXRlIGFuIE5QT2JqZWN0IGFzeW5jaHJvbm91c2x5LgorICAgIE5QT2Jq
ZWN0KiBsZWFrTlBPYmplY3QoKTsKKwogICAgIEpTQzo6SlNWYWx1ZSBjYWxsTWV0aG9kKEpTQzo6
RXhlY1N0YXRlKiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpOwogICAgIEpTQzo6SlNWYWx1ZSBj
YWxsT2JqZWN0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcApp
bmRleCAzYzNiN2E1MTg0YzM0YTlhZWEwMDk5MmY2MzMxYWNlY2MwM2I2N2E4Li45M2Y0NmViM2I5
ZGQ1YjZmYmJkNGFkYmMwMjdmNzhjZjEyMGFjYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2Jq
ZWN0TWFwLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk5QSlNPYmplY3QuaCIKICNp
bmNsdWRlICJOUFJ1bnRpbWVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU291cmNlQ29kZS5oPgpAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogTlBSdW50aW1lT2JqZWN0TWFwOjpOUFJ1bnRpbWVPYmplY3RNYXAoUGx1Z2luVmlldyogcGx1
Z2luVmlldykKICAgICA6IG1fcGx1Z2luVmlldyhwbHVnaW5WaWV3KQorICAgICwgbV9maW5hbGl6
YXRpb25UaW1lcihXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCksIHRoaXMsICZOUFJ1bnRp
bWVPYmplY3RNYXA6OmludmFsaWRhdGVRdWV1ZWRPYmplY3RzKQogewogfQogCkBAIC0yMTgsOSAr
MjIwLDE5IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjppbnZhbGlkYXRlKCkKICAgICBBU1NF
UlQobV9ucEpTT2JqZWN0cy5pc0VtcHR5KCkpOwogCiAgICAgSGFzaE1hcDxOUE9iamVjdCosIEpT
Qzo6V2VhazxKU05QT2JqZWN0PiA+OjppdGVyYXRvciBlbmQgPSBtX2pzTlBPYmplY3RzLmVuZCgp
OworICAgIFZlY3RvcjxTdHJvbmc8SlNOUE9iamVjdD4gPiBvYmplY3RzOwogICAgIGZvciAoSGFz
aE1hcDxOUE9iamVjdCosIEpTQzo6V2VhazxKU05QT2JqZWN0PiA+OjppdGVyYXRvciBwdHIgPSBt
X2pzTlBPYmplY3RzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQotICAgICAgICBwdHItPnNl
Y29uZC5nZXQoKS0+aW52YWxpZGF0ZSgpOworICAgICAgICBvYmplY3RzLmFwcGVuZChTdHJvbmc8
SlNOUE9iamVjdD4oZ2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSwgcHRyLT5zZWNvbmQpKTsK
ICAgICBtX2pzTlBPYmplY3RzLmNsZWFyKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
YmplY3RzLnNpemUoKTsgKytpKQorICAgICAgICBvYmplY3RzW2ldLT5pbnZhbGlkYXRlKCk7Cisg
ICAgCisgICAgLy8gRGVhbCB3aXRoIGFueSBvYmplY3RzIHRoYXQgd2VyZSBzY2hlZHVsZWQgZm9y
IGRlbGF5ZWQgZGVzdHJ1Y3Rpb24KKyAgICBpZiAobV9ucE9iamVjdHNUb0ZpbmFsaXplLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2ZpbmFsaXphdGlvblRpbWVyLmlz
QWN0aXZlKCkpOworICAgIG1fZmluYWxpemF0aW9uVGltZXIuc3RvcCgpOworICAgIGludmFsaWRh
dGVRdWV1ZWRPYmplY3RzKCk7CiB9CiAKIEpTR2xvYmFsT2JqZWN0KiBOUFJ1bnRpbWVPYmplY3RN
YXA6Omdsb2JhbE9iamVjdCgpIGNvbnN0CkBAIC0yNjUsMTQgKzI3NywzNCBAQCB2b2lkIE5QUnVu
dGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwogfQogCit2b2lk
IE5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMoKQoreworICAgIEFT
U0VSVChtX25wT2JqZWN0c1RvRmluYWxpemUuc2l6ZSgpKTsKKyAgICAvLyBXZSBkZWxpYmVyYXRl
bHkgcmUtcmVxdWVzdCBtX25wT2JqZWN0c1RvRmluYWxpemUuc2l6ZSgpIGFzIGN1c3RvbSBkZWFs
bG9jCisgICAgLy8gZnVuY3Rpb25zIG1heSBleGVjdXRlIEpTIGFuZCBzbyBnZXQgbW9yZSBvYmpl
Y3RzIGFkZGVkIHRvIHRoZSBkZWFsbG9jIHF1ZXVlCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX25wT2JqZWN0c1RvRmluYWxpemUuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlYWxsb2NhdGVO
UE9iamVjdChtX25wT2JqZWN0c1RvRmluYWxpemVbaV0pOworICAgIG1fbnBPYmplY3RzVG9GaW5h
bGl6ZS5jbGVhcigpOworfQorCit2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6YWRkVG9JbnZhbGlk
YXRpb25RdWV1ZShOUE9iamVjdCogbnBPYmplY3QpCit7CisgICAgaWYgKHRyeVNhZmVSZWxlYXNl
TlBPYmplY3QobnBPYmplY3QpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fbnBPYmplY3Rz
VG9GaW5hbGl6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZmluYWxpemF0aW9uVGltZXIuc3RhcnRP
bmVTaG90KDApOworICAgIEFTU0VSVChtX2ZpbmFsaXphdGlvblRpbWVyLmlzQWN0aXZlKCkpOwor
ICAgIG1fbnBPYmplY3RzVG9GaW5hbGl6ZS5hcHBlbmQobnBPYmplY3QpOworfQorCiB2b2lkIE5Q
UnVudGltZU9iamVjdE1hcDo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSGFzaE1hcDxOUE9iamVjdCosIEpTQzo6V2VhazxK
U05QT2JqZWN0PiA+OjppdGVyYXRvciBmb3VuZCA9IG1fanNOUE9iamVjdHMuZmluZChzdGF0aWNf
Y2FzdDxOUE9iamVjdCo+KGNvbnRleHQpKTsKICAgICBBU1NFUlQoZm91bmQgIT0gbV9qc05QT2Jq
ZWN0cy5lbmQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGFzT2JqZWN0KGhhbmRsZS5n
ZXQoKSkgPT0gZm91bmQtPnNlY29uZCk7Ci0KLSAgICBmb3VuZC0+c2Vjb25kLmdldCgpLT5pbnZh
bGlkYXRlKCk7CisgICAgSlNOUE9iamVjdCogb2JqZWN0ID0gZm91bmQtPnNlY29uZC5nZXQoKTsK
ICAgICBtX2pzTlBPYmplY3RzLnJlbW92ZShmb3VuZCk7CisgICAgYWRkVG9JbnZhbGlkYXRpb25R
dWV1ZShvYmplY3QtPmxlYWtOUE9iamVjdCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBSdW50aW1lT2JqZWN0TWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKaW5kZXggNTkxYTEwZDU1NjQwNDUyZDY1YzI1
OTQ1NzBlZDU1NDdjNTIzY2JmMS4uYmVmNzAxYmVlNzk1NjgyNmM4ODYwNDJlMGU3ODIyYzM0ZTg0
NTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZU9iamVjdE1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaApAQCAtMjYsNiArMjYsOSBAQAog
I2lmbmRlZiBOUEpTT2JqZWN0V3JhcHBlck1hcF9oCiAjZGVmaW5lIE5QSlNPYmplY3RXcmFwcGVy
TWFwX2gKIAorCisjaW5jbHVkZSAiUnVuTG9vcC5oIgorCiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
ODcsMTEgKzkwLDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2Vha0hhbmRsZU93bmVy
CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOworICAgIHZvaWQgYWRkVG9JbnZhbGlkYXRpb25RdWV1ZShOUE9iamVjdCop
OworICAgIHZvaWQgaW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMoKTsKIAogICAgIFBsdWdpblZpZXcq
IG1fcGx1Z2luVmlldzsKIAogICAgIEhhc2hNYXA8SlNDOjpKU09iamVjdCosIE5QSlNPYmplY3Qq
PiBtX25wSlNPYmplY3RzOwogICAgIEhhc2hNYXA8TlBPYmplY3QqLCBKU0M6OldlYWs8SlNOUE9i
amVjdD4gPiBtX2pzTlBPYmplY3RzOworICAgIFZlY3RvcjxOUE9iamVjdCo+IG1fbnBPYmplY3Rz
VG9GaW5hbGl6ZTsKKyAgICBSdW5Mb29wOjpUaW1lcjxOUFJ1bnRpbWVPYmplY3RNYXA+IG1fZmlu
YWxpemF0aW9uVGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZVV0aWxpdGllcy5jcHAKaW5kZXggZTkyZjAyNjdmZjQ5NzllYzg3NzZmYTQ2NDA2YTNj
YzFmMDA5YjBlZi4uNzFiZjkwYjRkNjAwNzhhOGU3MmZkM2JkZWQ2Zjk1NGJhYmEwNmU0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVu
dGltZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5jcHAKQEAgLTkzLDYgKzkzLDIzIEBAIHZvaWQg
cmV0YWluTlBPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIG5wT2JqZWN0LT5yZWZlcmVu
Y2VDb3VudCsrOwogfQogCitib29sIHRyeVNhZmVSZWxlYXNlTlBPYmplY3QoTlBPYmplY3QqIG5w
T2JqZWN0KQoreworICAgIEFTU0VSVChucE9iamVjdCk7CisgICAgaWYgKCFucE9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgQVNTRVJUKG5wT2JqZWN0LT5yZWZlcmVuY2VD
b3VudCA+PSAxKTsKKworICAgIG5wT2JqZWN0LT5yZWZlcmVuY2VDb3VudC0tOworICAgIGlmIChu
cE9iamVjdC0+cmVmZXJlbmNlQ291bnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChu
cE9iamVjdC0+X2NsYXNzLT5kZWFsbG9jYXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ZGVhbGxvY2F0ZU5QT2JqZWN0KG5wT2JqZWN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCByZWxlYXNlTlBPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQogewogICAgIEFTU0VSVChucE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmgKaW5kZXggNzMwOWZkNGIxYWVjNzc1
NTg5NTQ1YzJjMGVkMDEyMmIyYTg5YmI4NS4uMmYxMzViMjUwNDY1YTRmYmYzMTk5Y2RiNTEyYzVj
MmNiYmExYTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuaApAQCAtNTQsNiArNTQs
MTQgQEAgdm9pZCBkZWFsbG9jYXRlTlBPYmplY3QoTlBPYmplY3QqKTsKIAogdm9pZCByZXRhaW5O
UE9iamVjdChOUE9iamVjdCopOwogdm9pZCByZWxlYXNlTlBPYmplY3QoTlBPYmplY3QqKTsKKyAg
ICAKKy8vIFRoaXMgZnVuY3Rpb24gZGVjcmVtZW50cyB0aGUgcmVmY291bnQgb2YgdGhlIHNwZWNp
ZmllZCBvYmplY3QuIElmIHRoZQorLy8gcmVmY291bnQgcmVhY2hlcyAwIGl0IHdpbGwgYXR0ZW1w
dCB0byBkZXN0cm95IHRoZSBvYmplY3QuIElmIHRoZSBvYmplY3QgaGFzCisvLyBhIGN1c3RvbSBk
ZWFsbG9jYXRlIGZ1bmN0aW9uIGl0IHdpbGwgZmFpbCBhbmQgcmV0dXJuIGZhbHNlLCBzbyBpdCB3
aWxsIGJlCisvLyB1cCB0byB0aGUgY2FsbGVyIHRvIGNhbGwgZGVhbGxvY2F0ZU5QT2JqZWN0Lgor
Ly8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgZGVsYXllZCBmaW5hbGl6
YXRpb24gb2YgTlBPYmplY3RzCisvLyByZWxlYXNlZCBkdXJpbmcgR0MuCitib29sIHRyeVNhZmVS
ZWxlYXNlTlBPYmplY3QoTlBPYmplY3QqKTsKIAogdm9pZCByZWxlYXNlTlBWYXJpYW50VmFsdWUo
TlBWYXJpYW50Kik7CiAK
</data>
<flag name="review"
          id="100706"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>