<?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>183566</bug_id>
          
          <creation_ts>2018-03-12 06:59:42 -0700</creation_ts>
          <short_desc>Don&apos;t invalidate descendants for nth pseudo classes unless needed</short_desc>
          <delta_ts>2018-03-12 09:15:52 -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>InRadar</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>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405726</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-03-12 06:59:42 -0700</bug_when>
    <thetext>Avoid unnecessary invalidation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405731</commentid>
    <comment_count>1</comment_count>
      <attachid>335591</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-03-12 07:10:22 -0700</bug_when>
    <thetext>Created attachment 335591
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405732</commentid>
    <comment_count>2</comment_count>
      <attachid>335592</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-03-12 07:11:49 -0700</bug_when>
    <thetext>Created attachment 335592
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405738</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-12 08:04:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/38376275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405755</commentid>
    <comment_count>4</comment_count>
      <attachid>335592</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 09:15:51 -0700</bug_when>
    <thetext>Comment on attachment 335592
patch

Clearing flags on attachment: 335592

Committed r229537: &lt;https://trac.webkit.org/changeset/229537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405756</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 09:15:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335591</attachid>
            <date>2018-03-12 07:10:22 -0700</date>
            <delta_ts>2018-03-12 07:10:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>nth-child-descendant-6.patch</filename>
            <type>text/plain</type>
            <size>30277</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTUzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE4LTAzLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBpbnZhbGlkYXRlIGRl
c2NlbmRhbnRzIGZvciBudGggcHNldWRvIGNsYXNzZXMgdW5sZXNzIG5lZWRlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY3VycmVudGx5IGludmFs
aWRhdGUgdGhlIHdob2xlIHN1YnRyZWVzIHRoYXQgbWF5IG1hdGNoIDpudGgtY2hpbGQgYW5kIHNp
bWlsYXIuIEluIG1hbnkgY29tbW9uCisgICAgICAgIGNhc2VzIHdlIGtub3cgdGhhdCBvbmx5IHRo
ZSBkaXJlY3Qgc2libGluZ3MgbWF5IGJlIGFmZmVjdGVkLgorCisgICAgICAgICogY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbENvbnRleHRGb3JQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaFJlY3Vyc2l2ZWx5IGNv
bnN0KToKKworICAgICAgICAgICAgVHJhY2sgaWYgdGhlIGNvbnRleHQgbWF0Y2hlcyB0aGUgc3Vi
amVjdCBlbGVtZW50IGlmIHRoZSBzZWxlY3RvciBvciBpdHMgc2libGluZ3Mgb25seS4KKworICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSBjb25zdCk6CisKKyAgICAg
ICAgICAgIFVzZSBkaWZmZXJlbnQgYml0cyBvZiBkZXNjZW5kYW50IGFuZCBjaGlsZCBpbnZhbGlk
YXRpb24gY2FzZXMuCisKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpmcmFnbWVudE1hdGNoZXNSaWdodG1v
c3RPckFkamFjZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVy
Ojpjb25zdHJ1Y3RGcmFnbWVudHNJbnRlcm5hbCk6CisKKyAgICAgICAgICAgIFRyYWNrIGlmIHRo
ZSBjb250ZXh0IG1hdGNoZXMgdGhlIHN1YmplY3QgZWxlbWVudCBpZiB0aGUgc2VsZWN0b3Igb3Ig
aXRzIHNpYmxpbmdzIG9ubHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNOdGhDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlRWxlbWVudElzTnRoQ2hpbGRPZik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzTnRoTGFzdENo
aWxkKToKKworICAgICAgICAgICAgVXNlIGRpZmZlcmVudCBiaXRzIG9mIGRlc2NlbmRhbnQgYW5k
IGNoaWxkIGludmFsaWRhdGlvbiBjYXNlcy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6
CisKKyAgICAgICAgICAgIEludmFsaWRhdGUgbW9yZSBwcmVjaXNlbHkgYmFzZWQgb24gdGhlIG5l
dyBiaXRzLgorCisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXREZXNj
ZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpoYXNGbGFnc1NldER1cmluZ1N0eWxpbmdPZkNoaWxkcmVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGNv
bnN0KToKKworICAgICAgICAgICAgTmV3IGJpdHMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZXNj
ZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpkZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0RGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFy
ZURhdGE6OmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0RGVzY2VuZGFudHNBZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJh
cmVEYXRhOjpyZXNldFN0eWxlUmVsYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zVG9SZW5k
ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zKToKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5oOgorCiAyMDE4LTAzLTEyICBKYXZpZXIgRmVy
bmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBHcmlkTGF5
b3V0IHJ1bnRpbWUgZmxhZwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAJKHJldmlzaW9uIDIyOTQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBTZWxlY3RvckNo
ZWNrZXI6OkxvY2FsQ29udGV4dCB7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIGZpcnN0U2VsZWN0
b3JPZlRoZUZyYWdtZW50OwogICAgIFBzZXVkb0lkIHBzZXVkb0lkOwogICAgIGJvb2wgaXNNYXRj
aEVsZW1lbnQgeyB0cnVlIH07CisgICAgYm9vbCBpc1N1YmplY3RPckFkamFjZW50RWxlbWVudCB7
IHRydWUgfTsKICAgICBib29sIGluRnVuY3Rpb25hbFBzZXVkb0NsYXNzIHsgZmFsc2UgfTsKICAg
ICBib29sIHBzZXVkb0VsZW1lbnRFZmZlY3RpdmUgeyB0cnVlIH07CiAgICAgYm9vbCBoYXNTY3Jv
bGxiYXJQc2V1ZG8geyBmYWxzZSB9OwpAQCAtMjM4LDYgKzIzOSw3IEBAIHN0YXRpYyBTZWxlY3Rv
ckNoZWNrZXI6OkxvY2FsQ29udGV4dCBsb2MKICAgICAgICAgdXBkYXRlZENvbnRleHQudmlzaXRl
ZE1hdGNoVHlwZSA9IFZpc2l0ZWRNYXRjaFR5cGU6OkRpc2FibGVkOwogCiAgICAgdXBkYXRlZENv
bnRleHQuaXNNYXRjaEVsZW1lbnQgPSBmYWxzZTsKKyAgICB1cGRhdGVkQ29udGV4dC5pc1N1Ympl
Y3RPckFkamFjZW50RWxlbWVudCA9IGZhbHNlOwogCiAgICAgaWYgKHVwZGF0ZWRDb250ZXh0Lm1h
eU1hdGNoSG9zdFBzZXVkb0NsYXNzKSB7CiAgICAgICAgIHVwZGF0ZWRDb250ZXh0LmVsZW1lbnQg
PSBudWxscHRyOwpAQCAtNDMyLDYgKzQzNCw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hSZXN1
bHQgU2VsZWN0b3JDaGUKICAgICAgICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZhaWxz
KE1hdGNoOjpTZWxlY3RvckZhaWxzQ29tcGxldGVseSk7CiAgICAgICAgICAgICBuZXh0Q29udGV4
dC5lbGVtZW50ID0gc2hhZG93SG9zdE5vZGU7CiAgICAgICAgICAgICBuZXh0Q29udGV4dC5maXJz
dFNlbGVjdG9yT2ZUaGVGcmFnbWVudCA9IG5leHRDb250ZXh0LnNlbGVjdG9yOworICAgICAgICAg
ICAgbmV4dENvbnRleHQuaXNTdWJqZWN0T3JBZGphY2VudEVsZW1lbnQgPSBmYWxzZTsKICAgICAg
ICAgICAgIFBzZXVkb0lkU2V0IGlnbm9yZUR5bmFtaWNQc2V1ZG87CiAgICAgICAgICAgICB1bnNp
Z25lZCBzaGFkb3dEZXNjZW5kYW50U3BlY2lmaWNpdHkgPSAwOwogICAgICAgICAgICAgTWF0Y2hS
ZXN1bHQgcmVzdWx0ID0gbWF0Y2hSZWN1cnNpdmVseShjaGVja2luZ0NvbnRleHQsIG5leHRDb250
ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvLCBzaGFkb3dEZXNjZW5kYW50U3BlY2lmaWNpdHkpOwpA
QCAtNzQ2LDcgKzc0OSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2lu
Z0MKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGaXJzdE9mVHlwZToKICAg
ICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBp
dHMgdHlwZQogICAgICAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LnBh
cmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tp
bmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJlbGF0
aW9uID0gY29udGV4dC5pc1N1YmplY3RPckFkamFjZW50RWxlbWVudCA/IFN0eWxlOjpSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6IFN0eWxlOjpSZWxh
dGlvbjo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAg
ICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1l
bnQsIHJlbGF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaXNGaXJzdE9mVHlwZShlbGVt
ZW50LCBlbGVtZW50LnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CkBAIC03NjMsNyArNzY3LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKENo
ZWNraW5nQwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhc3RPZlR5cGU6
CiAgICAgICAgICAgICAvLyBsYXN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgbGFzdCBlbGVtZW50IG9m
IGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQucGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihj
aGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgICAgICAgICBhdXRv
IHJlbGF0aW9uID0gY29udGV4dC5pc1N1YmplY3RPckFkamFjZW50RWxlbWVudCA/IFN0eWxlOjpS
ZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiBTdHls
ZTo6UmVsYXRpb246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
OworICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFy
ZW50RWxlbWVudCwgcmVsYXRpb24pOwogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTGFzdE9mVHlwZShlbGVtZW50LCBl
bGVtZW50LnRhZ1FOYW1lKCkpOwpAQCAtNzg1LDggKzc5MCwxMCBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzT25seU9mVHlwZToKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlbGVjdG9yIGlz
IHZlcnkgc2xvdy4KICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxl
bWVudC5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9u
KGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRy
ZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk7Ci0gICAgICAgICAgICAgICAgYWRk
U3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVs
YXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGZvcndhcmRSZWxhdGlvbiA9IGNvbnRleHQuaXNTdWJqZWN0T3JBZGph
Y2VudEVsZW1lbnQgPyBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMgOiBTdHlsZTo6UmVsYXRpb246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihj
aGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBmb3J3YXJkUmVsYXRpb24pOworICAgICAg
ICAgICAgICAgIGF1dG8gYmFja3dhcmRSZWxhdGlvbiA9IGNvbnRleHQuaXNTdWJqZWN0T3JBZGph
Y2VudEVsZW1lbnQgPyBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzIDogU3R5bGU6OlJlbGF0aW9uOjpEZXNjZW5kYW50c0FmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9u
KGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIGJhY2t3YXJkUmVsYXRpb24pOwogICAg
ICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJl
bigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGlzRmlyc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKSAmJiBpc0xh
c3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKTsKQEAgLTgzMyw3ICs4NDAsOCBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yLnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJl
bnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOworICAgICAgICAgICAgICAgIGF1dG8gcmVsYXRpb24gPSBjb250ZXh0Lmlz
U3ViamVjdE9yQWRqYWNlbnRFbGVtZW50ID8gU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogU3R5bGU6OlJlbGF0aW9uOjpEZXNjZW5kYW50
c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICAgICAgICAgIGFkZFN0
eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgcmVsYXRpb24pOwog
CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0
ID0gc2VsZWN0b3Iuc2VsZWN0b3JMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2VsZWN0b3JMaXN0U3BlY2lmaWNpdHk7CkBAIC04NjMsNyArODcxLDggQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lKENoZWNraW5nQwogICAgICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxl
bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRl
eHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMpOworICAgICAgICAgICAgICAgIGF1dG8gcmVsYXRpb24gPSBj
b250ZXh0LmlzU3ViamVjdE9yQWRqYWNlbnRFbGVtZW50ID8gU3R5bGU6OlJlbGF0aW9uOjpDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogU3R5bGU6OlJlbGF0aW9uOjpE
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICAgICAg
ICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgcmVs
YXRpb24pOwogCiAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIGNvdW50RWxlbWVudHNP
ZlR5cGVCZWZvcmUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2VsZWN0b3IubWF0Y2hOdGgoY291bnQpKQpAQCAtODgxLDggKzg5MCwxMCBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgICAgICAgICAgICAg
IHNwZWNpZmljaXR5ID0gQ1NTU2VsZWN0b3I6OmFkZFNwZWNpZmljaXRpZXMoc3BlY2lmaWNpdHks
IHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KTsKIAogICAgICAgICAgICAgICAgICAgICBhZGRTdHls
ZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYWRkU3R5bGVS
ZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246
OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlbGF0aW9uID0gY29udGV4
dC5pc1N1YmplY3RPckFkamFjZW50RWxlbWVudCA/IFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiBTdHlsZTo6UmVsYXRpb246OkRlc2Nl
bmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICAgICAgICAg
ICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIHJl
bGF0aW9uKTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVu
dEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtOTA1LDcgKzkxNiw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgICAgIGlmICghc2VsZWN0b3IucGFyc2VOdGgo
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJl
bnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBh
ZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpS
ZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOworICAg
ICAgICAgICAgICAgIGF1dG8gcmVsYXRpb24gPSBjb250ZXh0LmlzU3ViamVjdE9yQWRqYWNlbnRF
bGVtZW50ID8gU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyA6IFN0eWxlOjpSZWxhdGlvbjo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXM7CisgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVj
a2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCByZWxhdGlvbik7CiAKICAgICAgICAgICAgICAg
ICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0
L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2pp
dC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI5NDU4KQorKysgU291cmNlL1dlYkNv
cmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyAr
MTA2LDggQEAgZW51bSBjbGFzcyBGdW5jdGlvblR5cGUgewogCiBlbnVtIGNsYXNzIEZyYWdtZW50
UG9zaXRpb25JblJvb3RGcmFnbWVudHMgewogICAgIFJpZ2h0bW9zdCwKLSAgICBOb3RSaWdodG1v
c3QKKyAgICBBZGphY2VudFRvUmlnaHRtb3N0LAorICAgIE90aGVyCiB9OwogCiBlbnVtIGNsYXNz
IFZpc2l0ZWRNb2RlIHsKQEAgLTE3OCw2ICsxNzksNyBAQCBzdHJ1Y3QgU2VsZWN0b3JGcmFnbWVu
dCB7CiAgICAgRnJhZ21lbnRSZWxhdGlvbiByZWxhdGlvblRvTGVmdEZyYWdtZW50OwogICAgIEZy
YWdtZW50UmVsYXRpb24gcmVsYXRpb25Ub1JpZ2h0RnJhZ21lbnQ7CiAgICAgRnJhZ21lbnRQb3Np
dGlvbkluUm9vdEZyYWdtZW50cyBwb3NpdGlvbkluUm9vdEZyYWdtZW50czsKKyAgICBib29sIGlz
UmlnaHRtb3N0T3JBZGphY2VudCB7IGZhbHNlIH07CiAKICAgICBCYWNrdHJhY2tpbmdBY3Rpb24g
dHJhdmVyc2FsQmFja3RyYWNraW5nQWN0aW9uID0gQmFja3RyYWNraW5nQWN0aW9uOjpOb0JhY2t0
cmFja2luZzsKICAgICBCYWNrdHJhY2tpbmdBY3Rpb24gbWF0Y2hpbmdUYWdOYW1lQmFja3RyYWNr
aW5nQWN0aW9uID0gQmFja3RyYWNraW5nQWN0aW9uOjpOb0JhY2t0cmFja2luZzsKQEAgLTQyNyw2
ICs0MjksMTEgQEAgc3RhdGljIGlubGluZSBib29sIGZyYWdtZW50TWF0Y2hlc1RoZVJpZwogICAg
IHJldHVybiBmcmFnbWVudC5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9PSBGcmFnbWVudFJlbGF0
aW9uOjpSaWdodG1vc3QgJiYgZnJhZ21lbnQucG9zaXRpb25JblJvb3RGcmFnbWVudHMgPT0gRnJh
Z21lbnRQb3NpdGlvbkluUm9vdEZyYWdtZW50czo6UmlnaHRtb3N0OwogfQogCitzdGF0aWMgaW5s
aW5lIGJvb2wgZnJhZ21lbnRNYXRjaGVzUmlnaHRtb3N0T3JBZGphY2VudEVsZW1lbnQoY29uc3Qg
U2VsZWN0b3JGcmFnbWVudCYgZnJhZ21lbnQpCit7CisgICAgcmV0dXJuIGZyYWdtZW50LmlzUmln
aHRtb3N0T3JBZGphY2VudCAmJiBmcmFnbWVudC5wb3NpdGlvbkluUm9vdEZyYWdtZW50cyAhPSBG
cmFnbWVudFBvc2l0aW9uSW5Sb290RnJhZ21lbnRzOjpPdGhlcjsKK30KKwogRnVuY3Rpb25UeXBl
IFNlbGVjdG9yRnJhZ21lbnQ6OmFwcGVuZFVub3B0aW1pemVkUHNldWRvQ2xhc3NXaXRoQ29udGV4
dChib29sICgqbWF0Y2hlcikoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQm
KSkKIHsKICAgICB1bm9wdGltaXplZFBzZXVkb0NsYXNzZXNXaXRoQ29udGV4dC5hcHBlbmQoSlND
OjpGdW5jdGlvblB0cihtYXRjaGVyKSk7CkBAIC04NzMsNiArODgwLDcgQEAgc3RhdGljIGJvb2wg
aXNTY3JvbGxiYXJQc2V1ZG9FbGVtZW50KENTUwogc3RhdGljIEZ1bmN0aW9uVHlwZSBjb25zdHJ1
Y3RGcmFnbWVudHNJbnRlcm5hbChjb25zdCBDU1NTZWxlY3Rvciogcm9vdFNlbGVjdG9yLCBTZWxl
Y3RvckNvbnRleHQgc2VsZWN0b3JDb250ZXh0LCBTZWxlY3RvckZyYWdtZW50TGlzdCYgc2VsZWN0
b3JGcmFnbWVudHMsIEZyYWdtZW50c0xldmVsIGZyYWdtZW50TGV2ZWwsIEZyYWdtZW50UG9zaXRp
b25JblJvb3RGcmFnbWVudHMgcG9zaXRpb25JblJvb3RGcmFnbWVudHMsIGJvb2wgdmlzaXRlZE1h
dGNoRW5hYmxlZCwgVmlzaXRlZE1vZGUmIHZpc2l0ZWRNb2RlLCBQc2V1ZG9FbGVtZW50TWF0Y2hp
bmdCZWhhdmlvciBwc2V1ZG9FbGVtZW50TWF0Y2hpbmdCZWhhdmlvcikKIHsKICAgICBGcmFnbWVu
dFJlbGF0aW9uIHJlbGF0aW9uVG9QcmV2aW91c0ZyYWdtZW50ID0gRnJhZ21lbnRSZWxhdGlvbjo6
UmlnaHRtb3N0OworICAgIGJvb2wgaXNSaWdodG1vc3RPckFkamFjZW50ID0gcG9zaXRpb25JblJv
b3RGcmFnbWVudHMgIT0gRnJhZ21lbnRQb3NpdGlvbkluUm9vdEZyYWdtZW50czo6T3RoZXI7CiAg
ICAgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uVHlwZSA9IEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0
b3JDaGVja2VyOwogICAgIFNlbGVjdG9yRnJhZ21lbnQqIGZyYWdtZW50ID0gbnVsbHB0cjsKICAg
ICB1bnNpZ25lZCBzcGVjaWZpY2l0eSA9IDA7CkBAIC05MTQsNyArOTIyLDcgQEAgc3RhdGljIEZ1
bmN0aW9uVHlwZSBjb25zdHJ1Y3RGcmFnbWVudHNJbgogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzczogewogICAgICAgICAgICAgRnJhZ21lbnRQb3NpdGlvbkluUm9vdEZyYWdt
ZW50cyBzdWJQb3NpdGlvbiA9IHBvc2l0aW9uSW5Sb290RnJhZ21lbnRzOwogICAgICAgICAgICAg
aWYgKHJlbGF0aW9uVG9QcmV2aW91c0ZyYWdtZW50ICE9IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0
bW9zdCkKLSAgICAgICAgICAgICAgICBzdWJQb3NpdGlvbiA9IEZyYWdtZW50UG9zaXRpb25JblJv
b3RGcmFnbWVudHM6Ok5vdFJpZ2h0bW9zdDsKKyAgICAgICAgICAgICAgICBzdWJQb3NpdGlvbiA9
IGlzUmlnaHRtb3N0T3JBZGphY2VudCA/IEZyYWdtZW50UG9zaXRpb25JblJvb3RGcmFnbWVudHM6
OkFkamFjZW50VG9SaWdodG1vc3QgOiBGcmFnbWVudFBvc2l0aW9uSW5Sb290RnJhZ21lbnRzOjpP
dGhlcjsKICAgICAgICAgICAgIGlmIChmcmFnbWVudC0+cHNldWRvRWxlbWVudFNlbGVjdG9yICYm
IGlzU2Nyb2xsYmFyUHNldWRvRWxlbWVudChmcmFnbWVudC0+cHNldWRvRWxlbWVudFNlbGVjdG9y
LT5wc2V1ZG9FbGVtZW50VHlwZSgpKSkKICAgICAgICAgICAgICAgICBmdW5jdGlvblR5cGUgPSBt
b3N0UmVzdHJpY3RpdmVGdW5jdGlvblR5cGUoZnVuY3Rpb25UeXBlLCBhZGRTY3JvbGxiYXJQc2V1
ZG9DbGFzc1R5cGUoKnNlbGVjdG9yLCAqZnJhZ21lbnQpKTsKICAgICAgICAgICAgIGVsc2UgewpA
QCAtMTAxNiw3ICsxMDI0LDEwIEBAIHN0YXRpYyBGdW5jdGlvblR5cGUgY29uc3RydWN0RnJhZ21l
bnRzSW4KICAgICAgICAgZnJhZ21lbnQtPnJlbGF0aW9uVG9MZWZ0RnJhZ21lbnQgPSBmcmFnbWVu
dFJlbGF0aW9uRm9yU2VsZWN0b3JSZWxhdGlvbihyZWxhdGlvbik7CiAgICAgICAgIGZyYWdtZW50
LT5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9IHJlbGF0aW9uVG9QcmV2aW91c0ZyYWdtZW50Owog
ICAgICAgICBmcmFnbWVudC0+cG9zaXRpb25JblJvb3RGcmFnbWVudHMgPSBwb3NpdGlvbkluUm9v
dEZyYWdtZW50czsKKyAgICAgICAgZnJhZ21lbnQtPmlzUmlnaHRtb3N0T3JBZGphY2VudCA9IGlz
UmlnaHRtb3N0T3JBZGphY2VudDsKICAgICAgICAgcmVsYXRpb25Ub1ByZXZpb3VzRnJhZ21lbnQg
PSBmcmFnbWVudC0+cmVsYXRpb25Ub0xlZnRGcmFnbWVudDsKKyAgICAgICAgaWYgKHJlbGF0aW9u
VG9QcmV2aW91c0ZyYWdtZW50ICE9IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0bW9zdCAmJiByZWxh
dGlvblRvUHJldmlvdXNGcmFnbWVudCAhPSBGcmFnbWVudFJlbGF0aW9uOjpEaXJlY3RBZGphY2Vu
dCAmJiByZWxhdGlvblRvUHJldmlvdXNGcmFnbWVudCAhPSBGcmFnbWVudFJlbGF0aW9uOjpJbmRp
cmVjdEFkamFjZW50KQorICAgICAgICAgICAgaXNSaWdodG1vc3RPckFkamFjZW50ID0gZmFsc2U7
CiAKICAgICAgICAgaWYgKGZyYWdtZW50TGV2ZWwgIT0gRnJhZ21lbnRzTGV2ZWw6OlJvb3QpCiAg
ICAgICAgICAgICBmcmFnbWVudC0+b25seU1hdGNoZXNMaW5rc0luUXVpcmtzTW9kZSA9IGZhbHNl
OwpAQCAtMzQ5MSw3ICszNTAyLDEwIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW0KICAgICB7CiAgICAgICAgIExvY2FsUmVnaXN0ZXIgcGFyZW50RWxlbWVudChtX3Jl
Z2lzdGVyQWxsb2NhdG9yKTsKICAgICAgICAgZ2VuZXJhdGVXYWxrVG9QYXJlbnRFbGVtZW50KGZh
aWx1cmVDYXNlcywgcGFyZW50RWxlbWVudCk7Ci0gICAgICAgIGdlbmVyYXRlQWRkU3R5bGVSZWxh
dGlvbklmUmVzb2x2aW5nU3R5bGUocGFyZW50RWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgYXV0byByZWxh
dGlvbiA9IGZyYWdtZW50TWF0Y2hlc1JpZ2h0bW9zdE9yQWRqYWNlbnRFbGVtZW50KGZyYWdtZW50
KQorICAgICAgICAgICAgPyBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMKKyAgICAgICAgICAgIDogU3R5bGU6OlJlbGF0aW9uOjpEZXNjZW5k
YW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICBnZW5lcmF0ZUFk
ZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHBhcmVudEVsZW1lbnQsIHJlbGF0aW9uKTsK
ICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPGludCwgaW50PiwgMzI+IHZhbGlkU3Vic2V0
RmlsdGVyczsKQEAgLTM1NTEsNyArMzU2NSwxMCBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtCiAgICAgewogICAgICAgICBMb2NhbFJlZ2lzdGVyIHBhcmVudEVsZW1l
bnQobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgICAgIGdlbmVyYXRlV2Fsa1RvUGFyZW50RWxl
bWVudChmYWlsdXJlQ2FzZXMsIHBhcmVudEVsZW1lbnQpOwotICAgICAgICBnZW5lcmF0ZUFkZFN0
eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk7CisgICAgICAgIGF1
dG8gcmVsYXRpb24gPSBmcmFnbWVudE1hdGNoZXNSaWdodG1vc3RPckFkamFjZW50RWxlbWVudChm
cmFnbWVudCkKKyAgICAgICAgICAgID8gU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzCisgICAgICAgICAgICA6IFN0eWxlOjpSZWxhdGlvbjo6
RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAgICAgZ2Vu
ZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShwYXJlbnRFbGVtZW50LCByZWxh
dGlvbik7CiAgICAgfQogCiAgICAgLy8gVGhlIGluaXRpYWwgZWxlbWVudCBtdXN0IG1hdGNoIHRo
ZSBzZWxlY3RvciBsaXN0LgpAQCAtMzYwNCw3ICszNjIxLDEwIEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0KICAgICAgICAgTG9jYWxSZWdpc3RlciBwYXJlbnRFbGVt
ZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICBnZW5lcmF0ZVdhbGtUb1BhcmVudEVs
ZW1lbnQoZmFpbHVyZUNhc2VzLCBwYXJlbnRFbGVtZW50KTsKIAotICAgICAgICBnZW5lcmF0ZUFk
ZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxh
dGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOworICAgICAg
ICBhdXRvIHJlbGF0aW9uID0gZnJhZ21lbnRNYXRjaGVzUmlnaHRtb3N0T3JBZGphY2VudEVsZW1l
bnQoZnJhZ21lbnQpCisgICAgICAgICAgICAgICAgICAgID8gU3R5bGU6OlJlbGF0aW9uOjpDaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcworICAgICAgICAgICAgICAgICAg
ICA6IFN0eWxlOjpSZWxhdGlvbjo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXM7CisgICAgICAgIGdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5
bGUocGFyZW50RWxlbWVudCwgcmVsYXRpb24pOwogCiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBl
bmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFzc2VtYmxlcjo6WmVybywgQXNzZW1ibGVyOjpB
ZGRyZXNzKHBhcmVudEVsZW1lbnQsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgpKSwgQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0lzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQo
KSkpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjI5NDU4KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE0LDYg
KzIwMTQsNDMgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZQogICAg
IH0KIH0KIAorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyhFbGVtZW50JiBwYXJlbnQsIEVsZW1lbnQqIGVsZW1lbnRBZnRlckNoYW5nZSkKK3sKKyAgICBi
b29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcygpOworICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZCA9IHBhcmVudC5k
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisKKyAgICBpZiAo
IWNoaWxkcmVuQWZmZWN0ZWQgJiYgIWRlc2NlbmRhbnRzQWZmZWN0ZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZvciAoYXV0byogc2libGluZyA9IGVsZW1lbnRBZnRlckNoYW5nZTsgc2libGlu
Zzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlm
IChjaGlsZHJlbkFmZmVjdGVkKQorICAgICAgICAgICAgc2libGluZy0+aW52YWxpZGF0ZVN0eWxl
SW50ZXJuYWwoKTsKKyAgICAgICAgaWYgKGRlc2NlbmRhbnRzQWZmZWN0ZWQpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byogc2libGluZ0NoaWxkID0gc2libGluZy0+Zmlyc3RFbGVtZW50Q2hpbGQo
KTsgc2libGluZ0NoaWxkOyBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nQ2hpbGQtPm5leHRFbGVtZW50
U2libGluZygpKQorICAgICAgICAgICAgICAgIHNpYmxpbmdDaGlsZC0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhFbGVtZW50JiBwYXJlbnQsIEVs
ZW1lbnQqIGVsZW1lbnRCZWZvcmVDaGFuZ2UpCit7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVk
ID0gcGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Cisg
ICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisKKyAgICBpZiAoIWNoaWxkcmVuQWZmZWN0ZWQg
JiYgIWRlc2NlbmRhbnRzQWZmZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0
byogc2libGluZyA9IGVsZW1lbnRCZWZvcmVDaGFuZ2U7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJs
aW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZm
ZWN0ZWQpCisgICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOwor
ICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRv
KiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hp
bGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisg
ICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50
ZXJuYWwoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogZW51bSBTaWJsaW5nQ2hlY2tUeXBlIHsg
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4sIFNpYmxpbmdFbGVtZW50UmVtb3ZlZCwgT3RoZXIgfTsK
IAogc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQmIHBhcmVu
dCwgU2libGluZ0NoZWNrVHlwZSBjaGVja1R5cGUsIEVsZW1lbnQqIGVsZW1lbnRCZWZvcmVDaGFu
Z2UsIEVsZW1lbnQqIGVsZW1lbnRBZnRlckNoYW5nZSkKQEAgLTIwNzAsMTcgKzIxMDcsOCBAQCBz
dGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoCiAKICAgICBpbnZhbGlkYXRl
Rm9yU2libGluZ0NvbWJpbmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7CiAKLSAgICAvLyBXZSBo
YXZlIHRvIGludmFsaWRhdGUgZXZlcnl0aGluZyBmb2xsb3dpbmcgdGhlIGluc2VydGlvbiBwb2lu
dCBpbiB0aGUgZm9yd2FyZCBjYXNlLCBhbmQgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGluc2VydGlv
biBwb2ludCBpbiB0aGUKLSAgICAvLyBiYWNrd2FyZCBjYXNlLgotICAgIGlmIChwYXJlbnQuY2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpKSB7Ci0gICAgICAgIGZvciAo
YXV0byogbmV4dCA9IGVsZW1lbnRBZnRlckNoYW5nZTsgbmV4dDsgbmV4dCA9IG5leHQtPm5leHRF
bGVtZW50U2libGluZygpKQotICAgICAgICAgICAgbmV4dC0+aW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZUludGVybmFsKCk7Ci0gICAgfQotICAgIC8vIEJhY2t3YXJkIHBvc2l0aW9uYWwgc2VsZWN0
b3JzIGluY2x1ZGUgbnRoLWxhc3QtY2hpbGQsIG50aC1sYXN0LW9mLXR5cGUsIGxhc3Qtb2YtdHlw
ZSBhbmQgb25seS1vZi10eXBlLgotICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHByZXZpb3VzID0g
ZWxlbWVudEJlZm9yZUNoYW5nZTsgcHJldmlvdXM7IHByZXZpb3VzID0gcHJldmlvdXMtPnByZXZp
b3VzRWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgIHByZXZpb3VzLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICB9CisgICAgaW52YWxpZGF0ZUZvckZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOworICAgIGludmFsaWRh
dGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
OwogfQogCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQpAQCAtMjgxNSwxMSArMjg0MywyMSBAQCB2b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhCiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKIH0KIAordm9pZCBFbGVtZW50
OjpzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKK3sKKyAg
ICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKHRydWUpOworfQorCiB2b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKIHsKICAgICBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVl
KTsKIH0KIAordm9pZCBFbGVtZW50OjpzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0RGVzY2Vu
ZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Cit9CisKIHZvaWQg
RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCkKIHsKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFm
ZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7CkBAIC0y
ODQxLDcgKzI4NzksOSBAQCBib29sIEVsZW1lbnQ6Omhhc0ZsYWdzU2V0RHVyaW5nU3R5bGluZ09m
CiAgICAgcmV0dXJuIHJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkKICAgICAgICAgfHwg
cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkKICAgICAgICAgfHwgcmFyZURhdGFDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKKyAgICAgICAgfHwgcmFyZURh
dGFEZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKICAgICAgICAg
fHwgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCisg
ICAgICAgIHx8IHJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKQogICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFz
ZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogfQogCkBAIC0yODc1LDEyICsyOTE1LDI0IEBA
IGJvb2wgRWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnkKICAgICByZXR1cm4gZWxl
bWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
KTsKIH0KIAorYm9vbCBFbGVtZW50OjpyYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAoreworICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsK
KyAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKK30KKwogYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aGFzUmFyZURhdGEoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogfQogCitib29sIEVsZW1lbnQ6OnJh
cmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25z
dAoreworICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKKyAgICByZXR1cm4gZWxlbWVudFJhcmVE
YXRhKCktPmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Cit9
CisKIGJvb2wgRWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2Vk
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0
YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjI5NDU4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw5IEBA
IHB1YmxpYzoKICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzRmxh
Zyk7IH0KICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlc0ZsYWcpOyB9
CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQorICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYg
cmFyZURhdGFEZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0K
ICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0KKyAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAm
JiByYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
IH0KICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFDaGls
ZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQog
ICAgIGJvb2wgYWZmZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
Z2V0RmxhZyhBZmZlY3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUpOyB9CiAgICAgdW5zaWduZWQg
Y2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YUNoaWxk
SW5kZXgoKSA6IDA7IH0KQEAgLTM0OSw3ICszNTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSB7IHNldEZsYWcoQ2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgeyBzZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMoKTsKKyAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMoKTsKICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CisgICAgdm9pZCBzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcygpOwogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJv
cGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgdm9pZCBzZXRBZmZlY3Rz
TmV4dFNpYmxpbmdFbGVtZW50U3R5bGUoKSB7IHNldEZsYWcoQWZmZWN0c05leHRTaWJsaW5nRWxl
bWVudFN0eWxlKTsgfQogICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxp
bmcoKSB7IHNldEZsYWcoU3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOyB9CkBAIC02
NTMsNyArNjU3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3Rl
ZEJ5RHJhZygpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlcygpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCByYXJlRGF0YURlc2NlbmRh
bnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKICAgICBib29sIHJh
cmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsK
KyAgICBib29sIHJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKSBjb25zdDsKICAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVy
dHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcmFy
ZURhdGFDaGlsZEluZGV4KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgJKHJldmlzaW9uIDIyOTQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOCArNzIsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkgeyBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KICAgICBib29sIGNo
aWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7IH0KICAgICB2b2lkIHNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQorICAg
IGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsg
fQorICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyhib29sIHZhbHVlKSB7IG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcyA9IHZhbHVlOyB9CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXM7IH0KICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY2VuZGFudHNB
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KKyAgICB2b2lkIHNldERlc2NlbmRh
bnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9kZXNj
ZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CiAgICAg
Ym9vbCBjaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlczsgfQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJv
cGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJl
bkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsg
fQogCkBAIC0xMzEsNyArMTM1LDkgQEAgcHJpdmF0ZToKICAgICAvLyAqLWNoaWxkLW9mLXR5cGUs
IHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZlciBjaGlsZHJlbiBj
aGFuZ2UgYXQgYWxsLgogICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcyA6IDE7CisgICAgdW5zaWduZWQgbV9kZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKKyAgICB1bnNpZ25lZCBtX2Rlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2No
aWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7
CiAKICAgICBMYXlvdXRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKQEAgLTE3Miw3ICsx
NzgsOSBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoCiAgICAgLCBt
X2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKGZhbHNlKQorICAgICwgbV9kZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKKyAgICAsIG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKICAgICAsIG1fbWlu
aW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogewpA
QCAtMjExLDcgKzIxOSw5IEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRTdHls
ZVIKICAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKGZhbHNlKTsKICAgICBzZXRDaGlsZHJl
bkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSk7CiAgICAgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CisgICAgc2V0RGVzY2VuZGFudHNBZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CiAgICAgc2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOworICAgIHNldERlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKICAgICBzZXRDaGlsZHJl
bkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCShyZXZpc2lv
biAyMjk0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4g
Y29tbWl0UmVsYXRpbwogICAgICAgICBjYXNlIFJlbGF0aW9uOjpEZXNjZW5kYW50c0FmZmVjdGVk
QnlQcmV2aW91c1NpYmxpbmc6CiAgICAgICAgIGNhc2UgUmVsYXRpb246OkFmZmVjdHNOZXh0U2li
bGluZzoKICAgICAgICAgY2FzZSBSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlczoKKyAgICAgICAgY2FzZSBSZWxhdGlvbjo6RGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczoKICAgICAgICAgY2FzZSBSZWxhdGlvbjo6Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM6CisgICAgICAgIGNhc2UgUmVsYXRp
b246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOgogICAgICAg
ICBjYXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM6CiAgICAg
ICAgIGNhc2UgUmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlczoKICAgICAgICAgY2FzZSBSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXM6CkBAIC0xMjcsOSArMTI5LDE1IEBAIHZvaWQgY29tbWl0UmVsYXRp
b25zKHN0ZDo6dW5pcXVlX3B0cjxSZWwKICAgICAgICAgY2FzZSBSZWxhdGlvbjo6Q2hpbGRyZW5B
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczoKICAgICAgICAgICAgIGVsZW1lbnQuc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgUmVsYXRpb246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXM6CisgICAgICAgICAgICBlbGVtZW50LnNldERlc2NlbmRhbnRzQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlczoKICAgICAgICAgICAgIGVsZW1lbnQuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlbGF0
aW9uOjpEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczoKKyAgICAg
ICAgICAgIGVsZW1lbnQuc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlbGF0aW9uOjpDaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM6CiAgICAgICAgICAgICBlbGVtZW50LnNldENo
aWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmgJKHJldmlzaW9uIDIyOTQ1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDggKzQ3LDEwIEBAIHN0cnVjdCBSZWxhdGlvbiB7CiAgICAgICAgIERlc2NlbmRhbnRz
QWZmZWN0ZWRCeVByZXZpb3VzU2libGluZywKICAgICAgICAgLy8gRm9yIEFmZmVjdHNOZXh0U2li
bGluZyAndmFsdWUnIHRlbGxzIGhvdyBtYW55IGVsZW1lbnQgc2libGluZ3MgdG8gbWFyayBzdGFy
dGluZyB3aXRoICdlbGVtZW50Jy4KICAgICAgICAgQWZmZWN0c05leHRTaWJsaW5nLAotICAgICAg
ICBDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzLCAKKyAgICAgICAgQ2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcywKKyAgICAgICAgRGVzY2VuZGFu
dHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcywKICAgICAgICAgQ2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMsCisgICAgICAgIERlc2NlbmRhbnRzQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzLAogICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlG
aXJzdENoaWxkUnVsZXMsCiAgICAgICAgIENoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcywKICAgICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335592</attachid>
            <date>2018-03-12 07:11:49 -0700</date>
            <delta_ts>2018-03-12 09:15:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>nth-child-descendant-7.patch</filename>
            <type>text/plain</type>
            <size>30261</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTUzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE4LTAzLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBpbnZhbGlkYXRlIGRl
c2NlbmRhbnRzIGZvciBudGggcHNldWRvIGNsYXNzZXMgdW5sZXNzIG5lZWRlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY3VycmVudGx5IGludmFs
aWRhdGUgdGhlIHdob2xlIHN1YnRyZWVzIHRoYXQgbWF5IG1hdGNoIDpudGgtY2hpbGQgYW5kIHNp
bWlsYXIuIEluIG1hbnkgY29tbW9uCisgICAgICAgIGNhc2VzIHdlIGtub3cgdGhhdCBvbmx5IHRo
ZSBkaXJlY3Qgc2libGluZ3MgbWF5IGJlIGFmZmVjdGVkLgorCisgICAgICAgICogY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbENvbnRleHRGb3JQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaFJlY3Vyc2l2ZWx5IGNv
bnN0KToKKworICAgICAgICAgICAgVHJhY2sgaWYgdGhlIGNvbnRleHQgbWF0Y2hlcyB0aGUgc3Vi
amVjdCBlbGVtZW50IGlmIHRoZSBzZWxlY3RvciBvciBpdHMgc2libGluZ3Mgb25seS4KKworICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSBjb25zdCk6CisKKyAgICAg
ICAgICAgIFVzZSBkaWZmZXJlbnQgYml0cyBvZiBkZXNjZW5kYW50IGFuZCBjaGlsZCBpbnZhbGlk
YXRpb24gY2FzZXMuCisKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpmcmFnbWVudE1hdGNoZXNSaWdodG1v
c3RPckFkamFjZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVy
Ojpjb25zdHJ1Y3RGcmFnbWVudHNJbnRlcm5hbCk6CisKKyAgICAgICAgICAgIFRyYWNrIGlmIHRo
ZSBjb250ZXh0IG1hdGNoZXMgdGhlIHN1YmplY3QgZWxlbWVudCBpZiB0aGUgc2VsZWN0b3Igb3Ig
aXRzIHNpYmxpbmdzIG9ubHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNOdGhDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlRWxlbWVudElzTnRoQ2hpbGRPZik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzTnRoTGFzdENo
aWxkKToKKworICAgICAgICAgICAgVXNlIGRpZmZlcmVudCBiaXRzIG9mIGRlc2NlbmRhbnQgYW5k
IGNoaWxkIGludmFsaWRhdGlvbiBjYXNlcy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6
CisKKyAgICAgICAgICAgIEludmFsaWRhdGUgbW9yZSBwcmVjaXNlbHkgYmFzZWQgb24gdGhlIG5l
dyBiaXRzLgorCisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXREZXNj
ZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpoYXNGbGFnc1NldER1cmluZ1N0eWxpbmdPZkNoaWxkcmVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGNv
bnN0KToKKworICAgICAgICAgICAgTmV3IGJpdHMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZXNj
ZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpkZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0RGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFy
ZURhdGE6OmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0RGVzY2VuZGFudHNBZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJh
cmVEYXRhOjpyZXNldFN0eWxlUmVsYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zVG9SZW5k
ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zKToKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5oOgorCiAyMDE4LTAzLTEyICBKYXZpZXIgRmVy
bmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBHcmlkTGF5
b3V0IHJ1bnRpbWUgZmxhZwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAJKHJldmlzaW9uIDIyOTQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBTZWxlY3RvckNo
ZWNrZXI6OkxvY2FsQ29udGV4dCB7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIGZpcnN0U2VsZWN0
b3JPZlRoZUZyYWdtZW50OwogICAgIFBzZXVkb0lkIHBzZXVkb0lkOwogICAgIGJvb2wgaXNNYXRj
aEVsZW1lbnQgeyB0cnVlIH07CisgICAgYm9vbCBpc1N1YmplY3RPckFkamFjZW50RWxlbWVudCB7
IHRydWUgfTsKICAgICBib29sIGluRnVuY3Rpb25hbFBzZXVkb0NsYXNzIHsgZmFsc2UgfTsKICAg
ICBib29sIHBzZXVkb0VsZW1lbnRFZmZlY3RpdmUgeyB0cnVlIH07CiAgICAgYm9vbCBoYXNTY3Jv
bGxiYXJQc2V1ZG8geyBmYWxzZSB9OwpAQCAtMjM4LDYgKzIzOSw3IEBAIHN0YXRpYyBTZWxlY3Rv
ckNoZWNrZXI6OkxvY2FsQ29udGV4dCBsb2MKICAgICAgICAgdXBkYXRlZENvbnRleHQudmlzaXRl
ZE1hdGNoVHlwZSA9IFZpc2l0ZWRNYXRjaFR5cGU6OkRpc2FibGVkOwogCiAgICAgdXBkYXRlZENv
bnRleHQuaXNNYXRjaEVsZW1lbnQgPSBmYWxzZTsKKyAgICB1cGRhdGVkQ29udGV4dC5pc1N1Ympl
Y3RPckFkamFjZW50RWxlbWVudCA9IGZhbHNlOwogCiAgICAgaWYgKHVwZGF0ZWRDb250ZXh0Lm1h
eU1hdGNoSG9zdFBzZXVkb0NsYXNzKSB7CiAgICAgICAgIHVwZGF0ZWRDb250ZXh0LmVsZW1lbnQg
PSBudWxscHRyOwpAQCAtNDMyLDYgKzQzNCw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hSZXN1
bHQgU2VsZWN0b3JDaGUKICAgICAgICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZhaWxz
KE1hdGNoOjpTZWxlY3RvckZhaWxzQ29tcGxldGVseSk7CiAgICAgICAgICAgICBuZXh0Q29udGV4
dC5lbGVtZW50ID0gc2hhZG93SG9zdE5vZGU7CiAgICAgICAgICAgICBuZXh0Q29udGV4dC5maXJz
dFNlbGVjdG9yT2ZUaGVGcmFnbWVudCA9IG5leHRDb250ZXh0LnNlbGVjdG9yOworICAgICAgICAg
ICAgbmV4dENvbnRleHQuaXNTdWJqZWN0T3JBZGphY2VudEVsZW1lbnQgPSBmYWxzZTsKICAgICAg
ICAgICAgIFBzZXVkb0lkU2V0IGlnbm9yZUR5bmFtaWNQc2V1ZG87CiAgICAgICAgICAgICB1bnNp
Z25lZCBzaGFkb3dEZXNjZW5kYW50U3BlY2lmaWNpdHkgPSAwOwogICAgICAgICAgICAgTWF0Y2hS
ZXN1bHQgcmVzdWx0ID0gbWF0Y2hSZWN1cnNpdmVseShjaGVja2luZ0NvbnRleHQsIG5leHRDb250
ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvLCBzaGFkb3dEZXNjZW5kYW50U3BlY2lmaWNpdHkpOwpA
QCAtNzQ2LDcgKzc0OSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2lu
Z0MKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGaXJzdE9mVHlwZToKICAg
ICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBp
dHMgdHlwZQogICAgICAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LnBh
cmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tp
bmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJlbGF0
aW9uID0gY29udGV4dC5pc1N1YmplY3RPckFkamFjZW50RWxlbWVudCA/IFN0eWxlOjpSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6IFN0eWxlOjpSZWxh
dGlvbjo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAg
ICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1l
bnQsIHJlbGF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaXNGaXJzdE9mVHlwZShlbGVt
ZW50LCBlbGVtZW50LnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CkBAIC03NjMsNyArNzY3LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKENo
ZWNraW5nQwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhc3RPZlR5cGU6
CiAgICAgICAgICAgICAvLyBsYXN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgbGFzdCBlbGVtZW50IG9m
IGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQucGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihj
aGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgICAgICAgICBhdXRv
IHJlbGF0aW9uID0gY29udGV4dC5pc1N1YmplY3RPckFkamFjZW50RWxlbWVudCA/IFN0eWxlOjpS
ZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiBTdHls
ZTo6UmVsYXRpb246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
OworICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFy
ZW50RWxlbWVudCwgcmVsYXRpb24pOwogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTGFzdE9mVHlwZShlbGVtZW50LCBl
bGVtZW50LnRhZ1FOYW1lKCkpOwpAQCAtNzg1LDggKzc5MCwxMCBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzT25seU9mVHlwZToKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlbGVjdG9yIGlz
IHZlcnkgc2xvdy4KICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxl
bWVudC5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9u
KGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRy
ZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk7Ci0gICAgICAgICAgICAgICAgYWRk
U3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVs
YXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGZvcndhcmRSZWxhdGlvbiA9IGNvbnRleHQuaXNTdWJqZWN0T3JBZGph
Y2VudEVsZW1lbnQgPyBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMgOiBTdHlsZTo6UmVsYXRpb246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihj
aGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBmb3J3YXJkUmVsYXRpb24pOworICAgICAg
ICAgICAgICAgIGF1dG8gYmFja3dhcmRSZWxhdGlvbiA9IGNvbnRleHQuaXNTdWJqZWN0T3JBZGph
Y2VudEVsZW1lbnQgPyBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzIDogU3R5bGU6OlJlbGF0aW9uOjpEZXNjZW5kYW50c0FmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9u
KGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIGJhY2t3YXJkUmVsYXRpb24pOwogICAg
ICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJl
bigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGlzRmlyc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKSAmJiBpc0xh
c3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKTsKQEAgLTgzMyw3ICs4NDAsOCBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yLnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJl
bnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOworICAgICAgICAgICAgICAgIGF1dG8gcmVsYXRpb24gPSBjb250ZXh0Lmlz
U3ViamVjdE9yQWRqYWNlbnRFbGVtZW50ID8gU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogU3R5bGU6OlJlbGF0aW9uOjpEZXNjZW5kYW50
c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICAgICAgICAgIGFkZFN0
eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgcmVsYXRpb24pOwog
CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0
ID0gc2VsZWN0b3Iuc2VsZWN0b3JMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2VsZWN0b3JMaXN0U3BlY2lmaWNpdHk7CkBAIC04NjMsNyArODcxLDggQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lKENoZWNraW5nQwogICAgICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxl
bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRl
eHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMpOworICAgICAgICAgICAgICAgIGF1dG8gcmVsYXRpb24gPSBj
b250ZXh0LmlzU3ViamVjdE9yQWRqYWNlbnRFbGVtZW50ID8gU3R5bGU6OlJlbGF0aW9uOjpDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogU3R5bGU6OlJlbGF0aW9uOjpE
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICAgICAg
ICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgcmVs
YXRpb24pOwogCiAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIGNvdW50RWxlbWVudHNP
ZlR5cGVCZWZvcmUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2VsZWN0b3IubWF0Y2hOdGgoY291bnQpKQpAQCAtODgxLDggKzg5MCwxMCBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgICAgICAgICAgICAg
IHNwZWNpZmljaXR5ID0gQ1NTU2VsZWN0b3I6OmFkZFNwZWNpZmljaXRpZXMoc3BlY2lmaWNpdHks
IHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KTsKIAogICAgICAgICAgICAgICAgICAgICBhZGRTdHls
ZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYWRkU3R5bGVS
ZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246
OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlbGF0aW9uID0gY29udGV4
dC5pc1N1YmplY3RPckFkamFjZW50RWxlbWVudCA/IFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiBTdHlsZTo6UmVsYXRpb246OkRlc2Nl
bmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICAgICAgICAg
ICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIHJl
bGF0aW9uKTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVu
dEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtOTA1LDcgKzkxNiw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgICAgIGlmICghc2VsZWN0b3IucGFyc2VOdGgo
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJl
bnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBh
ZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpS
ZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOworICAg
ICAgICAgICAgICAgIGF1dG8gcmVsYXRpb24gPSBjb250ZXh0LmlzU3ViamVjdE9yQWRqYWNlbnRF
bGVtZW50ID8gU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyA6IFN0eWxlOjpSZWxhdGlvbjo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXM7CisgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVj
a2luZ0NvbnRleHQsICpwYXJlbnRFbGVtZW50LCByZWxhdGlvbik7CiAKICAgICAgICAgICAgICAg
ICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0
L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2pp
dC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI5NDU4KQorKysgU291cmNlL1dlYkNv
cmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyAr
MTA2LDggQEAgZW51bSBjbGFzcyBGdW5jdGlvblR5cGUgewogCiBlbnVtIGNsYXNzIEZyYWdtZW50
UG9zaXRpb25JblJvb3RGcmFnbWVudHMgewogICAgIFJpZ2h0bW9zdCwKLSAgICBOb3RSaWdodG1v
c3QKKyAgICBBZGphY2VudFRvUmlnaHRtb3N0LAorICAgIE90aGVyCiB9OwogCiBlbnVtIGNsYXNz
IFZpc2l0ZWRNb2RlIHsKQEAgLTE3OCw2ICsxNzksNyBAQCBzdHJ1Y3QgU2VsZWN0b3JGcmFnbWVu
dCB7CiAgICAgRnJhZ21lbnRSZWxhdGlvbiByZWxhdGlvblRvTGVmdEZyYWdtZW50OwogICAgIEZy
YWdtZW50UmVsYXRpb24gcmVsYXRpb25Ub1JpZ2h0RnJhZ21lbnQ7CiAgICAgRnJhZ21lbnRQb3Np
dGlvbkluUm9vdEZyYWdtZW50cyBwb3NpdGlvbkluUm9vdEZyYWdtZW50czsKKyAgICBib29sIGlz
UmlnaHRtb3N0T3JBZGphY2VudCB7IGZhbHNlIH07CiAKICAgICBCYWNrdHJhY2tpbmdBY3Rpb24g
dHJhdmVyc2FsQmFja3RyYWNraW5nQWN0aW9uID0gQmFja3RyYWNraW5nQWN0aW9uOjpOb0JhY2t0
cmFja2luZzsKICAgICBCYWNrdHJhY2tpbmdBY3Rpb24gbWF0Y2hpbmdUYWdOYW1lQmFja3RyYWNr
aW5nQWN0aW9uID0gQmFja3RyYWNraW5nQWN0aW9uOjpOb0JhY2t0cmFja2luZzsKQEAgLTQyNyw2
ICs0MjksMTEgQEAgc3RhdGljIGlubGluZSBib29sIGZyYWdtZW50TWF0Y2hlc1RoZVJpZwogICAg
IHJldHVybiBmcmFnbWVudC5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9PSBGcmFnbWVudFJlbGF0
aW9uOjpSaWdodG1vc3QgJiYgZnJhZ21lbnQucG9zaXRpb25JblJvb3RGcmFnbWVudHMgPT0gRnJh
Z21lbnRQb3NpdGlvbkluUm9vdEZyYWdtZW50czo6UmlnaHRtb3N0OwogfQogCitzdGF0aWMgaW5s
aW5lIGJvb2wgZnJhZ21lbnRNYXRjaGVzUmlnaHRtb3N0T3JBZGphY2VudEVsZW1lbnQoY29uc3Qg
U2VsZWN0b3JGcmFnbWVudCYgZnJhZ21lbnQpCit7CisgICAgcmV0dXJuIGZyYWdtZW50LmlzUmln
aHRtb3N0T3JBZGphY2VudCAmJiBmcmFnbWVudC5wb3NpdGlvbkluUm9vdEZyYWdtZW50cyAhPSBG
cmFnbWVudFBvc2l0aW9uSW5Sb290RnJhZ21lbnRzOjpPdGhlcjsKK30KKwogRnVuY3Rpb25UeXBl
IFNlbGVjdG9yRnJhZ21lbnQ6OmFwcGVuZFVub3B0aW1pemVkUHNldWRvQ2xhc3NXaXRoQ29udGV4
dChib29sICgqbWF0Y2hlcikoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQm
KSkKIHsKICAgICB1bm9wdGltaXplZFBzZXVkb0NsYXNzZXNXaXRoQ29udGV4dC5hcHBlbmQoSlND
OjpGdW5jdGlvblB0cihtYXRjaGVyKSk7CkBAIC04NzMsNiArODgwLDcgQEAgc3RhdGljIGJvb2wg
aXNTY3JvbGxiYXJQc2V1ZG9FbGVtZW50KENTUwogc3RhdGljIEZ1bmN0aW9uVHlwZSBjb25zdHJ1
Y3RGcmFnbWVudHNJbnRlcm5hbChjb25zdCBDU1NTZWxlY3Rvciogcm9vdFNlbGVjdG9yLCBTZWxl
Y3RvckNvbnRleHQgc2VsZWN0b3JDb250ZXh0LCBTZWxlY3RvckZyYWdtZW50TGlzdCYgc2VsZWN0
b3JGcmFnbWVudHMsIEZyYWdtZW50c0xldmVsIGZyYWdtZW50TGV2ZWwsIEZyYWdtZW50UG9zaXRp
b25JblJvb3RGcmFnbWVudHMgcG9zaXRpb25JblJvb3RGcmFnbWVudHMsIGJvb2wgdmlzaXRlZE1h
dGNoRW5hYmxlZCwgVmlzaXRlZE1vZGUmIHZpc2l0ZWRNb2RlLCBQc2V1ZG9FbGVtZW50TWF0Y2hp
bmdCZWhhdmlvciBwc2V1ZG9FbGVtZW50TWF0Y2hpbmdCZWhhdmlvcikKIHsKICAgICBGcmFnbWVu
dFJlbGF0aW9uIHJlbGF0aW9uVG9QcmV2aW91c0ZyYWdtZW50ID0gRnJhZ21lbnRSZWxhdGlvbjo6
UmlnaHRtb3N0OworICAgIGJvb2wgaXNSaWdodG1vc3RPckFkamFjZW50ID0gcG9zaXRpb25JblJv
b3RGcmFnbWVudHMgIT0gRnJhZ21lbnRQb3NpdGlvbkluUm9vdEZyYWdtZW50czo6T3RoZXI7CiAg
ICAgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uVHlwZSA9IEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0
b3JDaGVja2VyOwogICAgIFNlbGVjdG9yRnJhZ21lbnQqIGZyYWdtZW50ID0gbnVsbHB0cjsKICAg
ICB1bnNpZ25lZCBzcGVjaWZpY2l0eSA9IDA7CkBAIC05MTQsNyArOTIyLDcgQEAgc3RhdGljIEZ1
bmN0aW9uVHlwZSBjb25zdHJ1Y3RGcmFnbWVudHNJbgogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzczogewogICAgICAgICAgICAgRnJhZ21lbnRQb3NpdGlvbkluUm9vdEZyYWdt
ZW50cyBzdWJQb3NpdGlvbiA9IHBvc2l0aW9uSW5Sb290RnJhZ21lbnRzOwogICAgICAgICAgICAg
aWYgKHJlbGF0aW9uVG9QcmV2aW91c0ZyYWdtZW50ICE9IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0
bW9zdCkKLSAgICAgICAgICAgICAgICBzdWJQb3NpdGlvbiA9IEZyYWdtZW50UG9zaXRpb25JblJv
b3RGcmFnbWVudHM6Ok5vdFJpZ2h0bW9zdDsKKyAgICAgICAgICAgICAgICBzdWJQb3NpdGlvbiA9
IGlzUmlnaHRtb3N0T3JBZGphY2VudCA/IEZyYWdtZW50UG9zaXRpb25JblJvb3RGcmFnbWVudHM6
OkFkamFjZW50VG9SaWdodG1vc3QgOiBGcmFnbWVudFBvc2l0aW9uSW5Sb290RnJhZ21lbnRzOjpP
dGhlcjsKICAgICAgICAgICAgIGlmIChmcmFnbWVudC0+cHNldWRvRWxlbWVudFNlbGVjdG9yICYm
IGlzU2Nyb2xsYmFyUHNldWRvRWxlbWVudChmcmFnbWVudC0+cHNldWRvRWxlbWVudFNlbGVjdG9y
LT5wc2V1ZG9FbGVtZW50VHlwZSgpKSkKICAgICAgICAgICAgICAgICBmdW5jdGlvblR5cGUgPSBt
b3N0UmVzdHJpY3RpdmVGdW5jdGlvblR5cGUoZnVuY3Rpb25UeXBlLCBhZGRTY3JvbGxiYXJQc2V1
ZG9DbGFzc1R5cGUoKnNlbGVjdG9yLCAqZnJhZ21lbnQpKTsKICAgICAgICAgICAgIGVsc2UgewpA
QCAtMTAxNiw3ICsxMDI0LDEwIEBAIHN0YXRpYyBGdW5jdGlvblR5cGUgY29uc3RydWN0RnJhZ21l
bnRzSW4KICAgICAgICAgZnJhZ21lbnQtPnJlbGF0aW9uVG9MZWZ0RnJhZ21lbnQgPSBmcmFnbWVu
dFJlbGF0aW9uRm9yU2VsZWN0b3JSZWxhdGlvbihyZWxhdGlvbik7CiAgICAgICAgIGZyYWdtZW50
LT5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9IHJlbGF0aW9uVG9QcmV2aW91c0ZyYWdtZW50Owog
ICAgICAgICBmcmFnbWVudC0+cG9zaXRpb25JblJvb3RGcmFnbWVudHMgPSBwb3NpdGlvbkluUm9v
dEZyYWdtZW50czsKKyAgICAgICAgZnJhZ21lbnQtPmlzUmlnaHRtb3N0T3JBZGphY2VudCA9IGlz
UmlnaHRtb3N0T3JBZGphY2VudDsKICAgICAgICAgcmVsYXRpb25Ub1ByZXZpb3VzRnJhZ21lbnQg
PSBmcmFnbWVudC0+cmVsYXRpb25Ub0xlZnRGcmFnbWVudDsKKyAgICAgICAgaWYgKHJlbGF0aW9u
VG9QcmV2aW91c0ZyYWdtZW50ICE9IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0bW9zdCAmJiByZWxh
dGlvblRvUHJldmlvdXNGcmFnbWVudCAhPSBGcmFnbWVudFJlbGF0aW9uOjpEaXJlY3RBZGphY2Vu
dCAmJiByZWxhdGlvblRvUHJldmlvdXNGcmFnbWVudCAhPSBGcmFnbWVudFJlbGF0aW9uOjpJbmRp
cmVjdEFkamFjZW50KQorICAgICAgICAgICAgaXNSaWdodG1vc3RPckFkamFjZW50ID0gZmFsc2U7
CiAKICAgICAgICAgaWYgKGZyYWdtZW50TGV2ZWwgIT0gRnJhZ21lbnRzTGV2ZWw6OlJvb3QpCiAg
ICAgICAgICAgICBmcmFnbWVudC0+b25seU1hdGNoZXNMaW5rc0luUXVpcmtzTW9kZSA9IGZhbHNl
OwpAQCAtMzQ5MSw3ICszNTAyLDEwIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW0KICAgICB7CiAgICAgICAgIExvY2FsUmVnaXN0ZXIgcGFyZW50RWxlbWVudChtX3Jl
Z2lzdGVyQWxsb2NhdG9yKTsKICAgICAgICAgZ2VuZXJhdGVXYWxrVG9QYXJlbnRFbGVtZW50KGZh
aWx1cmVDYXNlcywgcGFyZW50RWxlbWVudCk7Ci0gICAgICAgIGdlbmVyYXRlQWRkU3R5bGVSZWxh
dGlvbklmUmVzb2x2aW5nU3R5bGUocGFyZW50RWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTsKKyAgICAgICAgYXV0byByZWxh
dGlvbiA9IGZyYWdtZW50TWF0Y2hlc1JpZ2h0bW9zdE9yQWRqYWNlbnRFbGVtZW50KGZyYWdtZW50
KQorICAgICAgICAgICAgPyBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMKKyAgICAgICAgICAgIDogU3R5bGU6OlJlbGF0aW9uOjpEZXNjZW5k
YW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgICAgICBnZW5lcmF0ZUFk
ZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHBhcmVudEVsZW1lbnQsIHJlbGF0aW9uKTsK
ICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPGludCwgaW50PiwgMzI+IHZhbGlkU3Vic2V0
RmlsdGVyczsKQEAgLTM1NTEsNyArMzU2NSwxMCBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtCiAgICAgewogICAgICAgICBMb2NhbFJlZ2lzdGVyIHBhcmVudEVsZW1l
bnQobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgICAgIGdlbmVyYXRlV2Fsa1RvUGFyZW50RWxl
bWVudChmYWlsdXJlQ2FzZXMsIHBhcmVudEVsZW1lbnQpOwotICAgICAgICBnZW5lcmF0ZUFkZFN0
eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk7CisgICAgICAgIGF1
dG8gcmVsYXRpb24gPSBmcmFnbWVudE1hdGNoZXNSaWdodG1vc3RPckFkamFjZW50RWxlbWVudChm
cmFnbWVudCkKKyAgICAgICAgICAgID8gU3R5bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzCisgICAgICAgICAgICA6IFN0eWxlOjpSZWxhdGlvbjo6
RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAgICAgZ2Vu
ZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShwYXJlbnRFbGVtZW50LCByZWxh
dGlvbik7CiAgICAgfQogCiAgICAgLy8gVGhlIGluaXRpYWwgZWxlbWVudCBtdXN0IG1hdGNoIHRo
ZSBzZWxlY3RvciBsaXN0LgpAQCAtMzYwNCw3ICszNjIxLDEwIEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0KICAgICAgICAgTG9jYWxSZWdpc3RlciBwYXJlbnRFbGVt
ZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICBnZW5lcmF0ZVdhbGtUb1BhcmVudEVs
ZW1lbnQoZmFpbHVyZUNhc2VzLCBwYXJlbnRFbGVtZW50KTsKIAotICAgICAgICBnZW5lcmF0ZUFk
ZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxh
dGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOworICAgICAg
ICBhdXRvIHJlbGF0aW9uID0gZnJhZ21lbnRNYXRjaGVzUmlnaHRtb3N0T3JBZGphY2VudEVsZW1l
bnQoZnJhZ21lbnQpCisgICAgICAgICAgICA/IFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMKKyAgICAgICAgICAgIDogU3R5bGU6OlJlbGF0
aW9uOjpEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICAg
ICAgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShwYXJlbnRFbGVtZW50
LCByZWxhdGlvbik7CiAKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5i
cmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBBc3NlbWJsZXI6OkFkZHJlc3MocGFyZW50RWxl
bWVudCwgTm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihOb2RlOjpmbGFnSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpKSkpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjk0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTQsNiArMjAxNCw0MyBAQCBzdGF0
aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoRWxlCiAgICAgfQogfQogCisKK3N0YXRp
YyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVu
dCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZl
Y3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3Rl
ZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChh
dXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0
ZWQpCisgICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAg
ICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBz
aWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7
IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAg
ICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJu
YWwoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJl
Zm9yZUNoYW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRh
bnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNB
ZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxl
bWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAg
ICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNj
ZW5kYW50c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9
IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxk
ID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBz
aWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAg
ICB9CisgICAgfQorfQorCiBlbnVtIFNpYmxpbmdDaGVja1R5cGUgeyBGaW5pc2hlZFBhcnNpbmdD
aGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBPdGhlciB9OwogCiBzdGF0aWMgdm9pZCBj
aGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFyZW50LCBTaWJsaW5nQ2hlY2tU
eXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSwgRWxlbWVudCogZWxl
bWVudEFmdGVyQ2hhbmdlKQpAQCAtMjA3MCwxNyArMjEwNyw4IEBAIHN0YXRpYyB2b2lkIGNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcygKIAogICAgIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmlu
YXRvcnMoZWxlbWVudEFmdGVyQ2hhbmdlKTsKIAotICAgIC8vIFdlIGhhdmUgdG8gaW52YWxpZGF0
ZSBldmVyeXRoaW5nIGZvbGxvd2luZyB0aGUgaW5zZXJ0aW9uIHBvaW50IGluIHRoZSBmb3J3YXJk
IGNhc2UsIGFuZCBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zZXJ0aW9uIHBvaW50IGluIHRoZQot
ICAgIC8vIGJhY2t3YXJkIGNhc2UuCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiBuZXh0ID0gZWxl
bWVudEFmdGVyQ2hhbmdlOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkp
Ci0gICAgICAgICAgICBuZXh0LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
LSAgICB9Ci0gICAgLy8gQmFja3dhcmQgcG9zaXRpb25hbCBzZWxlY3RvcnMgaW5jbHVkZSBudGgt
bGFzdC1jaGlsZCwgbnRoLWxhc3Qtb2YtdHlwZSwgbGFzdC1vZi10eXBlIGFuZCBvbmx5LW9mLXR5
cGUuCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byogcHJldmlvdXMgPSBlbGVtZW50QmVmb3JlQ2hh
bmdlOyBwcmV2aW91czsgcHJldmlvdXMgPSBwcmV2aW91cy0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpKQotICAgICAgICAgICAgcHJldmlvdXMtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRl
cm5hbCgpOwotICAgIH0KKyAgICBpbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhw
YXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7CisgICAgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9yZUNoYW5nZSk7CiB9CiAKIHZvaWQgRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCkBAIC0yODE1
LDExICsyODQzLDIxIEBAIHZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2EK
ICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKHRydWUpOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldERlc2NlbmRhbnRz
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLnNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
dHJ1ZSk7Cit9CisKIHZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKQogewogICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldENoaWxk
cmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHRydWUpOwogfQogCit2b2lkIEVs
ZW1lbnQ6OnNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkK
K3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXREZXNjZW5kYW50c0FmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKK30KKwogdm9pZCBFbGVtZW50OjpzZXRDaGls
ZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQogewog
ICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldENoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5
QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKQEAgLTI4NDEsNyArMjg3OSw5IEBA
IGJvb2wgRWxlbWVudDo6aGFzRmxhZ3NTZXREdXJpbmdTdHlsaW5nT2YKICAgICByZXR1cm4gcmFy
ZURhdGFTdHlsZUFmZmVjdGVkQnlBY3RpdmUoKQogICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVu
QWZmZWN0ZWRCeURyYWcoKQogICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKQorICAgICAgICB8fCByYXJlRGF0YURlc2NlbmRhbnRzQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKQogICAgICAgICB8fCByYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKKyAgICAgICAgfHwgcmFyZURh
dGFEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCiAgICAgICAg
IHx8IHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7CiB9CiAKQEAgLTI4NzUsMTIgKzI5MTUsMjQgQEAgYm9vbCBFbGVtZW50Ojpy
YXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeQogICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogfQogCitib29sIEVs
ZW1lbnQ6OnJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOworICAgIHJldHVybiBlbGVt
ZW50UmFyZURhdGEoKS0+ZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cygpOworfQorCiBib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsK
ICAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CiB9CiAKK2Jvb2wgRWxlbWVudDo6cmFyZURhdGFEZXNjZW5kYW50
c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGhhc1JhcmVEYXRhKCkpOworICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+ZGVzY2VuZGFu
dHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKK30KKwogYm9vbCBFbGVtZW50
OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCShyZXZpc2lvbiAyMjk0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDkgQEAgcHVibGljOgogICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gZ2V0
RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXNGbGFnKTsgfQogICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzRmxhZyk7IH0KICAgICBib29sIGNoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNS
YXJlRGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOyB9CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YURlc2NlbmRh
bnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQogICAgIGJvb2wgY2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNS
YXJlRGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKTsgfQorICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhRGVzY2Vu
ZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQogICAgIGJvb2wgY2hp
bGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeVBy
b3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CiAgICAgYm9vbCBhZmZlY3Rz
TmV4dFNpYmxpbmdFbGVtZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEFmZmVjdHNO
ZXh0U2libGluZ0VsZW1lbnRTdHlsZSk7IH0KICAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29u
c3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVEYXRhQ2hpbGRJbmRleCgpIDogMDsgfQpA
QCAtMzQ5LDcgKzM1MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRSdWxlcygpIHsgc2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxk
UnVsZXNGbGFnKTsgfQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXMoKSB7IHNldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXNGbGFnKTsgfQog
ICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwor
ICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KTsKKyAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKCk7CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICB2b2lkIHNldEFmZmVjdHNOZXh0U2libGluZ0VsZW1l
bnRTdHlsZSgpIHsgc2V0RmxhZyhBZmZlY3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUpOyB9CiAg
ICAgdm9pZCBzZXRTdHlsZUlzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZygpIHsgc2V0RmxhZyhT
dHlsZUlzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyk7IH0KQEAgLTY1Myw3ICs2NTcsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3Q7
CiAgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29u
c3Q7CiAgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoKSBjb25zdDsKKyAgICBib29sIHJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAgIGJvb2wgcmFyZURh
dGFEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Owog
ICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKICAgICB1bnNpZ25lZCByYXJlRGF0YUNoaWxkSW5kZXgo
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkocmV2aXNp
b24gMjI5NDU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw4ICs3MiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDaGlsZHJl
bkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsgfQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBkZXNjZW5kYW50
c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZXNj
ZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9CisgICAgdm9pZCBzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsg
bV9kZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0K
ICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsg
fQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
Ym9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
ID0gdmFsdWU7IH0KKyAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlczsgfQorICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KICAgICBib29sIGNoaWxkcmVuQWZm
ZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeVByb3Bl
cnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CiAKQEAgLTEzMSw3ICsx
MzUsOSBAQCBwcml2YXRlOgogICAgIC8vICotY2hpbGQtb2YtdHlwZSwgd2Ugd2lsbCBqdXN0IGdp
dmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxkcmVuIGNoYW5nZSBhdCBhbGwuCiAg
ICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA6IDE7CiAgICAg
dW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsK
KyAgICB1bnNpZ25lZCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMgOiAxOworICAgIHVuc2lnbmVkIG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5
UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKIAogICAgIExheW91dFNp
emUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwpAQCAtMTcyLDcgKzE3OCw5IEBAIGlubGluZSBF
bGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgKICAgICAsIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5RHJhZyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMo
ZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
ZmFsc2UpCisgICAgLCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKGZhbHNlKQorICAgICwgbV9kZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAgICwgbV9taW5pbXVtU2l6ZUZvclJlc2l6
aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiB7CkBAIC0yMTEsNyArMjE5LDkg
QEAgaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldFN0eWxlUgogICAgIHNldENoaWxk
cmVuQWZmZWN0ZWRCeURyYWcoZmFsc2UpOwogICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzKGZhbHNlKTsKICAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKGZhbHNlKTsKKyAgICBzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9z
aXRpb25hbFJ1bGVzKGZhbHNlKTsKICAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcyhmYWxzZSk7CisgICAgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwogICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeVByb3Bl
cnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAJKHJldmlzaW9uIDIyOTQ1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsNyArNzgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvCiAg
ICAgICAgIGNhc2UgUmVsYXRpb246OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeVByZXZpb3VzU2libGlu
ZzoKICAgICAgICAgY2FzZSBSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nOgogICAgICAgICBj
YXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOgor
ICAgICAgICBjYXNlIFJlbGF0aW9uOjpEZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzOgogICAgICAgICBjYXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlczoKKyAgICAgICAgY2FzZSBSZWxhdGlvbjo6RGVzY2VuZGFudHNB
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM6CiAgICAgICAgIGNhc2UgUmVsYXRpb246
OkNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlczoKICAgICAgICAgY2FzZSBSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
OgogICAgICAgICBjYXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
czoKQEAgLTEyNyw5ICsxMjksMTUgQEAgdm9pZCBjb21taXRSZWxhdGlvbnMoc3RkOjp1bmlxdWVf
cHRyPFJlbAogICAgICAgICBjYXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzOgogICAgICAgICAgICAgZWxlbWVudC5zZXRDaGlsZHJlbkFmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBSZWxhdGlvbjo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
czoKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVsYXRp
b246OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOgogICAgICAgICAg
ICAgZWxlbWVudC5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVsYXRpb246OkRlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOgorICAgICAgICAgICAgZWxlbWVudC5z
ZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlczoKICAgICAgICAgICAgIGVsZW1lbnQuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
Rmlyc3RDaGlsZFJ1bGVzKCk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZWxhdGlvbnMuaAkocmV2aXNpb24gMjI5NDU4KQorKysgU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsMTAg
QEAgc3RydWN0IFJlbGF0aW9uIHsKICAgICAgICAgRGVzY2VuZGFudHNBZmZlY3RlZEJ5UHJldmlv
dXNTaWJsaW5nLAogICAgICAgICAvLyBGb3IgQWZmZWN0c05leHRTaWJsaW5nICd2YWx1ZScgdGVs
bHMgaG93IG1hbnkgZWxlbWVudCBzaWJsaW5ncyB0byBtYXJrIHN0YXJ0aW5nIHdpdGggJ2VsZW1l
bnQnLgogICAgICAgICBBZmZlY3RzTmV4dFNpYmxpbmcsCi0gICAgICAgIENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMsIAorICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzLAorICAgICAgICBEZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzLAogICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcywKKyAgICAgICAgRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMsCiAgICAgICAgIENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcywK
ICAgICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzLAogICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcywK
</data>

          </attachment>
      

    </bug>

</bugzilla>