<?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>163798</bug_id>
          
          <creation_ts>2016-10-21 10:22:52 -0700</creation_ts>
          <short_desc>Tighten ComputedStyleExtractor to use Element instead of Node</short_desc>
          <delta_ts>2016-10-21 11:47:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242955</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-21 10:22:52 -0700</bug_when>
    <thetext>Only Elements have style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242985</commentid>
    <comment_count>1</comment_count>
      <attachid>292375</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-21 10:51:44 -0700</bug_when>
    <thetext>Created attachment 292375
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243018</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-21 11:47:37 -0700</bug_when>
    <thetext>https://trac.webkit.org/r207686</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292375</attachid>
            <date>2016-10-21 10:51:44 -0700</date>
            <delta_ts>2016-10-21 11:11:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>computedstyleextractor-element-4.patch</filename>
            <type>text/plain</type>
            <size>31568</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzY4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE2LTEwLTIxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWdodGVuIENvbXB1dGVkU3R5
bGVFeHRyYWN0b3IgdG8gdXNlIEVsZW1lbnQgaW5zdGVhZCBvZiBOb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIG1ha2UgaXRzIGZ1bmN0aW9u
cyBub24tY29uc3QgYXMgdGhleSBtYXkgY29tcHV0ZSBzdHlsZS4KKworICAgICAgICAqIGNzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVF
bGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yKToKKworICAgICAgICAgICAgSWYgd2UgYXJlIGNhbGxl
ZCB3aXRoIGEgTm9kZSBmaWd1cmUgb3V0IHRoZSBzdHlsZSBFbGVtZW50IGluIGNvbnN0cnVjdG9y
LgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRGb250U2l6
ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6dXNlRml4ZWRGb250RGVmYXVsdFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50T3JJdHNBbmNlc3Rvck5lZWRzU3R5bGVS
ZWNhbGMpOgorCisgICAgICAgICAgICBVc2UgY29tcG9zZWQgdHJlZSBpdGVyYXRvciBmb3IgaW5j
cmVhc2VkIGNvcnJlY3RuZXNzIGluIHNoYWRvdyB0cmVlcy4KKworICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlU3R5bGVJZk5lZWRlZEZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0
ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlNYXRjaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2hvcnRoYW5kUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9y
R3JpZFNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkTm9kZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpub2RlT3JJdHNBbmNlc3Rvck5lZWRzU3R5bGVSZWNhbGMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU3R5bGVJZk5lZWRlZEZvck5vZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAg
ICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRp
bmdTdHlsZTo6cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMpOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdGluZ1N0eWxlLmg6CisKIDIwMTYtMTAtMjEgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIFN1cHBvcnQgaG9yaXpvbnRhbC1idCB3cml0aW5n
IG1vZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQAogI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKKyNpbmNsdWRlICJDb21w
b3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNp
bmNsdWRlICJDb3VudGVyQ29udGVudC5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKQEAgLTcy
LDYgKzczLDcgQEAKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKKyNp
bmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIKICNpbmNs
dWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgIldlYktpdEZvbnRGYW1p
bHlOYW1lcy5oIgpAQCAtMTU4MywxMyArMTU4NSwyOCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBj
cmVhdGVMaW5lQm94Q29udGFpCiAgICAgcmV0dXJuIENTU0xpbmVCb3hDb250YWluVmFsdWU6OmNy
ZWF0ZShsaW5lQm94Q29udGFpbik7CiB9CiAKLUNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IoUmVmUHRyPE5vZGU+JiYgbm9kZSwgYm9vbCBhbGxvd1Zpc2l0ZWRT
dHlsZSwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKLSAgICA6IG1fbm9kZShXVEZN
b3ZlKG5vZGUpKQorc3RhdGljIEVsZW1lbnQqIHN0eWxlRWxlbWVudEZvck5vZGUoTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChp
czxFbGVtZW50Pigqbm9kZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2Rl
KTsKKyAgICByZXR1cm4gY29tcG9zZWRUcmVlQW5jZXN0b3JzKCpub2RlKS5maXJzdCgpOworfQor
CitDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yKE5vZGUqIG5v
ZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpCisgICAgOiBtX2VsZW1lbnQoc3R5bGVFbGVtZW50Rm9yTm9kZShub2RlKSkKICAgICAsIG1f
cHNldWRvRWxlbWVudFNwZWNpZmllcihwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgICwgbV9h
bGxvd1Zpc2l0ZWRTdHlsZShhbGxvd1Zpc2l0ZWRTdHlsZSkKIHsKIH0KIAorQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Q29tcHV0ZWRTdHlsZUV4dHJhY3RvcihFbGVtZW50KiBlbGVtZW50LCBib29s
IGFsbG93VmlzaXRlZFN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQorICAg
IDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIocHNl
dWRvRWxlbWVudFNwZWNpZmllcikKKyAgICAsIG1fYWxsb3dWaXNpdGVkU3R5bGUoYWxsb3dWaXNp
dGVkU3R5bGUpCit7Cit9CiAKIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgYWxsb3dWaXNpdGVkU3R5
bGUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudE5hbWUpCiAgICAgOiBtX2VsZW1lbnQoZWxl
bWVudCkKQEAgLTE2MzgsMTQgKzE2NTUsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcgogICAgIHJldHVybiBFeGNlcHRpb24geyBOT19NT0RJRklDQVRJT05fQUxM
T1dFRF9FUlIgfTsKIH0KIAotUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQoKSBjb25zdAor
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRGb250
U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQoKQogewotICAgIGlmICghbV9ub2RlKQorICAg
IGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fbm9kZS0+
ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBt
X2VsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKLSAgICBhdXRvKiBzdHlsZSA9IG1fbm9kZS0+Y29tcHV0ZWRTdHlsZShtX3BzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpOworICAgIGF1dG8qIHN0eWxlID0gbV9lbGVtZW50LT5jb21wdXRlZFN0
eWxlKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NTUsMTIgKzE2NzIsMTEgQEAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSwgKnN0eWxlKTsKIH0K
IAotYm9vbCBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp1c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgp
IGNvbnN0Citib29sIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnVzZUZpeGVkRm9udERlZmF1bHRT
aXplKCkKIHsKLSAgICBpZiAoIW1fbm9kZSkKKyAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byogc3R5bGUgPSBtX25vZGUtPmNvbXB1dGVkU3R5bGUo
bV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICBhdXRvKiBzdHlsZSA9IG1fZWxlbWVudC0+
Y29tcHV0ZWRTdHlsZShtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwogICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI2NCwxOSArMjI4MCwxNiBAQCBzdGF0aWMg
Ym9vbCBpc0xheW91dERlcGVuZGVudChDU1NQcm9wZXJ0CiAgICAgfQogfQogCi1Ob2RlKiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpzdHlsZWROb2RlKCkgY29uc3QKK0VsZW1lbnQqIENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnN0eWxlZEVsZW1lbnQoKQogewotICAgIGlmICghbV9ub2RlKQorICAg
IGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWlzPEVs
ZW1lbnQ+KCptX25vZGUpKQotICAgICAgICByZXR1cm4gbV9ub2RlLmdldCgpOwotICAgIEVsZW1l
bnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqbV9ub2RlKTsKICAgICBQc2V1ZG9FbGVt
ZW50KiBwc2V1ZG9FbGVtZW50OwotICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0g
QkVGT1JFICYmIChwc2V1ZG9FbGVtZW50ID0gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkp
KQorICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gQkVGT1JFICYmIChwc2V1ZG9F
bGVtZW50ID0gbV9lbGVtZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCkpKQogICAgICAgICByZXR1
cm4gcHNldWRvRWxlbWVudDsKLSAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IEFG
VEVSICYmIChwc2V1ZG9FbGVtZW50ID0gZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKSkpCisg
ICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNpZmllciA9PSBBRlRFUiAmJiAocHNldWRvRWxlbWVu
dCA9IG1fZWxlbWVudC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gcHNl
dWRvRWxlbWVudDsKLSAgICByZXR1cm4gJmVsZW1lbnQ7CisgICAgcmV0dXJuIG1fZWxlbWVudC5n
ZXQoKTsKIH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCkBAIC0yMzI2LDYwICsyMzM5
LDYzIEBAIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIHJlc29sdmVBbGkKIAogUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihtX2VsZW1lbnQuY29w
eVJlZigpLCBtX2FsbG93VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLnBy
b3BlcnR5VmFsdWUocHJvcGVydHlJRCwgdXBkYXRlTGF5b3V0KTsKKyAgICByZXR1cm4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3RvcihtX2VsZW1lbnQucHRyKCksIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1f
cHNldWRvRWxlbWVudFNwZWNpZmllcikucHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlELCB1cGRhdGVM
YXlvdXQpOwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVydGllcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENvbXB1
dGVkU3R5bGVFeHRyYWN0b3IobV9lbGVtZW50LmNvcHlSZWYoKSwgbV9hbGxvd1Zpc2l0ZWRTdHls
ZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKS5jb3B5UHJvcGVydGllcygpOworICAgIHJldHVy
biBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fZWxlbWVudC5wdHIoKSwgbV9hbGxvd1Zpc2l0ZWRT
dHlsZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKS5jb3B5UHJvcGVydGllcygpOwogfQogCi1z
dGF0aWMgaW5saW5lIGJvb2wgbm9kZU9ySXRzQW5jZXN0b3JOZWVkc1N0eWxlUmVjYWxjKGNvbnN0
IE5vZGUmIG5vZGUpCitzdGF0aWMgaW5saW5lIGJvb2wgZWxlbWVudE9ySXRzQW5jZXN0b3JOZWVk
c1N0eWxlUmVjYWxjKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKG5vZGUubmVlZHNTdHls
ZVJlY2FsYygpKQorICAgIGlmIChlbGVtZW50Lm5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKGVsZW1lbnQuZG9jdW1lbnQoKS5oYXNQZW5kaW5nRm9yY2Vk
U3R5bGVSZWNhbGMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFlbGVtZW50LmRv
Y3VtZW50KCkuY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGNvbnN0IE5vZGUqIGN1cnJlbnROb2RlID0gJm5vZGU7Ci0gICAgY29uc3QgRWxlbWVu
dCogYW5jZXN0b3IgPSBjdXJyZW50Tm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOwot
ICAgIHdoaWxlIChhbmNlc3RvcikgewotICAgICAgICBpZiAoYW5jZXN0b3ItPm5lZWRzU3R5bGVS
ZWNhbGMoKSkKKyAgICBjb25zdCBhdXRvKiBjdXJyZW50RWxlbWVudCA9ICZlbGVtZW50OworICAg
IGZvciAoYXV0byYgYW5jZXN0b3IgOiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoZWxlbWVudCkpIHsK
KyAgICAgICAgaWYgKGFuY2VzdG9yLm5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgICAgIGlmIChhbmNlc3Rvci0+ZGlyZWN0Q2hpbGROZWVkc1N0eWxl
UmVjYWxjKCkgJiYgY3VycmVudE5vZGUtPnN0eWxlSXNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5n
KCkpCisgICAgICAgIGlmIChhbmNlc3Rvci5kaXJlY3RDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSAm
JiBjdXJyZW50RWxlbWVudC0+c3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGN1cnJlbnROb2RlID0gYW5jZXN0b3I7
Ci0gICAgICAgIGFuY2VzdG9yID0gY3VycmVudE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1l
bnQoKTsKKyAgICAgICAgY3VycmVudEVsZW1lbnQgPSAmYW5jZXN0b3I7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgdXBkYXRlU3R5bGVJZk5lZWRlZEZvck5vZGUo
Y29uc3QgTm9kZSYgbm9kZSkKK3N0YXRpYyBib29sIHVwZGF0ZVN0eWxlSWZOZWVkZWRGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbm9kZS5k
b2N1bWVudCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwogCiAg
ICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmZsdXNoUGVuZGluZ1VwZGF0ZSgpOwogCi0gICAgaWYg
KCFkb2N1bWVudC5oYXNQZW5kaW5nRm9yY2VkU3R5bGVSZWNhbGMoKSAmJiAhKGRvY3VtZW50LmNo
aWxkTmVlZHNTdHlsZVJlY2FsYygpICYmIG5vZGVPckl0c0FuY2VzdG9yTmVlZHNTdHlsZVJlY2Fs
Yyhub2RlKSkpCisgICAgaWYgKCFlbGVtZW50T3JJdHNBbmNlc3Rvck5lZWRzU3R5bGVSZWNhbGMo
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGRvY3VtZW50LnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBjb25z
dCBSZW5kZXJTdHlsZSogY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoTm9kZSogc3R5bGVk
Tm9kZSwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciwgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBvd25lZFN0eWxlKQorc3RhdGlj
IGlubGluZSBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHko
RWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBvd25lZFN0
eWxlKQogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5yZW5kZXJl
cigpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogCiAgICAgaWYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBBbmltYXRpb25Db250cm9s
bGVyOjpzdXBwb3J0c0FjY2VsZXJhdGVkQW5pbWF0aW9uT2ZQcm9wZXJ0eShwcm9wZXJ0eUlEKSkg
ewotICAgICAgICBvd25lZFN0eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLmdldEFuaW1hdGVk
U3R5bGVGb3JSZW5kZXJlcihkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpKTsKLSAg
ICAgICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgJiYgIXN0eWxlZE5vZGUtPmlzUHNldWRv
RWxlbWVudCgpKSB7CisgICAgICAgIG93bmVkU3R5bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCku
Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKCpyZW5kZXJlcik7CisgICAgICAgIGlmIChwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWNoZWQgcHNldWRvIHN0eWxlIHdpbGwgb25seSBleGlz
dCBpZiB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICAg
ICAgcmV0dXJuIG93bmVkU3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBvd25lZFN0eWxlLmdldCgpOwog
ICAgIH0KIAotICAgIHJldHVybiBzdHlsZWROb2RlLT5jb21wdXRlZFN0eWxlKHN0eWxlZE5vZGUt
PmlzUHNldWRvRWxlbWVudCgpID8gTk9QU0VVRE8gOiBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsK
KyAgICByZXR1cm4gZWxlbWVudC5jb21wdXRlZFN0eWxlKGVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50
KCkgPyBOT1BTRVVETyA6IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwogfQogCiBzdGF0aWMgUmVm
PENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQpAQCAtMjQ0NiwzNiArMjQ2MiwzNSBAQCBpbmxp
bmUgc3RhdGljIGJvb2wgaXNGbGV4T3JHcmlkKENvbnRhaW5lCiAgICAgcmV0dXJuIGVsZW1lbnQg
JiYgZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpICYmIGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKS0+
aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goKTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBjb25zdAorUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAg
IE5vZGUqIHN0eWxlZE5vZGUgPSB0aGlzLT5zdHlsZWROb2RlKCk7Ci0gICAgaWYgKCFzdHlsZWRO
b2RlKQorICAgIEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSB0aGlzLT5zdHlsZWRFbGVtZW50KCk7
CisgICAgaWYgKCFzdHlsZWRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
LSAgICBpZiAodXBkYXRlU3R5bGVJZk5lZWRlZEZvck5vZGUoKnN0eWxlZE5vZGUpKSB7Ci0gICAg
ICAgIC8vIFRoZSBzdHlsZSByZWNhbGMgY291bGQgaGF2ZSBjYXVzZWQgdGhlIHN0eWxlZCBub2Rl
IHRvIGJlIGRpc2NhcmRlZCBvciByZXBsYWNlZAotICAgICAgICAvLyBpZiBpdCB3YXMgYSBQc2V1
ZG9FbGVtZW50IHNvIHdlIG5lZWQgdG8gdXBkYXRlIGl0LgotICAgICAgICBzdHlsZWROb2RlID0g
dGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmICh1cGRhdGVTdHlsZUlmTmVlZGVkRm9yRWxlbWVu
dCgqc3R5bGVkRWxlbWVudCkpIHsKKyAgICAgICAgLy8gU3R5bGUgdXBkYXRlIG1heSBjaGFuZ2Ug
c3R5bGVkRWxlbWVudCgpIHRvIFBzZXVkb0VsZW1lbnQgb3IgYmFjay4KKyAgICAgICAgc3R5bGVk
RWxlbWVudCA9IHRoaXMtPnN0eWxlZEVsZW1lbnQoKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IG93bmVkU3R5bGU7Ci0gICAgYXV0byogc3R5bGUgPSBjb21wdXRl
UmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShzdHlsZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIsIENTU1Byb3BlcnR5Q3VzdG9tLCBvd25lZFN0eWxlKTsKKyAgICBhdXRvKiBzdHlsZSA9IGNv
bXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KCpzdHlsZWRFbGVtZW50LCBtX3BzZXVkb0VsZW1l
bnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5Q3VzdG9tLCBvd25lZFN0eWxlKTsKICAgICBpZiAoIXN0
eWxlIHx8ICFzdHlsZS0+aGFzQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFs
dWUocHJvcGVydHlOYW1lKTsKIH0KIAotU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1
c3RvbVByb3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK1N0cmlu
ZyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVRleHQoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBwcm9wZXJ0eVZhbHVlID0g
dGhpcy0+Y3VzdG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gcHJvcGVydHlWYWx1ZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsK
ICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZSA/IHByb3BlcnR5VmFsdWUtPmNzc1RleHQoKSA6IGVt
cHR5U3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQg
dXBkYXRlTGF5b3V0KSBjb25zdAorUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91
dCB1cGRhdGVMYXlvdXQpCiB7Ci0gICAgTm9kZSogc3R5bGVkTm9kZSA9IHRoaXMtPnN0eWxlZE5v
ZGUoKTsKLSAgICBpZiAoIXN0eWxlZE5vZGUpCisgICAgYXV0byogc3R5bGVkRWxlbWVudCA9IHRo
aXMtPnN0eWxlZEVsZW1lbnQoKTsKKyAgICBpZiAoIXN0eWxlZEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvd25lZFN0
eWxlOwpAQCAtMjQ4MywzNSArMjQ5OCwzMyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG51bGxwdHI7CiAgICAg
Ym9vbCBmb3JjZUZ1bGxMYXlvdXQgPSBmYWxzZTsKICAgICBpZiAodXBkYXRlTGF5b3V0KSB7Ci0g
ICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHN0eWxlZE5vZGUtPmRvY3VtZW50KCk7CisgICAg
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsKIAotICAgICAg
ICBpZiAodXBkYXRlU3R5bGVJZk5lZWRlZEZvck5vZGUoKnN0eWxlZE5vZGUpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgc3R5bGUgcmVjYWxjIGNvdWxkIGhhdmUgY2F1c2VkIHRoZSBzdHlsZWQgbm9k
ZSB0byBiZSBkaXNjYXJkZWQgb3IgcmVwbGFjZWQKLSAgICAgICAgICAgIC8vIGlmIGl0IHdhcyBh
IFBzZXVkb0VsZW1lbnQgc28gd2UgbmVlZCB0byB1cGRhdGUgaXQuCi0gICAgICAgICAgICBzdHls
ZWROb2RlID0gdGhpcy0+c3R5bGVkTm9kZSgpOworICAgICAgICBpZiAodXBkYXRlU3R5bGVJZk5l
ZWRlZEZvckVsZW1lbnQoKnN0eWxlZEVsZW1lbnQpKSB7CisgICAgICAgICAgICAvLyBTdHlsZSB1
cGRhdGUgbWF5IGNoYW5nZSBzdHlsZWRFbGVtZW50KCkgdG8gUHNldWRvRWxlbWVudCBvciBiYWNr
LgorICAgICAgICAgICAgc3R5bGVkRWxlbWVudCA9IHRoaXMtPnN0eWxlZEVsZW1lbnQoKTsKICAg
ICAgICAgfQorICAgICAgICByZW5kZXJlciA9IHN0eWxlZEVsZW1lbnQtPnJlbmRlcmVyKCk7CiAK
LSAgICAgICAgcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5yZW5kZXJlcigpOwotCi0gICAgICAgIGlm
IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5RGlzcGxheSAmJiAhcmVuZGVyZXIgJiYgaXM8U1ZH
RWxlbWVudD4oKnN0eWxlZE5vZGUpICYmICFkb3duY2FzdDxTVkdFbGVtZW50Pigqc3R5bGVkTm9k
ZSkuaXNWYWxpZCgpKQorICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eURpc3Bs
YXkgJiYgIXJlbmRlcmVyICYmIGlzPFNWR0VsZW1lbnQ+KCpzdHlsZWRFbGVtZW50KSAmJiAhZG93
bmNhc3Q8U1ZHRWxlbWVudD4oKnN0eWxlZEVsZW1lbnQpLmlzVmFsaWQoKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9y
UHJvcGVydHkoc3R5bGVkTm9kZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBwcm9wZXJ0eUlE
LCBvd25lZFN0eWxlKTsKKyAgICAgICAgc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9w
ZXJ0eSgqc3R5bGVkRWxlbWVudCwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBwcm9wZXJ0eUlE
LCBvd25lZFN0eWxlKTsKIAogICAgICAgICAvLyBGSVhNRTogU29tZSBvZiB0aGVzZSBjYXNlcyBj
b3VsZCBiZSBuYXJyb3dlZCBkb3duIG9yIG9wdGltaXplZCBiZXR0ZXIuCiAgICAgICAgIGZvcmNl
RnVsbExheW91dCA9IGlzTGF5b3V0RGVwZW5kZW50KHByb3BlcnR5SUQsIHN0eWxlLCByZW5kZXJl
cikKLSAgICAgICAgICAgIHx8IHN0eWxlZE5vZGUtPmlzSW5TaGFkb3dUcmVlKCkKKyAgICAgICAg
ICAgIHx8IHN0eWxlZEVsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkKICAgICAgICAgICAgIHx8IChk
b2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXJJZkV4aXN0cygpICYmIGRvY3VtZW50LnN0eWxl
U2NvcGUoKS5yZXNvbHZlcklmRXhpc3RzKCktPmhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVy
aWVzKCkgJiYgZG9jdW1lbnQub3duZXJFbGVtZW50KCkpOwogCiAgICAgICAgIGlmIChmb3JjZUZ1
bGxMYXlvdXQpIHsKICAgICAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwotICAgICAgICAgICAgc3R5bGVkTm9kZSA9IHRoaXMtPnN0eWxlZE5v
ZGUoKTsKKyAgICAgICAgICAgIHN0eWxlZEVsZW1lbnQgPSB0aGlzLT5zdHlsZWRFbGVtZW50KCk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXVwZGF0ZUxheW91dCB8fCBmb3JjZUZ1bGxM
YXlvdXQpIHsKLSAgICAgICAgc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShz
dHlsZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIsIHByb3BlcnR5SUQsIG93bmVkU3R5
bGUpOwotICAgICAgICByZW5kZXJlciA9IHN0eWxlZE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAg
IHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoKnN0eWxlZEVsZW1lbnQsIG1f
cHNldWRvRWxlbWVudFNwZWNpZmllciwgcHJvcGVydHlJRCwgb3duZWRTdHlsZSk7CisgICAgICAg
IHJlbmRlcmVyID0gc3R5bGVkRWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICB9CiAKICAgICBpZiAo
IXN0eWxlKQpAQCAtMjgxOSw3ICsyODMyLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChz
dHlsZS0+YWxpZ25JdGVtcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduU2VsZjoK
LSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdu
bWVudChyZXNvbHZlQWxpZ25TZWxmQXV0byhzdHlsZS0+YWxpZ25TZWxmKCksIHN0eWxlZE5vZGUt
PnBhcmVudE5vZGUoKSkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9ySXRlbVBvc2l0aW9u
V2l0aE92ZXJmbG93QWxpZ25tZW50KHJlc29sdmVBbGlnblNlbGZBdXRvKHN0eWxlLT5hbGlnblNl
bGYoKSwgc3R5bGVkRWxlbWVudC0+cGFyZW50Tm9kZSgpKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlGbGV4OgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hv
cnRoYW5kUHJvcGVydGllcyhmbGV4U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5RmxleEJhc2lzOgpAQCAtMjgzOCw5ICsyODUxLDkgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQ29udGVudFBv
c2l0aW9uQW5kRGlzdHJpYnV0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KHN0eWxlLT5qdXN0aWZ5
Q29udGVudCgpLCBDU1NWYWx1ZUZsZXhTdGFydCk7CiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtczoKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChyZXNvbHZlSnVz
dGlmeUl0ZW1zQXV0byhzdHlsZS0+anVzdGlmeUl0ZW1zKCksIHN0eWxlZE5vZGUtPnBhcmVudE5v
ZGUoKSkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJm
bG93QWxpZ25tZW50KHJlc29sdmVKdXN0aWZ5SXRlbXNBdXRvKHN0eWxlLT5qdXN0aWZ5SXRlbXMo
KSwgc3R5bGVkRWxlbWVudC0+cGFyZW50Tm9kZSgpKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlKdXN0aWZ5U2VsZjoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldp
dGhPdmVyZmxvd0FsaWdubWVudChyZXNvbHZlSnVzdGlmeVNlbGZBdXRvKHN0eWxlLT5qdXN0aWZ5
U2VsZigpLCBzdHlsZWROb2RlLT5wYXJlbnROb2RlKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChyZXNvbHZlSnVzdGlmeVNl
bGZBdXRvKHN0eWxlLT5qdXN0aWZ5U2VsZigpLCBzdHlsZWRFbGVtZW50LT5wYXJlbnROb2RlKCkp
KTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5vcmRlcigpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CkBAIC0yODkwLDcgKzI5MDMsNyBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVkFSSUFU
SU9OX0ZPTlRTKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdz
OiB7Ci0gICAgICAgICAgICBpZiAoc3R5bGVkTm9kZS0+ZG9jdW1lbnQoKS5zZXR0aW5ncygpICYm
IHN0eWxlZE5vZGUtPmRvY3VtZW50KCkuc2V0dGluZ3MoKS0+dmFyaWF0aW9uRm9udHNFbmFibGVk
KCkpIHsKKyAgICAgICAgICAgIGlmIChzdHlsZWRFbGVtZW50LT5kb2N1bWVudCgpLnNldHRpbmdz
KCkgJiYgc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQoKS5zZXR0aW5ncygpLT52YXJpYXRpb25Gb250
c0VuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5n
cyYgdmFyaWF0aW9uU2V0dGluZ3MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWF0aW9u
U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0
eSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CkBAIC0zMDc2LDE0ICszMDg5LDE0IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5taW5IZWln
aHQoKS5pc0F1dG8oKSkgewotICAgICAgICAgICAgICAgIGlmIChpc0ZsZXhPckdyaWQoc3R5bGVk
Tm9kZS0+cGFyZW50Tm9kZSgpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNGbGV4T3JHcmlkKHN0
eWxlZEVsZW1lbnQtPnBhcmVudE5vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoMCwgKnN0eWxlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5taW5IZWlnaHQoKSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1pbldpZHRoOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5taW5XaWR0aCgpLmlzQXV0bygpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzRmxleE9yR3JpZChzdHlsZWROb2RlLT5wYXJlbnROb2Rl
KCkpKQorICAgICAgICAgICAgICAgIGlmIChpc0ZsZXhPckdyaWQoc3R5bGVkRWxlbWVudC0+cGFy
ZW50Tm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCAqc3R5bGUpOwogICAgICAgICAgICAgfQpAQCAtMzk2
NCwxMCArMzk3Nyw5IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFAK
IAogdW5zaWduZWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpsZW5ndGgoKSBjb25zdAog
ewotICAgIGF1dG8mIGVsZW1lbnQgPSBtX2VsZW1lbnQuZ2V0KCk7Ci0gICAgdXBkYXRlU3R5bGVJ
Zk5lZWRlZEZvck5vZGUoZWxlbWVudCk7CisgICAgdXBkYXRlU3R5bGVJZk5lZWRlZEZvckVsZW1l
bnQobV9lbGVtZW50LmdldCgpKTsKIAotICAgIGF1dG8qIHN0eWxlID0gY29uc3RfY2FzdDxFbGVt
ZW50Jj4oZWxlbWVudCkuY29tcHV0ZWRTdHlsZShtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwor
ICAgIGF1dG8qIHN0eWxlID0gbV9lbGVtZW50LT5jb21wdXRlZFN0eWxlKG1fcHNldWRvRWxlbWVu
dFNwZWNpZmllcik7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM5
ODIsOCArMzk5NCw3IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0K
ICAgICBpZiAoaSA8IG51bUNvbXB1dGVkUHJvcGVydGllcykKICAgICAgICAgcmV0dXJuIGdldFBy
b3BlcnR5TmFtZVN0cmluZyhjb21wdXRlZFByb3BlcnRpZXNbaV0pOwogICAgIAotICAgIGF1dG8m
IGVsZW1lbnQgPSBtX2VsZW1lbnQuZ2V0KCk7Ci0gICAgYXV0byogc3R5bGUgPSBjb25zdF9jYXN0
PEVsZW1lbnQmPihlbGVtZW50KS5jb21wdXRlZFN0eWxlKG1fcHNldWRvRWxlbWVudFNwZWNpZmll
cik7CisgICAgYXV0byogc3R5bGUgPSBtX2VsZW1lbnQtPmNvbXB1dGVkU3R5bGUobV9wc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgCkBAIC0zOTk4LDExICs0MDA5LDEzIEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246Oml0ZW0KICAgICByZXR1cm4gcmVzdWx0cy5hdChpbmRleCk7CiB9CiAKLWJv
b2wgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdAorYm9vbCBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eU1hdGNoZXMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBj
b25zdCBDU1NWYWx1ZSogdmFsdWUpCiB7Ci0gICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVy
dHlGb250U2l6ZSAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSAmJiBtX25vZGUpIHsK
LSAgICAgICAgbV9ub2RlLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwotICAgICAgICBpZiAoYXV0byogc3R5bGUgPSBtX25vZGUtPmNvbXB1dGVkU3R5
bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkgeworICAgIGlmICghbV9lbGVtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlGb250
U2l6ZSAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSkgeworICAgICAgICBtX2VsZW1l
bnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Cisg
ICAgICAgIGlmIChhdXRvKiBzdHlsZSA9IG1fZWxlbWVudC0+Y29tcHV0ZWRTdHlsZShtX3BzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpKSB7CiAgICAgICAgICAgICBpZiAoQ1NTVmFsdWVJRCBzaXplSWRl
bnRpZmllciA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZUFzSWRlbnRpZmll
cigpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUuaXNWYWx1ZUlEKCkgJiYgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IHNpemVJZGVu
dGlmaWVyKQpAQCAtNDAxNCwxMiArNDAyNywxMiBAQCBib29sIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5TWF0CiAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWUgJiYgdmFsdWUgJiYgY29t
cHV0ZWRWYWx1ZS0+ZXF1YWxzKCp2YWx1ZSk7CiB9CiAKLVJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpIGNvbnN0CitSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3Bl
cnRpZXMoKQogewogICAgIHJldHVybiBjb3B5UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVy
dGllcywgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QK
K1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CkBAIC00MDI5LDcgKzQwNDIsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjCiAgICAgcmV0dXJuIGxpc3Q7CiB9
CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYgc2hvcnRoYW5kKSBjb25zdAorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAvLyBB
c3N1bWUgdGhlIHByb3BlcnRpZXMgYXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQuCkBAIC00MDU3LDcgKzQwNzAsNyBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
b21wdXRlZFN0eWxlRXh0cmFjCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3Jp
ZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0
CitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9w
ZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYg
c2hvcnRoYW5kKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgewpAQCAtNDA2Nyw3ICs0MDgwLDcgQEAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhYwogICAgIHJldHVybiBsaXN0OwogfQogCi1S
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVBy
b3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3Qu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwpAQCAtNDA4Nyw3ICs0MTAwLDcgQEAgQ1NT
UnVsZSogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpwYQogUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3Bl
cnR5TmFtZSkpCi0gICAgICAgIHJldHVybiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fZWxlbWVu
dC5jb3B5UmVmKCksIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmll
cikuY3VzdG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3RvcihtX2VsZW1lbnQucHRyKCksIG1fYWxsb3dWaXNpdGVkU3R5bGUs
IG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY3VzdG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5h
bWUpOwogCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9w
ZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKQEAgLTQwOTksNyArNDExMiw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmEKIFN0cmluZyBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpCi0g
ICAgICAgIHJldHVybiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fZWxlbWVudC5jb3B5UmVmKCks
IG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY3VzdG9tUHJv
cGVydHlUZXh0KHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yKG1fZWxlbWVudC5wdHIoKSwgbV9hbGxvd1Zpc2l0ZWRTdHlsZSwgbV9wc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyKS5jdXN0b21Qcm9wZXJ0eVRleHQocHJvcGVydHlOYW1lKTsKIAogICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIXByb3BlcnR5SUQpCkBAIC00MTQ4LDcgKzQxNjEsNyBAQCBFeGNlcHRpb25Pcjxib29s
PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyCiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PX01PRElG
SUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCi1SZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKSBjb25zdAorUmVmPENT
U1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFu
ZFZhbHVlKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzQmVm
b3JlU2xhc2hTZXBlcmF0b3JbNV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
biB9OwogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNBZnRlclNsYXNo
U2VwZXJhdG9yWzNdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlz
aW9uIDIwNzY2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNDAgKzQ3LDM5IEBAIGVudW0gQWRqdXN0UGl4
ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIHsKIAogY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
ciB7CiBwdWJsaWM6Ci0gICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihSZWZQdHI8Tm9kZT4mJiwg
Ym9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKKyAg
ICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKE5vZGUqLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0g
ZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOworICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3Io
RWxlbWVudCosIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BT
RVVETyk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7Ci0gICAgU3RyaW5nIGN1c3Rv
bVByb3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlPiBjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCk7CisgICAgU3RyaW5nIGN1c3RvbVBy
b3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CisgICAgUmVmUHRyPENTU1Zh
bHVlPiBjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKIAog
ICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBIVE1MIGVkaXRpbmcuCi0gICAgUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCog
c2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwotICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0OwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gZ2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCkgY29uc3Q7Ci0gICAgYm9v
bCB1c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgcHJvcGVydHlNYXRj
aGVzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlKikgY29uc3Q7CisgICAgUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJ
RCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBjb3B5UHJvcGVydGllcygpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0Rm9u
dFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCk7CisgICAgYm9vbCB1c2VGaXhlZEZvbnRE
ZWZhdWx0U2l6ZSgpOworICAgIGJvb2wgcHJvcGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQsIGNv
bnN0IENTU1ZhbHVlKik7CiAKICAgICBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckZpbHRl
cihjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBBZGp1c3RQaXhl
bFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZhbHVlcyk7CiAKIHByaXZhdGU6
Ci0gICAgLy8gVGhlIHN0eWxlZCBub2RlIGlzIGVpdGhlciB0aGUgbm9kZSBwYXNzZWQgaW50byBj
b21wdXRlZFByb3BlcnR5VmFsdWUsIG9yIHRoZQorICAgIC8vIFRoZSBzdHlsZWQgZWxlbWVudCBp
cyBlaXRoZXIgdGhlIGVsZW1lbnQgcGFzc2VkIGludG8gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLCBv
ciB0aGUKICAgICAvLyBQc2V1ZG9FbGVtZW50IGZvciA6YmVmb3JlIGFuZCA6YWZ0ZXIgaWYgdGhl
eSBleGlzdC4KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgc3R5bGVkRWxlbWVudCBzaW5j
ZSBpbiBKUyBnZXRDb21wdXRlZFN0eWxlIG9ubHkgd29ya3MKLSAgICAvLyBvbiBFbGVtZW50cywg
YnV0IHJpZ2h0IG5vdyBlZGl0aW5nIGNyZWF0ZXMgdGhlc2UgZm9yIHRleHQgbm9kZXMuIFdlIHNo
b3VsZCBmaXggdGhhdC4KLSAgICBOb2RlKiBzdHlsZWROb2RlKCkgY29uc3Q7CisgICAgRWxlbWVu
dCogc3R5bGVkRWxlbWVudCgpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gc3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KTsKICAg
ICBSZWZQdHI8U1ZHUGFpbnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFJlZlB0cjxT
VkdQYWludD4mJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAgIHN0YXRpYyBSZWY8
Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBDU1NQcm9wZXJ0eUlE
LCBjb25zdCBSZW5kZXJTdHlsZSYsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9
IEFkanVzdFBpeGVsVmFsdWVzKTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJl
bnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29u
c3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNo
b3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0Owot
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9y
dGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OwotICAgIFJlZjxDU1NW
YWx1ZUxpc3Q+IGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0OwotICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9w
ZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KTsKKyAgICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9y
dGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCi0gICAgUmVmUHRyPE5vZGU+
IG1fbm9kZTsKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFBzZXVkb0lkIG1f
cHNldWRvRWxlbWVudFNwZWNpZmllcjsKICAgICBib29sIG1fYWxsb3dWaXNpdGVkU3R5bGU7CiB9
OwpAQCAtMTA1LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgQ1NTUnVsZSogcGFyZW50UnVsZSgp
IGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsOwogICAgIFN0
cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFs
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSk7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlT
aG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwpAQCAtMTIxLDcgKzEy
MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAK
LSAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50OworICAgIG11dGFibGUgUmVmPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CiAgICAgYm9v
bCBtX2FsbG93VmlzaXRlZFN0eWxlOwogICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkocmV2aXNpb24gMjA3NjY5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcg
QEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHUGFpbnQuaCIKIApA
QCAtMTAwLDE3ICsxMDEsMTYgQEAgUmVmUHRyPFNWR1BhaW50PiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOgogICAgIHJldHVybiBXVEZNb3ZlKHBhaW50KTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CitSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkKIHsKLSAgICBOb2RlKiBu
b2RlID0gbV9ub2RlLmdldCgpOwotICAgIGlmICghbm9kZSkKKyAgICBpZiAoIW1fZWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBNYWtlIHN1cmUgb3VyIGxheW91dCBp
cyB1cCB0byBkYXRlIGJlZm9yZSB3ZSBhbGxvdyBhIHF1ZXJ5IG9uIHRoZXNlIGF0dHJpYnV0ZXMu
CiAgICAgaWYgKHVwZGF0ZUxheW91dCkKLSAgICAgICAgbm9kZS0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXQoKTsKKyAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwog
Ci0gICAgYXV0byogc3R5bGUgPSBub2RlLT5jb21wdXRlZFN0eWxlKCk7CisgICAgYXV0byogc3R5
bGUgPSBtX2VsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcAkocmV2aXNpb24gMjA3NjY5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY0LDcgKzEzNjQsNyBAQCB2b2lkIEVk
aXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci12b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3Qg
VCYgc3R5bGUpCit2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMo
VCYgc3R5bGUpCiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXNUb1JlbW92
ZTsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9tdXRhYmxlU3R5bGUtPm1fcHJvcGVydHlW
ZWN0b3IpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNp
b24gMjA3NjY5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUJs
b2NrUHJvcGVydGllcygpOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShOb2RlKik7
CiAgICAgdm9pZCByZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUqKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVz
KGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlbW92ZUVxdWl2YWxl
bnRQcm9wZXJ0aWVzKFQmKTsKICAgICB2b2lkIGNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0
aWVzKCk7CiAgICAgZW51bSBTaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgeyBJZ25vcmVU
ZXh0T25seVByb3BlcnRpZXMsIERvTm90SWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzIH07CiAgICAg
VHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlKEVkaXRpbmdTdHlsZSopIGNvbnN0Owo=
</data>
<flag name="review"
          id="315455"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>