<?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>8227</bug_id>
          
          <creation_ts>2006-04-06 20:12:52 -0700</creation_ts>
          <short_desc>Convert Element JS bindings to be almost completely autogenerated</short_desc>
          <delta_ts>2019-02-06 09:02:36 -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>DOM</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38731</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-06 20:12:52 -0700</bug_when>
    <thetext>I have a patch that autogenerates all of the bindings for Element from IDL except for the weird fallback behavior for markup attributes, which I think we should probably remove eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38735</commentid>
    <comment_count>1</comment_count>
      <attachid>7553</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-07 00:22:52 -0700</bug_when>
    <thetext>Created attachment 7553
patch to autogenerate the rest of Element from IDL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38736</commentid>
    <comment_count>2</comment_count>
      <attachid>7553</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-04-07 00:27:58 -0700</bug_when>
    <thetext>Comment on attachment 7553
patch to autogenerate the rest of Element from IDL

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38737</commentid>
    <comment_count>3</comment_count>
      <attachid>7553</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-04-07 00:34:10 -0700</bug_when>
    <thetext>Comment on attachment 7553
patch to autogenerate the rest of Element from IDL

Looks good to me.  r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502807</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:02:36 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7553</attachid>
            <date>2006-04-07 00:22:52 -0700</date>
            <delta_ts>2006-04-07 00:27:58 -0700</delta_ts>
            <desc>patch to autogenerate the rest of Element from IDL</desc>
            <filename>autogen-element.patch.txt</filename>
            <type>text/plain</type>
            <size>30946</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNzI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDYtMDQtMDcgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0IGNhc2UgZm9yIGluY2lkZW50YWwgZml4IGZyb20gdGhpcyBj
aGFuZ2U6CisgICAgICAgIAorICAgICAgICAtIENvbnZlcnQgRWxlbWVudCBKUyBiaW5kaW5ncyB0
byBiZSBhbG1vc3QgY29tcGxldGVseSBhdXRvZ2VuZXJhdGVkCisgICAgICAgIGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIyNworCisgICAgICAgICogZmFz
dC9kb20vRWxlbWVudC9kaW1lbnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9kaW1lbnNpb24tcHJvcGVydGll
cy11bnJlbmRlcmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvcmVz
b3VyY2VzL2RpbWVuc2lvbi1wcm9wZXJ0aWVzLXVucmVuZGVyZWQuanM6IEFkZGVkLgorCiAyMDA2
LTA0LTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZGltZW5zaW9u
LXByb3BlcnRpZXMtdW5yZW5kZXJlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vRWxlbWVudC9kaW1lbnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQv
ZGltZW5zaW9uLXByb3BlcnRpZXMtdW5yZW5kZXJlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIHNjcm9sbCwgY2xpZW50IGFu
ZCBvZmZzZXQgZGltZW5zaW9uIHByb3BlcnRpZXMgcmV0dXJuICIwIiBpbnN0ZWFkIG9mIHVuZGVm
aW5lZCBmb3IgYW4gdW5yZW5kZXJlZCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyB0ZXN0RGl2Lm9mZnNldExlZnQgaXMgMAorUEFTUyB0ZXN0RGl2Lm9mZnNl
dFRvcCBpcyAwCitQQVNTIHRlc3REaXYub2Zmc2V0V2lkdGggaXMgMAorUEFTUyB0ZXN0RGl2Lm9m
ZnNldEhlaWdodCBpcyAwCitQQVNTIHRlc3REaXYuY2xpZW50V2lkdGggaXMgMAorUEFTUyB0ZXN0
RGl2LmNsaWVudEhlaWdodCBpcyAwCitQQVNTIHRlc3REaXYuc2Nyb2xsTGVmdCBpcyAwCitQQVNT
IHRlc3REaXYuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgdGVzdERpdi5zY3JvbGxXaWR0aCBpcyAwCitQ
QVNTIHRlc3REaXYuc2Nyb2xsSGVpZ2h0IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVt
ZW50L3Jlc291cmNlcy9kaW1lbnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvcmVzb3VyY2VzL2RpbWVuc2lvbi1w
cm9wZXJ0aWVzLXVucmVuZGVyZWQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9FbGVtZW50L3Jlc291cmNlcy9kaW1lbnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3Qg
Y2hlY2tzIHRoZSBzY3JvbGwsIGNsaWVudCBhbmQgb2Zmc2V0IGRpbWVuc2lvbiBwcm9wZXJ0aWVz
IHJldHVybiAiMCIgaW5zdGVhZCBvZiB1bmRlZmluZWQgZm9yIGFuIHVucmVuZGVyZWQgZWxlbWVu
dC4gPGRpdiBpZD0idGVzdERpdiIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPng8L2Rpdj4nCispOwor
Cit2YXIgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7CitzaG91
bGRCZSgidGVzdERpdi5vZmZzZXRMZWZ0IiwgIjAiKTsKK3Nob3VsZEJlKCJ0ZXN0RGl2Lm9mZnNl
dFRvcCIsICIwIik7CitzaG91bGRCZSgidGVzdERpdi5vZmZzZXRXaWR0aCIsICIwIik7CitzaG91
bGRCZSgidGVzdERpdi5vZmZzZXRIZWlnaHQiLCAiMCIpOworc2hvdWxkQmUoInRlc3REaXYuY2xp
ZW50V2lkdGgiLCAiMCIpOworc2hvdWxkQmUoInRlc3REaXYuY2xpZW50SGVpZ2h0IiwgIjAiKTsK
K3Nob3VsZEJlKCJ0ZXN0RGl2LnNjcm9sbExlZnQiLCAiMCIpOworc2hvdWxkQmUoInRlc3REaXYu
c2Nyb2xsVG9wIiwgIjAiKTsKK3Nob3VsZEJlKCJ0ZXN0RGl2LnNjcm9sbFdpZHRoIiwgIjAiKTsK
K3Nob3VsZEJlKCJ0ZXN0RGl2LnNjcm9sbEhlaWdodCIsICIwIik7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9kaW1l
bnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vRWxlbWVudC9kaW1lbnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2RpbWVuc2lvbi1w
cm9wZXJ0aWVzLXVucmVuZGVyZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9k
aW1lbnNpb24tcHJvcGVydGllcy11bnJlbmRlcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTM3
MTQpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTUsMTMgKzI1NSwyMCBAQCBKU1ZhbHVlICpqc1N0cmluZ09yRmFsc2UoY29uc3QgU3Ry
aW5nICZzCiAgICAgcmV0dXJuIGpzU3RyaW5nKHMpOwogfQogCi1TdHJpbmcgdmFsdWVUb1N0cmlu
Z1dpdGhOdWxsQ2hlY2soRXhlY1N0YXRlICpleGVjLCBKU1ZhbHVlICp2YWwpCitTdHJpbmcgdmFs
dWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWwpCiB7
CiAgICAgaWYgKHZhbC0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBy
ZXR1cm4gdmFsLT50b1N0cmluZyhleGVjKTsKIH0KIAorYm9vbCB2YWx1ZVRvQm9vbGVhblRyZWF0
VW5kZWZpbmVkQXNUcnVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsKQoreworICAgIGlm
ICh2YWwtPmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB2
YWwtPnRvQm9vbGVhbihleGVjKTsKK30KKwogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBleGNl
cHRpb25OYW1lc1tdID0gewogICAgIDAsCiAgICAgIklOREVYX1NJWkVfRVJSIiwKSW5kZXg6IFdl
YkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1s
L2VjbWEva2pzX2RvbS5jcHAJKHJldmlzaW9uIDEzNzE0KQorKysgV2ViQ29yZS9raHRtbC9lY21h
L2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsMTMgKzgwNCw3IEBAIEF0dHIqIHRv
QXR0cihKU1ZhbHVlKiB2YWwsIGJvb2wmIG9rKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvKiBT
b3VyY2UgZm9yIERPTUVsZW1lbnRQcm90b1RhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8g
cmVnZW5lcmF0ZS4KLUBiZWdpbiBET01FbGVtZW50UHJvdG9UYWJsZSA4Ci0gIHNjcm9sbEludG9W
aWV3ICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6OlNjcm9sbEludG9WaWV3ICAgICAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCi0gIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgICAgICAgIERPTUVsZW1l
bnQ6OlNjcm9sbEludG9WaWV3SWZOZWVkZWQgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLQot
IyBleHRlbnNpb24gZm9yIFNhZmFyaSBSU1MKLSAgc2Nyb2xsQnlMaW5lcyAgICAgICAgIERPTUVs
ZW1lbnQ6OlNjcm9sbEJ5TGluZXMgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNjcm9s
bEJ5UGFnZXMgICAgICAgICBET01FbGVtZW50OjpTY3JvbGxCeVBhZ2VzICAgICAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQorQGJlZ2luIERPTUVsZW1lbnRQcm90b1RhYmxlIDEKIEBlbmQKICovCiBL
SlNfSU1QTEVNRU5UX1BST1RPRlVOQyhET01FbGVtZW50UHJvdG9GdW5jKQpAQCAtODE4LDIxICs4
MTIsNyBAQCBLSlNfSU1QTEVNRU5UX1BST1RPVFlQRSgiRE9NRWxlbWVudCIsIERPCiAKIGNvbnN0
IENsYXNzSW5mbyBET01FbGVtZW50OjppbmZvID0geyAiRWxlbWVudCIsICZET01FdmVudFRhcmdl
dE5vZGU6OmluZm8sICZET01FbGVtZW50VGFibGUsIDAgfTsKIC8qIFNvdXJjZSBmb3IgRE9NRWxl
bWVudFRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KLUBiZWdpbiBE
T01FbGVtZW50VGFibGUgMTcKLSAgICB0YWdOYW1lICAgICAgIERPTUVsZW1lbnQ6OlRhZ05hbWUg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotCi0jIElFIGV4dGVu
c2lvbnMKLSAgICBvZmZzZXRMZWZ0ICAgIERPTUVsZW1lbnQ6Ok9mZnNldExlZnQgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQotICAgIG9mZnNldFRvcCAgICAgRE9NRWxlbWVudDo6T2Zm
c2V0VG9wICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgb2Zmc2V0V2lkdGgg
ICBET01FbGVtZW50OjpPZmZzZXRXaWR0aCAgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkK
LSAgICBvZmZzZXRIZWlnaHQgIERPTUVsZW1lbnQ6Ok9mZnNldEhlaWdodCAgICAgICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQotICAgIG9mZnNldFBhcmVudCAgRE9NRWxlbWVudDo6T2Zmc2V0UGFy
ZW50ICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgY2xpZW50V2lkdGggICBET01F
bGVtZW50OjpDbGllbnRXaWR0aCAgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgICBj
bGllbnRIZWlnaHQgIERPTUVsZW1lbnQ6OkNsaWVudEhlaWdodCAgICAgICAgICAgRG9udERlbGV0
ZXxSZWFkT25seQotICAgIHNjcm9sbExlZnQgICAgRE9NRWxlbWVudDo6U2Nyb2xsTGVmdCAgICAg
ICAgICAgICBEb250RGVsZXRlCi0gICAgc2Nyb2xsVG9wICAgICBET01FbGVtZW50OjpTY3JvbGxU
b3AgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgICBzY3JvbGxXaWR0aCAgIERPTUVsZW1lbnQ6
OlNjcm9sbFdpZHRoICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICAgIHNjcm9sbEhl
aWdodCAgRE9NRWxlbWVudDo6U2Nyb2xsSGVpZ2h0ICAgICAgICAgICBEb250RGVsZXRlfFJlYWRP
bmx5CitAYmVnaW4gRE9NRWxlbWVudFRhYmxlIDEKIEBlbmQKICovCiBET01FbGVtZW50OjpET01F
bGVtZW50KEV4ZWNTdGF0ZSAqZXhlYywgRWxlbWVudCAqZSkKQEAgLTg0OCw0NyArODI4LDYgQEAg
RE9NRWxlbWVudDo6RE9NRWxlbWVudChFbGVtZW50ICplKQogCiBKU1ZhbHVlICpET01FbGVtZW50
OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25zdAogewot
ICAgIEVsZW1lbnQgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KGltcGwoKSk7Ci0g
ICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2UgVGFnTmFtZToKLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nT3JOdWxsKGVsZW1lbnQtPm5vZGVOYW1lKCkpOwotCi0gICAgZGVmYXVsdDoKLSAgICAg
ICAgLy8gbm8gRE9NIHN0YW5kYXJkIC0tIElFIGV4dGVuc2lvbgotICAgICAgICAKLSAgICAgICAg
Ly8gTWFrZSBzdXJlIG91ciBsYXlvdXQgaXMgdXAgdG8gZGF0ZSBiZWZvcmUgd2UgYWxsb3cgYSBx
dWVyeSBvbiB0aGVzZSBhdHRyaWJ1dGVzLgotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICAgICAgCi0gICAgICAg
IFJlbmRlck9iamVjdCAqcmVuZCA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgICAgIAotICAg
ICAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgICAgICAgICBjYXNlIE9mZnNldExlZnQ6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlbmQgPyBqc051bWJlcihyZW5kLT5vZmZzZXRMZWZ0KCkpIDog
c3RhdGljX2Nhc3Q8SlNWYWx1ZSAqPihqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGNhc2Ug
T2Zmc2V0VG9wOgotICAgICAgICAgICAgICAgIHJldHVybiByZW5kID8ganNOdW1iZXIocmVuZC0+
b2Zmc2V0VG9wKCkpIDogc3RhdGljX2Nhc3Q8SlNWYWx1ZSAqPihqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgICAgIGNhc2UgT2Zmc2V0V2lkdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmQg
PyBqc051bWJlcihyZW5kLT5vZmZzZXRXaWR0aCgpKSA6IHN0YXRpY19jYXN0PEpTVmFsdWUgKj4o
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBjYXNlIE9mZnNldEhlaWdodDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmVuZCA/IGpzTnVtYmVyKHJlbmQtPm9mZnNldEhlaWdodCgpKSA6IHN0
YXRpY19jYXN0PEpTVmFsdWUgKj4oanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBjYXNlIE9m
ZnNldFBhcmVudDogewotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFyID0gcmVuZCA/
IHJlbmQtPm9mZnNldFBhcmVudCgpIDogMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBwYXIgPyBwYXItPmVsZW1lbnQoKSA6IDApOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY2FzZSBDbGllbnRXaWR0aDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZCA/IGpzTnVt
YmVyKHJlbmQtPmNsaWVudFdpZHRoKCkpIDogc3RhdGljX2Nhc3Q8SlNWYWx1ZSAqPihqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgICAgIGNhc2UgQ2xpZW50SGVpZ2h0OgotICAgICAgICAgICAgICAg
IHJldHVybiByZW5kID8ganNOdW1iZXIocmVuZC0+Y2xpZW50SGVpZ2h0KCkpIDogc3RhdGljX2Nh
c3Q8SlNWYWx1ZSAqPihqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGNhc2UgU2Nyb2xsV2lk
dGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmQgPyBqc051bWJlcihyZW5kLT5zY3JvbGxX
aWR0aCgpKSA6IHN0YXRpY19jYXN0PEpTVmFsdWUgKj4oanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
ICAgICBjYXNlIFNjcm9sbEhlaWdodDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZCA/IGpz
TnVtYmVyKHJlbmQtPnNjcm9sbEhlaWdodCgpKSA6IHN0YXRpY19jYXN0PEpTVmFsdWUgKj4oanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBjYXNlIFNjcm9sbExlZnQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKHJlbmQgJiYgcmVuZC0+bGF5ZXIoKSA/IHJlbmQtPmxheWVyKCkt
PnNjcm9sbFhPZmZzZXQoKSA6IDApOwotICAgICAgICAgICAgY2FzZSBTY3JvbGxUb3A6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHJlbmQgJiYgcmVuZC0+bGF5ZXIoKSA/IHJlbmQt
PmxheWVyKCktPnNjcm9sbFlPZmZzZXQoKSA6IDApOwotICAgICAgICB9Ci0gICAgfQotCiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTg5OSwyMSArODM4LDYgQEAgdm9pZCBET01F
bGVtZW50OjpwdXQoRXhlY1N0YXRlICpleGVjLCBjbwogCiB2b2lkIERPTUVsZW1lbnQ6OnB1dFZh
bHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBp
bnQgLyphdHRyKi8pCiB7Ci0gICAgV2ViQ29yZTo6Tm9kZSYgbm9kZSA9ICptX2ltcGw7Ci0gICAg
c3dpdGNoICh0b2tlbikgewotICAgICAgICBjYXNlIFNjcm9sbFRvcDogewotICAgICAgICAgICAg
UmVuZGVyT2JqZWN0ICpyZW5kID0gbm9kZS5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKHJl
bmQgJiYgcmVuZC0+aGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgICAgICAgICAgcmVuZC0+bGF5
ZXIoKS0+c2Nyb2xsVG9ZT2Zmc2V0KHZhbHVlLT50b0ludDMyKGV4ZWMpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2Nyb2xsTGVmdDogewotICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0ICpyZW5kID0gbm9kZS5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYg
KHJlbmQgJiYgcmVuZC0+aGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgICAgICAgICAgcmVuZC0+
bGF5ZXIoKS0+c2Nyb2xsVG9YT2Zmc2V0KHZhbHVlLT50b0ludDMyKGV4ZWMpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQogfQogCiBKU1ZhbHVlKiBET01FbGVtZW50Ojph
dHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb3JpZ2luYWxPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQpAQCAtOTU1LDMzICs4NzksNiBAQCBKU1ZhbHVlICpET01FbGVtZW50UHJvdG9GdW5jOjpjYWxs
QXNGdW5jCiB7CiAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoJktKUzo6RE9NRWxlbWVudDo6aW5m
bykpCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgRE9NRXhjZXB0
aW9uVHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7Ci0gIFdlYkNvcmU6Ok5vZGUmIG5vZGUgPSAq
c3RhdGljX2Nhc3Q8RE9NTm9kZSo+KHRoaXNPYmopLT5pbXBsKCk7Ci0gIEVsZW1lbnQgJmVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50ICY+KG5vZGUpOwotCi0gIHN3aXRjaChpZCkgewotICAg
ICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldzogCi0gICAgICAgIGVsZW1lbnQuc2Ny
b2xsSW50b1ZpZXcoYXJnc1swXS0+aXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmdzWzBdLT50b0Jv
b2xlYW4oZXhlYykpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgIGNhc2Ug
RE9NRWxlbWVudDo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDogCi0gICAgICAgIGVsZW1lbnQuc2Ny
b2xsSW50b1ZpZXdJZk5lZWRlZChhcmdzWzBdLT5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3Nb
MF0tPnRvQm9vbGVhbihleGVjKSk7Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
ICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxCeUxpbmVzOgotICAgICAgY2FzZSBET01FbGVtZW50
OjpTY3JvbGxCeVBhZ2VzOgotICAgICAgICBlbGVtZW50LmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0ICpy
ZW5kID0gZWxlbWVudC5yZW5kZXJlcigpKQotICAgICAgICAgIGlmIChyZW5kLT5oYXNPdmVyZmxv
d0NsaXAoKSkgewotICAgICAgICAgICAgS1dRU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEtX
UVNjcm9sbERvd247Ci0gICAgICAgICAgICBpbnQgbXVsdGlwbGllciA9IGFyZ3NbMF0tPnRvSW50
MzIoZXhlYyk7Ci0gICAgICAgICAgICBpZiAobXVsdGlwbGllciA8IDApIHsKLSAgICAgICAgICAg
ICAgICBkaXJlY3Rpb24gPSBLV1FTY3JvbGxVcDsKLSAgICAgICAgICAgICAgICBtdWx0aXBsaWVy
ID0gLW11bHRpcGxpZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBLV1FTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSA9IGlkID09IERPTUVsZW1lbnQ6OlNjcm9sbEJ5TGluZXMgPyBL
V1FTY3JvbGxMaW5lIDogS1dRU2Nyb2xsUGFnZTsKLSAgICAgICAgICAgIHJlbmQtPmxheWVyKCkt
PnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKTsKLSAgICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDEz
NzE0KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw5ICsxNTYsMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIC8qKgogICAgKiAgR2V0IGEg
U3RyaW5nIG9iamVjdCBvciBhIG51bGwgU3RyaW5nIGlmIHRoZSB2YWx1ZSBpcyBudWxsCiAgICAq
LwotICBXZWJDb3JlOjpTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlICp2YWwpOworICBXZWJDb3JlOjpTdHJpbmcgdmFsdWVUb1N0cmluZ1dp
dGhOdWxsQ2hlY2soRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWwpOwogCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGlubGluZSBKU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgUGFz
c1JlZlB0cjxUPiBwdHIpIHsgcmV0dXJuIHRvSlMoZXhlYywgcHRyLmdldCgpKTsgfQorICBib29s
IHZhbHVlVG9Cb29sZWFuVHJlYXRVbmRlZmluZWRBc1RydWUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlKiB2YWwpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgSlNWYWx1ZSogdG9K
UyhFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8VD4gcHRyKSB7IHJldHVybiB0b0pTKGV4ZWMs
IHB0ci5nZXQoKSk7IH0KICAgCiB9IC8vIG5hbWVzcGFjZQogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEzNzE0KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtNzk5LDcgKzc5OSwxMiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgIG15ICR0eXBlID0gJHNp
Z25hdHVyZS0+dHlwZTsKIAogICBpZiAoJHR5cGUgZXEgImJvb2xlYW4iKSB7Ci0gICAgcmV0dXJu
ICIkdmFsdWUtPnRvQm9vbGVhbihleGVjKSI7CisgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydFVuZGVmaW5lZFRvVHJ1ZSJ9OworICAgIGlmIChk
ZWZpbmVkICRjb252KSB7CisJcmV0dXJuICJ2YWx1ZVRvQm9vbGVhblRyZWF0VW5kZWZpbmVkQXNU
cnVlKGV4ZWMsICR2YWx1ZSkiOworICAgIH0gZWxzZSB7CisJcmV0dXJuICIkdmFsdWUtPnRvQm9v
bGVhbihleGVjKSI7CisgICAgfQogICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgbG9uZyIg
b3IgJHR5cGUgZXEgImxvbmciKSB7CiAgICAgcmV0dXJuICIkdmFsdWUtPnRvSW50MzIoZXhlYyki
OwogICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiKSB7CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAJKHJldmlzaW9uIDEzNzE0KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzUwLDExICs3NTAsMTEgQEAgYm9vbCBIVE1MRWxlbWVudDo6
aW5FaXRoZXJUYWdMaXN0KGNvbnN0IAogICAgICAgICAKICAgICBpZiAobmV3Q2hpbGQtPmlzSFRN
TEVsZW1lbnQoKSkgewogICAgICAgICBjb25zdCBIVE1MRWxlbWVudCogY2hpbGQgPSBzdGF0aWNf
Y2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KG5ld0NoaWxkKTsKLSAgICAgICAgaWYgKGlubGluZVRh
Z0xpc3QoKS0+Y29udGFpbnMoY2hpbGQtPnRhZ05hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCkpKQor
ICAgICAgICBpZiAoaW5saW5lVGFnTGlzdCgpLT5jb250YWlucyhjaGlsZC0+dGFnUU5hbWUoKS5s
b2NhbE5hbWUoKS5pbXBsKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlm
IChibG9ja1RhZ0xpc3QoKS0+Y29udGFpbnMoY2hpbGQtPnRhZ05hbWUoKS5sb2NhbE5hbWUoKS5p
bXBsKCkpKQorICAgICAgICBpZiAoYmxvY2tUYWdMaXN0KCktPmNvbnRhaW5zKGNoaWxkLT50YWdR
TmFtZSgpLmxvY2FsTmFtZSgpLmltcGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgcmV0dXJuICFpc1JlY29nbml6ZWRUYWdOYW1lKGNoaWxkLT50YWdOYW1lKCkpOyAvLyBB
Y2NlcHQgY3VzdG9tIGh0bWwgdGFncworICAgICAgICByZXR1cm4gIWlzUmVjb2duaXplZFRhZ05h
bWUoY2hpbGQtPnRhZ1FOYW1lKCkpOyAvLyBBY2NlcHQgY3VzdG9tIGh0bWwgdGFncwogICAgIH0K
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTc2Nyw5ICs3NjcsOSBAQCBib29sIEhUTUxFbGVtZW50
OjppbklubGluZVRhZ0xpc3QoY29uc3QgCiAKICAgICBpZiAobmV3Q2hpbGQtPmlzSFRNTEVsZW1l
bnQoKSkgewogICAgICAgICBjb25zdCBIVE1MRWxlbWVudCogY2hpbGQgPSBzdGF0aWNfY2FzdDxj
b25zdCBIVE1MRWxlbWVudCo+KG5ld0NoaWxkKTsKLSAgICAgICAgaWYgKGlubGluZVRhZ0xpc3Qo
KS0+Y29udGFpbnMoY2hpbGQtPnRhZ05hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCkpKQorICAgICAg
ICBpZiAoaW5saW5lVGFnTGlzdCgpLT5jb250YWlucyhjaGlsZC0+dGFnUU5hbWUoKS5sb2NhbE5h
bWUoKS5pbXBsKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiAh
aXNSZWNvZ25pemVkVGFnTmFtZShjaGlsZC0+dGFnTmFtZSgpKTsgLy8gQWNjZXB0IGN1c3RvbSBo
dG1sIHRhZ3MKKyAgICAgICAgcmV0dXJuICFpc1JlY29nbml6ZWRUYWdOYW1lKGNoaWxkLT50YWdR
TmFtZSgpKTsgLy8gQWNjZXB0IGN1c3RvbSBodG1sIHRhZ3MKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC03ODIsNyArNzgyLDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6aW5CbG9ja1RhZ0xp
c3QoY29uc3QgTgogICAgICAgICAgICAgCiAgICAgaWYgKG5ld0NoaWxkLT5pc0hUTUxFbGVtZW50
KCkpIHsKICAgICAgICAgY29uc3QgSFRNTEVsZW1lbnQqIGNoaWxkID0gc3RhdGljX2Nhc3Q8Y29u
c3QgSFRNTEVsZW1lbnQqPihuZXdDaGlsZCk7Ci0gICAgICAgIHJldHVybiAoYmxvY2tUYWdMaXN0
KCktPmNvbnRhaW5zKGNoaWxkLT50YWdOYW1lKCkubG9jYWxOYW1lKCkuaW1wbCgpKSk7CisgICAg
ICAgIHJldHVybiAoYmxvY2tUYWdMaXN0KCktPmNvbnRhaW5zKGNoaWxkLT50YWdRTmFtZSgpLmxv
Y2FsTmFtZSgpLmltcGwoKSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDEzNzE0KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzUsNyArNDc1LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6
aW1wb3J0Tm9kZShObwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbW1lbnQoaW1wb3J0ZWRO
b2RlLT5ub2RlVmFsdWUoKSk7CiAgICAgICAgIGNhc2UgRUxFTUVOVF9OT0RFOiB7CiAgICAgICAg
ICAgICBFbGVtZW50ICpvbGRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihpbXBvcnRl
ZE5vZGUpOwotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0VsZW1lbnQgPSBjcmVhdGVF
bGVtZW50TlMob2xkRWxlbWVudC0+bmFtZXNwYWNlVVJJKCksIG9sZEVsZW1lbnQtPnRhZ05hbWUo
KS50b1N0cmluZygpLCBlYyk7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVu
dCA9IGNyZWF0ZUVsZW1lbnROUyhvbGRFbGVtZW50LT5uYW1lc3BhY2VVUkkoKSwgb2xkRWxlbWVu
dC0+dGFnUU5hbWUoKS50b1N0cmluZygpLCBlYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChlYyAhPSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpJbmRl
eDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1l
bnQuaAkocmV2aXNpb24gMTM3MTQpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5j
bHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJLV1FT
Y3JvbGxCYXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OCw2ICs2OSwyNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyAoYm9vbCBhbGlnblRvVG9wKTsKICAgICB2
b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCk7CiAKKyAgICB2
b2lkIHNjcm9sbEJ5VW5pdHMoaW50IHVuaXRzLCBLV1FTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0eSk7CisgICAgdm9pZCBzY3JvbGxCeUxpbmVzKGludCBsaW5lcyk7CisgICAgdm9pZCBzY3Jv
bGxCeVBhZ2VzKGludCBwYWdlcyk7CisKKyAgICBpbnQgb2Zmc2V0TGVmdCgpOworICAgIGludCBv
ZmZzZXRUb3AoKTsKKyAgICBpbnQgb2Zmc2V0V2lkdGgoKTsKKyAgICBpbnQgb2Zmc2V0SGVpZ2h0
KCk7CisgICAgRWxlbWVudCogb2Zmc2V0UGFyZW50KCk7CisgICAgaW50IGNsaWVudFdpZHRoKCk7
CisgICAgaW50IGNsaWVudEhlaWdodCgpOworICAgIGludCBzY3JvbGxMZWZ0KCk7CisgICAgaW50
IHNjcm9sbFRvcCgpOworICAgIHZvaWQgc2V0U2Nyb2xsTGVmdChpbnQpOworICAgIHZvaWQgc2V0
U2Nyb2xsVG9wKGludCk7CisgICAgaW50IHNjcm9sbFdpZHRoKCk7CisgICAgaW50IHNjcm9sbEhl
aWdodCgpOworCiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYyk7CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJp
bmcgJm5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKIApAQCAtNzksNyArOTgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBDU1NTdHls
ZURlY2xhcmF0aW9uICpzdHlsZSgpOwogCi0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CisgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KKyAgICBTdHJp
bmcgdGFnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVOYW1lKCk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSBjb25zdCB7IHJldHVy
biBtX3RhZ05hbWUubWF0Y2hlcyh0YWdOYW1lKTsgfQogICAgIAogICAgIC8vIEEgZmFzdCBmdW5j
dGlvbiBmb3IgY2hlY2tpbmcgdGhlIGxvY2FsIG5hbWUgYWdhaW5zdCBhbm90aGVyIGF0b21pYyBz
dHJpbmcuCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMTM3MTQpCisrKyBXZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDEwIEBAIG1vZHVsZSBjb3JlIHsK
IAogICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRWxlbWVudF0gRWxlbWVudCA6
IEV2ZW50VGFyZ2V0Tm9kZSB7CiAKLSAgICAgICAgLy8gRE9NIExldmVsIDEKKyAgICAgICAgLy8g
RE9NIExldmVsIDEgQ29yZQogCi0gICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1l
KGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyB0YWdOYW1lOwogCi0gICAgICAgIC8vIENvbnZl
cnROdWxsU3RyaW5nVG89TnVsbCBpcyB1c2VkIGhlcmUgc2luY2UgaWYgdGhlIGF0dHJpYnV0ZSBp
c24ndCBwcmVzZW50IGF0IGFsbAotICAgICAgICAvLyB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biBudWxsIGFuZCBub3QgIiIuCiAgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERP
TVN0cmluZyBnZXRBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgICAgIHZvaWQg
c2V0QXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lLApAQCAtNDQsMTUgKzQyLDkgQEAgbW9kdWxl
IGNvcmUgewogICAgICAgICBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoaW4gQXR0ciBvbGRBdHRy
KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgLy8gRE9NIExl
dmVsIDIKLQotICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKLQot
ICAgICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7CisgICAgICAg
IE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKIAotICAg
ICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICAgICAgLy8gRE9NIExldmVsIDIgQ29yZQogCiAg
ICAgICAgIERPTVN0cmluZyBnZXRBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKQEAgLTY2LDIwICs1OCw1MyBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2Fs
TmFtZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCisgICAgICAgIE5vZGVM
aXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOworCiAgICAgICAgIEF0dHIgZ2V0QXR0cmli
dXRlTm9kZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFj
ZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2Fs
TmFtZSk7CiAKICAgICAgICAgQXR0ciBzZXRBdHRyaWJ1dGVOb2RlTlMoaW4gQXR0ciBuZXdBdHRy
KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgLy8gZXh0ZW5z
aW9ucworICAgICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7CisK
KyAgICAgICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CisKKyAgICAgICAgLy8gQ29tbW9uIGV4dGVuc2lv
bnMKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRMZWZ0OworCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldFRvcDsKKworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRXaWR0aDsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBvZmZzZXRIZWlnaHQ7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1l
bnQgb2Zmc2V0UGFyZW50OworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgY2xpZW50V2lkdGg7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50
SGVpZ2h0OworCisgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNjcm9sbExlZnQ7CisKKyAgICAgICAg
YXR0cmlidXRlIGxvbmcgc2Nyb2xsVG9wOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIHNjcm9sbFdpZHRoOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNjcm9s
bEhlaWdodDsKIAogICAgICAgICB2b2lkIGZvY3VzKCk7CisKICAgICAgICAgdm9pZCBibHVyKCk7
CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7
CisgICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXcoaW4gW0NvbnZlcnRVbmRlZmluZWRUb1RydWVd
IGJvb2xlYW4gYWxpZ25XaXRoVG9wKTsKIAotICAgICAgICAvLyBJRS1vbmx5IGV4dGVuc2lvbnMK
KyAgICAgICAgLy8gSUUgZXh0ZW5zaW9ucwogCiAgICAgICAgIE5vZGUgaW5zZXJ0QWRqYWNlbnRF
bGVtZW50KGluIERPTVN0cmluZyBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIE5vZGUgbmV3RWxlbWVudCkKQEAgLTg3LDYgKzExMiwxNCBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIAogICAgICAgICBib29sZWFuIGNvbnRhaW5zKGluIEVsZW1lbnQgZWxl
bWVudCk7CiAKKyAgICAgICAgLy8gV2ViS2l0IGV4dGVuc2lvbnMKKworICAgICAgICB2b2lkIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQoaW4gW0NvbnZlcnRVbmRlZmluZWRUb1RydWVdIGJvb2xlYW4g
YWxpZ25XaXRoVG9wKTsKKworICAgICAgICB2b2lkIHNjcm9sbEJ5TGluZXMoaW4gbG9uZyBsaW5l
cyk7CisKKyAgICAgICAgdm9pZCBzY3JvbGxCeVBhZ2VzKGluIGxvbmcgcGFnZXMpOworCiAgICAg
fTsKIAogfQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzNzE0KQorKysgV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsMTM1IEBAIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib28KICAgICB9CiB9CiAKK3ZvaWQgRWxlbWVudDo6
c2Nyb2xsQnlVbml0cyhpbnQgdW5pdHMsIEtXUVNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworICAgIGlmIChSZW5kZXJPYmplY3QgKnJlbmQgPSByZW5kZXJlcigpKSB7CisgICAgICAg
IGlmIChyZW5kLT5oYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICAgICAgS1dRU2Nyb2xsRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IEtXUVNjcm9sbERvd247CisgICAgICAgICAgICBpZiAodW5pdHMg
PCAwKSB7CisgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gS1dRU2Nyb2xsVXA7CisgICAgICAg
ICAgICAgICAgdW5pdHMgPSAtdW5pdHM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZW5k
LT5sYXllcigpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgdW5pdHMpOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5TGluZXMoaW50IGxpbmVzKQor
eworICAgIHNjcm9sbEJ5VW5pdHMobGluZXMsIEtXUVNjcm9sbExpbmUpOworfQorCit2b2lkIEVs
ZW1lbnQ6OnNjcm9sbEJ5UGFnZXMoaW50IHBhZ2VzKQoreworICAgIHNjcm9sbEJ5VW5pdHMocGFn
ZXMsIEtXUVNjcm9sbFBhZ2UpOworfQorCitpbnQgRWxlbWVudDo6b2Zmc2V0TGVmdCgpCit7Cisg
ICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Cisg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZCA9IHJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBy
ZW5kLT5vZmZzZXRMZWZ0KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBFbGVtZW50OjpvZmZz
ZXRUb3AoKQoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmQgPSByZW5kZXJlcigpKQorICAg
ICAgICByZXR1cm4gcmVuZC0+b2Zmc2V0VG9wKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBF
bGVtZW50OjpvZmZzZXRXaWR0aCgpCit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZCA9IHJl
bmRlcmVyKCkpCisgICAgICAgIHJldHVybiByZW5kLT5vZmZzZXRXaWR0aCgpOworICAgIHJldHVy
biAwOworfQorCitpbnQgRWxlbWVudDo6b2Zmc2V0SGVpZ2h0KCkKK3sKKyAgICBkb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kID0gcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmQtPm9mZnNldEhl
aWdodCgpOworICAgIHJldHVybiAwOworfQorCitFbGVtZW50KiBFbGVtZW50OjpvZmZzZXRQYXJl
bnQoKQoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmQgPSByZW5kZXJlcigpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmQtPm9mZnNldFBhcmVudCgpLT5lbGVt
ZW50KCkpOworICAgIHJldHVybiAwOworfQorCitpbnQgRWxlbWVudDo6Y2xpZW50V2lkdGgoKQor
eworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmQgPSByZW5kZXJlcigpKQorICAgICAgICByZXR1
cm4gcmVuZC0+Y2xpZW50V2lkdGgoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEVsZW1lbnQ6
OmNsaWVudEhlaWdodCgpCit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZCA9IHJlbmRlcmVy
KCkpCisgICAgICAgIHJldHVybiByZW5kLT5jbGllbnRIZWlnaHQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworaW50IEVsZW1lbnQ6OnNjcm9sbExlZnQoKQoreworICAgIGRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIFJlbmRlck9iamVjdCogcmVu
ZCA9IHJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmQgJiYgcmVuZC0+bGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuIHJlbmQtPmxheWVyKCktPnNjcm9sbFhPZmZzZXQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworaW50IEVsZW1lbnQ6OnNjcm9sbFRvcCgpCit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kID0g
cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZCAmJiByZW5kLT5sYXllcigpKQorICAgICAgICByZXR1
cm4gcmVuZC0+bGF5ZXIoKS0+c2Nyb2xsWU9mZnNldCgpOworICAgIHJldHVybiAwOworfQorCit2
b2lkIEVsZW1lbnQ6OnNldFNjcm9sbExlZnQoaW50IG5ld0xlZnQpCit7CisgICAgUmVuZGVyT2Jq
ZWN0ICpyZW5kID0gcmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZCAmJiByZW5kLT5oYXNPdmVyZmxv
d0NsaXAoKSkKKyAgICAgICAgcmVuZC0+bGF5ZXIoKS0+c2Nyb2xsVG9YT2Zmc2V0KG5ld0xlZnQp
OworfQorCit2b2lkIEVsZW1lbnQ6OnNldFNjcm9sbFRvcChpbnQgbmV3VG9wKQoreworICAgIFJl
bmRlck9iamVjdCAqcmVuZCA9IHJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmQgJiYgcmVuZC0+aGFz
T3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIHJlbmQtPmxheWVyKCktPnNjcm9sbFRvWU9mZnNldChu
ZXdUb3ApOworfQorCitpbnQgRWxlbWVudDo6c2Nyb2xsV2lkdGgoKQoreworICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIGlmIChSZW5k
ZXJPYmplY3QqIHJlbmQgPSByZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gcmVuZC0+c2Nyb2xs
V2lkdGgoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEVsZW1lbnQ6OnNjcm9sbEhlaWdodCgp
Cit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZCA9IHJlbmRlcmVyKCkpCisgICAgICAgIHJl
dHVybiByZW5kLT5zY3JvbGxIZWlnaHQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGlu
bGluZSBib29sIGluSFRNTERvY3VtZW50KGNvbnN0IEVsZW1lbnQqIGUpCiB7CiAgICAgcmV0dXJu
IGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gMTM3MTQpCisrKyBXZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTksNyArODk5LDcg
QEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bAogICAgICAgICAgICAg
SFRNTEVsZW1lbnQgKmVsZW0gPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCAqPihub2RlKTsKICAg
ICAgICAgICAgIE5vZGUgKnByZXYgPSBlbGVtLT50cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRl
cigpOwogICAgICAgICAgICAgTm9kZSAqbmV4dCA9IGVsZW0tPnRyYXZlcnNlTmV4dE5vZGUoKTsK
LSAgICAgICAgICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgZWxlbS0+aGFzVGFnTmFt
ZShtX3N0eWxlZElubGluZUVsZW1lbnQtPnRhZ05hbWUoKSkpCisgICAgICAgICAgICBpZiAobV9z
dHlsZWRJbmxpbmVFbGVtZW50ICYmIGVsZW0tPmhhc1RhZ05hbWUobV9zdHlsZWRJbmxpbmVFbGVt
ZW50LT50YWdRTmFtZSgpKSkKICAgICAgICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0No
aWxkcmVuKGVsZW0pOwogICAgICAgICAgICAgaWYgKGlzSFRNTFN0eWxlTm9kZShzdHlsZS5nZXQo
KSwgZWxlbSkpCiAgICAgICAgICAgICAgICAgcmVtb3ZlSFRNTFN0eWxlTm9kZShlbGVtKTsKQEAg
LTEwMjYsNyArMTAyNiw3IEBAIHN0YXRpYyBib29sIGFyZUlkZW50aWNhbEVsZW1lbnRzKE5vZGUg
KmYKICAgICBFbGVtZW50ICpmaXJzdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KGZp
cnN0KTsKICAgICBFbGVtZW50ICpzZWNvbmRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAq
PihzZWNvbmQpOwogICAgIAotICAgIGlmICghZmlyc3RFbGVtZW50LT50YWdOYW1lKCkubWF0Y2hl
cyhzZWNvbmRFbGVtZW50LT50YWdOYW1lKCkpKQorICAgIGlmICghZmlyc3RFbGVtZW50LT50YWdR
TmFtZSgpLm1hdGNoZXMoc2Vjb25kRWxlbWVudC0+dGFnUU5hbWUoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIE5hbWVkQXR0ck1hcCAqZmlyc3RNYXAgPSBmaXJzdEVsZW1lbnQtPmF0
dHJpYnV0ZXMoKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzcyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMDYtMDQtMDYgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtIENvbnZlcnQgRWxlbWVudCBKUyBiaW5kaW5ncyB0byBiZSBhbG1vc3QgY29t
cGxldGVseSBhdXRvZ2VuZXJhdGVkCisgICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2lu
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIyNworCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOiBE
ZWNsYXJlIGZ1bGwgaW50ZXJmYWNlIGluIElETC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dGFnUU5hbWUpOiBSZW5hbWVkIGZyb20gdGFnTmFt
ZSwgc28gdGhlIHJlYWwgRE9NCisgICAgICAgIG1ldGhvZCBjYW4gYmUgY2FsbGVkIHRhZ05hbWUu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWdOYW1lKTogaW5saW5lIGFsaWFzIGZvciBu
b2RlTmFtZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpzY3JvbGxCeVVuaXRzKTogTW92ZWQgbG9naWMgZnJvbSBKUyBiaW5kaW5ncyB0bwor
ICAgICAgICBjb3JlIERPTS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5TGlu
ZXMpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsQnlQYWdlcyk6IGRp
dHRvCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpvZmZzZXRMZWZ0KTogZGl0dG8sIHBsdXMg
bWFrZSB1bnJlbmRlcmVkIGVsZW1lbnRzIHJldHVybiAwIG5vdCB1bmRlZmluZWQKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6Om9mZnNldFRvcCk6IGRpdHRvLCBwbHVzIG1ha2UgdW5yZW5kZXJl
ZCBlbGVtZW50cyByZXR1cm4gMCBub3QgdW5kZWZpbmVkCisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpvZmZzZXRXaWR0aCk6IGRpdHRvLCBwbHVzIG1ha2UgdW5yZW5kZXJlZCBlbGVtZW50cyBy
ZXR1cm4gMCBub3QgdW5kZWZpbmVkCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpvZmZzZXRI
ZWlnaHQpOiBkaXR0bywgcGx1cyBtYWtlIHVucmVuZGVyZWQgZWxlbWVudHMgcmV0dXJuIDAgbm90
IHVuZGVmaW5lZAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6b2Zmc2V0UGFyZW50KTogZGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsaWVudFdpZHRoKTogZGl0dG8sIHBsdXMg
bWFrZSB1bnJlbmRlcmVkIGVsZW1lbnRzIHJldHVybiAwIG5vdCB1bmRlZmluZWQKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNsaWVudEhlaWdodCk6IGRpdHRvLCBwbHVzIG1ha2UgdW5yZW5k
ZXJlZCBlbGVtZW50cyByZXR1cm4gMCBub3QgdW5kZWZpbmVkCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpzY3JvbGxMZWZ0KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNj
cm9sbFRvcCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRTY3JvbGxMZWZ0
KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFNjcm9sbFRvcCk6IGRpdHRv
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxXaWR0aCk6IGRpdHRvLCBwbHVzIG1h
a2UgdW5yZW5kZXJlZCBlbGVtZW50cyByZXR1cm4gMCBub3QgdW5kZWZpbmVkCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxIZWlnaHQpOiBkaXR0bywgcGx1cyBtYWtlIHVucmVuZGVy
ZWQgZWxlbWVudHMgcmV0dXJuIDAgbm90IHVuZGVmaW5lZAorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEFkZGVkIHN1cHBvcnQgZm9yCisgICAgICAgIENv
bnZlcnRVbmRlZmluZWRUb1RydWUsIGZvciBiZW5lZml0IG9mIHNjcm9sbCBtZXRob2RzIHdoZXJl
CisgICAgICAgIG9taXR0ZWQgYXJndW1lbnRzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHRydWUuICBI
b3dldmVyLCBtYXliZQorICAgICAgICBleHBsaWNpdCBvdmVybG9hZGluZyBpbiB0aGUgSURMIHdv
dWxkIGJlIGEgYmV0dGVyIGxvbmctdGVybQorICAgICAgICBhcHByb2FjaCBmb3Igb3B0aW9uYWwg
YXJndW1lbnRzLgorCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHA6CisgICAg
ICAgIChLSlM6OnZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKTogZml4ZWQgZm9ybWF0dGluZwor
ICAgICAgICAoS0pTOjp2YWx1ZVRvQm9vbGVhblRyZWF0VW5kZWZpbmVkQXNUcnVlKTogYWRkZWQg
Zm9yIGJpbmRpbmcgb2Ygc2Nyb2xsSW50b1ZpZXcKKyAgICAgICAgKGlzbid0IHRoaXMgbGFtZT8p
CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOgorICAgICAgICAoS0pTOjp0b0pT
KTogZml4ZWQgZm9ybWF0dGluZywgYWRkZWQgbmV3IHN0dWZmCisgICAgICAgICoga2h0bWwvZWNt
YS9ranNfZG9tLmNwcDoKKyAgICAgICAgKEtKUzo6RE9NRWxlbWVudDo6Z2V0VmFsdWVQcm9wZXJ0
eSk6IHJlbW92ZWQgbW9zdCBvZiBjb250ZW50cworICAgICAgICAoS0pTOjpET01FbGVtZW50Ojpw
dXRWYWx1ZVByb3BlcnR5KTogZGl0dG8KKyAgICAgICAgKEtKUzo6RE9NRWxlbWVudFByb3RvRnVu
Yzo6Y2FsbEFzRnVuY3Rpb24pOiBkaXR0bworCisgICAgICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHls
ZVdpdGhFbGVtZW50KTogdXBkYXRlZCBmb3IgcmVuYW1lCisgICAgICAgIG9mIHRhZ05hbWUgdG8g
dGFnUU5hbWUKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2Vs
ZWN0b3IpOiBkaXR0bworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aW1wb3J0Tm9kZSk6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
cmVtb3ZlSW5saW5lU3R5bGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6YXJlSWRlbnRpY2Fs
RWxlbWVudHMpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmluRWl0aGVyVGFnTGlzdCk6IGRpdHRvCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aW5JbmxpbmVUYWdMaXN0KTogZGl0dG8KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjppbkJsb2NrVGFnTGlzdCk6IGRpdHRvCisKIDIwMDYtMDQt
MDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIC0gdHJ5IHRvIGZp
eCBXaW5kb3dzIGJ1aWxkCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkocmV2aXNpb24g
MTM3MTQpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjE5LDcgKzYxOSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHls
ZVdpdGgKIHsKICAgICBpZiAobi0+aXNTdHlsZWRFbGVtZW50KCkpIHsKICAgICAgICAgU3R5bGVk
RWxlbWVudCogcyA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihuKTsKLSAgICAgICAgaWYg
KHMtPnJlbmRlcmVyKCkgJiYgKHMtPnRhZ05hbWUoKSA9PSBlbGVtZW50LT50YWdOYW1lKCkpICYm
ICFzLT5oYXNJRCgpICYmCisgICAgICAgIGlmIChzLT5yZW5kZXJlcigpICYmIChzLT50YWdRTmFt
ZSgpID09IGVsZW1lbnQtPnRhZ1FOYW1lKCkpICYmICFzLT5oYXNJRCgpICYmCiAgICAgICAgICAg
ICAocy0+aGFzQ2xhc3MoKSA9PSBlbGVtZW50LT5oYXNDbGFzcygpKSAmJiAhcy0+aW5saW5lU3R5
bGVEZWNsKCkgJiYKICAgICAgICAgICAgIChzLT5oYXNNYXBwZWRBdHRyaWJ1dGVzKCkgPT0gc3R5
bGVkRWxlbWVudC0+aGFzTWFwcGVkQXR0cmlidXRlcygpKSAmJgogICAgICAgICAgICAgKHMtPmlz
TGluaygpID09IGVsZW1lbnQtPmlzTGluaygpKSAmJiAKQEAgLTEzMDAsNyArMTMwMCw3IEBAIGJv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigKICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZUeXBlOiB7CiAgICAgICAgICAgICAgICAgLy8gZmly
c3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGl0cyB0eXBlIQogICAgICAg
ICAgICAgICAgIGlmIChlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1l
bnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlw
ZSA9IGUtPnRhZ05hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdHlwZSA9IGUtPnRhZ1FOYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUgKm4gPSBl
LT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG4pIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkgJiYgc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG4pLT5oYXNUYWdOYW1lKHR5cGUpKQpAQCAtMTMyNiw3ICsxMzI2LDcgQEAg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdE9mVHlwZTogewogICAgICAgICAgICAgICAgIC8vIGxh
c3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBsYXN0IGVsZW1lbnQgb2YgaXRzIHR5cGUhCiAgICAgICAg
ICAgICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVu
dE5vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBl
ID0gZS0+dGFnTmFtZSgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlID0gZS0+dGFnUU5hbWUoKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSAqbiA9IGUt
Pm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKS0+aGFzVGFnTmFtZSh0eXBlKSkKQEAgLTEzNTcsNyArMTM1Nyw3IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb09ubHlPZlR5cGU6IHsKICAgICAgICAgICAgICAgICAvLyBJZiBib3Ro
IGZpcnN0LW9mLXR5cGUgYW5kIGxhc3Qtb2YtdHlwZSBhcHBseSwgdGhlbiBvbmx5LW9mLXR5cGUg
YXBwbGllcy4KICAgICAgICAgICAgICAgICBpZiAoZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVu
dE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHR5cGUgPSBlLT50YWdOYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlLT50YWdRTmFtZSgpOwogICAgICAgICAgICAgICAg
ICAgICBOb2RlICpuID0gZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChuICYmICFzdGF0aWNfY2FzdDxFbGVtZW50Kj4obiktPmhhc1RhZ05hbWUodHlwZSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7Cg==
</data>
<flag name="review"
          id="2068"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>