<?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>8264</bug_id>
          
          <creation_ts>2006-04-08 07:57:38 -0700</creation_ts>
          <short_desc>toLowerCase and toUpperCase don&apos;t honor special mappings</short_desc>
          <delta_ts>2006-04-08 10:23:58 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38777</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-04-08 07:57:38 -0700</bug_when>
    <thetext>ECMA-262 says the following about String.prototype.toLowerCase() and toUpperCase():
------------------------------------------------
NOTE 1 
The result should be derived according to the case mappings in the Unicode character database (this 
explicitly includes not only the UnicodeData.txt file, but also the SpecialCasings.txt file that 
accompanies it in Unicode 2.1.8 and later). 
------------------------------------------------

None of the major browsers appears to implement this, but it still sounds like a bug that needs to be fixed to me. This requires some refactoring of the new KXMLCore:Unicode abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38778</commentid>
    <comment_count>1</comment_count>
      <attachid>7576</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-04-08 07:58:01 -0700</bug_when>
    <thetext>Created attachment 7576
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38779</commentid>
    <comment_count>2</comment_count>
      <attachid>7577</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-04-08 08:03:49 -0700</bug_when>
    <thetext>Created attachment 7577
proposed fix

Removed per-character capitalization routines altogether.

Added KXMLCore::Unicode headers to the project.

Looks like at least the ICU implementation should be in a .cpp file, not in the header - but I left it in the header for now, because the existing inline functions are even bigger, and maybe there was some reason to put them there.

Changes two Mozilla tests, which were assuming the old behavior.

Three more ICU headers will need to be svn copied to JavaScriptCore, they didn&apos;t show up in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38783</commentid>
    <comment_count>3</comment_count>
      <attachid>7577</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-08 09:53:43 -0700</bug_when>
    <thetext>Comment on attachment 7577
proposed fix

I like the general idea here, but it seems a shame to do a malloc in every case where the result is greater than the source.

It&apos;s also a shame that we have to to do the copyForWriting even when the string is already entirely in the correct case.

I&apos;d have used uint16_t*&amp; for destIfNeeded -- it&apos;s not a pointer to a pointer, it&apos;s an in/out parameter that&apos;s a pointer, and we normally use references for those.

But despite those issues, this code looks great and fixes a real problem. I think we can land it as-is.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38785</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-04-08 10:23:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It&apos;s also a shame that we have to to do the copyForWriting even when the string
&gt; is already entirely in the correct case.

  I think that this used to be the case even before - UCharReference::operator=() does an implicit copyForWriting().

&gt; I&apos;d have used uint16_t*&amp; for destIfNeeded -- it&apos;s not a pointer to a pointer,
&gt; it&apos;s an in/out parameter that&apos;s a pointer, and we normally use references for
&gt; those.

  Fixed. Landed, r13740.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7576</attachid>
            <date>2006-04-08 07:58:01 -0700</date>
            <delta_ts>2006-04-08 07:58:01 -0700</delta_ts>
            <desc>test case</desc>
            <filename>capitalization-test.html</filename>
            <type>text/html</type>
            <size>702</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">77u/PHNjcmlwdD4KZG9jdW1lbnQud3JpdGUoU3RyaW5nKCJB8JCQgCIpLnRvTG93ZXJDYXNlKCkg
KyAiIC0gc2hvdWxkIGJlIGHwkJCoPHA+Iik7CmRvY3VtZW50LndyaXRlKFN0cmluZygiYfCQkKgi
KS50b1VwcGVyQ2FzZSgpICsgIiAtIHNob3VsZCBiZSBB8JCQgDxwPiIpOwpkb2N1bWVudC53cml0
ZShTdHJpbmcoIs6azp/Oo86czp/OoyDOms6fzqPOnM6fzqMiKS50b0xvd2VyQ2FzZSgpICsgIiAt
IHNob3VsZCBiZSDOus6/z4POvM6/z4IgzrrOv8+DzrzOv8+CPHA+Iik7CmRvY3VtZW50LndyaXRl
KFN0cmluZygiw58iKS50b1VwcGVyQ2FzZSgpICsgIiAtIHNob3VsZCBiZSBTUzxwPiIpOwpkb2N1
bWVudC53cml0ZShTdHJpbmcoIsWJIikudG9VcHBlckNhc2UoKSArICIgLSBzaG91bGQgYmUgyrxO
PHA+Iik7CmRvY3VtZW50LndyaXRlKFN0cmluZygix7AiKS50b1VwcGVyQ2FzZSgpICsgIiAtIHNo
b3VsZCBiZSBKzIw8cD4iKTsKZG9jdW1lbnQud3JpdGUoU3RyaW5nKCLvrIMiKS50b1VwcGVyQ2Fz
ZSgpICsgIiAtIHNob3VsZCBiZSBGRkk8cD4iKTsKZG9jdW1lbnQud3JpdGUoU3RyaW5nKCJGRkki
KS50b0xvd2VyQ2FzZSgpICsgIiAtIHNob3VsZCBiZSBmZmk8cD4iKTsKZG9jdW1lbnQud3JpdGUo
U3RyaW5nKCLEsiIpLnRvTG93ZXJDYXNlKCkgKyAiIC0gc2hvdWxkIGJlIMSzIChhIGxpZ2F0dXJl
KTxwPiIpOwo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7577</attachid>
            <date>2006-04-08 08:03:49 -0700</date>
            <delta_ts>2006-04-08 09:53:43 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>UnicodeCorePatch.txt</filename>
            <type>text/plain</type>
            <size>20368</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL3VuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS91bmljb2RlL2ljdS9Vbmljb2Rl
SWN1LmgJKHJldmlzaW9uIDEzNzM4KQorKysgSmF2YVNjcmlwdENvcmUva3htbGNvcmUvdW5pY29k
ZS9pY3UvVW5pY29kZUljdS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogLyoKICAq
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENvcHlyaWdodCAo
QykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEBueXBvcC5jb20+CiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjQsMjggKzI1LDY1IEBACiAjZGVmaW5lIEtKU19VTklDT0RFX0lDVV9ICiAK
ICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CisjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+
CiAKICNpbmNsdWRlICIuLi9Vbmljb2RlQ2F0ZWdvcnkuaCIKIAogbmFtZXNwYWNlIEtYTUxDb3Jl
IHsKICAgbmFtZXNwYWNlIFVuaWNvZGUgewotICAgIGlubGluZSB1bnNpZ25lZCBzaG9ydCB0b0xv
d2VyKHVuc2lnbmVkIHNob3J0IGMpIHsKLSAgICAgIHJldHVybiB1X3RvbG93ZXIoYyk7CisKKyAg
ICBpbmxpbmUgaW50IHRvTG93ZXIodWludDE2X3QqIHN0ciwgaW50IHN0ckxlbmd0aCwgdWludDE2
X3QqKiBkZXN0SWZOZWVkZWQpCisgICAgeworICAgICAgVUVycm9yQ29kZSBlcnIgPSBVX1pFUk9f
RVJST1I7CisgICAgICBpbnQgcmVzdWx0TGVuZ3RoOworICAgICAgKmRlc3RJZk5lZWRlZCA9IDA7
CisKKyAgICAgIHJlc3VsdExlbmd0aCA9IHVfc3RyVG9Mb3dlcigwLCAwLCBzdHIsIHN0ckxlbmd0
aCwgIiIsICZlcnIpOworCisgICAgICBpZiAocmVzdWx0TGVuZ3RoIDw9IHN0ckxlbmd0aCkgewor
ICAgICAgICBlcnIgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVfc3RyVG9Mb3dlcihzdHIsIHJl
c3VsdExlbmd0aCwgc3RyLCBzdHJMZW5ndGgsICIiLCAmZXJyKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGVyciA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgKmRlc3RJZk5lZWRlZCA9ICh1aW50
MTZfdCopbWFsbG9jKHJlc3VsdExlbmd0aCAqIHNpemVvZih1aW50MTZfdCkpOworICAgICAgICB1
X3N0clRvTG93ZXIoKmRlc3RJZk5lZWRlZCwgcmVzdWx0TGVuZ3RoLCBzdHIsIHN0ckxlbmd0aCwg
IiIsICZlcnIpOworICAgICAgfQorCisgICAgICByZXR1cm4gVV9GQUlMVVJFKGVycikgPyAtMSA6
IHJlc3VsdExlbmd0aDsKICAgICB9CiAKLSAgICBpbmxpbmUgdW5zaWduZWQgc2hvcnQgdG9VcHBl
cih1bnNpZ25lZCBzaG9ydCBjKSB7Ci0gICAgICByZXR1cm4gdV90b3VwcGVyKGMpOworICAgIGlu
bGluZSBpbnQgdG9VcHBlcih1aW50MTZfdCogc3RyLCBpbnQgc3RyTGVuZ3RoLCB1aW50MTZfdCoq
IGRlc3RJZk5lZWRlZCkKKyAgICB7CisgICAgICBVRXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJP
UjsKKyAgICAgIGludCByZXN1bHRMZW5ndGg7CisgICAgICAqZGVzdElmTmVlZGVkID0gMDsKKwor
ICAgICAgcmVzdWx0TGVuZ3RoID0gdV9zdHJUb1VwcGVyKDAsIDAsIHN0ciwgc3RyTGVuZ3RoLCAi
IiwgJmVycik7CisKKyAgICAgIGlmIChyZXN1bHRMZW5ndGggPD0gc3RyTGVuZ3RoKSB7CisgICAg
ICAgIGVyciA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdV9zdHJUb1VwcGVyKHN0ciwgcmVzdWx0
TGVuZ3RoLCBzdHIsIHN0ckxlbmd0aCwgIiIsICZlcnIpOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgZXJyID0gVV9aRVJPX0VSUk9SOworICAgICAgICAqZGVzdElmTmVlZGVkID0gKHVpbnQxNl90
KiltYWxsb2MocmVzdWx0TGVuZ3RoICogc2l6ZW9mKHVpbnQxNl90KSk7CisgICAgICAgIHVfc3Ry
VG9VcHBlcigqZGVzdElmTmVlZGVkLCByZXN1bHRMZW5ndGgsIHN0ciwgc3RyTGVuZ3RoLCAiIiwg
JmVycik7CisgICAgICB9CisKKyAgICAgIHJldHVybiBVX0ZBSUxVUkUoZXJyKSA/IC0xIDogcmVz
dWx0TGVuZ3RoOwogICAgIH0KIAotICAgIGlubGluZSBib29sIGlzRm9ybWF0Q2hhcih1bnNpZ25l
ZCBzaG9ydCBjKSB7CisgICAgaW5saW5lIGJvb2wgaXNGb3JtYXRDaGFyKGludDMyX3QgYykKKyAg
ICB7CiAgICAgICByZXR1cm4gdV9jaGFyVHlwZShjKSA9PSBVX0ZPUk1BVF9DSEFSOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIGlzU2VwYXJhdG9yU3BhY2UodW5zaWduZWQgc2hvcnQgYykgewor
ICAgIGlubGluZSBib29sIGlzU2VwYXJhdG9yU3BhY2UoaW50MzJfdCBjKQorICAgIHsKICAgICAg
IHJldHVybiB1X2NoYXJUeXBlKGMpID09IFVfU1BBQ0VfU0VQQVJBVE9SOwogICAgIH0KIAotICAg
IGlubGluZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkodW5zaWduZWQgc2hvcnQgYykgeworICAgIGlu
bGluZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoaW50MzJfdCBjKQorICAgIHsKICAgICAgIHN3aXRj
aCAodV9jaGFyVHlwZShjKSkgewogICAgICAgICBjYXNlIFVfTk9OX1NQQUNJTkdfTUFSSzoKICAg
ICAgICAgICByZXR1cm4gTWFya19Ob25TcGFjaW5nOwpJbmRleDogSmF2YVNjcmlwdENvcmUva3ht
bGNvcmUvdW5pY29kZS9xdDQvVW5pY29kZVF0NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2t4bWxjb3JlL3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaAkocmV2aXNpb24gMTM3MzgpCisr
KyBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS91bmljb2RlL3F0NC9Vbmljb2RlUXQ0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAvKgogICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgbGlicmFyaWVzCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxz
dGFpa29zQGtkZS5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgPGFwQG55cG9wLmNvbT4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSwyNCArMzAsNDMg
QEAKIAogbmFtZXNwYWNlIEtYTUxDb3JlIHsKICAgbmFtZXNwYWNlIFVuaWNvZGUgewotICAgIGlu
bGluZSB1bnNpZ25lZCBzaG9ydCB0b0xvd2VyKHVuc2lnbmVkIHNob3J0IGMpIHsKLSAgICAgIHJl
dHVybiAodW5zaWduZWQgc2hvcnQpUUNoYXIoYykudG9Mb3dlcigpLnVuaWNvZGUoKTsKKyAgICBp
bmxpbmUgaW50IHRvTG93ZXIodWludDE2X3QqIHN0ciwgaW50IHN0ckxlbmd0aCwgdWludDE2X3Qq
KiBkZXN0SWZOZWVkZWQpCisgICAgeworICAgICAgZGVzdElmTmVlZGVkID0gMDsKKworICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkKKyAgICAgICAgc3RyW2ldID0gUUNo
YXIoc3RyW2ldKS50b0xvd2VyKCkudW5pY29kZSgpOworCisgICAgICByZXR1cm4gc3RyTGVuZ3Ro
OwogICAgIH0KIAotICAgIGlubGluZSB1bnNpZ25lZCBzaG9ydCB0b1VwcGVyKHVuc2lnbmVkIHNo
b3J0IGMpIHsKLSAgICAgIHJldHVybiAodW5zaWduZWQgc2hvcnQpUUNoYXIoYykudG9VcHBlcigp
LnVuaWNvZGUoKTsKKyAgICBpbmxpbmUgaW50IHRvVXBwZXIodWludDE2X3QqIHN0ciwgaW50IHN0
ckxlbmd0aCwgdWludDE2X3QqKiBkZXN0SWZOZWVkZWQpCisgICAgeworICAgICAgZGVzdElmTmVl
ZGVkID0gMDsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkKKyAg
ICAgICAgc3RyW2ldID0gUUNoYXIoc3RyW2ldKS50b1VwcGVyKCkudW5pY29kZSgpOworCisgICAg
ICByZXR1cm4gc3RyTGVuZ3RoOwogICAgIH0KIAotICAgIGlubGluZSBib29sIGlzRm9ybWF0Q2hh
cih1bnNpZ25lZCBzaG9ydCBjKSB7Ci0gICAgICByZXR1cm4gUUNoYXIoYykuY2F0ZWdvcnkoKSA9
PSBRQ2hhcjo6T3RoZXJfRm9ybWF0OworICAgIGlubGluZSBib29sIGlzRm9ybWF0Q2hhcihpbnQz
Ml90IGMpCisgICAgeworICAgICAgcmV0dXJuIChjICYgMHhGRkZGID09IDApICYmIChRQ2hhcihj
KS5jYXRlZ29yeSgpID09IFFDaGFyOjpPdGhlcl9Gb3JtYXQpOwogICAgIH0KIAotICAgIGlubGlu
ZSBib29sIGlzU2VwYXJhdG9yU3BhY2UodW5zaWduZWQgc2hvcnQgYykgewotICAgICAgcmV0dXJu
IFFDaGFyKGMpLmNhdGVnb3J5KCkgPT0gUUNoYXI6OlNlcGFyYXRvcl9TcGFjZTsKKyAgICBpbmxp
bmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKGludDMyX3QgYykKKyAgICB7CisgICAgICByZXR1cm4g
KGMgJiAweEZGRkYgPT0gMCkgJiYgKFFDaGFyKGMpLmNhdGVnb3J5KCkgPT0gUUNoYXI6OlNlcGFy
YXRvcl9TcGFjZSk7CiAgICAgfQogCi0gICAgaW5saW5lIENoYXJDYXRlZ29yeSBjYXRlZ29yeSh1
bnNpZ25lZCBzaG9ydCBjKSB7Ci0gICAgICBzd2l0Y2ggKFFDaGFyKGMpLmNhdGVnb3J5KCkpIHsK
KyAgICBpbmxpbmUgQ2hhckNhdGVnb3J5IGNhdGVnb3J5KGludDMyX3QgYykKKyAgICB7CisgICAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IHN1cHBvcnQgZm9yIG5vbi1CTVAgY29kZSBwb2ludHMKKyAg
ICAgIGlmIChjICYgMHhGRkZGICE9IDApCisgICAgICAgIHJldHVybiBOb0NhdGVnb3J5OworICAg
ICAgICAKKyAgICAgIHN3aXRjaCAoUUNoYXIoKHVuc2lnbmVkIHNob3J0KWMpLmNhdGVnb3J5KCkp
IHsKICAgICAgICAgY2FzZSBRQ2hhcjo6TWFya19Ob25TcGFjaW5nOgogICAgICAgICAgIHJldHVy
biBNYXJrX05vblNwYWNpbmc7CiAgICAgICAgIGNhc2UgUUNoYXI6Ok1hcmtfU3BhY2luZ0NvbWJp
bmluZzoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL3VuaWNvZGUvVW5pY29kZUNhdGVn
b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva3htbGNvcmUvdW5pY29kZS9Vbmlj
b2RlQ2F0ZWdvcnkuaAkocmV2aXNpb24gMTM3MzgpCisrKyBKYXZhU2NyaXB0Q29yZS9reG1sY29y
ZS91bmljb2RlL1VuaWNvZGVDYXRlZ29yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4
IEBACiAgKgogICovCiAKLSNpZm5kZWYgS0pTX1VOSUNPREVfQ09NTU9OX0gKLSNkZWZpbmUgS0pT
X1VOSUNPREVfQ09NTU9OX0gKKyNpZm5kZWYgS0pTX1VOSUNPREVfQ0FURUdPUllfSAorI2RlZmlu
ZSBLSlNfVU5JQ09ERV9DQVRFR09SWV9ICiAKIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgIG5hbWVz
cGFjZSBVbmljb2RlIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL3VuaWNvZGUvVW5p
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL3VuaWNvZGUvVW5p
Y29kZS5oCShyZXZpc2lvbiAxMzczOCkKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL3VuaWNv
ZGUvVW5pY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjZWxpZiBVU0Uo
SUNVX1VOSUNPREUpCiAjaW5jbHVkZSAiaWN1L1VuaWNvZGVJY3UuaCIKICNlbHNlCi0jZXJyb3Ig
IlVua25vd24gdW5pY29kZSBpbXBsZW1lbnRhdGlvbiIKKyNlcnJvciAiVW5rbm93biBVbmljb2Rl
IGltcGxlbWVudGF0aW9uIgogI2VuZGlmCiAKICNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL3N0cmluZ19vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9z
dHJpbmdfb2JqZWN0LmNwcAkocmV2aXNpb24gMTM3MzgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
c3RyaW5nX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJlcnJvcl9vYmplY3QuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgInN0cmlu
Z19vYmplY3QubHV0LmgiCisjaW5jbHVkZSA8a3htbGNvcmUvdW5pY29kZS9Vbmljb2RlLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKQEAgLTYyMywxOSArNjI0LDM3IEBAIEpTVmFsdWUgKlN0
cmluZ1Byb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24KICAgICB9CiAgICAgYnJlYWs7CiAgIGNhc2Ug
VG9Mb3dlckNhc2U6Ci0gIGNhc2UgVG9Mb2NhbGVMb3dlckNhc2U6IC8vIEZJWE1FOiBUbyBnZXQg
dGhpcyAxMDAlIHJpZ2h0IHdlIG5lZWQgdG8gZGV0ZWN0IFR1cmtpc2ggYW5kIGNoYW5nZSBJIHRv
IGxvd2VyY2FzZSBpIHdpdGhvdXQgYSBkb3QuCisgIGNhc2UgVG9Mb2NhbGVMb3dlckNhc2U6IHsg
Ly8gRklYTUU6IFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9VTklEQVRBL1NwZWNp
YWxDYXNpbmcudHh0IGZvciBsb2NhbGUtc2Vuc2l0aXZlIG1hcHBpbmdzIHRoYXQgYXJlbid0IGlt
cGxlbWVudGVkLgogICAgIHUgPSBzOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAg
ICAgIHVbaV0gPSB1W2ldLnRvTG93ZXIoKTsKLSAgICByZXN1bHQgPSBqc1N0cmluZyh1KTsKKyAg
ICB1LmNvcHlGb3JXcml0aW5nKCk7CisgICAgdWludDE2X3QqIGRhdGFQdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQxNl90Kj4odS5yZXAoKS0+ZGF0YSgpKTsKKyAgICB1aW50MTZfdCogZGVzdElm
TmVlZGVkOworCisgICAgaW50IGxlbiA9IEtYTUxDb3JlOjpVbmljb2RlOjp0b0xvd2VyKGRhdGFQ
dHIsIHUuc2l6ZSgpLCAmZGVzdElmTmVlZGVkKTsKKyAgICBpZiAobGVuID49IDApCisgICAgICAg
IHJlc3VsdCA9IGpzU3RyaW5nKFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxVQ2hhciAqPihkZXN0
SWZOZWVkZWQgPyBkZXN0SWZOZWVkZWQgOiBkYXRhUHRyKSwgbGVuKSk7CisgICAgZWxzZQorICAg
ICAgICByZXN1bHQgPSBqc1N0cmluZyhzKTsKKworICAgIGZyZWUoZGVzdElmTmVlZGVkKTsKICAg
ICBicmVhazsKKyAgfQogICBjYXNlIFRvVXBwZXJDYXNlOgotICBjYXNlIFRvTG9jYWxlVXBwZXJD
YXNlOiAvLyBGSVhNRTogVG8gZ2V0IHRoaXMgMTAwJSByaWdodCB3ZSBuZWVkIHRvIGRldGVjdCBU
dXJraXNoIGFuZCBjaGFuZ2UgaSB0byB1cHBlcmNhc2UgSSB3aXRoIGEgZG90LgorICBjYXNlIFRv
TG9jYWxlVXBwZXJDYXNlOiB7IC8vIEZJWE1FOiBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9Q
dWJsaWMvVU5JREFUQS9TcGVjaWFsQ2FzaW5nLnR4dCBmb3IgbG9jYWxlLXNlbnNpdGl2ZSBtYXBw
aW5ncyB0aGF0IGFyZW4ndCBpbXBsZW1lbnRlZC4KICAgICB1ID0gczsKLSAgICBmb3IgKGkgPSAw
OyBpIDwgbGVuOyBpKyspCi0gICAgICB1W2ldID0gdVtpXS50b1VwcGVyKCk7Ci0gICAgcmVzdWx0
ID0ganNTdHJpbmcodSk7CisgICAgdS5jb3B5Rm9yV3JpdGluZygpOworICAgIHVpbnQxNl90KiBk
YXRhUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHUucmVwKCktPmRhdGEoKSk7Cisg
ICAgdWludDE2X3QqIGRlc3RJZk5lZWRlZDsKKworICAgIGludCBsZW4gPSBLWE1MQ29yZTo6VW5p
Y29kZTo6dG9VcHBlcihkYXRhUHRyLCB1LnNpemUoKSwgJmRlc3RJZk5lZWRlZCk7CisgICAgaWYg
KGxlbiA+PSAwKQorICAgICAgICByZXN1bHQgPSBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8VUNoYXIgKj4oZGVzdElmTmVlZGVkID8gZGVzdElmTmVlZGVkIDogZGF0YVB0ciksIGxl
bikpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNTdHJpbmcocyk7CisKKyAgICBmcmVl
KGRlc3RJZk5lZWRlZCk7CiAgICAgYnJlYWs7CisgIH0KICNpZm5kZWYgS0pTX1BVUkVfRUNNQQog
ICBjYXNlIEJpZzoKICAgICByZXN1bHQgPSBqc1N0cmluZygiPGJpZz4iICsgcyArICI8L2JpZz4i
KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAkocmV2aXNpb24gMTM3MzgpCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvdXN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxNSArODQsNiBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgKiBAcmV0dXJuIHRoZSAxNiBiaXQgVW5pY29kZSB2YWx1ZSBvZiB0
aGUgY2hhcmFjdGVyCiAgICAgICovCiAgICAgdW5zaWduZWQgc2hvcnQgdW5pY29kZSgpIGNvbnN0
IHsgcmV0dXJuIHVjOyB9Ci0gIHB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFRoZSBj
aGFyYWN0ZXIgY29udmVydGVkIHRvIGxvd2VyIGNhc2UuCi0gICAgICovCi0gICAgVUNoYXIgdG9M
b3dlcigpIGNvbnN0OwotICAgIC8qKgotICAgICAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBjb252
ZXJ0ZWQgdG8gdXBwZXIgY2FzZS4KLSAgICAgKi8KLSAgICBVQ2hhciB0b1VwcGVyKCkgY29uc3Q7
CiAKICAgICB1bnNpZ25lZCBzaG9ydCB1YzsKICAgfTsKQEAgLTE0MSwxNCArMTMyLDYgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgICogQHJldHVybiBIaWdoZXIgYnl0ZS4KICAgICAgKi8KICAgICB1
bnNpZ25lZCBjaGFyIGhpZ2goKSBjb25zdCB7IHJldHVybiByZWYoKS51YyA+PiA4OyB9Ci0gICAg
LyoqCi0gICAgICogQHJldHVybiBDaGFyYWN0ZXIgY29udmVydGVkIHRvIGxvd2VyIGNhc2UuCi0g
ICAgICovCi0gICAgVUNoYXIgdG9Mb3dlcigpIGNvbnN0IHsgcmV0dXJuIHJlZigpLnRvTG93ZXIo
KTsgfQotICAgIC8qKgotICAgICAqIEByZXR1cm4gQ2hhcmFjdGVyIGNvbnZlcnRlZCB0byB1cHBl
ciBjYXNlLgotICAgICAqLwotICAgIFVDaGFyIHRvVXBwZXIoKSBjb25zdCAgeyByZXR1cm4gcmVm
KCkudG9VcHBlcigpOyB9CiAgIHByaXZhdGU6CiAgICAgLy8gbm90IGltcGxlbWVudGVkLCBjYW4g
b25seSBiZSBjb25zdHJ1Y3RlZCBmcm9tIFVTdHJpbmcKICAgICBVQ2hhclJlZmVyZW5jZSgpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcAkocmV2aXNpb24gMTM3MzgpCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvdXN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKIAog
dXNpbmcgc3RkOjptYXg7CiAKLSNpbmNsdWRlIDxreG1sY29yZS91bmljb2RlL1VuaWNvZGUuaD4K
LQogbmFtZXNwYWNlIEtKUyB7CiAKIGV4dGVybiBjb25zdCBkb3VibGUgTmFOOwpAQCAtMTQyLDE2
ICsxNDAsNiBAQCBjb25zdCBpbnQgbm9ybWFsU3RhdEJ1ZmZlclNpemUgPSA0MDk2Owogc3RhdGlj
IGNoYXIgKnN0YXRCdWZmZXIgPSAwOwogc3RhdGljIGludCBzdGF0QnVmZmVyU2l6ZSA9IDA7CiAK
LVVDaGFyIFVDaGFyOjp0b0xvd2VyKCkgY29uc3QKLXsKLSAgcmV0dXJuIEtYTUxDb3JlOjpVbmlj
b2RlOjp0b0xvd2VyKHVjKTsKLX0KLQotVUNoYXIgVUNoYXI6OnRvVXBwZXIoKSBjb25zdAotewot
ICByZXR1cm4gS1hNTENvcmU6OlVuaWNvZGU6OnRvVXBwZXIodWMpOwotfQotCiBVQ2hhclJlZmVy
ZW5jZSYgVUNoYXJSZWZlcmVuY2U6Om9wZXJhdG9yPShVQ2hhciBjKQogewogICBzdHItPmNvcHlG
b3JXcml0aW5nKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2VjbWEvU3Ry
aW5nLzE1LjUuNC4xMi0xLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Rlc3RzL21v
emlsbGEvZWNtYS9TdHJpbmcvMTUuNS40LjEyLTEuanMJKHJldmlzaW9uIDEzNzM4KQorKysgSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9lY21hL1N0cmluZy8xNS41LjQuMTItMS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3NiwxMyBAQCBmdW5jdGlvbiBHZXRVbmljb2RlVmFsdWVz
KCBjICkgewogICAgICAgICByZXR1cm4gdTsKICAgICB9CiAKKyAgICAvLyBMQVRJTiBTTUFMTCBM
RVRURVIgTiBQUkVDRURFRCBCWSBBUE9TVFJPUEhFLCB1cHBlcmNhc2UgdGFrZXMgdHdvIGNvZGUg
cG9pbnRzCisgICAgaWYgKGMgPT0gMHgwMTQ5KSB7CisgICAgICAgIHVbMF0gPSAweDAyYmM7Cisg
ICAgICAgIHVbMV0gPSBjOworICAgICAgICByZXR1cm4gdTsKKyAgICB9CisgICAgCiAgICAgaWYg
KCAoYyA+PSAweDAxMzkgJiYgYyA8IDB4MDE0OSkgfHwgKGMgPiAweDAxNzggJiYgYyA8IDB4MDE3
RikgKSB7CiAgICAgICAgIGlmICggYyAlIDIgPT0gMSApIHsKICAgICAgICAgLy8gaWYgaXQncyBv
ZGQsIGl0J3MgYSBjYXBpdGFsIGFuZCB0aGUgbG93ZXIgY2FzZSBpcyBjICsxCkBAIC0yNzIsNiAr
Mjc5LDExIEBAIGZ1bmN0aW9uIEdldFVuaWNvZGVWYWx1ZXMoIGMgKSB7CiAgICAgICAgIHVbMV0g
PSBjOwogICAgICAgICByZXR1cm4gdTsKICAgICB9CisgICAgaWYgKGMgPT0gMHgwNTg3KSB7Cisg
ICAgICAgIHVbMF0gPSAweDA1MzU7CisgICAgICAgIHVbMV0gPSBjOworICAgICAgICByZXR1cm4g
dTsKKyAgICB9CiAKICAgICAvLyBIZWJyZXcKICAgICAvLyBSYW5nZTogVSswNTkwIHRvIFUrMDVG
RgpJbmRleDogSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9lY21hL1N0cmluZy8xNS41LjQu
MTItNS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2VjbWEv
U3RyaW5nLzE1LjUuNC4xMi01LmpzCShyZXZpc2lvbiAxMzczOCkKKysrIEphdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vemlsbGEvZWNtYS9TdHJpbmcvMTUuNS40LjEyLTUuanMJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsMTMgQEAgZnVuY3Rpb24gR2V0VW5pY29kZVZhbHVlcyggYyApIHsKICAg
ICAgICAgcmV0dXJuIHU7CiAgICAgfQogCisgICAgLy8gTEFUSU4gU01BTEwgTEVUVEVSIE4gUFJF
Q0VERUQgQlkgQVBPU1RST1BIRSwgdXBwZXJjYXNlIHRha2VzIHR3byBjb2RlIHBvaW50cworICAg
IGlmIChjID09IDB4MDE0OSkgeworICAgICAgICB1WzBdID0gMHgwMmJjOworICAgICAgICB1WzFd
ID0gYzsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQorICAgIAogICAgIGlmICggKGMgPj0gMHgw
MTM5ICYmIGMgPCAweDAxNDkpIHx8IChjID4gMHgwMTc4ICYmIGMgPCAweDAxN0YpICkgewogICAg
ICAgICBpZiAoIGMgJSAyID09IDEgKSB7CiAgICAgICAgIC8vIGlmIGl0J3Mgb2RkLCBpdCdzIGEg
Y2FwaXRhbCBhbmQgdGhlIGxvd2VyIGNhc2UgaXMgYyArMQpAQCAtMjY4LDYgKzI3NSwxMSBAQCBm
dW5jdGlvbiBHZXRVbmljb2RlVmFsdWVzKCBjICkgewogICAgICAgICB1WzFdID0gYzsKICAgICAg
ICAgcmV0dXJuIHU7CiAgICAgfQorICAgIGlmIChjID09IDB4MDU4NykgeworICAgICAgICB1WzBd
ID0gMHgwNTM1OworICAgICAgICB1WzFdID0gYzsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQog
CiAgICAgLy8gSGVicmV3CiAgICAgLy8gUmFuZ2U6IFUrMDU5MCB0byBVKzA1RkYKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTM3MzgpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiAr
MjI0LDkgQEAKIAkJOTNFMjZEREMwOEIyQTRGNDAwRjg1MjI2IC8qIHBjcmVfcHJpbnRpbnQuYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI2RERCMDhC
MkE0RjQwMEY4NTIyNiAvKiBwY3JlX3ByaW50aW50LmMgKi87IH07CiAJCTkzRjBCM0FCMDlCQjRE
QzAwMDY4RkNFMyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGMEIzQTkwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi87
IH07CiAJCTkzRjBCM0FDMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjBCM0FBMDlCQjREQzAwMDY4RkNF
MyAvKiBQYXJzZXIuaCAqLzsgfTsKKwkJRTE5NTY3OTYwOUU3Q0YxMjAwQjg5RDEzIC8qIFVuaWNv
ZGVJY3UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
OTU2NzhGMDlFN0NGMTIwMEI4OUQxMyAvKiBVbmljb2RlSWN1LmggKi87IH07CisJCUUxOTU2Nzk4
MDlFN0NGMTIwMEI4OUQxMyAvKiBVbmljb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk1Njc5NDA5RTdDRjEyMDBCODlEMTMgLyogVW5pY29kZS5o
ICovOyB9OworCQlFMTk1Njc5OTA5RTdDRjEyMDBCODlEMTMgLyogVW5pY29kZUNhdGVnb3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk1Njc5NTA5
RTdDRjEyMDBCODlEMTMgLyogVW5pY29kZUNhdGVnb3J5LmggKi87IH07CiAvKiBFbmQgUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBA
IC00MTUsNyArNDE4LDcgQEAKIAkJOTMzQTM0OTkwMzhBRTdDNjAwODYzNUNFIC8qIGdyYW1tYXIu
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNl
Y29kZS55YWNjOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IHBhdGggPSBncmFt
bWFyLnk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJOTMzQTM0
OUEwMzhBRTdDNjAwODYzNUNFIC8qIGlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBpZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNFIC8q
IGlkZW50aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBpZGVudGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwotCQk5MzVGNjlGNjA4MjQ0RkVBMDAzRDFBNDUgLyogZGZ0YWJsZXMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGRmdGFibGVzOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5MzVGNjlGNjA4MjQ0RkVBMDAz
RDFBNDUgLyogZGZ0YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5jbHVkZUlu
SW5kZXggPSAwOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJs
ZSI7IHBhdGggPSBkZnRhYmxlczsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJOTM2NEIyNzMwNDVCN0Q2QzAwQTlDQUMxIC8qIGZwY29uc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBmcGNvbnN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk5MzczNTI0RTAzOERBOEMy
MDA4NjM1Q0UgLyogY29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQk5Mzc0RDNBNzAzOEQ5RDc0MDA4NjM1Q0UgLyogc2NvcGVfY2hhaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzY29wZV9j
aGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC00MzYs
NiArNDM5LDkgQEAKIAkJOTNGMEIzQTkwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0YwQjNBQTA5QkI0REMwMDA2OEZDRTMgLyogUGFyc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0YxOTgxQTA4MjQ1QUFFMDAxRTlBQkMgLyoga2V5d29yZHMudGFi
bGUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBrZXl3b3Jkcy50YWJs
ZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlFMTk1Njc4RjA5
RTdDRjEyMDBCODlEMTMgLyogVW5pY29kZUljdS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmljb2RlSWN1Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOTU2
Nzk0MDlFN0NGMTIwMEI4OUQxMyAvKiBVbmljb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuaWNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE5NTY3
OTUwOUU3Q0YxMjAwQjg5RDEzIC8qIFVuaWNvZGVDYXRlZ29yeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVbmljb2RlQ2F0ZWdvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjUzNDEzOTAwMzBDRUVCMTAxOEJFN0YzIC8qIHJlZmVyZW5jZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSByZWZlcmVu
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY1MzQx
MzkxMDMwQ0VFQjEwMThCRTdGMyAvKiByZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjUzNDEzOTQwMzBDRjVGODAxOEJFN0YzIC8q
IHJlZmVyZW5jZV9saXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IHJlZmVyZW5jZV9saXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OwpAQCAtNjQxLDYgKzY0Nyw3IEBACiAJCTY1MTYyRUYxMDhF
NkEyMUMwMDc1NTZDRCAvKiBreG1sY29yZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8s
CiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5c0lubGluZS5oICovLAogCQkJ
CTY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNwcCAqLywKIAkJCQk2NUUy
MTdCNzA4RTdFRUNDMDAyM0U1RjYgLyogQXNzZXJ0aW9ucy5oICovLApAQCAtODAyLDYgKzgwOSwy
NCBAQAogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUUxOTU2NzhEMDlFN0NGMTIwMEI4OUQxMyAvKiB1bmljb2RlICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFMTk1Njc4RTA5RTdDRjEyMDBCODlE
MTMgLyogaWN1ICovLAorCQkJCUUxOTU2Nzk0MDlFN0NGMTIwMEI4OUQxMyAvKiBVbmljb2RlLmgg
Ki8sCisJCQkJRTE5NTY3OTUwOUU3Q0YxMjAwQjg5RDEzIC8qIFVuaWNvZGVDYXRlZ29yeS5oICov
LAorCQkJKTsKKwkJCXBhdGggPSB1bmljb2RlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJRTE5NTY3OEUwOUU3Q0YxMjAwQjg5RDEzIC8qIGljdSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTE5NTY3OEYwOUU3Q0YxMjAwQjg5RDEz
IC8qIFVuaWNvZGVJY3UuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaWN1OworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTkxNiw2ICs5NDEsOSBAQAog
CQkJCTY1RkIzRjRGMDlEMTFCMjQwMEY0OURFQiAvKiBkYXRlX29iamVjdC5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1RkIzRjUxMDlEMTFCMjQwMEY0OURFQiAvKiBncmFtbWFyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NUZCM0Y1NDA5RDExQjI0MDBGNDlERUIgLyogcmVnZXhwX29iamVjdC5s
dXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxOTU2Nzk2MDlFN0NGMTIwMEI4OUQxMyAvKiBVbmlj
b2RlSWN1LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTk1Njc5ODA5RTdDRjEyMDBCODlEMTMgLyog
VW5pY29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE5NTY3OTkwOUU3Q0YxMjAwQjg5RDEzIC8q
IFVuaWNvZGVDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3N0cmluZy1jYXBpdGFsaXphdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctY2FwaXRhbGl6YXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctY2FwaXRhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgdG9Mb3dlckNhc2UgYW5kIHRvVXBwZXJDYXNlIGhhbmRsZSBjZXJ0YWluIG5vbi10cml2
aWFsIGNhc2VzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgU3RyaW5nKCJB8JCQgCIpLnRvTG93ZXJDYXNlKCkgaXMgImHwkJCoIgorUEFTUyBTdHJpbmco
ImHwkJCoIikudG9VcHBlckNhc2UoKSBpcyAiQfCQkIAiCitQQVNTIFN0cmluZygizprOn86jzpzO
n86jIM6azp/Oo86czp/OoyIpLnRvTG93ZXJDYXNlKCkgaXMgIs66zr/Pg868zr/PgiDOus6/z4PO
vM6/z4IiCitQQVNTIFN0cmluZygiw58iKS50b1VwcGVyQ2FzZSgpIGlzICJTUyIKK1BBU1MgU3Ry
aW5nKCLFiSIpLnRvVXBwZXJDYXNlKCkgaXMgIsq8TiIKK1BBU1MgU3RyaW5nKCLHsCIpLnRvVXBw
ZXJDYXNlKCkgaXMgIkrMjCIKK1BBU1MgU3RyaW5nKCLvrIMiKS50b1VwcGVyQ2FzZSgpIGlzICJG
RkkiCitQQVNTIFN0cmluZygiRkZJIikudG9Mb3dlckNhc2UoKSBpcyAiZmZpIgorUEFTUyBTdHJp
bmcoIsSyIikudG9Mb3dlckNhc2UoKSBpcyAixLMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJp
bmctY2FwaXRhbGl6YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3N0cmluZy1jYXBpdGFsaXphdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zdHJpbmctY2FwaXRhbGl6YXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJpbmctY2Fw
aXRhbGl6YXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNvdXJjZXMvc3RyaW5nLWNhcGl0YWxpemF0aW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3N0cmluZy1jYXBpdGFsaXphdGlvbi5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3N0cmluZy1jYXBp
dGFsaXphdGlvbi5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAor77u/ZGVzY3JpcHRp
b24oCisKKyJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdG9Mb3dlckNhc2UgYW5kIHRvVXBwZXJDYXNl
IGhhbmRsZSBjZXJ0YWluIG5vbi10cml2aWFsIGNhc2VzIGNvcnJlY3RseS4iCisKKyk7CisKK3No
b3VsZEJlKCdTdHJpbmcoIkHwkJCAIikudG9Mb3dlckNhc2UoKScsICciYfCQkKgiJyk7CitzaG91
bGRCZSgnU3RyaW5nKCJh8JCQqCIpLnRvVXBwZXJDYXNlKCknLCAnIkHwkJCAIicpOworc2hvdWxk
QmUoJ1N0cmluZygizprOn86jzpzOn86jIM6azp/Oo86czp/OoyIpLnRvTG93ZXJDYXNlKCknLCAn
Is66zr/Pg868zr/PgiDOus6/z4POvM6/z4IiJyk7CitzaG91bGRCZSgnU3RyaW5nKCLDnyIpLnRv
VXBwZXJDYXNlKCknLCAnIlNTIicpOworc2hvdWxkQmUoJ1N0cmluZygixYkiKS50b1VwcGVyQ2Fz
ZSgpJywgJyLKvE4iJyk7CitzaG91bGRCZSgnU3RyaW5nKCLHsCIpLnRvVXBwZXJDYXNlKCknLCAn
IkrMjCInKTsKK3Nob3VsZEJlKCdTdHJpbmcoIu+sgyIpLnRvVXBwZXJDYXNlKCknLCAnIkZGSSIn
KTsKK3Nob3VsZEJlKCdTdHJpbmcoIkZGSSIpLnRvTG93ZXJDYXNlKCknLCAnImZmaSInKTsKK3No
b3VsZEJlKCdTdHJpbmcoIsSyIikudG9Mb3dlckNhc2UoKScsICcixLMiJyk7CisKK3N1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="2070"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>