<?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>64850</bug_id>
          
          <creation_ts>2011-07-20 00:12:15 -0700</creation_ts>
          <short_desc>[Refactoring] ShadowContentSelector should be ShadowInclusionSelector</short_desc>
          <delta_ts>2011-07-21 20:13:02 -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>DOM</component>
          <version>528+ (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>
          
          <blocked>64072</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>439656</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-20 00:12:15 -0700</bug_when>
    <thetext>A rename proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440796</commentid>
    <comment_count>1</comment_count>
      <attachid>101689</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-21 19:34:11 -0700</bug_when>
    <thetext>Created attachment 101689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440811</commentid>
    <comment_count>2</comment_count>
      <attachid>101689</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 20:12:58 -0700</bug_when>
    <thetext>Comment on attachment 101689
Patch

Clearing flags on attachment: 101689

Committed r91548: &lt;http://trac.webkit.org/changeset/91548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440812</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 20:13:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101689</attachid>
            <date>2011-07-21 19:34:11 -0700</date>
            <delta_ts>2011-07-21 20:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk64850.diff</filename>
            <type>text/plain</type>
            <size>37782</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2M3ODYwMy4uODFhZWNmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTU3Niw3ICs1NzYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwCiAgICAgZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCiAgICAgZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmNwcAotICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuY3Bw
CisgICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcAogICAgIGRvbS9TaGFkb3dSb290
LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAogICAgIGRvbS9TdGF0aWNIYXNoU2V0
Tm9kZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwMjVhMi4uMTI5OThhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDczIEBACisyMDExLTA3LTIxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU2hhZG93Q29udGVudFNlbGVjdG9yIHNo
b3VsZCBiZSBTaGFkb3dJbmNsdXNpb25TZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkOgorICAgICAgICAtIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvciAtPiBTaGFkb3dJbmNsdXNpb25TZWxlY3RvcgorICAgICAgICAtIFNoYWRvd0NvbnRl
bnRTZWxlY3Rvcjo6ZmluZEluY2x1c2lvbkZvciAtPiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6
ZmluZEZvcgorICAgICAgICAtIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0SW5jbHVzaW9u
IC0+IFNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxlY3QKKyAgICAgICAgLSBTaGFkb3dDb250
ZW50U2VsZWN0b3I6OnVuc2VsZWN0SW5jbHVzaW9uIC0+IFNoYWRvd0luY2x1c2lvblNlbGVjdG9y
Ojp1bnNlbGVjdAorICAgICAgICAtIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6ZGlkU2VsZWN0SW5j
bHVzaW9uIC0+IFNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpkaWRTZWxlY3QKKyAgICAgICAgLSBT
aGFkb3dDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RJbmNsdXNpb25PdmVyIC0+IFNoYWRvd0lu
Y2x1c2lvblNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcgorICAgICAgICAtIFNoYWRvd0NvbnRlbnRT
ZWxlY3Rvcjo6aGFzQ2hpbGRyZW4gLT4gU2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6Omhhc0NhbmRp
ZGF0ZXMKKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gSnVzdCBhIHRleHR1YWwgY2hh
bmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9u
ZS5jcHA6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KiBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Q29udGVudEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50
RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3Iu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rv
ci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OnVubGluayk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dJbmNsdXNpb25MaXN0OjpTaGFkb3dJbmNsdXNpb25MaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6On5TaGFkb3dJbmNsdXNpb25MaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6OmZpbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
SW5jbHVzaW9uTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lv
blNlbGVjdG9yOjpTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6flNoYWRvd0luY2x1c2lvblNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6OnVuc2VsZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpmaW5kRm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpkaWRTZWxlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAgICAgICAgKiBk
b20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0lu
Y2x1c2lvbjo6aW5jbHVkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uOjpj
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbjo6bmV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OnByZXZpb3VzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0luY2x1c2lvbjo6U2hhZG93SW5jbHVzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1
c2lvbkxpc3Q6OmZpcnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6
Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6aXNFbXB0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6OmFkZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dJbmNsdXNpb25TZXQ6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5j
bHVzaW9uU2V0OjpUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0lu
Y2x1c2lvblNldDo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
SW5jbHVzaW9uU2V0OjpIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1
c2lvblNldDo6SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9u
U2V0OjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpo
YXNDYW5kaWRhdGVzKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290OjppbmNsdWRlckZvcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dSb290OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW5jbHVzaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjplbnN1cmVJbmNsdXNpb25zKToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorCiAyMDExLTA3LTIxICBSYWZhZWwgQnJhbmRhbyAg
PHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgTG9jYWwgZmlsZXMgY2Fubm90
IGxvYWQgaWNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2ZDRjNjRmLi42
MTQ4NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEyNzMsOCArMTI3Myw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9k
ZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAotCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJ
bmNsdXNpb25TZWxlY3Rvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNp
b25TZWxlY3Rvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFj
ZVNwbGl0U3RyaW5nLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNWE4MzAzNS4uZmQyMmNjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjU5Myw4ICsyNTkzLDggQEAKICAgICAgICAgICAgICdkb20v
U2VsZWN0b3JOb2RlTGlzdC5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCi0gICAg
ICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5jcHAnLAotICAgICAgICAgICAgJ2Rv
bS9TaGFkb3dDb250ZW50U2VsZWN0b3IuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmNwcCcsCiAgICAgICAgICAgICAn
ZG9tL1NoYWRvd1Jvb3QuaCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggZDVjNzM1ZC4uYzgyMGQ4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTUzOCw3ICs1MzgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAg
XAogICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcCBcCiAgICAgZG9tL1NoYWRvd0NvbnRlbnRF
bGVtZW50LmNwcCBcCi0gICAgZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5jcHAgXAorICAgIGRv
bS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFkb3dSb290LmNwcCBc
CiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKICAgICBkb20vU3RhdGljTm9kZUxpc3Qu
Y3BwIFwKQEAgLTE1MjEsNyArMTUyMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TZWxlY3RF
bGVtZW50LmggXAogICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmggXAogICAgIGRvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5oIFwKLSAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmggXAorICAg
IGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwKICAgICBkb20vU2hhZG93Um9vdC5oIFwK
ICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKICAgICBkb20vU3RhdGljTm9kZUxpc3QuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGE0
OGUwZjQuLjhjZTMzN2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC00ODE1MCw3ICs0ODE1MCw3IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2VsZWN0b3IuY3Bw
IgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgpA
QCAtNDgyMDIsNyArNDgyMDIsNyBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxl
Y3Rvci5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOTFlM2I3Li4yOWM4NWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zMzMwLDggKzMzMzAsOCBAQAogCQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmggKi87IH07CiAJCUE3MTg3NjBFMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc2MEQw
QjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcxODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERy
YWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1t
ICovOyB9OwotCQlBNzFDMzBCODEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwICovOyB9
OwotCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFDMzBCNzEz
ODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmggKi87IH07CisJCUE3MUMz
MEI4MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFDMzBCNjEzODEyNjVF
MDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovOyB9OworCQlBNzFDMzBC
OTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI3MTM4MTI2NUUwMERC
QzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oICovOyB9OwogCQlBNzNGOTVGRTEyQzk3
QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRS
ZWN0LmNwcCAqLzsgfTsKIAkJQTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVG
RDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzRCQjc2QjEzQkRBODYzMDBGRjdCRjAgLyog
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTk4OTksOCArOTg5OSw4IEBACiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAv
KiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4Nzg4RjBCMkQwNEFDMDBB
MTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEcmFnQ29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTcxQTcwQzkxMUFGQjAyMDAwOTg5RDZEIC8qIEhUTUxNZXRlckVsZW1lbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxNZXRlckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBNzFDMzBCNjEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29u
dGVudFNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YWRvd0NvbnRlbnRTZWxlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3
MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dJbmNsdXNpb25TZWxl
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVGQzEyQzk3QkZFMDAz
MUFBRjkgLyogUm91bmRlZFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUm91bmRlZFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNG
OTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUm91bmRlZFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODgyLDggKzE5ODgyLDggQEAK
IAkJCQlCQzdGQTY3RjBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oICovLAog
CQkJCUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAg
Ki8sCiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50
LmggKi8sCi0JCQkJQTcxQzMwQjYxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxl
Y3Rvci5jcHAgKi8sCi0JCQkJQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRl
bnRTZWxlY3Rvci5oICovLAorCQkJCUE3MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJ
bmNsdXNpb25TZWxlY3Rvci5jcHAgKi8sCisJCQkJQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8q
IFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggKi8sCiAJCQkJQTZEMTY5NjExMzQ2QjQ5QjAwMEVC
NzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLAogCQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBFQjc3MCAv
KiBTaGFkb3dSb290LmggKi8sCiAJCQkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNl
U3BsaXRTdHJpbmcuY3BwICovLApAQCAtMjI2NTIsNyArMjI2NTIsNyBAQAogCQkJCTQ5ODc3MEU5
MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0RENDUw
MTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzRD
MkQzQzEzODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE3MUMzMEI5MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MUMzMEI5MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMx
QjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0
NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNF
ODBBMTk4OUNBMDA3RkI4QzUgLyogU2hhZG93VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU1
NjIsNyArMjU1NjIsNyBAQAogCQkJCTQ5ODc3MEU4MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRv
d0JsdXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2NkNGOEMxMzgxMEUwQzAwMTFBMEIzIC8q
IFNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3MUMzMEI4MTM4
MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTcxQzMwQjgxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCOEMzMEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFk
b3dEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAv
KiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y0MEExOTg5Q0EwMDdG
QjhDNSAvKiBTaGFkb3dWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCmluZGV4IGYyOTM5ODkuLjNhZDE1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbElu
T25lLmNwcApAQCAtMTE1LDcgKzExNSw3IEBACiAjaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5jcHAi
CiAjaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwIgotI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3Rvci5jcHAiCisjaW5j
bHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
Y3BwIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3BwIgogI2luY2x1ZGUgIlN0YXRpY0hh
c2hTZXROb2RlTGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCAyOTgwOTBkLi5lMjc5YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJGdWxsU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2hh
ZG93Q29udGVudEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3IuaCIK
KyNpbmNsdWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5jcHAKaW5kZXggOTA1YWNhNS4uZWNlZTZkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5j
bHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
I2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIlNoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHZvaWQgU2hhZG93Q29udGVudEVsZW1lbnQ6OmF0dGFj
aCgpCiAgICAgU3R5bGVkRWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAoU2hhZG93Um9vdCog
cm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgU2hh
ZG93Q29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmVuc3VyZUluY2x1c2lvbnMoKTsK
LSAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0SW5jbHVzaW9uKG1faW5jbHVzaW9ucy5nZXQoKSk7
Ci0gICAgICAgIHNlbGVjdG9yLT5zZWxlY3RJbmNsdXNpb24odGhpcywgbV9pbmNsdXNpb25zLmdl
dCgpKTsKKyAgICAgICAgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+
ZW5zdXJlSW5jbHVzaW9ucygpOworICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QobV9pbmNsdXNp
b25zLmdldCgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnNlbGVjdCh0aGlzLCBtX2luY2x1c2lvbnMu
Z2V0KCkpOwogICAgICAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gbV9pbmNs
dXNpb25zLT5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgp
KQogICAgICAgICAgICAgaW5jbHVzaW9uLT5jb250ZW50KCktPmRldGFjaCgpOwogICAgICAgICBm
b3IgKFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gbV9pbmNsdXNpb25zLT5maXJzdCgpOyBp
bmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgpKQpAQCAtNjgsOCArNjgsOCBA
QCB2b2lkIFNoYWRvd0NvbnRlbnRFbGVtZW50OjphdHRhY2goKQogdm9pZCBTaGFkb3dDb250ZW50
RWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93
Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKFNoYWRvd0NvbnRlbnRT
ZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5pbmNsdXNpb25zKCkpCi0gICAgICAgICAgICBzZWxl
Y3Rvci0+dW5zZWxlY3RJbmNsdXNpb24obV9pbmNsdXNpb25zLmdldCgpKTsKKyAgICAgICAgaWYg
KFNoYWRvd0luY2x1c2lvblNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmluY2x1c2lvbnMoKSkK
KyAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdChtX2luY2x1c2lvbnMuZ2V0KCkpOwogICAg
IH0KIAogICAgIEFTU0VSVChtX2luY2x1c2lvbnMtPmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0MTdkMDgwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50U2VsZWN0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yLmgiCi0KLSNp
bmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
LQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgU2hhZG93SW5jbHVzaW9uOjphcHBlbmQo
UGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG5leHQpCi17Ci0gICAgQVNTRVJUKCFtX25leHQp
OwotICAgIEFTU0VSVCghbmV4dC0+cHJldmlvdXMoKSk7Ci0gICAgbV9uZXh0ID0gbmV4dDsKLSAg
ICBtX25leHQtPm1fcHJldmlvdXMgPSB0aGlzOwotfQotCi12b2lkIFNoYWRvd0luY2x1c2lvbjo6
dW5saW5rKCkKLXsKLSAgICBBU1NFUlQoIW1fcHJldmlvdXMpOyAvLyBDYW4gYmUgY2FsbGVkIG9u
bHkgZm9yIGEgaGVhZC4KLSAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBpdGVtID0gdGhpczsK
LSAgICB3aGlsZSAoaXRlbSkgewotICAgICAgICBBU1NFUlQoIWl0ZW0tPnByZXZpb3VzKCkpOwot
ICAgICAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsK
LSAgICAgICAgaXRlbS0+bV9uZXh0LmNsZWFyKCk7Ci0gICAgICAgIGlmIChuZXh0SXRlbSkKLSAg
ICAgICAgICAgIG5leHRJdGVtLT5tX3ByZXZpb3VzLmNsZWFyKCk7Ci0gICAgICAgIGl0ZW0gPSBu
ZXh0SXRlbTsKLSAgICB9Ci19Ci0KLVNoYWRvd0luY2x1c2lvbkxpc3Q6OlNoYWRvd0luY2x1c2lv
bkxpc3QoKQotewotfQotCi1TaGFkb3dJbmNsdXNpb25MaXN0Ojp+U2hhZG93SW5jbHVzaW9uTGlz
dCgpCi17Ci0gICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci19Ci0KLVNoYWRvd0luY2x1c2lvbiogU2hh
ZG93SW5jbHVzaW9uTGlzdDo6ZmluZChOb2RlKiBjb250ZW50KSBjb25zdAotewotICAgIGZvciAo
U2hhZG93SW5jbHVzaW9uKiBpdGVtID0gZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQo
KSkgewotICAgICAgICBpZiAoY29udGVudCA9PSBpdGVtLT5jb250ZW50KCkpCi0gICAgICAgICAg
ICByZXR1cm4gaXRlbTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU2hh
ZG93SW5jbHVzaW9uTGlzdDo6Y2xlYXIoKQotewotICAgIGlmIChpc0VtcHR5KCkpIHsKLSAgICAg
ICAgQVNTRVJUKCFtX2xhc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9maXJz
dC0+dW5saW5rKCk7Ci0gICAgbV9maXJzdC5jbGVhcigpOwotICAgIG1fbGFzdC5jbGVhcigpOwot
fQotCi12b2lkIFNoYWRvd0luY2x1c2lvbkxpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0lu
Y2x1c2lvbj4gY2hpbGQpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQo
IW1fbGFzdCk7Ci0gICAgICAgIG1fZmlyc3QgPSBtX2xhc3QgPSBjaGlsZDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fbGFzdC0+YXBwZW5kKGNoaWxkKTsKLSAgICBtX2xhc3QgPSBt
X2xhc3QtPm5leHQoKTsKLX0KLQotU2hhZG93Q29udGVudFNlbGVjdG9yOjpTaGFkb3dDb250ZW50
U2VsZWN0b3IoKQotewotfQotCi1TaGFkb3dDb250ZW50U2VsZWN0b3I6On5TaGFkb3dDb250ZW50
U2VsZWN0b3IoKQotewotICAgIEFTU0VSVChtX2NoaWxkcmVuLmlzRW1wdHkoKSk7Ci19Ci0KLXZv
aWQgU2hhZG93Q29udGVudFNlbGVjdG9yOjpzZWxlY3RJbmNsdXNpb24oU2hhZG93Q29udGVudEVs
ZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBTaGFkb3dJbmNsdXNpb25MaXN0KiBpbmNsdXNpb25zKQot
ewotICAgIEFTU0VSVChpbmNsdXNpb25zLT5pc0VtcHR5KCkpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIGNoaWxk
ID0gbV9jaGlsZHJlbltpXS5nZXQoKTsKLSAgICAgICAgaWYgKCFjaGlsZCkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoIWNvbnRlbnRFbGVtZW50LT5zaG91bGRJbmNsdWRlKGNo
aWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFJlZlB0cjxTaGFkb3dJbmNs
dXNpb24+IGluY2x1c2lvbiA9IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50
LCBjaGlsZCk7Ci0gICAgICAgIGluY2x1c2lvbnMtPmFwcGVuZChpbmNsdXNpb24pOwotICAgICAg
ICBtX2luY2x1c2lvblNldC5hZGQoaW5jbHVzaW9uLmdldCgpKTsKLSAgICAgICAgbV9jaGlsZHJl
bltpXSA9IDA7Ci0gICAgfQotfQotCi12b2lkIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6dW5zZWxl
Y3RJbmNsdXNpb24oU2hhZG93SW5jbHVzaW9uTGlzdCogbGlzdCkKLXsKLSAgICBmb3IgKFNoYWRv
d0luY2x1c2lvbiogaW5jbHVzaW9uID0gbGlzdC0+Zmlyc3QoKTsgaW5jbHVzaW9uOyBpbmNsdXNp
b24gPSBpbmNsdXNpb24tPm5leHQoKSkKLSAgICAgICAgbV9pbmNsdXNpb25TZXQucmVtb3ZlKGlu
Y2x1c2lvbik7Ci0gICAgbGlzdC0+Y2xlYXIoKTsKLX0KLQotU2hhZG93SW5jbHVzaW9uKiBTaGFk
b3dDb250ZW50U2VsZWN0b3I6OmZpbmRJbmNsdXNpb25Gb3IoTm9kZSoga2V5KSBjb25zdAotewot
ICAgIHJldHVybiBtX2luY2x1c2lvblNldC5maW5kKGtleSk7Ci19Ci0KLXZvaWQgU2hhZG93Q29u
dGVudFNlbGVjdG9yOjpkaWRTZWxlY3RJbmNsdXNpb24oKQotewotICAgIG1fY2hpbGRyZW4uY2xl
YXIoKTsKLX0KLQotdm9pZCBTaGFkb3dDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RJbmNsdXNp
b25PdmVyKFNoYWRvd1Jvb3QqIHNjb3BlKQotewotICAgIGlmICghbV9jaGlsZHJlbi5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+c2hhZG93
SG9zdCgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQot
ICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChub2RlKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3MTdhMDJiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50
U2VsZWN0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTaGFkb3dD
b250ZW50U2VsZWN0b3JfaAotI2RlZmluZSBTaGFkb3dDb250ZW50U2VsZWN0b3JfaAotCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBOb2RlOwotY2xhc3MgU2hhZG93Um9v
dDsKLWNsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50OwotCi1jbGFzcyBTaGFkb3dJbmNsdXNpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkb3dJbmNsdXNpb24+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNyZWF0ZShTaGFkb3dDb250ZW50RWxlbWVu
dCosIE5vZGUqKTsKLQotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1faW5jbHVkZXI7IH0KLSAgICBOb2RlKiBjb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50LmdldCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBuZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBwcmV2aW91cygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKFBh
c3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7Ci0gICAgdm9pZCB1bmxpbmsoKTsKLQotcHJpdmF0
ZToKLSAgICBTaGFkb3dJbmNsdXNpb24oU2hhZG93Q29udGVudEVsZW1lbnQqLCBOb2RlKik7Ci0K
LSAgICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9pbmNsdWRlcjsKLSAgICBSZWZQdHI8Tm9kZT4g
bV9jb250ZW50OwotICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG1fbmV4dDsKLSAgICBSZWZQ
dHI8U2hhZG93SW5jbHVzaW9uPiBtX3ByZXZpb3VzOwotfTsKLQotaW5saW5lIFNoYWRvd0luY2x1
c2lvbjo6U2hhZG93SW5jbHVzaW9uKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9k
ZSogY29udGVudCkKLSAgICA6IG1faW5jbHVkZXIoaW5jbHVkZXIpLCBtX2NvbnRlbnQoY29udGVu
dCkKLXsgfQotCi1pbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IFNoYWRvd0luY2x1
c2lvbjo6Y3JlYXRlKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogY29udGVu
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0luY2x1c2lvbihpbmNsdWRlciwg
Y29udGVudCkpOwotfQotCi1jbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0IHsKLXB1YmxpYzoKLSAg
ICBTaGFkb3dJbmNsdXNpb25MaXN0KCk7Ci0gICAgflNoYWRvd0luY2x1c2lvbkxpc3QoKTsKLQot
ICAgIFNoYWRvd0luY2x1c2lvbiogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgp
OyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Lmdl
dCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqKSBjb25zdDsKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQotCi0gICAgdm9pZCBjbGVhcigp
OwotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7Ci0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9maXJzdDsKLSAgICBSZWZQdHI8U2hh
ZG93SW5jbHVzaW9uPiBtX2xhc3Q7Ci19OwotCi0KLWNsYXNzIFNoYWRvd0luY2x1c2lvblNldCB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCBhZGQoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBtX3NldC5h
ZGQodmFsdWUpOyB9Ci0gICAgdm9pZCByZW1vdmUoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBt
X3NldC5yZW1vdmUodmFsdWUpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9zZXQuaXNFbXB0eSgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqIGtleSkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRyYW5zbGF0b3IgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQ
dHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uLCBjb25zdCBOb2RlKiBjb250ZW50
KSB7IHJldHVybiBpbmNsdXNpb24tPmNvbnRlbnQoKSA9PSBjb250ZW50OyB9Ci0gICAgfTsKLQot
ICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU2hhZG93SW5j
bHVzaW9uKiBrZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29uc3QgTm9kZSo+OjpoYXNoKGtleS0+Y29u
dGVudCgpKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChTaGFkb3dJbmNsdXNpb24qIGEs
IFNoYWRvd0luY2x1c2lvbiogYikgeyByZXR1cm4gYS0+Y29udGVudCgpID09IGItPmNvbnRlbnQo
KTsgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hTZXQ8U2hhZG93SW5jbHVz
aW9uKiwgSGFzaD4gUG9pbnRlclNldDsKLQotICAgIFBvaW50ZXJTZXQgbV9zZXQ7Ci19OwotCi1p
bmxpbmUgU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJbmNsdXNpb25TZXQ6OmZpbmQoTm9kZSoga2V5
KSBjb25zdAotewotICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxO
b2RlKiwgU2hhZG93SW5jbHVzaW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOwotICAgIHJldHVybiBm
b3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7Ci19Ci0KLWNsYXNzIFNoYWRvd0NvbnRl
bnRTZWxlY3RvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhZG93Q29udGVudFNlbGVj
dG9yKTsKLXB1YmxpYzoKLSAgICBTaGFkb3dDb250ZW50U2VsZWN0b3IoKTsKLSAgICB+U2hhZG93
Q29udGVudFNlbGVjdG9yKCk7Ci0KLSAgICB2b2lkIHNlbGVjdEluY2x1c2lvbihTaGFkb3dDb250
ZW50RWxlbWVudCosIFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKLSAgICB2b2lkIHVuc2VsZWN0SW5j
bHVzaW9uKFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKLSAgICBTaGFkb3dJbmNsdXNpb24qIGZpbmRJ
bmNsdXNpb25Gb3IoTm9kZSoga2V5KSBjb25zdDsKLQotICAgIHZvaWQgd2lsbFNlbGVjdEluY2x1
c2lvbk92ZXIoU2hhZG93Um9vdCopOwotICAgIHZvaWQgZGlkU2VsZWN0SW5jbHVzaW9uKCk7Ci0g
ICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICFtX2NoaWxkcmVuLmlzRW1wdHko
KTsgfQotCi0KLXByaXZhdGU6Ci0gICAgdm9pZCByZW1vdmVGcm9tU2V0KFNoYWRvd0luY2x1c2lv
bkxpc3QqKTsKLSAgICB2b2lkIGFkZFRvU2V0KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2NoaWxkcmVuOwotICAgIFNoYWRvd0luY2x1c2lvblNl
dCBtX2luY2x1c2lvblNldDsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45ODQxZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIgorCisjaW5j
bHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNoYWRvd0luY2x1c2lvbjo6YXBwZW5kKFBh
c3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBuZXh0KQoreworICAgIEFTU0VSVCghbV9uZXh0KTsK
KyAgICBBU1NFUlQoIW5leHQtPnByZXZpb3VzKCkpOworICAgIG1fbmV4dCA9IG5leHQ7CisgICAg
bV9uZXh0LT5tX3ByZXZpb3VzID0gdGhpczsKK30KKwordm9pZCBTaGFkb3dJbmNsdXNpb246OnVu
bGluaygpCit7CisgICAgQVNTRVJUKCFtX3ByZXZpb3VzKTsgLy8gQ2FuIGJlIGNhbGxlZCBvbmx5
IGZvciBhIGhlYWQuCisgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gaXRlbSA9IHRoaXM7Cisg
ICAgd2hpbGUgKGl0ZW0pIHsKKyAgICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKKyAg
ICAgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbmV4dEl0ZW0gPSBpdGVtLT5tX25leHQ7Cisg
ICAgICAgIGl0ZW0tPm1fbmV4dC5jbGVhcigpOworICAgICAgICBpZiAobmV4dEl0ZW0pCisgICAg
ICAgICAgICBuZXh0SXRlbS0+bV9wcmV2aW91cy5jbGVhcigpOworICAgICAgICBpdGVtID0gbmV4
dEl0ZW07CisgICAgfQorfQorCitTaGFkb3dJbmNsdXNpb25MaXN0OjpTaGFkb3dJbmNsdXNpb25M
aXN0KCkKK3sKK30KKworU2hhZG93SW5jbHVzaW9uTGlzdDo6flNoYWRvd0luY2x1c2lvbkxpc3Qo
KQoreworICAgIEFTU0VSVChpc0VtcHR5KCkpOworfQorCitTaGFkb3dJbmNsdXNpb24qIFNoYWRv
d0luY2x1c2lvbkxpc3Q6OmZpbmQoTm9kZSogY29udGVudCkgY29uc3QKK3sKKyAgICBmb3IgKFNo
YWRvd0luY2x1c2lvbiogaXRlbSA9IGZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KCkp
IHsKKyAgICAgICAgaWYgKGNvbnRlbnQgPT0gaXRlbS0+Y29udGVudCgpKQorICAgICAgICAgICAg
cmV0dXJuIGl0ZW07CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCit2b2lkIFNoYWRv
d0luY2x1c2lvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAg
IEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmlyc3Qt
PnVubGluaygpOworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAgICBtX2xhc3QuY2xlYXIoKTsKK30K
Kwordm9pZCBTaGFkb3dJbmNsdXNpb25MaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxTaGFkb3dJbmNs
dXNpb24+IGNoaWxkKQoreworICAgIGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFt
X2xhc3QpOworICAgICAgICBtX2ZpcnN0ID0gbV9sYXN0ID0gY2hpbGQ7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2xhc3QtPmFwcGVuZChjaGlsZCk7CisgICAgbV9sYXN0ID0gbV9s
YXN0LT5uZXh0KCk7Cit9CisKK1NoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpTaGFkb3dJbmNsdXNp
b25TZWxlY3RvcigpCit7Cit9CisKK1NoYWRvd0luY2x1c2lvblNlbGVjdG9yOjp+U2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IoKQoreworICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpKTsK
K30KKwordm9pZCBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KFNoYWRvd0NvbnRlbnRF
bGVtZW50KiBjb250ZW50RWxlbWVudCwgU2hhZG93SW5jbHVzaW9uTGlzdCogaW5jbHVzaW9ucykK
K3sKKyAgICBBU1NFUlQoaW5jbHVzaW9ucy0+aXNFbXB0eSgpKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9jYW5kaWRhdGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5vZGUqIGNo
aWxkID0gbV9jYW5kaWRhdGVzW2ldLmdldCgpOworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY29udGVudEVsZW1lbnQtPnNob3VsZEluY2x1
ZGUoY2hpbGQpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgUmVmUHRyPFNoYWRv
d0luY2x1c2lvbj4gaW5jbHVzaW9uID0gU2hhZG93SW5jbHVzaW9uOjpjcmVhdGUoY29udGVudEVs
ZW1lbnQsIGNoaWxkKTsKKyAgICAgICAgaW5jbHVzaW9ucy0+YXBwZW5kKGluY2x1c2lvbik7Cisg
ICAgICAgIG1faW5jbHVzaW9uU2V0LmFkZChpbmNsdXNpb24uZ2V0KCkpOworICAgICAgICBtX2Nh
bmRpZGF0ZXNbaV0gPSAwOworICAgIH0KK30KKwordm9pZCBTaGFkb3dJbmNsdXNpb25TZWxlY3Rv
cjo6dW5zZWxlY3QoU2hhZG93SW5jbHVzaW9uTGlzdCogbGlzdCkKK3sKKyAgICBmb3IgKFNoYWRv
d0luY2x1c2lvbiogaW5jbHVzaW9uID0gbGlzdC0+Zmlyc3QoKTsgaW5jbHVzaW9uOyBpbmNsdXNp
b24gPSBpbmNsdXNpb24tPm5leHQoKSkKKyAgICAgICAgbV9pbmNsdXNpb25TZXQucmVtb3ZlKGlu
Y2x1c2lvbik7CisgICAgbGlzdC0+Y2xlYXIoKTsKK30KKworU2hhZG93SW5jbHVzaW9uKiBTaGFk
b3dJbmNsdXNpb25TZWxlY3Rvcjo6ZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5jbHVzaW9uU2V0LmZpbmQoa2V5KTsKK30KKwordm9pZCBTaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvcjo6ZGlkU2VsZWN0KCkKK3sKKyAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKK30KKwor
dm9pZCBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6d2lsbFNlbGVjdE92ZXIoU2hhZG93Um9vdCog
c2NvcGUpCit7CisgICAgaWYgKCFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgZm9yIChOb2RlKiBub2RlID0gc2NvcGUtPnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbV9jYW5kaWRh
dGVzLmFwcGVuZChub2RlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWFk
YWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lv
blNlbGVjdG9yLmgKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYWRvd0luY2x1c2lvblNlbGVj
dG9yX2gKKyNkZWZpbmUgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3JfaAorCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBOb2RlOworY2xhc3MgU2hhZG93Um9vdDsKK2NsYXNz
IFNoYWRvd0NvbnRlbnRFbGVtZW50OworCitjbGFzcyBTaGFkb3dJbmNsdXNpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxTaGFkb3dJbmNsdXNpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNyZWF0ZShTaGFkb3dDb250ZW50RWxlbWVudCosIE5vZGUq
KTsKKworICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1faW5jbHVkZXI7IH0KKyAgICBOb2RlKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50LmdldCgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBuZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9uZXh0LmdldCgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBwcmV2aW91cygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8
U2hhZG93SW5jbHVzaW9uPik7CisgICAgdm9pZCB1bmxpbmsoKTsKKworcHJpdmF0ZToKKyAgICBT
aGFkb3dJbmNsdXNpb24oU2hhZG93Q29udGVudEVsZW1lbnQqLCBOb2RlKik7CisKKyAgICBTaGFk
b3dDb250ZW50RWxlbWVudCogbV9pbmNsdWRlcjsKKyAgICBSZWZQdHI8Tm9kZT4gbV9jb250ZW50
OworICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG1fbmV4dDsKKyAgICBSZWZQdHI8U2hhZG93
SW5jbHVzaW9uPiBtX3ByZXZpb3VzOworfTsKKworaW5saW5lIFNoYWRvd0luY2x1c2lvbjo6U2hh
ZG93SW5jbHVzaW9uKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogY29udGVu
dCkKKyAgICA6IG1faW5jbHVkZXIoaW5jbHVkZXIpLCBtX2NvbnRlbnQoY29udGVudCkKK3sgfQor
CitpbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IFNoYWRvd0luY2x1c2lvbjo6Y3Jl
YXRlKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogY29udGVudCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0luY2x1c2lvbihpbmNsdWRlciwgY29udGVudCkp
OworfQorCitjbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0IHsKK3B1YmxpYzoKKyAgICBTaGFkb3dJ
bmNsdXNpb25MaXN0KCk7CisgICAgflNoYWRvd0luY2x1c2lvbkxpc3QoKTsKKworICAgIFNoYWRv
d0luY2x1c2lvbiogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9CisgICAg
U2hhZG93SW5jbHVzaW9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9Cisg
ICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQorCisgICAgdm9pZCBjbGVhcigpOworICAgIHZv
aWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9maXJzdDsKKyAgICBSZWZQdHI8U2hhZG93SW5jbHVz
aW9uPiBtX2xhc3Q7Cit9OworCisKK2NsYXNzIFNoYWRvd0luY2x1c2lvblNldCB7CitwdWJsaWM6
CisgICAgdm9pZCBhZGQoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUp
OyB9CisgICAgdm9pZCByZW1vdmUoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBtX3NldC5yZW1v
dmUodmFsdWUpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zZXQuaXNF
bXB0eSgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqIGtleSkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNv
bnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uLCBjb25zdCBOb2RlKiBjb250ZW50KSB7IHJldHVy
biBpbmNsdXNpb24tPmNvbnRlbnQoKSA9PSBjb250ZW50OyB9CisgICAgfTsKKworICAgIHN0cnVj
dCBIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU2hhZG93SW5jbHVzaW9uKiBr
ZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29uc3QgTm9kZSo+OjpoYXNoKGtleS0+Y29udGVudCgpKTsg
fQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChTaGFkb3dJbmNsdXNpb24qIGEsIFNoYWRvd0lu
Y2x1c2lvbiogYikgeyByZXR1cm4gYS0+Y29udGVudCgpID09IGItPmNvbnRlbnQoKTsgfQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hTZXQ8U2hhZG93SW5jbHVzaW9uKiwgSGFz
aD4gUG9pbnRlclNldDsKKworICAgIFBvaW50ZXJTZXQgbV9zZXQ7Cit9OworCitpbmxpbmUgU2hh
ZG93SW5jbHVzaW9uKiBTaGFkb3dJbmNsdXNpb25TZXQ6OmZpbmQoTm9kZSoga2V5KSBjb25zdAor
eworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxOb2RlKiwgU2hh
ZG93SW5jbHVzaW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOworICAgIHJldHVybiBmb3VuZCAhPSBt
X3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7Cit9CisKK2NsYXNzIFNoYWRvd0luY2x1c2lvblNlbGVj
dG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcik7
CitwdWJsaWM6CisgICAgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IoKTsKKyAgICB+U2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IoKTsKKworICAgIHZvaWQgc2VsZWN0KFNoYWRvd0NvbnRlbnRFbGVtZW50
KiwgU2hhZG93SW5jbHVzaW9uTGlzdCopOworICAgIHZvaWQgdW5zZWxlY3QoU2hhZG93SW5jbHVz
aW9uTGlzdCopOworICAgIFNoYWRvd0luY2x1c2lvbiogZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0
OworCisgICAgdm9pZCB3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290Kik7CisgICAgdm9pZCBkaWRT
ZWxlY3QoKTsKKyAgICBib29sIGhhc0NhbmRpZGF0ZXMoKSBjb25zdCB7IHJldHVybiAhbV9jYW5k
aWRhdGVzLmlzRW1wdHkoKTsgfQorCisKK3ByaXZhdGU6CisgICAgdm9pZCByZW1vdmVGcm9tU2V0
KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKKyAgICB2b2lkIGFkZFRvU2V0KFNoYWRvd0luY2x1c2lv
bkxpc3QqKTsKKworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2NhbmRpZGF0ZXM7CisgICAg
U2hhZG93SW5jbHVzaW9uU2V0IG1faW5jbHVzaW9uU2V0OworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBjMzYwNzA5Li40OTQ4MjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxl
bWVudC5oIgotI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIlNo
YWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAw
LDcgKzEwMCw3IEBAIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBTaGFkb3dSb290OjppbmNsdWRlckZv
cihOb2RlKiBub2RlKSBjb25zdAogewogICAgIGlmICghbV9pbmNsdXNpb25zKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBTaGFkb3dJbmNsdXNpb24qIGZvdW5kID0gbV9pbmNsdXNpb25zLT5maW5k
SW5jbHVzaW9uRm9yKG5vZGUpOworICAgIFNoYWRvd0luY2x1c2lvbiogZm91bmQgPSBtX2luY2x1
c2lvbnMtPmZpbmRGb3Iobm9kZSk7CiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIGZvdW5kLT5pbmNsdWRlcigpOwpAQCAtMTM5LDIyICsxMzksMjIgQEAgdm9p
ZCBTaGFkb3dSb290OjphdHRhY2goKQogICAgIC8vIENoaWxkcmVuIG9mIG1faW5jbHVzaW9ucyBp
cyBwb3B1bGF0ZWQgbGF6aWx5IGluCiAgICAgLy8gZW5zdXJlSW5jbHVzaW9ucygpLCBhbmQgaGVy
ZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CiAgICAgLy8gaXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAg
QVNTRVJUKCFtX2luY2x1c2lvbnMgfHwgIW1faW5jbHVzaW9ucy0+aGFzQ2hpbGRyZW4oKSk7Cisg
ICAgQVNTRVJUKCFtX2luY2x1c2lvbnMgfHwgIW1faW5jbHVzaW9ucy0+aGFzQ2FuZGlkYXRlcygp
KTsKICAgICBUcmVlU2NvcGU6OmF0dGFjaCgpOwogICAgIGlmIChtX2luY2x1c2lvbnMpCi0gICAg
ICAgIG1faW5jbHVzaW9ucy0+ZGlkU2VsZWN0SW5jbHVzaW9uKCk7CisgICAgICAgIG1faW5jbHVz
aW9ucy0+ZGlkU2VsZWN0KCk7CiB9CiAKLVNoYWRvd0NvbnRlbnRTZWxlY3RvciogU2hhZG93Um9v
dDo6aW5jbHVzaW9ucygpIGNvbnN0CitTaGFkb3dJbmNsdXNpb25TZWxlY3RvciogU2hhZG93Um9v
dDo6aW5jbHVzaW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5jbHVzaW9ucy5nZXQoKTsK
IH0KIAotU2hhZG93Q29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjplbnN1cmVJbmNsdXNpb25z
KCkKK1NoYWRvd0luY2x1c2lvblNlbGVjdG9yKiBTaGFkb3dSb290OjplbnN1cmVJbmNsdXNpb25z
KCkKIHsKICAgICBpZiAoIW1faW5jbHVzaW9ucykKLSAgICAgICAgbV9pbmNsdXNpb25zID0gYWRv
cHRQdHIobmV3IFNoYWRvd0NvbnRlbnRTZWxlY3RvcigpKTsKLSAgICBtX2luY2x1c2lvbnMtPndp
bGxTZWxlY3RJbmNsdXNpb25PdmVyKHRoaXMpOworICAgICAgICBtX2luY2x1c2lvbnMgPSBhZG9w
dFB0cihuZXcgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IoKSk7CisgICAgbV9pbmNsdXNpb25zLT53
aWxsU2VsZWN0T3Zlcih0aGlzKTsKICAgICByZXR1cm4gbV9pbmNsdXNpb25zLmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkMTVlNDY1Li42NDEwYzY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50OwotY2xhc3MgU2hhZG93
Q29udGVudFNlbGVjdG9yOworY2xhc3MgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3I7CiAKIGNsYXNz
IFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKQEAgLTQ5LDggKzQ5LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhcHBseUF1dGhvclNoZWV0cygpIGNvbnN0Owog
ICAgIHZvaWQgc2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCk7CiAKLSAgICBTaGFkb3dDb250ZW50
U2VsZWN0b3IqIGluY2x1c2lvbnMoKSBjb25zdDsKLSAgICBTaGFkb3dDb250ZW50U2VsZWN0b3Iq
IGVuc3VyZUluY2x1c2lvbnMoKTsKKyAgICBTaGFkb3dJbmNsdXNpb25TZWxlY3RvciogaW5jbHVz
aW9ucygpIGNvbnN0OworICAgIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yKiBlbnN1cmVJbmNsdXNp
b25zKCk7CiAKIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwpAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKIAog
ICAgIGJvb2wgbV9hcHBseUF1dGhvclNoZWV0czsKLSAgICBPd25QdHI8U2hhZG93Q29udGVudFNl
bGVjdG9yPiBtX2luY2x1c2lvbnM7CisgICAgT3duUHRyPFNoYWRvd0luY2x1c2lvblNlbGVjdG9y
PiBtX2luY2x1c2lvbnM7CiB9OwogCiBpbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFk
b3dSb290OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpUb29rIDAgc2Vjcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>