<?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>29723</bug_id>
          
          <creation_ts>2009-09-24 15:14:50 -0700</creation_ts>
          <short_desc>Division is needlessly slow in 64-bit</short_desc>
          <delta_ts>2009-09-24 19:44:37 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149866</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-24 15:14:50 -0700</bug_when>
    <thetext>it needs to have real codegen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149868</commentid>
    <comment_count>1</comment_count>
      <attachid>40084</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-24 15:16:45 -0700</bug_when>
    <thetext>Created attachment 40084
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149875</commentid>
    <comment_count>2</comment_count>
      <attachid>40084</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-09-24 15:36:58 -0700</bug_when>
    <thetext>Comment on attachment 40084
Patch v1

As I said on IRC, I think you should copy JSVALUE32_64, and convert back to int at the end in all cases other than 1/x. See JITArithmetic.cpp:992.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149879</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-09-24 15:43:26 -0700</bug_when>
    <thetext>Variable names j1 j11 j2 j22 ain&apos;t up to scratch, let&apos;s make them a little more descriptive.
Please add the runtime assert as described to the slowcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149904</commentid>
    <comment_count>4</comment_count>
      <attachid>40094</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-24 17:24:08 -0700</bug_when>
    <thetext>Created attachment 40094
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149906</commentid>
    <comment_count>5</comment_count>
      <attachid>40095</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-24 17:38:02 -0700</bug_when>
    <thetext>Created attachment 40095
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149923</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-24 19:44:37 -0700</bug_when>
    <thetext>Committed r48744</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40084</attachid>
            <date>2009-09-24 15:16:45 -0700</date>
            <delta_ts>2009-09-24 17:24:00 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29723-20090924151643.patch</filename>
            <type>text/plain</type>
            <size>11645</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAxMzM2MDc3Li5hNWVjNTFlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMDktMDktMjQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXZpc2lvbiBpcyBuZWVk
bGVzc2x5IHNsb3cgaW4gNjQtYml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTcyMworCisgICAgICAgIEFkZCBjb2RlZ2VuIGZvciBvcF9kaXYgb24g
eDg2LTY0CisKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1l
dGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAg
ICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6SklUOjphZGRyZXNzRm9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZERv
dWJsZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRJbnQzMlRvRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIpOgorCiAy
MDA5LTA5LTI0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U3VnZ2VzdGVkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiZjNhNDE4Li5lYTg0
MzRlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKIAogICAgICAgICBzd2l0Y2ggKG1faW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CiAgICAgICAgIERFRklORV9C
SU5BUllfT1Aob3BfZGVsX2J5X3ZhbCkKLSNpZiAhVVNFKEpTVkFMVUUzMl82NCkKKyNpZiBVU0Uo
SlNWQUxVRTMyKQogICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2RpdikKICNlbmRpZgogICAg
ICAgICBERUZJTkVfQklOQVJZX09QKG9wX2luKQpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9h
cmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09Q
KG9wX2RlbF9ieV9pZCkKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2lmICFVU0UoSlNWQUxVRTMy
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQogI2VuZGlmCiAgICAgICAgIERFRklORV9PUChv
cF9lbmQpCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdF92ZXJpZnkpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9jb252ZXJ0X3RoaXMpCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKKyNpZiAh
VVNFKEpTVkFMVUUzMikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RpdikKICNlbmRp
ZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEpCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNWM1OGU5
ZC4uM2IzNTkzNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzc5LDE0ICszNzksMTggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgZW51bSBDb21waWxlT3BTdHJpY3RFcVR5cGUgeyBPcFN0cmljdEVxLCBP
cE5TdHJpY3RFcSB9OwogICAgICAgICB2b2lkIGNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHR5cGUpOworICAgICAgICBib29s
IGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKHVuc2lnbmVkIHNyYyk7CisgICAgICAg
IAorICAgICAgICB2b2lkIGVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVy
SUQgdmFsdWUpOworICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZSh1bnNpZ25lZCBp
bmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKKworICAgICAgICBBZGRyZXNzIGFkZHJlc3NGb3Io
dW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKIAog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEFkZHJlc3MgdGFnRm9yKHVuc2lnbmVkIGlu
ZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIEFkZHJl
c3MgcGF5bG9hZEZvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBBZGRyZXNzIGFkZHJlc3NGb3IodW5zaWduZWQgaW5kZXgsIFJl
Z2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKIAogICAgICAgICBib29sIGdldE9w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludCh1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5z
aWduZWQmIG9wLCBpbnQzMl90JiBjb25zdGFudCk7Ci0gICAgICAgIGJvb2wgaXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVEb3VibGUodW5zaWduZWQgc3JjKTsKIAogICAgICAgICB2b2lkIGVtaXRM
b2FkVGFnKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIHRhZyk7CiAgICAgICAgIHZvaWQgZW1p
dExvYWRQYXlsb2FkKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIHBheWxvYWQpOwpAQCAtMzk0
LDggKzM5OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRMb2FkKGNvbnN0
IEpTVmFsdWUmIHYsIFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQpOwogICAgICAg
ICB2b2lkIGVtaXRMb2FkKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJ
RCBwYXlsb2FkLCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAg
IHZvaWQgZW1pdExvYWQyKHVuc2lnbmVkIGluZGV4MSwgUmVnaXN0ZXJJRCB0YWcxLCBSZWdpc3Rl
cklEIHBheWxvYWQxLCB1bnNpZ25lZCBpbmRleDIsIFJlZ2lzdGVySUQgdGFnMiwgUmVnaXN0ZXJJ
RCBwYXlsb2FkMik7Ci0gICAgICAgIHZvaWQgZW1pdExvYWREb3VibGUodW5zaWduZWQgaW5kZXgs
IEZQUmVnaXN0ZXJJRCB2YWx1ZSk7Ci0gICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91Ymxl
KHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogCiAgICAgICAgIHZvaWQgZW1p
dFN0b3JlKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2Fk
LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQgZW1p
dFN0b3JlKHVuc2lnbmVkIGluZGV4LCBjb25zdCBKU1ZhbHVlIGNvbnN0YW50LCBSZWdpc3RlcklE
IGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC00OTksNiArNTAxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVDo6SnVtcCBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihS
ZWdpc3RlcklEKTsKICAgICAgICAgSklUOjpKdW1wIGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJbnRl
Z2VycyhSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKFJlZ2lzdGVySUQpOworICAgICAg
ICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJlcihSZWdpc3RlcklEKTsK
ICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VycyhSZWdp
c3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKIAogI2lmICFVU0UoSlNWQUxVRTY0KQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIGIvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDNiZTEzY2IuLmY2YzgyM2MgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTE5NzgsOSArMTk3OCwxMSBAQCB2
b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShPcGNvZGVJRCBvcGNvZGVJRCwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OgogICAgICAgICBhZGREb3VibGUoZnBSZWdUMiwgZnBSZWdU
MSk7CiAgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3Bfc3ViKQogICAgICAgICBzdWJEb3VibGUo
ZnBSZWdUMiwgZnBSZWdUMSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9
PSBvcF9tdWwpOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9wX211bCkKICAgICAgICAgbXVs
RG91YmxlKGZwUmVnVDIsIGZwUmVnVDEpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bj
b2RlSUQgPT0gb3BfZGl2KTsKKyAgICAgICAgZGl2RG91YmxlKGZwUmVnVDIsIGZwUmVnVDEpOwog
ICAgIH0KICAgICBtb3ZlRG91YmxlVG9QdHIoZnBSZWdUMSwgcmVnVDApOwogICAgIHN1YlB0cih0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKQEAgLTIwODIsNiArMjA4NCw4MCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5PgogICAgICAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNl
KG9wX211bCwgaXRlciwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNp
Z25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVk
IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgb3Ay
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBPcGVyYW5kVHlwZXMgdHlw
ZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCk7CisKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUob3AxKSkgewor
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOworICAgICAgICBhZGRQ
dHIodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CisgICAgICAgIG1vdmVQdHJUb0RvdWJs
ZShyZWdUMCwgZnBSZWdUMCk7CisgICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludChvcDEpKSB7CisgICAgICAgIGVtaXRMb2FkSW50MzJUb0RvdWJsZShvcDEsIGZwUmVn
VDApOworICAgIH0gZWxzZSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBy
ZWdUMCk7CisgICAgICAgIGlmICghdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkK
KyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMCk7
CisgICAgICAgIEp1bXAgajEgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7
CisgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKKyAgICAgICAg
SnVtcCBqMTEgPSBqdW1wKCk7CisgICAgICAgIGoxLmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0
cih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICAgICAgbW92ZVB0clRvRG91Ymxl
KHJlZ1QwLCBmcFJlZ1QwKTsKKyAgICAgICAgajExLmxpbmsodGhpcyk7CisgICAgfQorICAgIAor
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDIpKSB7CisgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMSk7CisgICAgICAgIGFkZFB0cih0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QxKTsKKyAgICAgICAgbW92ZVB0clRvRG91YmxlKHJlZ1Qx
LCBmcFJlZ1QxKTsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50
KG9wMikpIHsKKyAgICAgICAgZW1pdExvYWRJbnQzMlRvRG91YmxlKG9wMiwgZnBSZWdUMSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJlZ1QxKTsK
KyAgICAgICAgaWYgKCF0eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKKyAgICAg
ICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMSk7CisgICAg
ICAgIEp1bXAgajIgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMSk7CisgICAg
ICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QxLCBmcFJlZ1QxKTsKKyAgICAgICAgSnVtcCBq
MjIgPSBqdW1wKCk7CisgICAgICAgIGoyLmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0cih0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QxKTsKKyAgICAgICAgbW92ZVB0clRvRG91YmxlKHJlZ1Qx
LCBmcFJlZ1QxKTsKKyAgICAgICAgajIyLmxpbmsodGhpcyk7CisgICAgfQorICAgIGRpdkRvdWJs
ZShmcFJlZ1QxLCBmcFJlZ1QwKTsKKyAgICBtb3ZlRG91YmxlVG9QdHIoZnBSZWdUMCwgcmVnVDAp
OworICAgIHN1YlB0cih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDApOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZGl2KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9t
SW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgIGlmICh0eXBlcy5maXJz
dCgpLmRlZmluaXRlbHlJc051bWJlcigpICYmIHR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051
bWJlcigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFpc09wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZURvdWJsZShvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChv
cDEpKSB7CisgICAgICAgIGlmICghdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkK
KyAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICB9CisgICAgaWYgKCFpc09wZXJh
bmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDIpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludChvcDIpKSB7CisgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlz
TnVtYmVyKCkpCisgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgfQorICAgIC8v
IFRoZXJlIGlzIGFuIGV4dHJhIHNsb3cgY2FzZSBmb3IgKG9wMSAqIC1OKSBvciAoLU4gKiBvcDIp
LCB0byBjaGVjayBmb3IgMCBzaW5jZSB0aGlzIHNob3VsZCBwcm9kdWNlIGEgcmVzdWx0IG9mIC0w
LgorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9kaXYpOworICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDIpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9w
MiwgcmVnVDIpOworICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmggYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oCmluZGV4IGU2OWUyNzMuLmYyNjQ1N2EgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZU1ldGhvZHMuaApAQCAtNjUsNiArNjUsMTEgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEdldEpJVFN0dWJBcmcodW5zaWduZWQgYXJndW1lbnROdW1iZXIsIFJl
Z2lzdGVySUQgZHMKICAgICBwZWVrKGRzdCwgYXJndW1lbnRTdGFja09mZnNldCk7CiB9CiAKK0FM
V0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKHVu
c2lnbmVkIHNyYykKK3sKKyAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3Rl
ckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNEb3VibGUoKTsKK30KKwog
QUxXQVlTX0lOTElORSBKU1ZhbHVlIEpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5kKHVuc2lnbmVkIHNy
YykKIHsKICAgICBBU1NFUlQobV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNy
YykpOwpAQCAtMzA1LDYgKzMxMCwxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpzYW1wbGVD
b2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAjZW5kaWYKICNlbmRpZgogCitpbmxpbmUg
SklUOjpBZGRyZXNzIEpJVDo6YWRkcmVzc0Zvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBi
YXNlKQoreworICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChpbmRleCAqIHNpemVvZihSZWdpc3Rl
cikpKTsKK30KKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAKIGlubGluZSBKSVQ6OkFkZHJlc3Mg
SklUOjp0YWdGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTMxNywxMSAr
MzI3LDYgQEAgaW5saW5lIEpJVDo6QWRkcmVzcyBKSVQ6OnBheWxvYWRGb3IodW5zaWduZWQgaW5k
ZXgsIFJlZ2lzdGVySUQgYmFzZSkKICAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoaW5kZXggKiBz
aXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSk7CiB9CiAKLWlubGluZSBKSVQ6OkFkZHJlc3MgSklUOjphZGRyZXNzRm9yKHVuc2lnbmVk
IGluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi17Ci0gICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKGlu
ZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotfQotCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2Fk
VGFnKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIHRhZykKIHsKICAgICBSZWdpc3RlcklEIG1h
cHBlZFRhZzsKQEAgLTU3OSwxMSArNTg0LDYgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6Z2V0
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENv
bnN0YW50SW1tZWRpYXRlRG91YmxlKHVuc2lnbmVkIHNyYykKLXsKLSAgICByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5k
KHNyYykuaXNEb3VibGUoKTsKLX0KLQogLyogRGVwcmVjYXRlZDogUGxlYXNlIHVzZSBKSVRTdHVi
Q2FsbCBpbnN0ZWFkLiAqLwogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0SklUU3R1
YkFyZyhSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2FkLCB1bnNpZ25lZCBhcmd1bWVu
dE51bWJlcikKQEAgLTczMiw2ICs3MzIsMjQgQEAgQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklU
OjplbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQogewogICAgIHJl
dHVybiBicmFuY2hUZXN0UHRyKFplcm8sIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIH0K
KworaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZERvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdp
c3RlcklEIHZhbHVlKQoreworICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoaW5kZXgpKSB7CisgICAgICAgIFJlZ2lzdGVyJiBpbkNvbnN0YW50UG9vbCA9IG1fY29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KTsKKyAgICAgICAgbG9hZERvdWJsZSgmaW5D
b25zdGFudFBvb2wsIHZhbHVlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbG9hZERvdWJsZShhZGRy
ZXNzRm9yKGluZGV4KSwgdmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkSW50
MzJUb0RvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKQoreworICAgIGlm
IChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKSB7CisgICAgICAg
IFJlZ2lzdGVyJiBpbkNvbnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVy
KGluZGV4KTsKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzKCZp
bkNvbnN0YW50UG9vbCksIHZhbHVlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29udmVydEludDMy
VG9Eb3VibGUoYWRkcmVzc0ZvcihpbmRleCksIHZhbHVlKTsKK30KICNlbmRpZgogCiBBTFdBWVNf
SU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZJbW1lZGlhdGVJbnRlZ2VyKFJlZ2lzdGVy
SUQgcmVnKQpAQCAtNzY5LDYgKzc4NywxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VycyhSZWdpc3RlcklEIHJlZzEsCiAgICAg
YWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXJzKHJlZzEsIHJlZzIsIHNj
cmF0Y2gpKTsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SW1tZWRpYXRlTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQoreworICAgIGFkZFNsb3dDYXNlKGVt
aXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVnKSk7Cit9CisKICNpZiAhVVNFKEpTVkFMVUU2
NCkKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShS
ZWdpc3RlcklEIHJlZykKIHs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40094</attachid>
            <date>2009-09-24 17:24:08 -0700</date>
            <delta_ts>2009-09-24 17:37:57 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29723-20090924172407.patch</filename>
            <type>text/plain</type>
            <size>12812</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzMzhkMDBhLi5iY2EwMGNlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNCBA
QAorPDw8PDw8PCBVcGRhdGVkIHVwc3RyZWFtOkphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwogMjAw
OS0wOS0yNCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkBAIC03MCw2ICs3MSwzMSBAQAogICAgICAgICAo
V1RGOjpUQ01hbGxvY19DZW50cmFsX0ZyZWVMaXN0OjpSZWxlYXNlVG9TcGFucyk6CiAgICAgICAg
ICogd3RmL1RDU3BpbkxvY2suaDoKICAgICAgICAgKFRDTWFsbG9jX1NwaW5Mb2NrOjpJc0hlbGQp
OgorPT09PT09PQorMjAwOS0wOS0yNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpdmlzaW9u
IGlzIG5lZWRsZXNzbHkgc2xvdyBpbiA2NC1iaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NzIzCisKKyAgICAgICAgQWRkIGNvZGVnZW4gZm9yIG9w
X2RpdiBvbiB4ODYtNjQKKworICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9w
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9kaXYpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2Rz
Lmg6CisgICAgICAgIChKU0M6OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmFkZHJlc3NGb3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRMb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJl
cik6Cis+Pj4+Pj4+IFN0YXNoZWQgY2hhbmdlczpKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKIAog
MjAwOS0wOS0yNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGJmM2E0MTguLmVhODQzNGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xOTUsNyArMTk1
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogCiAgICAgICAgIHN3aXRj
aCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29k
ZSkpIHsKICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9kZWxfYnlfdmFsKQotI2lmICFVU0Uo
SlNWQUxVRTMyXzY0KQorI2lmIFVTRShKU1ZBTFVFMzIpCiAgICAgICAgIERFRklORV9CSU5BUllf
T1Aob3BfZGl2KQogI2VuZGlmCiAgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfaW4pCkBAIC0y
MzAsNyArMjMwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfY3JlYXRlX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2Rl
YnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQotI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisjaWYgIVVTRShKU1ZBTFVFMzIpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCiAjZW5k
aWYKICAgICAgICAgREVGSU5FX09QKG9wX2VuZCkKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0X3Zl
cmlmeSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpcykKLSNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorI2lmICFVU0UoSlNWQUxVRTMyKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfZGl2KQogI2VuZGlmCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9l
cSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAppbmRleCA1YzU4ZTlkLi4zYjM1OTM1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0zNzksMTQg
KzM3OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBlbnVtIENvbXBpbGVPcFN0cmlj
dEVxVHlwZSB7IE9wU3RyaWN0RXEsIE9wTlN0cmljdEVxIH07CiAgICAgICAgIHZvaWQgY29tcGls
ZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5
cGUgdHlwZSk7CisgICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUo
dW5zaWduZWQgc3JjKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZW1pdExvYWREb3VibGUodW5z
aWduZWQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CisgICAgICAgIHZvaWQgZW1pdExvYWRJ
bnQzMlRvRG91YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOworCisgICAg
ICAgIEFkZHJlc3MgYWRkcmVzc0Zvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0g
Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgQWRk
cmVzcyB0YWdGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJl
Z2lzdGVyKTsKICAgICAgICAgQWRkcmVzcyBwYXlsb2FkRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdp
c3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIEFkZHJlc3MgYWRkcmVz
c0Zvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIp
OwogCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVk
IG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKLSAg
ICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZSh1bnNpZ25lZCBzcmMp
OwogCiAgICAgICAgIHZvaWQgZW1pdExvYWRUYWcodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQg
dGFnKTsKICAgICAgICAgdm9pZCBlbWl0TG9hZFBheWxvYWQodW5zaWduZWQgaW5kZXgsIFJlZ2lz
dGVySUQgcGF5bG9hZCk7CkBAIC0zOTQsOCArMzk4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdExvYWQoY29uc3QgSlNWYWx1ZSYgdiwgUmVnaXN0ZXJJRCB0YWcsIFJlZ2lz
dGVySUQgcGF5bG9hZCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWQodW5zaWduZWQgaW5kZXgsIFJl
Z2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxG
cmFtZVJlZ2lzdGVyKTsKICAgICAgICAgdm9pZCBlbWl0TG9hZDIodW5zaWduZWQgaW5kZXgxLCBS
ZWdpc3RlcklEIHRhZzEsIFJlZ2lzdGVySUQgcGF5bG9hZDEsIHVuc2lnbmVkIGluZGV4MiwgUmVn
aXN0ZXJJRCB0YWcyLCBSZWdpc3RlcklEIHBheWxvYWQyKTsKLSAgICAgICAgdm9pZCBlbWl0TG9h
ZERvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKLSAgICAgICAgdm9p
ZCBlbWl0TG9hZEludDMyVG9Eb3VibGUodW5zaWduZWQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1
ZSk7CiAKICAgICAgICAgdm9pZCBlbWl0U3RvcmUodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQg
dGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lz
dGVyKTsKICAgICAgICAgdm9pZCBlbWl0U3RvcmUodW5zaWduZWQgaW5kZXgsIGNvbnN0IEpTVmFs
dWUgY29uc3RhbnQsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTQ5
OSw2ICs1MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUOjpKdW1wIGVtaXRKdW1w
SWZOb3RJbW1lZGlhdGVJbnRlZ2VyKFJlZ2lzdGVySUQpOwogICAgICAgICBKSVQ6Okp1bXAgZW1p
dEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXJzKFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVn
ZXIoUmVnaXN0ZXJJRCk7CisgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRp
YXRlTnVtYmVyKFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEltbWVkaWF0ZUludGVnZXJzKFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwog
CiAjaWYgIVVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5k
ZXggM2JlMTNjYi4uODgxNzE5NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApA
QCAtMTk3OCw5ICsxOTc4LDExIEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dD
YXNlKE9wY29kZUlEIG9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46CiAgICAgICAgIGFk
ZERvdWJsZShmcFJlZ1QyLCBmcFJlZ1QxKTsKICAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9z
dWIpCiAgICAgICAgIHN1YkRvdWJsZShmcFJlZ1QyLCBmcFJlZ1QxKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX211bCk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQg
PT0gb3BfbXVsKQogICAgICAgICBtdWxEb3VibGUoZnBSZWdUMiwgZnBSZWdUMSk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9kaXYpOworICAgICAgICBkaXZEb3Vi
bGUoZnBSZWdUMiwgZnBSZWdUMSk7CiAgICAgfQogICAgIG1vdmVEb3VibGVUb1B0cihmcFJlZ1Qx
LCByZWdUMCk7CiAgICAgc3ViUHRyKHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDApOwpAQCAt
MjA4Miw2ICsyMDg0LDEwNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5PgogICAgICAgICBjb21w
aWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKG9wX211bCwgaXRlciwgcmVzdWx0LCBvcDEsIG9wMiwg
dHlwZXMpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CisgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVEb3VibGUob3AxKSkgeworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MSwgcmVnVDApOworICAgICAgICBhZGRQdHIodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7
CisgICAgICAgIG1vdmVQdHJUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CisgICAgfSBlbHNlIGlm
IChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgICAgIGVtaXRMb2Fk
SW50MzJUb0RvdWJsZShvcDEsIGZwUmVnVDApOworICAgIH0gZWxzZSB7CisgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7CisgICAgICAgIGlmICghdHlwZXMuZmlyc3Qo
KS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEltbWVkaWF0ZU51bWJlcihyZWdUMCk7CisgICAgICAgIEp1bXAgbm90SW50ID0gZW1pdEp1bXBJ
Zk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJs
ZShyZWdUMCwgZnBSZWdUMCk7CisgICAgICAgIEp1bXAgc2tpcERvdWJsZUxvYWQgPSBqdW1wKCk7
CisgICAgICAgIG5vdEludC5saW5rKHRoaXMpOworICAgICAgICBhZGRQdHIodGFnVHlwZU51bWJl
clJlZ2lzdGVyLCByZWdUMCk7CisgICAgICAgIG1vdmVQdHJUb0RvdWJsZShyZWdUMCwgZnBSZWdU
MCk7CisgICAgICAgIHNraXBEb3VibGVMb2FkLmxpbmsodGhpcyk7CisgICAgfQorICAgIAorICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDIpKSB7CisgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMSk7CisgICAgICAgIGFkZFB0cih0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIHJlZ1QxKTsKKyAgICAgICAgbW92ZVB0clRvRG91YmxlKHJlZ1QxLCBm
cFJlZ1QxKTsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9w
MikpIHsKKyAgICAgICAgZW1pdExvYWRJbnQzMlRvRG91YmxlKG9wMiwgZnBSZWdUMSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJlZ1QxKTsKKyAg
ICAgICAgaWYgKCF0eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKKyAgICAgICAg
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMSk7CisgICAgICAg
IEp1bXAgbm90SW50ID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDEpOworICAg
ICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7CisgICAgICAgIEp1bXAg
c2tpcERvdWJsZUxvYWQgPSBqdW1wKCk7CisgICAgICAgIG5vdEludC5saW5rKHRoaXMpOworICAg
ICAgICBhZGRQdHIodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7CisgICAgICAgIG1vdmVQ
dHJUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7CisgICAgICAgIHNraXBEb3VibGVMb2FkLmxpbmso
dGhpcyk7CisgICAgfQorICAgIGRpdkRvdWJsZShmcFJlZ1QxLCBmcFJlZ1QwKTsKKworICAgIEp1
bXBMaXN0IGRvdWJsZVJlc3VsdDsKKyAgICBKdW1wIGVuZDsKKyAgICBib29sIGF0dGVtcHRJbnRD
b252ZXJzaW9uID0gKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpIHx8IGdldENv
bnN0YW50T3BlcmFuZChvcDEpLmFzSW50MzIoKSA+IDEpICYmIGlzT3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KG9wMik7CisgICAgaWYgKGF0dGVtcHRJbnRDb252ZXJzaW9uKSB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihmcFJlZ1QwLCByZWdUMCk7CisgICAgICAgIGNvbnZl
cnRJbnQzMlRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudWNv
bWlzZF9ycihmcFJlZ1QxLCBmcFJlZ1QwKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZVJlc3Vs
dC5hcHBlbmQobV9hc3NlbWJsZXIuam5lKCkpOworICAgICAgICBkb3VibGVSZXN1bHQuYXBwZW5k
KG1fYXNzZW1ibGVyLmpwKCkpOworICAgICAgICAKKyAgICAgICAgZG91YmxlUmVzdWx0LmFwcGVu
ZChicmFuY2hUZXN0MzIoWmVybywgcmVnVDApKTsKKyAgICAgICAgZW1pdEZhc3RBcml0aEludFRv
SW1tTm9DaGVjayhyZWdUMCwgcmVnVDApOworICAgICAgICBlbmQgPSBqdW1wKCk7CisgICAgfQor
CisgICAgLy8gRG91YmxlIHJlc3VsdC4KKyAgICBkb3VibGVSZXN1bHQubGluayh0aGlzKTsKKyAg
ICBtb3ZlRG91YmxlVG9QdHIoZnBSZWdUMCwgcmVnVDApOworICAgIHN1YlB0cih0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKworICAgIGlmIChhdHRlbXB0SW50Q29udmVyc2lvbikKKyAg
ICAgICAgZW5kLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJl
Z1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIE9wZXJh
bmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kKTsKKyAgICBpZiAodHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIo
KSAmJiB0eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkgeworI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgYnJlYWtwb2ludCgpOworI2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDEpICYmICFpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgICAgIGlmICghdHlwZXMuZmly
c3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKKyAgICB9CisgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDIp
ICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgICAgIGlmICgh
dHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCisgICAgICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CisgICAgfQorICAgIC8vIFRoZXJlIGlzIGFuIGV4dHJhIHNsb3cgY2FzZSBm
b3IgKG9wMSAqIC1OKSBvciAoLU4gKiBvcDIpLCB0byBjaGVjayBmb3IgMCBzaW5jZSB0aGlzIHNo
b3VsZCBwcm9kdWNlIGEgcmVzdWx0IG9mIC0wLgorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9kaXYpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMSwgcmVnVDIpOwor
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOworICAgIHN0dWJDYWxsLmNhbGwo
cmVzdWx0KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVN
ZXRob2RzLmggYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCmluZGV4IGU2
OWUyNzMuLmYyNjQ1N2EgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVN
ZXRob2RzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaApAQCAt
NjUsNiArNjUsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEpJVFN0dWJBcmco
dW5zaWduZWQgYXJndW1lbnROdW1iZXIsIFJlZ2lzdGVySUQgZHMKICAgICBwZWVrKGRzdCwgYXJn
dW1lbnRTdGFja09mZnNldCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKHVuc2lnbmVkIHNyYykKK3sKKyAgICByZXR1cm4gbV9j
b2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVy
YW5kKHNyYykuaXNEb3VibGUoKTsKK30KKwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpJVDo6Z2V0
Q29uc3RhbnRPcGVyYW5kKHVuc2lnbmVkIHNyYykKIHsKICAgICBBU1NFUlQobV9jb2RlQmxvY2st
PmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykpOwpAQCAtMzA1LDYgKzMxMCwxMSBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjpzYW1wbGVDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAjZW5kaWYKICNlbmRpZgogCitpbmxpbmUgSklUOjpBZGRyZXNzIEpJVDo6YWRkcmVzc0Zvcih1
bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQoreworICAgIHJldHVybiBBZGRyZXNzKGJh
c2UsIChpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKK30KKwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAKIGlubGluZSBKSVQ6OkFkZHJlc3MgSklUOjp0YWdGb3IodW5zaWduZWQgaW5kZXgsIFJl
Z2lzdGVySUQgYmFzZSkKQEAgLTMxNywxMSArMzI3LDYgQEAgaW5saW5lIEpJVDo6QWRkcmVzcyBK
SVQ6OnBheWxvYWRGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKICAgICByZXR1
cm4gQWRkcmVzcyhiYXNlLCAoaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7CiB9CiAKLWlubGluZSBKSVQ6OkFkZHJl
c3MgSklUOjphZGRyZXNzRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi17Ci0g
ICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotfQot
CiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkVGFnKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklE
IHRhZykKIHsKICAgICBSZWdpc3RlcklEIG1hcHBlZFRhZzsKQEAgLTU3OSwxMSArNTg0LDYgQEAg
QUxXQVlTX0lOTElORSBib29sIEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVu
c2lnbmVkIG9wMSwgdW5zaWduZWQgb3AKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFMV0FZU19J
TkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKHVuc2lnbmVk
IHNyYykKLXsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNEb3VibGUoKTsKLX0KLQogLyogRGVw
cmVjYXRlZDogUGxlYXNlIHVzZSBKSVRTdHViQ2FsbCBpbnN0ZWFkLiAqLwogCiBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0UHV0SklUU3R1YkFyZyhSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJ
RCBwYXlsb2FkLCB1bnNpZ25lZCBhcmd1bWVudE51bWJlcikKQEAgLTczMiw2ICs3MzIsMjQgQEAg
QUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVy
KFJlZ2lzdGVySUQgcmVnKQogewogICAgIHJldHVybiBicmFuY2hUZXN0UHRyKFplcm8sIHJlZywg
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIH0KKworaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZERv
dWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKQoreworICAgIGlmIChtX2Nv
ZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKSB7CisgICAgICAgIFJlZ2lz
dGVyJiBpbkNvbnN0YW50UG9vbCA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4
KTsKKyAgICAgICAgbG9hZERvdWJsZSgmaW5Db25zdGFudFBvb2wsIHZhbHVlKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbG9hZERvdWJsZShhZGRyZXNzRm9yKGluZGV4KSwgdmFsdWUpOworfQorCitp
bmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBS
ZWdpc3RlcklEIHZhbHVlKQoreworICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lz
dGVySW5kZXgoaW5kZXgpKSB7CisgICAgICAgIFJlZ2lzdGVyJiBpbkNvbnN0YW50UG9vbCA9IG1f
Y29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKGluZGV4KTsKKyAgICAgICAgY29udmVydEludDMy
VG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzKCZpbkNvbnN0YW50UG9vbCksIHZhbHVlKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc0ZvcihpbmRleCksIHZh
bHVlKTsKK30KICNlbmRpZgogCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1w
SWZJbW1lZGlhdGVJbnRlZ2VyKFJlZ2lzdGVySUQgcmVnKQpAQCAtNzY5LDYgKzc4NywxMSBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRl
Z2VycyhSZWdpc3RlcklEIHJlZzEsCiAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVk
aWF0ZUludGVnZXJzKHJlZzEsIHJlZzIsIHNjcmF0Y2gpKTsKIH0KIAorQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlTnVtYmVyKFJlZ2lzdGVySUQg
cmVnKQoreworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVn
KSk7Cit9CisKICNpZiAhVVNFKEpTVkFMVUU2NCkKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShSZWdpc3RlcklEIHJlZykKIHs=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40095</attachid>
            <date>2009-09-24 17:38:02 -0700</date>
            <delta_ts>2009-09-24 19:33:00 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29723-20090924173800.patch</filename>
            <type>text/plain</type>
            <size>12508</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzMzhkMDBhLi5mZDFiNGJlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMDktMDktMjQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXZpc2lvbiBpcyBuZWVk
bGVzc2x5IHNsb3cgaW4gNjQtYml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTcyMworCisgICAgICAgIEFkZCBjb2RlZ2VuIGZvciBvcF9kaXYgb24g
eDg2LTY0CisKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1l
dGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAg
ICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6SklUOjphZGRyZXNzRm9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZERv
dWJsZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRJbnQzMlRvRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIpOgorCiAy
MDA5LTA5LTI0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYmYzYTQxOC4u
ZWE4NDM0ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAKICAgICAgICAgc3dpdGNoIChtX2ludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSkgewogICAgICAgICBERUZJ
TkVfQklOQVJZX09QKG9wX2RlbF9ieV92YWwpCi0jaWYgIVVTRShKU1ZBTFVFMzJfNjQpCisjaWYg
VVNFKEpTVkFMVUUzMikKICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9kaXYpCiAjZW5kaWYK
ICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9pbikKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVh
dGVfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklO
RV9PUChvcF9kZWxfYnlfaWQpCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKKyNpZiAhVVNFKEpTVkFM
VUUzMikKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKICNlbmRpZgogICAgICAgICBERUZJTkVf
T1Aob3BfZW5kKQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3QpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3RfdmVyaWZ5KQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfY29udmVydF90aGlzKQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisj
aWYgIVVTRShKU1ZBTFVFMzIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAj
ZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2VxKQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDVj
NThlOWQuLjNiMzU5MzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTM3OSwxNCArMzc5LDE4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGVudW0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHsgT3BTdHJpY3RF
cSwgT3BOU3RyaWN0RXEgfTsKICAgICAgICAgdm9pZCBjb21waWxlT3BTdHJpY3RFcShJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHlwZSB0eXBlKTsKKyAgICAgICAg
Ym9vbCBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZSh1bnNpZ25lZCBzcmMpOworICAg
ICAgICAKKyAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdp
c3RlcklEIHZhbHVlKTsKKyAgICAgICAgdm9pZCBlbWl0TG9hZEludDMyVG9Eb3VibGUodW5zaWdu
ZWQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CisKKyAgICAgICAgQWRkcmVzcyBhZGRyZXNz
Rm9yKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7
CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBBZGRyZXNzIHRhZ0Zvcih1bnNpZ25l
ZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICBB
ZGRyZXNzIHBheWxvYWRGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgQWRkcmVzcyBhZGRyZXNzRm9yKHVuc2lnbmVkIGluZGV4
LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAKICAgICAgICAgYm9vbCBn
ZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQodW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIs
IHVuc2lnbmVkJiBvcCwgaW50MzJfdCYgY29uc3RhbnQpOwotICAgICAgICBib29sIGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKHVuc2lnbmVkIHNyYyk7CiAKICAgICAgICAgdm9pZCBl
bWl0TG9hZFRhZyh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogICAgICAgICB2b2lk
IGVtaXRMb2FkUGF5bG9hZCh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkKTsKQEAg
LTM5NCw4ICszOTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0TG9hZChj
b25zdCBKU1ZhbHVlJiB2LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2FkKTsKICAg
ICAgICAgdm9pZCBlbWl0TG9hZCh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcsIFJlZ2lz
dGVySUQgcGF5bG9hZCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAg
ICAgICB2b2lkIGVtaXRMb2FkMih1bnNpZ25lZCBpbmRleDEsIFJlZ2lzdGVySUQgdGFnMSwgUmVn
aXN0ZXJJRCBwYXlsb2FkMSwgdW5zaWduZWQgaW5kZXgyLCBSZWdpc3RlcklEIHRhZzIsIFJlZ2lz
dGVySUQgcGF5bG9hZDIpOwotICAgICAgICB2b2lkIGVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIGlu
ZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwotICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0Rv
dWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKIAogICAgICAgICB2b2lk
IGVtaXRTdG9yZSh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcsIFJlZ2lzdGVySUQgcGF5
bG9hZCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICB2b2lk
IGVtaXRTdG9yZSh1bnNpZ25lZCBpbmRleCwgY29uc3QgSlNWYWx1ZSBjb25zdGFudCwgUmVnaXN0
ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtNDk5LDYgKzUwMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKSVQ6Okp1bXAgZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVn
ZXIoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEpJVDo6SnVtcCBlbWl0SnVtcElmTm90SW1tZWRpYXRl
SW50ZWdlcnMoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZv
aWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKKyAg
ICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJ
RCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMo
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAKICNpZiAhVVNFKEpTVkFMVUU2
NCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCAzYmUxM2NiLi44ODE3MTk2
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC0xOTc4LDkgKzE5NzgsMTEg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5PjoKICAgICAgICAgYWRkRG91YmxlKGZwUmVnVDIsIGZw
UmVnVDEpOwogICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9wX3N1YikKICAgICAgICAgc3ViRG91
YmxlKGZwUmVnVDIsIGZwUmVnVDEpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2Rl
SUQgPT0gb3BfbXVsKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9tdWwpCiAgICAgICAg
IG11bERvdWJsZShmcFJlZ1QyLCBmcFJlZ1QxKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX2Rpdik7CisgICAgICAgIGRpdkRvdWJsZShmcFJlZ1QyLCBmcFJlZ1Qx
KTsKICAgICB9CiAgICAgbW92ZURvdWJsZVRvUHRyKGZwUmVnVDEsIHJlZ1QwKTsKICAgICBzdWJQ
dHIodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CkBAIC0yMDgyLDYgKzIwODQsMTA1IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+CiAgICAgICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xv
d0Nhc2Uob3BfbXVsLCBpdGVyLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcyk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25l
ZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIE9wZXJhbmRUeXBl
cyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKTsKKworICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDEp
KSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7CisgICAgICAg
IGFkZFB0cih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICAgICAgbW92ZVB0clRv
RG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50
SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICAgICAgZW1pdExvYWRJbnQzMlRvRG91YmxlKG9wMSwg
ZnBSZWdUMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihv
cDEsIHJlZ1QwKTsKKyAgICAgICAgaWYgKCF0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051bWJl
cigpKQorICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlTnVtYmVyKHJl
Z1QwKTsKKyAgICAgICAgSnVtcCBub3RJbnQgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdl
cihyZWdUMCk7CisgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsK
KyAgICAgICAgSnVtcCBza2lwRG91YmxlTG9hZCA9IGp1bXAoKTsKKyAgICAgICAgbm90SW50Lmxp
bmsodGhpcyk7CisgICAgICAgIGFkZFB0cih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsK
KyAgICAgICAgbW92ZVB0clRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKKyAgICAgICAgc2tpcERv
dWJsZUxvYWQubGluayh0aGlzKTsKKyAgICB9CisgICAgCisgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlRG91YmxlKG9wMikpIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihvcDIsIHJlZ1QxKTsKKyAgICAgICAgYWRkUHRyKHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVn
VDEpOworICAgICAgICBtb3ZlUHRyVG9Eb3VibGUocmVnVDEsIGZwUmVnVDEpOworICAgIH0gZWxz
ZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAgICAgICBlbWl0
TG9hZEludDMyVG9Eb3VibGUob3AyLCBmcFJlZ1QxKTsKKyAgICB9IGVsc2UgeworICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDEpOworICAgICAgICBpZiAoIXR5cGVzLnNl
Y29uZCgpLmRlZmluaXRlbHlJc051bWJlcigpKQorICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QxKTsKKyAgICAgICAgSnVtcCBub3RJbnQgPSBlbWl0
SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMSk7CisgICAgICAgIGNvbnZlcnRJbnQzMlRv
RG91YmxlKHJlZ1QxLCBmcFJlZ1QxKTsKKyAgICAgICAgSnVtcCBza2lwRG91YmxlTG9hZCA9IGp1
bXAoKTsKKyAgICAgICAgbm90SW50LmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0cih0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIHJlZ1QxKTsKKyAgICAgICAgbW92ZVB0clRvRG91YmxlKHJlZ1QxLCBm
cFJlZ1QxKTsKKyAgICAgICAgc2tpcERvdWJsZUxvYWQubGluayh0aGlzKTsKKyAgICB9CisgICAg
ZGl2RG91YmxlKGZwUmVnVDEsIGZwUmVnVDApOworCisgICAgSnVtcExpc3QgZG91YmxlUmVzdWx0
OworICAgIEp1bXAgZW5kOworICAgIGJvb2wgYXR0ZW1wdEludENvbnZlcnNpb24gPSAoIWlzT3Bl
cmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkgfHwgZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSku
YXNJbnQzMigpID4gMSkgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKTsKKyAg
ICBpZiAoYXR0ZW1wdEludENvbnZlcnNpb24pIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNk
MnNpX3JyKGZwUmVnVDAsIHJlZ1QwKTsKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUocmVn
VDAsIGZwUmVnVDEpOworICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKGZwUmVnVDEsIGZw
UmVnVDApOworICAgICAgICAKKyAgICAgICAgZG91YmxlUmVzdWx0LmFwcGVuZChtX2Fzc2VtYmxl
ci5qbmUoKSk7CisgICAgICAgIGRvdWJsZVJlc3VsdC5hcHBlbmQobV9hc3NlbWJsZXIuanAoKSk7
CisgICAgICAgIAorICAgICAgICBkb3VibGVSZXN1bHQuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJv
LCByZWdUMCkpOworICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCBy
ZWdUMCk7CisgICAgICAgIGVuZCA9IGp1bXAoKTsKKyAgICB9CisKKyAgICAvLyBEb3VibGUgcmVz
dWx0LgorICAgIGRvdWJsZVJlc3VsdC5saW5rKHRoaXMpOworICAgIG1vdmVEb3VibGVUb1B0cihm
cFJlZ1QwLCByZWdUMCk7CisgICAgc3ViUHRyKHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDAp
OworCisgICAgaWYgKGF0dGVtcHRJbnRDb252ZXJzaW9uKQorICAgICAgICBlbmQubGluayh0aGlz
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDApOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgdW5zaWduZWQgcmVzdWx0
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3Bl
cmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAg
IGlmICh0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051bWJlcigpICYmIHR5cGVzLnNlY29uZCgp
LmRlZmluaXRlbHlJc051bWJlcigpKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBicmVha3Bv
aW50KCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKG9wMSkgJiYgIWlzT3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlSW50KG9wMSkpIHsKKyAgICAgICAgaWYgKCF0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051
bWJlcigpKQorICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIH0KKyAgICBpZiAo
IWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKG9wMikgJiYgIWlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICAgICAgaWYgKCF0eXBlcy5zZWNvbmQoKS5kZWZp
bml0ZWx5SXNOdW1iZXIoKSkKKyAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICB9
CisgICAgLy8gVGhlcmUgaXMgYW4gZXh0cmEgc2xvdyBjYXNlIGZvciAob3AxICogLU4pIG9yICgt
TiAqIG9wMiksIHRvIGNoZWNrIGZvciAwIHNpbmNlIHRoaXMgc2hvdWxkIHByb2R1Y2UgYSByZXN1
bHQgb2YgLTAuCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2Rpdik7Cisg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMik7CisgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AyLCByZWdUMik7CisgICAgc3R1YkNhbGwuY2FsbChyZXN1bHQpOworfQorCiB2b2lk
IEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaCBiL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKaW5kZXggZTY5ZTI3My4uZjI2NDU3YSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCkBAIC02NSw2ICs2NSwxMSBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0SklUU3R1YkFyZyh1bnNpZ25lZCBhcmd1bWVudE51
bWJlciwgUmVnaXN0ZXJJRCBkcwogICAgIHBlZWsoZHN0LCBhcmd1bWVudFN0YWNrT2Zmc2V0KTsK
IH0KIAorQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVE
b3VibGUodW5zaWduZWQgc3JjKQoreworICAgIHJldHVybiBtX2NvZGVCbG9jay0+aXNDb25zdGFu
dFJlZ2lzdGVySW5kZXgoc3JjKSAmJiBnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5pc0RvdWJsZSgp
OworfQorCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSklUOjpnZXRDb25zdGFudE9wZXJhbmQodW5z
aWduZWQgc3JjKQogewogICAgIEFTU0VSVChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoc3JjKSk7CkBAIC0zMDUsNiArMzEwLDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OnNhbXBsZUNvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICNlbmRpZgogI2VuZGlmCiAK
K2lubGluZSBKSVQ6OkFkZHJlc3MgSklUOjphZGRyZXNzRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdp
c3RlcklEIGJhc2UpCit7CisgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKGluZGV4ICogc2l6ZW9m
KFJlZ2lzdGVyKSkpOworfQorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5lIEpJVDo6
QWRkcmVzcyBKSVQ6OnRhZ0Zvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAt
MzE3LDExICszMjcsNiBAQCBpbmxpbmUgSklUOjpBZGRyZXNzIEpJVDo6cGF5bG9hZEZvcih1bnNp
Z25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChp
bmRleCAqIHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKTsKIH0KIAotaW5saW5lIEpJVDo6QWRkcmVzcyBKSVQ6OmFkZHJlc3NGb3Io
dW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLXsKLSAgICByZXR1cm4gQWRkcmVzcyhi
YXNlLCAoaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci19Ci0KIGlubGluZSB2b2lkIEpJVDo6
ZW1pdExvYWRUYWcodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnKQogewogICAgIFJlZ2lz
dGVySUQgbWFwcGVkVGFnOwpAQCAtNTc5LDExICs1ODQsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SklUOjpnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQodW5zaWduZWQgb3AxLCB1bnNpZ25l
ZCBvcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUodW5zaWduZWQgc3JjKQotewotICAgIHJldHVy
biBtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoc3JjKSAmJiBnZXRDb25zdGFu
dE9wZXJhbmQoc3JjKS5pc0RvdWJsZSgpOwotfQotCiAvKiBEZXByZWNhdGVkOiBQbGVhc2UgdXNl
IEpJVFN0dWJDYWxsIGluc3RlYWQuICovCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQ
dXRKSVRTdHViQXJnKFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIHVuc2lnbmVk
IGFyZ3VtZW50TnVtYmVyKQpAQCAtNzMyLDYgKzczMiwyNCBAQCBBTFdBWVNfSU5MSU5FIEpJVDo6
SnVtcCBKSVQ6OmVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJRCByZWcpCiB7
CiAgICAgcmV0dXJuIGJyYW5jaFRlc3RQdHIoWmVybywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwogfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIGluZGV4
LCBGUFJlZ2lzdGVySUQgdmFsdWUpCit7CisgICAgaWYgKG1fY29kZUJsb2NrLT5pc0NvbnN0YW50
UmVnaXN0ZXJJbmRleChpbmRleCkpIHsKKyAgICAgICAgUmVnaXN0ZXImIGluQ29uc3RhbnRQb29s
ID0gbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoaW5kZXgpOworICAgICAgICBsb2FkRG91
YmxlKCZpbkNvbnN0YW50UG9vbCwgdmFsdWUpOworICAgIH0gZWxzZQorICAgICAgICBsb2FkRG91
YmxlKGFkZHJlc3NGb3IoaW5kZXgpLCB2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIEpJVDo6ZW1p
dExvYWRJbnQzMlRvRG91YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCit7
CisgICAgaWYgKG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbmRleCkpIHsK
KyAgICAgICAgUmVnaXN0ZXImIGluQ29uc3RhbnRQb29sID0gbV9jb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXIoaW5kZXgpOworICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBYnNvbHV0ZUFk
ZHJlc3MoJmluQ29uc3RhbnRQb29sKSwgdmFsdWUpOworICAgIH0gZWxzZQorICAgICAgICBjb252
ZXJ0SW50MzJUb0RvdWJsZShhZGRyZXNzRm9yKGluZGV4KSwgdmFsdWUpOworfQogI2VuZGlmCiAK
IEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkltbWVkaWF0ZUludGVnZXIo
UmVnaXN0ZXJJRCByZWcpCkBAIC03NjksNiArNzg3LDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXJzKFJlZ2lzdGVySUQgcmVn
MSwKICAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcnMocmVnMSwg
cmVnMiwgc2NyYXRjaCkpOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJRCByZWcpCit7CisgICAgYWRkU2xv
d0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWcpKTsKK30KKwogI2lmICFVU0Uo
SlNWQUxVRTY0KQogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEZhc3RBcml0aERlVGFnSW1t
ZWRpYXRlKFJlZ2lzdGVySUQgcmVnKQogew==
</data>
<flag name="review"
          id="21277"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>