<?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>7005</bug_id>
          
          <creation_ts>2006-02-01 09:06:23 -0800</creation_ts>
          <short_desc>add Noncopyable, OwnPtr, OwnArrayPtr to KXMLCore</short_desc>
          <delta_ts>2006-02-02 00:22:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>30972</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-01 09:06:23 -0800</bug_when>
    <thetext>Last night, Maciej suggested adding these classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30973</commentid>
    <comment_count>1</comment_count>
      <attachid>6190</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-01 09:07:05 -0800</bug_when>
    <thetext>Created attachment 6190
class implemented, used in a few places in JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31042</commentid>
    <comment_count>2</comment_count>
      <attachid>6190</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-02 00:08:19 -0800</bug_when>
    <thetext>Comment on attachment 6190
class implemented, used in a few places in JavaScriptCore

r=me, might be better to use Vector instead of OwnPtr someday.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6190</attachid>
            <date>2006-02-01 09:07:05 -0800</date>
            <delta_ts>2006-02-02 00:08:19 -0800</delta_ts>
            <desc>class implemented, used in a few places in JavaScriptCore</desc>
            <filename>KXMLCorePatch.txt</filename>
            <type>text/plain</type>
            <size>29663</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGt4bWxjb3JlL093blB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL093blB0ci5o
CShyZXZpc2lvbiAwKQorKysga3htbGNvcmUvT3duUHRyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjUgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpZm5kZWYgS1hNTENPUkVfT1dOX1BUUl9ICisjZGVmaW5lIEtYTUxDT1JFX09XTl9QVFJfSAor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4K
KyNpbmNsdWRlIDxreG1sY29yZS9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgS1hNTENvcmUg
eworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE93blB0ciA6IE5vbmNvcHlhYmxl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IE93blB0cihUKiBwdHIgPSAwKSA6IG1f
cHRyKHB0cikgeyB9CisgICAgICAgIH5Pd25QdHIoKSB7IHNhZmVEZWxldGUoKTsgfQorCisgICAg
ICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisgICAgICAgIFQqIHJlbGVhc2Uo
KSB7IFQqIHB0ciA9IG1fcHRyOyBtX3B0ciA9IDA7IHJldHVybiBwdHI7IH0KKworICAgICAgICB2
b2lkIHNldChUKiBwdHIpIHsgQVNTRVJUKG1fcHRyICE9IHB0cik7IHNhZmVEZWxldGUoKTsgbV9w
dHIgPSBwdHI7IH0KKyAgICAgICAgdm9pZCBjbGVhcigpIHsgc2FmZURlbGV0ZSgpOyBtX3B0ciA9
IDA7IH0KKworICAgICAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KKyAgICAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgQVNTRVJUKG1f
cHRyKTsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wdHI7IH0KKworICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3Ig
YWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVn
ZXIgdHlwZXMuCisgICAgICAgIHR5cGVkZWYgVCogKE93blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5
cGUpKCkgY29uc3Q7CisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3B0ciA/ICZPd25QdHI6OmdldCA6IDA7IH0KKworICAgICAgICB2b2lkIHN3
YXAoT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIHZvaWQgc2FmZURlbGV0ZSgpIHsgdHlwZWRlZiBjaGFyIGtub3duW3NpemVv
ZihUKSA/IDEgOiAtMV07IGlmIChzaXplb2Yoa25vd24pKSBkZWxldGUgbV9wdHI7IH0KKworICAg
ICAgICBUKiBtX3B0cjsKKyAgICB9OworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgdm9pZCBzd2FwKE93blB0cjxUPiYgYSwgT3duUHRyPFQ+JiBiKSB7IGEuc3dhcChiKTsg
fQorCit9IC8vIG5hbWVzcGFjZSBLWE1MQ29yZQorCit1c2luZyBLWE1MQ29yZTo6T3duUHRyOwor
CisjZW5kaWYgLy8gS1hNTENPUkVfT1dOX1BUUl9ICgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBreG1s
Y29yZS9Pd25QdHIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUK
CkluZGV4OiBreG1sY29yZS9Ob25jb3B5YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL05v
bmNvcHlhYmxlLmgJKHJldmlzaW9uIDApCisrKyBreG1sY29yZS9Ob25jb3B5YWJsZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNl
dDogNCAtKi0KKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaWZuZGVmIEtYTUxDT1JFX05PTkNPUFlBQkxFCisjZGVmaW5lIEtY
TUxDT1JFX05PTkNPUFlBQkxFCisKKy8vIFdlIGRvbid0IHdhbnQgYXJndW1lbnQtZGVwZW5kZW50
IGxvb2t1cCB0byBwdWxsIGluIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgS1hNTENvcmUKKy8vIG5hbWVz
cGFjZSB3aGVuIHlvdSB1c2UgTm9uY29weWFibGUsIHNvIHB1dCBpdCBpbiBpdHMgb3duIG5hbWVz
cGFjZS4KKworbmFtZXNwYWNlIEtYTUxDb3JlTm9uY29weWFibGUgeworCisgICAgY2xhc3MgTm9u
Y29weWFibGUgeworICAgICAgICBOb25jb3B5YWJsZShjb25zdCBOb25jb3B5YWJsZSYpOworICAg
ICAgICBOb25jb3B5YWJsZSYgb3BlcmF0b3I9KGNvbnN0IE5vbmNvcHlhYmxlJik7CisgICAgcHJv
dGVjdGVkOgorICAgICAgICBOb25jb3B5YWJsZSgpIHsgfQorICAgICAgICB+Tm9uY29weWFibGUo
KSB7IH0KKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBLWE1MQ29yZU5vbmNvcHlhYmxlCisKK3Vz
aW5nIEtYTUxDb3JlTm9uY29weWFibGU6Ok5vbmNvcHlhYmxlOworCisjZW5kaWYgLy8gS1hNTENP
UkVfTk9OQ09QWUFCTEUKClByb3BlcnR5IGNoYW5nZXMgb246IGt4bWxjb3JlL05vbmNvcHlhYmxl
LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDoga3ht
bGNvcmUvT3duQXJyYXlQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBreG1sY29yZS9Pd25BcnJheVB0ci5o
CShyZXZpc2lvbiAwKQorKysga3htbGNvcmUvT3duQXJyYXlQdHIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NyBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisv
KgorICogIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisg
Ki8KKworI2lmbmRlZiBLWE1MQ09SRV9PV05fQVJSQVlfUFRSX0gKKyNkZWZpbmUgS1hNTENPUkVf
T1dOX0FSUkFZX1BUUl9ICisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8a3htbGNv
cmUvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL05vbmNvcHlhYmxlLmg+CisKK25h
bWVzcGFjZSBLWE1MQ29yZSB7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgT3du
QXJyYXlQdHIgOiBOb25jb3B5YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBP
d25BcnJheVB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikgeyB9CisgICAgICAgIH5Pd25BcnJh
eVB0cigpIHsgc2FmZURlbGV0ZSgpOyB9CisKKyAgICAgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9wdHI7IH0KKyAgICAgICAgVCogcmVsZWFzZSgpIHsgVCogcHRyID0gbV9wdHI7IG1fcHRy
ID0gMDsgcmV0dXJuIHB0cjsgfQorCisgICAgICAgIHZvaWQgc2V0KFQqIHB0cikgeyBBU1NFUlQo
bV9wdHIgIT0gcHRyKTsgc2FmZURlbGV0ZSgpOyBtX3B0ciA9IHB0cjsgfQorICAgICAgICB2b2lk
IGNsZWFyKCkgeyBzYWZlRGVsZXRlKCk7IG1fcHRyID0gMDsgfQorCisgICAgICAgIFQmIG9wZXJh
dG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgICAgICBU
KiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKwor
ICAgICAgICBUJiBvcGVyYXRvcltdKHN0ZDo6cHRyZGlmZl90IGkpIGNvbnN0IHsgQVNTRVJUKG1f
cHRyKTsgQVNTRVJUKGkgPj0gMCk7IHJldHVybiBtX3B0cltpXTsgfQorCisgICAgICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CisKKyAgICAgICAgLy8gVGhpcyBj
b252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0
IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgICAgICB0eXBlZGVmIFQqIChPd25BcnJh
eVB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpKCkgY29uc3Q7CisgICAgICAgIG9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZPd25BcnJheVB0cjo6
Z2V0IDogMDsgfQorCisgICAgICAgIHZvaWQgc3dhcChPd25BcnJheVB0ciYgbykgeyBzdGQ6OnN3
YXAobV9wdHIsIG8ubV9wdHIpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHNhZmVE
ZWxldGUoKSB7IHR5cGVkZWYgY2hhciBrbm93bltzaXplb2YoVCkgPyAxIDogLTFdOyBpZiAoc2l6
ZW9mKGtub3duKSkgZGVsZXRlIFtdIG1fcHRyOyB9CisKKyAgICAgICAgVCogbV9wdHI7CisgICAg
fTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgc3dhcChPd25B
cnJheVB0cjxUPiYgYSwgT3duQXJyYXlQdHI8VD4mIGIpIHsgYS5zd2FwKGIpOyB9CisKK30gLy8g
bmFtZXNwYWNlIEtYTUxDb3JlCisKK3VzaW5nIEtYTUxDb3JlOjpPd25BcnJheVB0cjsKKworI2Vu
ZGlmIC8vIEtYTUxDT1JFX09XTl9BUlJBWV9QVFJfSAoKUHJvcGVydHkgY2hhbmdlcyBvbjoga3ht
bGNvcmUvT3duQXJyYXlQdHIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBu
YXRpdmUKCkluZGV4OiBranMvaW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9pbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDEyNTEzKQorKysga2pzL2ludGVycHJldGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQyLDIxICszNDIsMTAgQEAKICAgcmVwLT5yZXN0b3JlQnVpbHRpbnMo
YnVpbHRpbnMpOwogfQogCi1TYXZlZEJ1aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKCkgOiAKLSAgX2lu
dGVybmFsKDApCit2b2lkIEludGVycHJldGVyOjp2aXJ0dWFsX2hvb2soaW50LCB2b2lkKikKIHsK
IH0KIAotU2F2ZWRCdWlsdGluczo6flNhdmVkQnVpbHRpbnMoKQotewotICBkZWxldGUgX2ludGVy
bmFsOwotfQotCi0KLXZvaWQgSW50ZXJwcmV0ZXI6OnZpcnR1YWxfaG9vayggaW50LCB2b2lkKiAp
Ci17IC8qQkFTRTo6dmlydHVhbF9ob29rKCBpZCwgZGF0YSApOyovIH0KLQotCiBJbnRlcnByZXRl
ciAqRXhlY1N0YXRlOjpsZXhpY2FsSW50ZXJwcmV0ZXIoKSBjb25zdAogewogICBpZiAoIV9jb250
ZXh0KSB7CkluZGV4OiBranMvaW50ZXJuYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9pbnRlcm5h
bC5jcHAJKHJldmlzaW9uIDEyNTEzKQorKysga2pzL2ludGVybmFsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjc1LDkgKzY3NSw4IEBACiAKIHZvaWQgSW50ZXJwcmV0ZXJJbXA6OnNhdmVCdWlsdGlu
cyAoU2F2ZWRCdWlsdGlucyAmYnVpbHRpbnMpIGNvbnN0CiB7Ci0gIGlmICghYnVpbHRpbnMuX2lu
dGVybmFsKSB7Ci0gICAgYnVpbHRpbnMuX2ludGVybmFsID0gbmV3IFNhdmVkQnVpbHRpbnNJbnRl
cm5hbDsKLSAgfQorICBpZiAoIWJ1aWx0aW5zLl9pbnRlcm5hbCkKKyAgICBidWlsdGlucy5faW50
ZXJuYWwuc2V0KG5ldyBTYXZlZEJ1aWx0aW5zSW50ZXJuYWwpOwogCiAgIGJ1aWx0aW5zLl9pbnRl
cm5hbC0+Yl9PYmplY3QgPSBiX09iamVjdDsKICAgYnVpbHRpbnMuX2ludGVybmFsLT5iX0Z1bmN0
aW9uID0gYl9GdW5jdGlvbjsKSW5kZXg6IGtqcy9yZWdleHBfb2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBranMvcmVnZXhwX29iamVjdC5jcHAJKHJldmlzaW9uIDEyNTEzKQorKysga2pzL3JlZ2V4
cF9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlICpmdW5jUHJvdG8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdFeHBQcm90b3R5cGUgKnJlZ1Byb3Rv
KQogCi0gIDogSW50ZXJuYWxGdW5jdGlvbkltcChmdW5jUHJvdG8pLCBtdWx0aWxpbmUoZmFsc2Up
LCBsYXN0SW5wdXQoIiIpLCBsYXN0T3ZlY3RvcigwKSwgbGFzdE51bVN1YlBhdHRlcm5zKDApCisg
IDogSW50ZXJuYWxGdW5jdGlvbkltcChmdW5jUHJvdG8pLCBtdWx0aWxpbmUoZmFsc2UpLCBsYXN0
SW5wdXQoIiIpLCBsYXN0TnVtU3ViUGF0dGVybnMoMCkKIHsKICAgLy8gRUNNQSAxNS4xMC41LjEg
UmVnRXhwLnByb3RvdHlwZQogICBwdXREaXJlY3QocHJvdG90eXBlUHJvcGVydHlOYW1lLCByZWdQ
cm90bywgRG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seSk7CkBAIC0yMDMsMTEgKzIwMyw2IEBA
CiAgIHB1dERpcmVjdChsZW5ndGhQcm9wZXJ0eU5hbWUsIGpzTnVtYmVyKDIpLCBSZWFkT25seXxE
b250RGVsZXRlfERvbnRFbnVtKTsKIH0KIAotUmVnRXhwT2JqZWN0SW1wOjp+UmVnRXhwT2JqZWN0
SW1wKCkKLXsKLSAgZGVsZXRlIFtdIGxhc3RPdmVjdG9yOwotfQotCiAvKiAKICAgVG8gZmFjaWxp
dGF0ZSByZXN1bHQgY2FjaGluZywgZXhlYygpLCB0ZXN0KCksIG1hdGNoKCksIHNlYXJjaCgpLCBh
bmQgcmVwbGFjZSgpIGRpcGF0Y2ggcmVndWxhcgogICBleHByZXNzaW9uIG1hdGNoaW5nIHRocm91
Z2ggdGhlIHBlcmZvcm1NYXRjaCBmdW5jdGlvbi4gV2UgdXNlIGNhY2hlZCByZXN1bHRzIHRvIGNh
bGN1bGF0ZSwgCkBAIC0yMjUsMTEgKzIyMCwxMCBAQAogICAgICpvdmVjdG9yID0gdG1wT3ZlY3Rv
cjsKICAgCiAgIGlmICghbWF0Y2guaXNOdWxsKCkpIHsKLSAgICBhc3NlcnQodG1wT3ZlY3Rvcik7
CisgICAgQVNTRVJUKHRtcE92ZWN0b3IpOwogICAgIAogICAgIGxhc3RJbnB1dCA9IHM7Ci0gICAg
ZGVsZXRlIFtdIGxhc3RPdmVjdG9yOwotICAgIGxhc3RPdmVjdG9yID0gdG1wT3ZlY3RvcjsKKyAg
ICBsYXN0T3ZlY3Rvci5zZXQodG1wT3ZlY3Rvcik7CiAgICAgbGFzdE51bVN1YlBhdHRlcm5zID0g
ci0+c3ViUGF0dGVybnMoKTsKICAgfQogICAKQEAgLTI4Miw3ICsyNzYsNyBAQAogewogICBpbnQg
aSA9IGxhc3ROdW1TdWJQYXR0ZXJuczsKICAgaWYgKGkgPiAwKSB7Ci0gICAgYXNzZXJ0KGxhc3RP
dmVjdG9yKTsKKyAgICBBU1NFUlQobGFzdE92ZWN0b3IpOwogICAgIFVTdHJpbmcgc3Vic3RyaW5n
ID0gbGFzdElucHV0LnN1YnN0cihsYXN0T3ZlY3RvclsyKmldLCBsYXN0T3ZlY3RvclsyKmkrMV0g
LSBsYXN0T3ZlY3RvclsyKmldKTsKICAgICByZXR1cm4ganNTdHJpbmcoc3Vic3RyaW5nKTsKICAg
fQpAQCAtMzUwLDcgKzM0NCw3IEBACiAgICAgY2FzZSBSaWdodENvbnRleHQ6CiAgICAgICByZXR1
cm4gZ2V0UmlnaHRDb250ZXh0KCk7CiAgICAgZGVmYXVsdDoKLSAgICAgIGFzc2VydCgwKTsKKyAg
ICAgIEFTU0VSVCgwKTsKICAgfQogCiAgIHJldHVybiBqc1N0cmluZygiIik7CkBAIC0zNzEsNyAr
MzY1LDcgQEAKICAgICAgIG11bHRpbGluZSA9IHZhbHVlLT50b0Jvb2xlYW4oZXhlYyk7CiAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgYXNzZXJ0KDApOworICAgICAgQVNTRVJUKDAp
OwogICB9CiB9CiAgIApJbmRleDoga2pzL2Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2Z1
bmN0aW9uLmgJKHJldmlzaW9uIDEyNTEzKQorKysga2pzL2Z1bmN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIsNyArMiw3IEBACiAvKgogICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yMSwxMSArMjEsMTIgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBf
S0pTX0ZVTkNUSU9OX0hfCi0jZGVmaW5lIF9LSlNfRlVOQ1RJT05fSF8KKyNpZm5kZWYgS0pTX0ZV
TkNUSU9OX0gKKyNkZWZpbmUgS0pTX0ZVTkNUSU9OX0gKIAorI2luY2x1ZGUgImFycmF5X2luc3Rh
bmNlLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJhcnJheV9pbnN0YW5jZS5o
IgorI2luY2x1ZGUgPGt4bWxjb3JlL093blB0ci5oPgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAt
NjAsNyArNjEsNyBAQAogICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvICpjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsK
ICAgcHJvdGVjdGVkOgotICAgIFBhcmFtZXRlciAqcGFyYW07CisgICAgT3duUHRyPFBhcmFtZXRl
cj4gcGFyYW07CiAgICAgSWRlbnRpZmllciBpZGVudDsKIAogICBwcml2YXRlOgpJbmRleDoga2pz
L2ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2ludGVybmFsLmgJKHJldmlzaW9uIDEyNTEz
KQorKysga2pzL2ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJ0eXBlcy5oIgogI2luY2x1ZGUgImludGVycHJldGVyLmgiCiAjaW5jbHVkZSAic2Nv
cGVfY2hhaW4uaCIKKyNpbmNsdWRlIDxreG1sY29yZS9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PGt4bWxjb3JlL1JlZlB0ci5oPgogCiAjZGVmaW5lIEkxOE5fTk9PUChzKSBzCkBAIC0xMzEsOSAr
MTMyLDkgQEAKICAgLyoqCiAgICAqIEBzaG9ydCBUaGUgImxhYmVsIHNldCIgaW4gRWNtYS0yNjIg
c3BlYwogICAgKi8KLSAgY2xhc3MgTGFiZWxTdGFjayB7CisgIGNsYXNzIExhYmVsU3RhY2sgOiBO
b25jb3B5YWJsZSB7CiAgIHB1YmxpYzoKLSAgICBMYWJlbFN0YWNrKCk6IHRvcygwTCksIGl0ZXJh
dGlvbkRlcHRoKDApLCBzd2l0Y2hEZXB0aCgwKSB7fQorICAgIExhYmVsU3RhY2soKTogdG9zKDAp
LCBpdGVyYXRpb25EZXB0aCgwKSwgc3dpdGNoRGVwdGgoMCkge30KICAgICB+TGFiZWxTdGFjaygp
OwogCiAgICAgLyoqCkBAIC0xNTksOSArMTYwLDYgQEAKICAgICBib29sIGluU3dpdGNoKCkgY29u
c3QgeyByZXR1cm4gKHN3aXRjaERlcHRoID4gMCk7IH0KICAgICAKICAgcHJpdmF0ZToKLSAgICBM
YWJlbFN0YWNrKGNvbnN0IExhYmVsU3RhY2sgJm90aGVyKTsKLSAgICBMYWJlbFN0YWNrICZvcGVy
YXRvcj0oY29uc3QgTGFiZWxTdGFjayAmb3RoZXIpOwotCiAgICAgc3RydWN0IFN0YWNrRWxlbSB7
CiAgICAgICBJZGVudGlmaWVyIGlkOwogICAgICAgU3RhY2tFbGVtICpwcmV2OwpJbmRleDoga2pz
L2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvZnVuY3Rpb24uY3BwCShyZXZpc2lvbiAx
MjUxMykKKysrIGtqcy9mdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCw5
IEBACiAKICAgY2xhc3MgUGFyYW1ldGVyIHsKICAgcHVibGljOgotICAgIFBhcmFtZXRlcihjb25z
dCBJZGVudGlmaWVyICZuKSA6IG5hbWUobiksIG5leHQoMEwpIHsgfQotICAgIH5QYXJhbWV0ZXIo
KSB7IGRlbGV0ZSBuZXh0OyB9CisgICAgUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIgJm4pIDog
bmFtZShuKSB7IH0KICAgICBJZGVudGlmaWVyIG5hbWU7Ci0gICAgUGFyYW1ldGVyICpuZXh0Owor
ICAgIE93blB0cjxQYXJhbWV0ZXI+IG5leHQ7CiAgIH07CiAKIEZ1bmN0aW9uSW1wOjpGdW5jdGlv
bkltcChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJm4pCkBAIC02NSw3ICs2NCw2
IEBACiAKIEZ1bmN0aW9uSW1wOjp+RnVuY3Rpb25JbXAoKQogewotICBkZWxldGUgcGFyYW07CiB9
CiAKIGJvb2wgRnVuY3Rpb25JbXA6OmltcGxlbWVudHNDYWxsKCkgY29uc3QKQEAgLTE0NSwyMiAr
MTQzLDIyIEBACiAKIHZvaWQgRnVuY3Rpb25JbXA6OmFkZFBhcmFtZXRlcihjb25zdCBJZGVudGlm
aWVyICZuKQogewotICBQYXJhbWV0ZXIgKipwID0gJnBhcmFtOworICBPd25QdHI8UGFyYW1ldGVy
PiAqcCA9ICZwYXJhbTsKICAgd2hpbGUgKCpwKQogICAgIHAgPSAmKCpwKS0+bmV4dDsKIAotICAq
cCA9IG5ldyBQYXJhbWV0ZXIobik7CisgIHAtPnNldChuZXcgUGFyYW1ldGVyKG4pKTsKIH0KIAog
VVN0cmluZyBGdW5jdGlvbkltcDo6cGFyYW1ldGVyU3RyaW5nKCkgY29uc3QKIHsKICAgVVN0cmlu
ZyBzOwotICBjb25zdCBQYXJhbWV0ZXIgKnAgPSBwYXJhbTsKKyAgY29uc3QgUGFyYW1ldGVyICpw
ID0gcGFyYW0uZ2V0KCk7CiAgIHdoaWxlIChwKSB7CiAgICAgaWYgKCFzLmlzRW1wdHkoKSkKICAg
ICAgICAgcyArPSAiLCAiOwogICAgIHMgKz0gcC0+bmFtZS51c3RyaW5nKCk7Ci0gICAgcCA9IHAt
Pm5leHQ7CisgICAgcCA9IHAtPm5leHQuZ2V0KCk7CiAgIH0KIAogICByZXR1cm4gczsKQEAgLTE4
MCw3ICsxNzgsNyBAQAogCiAgIGlmIChwYXJhbSkgewogICAgIExpc3RJdGVyYXRvciBpdCA9IGFy
Z3MuYmVnaW4oKTsKLSAgICBQYXJhbWV0ZXIgKnAgPSBwYXJhbTsKKyAgICBQYXJhbWV0ZXIgKnAg
PSBwYXJhbS5nZXQoKTsKICAgICBKU1ZhbHVlICAqdiA9ICppdDsKICAgICB3aGlsZSAocCkgewog
ICAgICAgaWYgKGl0ICE9IGFyZ3MuZW5kKCkpIHsKQEAgLTE5Miw3ICsxOTAsNyBAQAogCXYgPSAr
K2l0OwogICAgICAgfSBlbHNlCiAJdmFyaWFibGUtPnB1dChleGVjLCBwLT5uYW1lLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgIHAgPSBwLT5uZXh0OworICAgICAgcCA9IHAtPm5leHQuZ2V0KCk7CiAg
ICAgfQogICB9CiAjaWZkZWYgS0pTX1ZFUkJPU0UKQEAgLTIyMywxMSArMjIxLDExIEBACiBKU1Zh
bHVlICpGdW5jdGlvbkltcDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3Qg
Km9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgRnVuY3Rpb25JbXAgKnRoaXNPYmogPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkltcCAqPihzbG90LnNsb3RCYXNlKCkpOwotICBjb25zdCBQYXJhbWV0ZXIgKnAg
PSB0aGlzT2JqLT5wYXJhbTsKKyAgY29uc3QgUGFyYW1ldGVyICpwID0gdGhpc09iai0+cGFyYW0u
Z2V0KCk7CiAgIGludCBjb3VudCA9IDA7CiAgIHdoaWxlIChwKSB7CiAgICAgKytjb3VudDsKLSAg
ICBwID0gcC0+bmV4dDsKKyAgICBwID0gcC0+bmV4dC5nZXQoKTsKICAgfQogICByZXR1cm4ganNO
dW1iZXIoY291bnQpOwogfQpAQCAtMjczLDEzICsyNzEsMTMgQEAKIElkZW50aWZpZXIgRnVuY3Rp
b25JbXA6OmdldFBhcmFtZXRlck5hbWUoaW50IGluZGV4KQogewogICBpbnQgaSA9IDA7Ci0gIFBh
cmFtZXRlciAqcCA9IHBhcmFtOworICBQYXJhbWV0ZXIgKnAgPSBwYXJhbS5nZXQoKTsKICAgCiAg
IGlmKCFwKQogICAgIHJldHVybiBJZGVudGlmaWVyOjpudWxsKCk7CiAgIAogICAvLyBza2lwIHRv
IHRoZSBwYXJhbWV0ZXIgd2Ugd2FudAotICB3aGlsZSAoaSsrIDwgaW5kZXggJiYgKHAgPSBwLT5u
ZXh0KSkKKyAgd2hpbGUgKGkrKyA8IGluZGV4ICYmIChwID0gcC0+bmV4dC5nZXQoKSkpCiAgICAg
OwogICAKICAgaWYgKCFwKQpAQCAtMjg4LDcgKzI4Niw3IEBACiAgIElkZW50aWZpZXIgbmFtZSA9
IHAtPm5hbWU7CiAKICAgLy8gQXJlIHRoZXJlIGFueSBzdWJzZXF1ZW50IHBhcmFtZXRlcnMgd2l0
aCB0aGUgc2FtZSBuYW1lPwotICB3aGlsZSAoKHAgPSBwLT5uZXh0KSkKKyAgd2hpbGUgKChwID0g
cC0+bmV4dC5nZXQoKSkpCiAgICAgaWYgKHAtPm5hbWUgPT0gbmFtZSkKICAgICAgIHJldHVybiBJ
ZGVudGlmaWVyOjpudWxsKCk7CiAgIApJbmRleDoga2pzL3JlZ2V4cF9vYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBranMvcmVnZXhwX29iamVjdC5oCShyZXZpc2lvbiAxMjUxMykKKysrIGtqcy9yZWdl
eHBfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJp
bnRlcm5hbC5oIgogI2luY2x1ZGUgImZ1bmN0aW9uX29iamVjdC5oIgogI2luY2x1ZGUgInJlZ2V4
cC5oIgorI2luY2x1ZGUgPGt4bWxjb3JlL093bkFycmF5UHRyLmg+CiAKIG5hbWVzcGFjZSBLSlMg
ewogICBjbGFzcyBFeGVjU3RhdGU7CkBAIC03MSw3ICs3Miw2IEBACiAgICAgUmVnRXhwT2JqZWN0
SW1wKEV4ZWNTdGF0ZSAqZXhlYywKICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5
cGUgKmZ1bmNQcm90bywKICAgICAgICAgICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlICpyZWdQ
cm90byk7Ci0gICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0SW1wKCk7CiAgICAgdmlydHVhbCBib29s
IGltcGxlbWVudHNDb25zdHJ1Y3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTT2JqZWN0ICpjb25z
dHJ1Y3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBMaXN0ICZhcmdzKTsKICAgICB2aXJ0dWFsIGJv
b2wgaW1wbGVtZW50c0NhbGwoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAvLyBHbG9i
YWwgc2VhcmNoIGNhY2hlIC8gc2V0dGluZ3MKICAgICBib29sIG11bHRpbGluZTsKICAgICBVU3Ry
aW5nIGxhc3RJbnB1dDsKLSAgICBpbnQgKmxhc3RPdmVjdG9yOworICAgIE93bkFycmF5UHRyPGlu
dD4gbGFzdE92ZWN0b3I7CiAgICAgdW5zaWduZWQgbGFzdE51bVN1YlBhdHRlcm5zOwogICAgIAog
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKSW5kZXg6IGtqcy9wcm9wZXJ0eV9tYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvcHJvcGVydHlfbWFwLmgJKHJldmlzaW9uIDEyNTEzKQorKysg
a2pzL3Byb3BlcnR5X21hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLy8gLSot
IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLQogLyoKICAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIGxpYnJhcmllcwotICogIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5j
LgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDEwICsyMCwxMSBAQAogICoKICAqLwogCi0j
aWZuZGVmIF9LSlNfUFJPUEVSVFlfTUFQX0hfCi0jZGVmaW5lIF9LSlNfUFJPUEVSVFlfTUFQX0hf
CisjaWZuZGVmIEtKU19QUk9QRVJUWV9NQVBfSF8KKyNkZWZpbmUgS0pTX1BST1BFUlRZX01BUF9I
XwogCiAjaW5jbHVkZSAiaWRlbnRpZmllci5oIgorI2luY2x1ZGUgPGt4bWxjb3JlL093bkFycmF5
UHRyLmg+CiAKIG5hbWVzcGFjZSBLSlMgewogCkBAIC00NiwxMCArNDcsNyBAQAogICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBpbnQgX2NvdW50OwotICAgICAgICBTYXZlZFByb3BlcnR5
ICpfcHJvcGVydGllczsKLSAgICAgICAgCi0gICAgICAgIFNhdmVkUHJvcGVydGllcyhjb25zdCBT
YXZlZFByb3BlcnRpZXMmKTsKLSAgICAgICAgU2F2ZWRQcm9wZXJ0aWVzJiBvcGVyYXRvcj0oY29u
c3QgU2F2ZWRQcm9wZXJ0aWVzJik7CisgICAgICAgIE93bkFycmF5UHRyPFNhdmVkUHJvcGVydHk+
IF9wcm9wZXJ0aWVzOwogICAgIH07CiAgICAgCiAvKioKQEAgLTY0LDEwICs2MiwxMCBAQAogICAg
ICAgICBzaG9ydCBnbG9iYWxHZXR0ZXJTZXR0ZXJGbGFnOwogICAgICAgICBpbnQgaW5kZXg7CiAg
ICAgfTsKKwogLyoqCiAqIEphdmFzY3JpcHQgUHJvcGVydHkgTWFwLgogKi8KLQogICAgIGNsYXNz
IFByb3BlcnR5TWFwIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFByb3BlcnR5TWFwKCk7CkluZGV4
OiBranMvbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2xpc3QuY3BwCShyZXZpc2lvbiAxMjUx
MykKKysrIGtqcy9saXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAj
aW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8a3ht
bGNvcmUvT3duQXJyYXlQdHIuaD4KIAogI2RlZmluZSBEVU1QX1NUQVRJU1RJQ1MgMAogCkBAIC00
MSw3ICs0Miw3IEBACiB7CiAgICAgTGlzdEltcFN0YXRlIHN0YXRlOwogICAgIGludCBjYXBhY2l0
eTsKLSAgICBKU1ZhbHVlICoqb3ZlcmZsb3c7CisgICAgT3duQXJyYXlQdHI8SlNWYWx1ZSo+IG92
ZXJmbG93OwogCiAgICAgdW5pb24gewogICAgICAgICBKU1ZhbHVlICp2YWx1ZXNbaW5saW5lVmFs
dWVzU2l6ZV07CkBAIC0xNzAsNyArMTcxLDYgQEAKICAgICBpbXAtPnJlZkNvdW50ID0gMTsKICAg
ICBpbXAtPnZhbHVlUmVmQ291bnQgPSAxOwogICAgIGltcC0+Y2FwYWNpdHkgPSAwOwotICAgIGlt
cC0+b3ZlcmZsb3cgPSAwOwogI2lmIERVTVBfU1RBVElTVElDUwogICAgIGlmICgrK251bUxpc3Rz
ID4gbnVtTGlzdHNIaWdoV2F0ZXJNYXJrKQogICAgICAgICBudW1MaXN0c0hpZ2hXYXRlck1hcmsg
PSBudW1MaXN0czsKQEAgLTE4NSw3ICsxODUsNiBAQAogICAgIGltcC0+cmVmQ291bnQgPSAxOwog
ICAgIGltcC0+dmFsdWVSZWZDb3VudCA9ICFuZWVkc01hcmtpbmc7CiAgICAgaW1wLT5jYXBhY2l0
eSA9IDA7Ci0gICAgaW1wLT5vdmVyZmxvdyA9IDA7CiAKICNpZiBEVU1QX1NUQVRJU1RJQ1MKICAg
ICBpZiAoKytudW1MaXN0cyA+IG51bUxpc3RzSGlnaFdhdGVyTWFyaykKQEAgLTIxMSw3ICsyMTAs
NyBAQAogICAgICAgICAgICAgKytudW1MaXN0c0JpZ2dlclRoYW5baV07CiAjZW5kaWYKIAotICAg
IGRlbGV0ZSBbXSBpbXAtPm92ZXJmbG93OworICAgIGltcC0+b3ZlcmZsb3cuY2xlYXIoKTsKIAog
ICAgIGlmIChpbXAtPnN0YXRlID09IHVzZWRJblBvb2wpIHsKICAgICAgICAgaW1wLT5zdGF0ZSA9
IHVudXNlZEluUG9vbDsKQEAgLTI3MiwxMyArMjcxLDEyIEBACiAgICAgCiAgICAgaWYgKGkgPj0g
aW1wLT5jYXBhY2l0eSkgewogICAgICAgICBpbnQgbmV3Q2FwYWNpdHkgPSBpICogMjsKLSAgICAg
ICAgSlNWYWx1ZSAqKm5ld092ZXJmbG93ID0gbmV3IEpTVmFsdWUgKiBbbmV3Q2FwYWNpdHkgLSBp
bmxpbmVWYWx1ZXNTaXplXTsKLSAgICAgICAgSlNWYWx1ZSAqKm9sZE92ZXJmbG93ID0gaW1wLT5v
dmVyZmxvdzsKKyAgICAgICAgT3duQXJyYXlQdHI8SlNWYWx1ZSo+IG5ld092ZXJmbG93KG5ldyBK
U1ZhbHVlKiBbbmV3Q2FwYWNpdHkgLSBpbmxpbmVWYWx1ZXNTaXplXSk7CisgICAgICAgIEpTVmFs
dWUqKiBvbGRPdmVyZmxvdyA9IGltcC0+b3ZlcmZsb3cuZ2V0KCk7CiAgICAgICAgIGludCBvbGRP
dmVyZmxvd1NpemUgPSBpIC0gaW5saW5lVmFsdWVzU2l6ZTsKICAgICAgICAgZm9yIChpbnQgaiA9
IDA7IGogIT0gb2xkT3ZlcmZsb3dTaXplOyBqKyspCiAgICAgICAgICAgICBuZXdPdmVyZmxvd1tq
XSA9IG9sZE92ZXJmbG93W2pdOwotICAgICAgICBkZWxldGUgW10gb2xkT3ZlcmZsb3c7Ci0gICAg
ICAgIGltcC0+b3ZlcmZsb3cgPSBuZXdPdmVyZmxvdzsKKyAgICAgICAgaW1wLT5vdmVyZmxvdy5z
d2FwKG5ld092ZXJmbG93KTsKICAgICAgICAgaW1wLT5jYXBhY2l0eSA9IG5ld0NhcGFjaXR5Owog
ICAgIH0KICAgICAKQEAgLTMwMiw3ICszMDAsNyBAQAogICAgIGZvciAoaW50IGkgPSAwOyBpICE9
IGlubGluZVNpemU7ICsraSkKICAgICAgICAgYXBwZW5kKGltcC0+dmFsdWVzW2ldKTsKIAotICAg
IEpTVmFsdWUgKipvdmVyZmxvdyA9IGltcC0+b3ZlcmZsb3c7CisgICAgSlNWYWx1ZSoqIG92ZXJm
bG93ID0gaW1wLT5vdmVyZmxvdy5nZXQoKTsKICAgICBpbnQgb3ZlcmZsb3dTaXplID0gc2l6ZSAt
IGlubGluZVNpemU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gb3ZlcmZsb3dTaXplOyArK2kp
CiAgICAgICAgIGFwcGVuZChvdmVyZmxvd1tpXSk7CkBAIC0zMjEsNyArMzE5LDcgQEAKICAgICBm
b3IgKGludCBpID0gMTsgaSA8IGlubGluZVNpemU7ICsraSkKICAgICAgICAgY29weS5hcHBlbmQo
aW1wLT52YWx1ZXNbaV0pOwogCi0gICAgSlNWYWx1ZSAqKm92ZXJmbG93ID0gaW1wLT5vdmVyZmxv
dzsKKyAgICBKU1ZhbHVlKiogb3ZlcmZsb3cgPSBpbXAtPm92ZXJmbG93LmdldCgpOwogICAgIGlu
dCBvdmVyZmxvd1NpemUgPSBzaXplIC0gaW5saW5lU2l6ZTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG92ZXJmbG93U2l6ZTsgKytpKQogICAgICAgICBjb3B5LmFwcGVuZChvdmVyZmxvd1tpXSk7
CkluZGV4OiBranMvcHJvcGVydHlfbWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvcHJvcGVydHlf
bWFwLmNwcAkocmV2aXNpb24gMTI1MTMpCisrKyBranMvcHJvcGVydHlfbWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBsaWJyYXJpZXMKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwxMiArMjIsMTIgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJwcm9wZXJ0eV9tYXAuaCIKIAotI2luY2x1ZGUgPGt4bWxjb3Jl
L0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlICJvYmplY3QuaCIKICNpbmNsdWRlICJwcm90ZWN0Lmgi
CiAjaW5jbHVkZSAicmVmZXJlbmNlX2xpc3QuaCIKLQogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxreG1sY29yZS9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8a3htbGNvcmUvVmVjdG9y
Lmg+CiAKIHVzaW5nIHN0ZDo6bWF4OwogCkBAIC05NiwxMSArOTYsNiBAQAogCiBTYXZlZFByb3Bl
cnRpZXM6OlNhdmVkUHJvcGVydGllcygpIDogX2NvdW50KDApLCBfcHJvcGVydGllcygwKSB7IH0K
IAotU2F2ZWRQcm9wZXJ0aWVzOjp+U2F2ZWRQcm9wZXJ0aWVzKCkKLXsKLSAgICBkZWxldGUgW10g
X3Byb3BlcnRpZXM7Ci19Ci0KIC8vIEFsZ29yaXRobSBjb25jZXB0cyBmcm9tIEFsZ29yaXRobXMg
aW4gQysrLCBTZWRnZXdpY2suCiAKIFByb3BlcnR5TWFwOjp+UHJvcGVydHlNYXAoKQpAQCAtNTk3
LDM0ICs1OTIsMjQgQEAKICAgICB9CiAKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciB0byB1c2Ug
dG8gc29ydCB0aGUga2V5cy4KLSAgICBFbnRyeSAqZml4ZWRTaXplQnVmZmVyW3NtYWxsTWFwVGhy
ZXNob2xkXTsKLSAgICBFbnRyeSAqKnNvcnRlZEVudW1lcmFibGVzOwotICAgIGlmIChfdGFibGUt
PmtleUNvdW50IDw9IHNtYWxsTWFwVGhyZXNob2xkKQotICAgICAgICBzb3J0ZWRFbnVtZXJhYmxl
cyA9IGZpeGVkU2l6ZUJ1ZmZlcjsKLSAgICBlbHNlCi0gICAgICAgIHNvcnRlZEVudW1lcmFibGVz
ID0gbmV3IEVudHJ5ICpbX3RhYmxlLT5rZXlDb3VudF07CisgICAgVmVjdG9yPEVudHJ5Kiwgc21h
bGxNYXBUaHJlc2hvbGQ+IHNvcnRlZEVudW1lcmFibGVzKF90YWJsZS0+a2V5Q291bnQpOwogCiAg
ICAgLy8gR2V0IHBvaW50ZXJzIHRvIHRoZSBlbnVtZXJhYmxlIGVudHJpZXMgaW4gdGhlIGJ1ZmZl
ci4KLSAgICBFbnRyeSAqKnAgPSBzb3J0ZWRFbnVtZXJhYmxlczsKKyAgICBFbnRyeSoqIHAgPSBz
b3J0ZWRFbnVtZXJhYmxlcy5kYXRhKCk7CiAgICAgaW50IHNpemUgPSBfdGFibGUtPnNpemU7Ci0g
ICAgRW50cnkgKmVudHJpZXMgPSBfdGFibGUtPmVudHJpZXM7CisgICAgRW50cnkqIGVudHJpZXMg
PSBfdGFibGUtPmVudHJpZXM7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gc2l6ZTsgKytpKSB7
Ci0gICAgICAgIEVudHJ5ICplID0gJmVudHJpZXNbaV07CisgICAgICAgIEVudHJ5KiBlID0gJmVu
dHJpZXNbaV07CiAgICAgICAgIGlmIChlLT5rZXkgJiYgIShlLT5hdHRyaWJ1dGVzICYgRG9udEVu
dW0pKQogICAgICAgICAgICAgKnArKyA9IGU7CiAgICAgfQogCiAgICAgLy8gU29ydCB0aGUgZW50
cmllcyBieSBpbmRleC4KLSAgICBxc29ydChzb3J0ZWRFbnVtZXJhYmxlcywgcCAtIHNvcnRlZEVu
dW1lcmFibGVzLCBzaXplb2Yoc29ydGVkRW51bWVyYWJsZXNbMF0pLCBjb21wYXJlUHJvcGVydHlN
YXBFbnRyeUluZGljZXMpOworICAgIHFzb3J0KHNvcnRlZEVudW1lcmFibGVzLmRhdGEoKSwgcCAt
IHNvcnRlZEVudW1lcmFibGVzLmRhdGEoKSwgc2l6ZW9mKEVudHJ5KiksIGNvbXBhcmVQcm9wZXJ0
eU1hcEVudHJ5SW5kaWNlcyk7CiAKICAgICAvLyBQdXQgdGhlIGtleXMgb2YgdGhlIHNvcnRlZCBl
bnRyaWVzIGludG8gdGhlIHJlZmVyZW5jZSBsaXN0LgotICAgIEVudHJ5ICoqcSA9IHNvcnRlZEVu
dW1lcmFibGVzOwotICAgIHdoaWxlIChxICE9IHApCi0gICAgICAgIGxpc3QuYXBwZW5kKFJlZmVy
ZW5jZShiYXNlLCBJZGVudGlmaWVyKCgqcSsrKS0+a2V5KSkpOwotCi0gICAgLy8gRGVhbGxvY2F0
ZSB0aGUgYnVmZmVyLgotICAgIGlmIChzb3J0ZWRFbnVtZXJhYmxlcyAhPSBmaXhlZFNpemVCdWZm
ZXIpCi0gICAgICAgIGRlbGV0ZSBbXSBzb3J0ZWRFbnVtZXJhYmxlczsKKyAgICBmb3IgKEVudHJ5
KiogcSA9IHNvcnRlZEVudW1lcmFibGVzLmRhdGEoKTsgcSAhPSBwOyArK3EpCisgICAgICAgIGxp
c3QuYXBwZW5kKFJlZmVyZW5jZShiYXNlLCBJZGVudGlmaWVyKCgqcSktPmtleSkpKTsKIH0KIAog
dm9pZCBQcm9wZXJ0eU1hcDo6YWRkU3BhcnNlQXJyYXlQcm9wZXJ0aWVzVG9SZWZlcmVuY2VMaXN0
KFJlZmVyZW5jZUxpc3QgJmxpc3QsIEpTT2JqZWN0ICpiYXNlKSBjb25zdApAQCAtNjc0LDE4ICs2
NTksMTUgQEAKICAgICAgICAgICAgICAgICArK2NvdW50OwogICAgIH0KIAotICAgIGRlbGV0ZSBb
XSBwLl9wcm9wZXJ0aWVzOwotCisgICAgcC5fcHJvcGVydGllcy5jbGVhcigpOwogICAgIHAuX2Nv
dW50ID0gY291bnQ7CiAKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICBwLl9wcm9wZXJ0
aWVzID0gMDsKKyAgICBpZiAoY291bnQgPT0gMCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICAKLSAgICBwLl9wcm9wZXJ0aWVzID0gbmV3IFNhdmVkUHJvcGVydHkgW2NvdW50XTsKKyAgICBw
Ll9wcm9wZXJ0aWVzLnNldChuZXcgU2F2ZWRQcm9wZXJ0eSBbY291bnRdKTsKICAgICAKLSAgICBT
YXZlZFByb3BlcnR5ICpwcm9wID0gcC5fcHJvcGVydGllczsKKyAgICBTYXZlZFByb3BlcnR5ICpw
cm9wID0gcC5fcHJvcGVydGllcy5nZXQoKTsKICAgICAKICAgICBpZiAoIV90YWJsZSkgewogI2lm
IFVTRV9TSU5HTEVfRU5UUlkKQEAgLTcwMSw0MCArNjgzLDI5IEBACiAgICAgICAgIC8vIEFub3Ro
ZXIgcG9zc2liaWxpdHkgd291bGQgYmUgdG8gc2F2ZSB0aGUgaW5kaWNlcy4KIAogICAgICAgICAv
LyBBbGxvY2F0ZSBhIGJ1ZmZlciB0byB1c2UgdG8gc29ydCB0aGUga2V5cy4KLSAgICAgICAgRW50
cnkgKmZpeGVkU2l6ZUJ1ZmZlcltzbWFsbE1hcFRocmVzaG9sZF07Ci0gICAgICAgIEVudHJ5ICoq
c29ydGVkRW50cmllczsKLSAgICAgICAgaWYgKGNvdW50IDw9IHNtYWxsTWFwVGhyZXNob2xkKQot
ICAgICAgICAgICAgc29ydGVkRW50cmllcyA9IGZpeGVkU2l6ZUJ1ZmZlcjsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgc29ydGVkRW50cmllcyA9IG5ldyBFbnRyeSAqW2NvdW50XTsKKyAgICAg
ICAgVmVjdG9yPEVudHJ5Kiwgc21hbGxNYXBUaHJlc2hvbGQ+IHNvcnRlZEVudHJpZXMoY291bnQp
OwogCiAgICAgICAgIC8vIEdldCBwb2ludGVycyB0byB0aGUgZW50cmllcyBpbiB0aGUgYnVmZmVy
LgotICAgICAgICBFbnRyeSAqKnAgPSBzb3J0ZWRFbnRyaWVzOworICAgICAgICBFbnRyeSoqIHAg
PSBzb3J0ZWRFbnRyaWVzLmRhdGEoKTsKICAgICAgICAgaW50IHNpemUgPSBfdGFibGUtPnNpemU7
Ci0gICAgICAgIEVudHJ5ICplbnRyaWVzID0gX3RhYmxlLT5lbnRyaWVzOworICAgICAgICBFbnRy
eSogZW50cmllcyA9IF90YWJsZS0+ZW50cmllczsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
IT0gc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBFbnRyeSAqZSA9ICZlbnRyaWVzW2ldOwogICAg
ICAgICAgICAgaWYgKGUtPmtleSAmJiAhKGUtPmF0dHJpYnV0ZXMgJiAoUmVhZE9ubHkgfCBGdW5j
dGlvbikpKQogICAgICAgICAgICAgICAgICpwKysgPSBlOwogICAgICAgICB9Ci0gICAgICAgIGFz
c2VydChwIC0gc29ydGVkRW50cmllcyA9PSBjb3VudCk7CisgICAgICAgIGFzc2VydChwIC0gc29y
dGVkRW50cmllcy5kYXRhKCkgPT0gY291bnQpOwogCiAgICAgICAgIC8vIFNvcnQgdGhlIGVudHJp
ZXMgYnkgaW5kZXguCi0gICAgICAgIHFzb3J0KHNvcnRlZEVudHJpZXMsIHAgLSBzb3J0ZWRFbnRy
aWVzLCBzaXplb2Yoc29ydGVkRW50cmllc1swXSksIGNvbXBhcmVQcm9wZXJ0eU1hcEVudHJ5SW5k
aWNlcyk7CisgICAgICAgIHFzb3J0KHNvcnRlZEVudHJpZXMuZGF0YSgpLCBwIC0gc29ydGVkRW50
cmllcy5kYXRhKCksIHNpemVvZihFbnRyeSopLCBjb21wYXJlUHJvcGVydHlNYXBFbnRyeUluZGlj
ZXMpOwogCiAgICAgICAgIC8vIFB1dCB0aGUgc29ydGVkIGVudHJpZXMgaW50byB0aGUgc2F2ZWQg
cHJvcGVydGllcyBsaXN0LgotICAgICAgICBFbnRyeSAqKnEgPSBzb3J0ZWRFbnRyaWVzOwotICAg
ICAgICB3aGlsZSAocSAhPSBwKSB7Ci0gICAgICAgICAgICBFbnRyeSAqZSA9ICpxKys7CisgICAg
ICAgIGZvciAoRW50cnkqKiBxID0gc29ydGVkRW50cmllcy5kYXRhKCk7IHEgIT0gcDsgKytxLCAr
K3Byb3ApIHsKKyAgICAgICAgICAgIEVudHJ5KiBlID0gKnE7CiAgICAgICAgICAgICBwcm9wLT5r
ZXkgPSBJZGVudGlmaWVyKGUtPmtleSk7CiAgICAgICAgICAgICBwcm9wLT52YWx1ZSA9IGUtPnZh
bHVlOwogICAgICAgICAgICAgcHJvcC0+YXR0cmlidXRlcyA9IGUtPmF0dHJpYnV0ZXM7Ci0gICAg
ICAgICAgICArK3Byb3A7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBEZWFsbG9jYXRlIHRoZSBi
dWZmZXIuCi0gICAgICAgIGlmIChzb3J0ZWRFbnRyaWVzICE9IGZpeGVkU2l6ZUJ1ZmZlcikKLSAg
ICAgICAgICAgIGRlbGV0ZSBbXSBzb3J0ZWRFbnRyaWVzOwogICAgIH0KIH0KIApJbmRleDoga2pz
L2ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2ludGVycHJldGVyLmgJKHJldmlzaW9u
IDEyNTEzKQorKysga2pzL2ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3
IEBACiAgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdo
dCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDEx
ICsyMSwxMiBAQAogICoKICAqLwogCi0jaWZuZGVmIF9LSlNfSU5URVJQUkVURVJfSF8KLSNkZWZp
bmUgX0tKU19JTlRFUlBSRVRFUl9IXworI2lmbmRlZiBLSlNfSU5URVJQUkVURVJfSF8KKyNkZWZp
bmUgS0pTX0lOVEVSUFJFVEVSX0hfCiAKLSNpbmNsdWRlICJ2YWx1ZS5oIgogI2luY2x1ZGUgInR5
cGVzLmgiCisjaW5jbHVkZSAidmFsdWUuaCIKKyNpbmNsdWRlIDxreG1sY29yZS9Pd25QdHIuaD4K
IAogbmFtZXNwYWNlIEtKUyB7CiAKQEAgLTEyMCwxMSArMTIxLDggQEAKIAogICBjbGFzcyBTYXZl
ZEJ1aWx0aW5zIHsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXJJbXA7Ci0gIHB1YmxpYzoK
LSAgICBTYXZlZEJ1aWx0aW5zKCk7Ci0gICAgflNhdmVkQnVpbHRpbnMoKTsKICAgcHJpdmF0ZToK
LSAgICBTYXZlZEJ1aWx0aW5zSW50ZXJuYWwgKl9pbnRlcm5hbDsKKyAgICBPd25QdHI8U2F2ZWRC
dWlsdGluc0ludGVybmFsPiBfaW50ZXJuYWw7CiAgIH07CiAKICAgLyoqCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNTEzKQorKysgSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTIsNiArNTIsOSBAQAogCQk2NUUyMTdDMDA4RTdFRUNDMDAyM0U1RjYgLyogRmFzdE1hbGxvYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMjE3QkEw
OEU3RUVDQzAwMjNFNUY2IC8qIEZhc3RNYWxsb2MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUVBNEM5QjA5MkFGOUUyMDA5M0Q4MDAgLyogSlNM
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
RUE0Qzk5MDkyQUY5RTIwMDkzRDgwMCAvKiBKU0xvY2suY3BwICovOyB9OwogCQk2NUVBNEM5QzA5
MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUVBNEM5QTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMwM0Y1Njgw
OTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMwM0Y1NjcwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oICov
OyB9OworCQk5MzAzRjU2QTA5OTExOTAwMDBBRDcxQjggLyogTm9uY29weWFibGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDNGNTY5MDk5MTE5MDAw
MEFENzFCOCAvKiBOb25jb3B5YWJsZS5oICovOyB9OworCQk5MzAzRjVBNTA5OTExQTU4MDBBRDcx
QjggLyogT3duQXJyYXlQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMDNGNUE0MDk5MTFBNTgwMEFENzFCOCAvKiBPd25BcnJheVB0ci5oICovOyB9
OwogCQk5MzA3NTRDMTA4QjBGNjgwMDBBQjMwNTYgLyogcGNyZV9jb21waWxlLmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA3NTRCRjA4QjBGNjgwMDBB
QjMwNTYgLyogcGNyZV9jb21waWxlLmMgKi87IH07CiAJCTkzMDc1NEQwMDhCMEY3NDYwMEFCMzA1
NiAvKiBwY3JlX3RhYmxlcy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMwNzU0Q0UwOEIwRjc0NTAwQUIzMDU2IC8qIHBjcmVfdGFibGVzLmMgKi87IH07
CiAJCTkzMDc1NEQzMDhCMEY3NjMwMEFCMzA1NiAvKiBwY3JlX2dsb2JhbHMuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDc1NEQxMDhCMEY3NjIwMEFC
MzA1NiAvKiBwY3JlX2dsb2JhbHMuYyAqLzsgfTsKQEAgLTM3MCw2ICszNzMsOSBAQAogCQk3MEIx
NkEyNzA1NjlBMTA5MDBEQjc1NkQgLyogcnVudGltZV9vYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9vYmplY3QuaDsgcGF0
aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKIAkJODQ0MkEzNzYwNzQxNzVDMjAwMEFFMkVEIC8qIHNvZnRsaW5raW5n
LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gc29m
dGxpbmtpbmcuYzsgcGF0aCA9IGJpbmRpbmdzL3NvZnRsaW5raW5nLmM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJODRBQkYxREUwNzBCNjI4QzAwQTNBQzA1IC8q
IG5wcnVudGltZV9pbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gbnBydW50aW1lX2ltcGwuaDsgcGF0aCA9IGJpbmRpbmdzL25wcnVudGltZV9p
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJOTMwM0Y1
NjcwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPd25QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMwM0Y1Njkw
OTkxMTkwMDAwQUQ3MUI4IC8qIE5vbmNvcHlhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5vbmNvcHlhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
MDNGNUE0MDk5MTFBNTgwMEFENzFCOCAvKiBPd25BcnJheVB0ci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPd25BcnJheVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzA3NTRCRjA4QjBGNjgwMDBBQjMwNTYgLyogcGNyZV9jb21waWxlLmMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHBjcmVfY29tcGlsZS5j
OyBwYXRoID0gcGNyZS9wY3JlX2NvbXBpbGUuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwogCQk5MzA3NTRDRTA4QjBGNzQ1MDBBQjMwNTYgLyogcGNyZV90YWJsZXMu
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gcGNy
ZV90YWJsZXMuYzsgcGF0aCA9IHBjcmUvcGNyZV90YWJsZXMuYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk5MzA3NTREMTA4QjBGNzYyMDBBQjMwNTYgLyogcGNy
ZV9nbG9iYWxzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsg
bmFtZSA9IHBjcmVfZ2xvYmFscy5jOyBwYXRoID0gcGNyZS9wY3JlX2dsb2JhbHMuYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwpAQCAtNjY4LDYgKzY3NCw5IEBACiAJ
CTY1MTYyRUYxMDhFNkEyMUMwMDc1NTZDRCAvKiBreG1sY29yZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTMwM0Y1NjkwOTkxMTkwMDAwQUQ3MUI4IC8q
IE5vbmNvcHlhYmxlLmggKi8sCisJCQkJOTMwM0Y1NjcwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0
ci5oICovLAorCQkJCTkzMDNGNUE0MDk5MTFBNTgwMEFENzFCOCAvKiBPd25BcnJheVB0ci5oICov
LAogCQkJCTY1OTJDMzE2MDk4QjdERTEwMDAzRDRGNiAvKiBWZWN0b3IuaCAqLywKIAkJCQk2NTky
QzMxNzA5OEI3REUxMDAwM0Q0RjYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJNjU3RUVCQkYw
OTRFNDQ1RTAwOEM5QzdCIC8qIEhhc2hDb3VudGVkU2V0LmggKi8sCkBAIC04NjQsNiArODczLDkg
QEAKIAkJCQkxNDhBMTYyNzA5NUQxNkJCMDA2NjZEMEQgLyogTGlzdFJlZlB0ci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjU5MkMzMTgwOThCN0RFMTAwMDNENEY2IC8qIFZlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjU5MkMzMTkwOThCN0RFMTAwMDNENEY2IC8qIFZlY3RvclRyYWl0cy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTMwM0Y1NjgwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTMwM0Y1NkEwOTkxMTkwMDAwQUQ3MUI4IC8qIE5vbmNvcHlhYmxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzAzRjVBNTA5OTExQTU4MDBBRDcxQjggLyogT3duQXJy
YXlQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>
<flag name="review"
          id="1489"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>