<?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>46286</bug_id>
          
          <creation_ts>2010-09-22 11:56:26 -0700</creation_ts>
          <short_desc>Add AudioGainNode files</short_desc>
          <delta_ts>2010-09-29 18:12:45 -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>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jamesr</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>283111</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 11:56:26 -0700</bug_when>
    <thetext>Add AudioGainNode files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283112</commentid>
    <comment_count>1</comment_count>
      <attachid>68408</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 11:57:33 -0700</bug_when>
    <thetext>Created attachment 68408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283121</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 11:59:34 -0700</bug_when>
    <thetext>This is the implementation for AudioGainNode as described in the web audio API:
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#AudioGainNode-section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284624</commentid>
    <comment_count>3</comment_count>
      <attachid>68731</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-24 12:32:14 -0700</bug_when>
    <thetext>Created attachment 68731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286342</commentid>
    <comment_count>4</comment_count>
      <attachid>68731</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-28 10:26:50 -0700</bug_when>
    <thetext>Comment on attachment 68731
Patch

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

Basically looks good. Couple of questions. Also, I&apos;m pretty sure m_isInitialized in AudioNode needs to be made volatile, since it&apos;s tested out from under the cover of the lock in some places.

&gt; WebCore/webaudio/AudioGainNode.h:52
&gt; +    virtual void process(size_t /*framesToProcess*/);

I&apos;m not sure the commented-out argument name is WebKit style. Since the name is significant it&apos;s probably worth just using it.

&gt; WebCore/webaudio/AudioGainNode.h:62
&gt; +    void setGain(PassRefPtr&lt;AudioGain&gt; gain) { m_gain = gain; }

Since the gain attribute in the IDL is readonly, and m_gain is initialized in the constructor, does setGain need to be exposed at all?

&gt; WebCore/webaudio/AudioGainNode.idl:34
&gt; +        readonly attribute AudioGain gain;

The Web Audio API doesn&apos;t say this attribute is readonly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286590</commentid>
    <comment_count>5</comment_count>
      <attachid>69121</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-28 15:50:12 -0700</bug_when>
    <thetext>Created attachment 69121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286592</commentid>
    <comment_count>6</comment_count>
      <attachid>68731</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-28 15:52:18 -0700</bug_when>
    <thetext>Comment on attachment 68731
Patch

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

&gt;&gt; WebCore/webaudio/AudioGainNode.h:52
&gt;&gt; +    virtual void process(size_t /*framesToProcess*/);
&gt; 
&gt; I&apos;m not sure the commented-out argument name is WebKit style. Since the name is significant it&apos;s probably worth just using it.

FIXED

&gt;&gt; WebCore/webaudio/AudioGainNode.h:62
&gt;&gt; +    void setGain(PassRefPtr&lt;AudioGain&gt; gain) { m_gain = gain; }
&gt; 
&gt; Since the gain attribute in the IDL is readonly, and m_gain is initialized in the constructor, does setGain need to be exposed at all?

FIXED

&gt;&gt; WebCore/webaudio/AudioGainNode.idl:34
&gt;&gt; +        readonly attribute AudioGain gain;
&gt; 
&gt; The Web Audio API doesn&apos;t say this attribute is readonly.

I&apos;ved added a FIXME here to keep it readonly for now, until proper thread safety can be added.  Although there are applications for writing this attribute, they&apos;re more advanced use cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287155</commentid>
    <comment_count>7</comment_count>
      <attachid>69121</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-29 15:09:26 -0700</bug_when>
    <thetext>Comment on attachment 69121
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287279</commentid>
    <comment_count>8</comment_count>
      <attachid>69121</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 18:12:40 -0700</bug_when>
    <thetext>Comment on attachment 69121
Patch

Clearing flags on attachment: 69121

Committed r68734: &lt;http://trac.webkit.org/changeset/68734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287280</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 18:12:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68408</attachid>
            <date>2010-09-22 11:57:33 -0700</date>
            <delta_ts>2010-09-24 12:32:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46286-20100922115731.patch</filename>
            <type>text/plain</type>
            <size>11057</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODA1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9HYWluTm9kZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDYyODYKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgYXVkaW8g
QVBJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0dh
aW5Ob2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpBdWRp
b0dhaW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvR2Fpbk5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9HYWluTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dh
aW5Ob2RlOjp1bmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6
Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlv
R2Fpbk5vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6Z2Fpbik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpzZXRHYWluKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRp
b0dhaW5Ob2RlLmlkbDogQWRkZWQuCisKIDIwMTAtMDktMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBX
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
d2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJB
dWRpb0dhaW5Ob2RlLmgiCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlv
Tm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQXVkaW9HYWluTm9kZTo6QXVkaW9HYWluTm9kZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCisgICAgLCBtX2xhc3RHYWluKDEuMCkKK3sKKyAgICBtX2dhaW4gPSBBdWRpb0dhaW46
OmNyZWF0ZSgiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOworCisgICAgYWRkSW5wdXQoYWRvcHRQdHIo
bmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBB
dWRpb05vZGVPdXRwdXQodGhpcywgMSkpKTsKKyAgICAKKyAgICBzZXRUeXBlKE5vZGVUeXBlR2Fp
bik7CisgICAgCisgICAgaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OnBy
b2Nlc3Moc2l6ZV90IC8qZnJhbWVzVG9Qcm9jZXNzKi8pCit7CisgICAgLy8gRklYTUU6IHRoZXJl
IGlzIGEgbmljZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgcHJvY2Vzc2luZyBoZXJlLCBhbmQgbGV0
IHRoZSBnYWluIGNoYW5nZQorICAgIC8vIGhhcHBlbiBpbiB0aGUgc3VtbWluZyBqdW5jdGlvbiBp
bnB1dCBvZiB0aGUgQXVkaW9Ob2RlIHdlJ3JlIGNvbm5lY3RlZCB0by4KKyAgICAvLyBUaGVuIHdl
IGNhbiBhdm9pZCBhbGwgb2YgdGhlIGZvbGxvd2luZzoKKworICAgIEF1ZGlvQnVzKiBvdXRwdXRC
dXMgPSBvdXRwdXQoMCktPmJ1cygpOworICAgIEFTU0VSVChvdXRwdXRCdXMpOworCisgICAgLy8g
VGhlIHJlYWx0aW1lIHRocmVhZCBjYW4ndCBibG9jayBvbiB0aGlzIGxvY2ssIHNvIHdlIGNhbGwg
dHJ5TG9jaygpIGluc3RlYWQuCisgICAgaWYgKG1fcHJvY2Vzc0xvY2sudHJ5TG9jaygpKSB7Cisg
ICAgICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSkK
KyAgICAgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIEF1ZGlvQnVzKiBpbnB1dEJ1cyA9IGlucHV0KDApLT5idXMoKTsKKworICAgICAgICAgICAg
Ly8gQXBwbHkgdGhlIGdhaW4gd2l0aCBkZS16aXBwZXJpbmcgaW50byB0aGUgb3V0cHV0IGJ1cy4K
KyAgICAgICAgICAgIG91dHB1dEJ1cy0+Y29weVdpdGhHYWluRnJvbSgqaW5wdXRCdXMsICZtX2xh
c3RHYWluLCBnYWluKCktPnZhbHVlKCkpOworICAgICAgICB9CisKKyAgICAgICAgbV9wcm9jZXNz
TG9jay51bmxvY2soKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUb28gYmFkIC0gdGhlIHRy
eUxvY2soKSBmYWlsZWQuICBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgcmUtY29ubmVjdGlu
ZyBhbmQgd2VyZSBhbHJlYWR5IG91dHB1dHRpbmcgc2lsZW5jZSBhbnl3YXkuLi4KKyAgICAgICAg
b3V0cHV0QnVzLT56ZXJvKCk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OnJlc2V0
KCkKK3sKKyAgICAvLyBTbmFwIGRpcmVjdGx5IHRvIGRlc2lyZWQgZ2Fpbi4KKyAgICBtX2xhc3RH
YWluID0gZ2FpbigpLT52YWx1ZSgpOworfQorCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OmluaXRpYWxp
emUoKQoreworICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgQXVkaW9HYWlu
Tm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30K
KworLy8gRklYTUU6IHRoaXMgY2FuIGdvIGF3YXkgd2hlbiB3ZSBkbyBtaXhpbmcgd2l0aCBnYWlu
IGRpcmVjdGx5IGluIHN1bW1pbmcganVuY3Rpb24gb2YgQXVkaW9Ob2RlSW5wdXQKKy8vCisvLyBB
cyBzb29uIGFzIHdlIGtub3cgdGhlIGNoYW5uZWwgY291bnQgb2Ygb3VyIGlucHV0LCB3ZSBjYW4g
bGF6aWx5IGluaXRpYWxpemUuCisvLyBTb21ldGltZXMgdGhpcyBtYXkgYmUgY2FsbGVkIG1vcmUg
dGhhbiBvbmNlIHdpdGggZGlmZmVyZW50IGNoYW5uZWwgY291bnRzLCBpbiB3aGljaCBjYXNlIHdl
IG11c3Qgc2FmZWx5CisvLyB1bmluaXRpYWxpemUgYW5kIHRoZW4gcmUtaW5pdGlhbGl6ZSB3aXRo
IHRoZSBuZXcgY2hhbm5lbCBjb3VudC4KK3ZvaWQgQXVkaW9HYWluTm9kZTo6Y2hlY2tOdW1iZXJP
ZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQoreworICAgIEFTU0VSVChp
bnB1dCAmJiBpbnB1dCA9PSB0aGlzLT5pbnB1dCgwKSk7CisgICAgaWYgKGlucHV0ICE9IHRoaXMt
PmlucHV0KDApKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMgPSBpbnB1dC0+bnVtYmVyT2ZDaGFubmVscygpOyAgICAKKworICAgIGlmIChp
c0luaXRpYWxpemVkKCkgJiYgbnVtYmVyT2ZDaGFubmVscyAhPSBvdXRwdXQoMCktPmJ1cygpLT5u
dW1iZXJPZkNoYW5uZWxzKCkpIHsKKyAgICAgICAgLy8gV2UncmUgYWxyZWFkeSBpbml0aWFsaXpl
ZCBidXQgdGhlIGNoYW5uZWwgY291bnQgaGFzIGNoYW5nZWQuCisgICAgICAgIC8vIFdlIG5lZWQg
dG8gYmUgY2FyZWZ1bCBzaW5jZSB3ZSBtYXkgYmUgYWN0aXZlbHkgcHJvY2Vzc2luZyByaWdodCBu
b3csIHNvIHN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgorICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIobV9wcm9jZXNzTG9jayk7CisgICAgICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIH0KKwor
ICAgIC8vIFRoaXMgd2lsbCBwcm9wYWdhdGUgdGhlIGNoYW5uZWwgY291bnQgdG8gYW55IG5vZGVz
IGNvbm5lY3RlZCBmdXJ0aGVyIGRvd25zdHJlYW0gaW4gdGhlIGdyYXBoLgorICAgIG91dHB1dCgw
KS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKKworICAgIGluaXRpYWxp
emUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEF1ZGlvR2Fpbk5vZGVfaAorI2RlZmluZSBBdWRpb0dhaW5Ob2RlX2gK
KworI2luY2x1ZGUgIkF1ZGlvR2Fpbi5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQ29udGV4dDsKKyAgICAKK2NsYXNzIEF1ZGlv
R2Fpbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBdWRpb0dhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUg
c2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9HYWlu
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCisgICAgfQorICAgIAorICAgIC8vIEF1
ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCAvKmZyYW1lc1RvUHJvY2Vz
cyovKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsgICAgCisKKyAgICBBdWRp
b0dhaW4qIGdhaW4oKSB7IHJldHVybiBtX2dhaW4uZ2V0KCk7IH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCisgICAgdm9pZCBzZXRHYWluKFBhc3NSZWZQdHI8QXVkaW9H
YWluPiBnYWluKSB7IG1fZ2FpbiA9IGdhaW47IH0KKworICAgIHZpcnR1YWwgdm9pZCBjaGVja051
bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopOworICAgIAorcHJpdmF0ZToK
KyAgICBBdWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKwor
ICAgIGRvdWJsZSBtX2xhc3RHYWluOworICAgIFJlZlB0cjxBdWRpb0dhaW4+IG1fZ2FpbjsKKwor
ICAgIC8vIFRoaXMgc3luY2hyb25pemVzIGxpdmUgY2hhbm5lbCBjb3VudCBjaGFuZ2VzIHdoaWNo
IHJlcXVpcmUgYW4gdW5pbml0aWFsaXphdGlvbiAvIHJlLWluaXRpYWxpemF0aW9uLgorICAgIC8v
IEZJWE1FOiB0aGlzIGNhbiBnbyBhd2F5IHdoZW4gd2UgaW1wbGVtZW50IG9wdGltaXphdGlvbiBm
b3IgbWl4aW5nIHdpdGggZ2FpbiBkaXJlY3RseSBpbiBzdW1taW5nIGp1bmN0aW9uIG9mIEF1ZGlv
Tm9kZUlucHV0CisgICAgbXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXVkaW9HYWluTm9kZV9oCkluZGV4OiBXZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9HYWluTm9kZS5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvR2Fpbk5vZGUuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IGF1ZGlvIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8s
CisgICAgICAgIEdlbmVyYXRlVG9KUworICAgIF0gQXVkaW9HYWluTm9kZSA6IEF1ZGlvTm9kZSB7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0dhaW4gZ2FpbjsKKyAgICB9OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68731</attachid>
            <date>2010-09-24 12:32:14 -0700</date>
            <delta_ts>2010-09-28 15:52:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46286-20100924123212.patch</filename>
            <type>text/plain</type>
            <size>11399</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjQgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9HYWluTm9kZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDYyODYKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgYXVkaW8g
QVBJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0dh
aW5Ob2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpBdWRp
b0dhaW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvR2Fpbk5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9HYWluTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dh
aW5Ob2RlOjp1bmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6
Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlv
R2Fpbk5vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6Z2Fpbik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpzZXRHYWluKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRp
b0dhaW5Ob2RlLmlkbDogQWRkZWQuCisKIDIwMTAtMDktMjQgIERhdmlkIEh5YXR0ICA8aHlhdHRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9HYWluTm9kZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvR2Fpbk5vZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRp
b0dhaW5Ob2RlLmgiCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvTm9k
ZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworQXVkaW9HYWluTm9kZTo6QXVkaW9HYWluTm9kZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCisgICAgLCBtX2xhc3RHYWluKDEuMCkKK3sKKyAgICBtX2dhaW4gPSBBdWRpb0dhaW46OmNy
ZWF0ZSgiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOworCisgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3
IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRp
b05vZGVPdXRwdXQodGhpcywgMSkpKTsKKyAgICAKKyAgICBzZXRUeXBlKE5vZGVUeXBlR2Fpbik7
CisgICAgCisgICAgaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OnByb2Nl
c3Moc2l6ZV90IC8qZnJhbWVzVG9Qcm9jZXNzKi8pCit7CisgICAgLy8gRklYTUU6IHRoZXJlIGlz
IGEgbmljZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgcHJvY2Vzc2luZyBoZXJlLCBhbmQgbGV0IHRo
ZSBnYWluIGNoYW5nZQorICAgIC8vIGhhcHBlbiBpbiB0aGUgc3VtbWluZyBqdW5jdGlvbiBpbnB1
dCBvZiB0aGUgQXVkaW9Ob2RlIHdlJ3JlIGNvbm5lY3RlZCB0by4KKyAgICAvLyBUaGVuIHdlIGNh
biBhdm9pZCBhbGwgb2YgdGhlIGZvbGxvd2luZzoKKworICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMg
PSBvdXRwdXQoMCktPmJ1cygpOworICAgIEFTU0VSVChvdXRwdXRCdXMpOworCisgICAgLy8gVGhl
IHJlYWx0aW1lIHRocmVhZCBjYW4ndCBibG9jayBvbiB0aGlzIGxvY2ssIHNvIHdlIGNhbGwgdHJ5
TG9jaygpIGluc3RlYWQuCisgICAgaWYgKG1fcHJvY2Vzc0xvY2sudHJ5TG9jaygpKSB7CisgICAg
ICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSkKKyAg
ICAgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IEF1ZGlvQnVzKiBpbnB1dEJ1cyA9IGlucHV0KDApLT5idXMoKTsKKworICAgICAgICAgICAgLy8g
QXBwbHkgdGhlIGdhaW4gd2l0aCBkZS16aXBwZXJpbmcgaW50byB0aGUgb3V0cHV0IGJ1cy4KKyAg
ICAgICAgICAgIG91dHB1dEJ1cy0+Y29weVdpdGhHYWluRnJvbSgqaW5wdXRCdXMsICZtX2xhc3RH
YWluLCBnYWluKCktPnZhbHVlKCkpOworICAgICAgICB9CisKKyAgICAgICAgbV9wcm9jZXNzTG9j
ay51bmxvY2soKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUb28gYmFkIC0gdGhlIHRyeUxv
Y2soKSBmYWlsZWQuICBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgcmUtY29ubmVjdGluZyBh
bmQgd2VyZSBhbHJlYWR5IG91dHB1dHRpbmcgc2lsZW5jZSBhbnl3YXkuLi4KKyAgICAgICAgb3V0
cHV0QnVzLT56ZXJvKCk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OnJlc2V0KCkK
K3sKKyAgICAvLyBTbmFwIGRpcmVjdGx5IHRvIGRlc2lyZWQgZ2Fpbi4KKyAgICBtX2xhc3RHYWlu
ID0gZ2FpbigpLT52YWx1ZSgpOworfQorCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OmluaXRpYWxpemUo
KQoreworICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgQXVkaW9HYWluTm9k
ZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30KKwor
Ly8gRklYTUU6IHRoaXMgY2FuIGdvIGF3YXkgd2hlbiB3ZSBkbyBtaXhpbmcgd2l0aCBnYWluIGRp
cmVjdGx5IGluIHN1bW1pbmcganVuY3Rpb24gb2YgQXVkaW9Ob2RlSW5wdXQKKy8vCisvLyBBcyBz
b29uIGFzIHdlIGtub3cgdGhlIGNoYW5uZWwgY291bnQgb2Ygb3VyIGlucHV0LCB3ZSBjYW4gbGF6
aWx5IGluaXRpYWxpemUuCisvLyBTb21ldGltZXMgdGhpcyBtYXkgYmUgY2FsbGVkIG1vcmUgdGhh
biBvbmNlIHdpdGggZGlmZmVyZW50IGNoYW5uZWwgY291bnRzLCBpbiB3aGljaCBjYXNlIHdlIG11
c3Qgc2FmZWx5CisvLyB1bmluaXRpYWxpemUgYW5kIHRoZW4gcmUtaW5pdGlhbGl6ZSB3aXRoIHRo
ZSBuZXcgY2hhbm5lbCBjb3VudC4KK3ZvaWQgQXVkaW9HYWluTm9kZTo6Y2hlY2tOdW1iZXJPZkNo
YW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQoreworICAgIEFTU0VSVChpbnB1
dCAmJiBpbnB1dCA9PSB0aGlzLT5pbnB1dCgwKSk7CisgICAgaWYgKGlucHV0ICE9IHRoaXMtPmlu
cHV0KDApKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMgPSBpbnB1dC0+bnVtYmVyT2ZDaGFubmVscygpOyAgICAKKworICAgIGlmIChpc0lu
aXRpYWxpemVkKCkgJiYgbnVtYmVyT2ZDaGFubmVscyAhPSBvdXRwdXQoMCktPm51bWJlck9mQ2hh
bm5lbHMoKSkgeworICAgICAgICAvLyBXZSdyZSBhbHJlYWR5IGluaXRpYWxpemVkIGJ1dCB0aGUg
Y2hhbm5lbCBjb3VudCBoYXMgY2hhbmdlZC4KKyAgICAgICAgLy8gV2UgbmVlZCB0byBiZSBjYXJl
ZnVsIHNpbmNlIHdlIG1heSBiZSBhY3RpdmVseSBwcm9jZXNzaW5nIHJpZ2h0IG5vdywgc28gc3lu
Y2hyb25pemUgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3By
b2Nlc3NMb2NrKTsKKyAgICAgICAgdW5pbml0aWFsaXplKCk7CisgICAgfQorCisgICAgLy8gVGhp
cyB3aWxsIHByb3BhZ2F0ZSB0aGUgY2hhbm5lbCBjb3VudCB0byBhbnkgbm9kZXMgY29ubmVjdGVk
IGZ1cnRoZXIgZG93bnN0cmVhbSBpbiB0aGUgZ3JhcGguCisgICAgb3V0cHV0KDApLT5zZXROdW1i
ZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgaW5pdGlhbGl6ZSgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpJ
bmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQXVkaW9HYWluTm9kZV9oCisjZGVmaW5lIEF1ZGlvR2Fpbk5vZGVfaAorCisjaW5jbHVk
ZSAiQXVkaW9HYWluLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQXVkaW9Db250ZXh0OworICAgIAorLy8gQXVkaW9HYWluTm9kZSBpcyBh
biBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQgd2hpY2ggYXBwbGllcyBh
IGdhaW4gKHZvbHVtZSkgY2hhbmdlIHRvIHRoZSBhdWRpbyBzaWduYWwuCisvLyBEZS16aXBwZXJp
bmcgKHNtb290aGluZykgaXMgYXBwbGllZCB3aGVuIHRoZSBnYWluIHZhbHVlIGlzIGNoYW5nZWQg
ZHluYW1pY2FsbHkuCisKK2NsYXNzIEF1ZGlvR2Fpbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9HYWluTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAg
ICAgCisgICAgfQorICAgIAorICAgIC8vIEF1ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzKHNpemVfdCAvKmZyYW1lc1RvUHJvY2VzcyovKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCB1bmlu
aXRpYWxpemUoKTsgICAgCisKKyAgICAvLyBDYWxsZWQgaW4gdGhlIG1haW4gdGhyZWFkIHdoZW4g
dGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhlIGlucHV0IG1heSBoYXZlIGNoYW5nZWQuCisg
ICAgdmlydHVhbCB2b2lkIGNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlu
cHV0Kik7CisKKyAgICAvLyBKYXZhU2NyaXB0IGludGVyZmFjZQorICAgIEF1ZGlvR2FpbiogZ2Fp
bigpIHsgcmV0dXJuIG1fZ2Fpbi5nZXQoKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICB2b2lkIHNldEdhaW4oUGFzc1JlZlB0cjxBdWRpb0dhaW4+IGdhaW4p
IHsgbV9nYWluID0gZ2FpbjsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBdWRpb0dhaW5Ob2RlKEF1
ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKworICAgIGRvdWJsZSBtX2xhc3RHYWlu
OyAvLyBmb3IgZGUtemlwcGVyaW5nCisgICAgUmVmUHRyPEF1ZGlvR2Fpbj4gbV9nYWluOworCisg
ICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgbGl2ZSBjaGFubmVsIGNvdW50IGNoYW5nZXMgd2hpY2gg
cmVxdWlyZSBhbiB1bmluaXRpYWxpemF0aW9uIC8gcmUtaW5pdGlhbGl6YXRpb24uCisgICAgLy8g
RklYTUU6IHRoaXMgY2FuIGdvIGF3YXkgd2hlbiB3ZSBpbXBsZW1lbnQgb3B0aW1pemF0aW9uIGZv
ciBtaXhpbmcgd2l0aCBnYWluIGRpcmVjdGx5IGluIHN1bW1pbmcganVuY3Rpb24gb2YgQXVkaW9O
b2RlSW5wdXQuCisgICAgbXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXVkaW9HYWluTm9kZV9oCkluZGV4OiBXZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9HYWluTm9kZS5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvR2Fpbk5vZGUuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IGF1ZGlvIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8s
CisgICAgICAgIEdlbmVyYXRlVG9KUworICAgIF0gQXVkaW9HYWluTm9kZSA6IEF1ZGlvTm9kZSB7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0dhaW4gZ2FpbjsKKyAgICB9OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69121</attachid>
            <date>2010-09-28 15:50:12 -0700</date>
            <delta_ts>2010-09-29 18:12:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46286-20100928155012.patch</filename>
            <type>text/plain</type>
            <size>11111</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODU5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDktMjggIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9HYWluTm9kZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDYyODYKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgYXVkaW8g
QVBJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0dh
aW5Ob2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpBdWRp
b0dhaW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvR2Fpbk5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9HYWluTm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0dhaW5Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6
Z2Fpbik6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5pZGw6IEFkZGVkLgorCiAy
MDEwLTA5LTI4ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvR2Fpbk5vZGUuaCIKKworI2luY2x1ZGUg
IkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRp
b05vZGVPdXRwdXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb0dhaW5Ob2RlOjpB
dWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisg
ICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fbGFzdEdhaW4oMS4w
KQoreworICAgIG1fZ2FpbiA9IEF1ZGlvR2Fpbjo6Y3JlYXRlKCJnYWluIiwgMS4wLCAwLjAsIDEu
MCk7CisKKyAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsK
KyAgICBhZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOwor
ICAgIAorICAgIHNldFR5cGUoTm9kZVR5cGVHYWluKTsKKyAgICAKKyAgICBpbml0aWFsaXplKCk7
Cit9CisKK3ZvaWQgQXVkaW9HYWluTm9kZTo6cHJvY2VzcyhzaXplX3QgLypmcmFtZXNUb1Byb2Nl
c3MqLykKK3sKKyAgICAvLyBGSVhNRTogdGhlcmUgaXMgYSBuaWNlIG9wdGltaXphdGlvbiB0byBh
dm9pZCBwcm9jZXNzaW5nIGhlcmUsIGFuZCBsZXQgdGhlIGdhaW4gY2hhbmdlCisgICAgLy8gaGFw
cGVuIGluIHRoZSBzdW1taW5nIGp1bmN0aW9uIGlucHV0IG9mIHRoZSBBdWRpb05vZGUgd2UncmUg
Y29ubmVjdGVkIHRvLgorICAgIC8vIFRoZW4gd2UgY2FuIGF2b2lkIGFsbCBvZiB0aGUgZm9sbG93
aW5nOgorCisgICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IG91dHB1dCgwKS0+YnVzKCk7CisgICAg
QVNTRVJUKG91dHB1dEJ1cyk7CisKKyAgICAvLyBUaGUgcmVhbHRpbWUgdGhyZWFkIGNhbid0IGJs
b2NrIG9uIHRoaXMgbG9jaywgc28gd2UgY2FsbCB0cnlMb2NrKCkgaW5zdGVhZC4KKyAgICBpZiAo
bV9wcm9jZXNzTG9jay50cnlMb2NrKCkpIHsKKyAgICAgICAgaWYgKCFpc0luaXRpYWxpemVkKCkg
fHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgb3V0cHV0QnVzLT56ZXJv
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQXVkaW9CdXMqIGlucHV0QnVzID0gaW5w
dXQoMCktPmJ1cygpOworCisgICAgICAgICAgICAvLyBBcHBseSB0aGUgZ2FpbiB3aXRoIGRlLXpp
cHBlcmluZyBpbnRvIHRoZSBvdXRwdXQgYnVzLgorICAgICAgICAgICAgb3V0cHV0QnVzLT5jb3B5
V2l0aEdhaW5Gcm9tKCppbnB1dEJ1cywgJm1fbGFzdEdhaW4sIGdhaW4oKS0+dmFsdWUoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBtX3Byb2Nlc3NMb2NrLnVubG9jaygpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIFRvbyBiYWQgLSB0aGUgdHJ5TG9jaygpIGZhaWxlZC4gIFdlIG11c3QgYmUg
aW4gdGhlIG1pZGRsZSBvZiByZS1jb25uZWN0aW5nIGFuZCB3ZXJlIGFscmVhZHkgb3V0cHV0dGlu
ZyBzaWxlbmNlIGFueXdheS4uLgorICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAgICB9Cit9
CisKK3ZvaWQgQXVkaW9HYWluTm9kZTo6cmVzZXQoKQoreworICAgIC8vIFNuYXAgZGlyZWN0bHkg
dG8gZGVzaXJlZCBnYWluLgorICAgIG1fbGFzdEdhaW4gPSBnYWluKCktPnZhbHVlKCk7Cit9CisK
Ky8vIEZJWE1FOiB0aGlzIGNhbiBnbyBhd2F5IHdoZW4gd2UgZG8gbWl4aW5nIHdpdGggZ2FpbiBk
aXJlY3RseSBpbiBzdW1taW5nIGp1bmN0aW9uIG9mIEF1ZGlvTm9kZUlucHV0CisvLworLy8gQXMg
c29vbiBhcyB3ZSBrbm93IHRoZSBjaGFubmVsIGNvdW50IG9mIG91ciBpbnB1dCwgd2UgY2FuIGxh
emlseSBpbml0aWFsaXplLgorLy8gU29tZXRpbWVzIHRoaXMgbWF5IGJlIGNhbGxlZCBtb3JlIHRo
YW4gb25jZSB3aXRoIGRpZmZlcmVudCBjaGFubmVsIGNvdW50cywgaW4gd2hpY2ggY2FzZSB3ZSBt
dXN0IHNhZmVseQorLy8gdW5pbml0aWFsaXplIGFuZCB0aGVuIHJlLWluaXRpYWxpemUgd2l0aCB0
aGUgbmV3IGNoYW5uZWwgY291bnQuCit2b2lkIEF1ZGlvR2Fpbk5vZGU6OmNoZWNrTnVtYmVyT2ZD
aGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KiBpbnB1dCkKK3sKKyAgICBBU1NFUlQoaW5w
dXQgJiYgaW5wdXQgPT0gdGhpcy0+aW5wdXQoMCkpOworICAgIGlmIChpbnB1dCAhPSB0aGlzLT5p
bnB1dCgwKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzID0gaW5wdXQtPm51bWJlck9mQ2hhbm5lbHMoKTsgICAgCisKKyAgICBpZiAoaXNJ
bml0aWFsaXplZCgpICYmIG51bWJlck9mQ2hhbm5lbHMgIT0gb3V0cHV0KDApLT5udW1iZXJPZkNo
YW5uZWxzKCkpIHsKKyAgICAgICAgLy8gV2UncmUgYWxyZWFkeSBpbml0aWFsaXplZCBidXQgdGhl
IGNoYW5uZWwgY291bnQgaGFzIGNoYW5nZWQuCisgICAgICAgIC8vIFdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCBzaW5jZSB3ZSBtYXkgYmUgYWN0aXZlbHkgcHJvY2Vzc2luZyByaWdodCBub3csIHNvIHN5
bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgorICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9w
cm9jZXNzTG9jayk7CisgICAgICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIH0KKworICAgIC8vIFRo
aXMgd2lsbCBwcm9wYWdhdGUgdGhlIGNoYW5uZWwgY291bnQgdG8gYW55IG5vZGVzIGNvbm5lY3Rl
ZCBmdXJ0aGVyIGRvd25zdHJlYW0gaW4gdGhlIGdyYXBoLgorICAgIG91dHB1dCgwKS0+c2V0TnVt
YmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKKworICAgIGluaXRpYWxpemUoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykK
SW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEF1ZGlvR2Fpbk5vZGVfaAorI2RlZmluZSBBdWRpb0dhaW5Ob2RlX2gKKworI2luY2x1
ZGUgIkF1ZGlvR2Fpbi5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvQ29udGV4dDsKKyAgICAKKy8vIEF1ZGlvR2Fpbk5vZGUgaXMg
YW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0IHdoaWNoIGFwcGxpZXMg
YSBnYWluICh2b2x1bWUpIGNoYW5nZSB0byB0aGUgYXVkaW8gc2lnbmFsLgorLy8gRGUtemlwcGVy
aW5nIChzbW9vdGhpbmcpIGlzIGFwcGxpZWQgd2hlbiB0aGUgZ2FpbiB2YWx1ZSBpcyBjaGFuZ2Vk
IGR5bmFtaWNhbGx5LgorCitjbGFzcyBBdWRpb0dhaW5Ob2RlIDogcHVibGljIEF1ZGlvTm9kZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9HYWluTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvR2Fpbk5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAg
ICAgIAorICAgIH0KKyAgICAKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsK
KworICAgIC8vIENhbGxlZCBpbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgbnVtYmVyIG9mIGNo
YW5uZWxzIGZvciB0aGUgaW5wdXQgbWF5IGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKKworICAgIC8v
IEphdmFTY3JpcHQgaW50ZXJmYWNlCisgICAgQXVkaW9HYWluKiBnYWluKCkgeyByZXR1cm4gbV9n
YWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAKK3By
aXZhdGU6CisgICAgQXVkaW9HYWluTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0
ZSk7CisKKyAgICBkb3VibGUgbV9sYXN0R2FpbjsgLy8gZm9yIGRlLXppcHBlcmluZworICAgIFJl
ZlB0cjxBdWRpb0dhaW4+IG1fZ2FpbjsKKworICAgIC8vIFRoaXMgc3luY2hyb25pemVzIGxpdmUg
Y2hhbm5lbCBjb3VudCBjaGFuZ2VzIHdoaWNoIHJlcXVpcmUgYW4gdW5pbml0aWFsaXphdGlvbiAv
IHJlLWluaXRpYWxpemF0aW9uLgorICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBnbyBhd2F5IHdoZW4g
d2UgaW1wbGVtZW50IG9wdGltaXphdGlvbiBmb3IgbWl4aW5nIHdpdGggZ2FpbiBkaXJlY3RseSBp
biBzdW1taW5nIGp1bmN0aW9uIG9mIEF1ZGlvTm9kZUlucHV0LgorICAgIG11dGFibGUgTXV0ZXgg
bV9wcm9jZXNzTG9jazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEF1ZGlvR2Fpbk5vZGVfaApJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaWRsCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBhdWRpbyB7CisgICAgaW50ZXJmYWNlIFsKKyAg
ICAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgICAgICBHZW5lcmF0ZVRvSlMKKyAgICBd
IEF1ZGlvR2Fpbk5vZGUgOiBBdWRpb05vZGUgeworICAgICAgICAvLyBGSVhNRTogZXZlbnR1YWxs
eSBpdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHJlbW92ZSB0aGUgcmVhZG9ubHkgcmVzdHJpY3Rp
b24sIGJ1dCBuZWVkIHRvIHByb3Blcmx5IGRlYWwgd2l0aCB0aHJlYWQgc2FmZXR5IGhlcmUuCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0dhaW4gZ2FpbjsKKyAgICB9OworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>