<?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>86483</bug_id>
          
          <creation_ts>2012-05-15 07:26:26 -0700</creation_ts>
          <short_desc>TimingFunction and TransformOperation refcounting is not thread safe</short_desc>
          <delta_ts>2014-01-09 21:07:28 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>0</everconfirmed>
          <reporter>edbaker</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>andersca</cc>
    
    <cc>anilsson</cc>
    
    <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>edbaker</cc>
    
    <cc>jnetterfield</cc>
    
    <cc>kpiascik</cc>
    
    <cc>levin+threading</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>624063</commentid>
    <comment_count>0</comment_count>
    <who name="">edbaker</who>
    <bug_when>2012-05-15 07:26:26 -0700</bug_when>
    <thetext>Before dereferencing LayerAnimation from the main WebKit thread the compositing thread needs to dereference first. This requires dispatching from the main WebKit thread onto the compositing thread which is an expensive operation. Making LayerAnimation thread safe would make this unnecessary and improve performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624158</commentid>
    <comment_count>1</comment_count>
      <attachid>141984</attachid>
    <who name="">edbaker</who>
    <bug_when>2012-05-15 09:02:55 -0700</bug_when>
    <thetext>Created attachment 141984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624181</commentid>
    <comment_count>2</comment_count>
      <attachid>141984</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-05-15 09:30:15 -0700</bug_when>
    <thetext>Comment on attachment 141984
Patch

It looks good to me. Arvid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625651</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-16 11:13:39 -0700</bug_when>
    <thetext>It is surprising that making refcounting alone thread safe is sufficient to make using the objects from multiple threads safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625662</commentid>
    <comment_count>4</comment_count>
      <attachid>141984</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-16 11:18:47 -0700</bug_when>
    <thetext>Comment on attachment 141984
Patch

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

&gt; Source/WebCore/platform/graphics/blackberry/LayerAnimation.h:63
&gt; +        if (m_name.isEmpty())
&gt; +            return String(&quot;&quot;);
&gt; +        return String(m_name);

What&apos;s the purpose of this change? All empty strings share the same StringImpl anyway. Constructing a copy of a string doesn&apos;t do anything useful for thread safety either.

Please use ChangeLog to explain changes for each function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625673</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-16 11:28:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It is surprising that making refcounting alone thread safe is sufficient to make using the objects from multiple threads safe.

Hi Alexey! Thanks for having a look!

I knew from the start this was going to be a tough sell because switching to ThreadSafeRefCounted brings a small performance penalty compared to regular old RefCounted, and no other WebKit port uses these classes the way the BlackBerry port does.

We&apos;re not in this to make the classes thread safe, instead what we do is treat these as immutable as soon as they enter our accelerated compositing backend. No TransformOperation or TimingFunction data is changed after they&apos;re handed off to the BlackBerry accelerated animation implementation (which is pretty much a copy/paste job of the WebKit animation implementation, only running on another thread).

However, even if we don&apos;t touch any data of these objects, the refcount will still be mutated as we pass these objects around and from one thread to the other.

We put this patch up so it can be the subject of early discussion, then perhaps we can discuss if other ports are interested in moving in the direction of making the WebKit animation implementation usable from a secondary thread instead of just the WebKit thread. The Chromium CCLayer thread seems to be moving in this direction, but I&apos;m not sure if they&apos;re developing an animation framework from scratch instead of reusing the interpolation implementation in WebKit.

For Apple&apos;s WebKit port, you have Core Animation, so you already have an animation framework and I guess there&apos;s no point for you to make the WebKit animation implementation usable from a secondary thread. Instead you copy over all Keyframe and Timing function information to Core Animation data structure, et voilà, no threading problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625756</commentid>
    <comment_count>6</comment_count>
      <attachid>141984</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-16 12:43:02 -0700</bug_when>
    <thetext>Comment on attachment 141984
Patch

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

&gt; Source/WebCore/platform/animation/TimingFunction.h:32
&gt; -class TimingFunction : public RefCounted&lt;TimingFunction&gt; {
&gt; +class TimingFunction : public ThreadSafeRefCounted&lt;TimingFunction&gt; {

Why force all platforms to take a perf hit when only BlackBerry needs the thread safety?

&gt; Source/WebCore/platform/graphics/transforms/TransformOperation.h:37
&gt; -class TransformOperation : public RefCounted&lt;TransformOperation&gt; {
&gt; +class TransformOperation : public ThreadSafeRefCounted&lt;TransformOperation&gt; {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625950</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-16 15:49:10 -0700</bug_when>
    <thetext>&gt; However, even if we don&apos;t touch any data of these objects, the refcount will still be mutated as we pass these objects around and from one thread to the other.

I think that you need to generously sprinkle ASSERT(isMainThread()) checks around this code to document and verify this requirement.

Not commenting on whether the performance hit of making these classes ThreadSafeRefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632752</commentid>
    <comment_count>8</comment_count>
      <attachid>143825</attachid>
    <who name="">edbaker</who>
    <bug_when>2012-05-24 07:14:31 -0700</bug_when>
    <thetext>Created attachment 143825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693324</commentid>
    <comment_count>9</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:35:17 -0700</bug_when>
    <thetext>Ping, for CSS filters we got away with something like this:

 #include &lt;wtf/RefCounted.h&gt;
 #include &lt;wtf/text/WTFString.h&gt;
 
+#if PLATFORM(BLACKBERRY)
+#include &lt;wtf/ThreadSafeRefCounted.h&gt;
+#endif
+
 // Annoyingly, wingdi.h #defines this.
 #ifdef PASSTHROUGH
 #undef PASSTHROUGH
@@ -44,7 +48,11 @@ namespace WebCore {
 
 // CSS Filters
 
+#if PLATFORM(BLACKBERRY)
+class FilterOperation : public ThreadSafeRefCounted&lt;FilterOperation&gt; {
+#else
 class FilterOperation : public RefCounted&lt;FilterOperation&gt; {
+#endif
 public:

Maybe Ed can do the same in this instance?

https://bugs.webkit.org/show_bug.cgi?id=92685</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693325</commentid>
    <comment_count>10</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:36:26 -0700</bug_when>
    <thetext>Move this to BlackBerry component, with the proposed solution it doesn&apos;t impact any other port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693326</commentid>
    <comment_count>11</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:39:45 -0700</bug_when>
    <thetext>PR #153047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693330</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-12 15:44:27 -0700</bug_when>
    <thetext>[] prefixes are not OK on patches that touch cross-platform files.

I find it inappropriate for core classes to have different threading characteristics in different ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693332</commentid>
    <comment_count>13</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:50:14 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; [] prefixes are not OK on patches that touch cross-platform files.
&gt; 
&gt; I find it inappropriate for core classes to have different threading characteristics in different ports.

Thanks Alexey, I didn&apos;t know that. But I hope the new component is more appropriate.

I think we should upstream the non-controversial bits in a separate, [BlackBerry], patch to avoid merge conflicts in our port-specific files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694657</commentid>
    <comment_count>14</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-14 01:32:43 -0700</bug_when>
    <thetext>I&apos;m gonna remove the noise that is the BlackBerry-specific parts of the patch.

The reason the BlackBerry port uses TimingFunction and TransformOperation on multiple threads is that these classes (and subclasses) are immutable - once constructed, their data don&apos;t change.

An immutable class is typically thread safe.

The only mutable property of these classes is the refcount, which we wish to change to be thread safe (but only for the BlackBerry port).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694662</commentid>
    <comment_count>15</comment_count>
      <attachid>158259</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-14 01:39:43 -0700</bug_when>
    <thetext>Created attachment 158259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694685</commentid>
    <comment_count>16</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-14 01:58:47 -0700</bug_when>
    <thetext>Bug #93946 was created for the BlackBerry-specific bits</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141984</attachid>
            <date>2012-05-15 09:02:55 -0700</date>
            <delta_ts>2012-05-24 07:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86483-20120515120257.patch</filename>
            <type>text/plain</type>
            <size>9685</size>
            <attacher>edbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDMxMzlkMjViOWY0NTcw
ODdhZGNmZjIyMWUyNjczZWI5ZjBjMjkyNS4uNDg2YTQ2MzhmNDM5MzIzM2VhMWM2NmJjNjAxZmVl
ZWFlYjNhMDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA1LTE1ICBFZCBC
YWtlciAgPGVkYmFrZXJAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTGF5ZXJBbmlt
YXRpb24gaXMgbm90IHRocmVhZCBzYWZlLCB3aGljaCBtYWtlcyBkZXJlZmVyZW5jaW5nIGFuIGV4
cGVuc2l2ZSBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2NDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBMYXllckFuaW1hdGlvbiB0aHJlYWQgc2FmZSBzbyBpdCBjYW4gYmUgZGVy
ZWZlcmVuY2VkIGZyb20gdGhlCisgICAgICAgIHRoZSBtYWluIFdlYktpdCB0aHJlYWQgd2l0aG91
dCBoYXZpbmcgdG8gZGlzcGF0Y2ggdG8gdGhlIGNvbXBvc2l0aW5nCisgICAgICAgIHRocmVhZCwg
d2hpY2ggaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbi4gVHJhbnNmb3JtT3BlcmF0aW9uIGFuZCBU
aW1pbmdGdW5jdGlvbgorICAgICAgICBhbHNvIG5lZWQgdG8gYmUgbWFkZSB0aHJlYWQgc2FmZSBh
cyB0aGV5IGFyZSByZWZlcmVuY2VkIGluIExheWVyQW5pbWF0aW9uLgorCisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllckFuaW1hdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJBbmltYXRpb246Om5hbWUpOgorICAgICAgICAoTGF5ZXJBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJBbmltYXRpb246OkxheWVyQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQW5pbWF0aW9uOjpzZXROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0
aW5nVGhyZWFkLmg6CisgICAgICAgIChMYXllckNvbXBvc2l0aW5nVGhyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjp+TGF5ZXJXZWJLaXRUaHJlYWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
Lmg6CisKIDIwMTItMDUtMTUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIEZpeCBzY3JvbGxpbmcgaW4gdG91Y2ggbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaAppbmRleCBkNmM4MzM2Nzg2NDgyY2RlZmZjMjA1OGExYmRjNWEwOWE4ODYzYWY5Li44ZDNj
YjM0M2I2YmM0YzRkZjhjZDlmZDdiNDhjM2FjZDhmMzg2ODExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRpbWluZ0Z1bmN0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8VGltaW5nRnVuY3Rpb24+IHsKK2NsYXNzIFRpbWluZ0Z1bmN0aW9uIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRpbWluZ0Z1bmN0aW9uPiB7CiBwdWJsaWM6CiAK
ICAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQW5pbWF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQW5pbWF0aW9uLmgKaW5k
ZXggMTA0NDc3MDgyZTQ5OWU3YTM1NzYzY2VjZjllNGZiNjEwZTliMDJhZi4uYzg0MDU1ZDk3M2Qx
YzBlNWE4ZWNkNTk2ZWZjODZlYjUxYzhhMmM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckFuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJBbmltYXRpb24uaApA
QCAtMzQsMTcgKzM0LDggQEAgY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZDsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCi0vLyBUaGlzIGNsYXNzIHVz
ZXMgbm9uLXRocmVhZHNhZmUgcmVmY291bnRpbmcgaW4gdGhlIFdlYkNvcmU6OkFuaW1hdGlvbiBh
bmQKLS8vIFdlYkNvcmU6OlN0cmluZyBtZW1iZXJzLCBzbyB1c2luZyB0aHJlYWRzYWZlIHJlZmNv
dW50aW5nIGhlcmUgd291bGQgYmUgYSBiaWcKLS8vIGNvdmVyLXVwLiBJbnN0ZWFkLCB5b3UgbXVz
dCBiZSBjYXJlZnVsIHRvIHVzZSByZWYvZGVyZWYgdGhpcyBjbGFzcyBvbmx5IG9uCi0vLyB0aGUg
V2ViS2l0IHRocmVhZCwgb3Igd2hlbiB0aGUgV2ViS2l0IGFuZCBjb21wb3NpdGluZyB0aHJlYWRz
IGFyZSBpbiBzeW5jLgotY2xhc3MgTGF5ZXJBbmltYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxM
YXllckFuaW1hdGlvbj4geworY2xhc3MgTGF5ZXJBbmltYXRpb24gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8TGF5ZXJBbmltYXRpb24+IHsKIHB1YmxpYzoKLSAgICAvLyBXZWJLaXQgdGhy
ZWFkIG9ubHkKLSAgICAvLyBCZWNhdXNlIHRoZSByZWZjb3VudGluZyBkb25lIGluIGNvbnN0cnVj
dG9yIGFuZCBkZXN0cnVjdG9yIGlzIG5vdCB0aHJlYWQgc2FmZSwKLSAgICAvLyB0aGUgTGF5ZXJB
bmltYXRpb24gbXVzdCBiZSBjcmVhdGVkIG9yIGRlc3Ryb3llZCBvbiB0aGUgV2ViS2l0IHRocmVh
ZCwgb3Igd2hlbgotICAgIC8vIHRoZSBXZWJLaXQgYW5kIGNvbXBvc2l0aW5nIHRocmVhZHMgYXJl
IGluIHN5bmMuCi0gICAgLy8gQWxzbywgdGhlIG5hbWUgcHJvcGVydHkgaXMgdXNpbmcgYSBTdHJp
bmcgd2hpY2ggaGFzIG5vbi10aHJlYWRzYWZlIHJlZmNvdW50aW5nLgogICAgIC8vIFRoZSBzZXRT
dGFydFRpbWUgbWV0aG9kIGlzIG5vdCB0aHJlYWRzYWZlIGFuZCBtdXN0IG9ubHkgYmUgY2FsbGVk
IG9uIGEgbmV3bHkKICAgICAvLyBjcmVhdGVkIExheWVyQW5pbWF0aW9uIGJlZm9yZSBzZW5kaW5n
IGl0IG9mZiB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PExheWVyQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywg
Y29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0
IFN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCkBAIC02NSw3ICs1NiwxMyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorICAgIFN0cmluZyBuYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChtX25hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAg
ICAgIHJldHVybiBTdHJpbmcobV9uYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHNldFN0YXJ0VGlt
ZShkb3VibGUgdGltZSkgeyBtX3N0YXJ0VGltZSA9IHRpbWU7IH0KIAogICAgIC8vIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgdGhyZWFkIHNhZmUgKGltbXV0YWJsZSBzdGF0ZSkuCkBAIC03NywxNCArNzQs
MTAgQEAgcHVibGljOgogICAgIGRvdWJsZSB0aW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90
aW1lT2Zmc2V0OyB9CiAgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRUaW1lOyB9CiAgICAgc2l6ZV90IHZhbHVlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
cy5zaXplKCk7IH0KLQotICAgIC8vIE5PVEU6IERvbid0IHRyeSB0byByZWYgYSBUaW1pbmdGdW5j
dGlvbiwgdGhhdCdzIG5vdCBhIHRocmVhZHNhZmUgb3BlcmF0aW9uLgogICAgIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rp
b24uZ2V0KCk7IH0KICAgICBkb3VibGUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0
aW9uOyB9CiAgICAgaW50IGl0ZXJhdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRp
b25Db3VudDsgfQogICAgIEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9Ci0KLSAgICAvLyBOT1RFOiBEb24ndCB0cnkg
dG8gY2xvbmUoKSBhbiBBbmltYXRpb25WYWx1ZSwgdGhhdCdzIG5vdCBhIHRocmVhZHNhZmUgb3Bl
cmF0aW9uIHNpbmNlIGl0IG11dGF0ZXMgcmVmY291bnRzLgogICAgIGNvbnN0IEFuaW1hdGlvblZh
bHVlKiB2YWx1ZUF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5hdChpKTsgfQog
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYmxlbmRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9ucyogZnJvbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyosIGRvdWJsZSBwcm9n
cmVzcykgY29uc3Q7CkBAIC05Niw3ICs4OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9pZChy
ZWludGVycHJldF9jYXN0PGludD4oYW5pbWF0aW9uKSkKICAgICAgICAgLCBtX3ZhbHVlcyh2YWx1
ZXMpCiAgICAgICAgICwgbV9ib3hTaXplKGJveFNpemUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgICAgICwgbV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCiAgICAgICAgICwgbV9zdGFydFRp
bWUoMCkKICAgICAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKDApCkBAIC0xMDgsMTQgKzEwMCwxNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgbV90aW1pbmdGdW5jdGlvbiA9IGFuaW1hdGlvbi0+dGlt
aW5nRnVuY3Rpb24oKTsKIAogICAgICAgICB2YWxpZGF0ZVRyYW5zZm9ybUxpc3RzKCk7CisgICAg
ICAgIHNldE5hbWUobmFtZSk7CiAgICAgfQogCiAgICAgTGF5ZXJBbmltYXRpb24oY29uc3QgTGF5
ZXJBbmltYXRpb24mIG90aGVyKQotICAgICAgICA6ICBSZWZDb3VudGVkPExheWVyQW5pbWF0aW9u
PigpCisgICAgICAgIDogIFRocmVhZFNhZmVSZWZDb3VudGVkPExheWVyQW5pbWF0aW9uPigpCiAg
ICAgICAgICwgbV9pZChvdGhlci5tX2lkKQogICAgICAgICAsIG1fdmFsdWVzKG90aGVyLm1fdmFs
dWVzKQogICAgICAgICAsIG1fYm94U2l6ZShvdGhlci5tX2JveFNpemUpCi0gICAgICAgICwgbV9u
YW1lKG90aGVyLm1fbmFtZSkKICAgICAgICAgLCBtX3RpbWVPZmZzZXQob3RoZXIubV90aW1lT2Zm
c2V0KQogICAgICAgICAsIG1fc3RhcnRUaW1lKG90aGVyLm1fc3RhcnRUaW1lKQogICAgICAgICAs
IG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQob3RoZXIubV90cmFuc2Zvcm1GdW5jdGlvbkxp
c3RWYWxpZCkKQEAgLTEyNCwxNyArMTE2LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9pdGVy
YXRpb25Db3VudChvdGhlci5tX2l0ZXJhdGlvbkNvdW50KQogICAgICAgICAsIG1fZGlyZWN0aW9u
KG90aGVyLm1fZGlyZWN0aW9uKQogICAgIHsKKyAgICAgICAgc2V0TmFtZShvdGhlci5uYW1lKCkp
OwogICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVUcmFuc2Zvcm1MaXN0cygpOwogCisgICAgdm9p
ZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IG5hbWUubGVuZ3RoKCk7CisgICAgICAgIG1fbmFtZS5yZXNpemUobGVuZ3RoKTsKKyAg
ICAgICAgaWYgKGxlbmd0aCkKKyAgICAgICAgICAgIG1lbWNweShtX25hbWUuZGF0YSgpLCBuYW1l
LmNoYXJhY3RlcnMoKSwgc2l6ZW9mKFVDaGFyKSAqIGxlbmd0aCk7CisgICAgfQorCiAgICAgaW50
IG1faWQ7CiAKICAgICAvLyBOT1RFOiBEb24ndCBleHBvc2UgdGhlIEtleWZyYW1lVmFsdWVMaXN0
IGRpcmVjdGx5LCBzaW5jZSBpdHMgY29weQogICAgIC8vIGNvbnN0cnVjdG9yIG11dGF0ZXMgcmVm
Y291bnRzIGFuZCB0aHVzIGlzIG5vdCB0aHJlYWQgc2FmZS4KICAgICBLZXlmcmFtZVZhbHVlTGlz
dCBtX3ZhbHVlczsKICAgICBJbnRTaXplIG1fYm94U2l6ZTsKLSAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIFZlY3RvcjxVQ2hhcj4gbV9uYW1lOyAvLyBNdXN0IG5vdCB1c2UgU3RyaW5nIG1lbWJlciB3
aGVuIGRlcml2aW5nIGZyb20gVGhyZWFkU2FmZVJlZkNvdW50ZWQKICAgICBkb3VibGUgbV90aW1l
T2Zmc2V0OwogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fdHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNw
cAppbmRleCBhZGY4ZWNlZjAyOTFlMDI1ODNlMzU5ZjNlYzI4NWNlZDhlMjVmYzJmLi40YjgzYzc5
YTUzZjYyNTlhNzBlNTM4YmQwNGIyN2EzOGZkOTkzZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTMzNywyMSArMzM3LDYgQEAgdm9pZCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpzZXRNZWRpYVBsYXllcihNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIp
CiB9CiAjZW5kaWYKIAotdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjbGVhckFuaW1hdGlv
bnMoKQotewotICAgIC8vIEFuaW1hdGlvbnMgZG9uJ3QgdXNlIHRocmVhZCBzYWZlIHJlZmNvdW50
aW5nLCBhbmQgbXVzdCBvbmx5IGJlCi0gICAgLy8gdG91Y2hlZCB3aGVuIHRoZSB0d28gdGhyZWFk
cyBhcmUgaW4gc3luYy4KLSAgICBpZiAoIWlzQ29tcG9zaXRpbmdUaHJlYWQoKSkgewotICAgICAg
ICBkaXNwYXRjaFN5bmNDb21wb3NpdGluZ01lc3NhZ2UoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNy
ZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAotICAgICAgICAgICAgJkxheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OmNsZWFyQW5pbWF0aW9ucywKLSAgICAgICAgICAgIHRoaXMpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIG1fcnVubmluZ0FuaW1hdGlvbnMuY2xlYXIoKTsKLSAgICBtX3N1c3Bl
bmRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKLX0KLQogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFk
OjpyZW1vdmVTdWJsYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBzdWJsYXllcikKIHsKICAg
ICBBU1NFUlQoaXNDb21wb3NpdGluZ1RocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmgKaW5kZXggYjg0NzAwOTRmMjQ0Y2QwMDRlZTIwZDg5NDM5NGUyOWU4NDU4
NzRjZC4uNmQxNjllZGIxMGM5N2EzNTE2NmIwOWEwNGQyZDIxZWJhODc0ODBiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHNldE1lZGlhUGxheWVyKE1lZGlhUGxheWVy
Kik7CiAjZW5kaWYKLSAgICB2b2lkIGNsZWFyQW5pbWF0aW9ucygpOwogCiAgICAgLy8gTm90IHRo
cmVhZCBzYWZlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggNmM1NDM4
MjY3ZDYwNWNmODc0YWVmYTQ4Nzk5YTk1NjhiNWIzZGQzNC4uYWI3YTIwM2I0ZTFhM2Q5MWRlYjBh
YTFlNTBjZTQ3ODI0NWM1OTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAK
QEAgLTcwLDggKzcwLDYgQEAgTGF5ZXJXZWJLaXRUaHJlYWQ6OkxheWVyV2ViS2l0VGhyZWFkKExh
eWVyVHlwZSB0eXBlLCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeSogb3cKIAogTGF5ZXJXZWJLaXRU
aHJlYWQ6On5MYXllcldlYktpdFRocmVhZCgpCiB7Ci0gICAgbV9sYXllckNvbXBvc2l0aW5nVGhy
ZWFkLT5jbGVhckFuaW1hdGlvbnMoKTsKLQogICAgIGlmIChtX2Zyb250QnVmZmVyTG9jaykKICAg
ICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KG1fZnJvbnRCdWZmZXJMb2NrKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggMWU3ZWJiMGU1NjRlOWU5N2E0NTMzYWQ1ZDE5
Mzk2YWM0ZDE0YWMyYS4uZWQzNjQ0NjRmMTI1ZmMzNGMwOGEzNDM1M2ZjOWI0M2I3YmJhNmI0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gQ1NTIFRyYW5zZm9ybXMgKG1heSBiZWNvbWUgcGFydCBvZiBD
U1MzKQogCi1jbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFu
c2Zvcm1PcGVyYXRpb24+IHsKK2NsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUcmFuc2Zvcm1PcGVyYXRpb24+IHsKIHB1YmxpYzoKICAgICBlbnVt
IE9wZXJhdGlvblR5cGUgewogICAgICAgICBTQ0FMRV9YLCBTQ0FMRV9ZLCBTQ0FMRSwgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143825</attachid>
            <date>2012-05-24 07:14:31 -0700</date>
            <delta_ts>2012-08-14 01:39:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86483-20120524101437.patch</filename>
            <type>text/plain</type>
            <size>9858</size>
            <attacher>edbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDMxMzlkMjViOWY0NTcw
ODdhZGNmZjIyMWUyNjczZWI5ZjBjMjkyNS4uNWY0NDQ4Zjc3NGJlMzk2MTZiZDdkZDM5NjBhMmRl
MWE5Yzg5OTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTI0ICBFZCBC
YWtlciAgPGVkYmFrZXJAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTGF5ZXJBbmlt
YXRpb24gaXMgbm90IGltbXV0YWJsZSwgd2hpY2ggbWFrZXMgZGVyZWZlcmVuY2luZyBhbiBleHBl
bnNpdmUgb3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NjQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgTGF5ZXJBbmltYXRpb24gaW1tdXRhYmxlIHNvIGl0IGNhbiBiZSBkZXJlZmVy
ZW5jZWQgZnJvbSB0aGUKKyAgICAgICAgdGhlIG1haW4gV2ViS2l0IHRocmVhZCB3aXRob3V0IGhh
dmluZyB0byBkaXNwYXRjaCB0byB0aGUgY29tcG9zaXRpbmcKKyAgICAgICAgdGhyZWFkLCB3aGlj
aCBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uLiBUcmFuc2Zvcm1PcGVyYXRpb24gYW5kIFRpbWlu
Z0Z1bmN0aW9uCisgICAgICAgIG5lZWQgdG8gYmUgbWFkZSB0aHJlYWQgc2FmZSBhcyB0aGV5IGFy
ZSByZWZlcmVuY2VkIGluIExheWVyQW5pbWF0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vYW5p
bWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRp
bWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckFuaW1hdGlvbjo6bmFtZSk6
CisgICAgICAgIChMYXllckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckFuaW1h
dGlvbjo6TGF5ZXJBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJBbmltYXRpb246
OnNldE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJD
b21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaDoKKyAgICAg
ICAgKExheWVyQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJXZWJLaXRUaHJlYWQ6On5MYXllcldlYktpdFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoVHJhbnNmb3JtT3BlcmF0aW9uKToKKwogMjAxMi0wNS0xNSAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
W1dLMl0gRml4IHNjcm9sbGluZyBpbiB0b3VjaCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCmluZGV4IGQ2YzgzMzY3ODY0ODJj
ZGVmZmMyMDU4YTFiZGM1YTA5YTg4NjNhZjkuLmI1NWJmYzFkY2FkZjM4YTk0N2JmMTVmYjU0OWM3
OTFkNmMxODE3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yOSw3ICsyOSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGltaW5nRnVuY3Rpb24+IHsKKyNlbHNlCiBjbGFz
cyBUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRpbWluZ0Z1bmN0aW9uPiB7Cisj
ZW5kaWYKIHB1YmxpYzoKIAogICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJBbmlt
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJBbmltYXRpb24uaAppbmRleCAxMDQ0NzcwODJlNDk5ZTdhMzU3NjNjZWNmOWU0ZmI2MTBlOWIw
MmFmLi5jODQwNTVkOTczZDFjMGU1YThlY2Q1OTZlZmM4NmViNTFjOGEyYzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQW5pbWF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckFuaW1hdGlvbi5oCkBAIC0zNCwxNyArMzQsOCBAQCBjbGFzcyBBbmltYXRpb247CiBjbGFz
cyBMYXllckNvbXBvc2l0aW5nVGhyZWFkOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAK
LS8vIFRoaXMgY2xhc3MgdXNlcyBub24tdGhyZWFkc2FmZSByZWZjb3VudGluZyBpbiB0aGUgV2Vi
Q29yZTo6QW5pbWF0aW9uIGFuZAotLy8gV2ViQ29yZTo6U3RyaW5nIG1lbWJlcnMsIHNvIHVzaW5n
IHRocmVhZHNhZmUgcmVmY291bnRpbmcgaGVyZSB3b3VsZCBiZSBhIGJpZwotLy8gY292ZXItdXAu
IEluc3RlYWQsIHlvdSBtdXN0IGJlIGNhcmVmdWwgdG8gdXNlIHJlZi9kZXJlZiB0aGlzIGNsYXNz
IG9ubHkgb24KLS8vIHRoZSBXZWJLaXQgdGhyZWFkLCBvciB3aGVuIHRoZSBXZWJLaXQgYW5kIGNv
bXBvc2l0aW5nIHRocmVhZHMgYXJlIGluIHN5bmMuCi1jbGFzcyBMYXllckFuaW1hdGlvbiA6IHB1
YmxpYyBSZWZDb3VudGVkPExheWVyQW5pbWF0aW9uPiB7CitjbGFzcyBMYXllckFuaW1hdGlvbiA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMYXllckFuaW1hdGlvbj4gewogcHVibGljOgot
ICAgIC8vIFdlYktpdCB0aHJlYWQgb25seQotICAgIC8vIEJlY2F1c2UgdGhlIHJlZmNvdW50aW5n
IGRvbmUgaW4gY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgaXMgbm90IHRocmVhZCBzYWZlLAot
ICAgIC8vIHRoZSBMYXllckFuaW1hdGlvbiBtdXN0IGJlIGNyZWF0ZWQgb3IgZGVzdHJveWVkIG9u
IHRoZSBXZWJLaXQgdGhyZWFkLCBvciB3aGVuCi0gICAgLy8gdGhlIFdlYktpdCBhbmQgY29tcG9z
aXRpbmcgdGhyZWFkcyBhcmUgaW4gc3luYy4KLSAgICAvLyBBbHNvLCB0aGUgbmFtZSBwcm9wZXJ0
eSBpcyB1c2luZyBhIFN0cmluZyB3aGljaCBoYXMgbm9uLXRocmVhZHNhZmUgcmVmY291bnRpbmcu
CiAgICAgLy8gVGhlIHNldFN0YXJ0VGltZSBtZXRob2QgaXMgbm90IHRocmVhZHNhZmUgYW5kIG11
c3Qgb25seSBiZSBjYWxsZWQgb24gYSBuZXdseQogICAgIC8vIGNyZWF0ZWQgTGF5ZXJBbmltYXRp
b24gYmVmb3JlIHNlbmRpbmcgaXQgb2ZmIHRvIHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJBbmltYXRpb24+IGNyZWF0ZShjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24q
IGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY1
LDcgKzU2LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU3RyaW5nIG5hbWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1fbmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhtX25hbWUpOworICAgIH0KKwogICAg
IHZvaWQgc2V0U3RhcnRUaW1lKGRvdWJsZSB0aW1lKSB7IG1fc3RhcnRUaW1lID0gdGltZTsgfQog
CiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB0aHJlYWQgc2FmZSAoaW1tdXRhYmxlIHN0YXRl
KS4KQEAgLTc3LDE0ICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHRpbWVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVPZmZzZXQ7IH0KICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KICAgICBzaXplX3QgdmFsdWVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUoKTsgfQotCi0gICAgLy8gTk9URTogRG9uJ3QgdHJ5IHRv
IHJlZiBhIFRpbWluZ0Z1bmN0aW9uLCB0aGF0J3Mgbm90IGEgdGhyZWFkc2FmZSBvcGVyYXRpb24u
CiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBpbnQgaXRlcmF0aW9uQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX2l0ZXJhdGlvbkNvdW50OyB9CiAgICAgQW5pbWF0aW9uOjpBbmltYXRpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KLQotICAgIC8v
IE5PVEU6IERvbid0IHRyeSB0byBjbG9uZSgpIGFuIEFuaW1hdGlvblZhbHVlLCB0aGF0J3Mgbm90
IGEgdGhyZWFkc2FmZSBvcGVyYXRpb24gc2luY2UgaXQgbXV0YXRlcyByZWZjb3VudHMuCiAgICAg
Y29uc3QgQW5pbWF0aW9uVmFsdWUqIHZhbHVlQXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVzLmF0KGkpOyB9CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zKiwgZG91YmxlIHByb2dyZXNzKSBjb25zdDsKQEAgLTk2LDcgKzg5LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgOiBtX2lkKHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihhbmltYXRpb24pKQogICAgICAg
ICAsIG1fdmFsdWVzKHZhbHVlcykKICAgICAgICAgLCBtX2JveFNpemUoYm94U2l6ZSkKLSAgICAg
ICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3RpbWVPZmZzZXQodGltZU9mZnNldCkKICAg
ICAgICAgLCBtX3N0YXJ0VGltZSgwKQogICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24oMCkKQEAg
LTEwOCwxNCArMTAwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX3RpbWluZ0Z1bmN0aW9u
ID0gYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpOwogCiAgICAgICAgIHZhbGlkYXRlVHJhbnNm
b3JtTGlzdHMoKTsKKyAgICAgICAgc2V0TmFtZShuYW1lKTsKICAgICB9CiAKICAgICBMYXllckFu
aW1hdGlvbihjb25zdCBMYXllckFuaW1hdGlvbiYgb3RoZXIpCi0gICAgICAgIDogIFJlZkNvdW50
ZWQ8TGF5ZXJBbmltYXRpb24+KCkKKyAgICAgICAgOiAgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGF5
ZXJBbmltYXRpb24+KCkKICAgICAgICAgLCBtX2lkKG90aGVyLm1faWQpCiAgICAgICAgICwgbV92
YWx1ZXMob3RoZXIubV92YWx1ZXMpCiAgICAgICAgICwgbV9ib3hTaXplKG90aGVyLm1fYm94U2l6
ZSkKLSAgICAgICAgLCBtX25hbWUob3RoZXIubV9uYW1lKQogICAgICAgICAsIG1fdGltZU9mZnNl
dChvdGhlci5tX3RpbWVPZmZzZXQpCiAgICAgICAgICwgbV9zdGFydFRpbWUob3RoZXIubV9zdGFy
dFRpbWUpCiAgICAgICAgICwgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZChvdGhlci5tX3Ry
YW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKQpAQCAtMTI0LDE3ICsxMTYsMjYgQEAgcHJpdmF0ZToK
ICAgICAgICAgLCBtX2l0ZXJhdGlvbkNvdW50KG90aGVyLm1faXRlcmF0aW9uQ291bnQpCiAgICAg
ICAgICwgbV9kaXJlY3Rpb24ob3RoZXIubV9kaXJlY3Rpb24pCiAgICAgeworICAgICAgICBzZXRO
YW1lKG90aGVyLm5hbWUoKSk7CiAgICAgfQogCiAgICAgdm9pZCB2YWxpZGF0ZVRyYW5zZm9ybUxp
c3RzKCk7CiAKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKKyAgICAgICAgbV9uYW1lLnJl
c2l6ZShsZW5ndGgpOworICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICAgICAgbWVtY3B5KG1f
bmFtZS5kYXRhKCksIG5hbWUuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3RoKTsK
KyAgICB9CisKICAgICBpbnQgbV9pZDsKIAogICAgIC8vIE5PVEU6IERvbid0IGV4cG9zZSB0aGUg
S2V5ZnJhbWVWYWx1ZUxpc3QgZGlyZWN0bHksIHNpbmNlIGl0cyBjb3B5CiAgICAgLy8gY29uc3Ry
dWN0b3IgbXV0YXRlcyByZWZjb3VudHMgYW5kIHRodXMgaXMgbm90IHRocmVhZCBzYWZlLgogICAg
IEtleWZyYW1lVmFsdWVMaXN0IG1fdmFsdWVzOwogICAgIEludFNpemUgbV9ib3hTaXplOwotICAg
IFN0cmluZyBtX25hbWU7CisgICAgVmVjdG9yPFVDaGFyPiBtX25hbWU7IC8vIE11c3Qgbm90IHVz
ZSBTdHJpbmcgbWVtYmVyIHdoZW4gZGVyaXZpbmcgZnJvbSBUaHJlYWRTYWZlUmVmQ291bnRlZAog
ICAgIGRvdWJsZSBtX3RpbWVPZmZzZXQ7CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGJv
b2wgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29t
cG9zaXRpbmdUaHJlYWQuY3BwCmluZGV4IGFkZjhlY2VmMDI5MWUwMjU4M2UzNTlmM2VjMjg1Y2Vk
OGUyNWZjMmYuLjRiODNjNzlhNTNmNjI1OWE3MGU1MzhiZDA0YjI3YTM4ZmQ5OTNmMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJD
b21wb3NpdGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMzM3LDIxICszMzcs
NiBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldE1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyKiBtZWRpYVBsYXllcikKIH0KICNlbmRpZgogCi12b2lkIExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OmNsZWFyQW5pbWF0aW9ucygpCi17Ci0gICAgLy8gQW5pbWF0aW9ucyBkb24ndCB1c2UgdGhy
ZWFkIHNhZmUgcmVmY291bnRpbmcsIGFuZCBtdXN0IG9ubHkgYmUKLSAgICAvLyB0b3VjaGVkIHdo
ZW4gdGhlIHR3byB0aHJlYWRzIGFyZSBpbiBzeW5jLgotICAgIGlmICghaXNDb21wb3NpdGluZ1Ro
cmVhZCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoU3luY0NvbXBvc2l0aW5nTWVzc2FnZShCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCi0gICAgICAgICAgICAmTGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6Y2xlYXJBbmltYXRpb25zLAotICAgICAgICAgICAgdGhpcykp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5jbGVh
cigpOwotICAgIG1fc3VzcGVuZGVkQW5pbWF0aW9ucy5jbGVhcigpOwotfQotCiB2b2lkIExheWVy
Q29tcG9zaXRpbmdUaHJlYWQ6OnJlbW92ZVN1YmxheWVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
IHN1YmxheWVyKQogewogICAgIEFTU0VSVChpc0NvbXBvc2l0aW5nVGhyZWFkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNv
bXBvc2l0aW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRleCBiODQ3MDA5NGYyNDRjZDAwNGVl
MjBkODk0Mzk0ZTI5ZTg0NTg3NGNkLi42ZDE2OWVkYjEwYzk3YTM1MTY2YjA5YTA0ZDJkMjFlYmE4
NzQ4MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaApAQCAtNjQs
NyArNjQsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgc2V0TWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXIqKTsKICNlbmRpZgotICAgIHZvaWQgY2xlYXJBbmltYXRpb25zKCk7
CiAKICAgICAvLyBOb3QgdGhyZWFkIHNhZmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFk
LmNwcAppbmRleCA2YzU0MzgyNjdkNjA1Y2Y4NzRhZWZhNDg3OTlhOTU2OGI1YjNkZDM0Li5hYjdh
MjAzYjRlMWEzZDkxZGViMGFhMWU1MGNlNDc4MjQ1YzU5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
V2ViS2l0VGhyZWFkLmNwcApAQCAtNzAsOCArNzAsNiBAQCBMYXllcldlYktpdFRocmVhZDo6TGF5
ZXJXZWJLaXRUaHJlYWQoTGF5ZXJUeXBlIHR5cGUsIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5KiBv
dwogCiBMYXllcldlYktpdFRocmVhZDo6fkxheWVyV2ViS2l0VGhyZWFkKCkKIHsKLSAgICBtX2xh
eWVyQ29tcG9zaXRpbmdUaHJlYWQtPmNsZWFyQW5pbWF0aW9ucygpOwotCiAgICAgaWYgKG1fZnJv
bnRCdWZmZXJMb2NrKQogICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3kobV9mcm9udEJ1ZmZl
ckxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCAxZTdlYmIwZTU2
NGU5ZTk3YTQ1MzNhZDVkMTkzOTZhYzRkMTRhYzJhLi5lYTkyM2Q1MTU5MjM0MzUxYjhmNzFlOTRk
OGQ4Yjg1NmJiYWYzOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTM0
LDcgKzM0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ1NTIFRyYW5zZm9ybXMgKG1h
eSBiZWNvbWUgcGFydCBvZiBDU1MzKQogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKK2NsYXNz
IFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUcmFuc2Zv
cm1PcGVyYXRpb24+IHsKKyNlbHNlCiBjbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxUcmFuc2Zvcm1PcGVyYXRpb24+IHsKKyNlbmRpZgogcHVibGljOgogICAgIGVu
dW0gT3BlcmF0aW9uVHlwZSB7CiAgICAgICAgIFNDQUxFX1gsIFNDQUxFX1ksIFNDQUxFLCAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158259</attachid>
            <date>2012-08-14 01:39:43 -0700</date>
            <delta_ts>2014-01-09 21:07:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86483-20120814103910.patch</filename>
            <type>text/plain</type>
            <size>3017</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2ZGZlZWI5MmFlZWQ0
NWM1Mzc3OWE4OTc2MTdjMmZiMTVhZjQxMS4uYjkyOWNlNDNiOWUzZDg1ZjU3ZjJlYjI5NzQ4YmRi
ZTMwM2QzYzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA4LTE0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBUaW1pbmdGdW5jdGlvbiBh
bmQgVHJhbnNmb3JtT3BlcmF0aW9uIHJlZmNvdW50aW5nIGlzIG5vdCB0aHJlYWQgc2FmZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0ODMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhc29uIHRo
ZSBCbGFja0JlcnJ5IHBvcnQgdXNlcyBUaW1pbmdGdW5jdGlvbiBhbmQKKyAgICAgICAgVHJhbnNm
b3JtT3BlcmF0aW9uIG9uIG11bHRpcGxlIHRocmVhZHMgaXMgdGhhdCB0aGVzZSBjbGFzc2VzIChh
bmQKKyAgICAgICAgc3ViY2xhc3NlcykgYXJlIGltbXV0YWJsZSAtIG9uY2UgY29uc3RydWN0ZWQs
IHRoZWlyIGRhdGEgZG9uJ3QgY2hhbmdlLgorCisgICAgICAgIEFuIGltbXV0YWJsZSBjbGFzcyBp
cyB0eXBpY2FsbHkgdGhyZWFkIHNhZmUuCisKKyAgICAgICAgVGhlIG9ubHkgbXV0YWJsZSBwcm9w
ZXJ0eSBvZiB0aGVzZSBjbGFzc2VzIGlzIHRoZSByZWZjb3VudCwgd2hpY2ggd2UKKyAgICAgICAg
d2lzaCB0byBjaGFuZ2UgdG8gYmUgdGhyZWFkIHNhZmUgKGJ1dCBvbmx5IGZvciB0aGUgQmxhY2tC
ZXJyeSBwb3J0KS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUaW1pbmdGdW5jdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVHJhbnNmb3JtT3BlcmF0aW9uKToKKwogMjAxMi0wOC0xMyAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHdoZW4gc3RhdHVzIGJhciBpcyB0b28gbmFycm93LCBjdXQgcGFuZWwgc3RhdHVzIGJh
ciwgbm90IG1haW4gc3RhdHVzIGJhciBpdGVtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAppbmRleCBkNmM4MzM2Nzg2NDgyY2RlZmZj
MjA1OGExYmRjNWEwOWE4ODYzYWY5Li42YjdhMjlmNjAxMjlhZjFiNzcwZGI4YjQxYjA1ZjQzMGU4
NzExMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGlt
aW5nRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGlt
aW5nRnVuY3Rpb24uaApAQCAtMjUsMTEgKzI1LDE5IEBACiAjaWZuZGVmIFRpbWluZ0Z1bmN0aW9u
X2gKICNkZWZpbmUgVGltaW5nRnVuY3Rpb25faAogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkK
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNlbHNlCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQorY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8VGltaW5nRnVuY3Rpb24+IHsKKyNlbHNlCiBjbGFzcyBUaW1pbmdGdW5j
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRpbWluZ0Z1bmN0aW9uPiB7CisjZW5kaWYKIHB1Ymxp
YzoKIAogICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9w
ZXJhdGlvbi5oCmluZGV4IDFlN2ViYjBlNTY0ZTllOTdhNDUzM2FkNWQxOTM5NmFjNGQxNGFjMmEu
LmI3ZGJjZjBmNWNiM2VlYTI0MTE3ZGFmZWZkNTljZWU5NTMxOTQ4MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtMjgsMTMgKzI4LDIxIEBACiAjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisjZWxzZQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDU1MgVHJhbnNmb3JtcyAobWF5
IGJlY29tZSBwYXJ0IG9mIENTUzMpCiAKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorY2xhc3Mg
VHJhbnNmb3JtT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zZm9y
bU9wZXJhdGlvbj4geworI2Vsc2UKIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRyYW5zZm9ybU9wZXJhdGlvbj4geworI2VuZGlmCiBwdWJsaWM6CiAgICAgZW51
bSBPcGVyYXRpb25UeXBlIHsKICAgICAgICAgU0NBTEVfWCwgU0NBTEVfWSwgU0NBTEUsIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>