<?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>44712</bug_id>
          
          <creation_ts>2010-08-26 13:08:19 -0700</creation_ts>
          <short_desc>Add audio cone effect files</short_desc>
          <delta_ts>2010-08-30 15:20:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270061</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-26 13:08:19 -0700</bug_when>
    <thetext>Add audio cone effect files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270071</commentid>
    <comment_count>1</comment_count>
      <attachid>65608</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-26 13:22:12 -0700</bug_when>
    <thetext>Created attachment 65608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271645</commentid>
    <comment_count>2</comment_count>
      <attachid>65608</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-30 14:42:22 -0700</bug_when>
    <thetext>Comment on attachment 65608
Patch

Looks good; r=me. One minor issue and one comment.

&gt; Index: WebCore/platform/audio/Cone.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/audio/Cone.cpp	(revision 0)
&gt; +++ WebCore/platform/audio/Cone.cpp	(revision 0)
&gt; @@ -0,0 +1,84 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + *
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt; + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt; + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt; + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt; + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt; + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt; + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#if ENABLE(WEB_AUDIO)
&gt; +
&gt; +#include &quot;Cone.h&quot;

Even though it must be being pulled in through some other header, you should #include &lt;math.h&gt; here since you&apos;re referencing fabs and acos below.

&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +ConeEffect::ConeEffect()
&gt; +    : m_innerAngle(360.0)
&gt; +    , m_outerAngle(360.0)
&gt; +    , m_outerGain(0.0)
&gt; +{
&gt; +}
&gt; +
&gt; +double ConeEffect::gain(Vector3 sourcePosition, Vector3 sourceOrientation, Vector3 listenerPosition)
&gt; +{
&gt; +    if (sourceOrientation.isZero() || ((m_innerAngle == 360.0) &amp;&amp; (m_outerAngle == 360.0)))
&gt; +        return 1.0; // no cone specified - unity gain
&gt; +
&gt; +    // Normalized source-listener vector
&gt; +    Vector3 sourceToListener = listenerPosition - sourcePosition;
&gt; +    sourceToListener.normalize();
&gt; +
&gt; +    Vector3 normalizedSourceOrientation = sourceOrientation;
&gt; +    normalizedSourceOrientation.normalize();
&gt; +
&gt; +    // Angle between the source orientation vector and the source-listener vector
&gt; +    double dotProduct = dot(sourceToListener, normalizedSourceOrientation);
&gt; +    double angle = 180.0 * acos(dotProduct) / M_PI;
&gt; +    double absAngle = fabs(angle);
&gt; +
&gt; +    // Divide by 2.0 here since API is entire angle (not half-angle)
&gt; +    double absInnerAngle = fabs(m_innerAngle) / 2.0;
&gt; +    double absOuterAngle = fabs(m_outerAngle) / 2.0;
&gt; +    double gain = 1.0;
&gt; +
&gt; +    if (absAngle &lt;= absInnerAngle)
&gt; +        // No attenuation
&gt; +        gain = 1.0;
&gt; +    else if (absAngle &gt;= absOuterAngle)
&gt; +        // Max attenuation
&gt; +        gain = m_outerGain;
&gt; +    else {
&gt; +        // Between inner and outer cones
&gt; +        // inner -&gt; outer, x goes from 0 -&gt; 1
&gt; +        double x = (absAngle - absInnerAngle) / (absOuterAngle - absInnerAngle);
&gt; +        gain = (1.0 - x) + m_outerGain * x;
&gt; +    }
&gt; +
&gt; +    return gain;
&gt; +}
&gt; +
&gt; +} // namespace WebCore
&gt; +
&gt; +#endif // ENABLE(WEB_AUDIO)
&gt; Index: WebCore/platform/audio/Cone.h
&gt; ===================================================================
&gt; --- WebCore/platform/audio/Cone.h	(revision 0)
&gt; +++ WebCore/platform/audio/Cone.h	(revision 0)
&gt; @@ -0,0 +1,63 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + *
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt; + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt; + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt; + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt; + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt; + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt; + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#ifndef Cone_h
&gt; +#define Cone_h
&gt; +
&gt; +#include &lt;wtf/Vector3.h&gt;

We&apos;ve discussed offline the fact that Vector3 is in the wrong namespace. You&apos;ll need to fix up references to it. It looks like a couple of options are adding a &quot;using WTF::Vector3;&quot; at the end of wtf/Vector3.h, or adding &quot;using WTF::Vector3&quot; at the top of your class declarations in your headers.

&gt; +namespace WebCore {
&gt; +
&gt; +// Cone gain is defined according to the OpenAL specification
&gt; +
&gt; +class ConeEffect {
&gt; +public:
&gt; +    ConeEffect();
&gt; +
&gt; +    // Returns scalar gain for the given source/listener positions/orientations
&gt; +    double gain(Vector3 sourcePosition, Vector3 sourceOrientation, Vector3 listenerPosition);
&gt; +
&gt; +    // Angles in degrees
&gt; +    void setInnerAngle(double innerAngle) { m_innerAngle = innerAngle; }
&gt; +    double innerAngle() const { return m_innerAngle; }
&gt; +
&gt; +    void setOuterAngle(double outerAngle) { m_outerAngle = outerAngle; }
&gt; +    double outerAngle() const { return m_outerAngle; }
&gt; +
&gt; +    void setOuterGain(double outerGain) { m_outerGain = outerGain; }
&gt; +    double outerGain() const { return m_outerGain; }
&gt; +
&gt; +protected:
&gt; +    double m_innerAngle;
&gt; +    double m_outerAngle;
&gt; +    double m_outerGain;
&gt; +};
&gt; +
&gt; +} // namespace WebCore
&gt; +
&gt; +#endif // Cone_h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271693</commentid>
    <comment_count>3</comment_count>
      <attachid>65608</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-30 15:20:54 -0700</bug_when>
    <thetext>Comment on attachment 65608
Patch

Clearing flags on attachment: 65608

Committed r66414: &lt;http://trac.webkit.org/changeset/66414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271694</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-30 15:20:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65608</attachid>
            <date>2010-08-26 13:22:12 -0700</date>
            <delta_ts>2010-08-30 15:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44712-20100826132211.patch</filename>
            <type>text/plain</type>
            <size>7292</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjEyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDgtMjYgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYXVkaW8gY29uZSBlZmZlY3QgZmlsZXMuICBUaGUgY29uZSBlZmZlY3Qgb3BlcmF0ZXMgYXMg
ZGVmaW5lZCBpbiB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcxMgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBzaW5jZSBhdWRpbyBBUEkgbm90IGltcGxlbWVudGVkIHlldC4KKworICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25lLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpDb25lRWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmdhaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Nv
bmUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRJbm5lckFuZ2xl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmlubmVyQW5nbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJBbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25lRWZmZWN0OjpvdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNl
dE91dGVyR2Fpbik6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRlckdhaW4pOgor
CiAyMDEwLTA4LTI2ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0NvbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29u
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkNvbmUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitDb25lRWZmZWN0OjpDb25lRWZmZWN0KCkKKyAgICA6IG1faW5uZXJBbmdsZSgzNjAu
MCkKKyAgICAsIG1fb3V0ZXJBbmdsZSgzNjAuMCkKKyAgICAsIG1fb3V0ZXJHYWluKDAuMCkKK3sK
K30KKworZG91YmxlIENvbmVFZmZlY3Q6OmdhaW4oVmVjdG9yMyBzb3VyY2VQb3NpdGlvbiwgVmVj
dG9yMyBzb3VyY2VPcmllbnRhdGlvbiwgVmVjdG9yMyBsaXN0ZW5lclBvc2l0aW9uKQoreworICAg
IGlmIChzb3VyY2VPcmllbnRhdGlvbi5pc1plcm8oKSB8fCAoKG1faW5uZXJBbmdsZSA9PSAzNjAu
MCkgJiYgKG1fb3V0ZXJBbmdsZSA9PSAzNjAuMCkpKQorICAgICAgICByZXR1cm4gMS4wOyAvLyBu
byBjb25lIHNwZWNpZmllZCAtIHVuaXR5IGdhaW4KKworICAgIC8vIE5vcm1hbGl6ZWQgc291cmNl
LWxpc3RlbmVyIHZlY3RvcgorICAgIFZlY3RvcjMgc291cmNlVG9MaXN0ZW5lciA9IGxpc3RlbmVy
UG9zaXRpb24gLSBzb3VyY2VQb3NpdGlvbjsKKyAgICBzb3VyY2VUb0xpc3RlbmVyLm5vcm1hbGl6
ZSgpOworCisgICAgVmVjdG9yMyBub3JtYWxpemVkU291cmNlT3JpZW50YXRpb24gPSBzb3VyY2VP
cmllbnRhdGlvbjsKKyAgICBub3JtYWxpemVkU291cmNlT3JpZW50YXRpb24ubm9ybWFsaXplKCk7
CisKKyAgICAvLyBBbmdsZSBiZXR3ZWVuIHRoZSBzb3VyY2Ugb3JpZW50YXRpb24gdmVjdG9yIGFu
ZCB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIGRvdWJsZSBkb3RQcm9kdWN0ID0gZG90
KHNvdXJjZVRvTGlzdGVuZXIsIG5vcm1hbGl6ZWRTb3VyY2VPcmllbnRhdGlvbik7CisgICAgZG91
YmxlIGFuZ2xlID0gMTgwLjAgKiBhY29zKGRvdFByb2R1Y3QpIC8gTV9QSTsKKyAgICBkb3VibGUg
YWJzQW5nbGUgPSBmYWJzKGFuZ2xlKTsKKworICAgIC8vIERpdmlkZSBieSAyLjAgaGVyZSBzaW5j
ZSBBUEkgaXMgZW50aXJlIGFuZ2xlIChub3QgaGFsZi1hbmdsZSkKKyAgICBkb3VibGUgYWJzSW5u
ZXJBbmdsZSA9IGZhYnMobV9pbm5lckFuZ2xlKSAvIDIuMDsKKyAgICBkb3VibGUgYWJzT3V0ZXJB
bmdsZSA9IGZhYnMobV9vdXRlckFuZ2xlKSAvIDIuMDsKKyAgICBkb3VibGUgZ2FpbiA9IDEuMDsK
KworICAgIGlmIChhYnNBbmdsZSA8PSBhYnNJbm5lckFuZ2xlKQorICAgICAgICAvLyBObyBhdHRl
bnVhdGlvbgorICAgICAgICBnYWluID0gMS4wOworICAgIGVsc2UgaWYgKGFic0FuZ2xlID49IGFi
c091dGVyQW5nbGUpCisgICAgICAgIC8vIE1heCBhdHRlbnVhdGlvbgorICAgICAgICBnYWluID0g
bV9vdXRlckdhaW47CisgICAgZWxzZSB7CisgICAgICAgIC8vIEJldHdlZW4gaW5uZXIgYW5kIG91
dGVyIGNvbmVzCisgICAgICAgIC8vIGlubmVyIC0+IG91dGVyLCB4IGdvZXMgZnJvbSAwIC0+IDEK
KyAgICAgICAgZG91YmxlIHggPSAoYWJzQW5nbGUgLSBhYnNJbm5lckFuZ2xlKSAvIChhYnNPdXRl
ckFuZ2xlIC0gYWJzSW5uZXJBbmdsZSk7CisgICAgICAgIGdhaW4gPSAoMS4wIC0geCkgKyBtX291
dGVyR2FpbiAqIHg7CisgICAgfQorCisgICAgcmV0dXJuIGdhaW47Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0NvbmUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb25lX2gKKyNkZWZpbmUg
Q29uZV9oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yMy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIENvbmUgZ2FpbiBpcyBkZWZpbmVkIGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNp
ZmljYXRpb24KKworY2xhc3MgQ29uZUVmZmVjdCB7CitwdWJsaWM6CisgICAgQ29uZUVmZmVjdCgp
OworCisgICAgLy8gUmV0dXJucyBzY2FsYXIgZ2FpbiBmb3IgdGhlIGdpdmVuIHNvdXJjZS9saXN0
ZW5lciBwb3NpdGlvbnMvb3JpZW50YXRpb25zCisgICAgZG91YmxlIGdhaW4oVmVjdG9yMyBzb3Vy
Y2VQb3NpdGlvbiwgVmVjdG9yMyBzb3VyY2VPcmllbnRhdGlvbiwgVmVjdG9yMyBsaXN0ZW5lclBv
c2l0aW9uKTsKKworICAgIC8vIEFuZ2xlcyBpbiBkZWdyZWVzCisgICAgdm9pZCBzZXRJbm5lckFu
Z2xlKGRvdWJsZSBpbm5lckFuZ2xlKSB7IG1faW5uZXJBbmdsZSA9IGlubmVyQW5nbGU7IH0KKyAg
ICBkb3VibGUgaW5uZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJBbmdsZTsgfQorCisg
ICAgdm9pZCBzZXRPdXRlckFuZ2xlKGRvdWJsZSBvdXRlckFuZ2xlKSB7IG1fb3V0ZXJBbmdsZSA9
IG91dGVyQW5nbGU7IH0KKyAgICBkb3VibGUgb3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0ZXJBbmdsZTsgfQorCisgICAgdm9pZCBzZXRPdXRlckdhaW4oZG91YmxlIG91dGVyR2Fpbikg
eyBtX291dGVyR2FpbiA9IG91dGVyR2FpbjsgfQorICAgIGRvdWJsZSBvdXRlckdhaW4oKSBjb25z
dCB7IHJldHVybiBtX291dGVyR2FpbjsgfQorCitwcm90ZWN0ZWQ6CisgICAgZG91YmxlIG1faW5u
ZXJBbmdsZTsKKyAgICBkb3VibGUgbV9vdXRlckFuZ2xlOworICAgIGRvdWJsZSBtX291dGVyR2Fp
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENvbmVfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>