<?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>45577</bug_id>
          
          <creation_ts>2010-09-10 16:51:23 -0700</creation_ts>
          <short_desc>Add AudioNodeInput files</short_desc>
          <delta_ts>2010-10-26 18:59:27 -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>277539</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-10 16:51:23 -0700</bug_when>
    <thetext>Add AudioNodeInput files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277540</commentid>
    <comment_count>1</comment_count>
      <attachid>67263</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-10 16:52:39 -0700</bug_when>
    <thetext>Created attachment 67263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292658</commentid>
    <comment_count>2</comment_count>
      <attachid>70467</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-10-11 14:30:34 -0700</bug_when>
    <thetext>Created attachment 70467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292659</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-10-11 14:31:24 -0700</bug_when>
    <thetext>Uploaded new patch with thread safety changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299923</commentid>
    <comment_count>4</comment_count>
      <attachid>70467</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-26 18:22:34 -0700</bug_when>
    <thetext>Comment on attachment 70467
Patch

Looks good. The threading- and locking-related assertions all look solid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299934</commentid>
    <comment_count>5</comment_count>
      <attachid>70467</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-26 18:59:20 -0700</bug_when>
    <thetext>Comment on attachment 70467
Patch

Clearing flags on attachment: 70467

Committed r70599: &lt;http://trac.webkit.org/changeset/70599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299935</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-26 18:59:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67263</attachid>
            <date>2010-09-10 16:52:39 -0700</date>
            <delta_ts>2010-10-11 14:30:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45577-20100910165238.patch</filename>
            <type>text/plain</type>
            <size>12669</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzI1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDktMTAgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9Ob2RlSW5wdXQgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1NTc3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlv
IEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9O
b2RlSW5wdXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpB
dWRpb05vZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6Y29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVJbnB1dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlu
cHV0OjpidXMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6Om51bWJlck9mQ2hh
bm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmludGVybmFsU3VtbWlu
Z0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6c3VtQWxsQ29ubmVjdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OnB1bGwpOgorICAgICAgICAq
IHdlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlSW5wdXQ6Om5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6Om51
bWJlck9mQ29ubmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6Omlz
Q29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpvdXRwdXQpOgor
CiAyMDEwLTA5LTEwOSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvTm9kZUlucHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9k
ZUlucHV0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlSW5w
dXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5o
IgorCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9Ob2RlSW5wdXQ6OkF1ZGlvTm9kZUlucHV0
KEF1ZGlvTm9kZSogbm9kZSkKKyAgICA6IG1fbm9kZShub2RlKQoreworICAgIG1fbW9ub1N1bW1p
bmdCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoMSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6
ZUluRnJhbWVzKSk7CisgICAgbV9zdGVyZW9TdW1taW5nQnVzID0gYWRvcHRQdHIobmV3IEF1ZGlv
QnVzKDIsIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykpOworfQorCit2b2lkIEF1
ZGlvTm9kZUlucHV0Ojpjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQoreworICAgIEFT
U0VSVChvdXRwdXQgJiYgbm9kZSgpKTsKKyAgICBpZiAoIW91dHB1dCB8fCAhbm9kZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBDaGVjayBpZiB3ZSdyZSBhbHJlYWR5IGNvbm5lY3RlZCB0
byB0aGlzIG91dHB1dC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25u
ZWN0aW9ucygpOyArK2kpIHsKKyAgICAgICAgaWYgKG91dHB1dCA9PSB0aGlzLT5vdXRwdXQoaSkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG91dHB1dC0+YWRkSW5wdXQo
dGhpcyk7CisgICAgbV9vdXRwdXRzLmFwcGVuZChvdXRwdXQpOworCisgICAgLy8gUHJvcGFnYXRl
IGNoYW5uZWwgY291bnQgd2hlbiBjb25uZWN0aW9uIGlzIGZpcnN0IG1hZGUuCisgICAgbm9kZSgp
LT5jaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dCh0aGlzKTsKKworICAgIC8vIFNvbWJvZHkg
aGFzIGp1c3QgY29ubmVjdGVkIHRvIHVzLiAgVGhpcyBjb3VudHMgYXMgYSByZWZlcmVuY2UuCisg
ICAgbm9kZSgpLT5yZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Cit9CisKK3ZvaWQg
QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7Cisg
ICAgQVNTRVJUKG91dHB1dCAmJiBub2RlKCkpOworICAgIGlmICghb3V0cHV0IHx8ICFub2RlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IHRyeSB0byBkaXNjb25uZWN0IGZyb20g
ImFjdGl2ZSIgY29ubmVjdGlvbnMuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0
cHV0cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAob3V0cHV0ID09IG1fb3V0cHV0c1tpXSkg
eworICAgICAgICAgICAgbV9vdXRwdXRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIG91dHB1dC0+
cmVtb3ZlSW5wdXQodGhpcyk7CisgICAgICAgICAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6
UmVmVHlwZUNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gT3RoZXJ3aXNlLCB0cnkgdG8gZGlzY29ubmVjdCBmcm9tIGRpc2FibGVkIGNv
bm5lY3Rpb25zLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rpc2FibGVkT3V0cHV0
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAob3V0cHV0ID09IG1fZGlzYWJsZWRPdXRwdXRz
W2ldKSB7CisgICAgICAgICAgICBtX2Rpc2FibGVkT3V0cHV0cy5yZW1vdmUoaSk7CisgICAgICAg
ICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOworICAgICAgICAgICAgbm9kZSgpLT5kZXJl
ZihBdWRpb05vZGU6OlJlZlR5cGVEaXNhYmxlZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBdWRp
b05vZGVJbnB1dDo6ZGlzYWJsZShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NF
UlQob3V0cHV0ICYmIG5vZGUoKSk7CisgICAgaWYgKCFvdXRwdXQgfHwgIW5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0cy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAob3V0cHV0ID09IG1fb3V0cHV0c1tpXSkgeworICAgICAg
ICAgICAgbV9kaXNhYmxlZE91dHB1dHMuYXBwZW5kKG91dHB1dCk7CisgICAgICAgICAgICBtX291
dHB1dHMucmVtb3ZlKGkpOworCisgICAgICAgICAgICBub2RlKCktPnJlZihBdWRpb05vZGU6OlJl
ZlR5cGVEaXNhYmxlZCk7CisgICAgICAgICAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6UmVm
VHlwZUNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmVu
YWJsZShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NFUlQob3V0cHV0ICYmIG5v
ZGUoKSk7CisgICAgaWYgKCFvdXRwdXQgfHwgIW5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gTW92ZSBvdXRwdXQgZnJvbSBkaXNhYmxlZCBsaXN0IHRvIGFjdGl2ZSBsaXN0LgorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rpc2FibGVkT3V0cHV0cy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAob3V0cHV0ID09IG1fZGlzYWJsZWRPdXRwdXRzW2ldKSB7CisgICAgICAg
ICAgICBtX291dHB1dHMuYXBwZW5kKG91dHB1dCk7CisgICAgICAgICAgICBtX2Rpc2FibGVkT3V0
cHV0cy5yZW1vdmUoaSk7CisKKyAgICAgICAgICAgIG5vZGUoKS0+cmVmKEF1ZGlvTm9kZTo6UmVm
VHlwZUNvbm5lY3Rpb24pOworICAgICAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRpb05vZGU6OlJl
ZlR5cGVEaXNhYmxlZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0F1ZGlvQnVzKiBBdWRpb05vZGVJ
bnB1dDo6YnVzKCkKK3sKKyAgICAvLyBIYW5kbGUgc2luZ2xlIGNvbm5lY3Rpb24gc3BlY2lhbGx5
IHRvIGFsbG93IGZvciBpbi1wbGFjZSBwcm9jZXNzaW5nLgorICAgIGlmIChudW1iZXJPZkNvbm5l
Y3Rpb25zKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIG91dHB1dCgwKS0+YnVzKCk7CisKKyAgICAv
LyBNdWx0aXBsZSBjb25uZWN0aW9ucyBjYXNlIChvciBubyBjb25uZWN0aW9ucykuCisgICAgcmV0
dXJuIGludGVybmFsU3VtbWluZ0J1cygpOworfQorCit1bnNpZ25lZCBBdWRpb05vZGVJbnB1dDo6
bnVtYmVyT2ZDaGFubmVscygpIGNvbnN0Cit7CisgICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNo
YW5uZWxzIG9mIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIGxhcmdlc3QgbnVtYmVyIG9mIGNoYW5u
ZWxzLgorICAgIHVuc2lnbmVkIG1heENoYW5uZWxzID0gMTsgLy8gb25lIGNoYW5uZWwgaXMgdGhl
IG1pbmltdW0gYWxsb3dlZAorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0
cy5zaXplKCk7ICsraSkKKyAgICAgICAgbWF4Q2hhbm5lbHMgPSBzdGQ6Om1heChtYXhDaGFubmVs
cywgb3V0cHV0KGkpLT5idXMoKS0+bnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAKKyAgICByZXR1
cm4gbWF4Q2hhbm5lbHM7Cit9CisKK0F1ZGlvQnVzKiBBdWRpb05vZGVJbnB1dDo6aW50ZXJuYWxT
dW1taW5nQnVzKCkKK3sKKyAgICAvLyBXZSBtdXN0IHBpY2sgYSBzdW1taW5nIGJ1cyB3aGljaCBp
cyB0aGUgcmlnaHQgc2l6ZSB0byBoYW5kbGUgdGhlIGxhcmdlc3QgY29ubmVjdGlvbi4KKyAgICBz
d2l0Y2ggKG51bWJlck9mQ2hhbm5lbHMoKSkgeworICAgIGNhc2UgMToKKyAgICAgICAgcmV0dXJu
IG1fbW9ub1N1bW1pbmdCdXMuZ2V0KCk7CisgICAgY2FzZSAyOgorICAgICAgICByZXR1cm4gbV9z
dGVyZW9TdW1taW5nQnVzLmdldCgpOworICAgIC8vIEZJWE1FOiBjb3VsZCBpbXBsZW1lbnQgbW9y
ZSB0aGFuIGp1c3QgbW9ubyBhbmQgc3RlcmVvIG1peGluZyBpbiB0aGUgZnV0dXJlCisgICAgfQor
ICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit2b2lk
IEF1ZGlvTm9kZUlucHV0OjpzdW1BbGxDb25uZWN0aW9ucyhBdWRpb0J1cyogc3VtbWluZ0J1cywg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBXZSBzaG91bGRuJ3QgYmUgY2FsbGlu
ZyB0aGlzIG1ldGhvZCBpZiB0aGVyZSdzIG9ubHkgb25lIGNvbm5lY3Rpb24sIHNpbmNlIGl0J3Mg
bGVzcyBlZmZpY2llbnQuCisgICAgQVNTRVJUKG51bWJlck9mQ29ubmVjdGlvbnMoKSA+IDEpOwor
CisgICAgQVNTRVJUKHN1bW1pbmdCdXMpOworICAgIGlmICghc3VtbWluZ0J1cykKKyAgICAgICAg
cmV0dXJuOworICAgICAgICAKKyAgICBzdW1taW5nQnVzLT56ZXJvKCk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9vdXRwdXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEF1ZGlv
Tm9kZU91dHB1dCogb3V0cHV0ID0gbV9vdXRwdXRzW2ldOworCisgICAgICAgIC8vIFJlbmRlciBh
dWRpbyBmcm9tIHRoaXMgb3V0cHV0LgorICAgICAgICBBdWRpb0J1cyogY29ubmVjdGlvbkJ1cyA9
IG91dHB1dC0+cHVsbCgwLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgICAgIC8vIFN1bSwgd2l0
aCB1bml0eS1nYWluLgorICAgICAgICBzdW1taW5nQnVzLT5zdW1Gcm9tKCpjb25uZWN0aW9uQnVz
KTsKKyAgICB9Cit9CisKK0F1ZGlvQnVzKiBBdWRpb05vZGVJbnB1dDo6cHVsbChBdWRpb0J1cyog
aW5QbGFjZUJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBPcHRpbWl6ZSBz
aW5nbGUgY29ubmVjdGlvbiBjYXNlIC0gYWxsb3dzIGluLXBsYWNlIHByb2Nlc3Npbmcgd2hlcmUg
cG9zc2libGUuCisgICAgaWYgKG51bWJlck9mQ29ubmVjdGlvbnMoKSA9PSAxKSB7CisgICAgICAg
IEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0ID0gdGhpcy0+b3V0cHV0KDApOworICAgICAgICByZXR1
cm4gb3V0cHV0LT5wdWxsKGluUGxhY2VCdXMsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgfQorCisg
ICAgQXVkaW9CdXMqIGludGVybmFsU3VtbWluZ0J1cyA9IHRoaXMtPmludGVybmFsU3VtbWluZ0J1
cygpOworCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7CisgICAgICAgIC8vIEF0IGxlYXN0LCBn
ZW5lcmF0ZSBzaWxlbmNlIGlmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcKKyAgICAg
ICAgLy8gRklYTUU6IGlmIHdlIHdhbnRlZCB0byBnZXQgZmFuY3ksIHdlIGNvdWxkIHByb3BhZ2F0
ZSBhICdzaWxlbnQgaGludCcgaGVyZSB0byBvcHRpbWl6ZSB0aGUgZG93bnN0cmVhbSBncmFwaCBw
cm9jZXNzaW5nLi4uCisgICAgICAgIGludGVybmFsU3VtbWluZ0J1cy0+emVybygpOworICAgICAg
ICByZXR1cm4gaW50ZXJuYWxTdW1taW5nQnVzOworICAgIH0KKworICAgIC8vIEhhbmRsZSBtdWx0
aXBsZSBjb25uZWN0aW9ucyBjYXNlCisgICAgc3VtQWxsQ29ubmVjdGlvbnMoaW50ZXJuYWxTdW1t
aW5nQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHJldHVybiBpbnRlcm5hbFN1bW1pbmdCdXM7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBBdWRpb05vZGVJbnB1dF9oCisjZGVmaW5lIEF1ZGlvTm9kZUlucHV0X2gK
KworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvTm9kZTsKK2NsYXNzIEF1ZGlvTm9kZU91dHB1
dDsKKworLy8gQW4gQXVkaW9Ob2RlSW5wdXQgY2FuIGJlIGNvbm5lY3RlZCBmcm9tIG9uZSBvciBt
b3JlIEF1ZGlvTm9kZU91dHB1dHMuCisvLyBJbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSBjb25uZWN0
aW9ucywgdGhlIGlucHV0IHdpbGwgYWN0IGFzIGEgdW5pdHktZ2FpbiBzdW1taW5nIGp1bmN0aW9u
LCBtaXhpbmcgYWxsIHRoZSBvdXRwdXRzLgorLy8gVGhlIG51bWJlciBvZiBjaGFubmVscyBvZiB0
aGUgaW5wdXQncyBidXMgaXMgdGhlIG1heGltdW0gb2YgdGhlIG51bWJlciBvZiBjaGFubmVscyBv
ZiBhbGwgaXRzIGNvbm5lY3Rpb25zLgorCitjbGFzcyBBdWRpb05vZGVJbnB1dCB7CitwdWJsaWM6
CisgICAgQXVkaW9Ob2RlSW5wdXQoQXVkaW9Ob2RlKik7CisKKyAgICBBdWRpb05vZGUqIG5vZGUo
KSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KKworICAgIHZvaWQgY29ubmVjdChBdWRpb05vZGVP
dXRwdXQqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0Kik7CisKKyAgICAv
LyBkaXNhYmxlKCkgd2lsbCB0YWtlIHRoZSBvdXRwdXQgb3V0IG9mIHRoZSBhY3RpdmUgY29ubmVj
dGlvbnMgbGlzdCBhbmQgc2V0IGFzaWRlIGluIGEgZGlzYWJsZWQgbGlzdC4KKyAgICAvLyBlbmFi
bGUoKSB3aWxsIHB1dCB0aGUgb3V0cHV0IGJhY2sgaW50byB0aGUgYWN0aXZlIGNvbm5lY3Rpb25z
IGxpc3QuCisgICAgdm9pZCBlbmFibGUoQXVkaW9Ob2RlT3V0cHV0Kik7CisgICAgdm9pZCBkaXNh
YmxlKEF1ZGlvTm9kZU91dHB1dCopOworCisgICAgdW5zaWduZWQgbnVtYmVyT2ZDb25uZWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0cy5zaXplKCk7IH0KKyAgICBib29sIGlzQ29ubmVj
dGVkKCkgY29uc3QgeyByZXR1cm4gbnVtYmVyT2ZDb25uZWN0aW9ucygpID4gMDsgfQorCisgICAg
QXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQodW5zaWduZWQgaSkgeyByZXR1cm4gbV9vdXRwdXRzW2ld
OyB9CisgICAgY29uc3QgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQodW5zaWduZWQgaSkgY29uc3Qg
eyByZXR1cm4gbV9vdXRwdXRzW2ldOyB9CisKKyAgICAvLyBwdWxsKCkgcHJvY2Vzc2VzIGFsbCBv
ZiB0aGUgQXVkaW9Ob2RlcyBjb25uZWN0ZWQgdG8gdXMgYW5kIHN1bXMgdGhlIHJlc3VsdCBpbnRv
IG91ciBidXMuCisgICAgLy8gSXQgYWxsb3dzIGluLXBsYWNlIHByb2Nlc3Npbmcgd2hlcmUgcG9z
c2libGUuCisgICAgQXVkaW9CdXMqIHB1bGwoQXVkaW9CdXMqIGluUGxhY2VCdXMsIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gYnVzKCkgY29udGFpbnMgdGhlIHJlbmRlcmVkIGF1
ZGlvIGFmdGVyIHB1bGwoKSBoYXMgYmVlbiBjYWxsZWQgZm9yIGVhY2ggdGltZSBxdWFudHVtLgor
ICAgIEF1ZGlvQnVzKiBidXMoKTsKKyAgICAKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGNoYW5uZWxz
IG9mIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIGxhcmdlc3QgbnVtYmVyIG9mIGNoYW5uZWxzLgor
ICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQXVkaW9Ob2RlKiBtX25vZGU7CisgICAgVmVjdG9yPEF1ZGlvTm9kZU91dHB1dCo+IG1fb3V0
cHV0czsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9kaXNhYmxlZE91dHB1dHM7CisK
KyAgICAvLyBGb3IgdW5pdHktZ2FpbiBzdW1taW5nIGp1bmN0aW9uIGlucHV0CisgICAgQXVkaW9C
dXMqIGludGVybmFsU3VtbWluZ0J1cygpOworICAgIHZvaWQgc3VtQWxsQ29ubmVjdGlvbnMoQXVk
aW9CdXMqIHN1bW1pbmdCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIE93blB0cjxB
dWRpb0J1cz4gbV9tb25vU3VtbWluZ0J1czsKKyAgICBPd25QdHI8QXVkaW9CdXM+IG1fc3RlcmVv
U3VtbWluZ0J1czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1
ZGlvTm9kZUlucHV0X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70467</attachid>
            <date>2010-10-11 14:30:34 -0700</date>
            <delta_ts>2010-10-26 18:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45577-20101011143033.patch</filename>
            <type>text/plain</type>
            <size>17139</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTUyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMTAtMTEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9Ob2RlSW5wdXQgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1NTc3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlv
IEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9O
b2RlSW5wdXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpB
dWRpb05vZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6Y29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVJbnB1dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlu
cHV0OjpjaGFuZ2VkT3V0cHV0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6
dXBkYXRlUmVuZGVyaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6
Om51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6Om51
bWJlck9mUmVuZGVyaW5nQ2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5w
dXQ6OmJ1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6aW50ZXJuYWxTdW1t
aW5nQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpzdW1BbGxDb25uZWN0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6cHVsbCk6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb05vZGVJbnB1dDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6
Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6bnVtYmVyT2ZSZW5k
ZXJpbmdDb25uZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6cmVu
ZGVyaW5nT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0Ojppc0Nvbm5l
Y3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6bnVtYmVyT2ZDb25uZWN0
aW9ucyk6CisKIDIwMTAtMTAtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KSW5kZXg6
IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93
ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisKKyNpbmNsdWRlICJBdWRpb0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQu
aCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisgCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvTm9kZUlucHV0OjpBdWRpb05vZGVJbnB1dChBdWRpb05v
ZGUqIG5vZGUpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fcmVuZGVyaW5nU3RhdGVOZWVk
VXBkYXRpbmcoZmFsc2UpCit7CisgICAgbV9tb25vU3VtbWluZ0J1cyA9IGFkb3B0UHRyKG5ldyBB
dWRpb0J1cygxLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpKTsKKyAgICBtX3N0
ZXJlb1N1bW1pbmdCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoMiwgQXVkaW9Ob2RlOjpQcm9j
ZXNzaW5nU2l6ZUluRnJhbWVzKSk7Cit9CisKK3ZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3Qo
QXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFw
aE93bmVyKCkpOworICAgIAorICAgIEFTU0VSVChvdXRwdXQgJiYgbm9kZSgpKTsKKyAgICBpZiAo
IW91dHB1dCB8fCAhbm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDaGVjayBpZiB3
ZSdyZSBhbHJlYWR5IGNvbm5lY3RlZCB0byB0aGlzIG91dHB1dC4KKyAgICBpZiAobV9vdXRwdXRz
LmNvbnRhaW5zKG91dHB1dCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgb3V0cHV0
LT5hZGRJbnB1dCh0aGlzKTsKKyAgICBtX291dHB1dHMuYWRkKG91dHB1dCk7CisgICAgY2hhbmdl
ZE91dHB1dHMoKTsKKworICAgIC8vIFNvbWJvZHkgaGFzIGp1c3QgY29ubmVjdGVkIHRvIHVzLCBz
byBjb3VudCBpdCBhcyBhIHJlZmVyZW5jZS4KKyAgICBub2RlKCktPnJlZihBdWRpb05vZGU6OlJl
ZlR5cGVDb25uZWN0aW9uKTsKK30KKwordm9pZCBBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdChB
dWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCgpLT5pc0dyYXBo
T3duZXIoKSk7CisKKyAgICBBU1NFUlQob3V0cHV0ICYmIG5vZGUoKSk7CisgICAgaWYgKCFvdXRw
dXQgfHwgIW5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmlyc3QgdHJ5IHRvIGRp
c2Nvbm5lY3QgZnJvbSAiYWN0aXZlIiBjb25uZWN0aW9ucy4KKyAgICBpZiAobV9vdXRwdXRzLmNv
bnRhaW5zKG91dHB1dCkpIHsKKyAgICAgICAgbV9vdXRwdXRzLnJlbW92ZShvdXRwdXQpOworICAg
ICAgICBjaGFuZ2VkT3V0cHV0cygpOworICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMp
OworICAgICAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOyAv
LyBOb3RlOiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRl
cmVmKCkgY2FsbHMgc2luY2UgdGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgLy8gT3RoZXJ3aXNlLCB0cnkgdG8gZGlzY29ubmVjdCBmcm9t
IGRpc2FibGVkIGNvbm5lY3Rpb25zLgorICAgIGlmIChtX2Rpc2FibGVkT3V0cHV0cy5jb250YWlu
cyhvdXRwdXQpKSB7CisgICAgICAgIG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRwdXQpOwor
ICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOworICAgICAgICBub2RlKCktPmRlcmVm
KEF1ZGlvTm9kZTo6UmVmVHlwZURpc2FibGVkKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8g
cmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2Rl
IG1heSBiZSBkZWxldGVkLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmRpc2FibGUoQXVkaW9Ob2Rl
T3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkp
OworCisgICAgQVNTRVJUKG91dHB1dCAmJiBub2RlKCkpOworICAgIGlmICghb3V0cHV0IHx8ICFu
b2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX291dHB1dHMuY29udGFpbnMo
b3V0cHV0KSk7CisgICAgCisgICAgbV9kaXNhYmxlZE91dHB1dHMuYWRkKG91dHB1dCk7CisgICAg
bV9vdXRwdXRzLnJlbW92ZShvdXRwdXQpOworICAgIGNoYW5nZWRPdXRwdXRzKCk7CisKKyAgICBu
b2RlKCktPnJlZihBdWRpb05vZGU6OlJlZlR5cGVEaXNhYmxlZCk7CisgICAgbm9kZSgpLT5kZXJl
ZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQg
dG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBu
b2RlIG1heSBiZSBkZWxldGVkLgorfQorCit2b2lkIEF1ZGlvTm9kZUlucHV0OjplbmFibGUoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93
bmVyKCkpOworCisgICAgQVNTRVJUKG91dHB1dCAmJiBub2RlKCkpOworICAgIGlmICghb3V0cHV0
IHx8ICFub2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX2Rpc2FibGVkT3V0
cHV0cy5jb250YWlucyhvdXRwdXQpKTsKKworICAgIC8vIE1vdmUgb3V0cHV0IGZyb20gZGlzYWJs
ZWQgbGlzdCB0byBhY3RpdmUgbGlzdC4KKyAgICBtX291dHB1dHMuYWRkKG91dHB1dCk7CisgICAg
bV9kaXNhYmxlZE91dHB1dHMucmVtb3ZlKG91dHB1dCk7CisgICAgY2hhbmdlZE91dHB1dHMoKTsK
KworICAgIG5vZGUoKS0+cmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAgIG5v
ZGUoKS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlRGlzYWJsZWQpOyAvLyBOb3RlOiBpdCdzIGlt
cG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRlcmVmKCkgY2FsbHMgc2lu
Y2UgdGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCit9CisKK3ZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNo
YW5nZWRPdXRwdXRzKCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7
CisgICAgaWYgKCFtX3JlbmRlcmluZ1N0YXRlTmVlZFVwZGF0aW5nICYmICFub2RlKCktPmlzTWFy
a2VkRm9yRGVsZXRpb24oKSkgeyAgICAKKyAgICAgICAgY29udGV4dCgpLT5tYXJrQXVkaW9Ob2Rl
SW5wdXREaXJ0eSh0aGlzKTsKKyAgICAgICAgbV9yZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyA9
IHRydWU7CisgICAgfQorfQorCit2b2lkIEF1ZGlvTm9kZUlucHV0Ojp1cGRhdGVSZW5kZXJpbmdT
dGF0ZSgpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpICYmIGNvbnRl
eHQoKS0+aXNHcmFwaE93bmVyKCkpOworICAgIAorICAgIGlmIChtX3JlbmRlcmluZ1N0YXRlTmVl
ZFVwZGF0aW5nICYmICFub2RlKCktPmlzTWFya2VkRm9yRGVsZXRpb24oKSkgeworICAgICAgICAv
LyBDb3B5IGZyb20gbV9vdXRwdXRzIHRvIG1fcmVuZGVyaW5nT3V0cHV0cy4KKyAgICAgICAgbV9y
ZW5kZXJpbmdPdXRwdXRzLnJlc2l6ZShtX291dHB1dHMuc2l6ZSgpKTsKKyAgICAgICAgdW5zaWdu
ZWQgaiA9IDA7CisgICAgICAgIGZvciAoSGFzaFNldDxBdWRpb05vZGVPdXRwdXQqPjo6aXRlcmF0
b3IgaSA9IG1fb3V0cHV0cy5iZWdpbigpOyBpICE9IG1fb3V0cHV0cy5lbmQoKTsgKytpLCArK2op
IHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0ID0gKmk7CisgICAgICAgICAg
ICBtX3JlbmRlcmluZ091dHB1dHNbal0gPSBvdXRwdXQ7CisgICAgICAgICAgICBvdXRwdXQtPnVw
ZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisgICAgICAgIH0KKworICAgICAgICBub2RlKCktPmNoZWNr
TnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgbV9yZW5k
ZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyA9IGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQgQXVk
aW9Ob2RlSW5wdXQ6Om51bWJlck9mQ2hhbm5lbHMoKSBjb25zdAoreworICAgIC8vIEZpbmQgdGhl
IG51bWJlciBvZiBjaGFubmVscyBvZiB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBsYXJnZXN0IG51
bWJlciBvZiBjaGFubmVscy4KKyAgICB1bnNpZ25lZCBtYXhDaGFubmVscyA9IDE7IC8vIG9uZSBj
aGFubmVsIGlzIHRoZSBtaW5pbXVtIGFsbG93ZWQKKworICAgIGZvciAoSGFzaFNldDxBdWRpb05v
ZGVPdXRwdXQqPjo6aXRlcmF0b3IgaSA9IG1fb3V0cHV0cy5iZWdpbigpOyBpICE9IG1fb3V0cHV0
cy5lbmQoKTsgKytpKSB7CisgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0ID0gKmk7Cisg
ICAgICAgIG1heENoYW5uZWxzID0gbWF4KG1heENoYW5uZWxzLCBvdXRwdXQtPmJ1cygpLT5udW1i
ZXJPZkNoYW5uZWxzKCkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbWF4Q2hhbm5lbHM7Cit9
CisKK3Vuc2lnbmVkIEF1ZGlvTm9kZUlucHV0OjpudW1iZXJPZlJlbmRlcmluZ0NoYW5uZWxzKCkK
K3sKKyAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gRmlu
ZCB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIG9mIHRoZSByZW5kZXJpbmcgY29ubmVjdGlvbiB3aXRo
IHRoZSBsYXJnZXN0IG51bWJlciBvZiBjaGFubmVscy4KKyAgICB1bnNpZ25lZCBtYXhDaGFubmVs
cyA9IDE7IC8vIG9uZSBjaGFubmVsIGlzIHRoZSBtaW5pbXVtIGFsbG93ZWQKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraSkK
KyAgICAgICAgbWF4Q2hhbm5lbHMgPSBtYXgobWF4Q2hhbm5lbHMsIHJlbmRlcmluZ091dHB1dChp
KS0+YnVzKCktPm51bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgCisgICAgcmV0dXJuIG1heENoYW5u
ZWxzOworfQorCitBdWRpb0J1cyogQXVkaW9Ob2RlSW5wdXQ6OmJ1cygpCit7CisgICAgQVNTRVJU
KGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKTsKKworICAgIC8vIEhhbmRsZSBzaW5nbGUgY29u
bmVjdGlvbiBzcGVjaWFsbHkgdG8gYWxsb3cgZm9yIGluLXBsYWNlIHByb2Nlc3NpbmcuCisgICAg
aWYgKG51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKSA9PSAxKQorICAgICAgICByZXR1cm4g
cmVuZGVyaW5nT3V0cHV0KDApLT5idXMoKTsKKworICAgIC8vIE11bHRpcGxlIGNvbm5lY3Rpb25z
IGNhc2UgKG9yIG5vIGNvbm5lY3Rpb25zKS4KKyAgICByZXR1cm4gaW50ZXJuYWxTdW1taW5nQnVz
KCk7Cit9CisKK0F1ZGlvQnVzKiBBdWRpb05vZGVJbnB1dDo6aW50ZXJuYWxTdW1taW5nQnVzKCkK
K3sKKyAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gV2Ug
bXVzdCBwaWNrIGEgc3VtbWluZyBidXMgd2hpY2ggaXMgdGhlIHJpZ2h0IHNpemUgdG8gaGFuZGxl
IHRoZSBsYXJnZXN0IGNvbm5lY3Rpb24uCisgICAgc3dpdGNoIChudW1iZXJPZlJlbmRlcmluZ0No
YW5uZWxzKCkpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIHJldHVybiBtX21vbm9TdW1taW5nQnVz
LmdldCgpOworICAgIGNhc2UgMjoKKyAgICAgICAgcmV0dXJuIG1fc3RlcmVvU3VtbWluZ0J1cy5n
ZXQoKTsKKyAgICAvLyBGSVhNRTogY291bGQgaW1wbGVtZW50IG1vcmUgdGhhbiBqdXN0IG1vbm8g
YW5kIHN0ZXJlbyBtaXhpbmcgaW4gdGhlIGZ1dHVyZQorICAgIH0KKyAgICAKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBBdWRpb05vZGVJbnB1dDo6
c3VtQWxsQ29ubmVjdGlvbnMoQXVkaW9CdXMqIHN1bW1pbmdCdXMsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKTsKKworICAg
IC8vIFdlIHNob3VsZG4ndCBiZSBjYWxsaW5nIHRoaXMgbWV0aG9kIGlmIHRoZXJlJ3Mgb25seSBv
bmUgY29ubmVjdGlvbiwgc2luY2UgaXQncyBsZXNzIGVmZmljaWVudC4KKyAgICBBU1NFUlQobnVt
YmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpID4gMSk7CisKKyAgICBBU1NFUlQoc3VtbWluZ0J1
cyk7CisgICAgaWYgKCFzdW1taW5nQnVzKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAg
IHN1bW1pbmdCdXMtPnplcm8oKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1i
ZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraSkgeworICAgICAgICBBdWRpb05vZGVPdXRw
dXQqIG91dHB1dCA9IHJlbmRlcmluZ091dHB1dChpKTsKKyAgICAgICAgQVNTRVJUKG91dHB1dCk7
CisKKyAgICAgICAgLy8gUmVuZGVyIGF1ZGlvIGZyb20gdGhpcyBvdXRwdXQuCisgICAgICAgIEF1
ZGlvQnVzKiBjb25uZWN0aW9uQnVzID0gb3V0cHV0LT5wdWxsKDAsIGZyYW1lc1RvUHJvY2Vzcyk7
CisKKyAgICAgICAgLy8gU3VtLCB3aXRoIHVuaXR5LWdhaW4uCisgICAgICAgIHN1bW1pbmdCdXMt
PnN1bUZyb20oKmNvbm5lY3Rpb25CdXMpOworICAgIH0KK30KKworQXVkaW9CdXMqIEF1ZGlvTm9k
ZUlucHV0OjpwdWxsKEF1ZGlvQnVzKiBpblBsYWNlQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQoreworICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBI
YW5kbGUgc2luZ2xlIGNvbm5lY3Rpb24gY2FzZS4KKyAgICBpZiAobnVtYmVyT2ZSZW5kZXJpbmdD
b25uZWN0aW9ucygpID09IDEpIHsKKyAgICAgICAgLy8gVGhlIG91dHB1dCB3aWxsIG9wdGltaXpl
IHByb2Nlc3NpbmcgdXNpbmcgaW5QbGFjZUJ1cyBpZiBpdCdzIGFibGUuCisgICAgICAgIEF1ZGlv
Tm9kZU91dHB1dCogb3V0cHV0ID0gdGhpcy0+cmVuZGVyaW5nT3V0cHV0KDApOworICAgICAgICBy
ZXR1cm4gb3V0cHV0LT5wdWxsKGluUGxhY2VCdXMsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgfQor
CisgICAgQXVkaW9CdXMqIGludGVybmFsU3VtbWluZ0J1cyA9IHRoaXMtPmludGVybmFsU3VtbWlu
Z0J1cygpOworCisgICAgaWYgKCFudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkpIHsKKyAg
ICAgICAgLy8gQXQgbGVhc3QsIGdlbmVyYXRlIHNpbGVuY2UgaWYgd2UncmUgbm90IGNvbm5lY3Rl
ZCB0byBhbnl0aGluZy4KKyAgICAgICAgLy8gRklYTUU6IGlmIHdlIHdhbnRlZCB0byBnZXQgZmFu
Y3ksIHdlIGNvdWxkIHByb3BhZ2F0ZSBhICdzaWxlbnQgaGludCcgaGVyZSB0byBvcHRpbWl6ZSB0
aGUgZG93bnN0cmVhbSBncmFwaCBwcm9jZXNzaW5nLgorICAgICAgICBpbnRlcm5hbFN1bW1pbmdC
dXMtPnplcm8oKTsKKyAgICAgICAgcmV0dXJuIGludGVybmFsU3VtbWluZ0J1czsKKyAgICB9CisK
KyAgICAvLyBIYW5kbGUgbXVsdGlwbGUgY29ubmVjdGlvbnMgY2FzZS4KKyAgICBzdW1BbGxDb25u
ZWN0aW9ucyhpbnRlcm5hbFN1bW1pbmdCdXMsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgCisgICAg
cmV0dXJuIGludGVybmFsU3VtbWluZ0J1czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVk
aW9Ob2RlSW5wdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZUlu
cHV0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRp
b05vZGVJbnB1dF9oCisjZGVmaW5lIEF1ZGlvTm9kZUlucHV0X2gKKworI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9Ob2RlOworY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OworCisvLyBBbiBBdWRpb05vZGVJbnB1
dCByZXByZXNlbnRzIGFuIGlucHV0IHRvIGFuIEF1ZGlvTm9kZSBhbmQgY2FuIGJlIGNvbm5lY3Rl
ZCBmcm9tIG9uZSBvciBtb3JlIEF1ZGlvTm9kZU91dHB1dHMuCisvLyBJbiB0aGUgY2FzZSBvZiBt
dWx0aXBsZSBjb25uZWN0aW9ucywgdGhlIGlucHV0IHdpbGwgYWN0IGFzIGEgdW5pdHktZ2FpbiBz
dW1taW5nIGp1bmN0aW9uLCBtaXhpbmcgYWxsIHRoZSBvdXRwdXRzLgorLy8gVGhlIG51bWJlciBv
ZiBjaGFubmVscyBvZiB0aGUgaW5wdXQncyBidXMgaXMgdGhlIG1heGltdW0gb2YgdGhlIG51bWJl
ciBvZiBjaGFubmVscyBvZiBhbGwgaXRzIGNvbm5lY3Rpb25zLgorCitjbGFzcyBBdWRpb05vZGVJ
bnB1dCB7CitwdWJsaWM6CisgICAgQXVkaW9Ob2RlSW5wdXQoQXVkaW9Ob2RlKik7CisKKyAgICAv
LyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICBBdWRpb05vZGUqIG5vZGUoKSBj
b25zdCB7IHJldHVybiBtX25vZGU7IH0KKyAgICBBdWRpb0NvbnRleHQqIGNvbnRleHQoKSB7IHJl
dHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQorCisgICAgLy8gTXVzdCBiZSBjYWxsZWQgd2l0aCB0
aGUgY29udGV4dCdzIGdyYXBoIGxvY2suCisgICAgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZU91dHB1
dCopOworICAgIHZvaWQgZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqKTsKKworICAgIC8vIGRp
c2FibGUoKSB3aWxsIHRha2UgdGhlIG91dHB1dCBvdXQgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9u
cyBsaXN0IGFuZCBzZXQgYXNpZGUgaW4gYSBkaXNhYmxlZCBsaXN0LgorICAgIC8vIGVuYWJsZSgp
IHdpbGwgcHV0IHRoZSBvdXRwdXQgYmFjayBpbnRvIHRoZSBhY3RpdmUgY29ubmVjdGlvbnMgbGlz
dC4KKyAgICAvLyBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBjb250ZXh0J3MgZ3JhcGggbG9jay4K
KyAgICB2b2lkIGVuYWJsZShBdWRpb05vZGVPdXRwdXQqKTsKKyAgICB2b2lkIGRpc2FibGUoQXVk
aW9Ob2RlT3V0cHV0Kik7CisKKyAgICAvLyBwdWxsKCkgcHJvY2Vzc2VzIGFsbCBvZiB0aGUgQXVk
aW9Ob2RlcyBjb25uZWN0ZWQgdG8gdXMuCisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUg
Y29ubmVjdGlvbnMgaXQgc3VtcyB0aGUgcmVzdWx0IGludG8gYW4gaW50ZXJuYWwgc3VtbWluZyBi
dXMuCisgICAgLy8gSW4gdGhlIHNpbmdsZSBjb25uZWN0aW9uIGNhc2UsIGl0IGFsbG93cyBpbi1w
bGFjZSBwcm9jZXNzaW5nIHdoZXJlIHBvc3NpYmxlIHVzaW5nIGluUGxhY2VCdXMuCisgICAgLy8g
SXQgcmV0dXJucyB0aGUgYnVzIHdoaWNoIGl0IHJlbmRlcmVkIGludG8sIHJldHVybmluZyBpblBs
YWNlQnVzIGlmIGluLXBsYWNlIHByb2Nlc3Npbmcgd2FzIHBlcmZvcm1lZC4KKyAgICAvLyBDYWxs
ZWQgZnJvbSBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgorICAgIEF1ZGlvQnVzKiBwdWxsKEF1ZGlv
QnVzKiBpblBsYWNlQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIGJ1cygp
IGNvbnRhaW5zIHRoZSByZW5kZXJlZCBhdWRpbyBhZnRlciBwdWxsKCkgaGFzIGJlZW4gY2FsbGVk
IGZvciBlYWNoIHRpbWUgcXVhbnR1bS4KKyAgICAvLyBDYWxsZWQgZnJvbSBjb250ZXh0J3MgYXVk
aW8gdGhyZWFkLgorICAgIEF1ZGlvQnVzKiBidXMoKTsKKyAgICAKKyAgICAvLyBUaGlzIGNvcGll
cyBtX291dHB1dHMgdG8gbV9yZW5kZXJpbmdPdXRwdXRzLiAgUGxlYXNlIHNlZSBjb21tZW50cyBm
b3IgdGhlc2UgbGlzdHMgYmVsb3cuCisgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIHdl
IG93biB0aGUgY29udGV4dCdzIGdyYXBoIGxvY2sgaW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUg
dmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlciBxdWFudHVtLgorICAgIHZvaWQgdXBkYXRl
UmVuZGVyaW5nU3RhdGUoKTsKKworICAgIC8vIFJlbmRlcmluZyBjb2RlIGFjY2Vzc2VzIGl0cyB2
ZXJzaW9uIG9mIHRoZSBjdXJyZW50IGNvbm5lY3Rpb25zIGhlcmUuCisgICAgdW5zaWduZWQgbnVt
YmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nT3V0
cHV0cy5zaXplKCk7IH0KKyAgICBBdWRpb05vZGVPdXRwdXQqIHJlbmRlcmluZ091dHB1dCh1bnNp
Z25lZCBpKSB7IHJldHVybiBtX3JlbmRlcmluZ091dHB1dHNbaV07IH0KKyAgICBjb25zdCBBdWRp
b05vZGVPdXRwdXQqIHJlbmRlcmluZ091dHB1dCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmluZ091dHB1dHNbaV07IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyBy
ZXR1cm4gbnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpID4gMDsgfQorCisgICAgLy8gVGhl
IG51bWJlciBvZiBjaGFubmVscyBvZiB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBsYXJnZXN0IG51
bWJlciBvZiBjaGFubmVscy4KKyAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29uc3Q7
ICAgICAgICAKKyAgICAKK3ByaXZhdGU6CisgICAgQXVkaW9Ob2RlKiBtX25vZGU7CisKKyAgICAv
LyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50aW5nIGN1
cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KKyAgICAvLyBUaGUgcmVu
ZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5zdGVhZCB1
c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+IG1f
b3V0cHV0czsKKworICAgIC8vIG51bWJlck9mQ29ubmVjdGlvbnMoKSBzaG91bGQgbmV2ZXIgYmUg
Y2FsbGVkIGZyb20gdGhlIGF1ZGlvIHJlbmRlcmluZyB0aHJlYWQuCisgICAgLy8gSW5zdGVhZCBu
dW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgYW5kIHJlbmRlcmluZ091dHB1dCgpIHNob3Vs
ZCBiZSB1c2VkLgorICAgIHVuc2lnbmVkIG51bWJlck9mQ29ubmVjdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX291dHB1dHMuc2l6ZSgpOyB9CisKKyAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdo
ZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1dHMuCisgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygpOwor
ICAgIAorICAgIC8vIG1fcmVuZGVyaW5nT3V0cHV0cyBpcyBhIGNvcHkgb2YgbV9vdXRwdXRzIHdo
aWNoIHdpbGwgbmV2ZXIgYmUgbW9kaWZpZWQgZHVyaW5nIHRoZSBncmFwaCByZW5kZXJpbmcgb24g
dGhlIGF1ZGlvIHRocmVhZC4KKyAgICAvLyBUaGlzIGlzIHRoZSBsaXN0IHdoaWNoIGlzIHVzZWQg
YnkgdGhlIHJlbmRlcmluZyBjb2RlLgorICAgIC8vIFdoZW5ldmVyIG1fb3V0cHV0cyBpcyBtb2Rp
ZmllZCwgdGhlIGNvbnRleHQgaXMgdG9sZCBzbyBpdCBjYW4gbGF0ZXIgdXBkYXRlIG1fcmVuZGVy
aW5nT3V0cHV0cyBmcm9tIG1fb3V0cHV0cyBhdCBhIHNhZmUgdGltZS4KKyAgICAvLyBNb3N0IG9m
IHRoZSB0aW1lLCBtX3JlbmRlcmluZ091dHB1dHMgaXMgaWRlbnRpY2FsIHRvIG1fb3V0cHV0cy4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9yZW5kZXJpbmdPdXRwdXRzOworCisgICAg
Ly8gbV9yZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyBrZWVwcyB0cmFjayBpZiBtX291dHB1dHMg
aXMgbW9kaWZpZWQuCisgICAgYm9vbCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVwZGF0aW5nOworCisg
ICAgLy8gVGhlIG51bWJlciBvZiBjaGFubmVscyBvZiB0aGUgcmVuZGVyaW5nIGNvbm5lY3Rpb24g
d2l0aCB0aGUgbGFyZ2VzdCBudW1iZXIgb2YgY2hhbm5lbHMuCisgICAgdW5zaWduZWQgbnVtYmVy
T2ZSZW5kZXJpbmdDaGFubmVscygpOworCisgICAgLy8gbV9kaXNhYmxlZE91dHB1dHMgY29udGFp
bnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgd2hpY2ggYXJlIGRpc2FibGVkICh3aWxsIG5vdCBiZSBw
cm9jZXNzZWQpIGJ5IHRoZSBhdWRpbyBncmFwaCByZW5kZXJpbmcuCisgICAgLy8gQnV0LCBmcm9t
IEphdmFTY3JpcHQncyBwZXJzcGVjdGl2ZSwgdGhlc2Ugb3V0cHV0cyBhcmUgc3RpbGwgY29ubmVj
dGVkIHRvIHVzLgorICAgIC8vIEdlbmVyYWxseSwgdGhlc2UgcmVwcmVzZW50IGRpc2FibGVkIGNv
bm5lY3Rpb25zIGZyb20gIm5vdGVzIiB3aGljaCBoYXZlIGZpbmlzaGVkIHBsYXlpbmcgYnV0IGFy
ZSBub3QgeWV0IGdhcmJhZ2UgY29sbGVjdGVkLgorICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0cHV0
Kj4gbV9kaXNhYmxlZE91dHB1dHM7CisKKyAgICAvLyBDYWxsZWQgZnJvbSBjb250ZXh0J3MgYXVk
aW8gdGhyZWFkLgorICAgIEF1ZGlvQnVzKiBpbnRlcm5hbFN1bW1pbmdCdXMoKTsKKyAgICB2b2lk
IHN1bUFsbENvbm5lY3Rpb25zKEF1ZGlvQnVzKiBzdW1taW5nQnVzLCBzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKKworICAgIE93blB0cjxBdWRpb0J1cz4gbV9tb25vU3VtbWluZ0J1czsKKyAgICBP
d25QdHI8QXVkaW9CdXM+IG1fc3RlcmVvU3VtbWluZ0J1czsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEF1ZGlvTm9kZUlucHV0X2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>