<?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>225685</bug_id>
          
          <creation_ts>2021-05-11 20:47:57 -0700</creation_ts>
          <short_desc>REGRESSION(r277341): Caused WK2 layout tests to exit with an exception</short_desc>
          <delta_ts>2021-05-11 20:51:15 -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>New Bugs</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>
          
          <blocked>225333</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1759148</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-11 20:47:57 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/277341 broke the build:
Caused WK2 layout tests to exit with an exception

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759150</commentid>
    <comment_count>1</comment_count>
      <attachid>428340</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-11 20:48:06 -0700</bug_when>
    <thetext>Created attachment 428340
REVERT of r277341

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759151</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-11 20:50:04 -0700</bug_when>
    <thetext>Committed r277353 (237611@main): &lt;https://commits.webkit.org/237611@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428340.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759152</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-11 20:51:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/77878622&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428340</attachid>
            <date>2021-05-11 20:48:06 -0700</date>
            <delta_ts>2021-05-11 20:50:05 -0700</delta_ts>
            <desc>REVERT of r277341</desc>
            <filename>bug-225685-20210512034806.patch</filename>
            <type>text/plain</type>
            <size>117206</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY1OTM2MGIzMDczZWQz
MzE0ZGY3OTdjYTUwMDk3YjA3MGUwN2Q1Ny4uNmYxZWRhMzg4YTNjODY2ZTRmYjMwYWM5MGE4OGY4
NzU4NTRlODkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTExICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3NzM0MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTY4NQorCisgICAgICAgIENhdXNlZCBXSzIgbGF5b3V0IHRlc3RzIHRv
IGV4aXQgd2l0aCBhbiBleGNlcHRpb24KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisK
KyAgICAgICAgIkFkZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldyIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTMzMworICAgICAg
ICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjc3MzQxCisKIDIwMjEtMDUtMTEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxh
eS1mcmVxdWVuY3kgYW5pbWF0aW9ucyBpbiBTY3JvbGxDb250cm9sbGVyIHNob3VsZCBiZSBleHRl
cm5hbGx5IGRyaXZlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwZTgwZTA4ZTYzZWY5ZmJjNGMxNTcyY2M2MjYxOWRj
ODg0YTliMTJjLi4xMzhkMDdlNWU2MTA5Yjk2YzAzMzU0NmQzY2VlNmVlYjE1OGE4NjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTExICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3NzM0
MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTY4
NQorCisgICAgICAgIENhdXNlZCBXSzIgbGF5b3V0IHRlc3RzIHRvIGV4aXQgd2l0aCBhbiBleGNl
cHRpb24KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFkZCBTUEkg
dG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTMzMworICAgICAgICBodHRwczovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjc3MzQxCisKIDIwMjEtMDUtMTEgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFpbCBjb21wb3NlIHdlYiB2
aWV3IGRvZXNuJ3Qgc2Nyb2xsIHRvIHJldmVhbCB0aGUgc2VsZWN0aW9uIGluIGNlcnRhaW4gY29u
ZmlndXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYxNWNmYjhmMGM5NGMyYjE0ZjA5NTNk
Y2JjMDhmNGE2ZGFmN2VmNmYuLjUxZDg1NDdiNjhkNDcyOGE5YzVhNDQzNDFmYzQ4MzczYTExM2E5
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjA4LDcgKzYwOCw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaAogICAgIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaAogICAgIGhpc3RvcnkvQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaAotICAgIGhpc3RvcnkvQ2FjaGVkUGFnZS5oCiAgICAgaGlzdG9yeS9I
aXN0b3J5SXRlbS5oCiAKICAgICBodG1sL0F1dG9jYXBpdGFsaXplLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDkwM2FlY2ExMjIyZjhlOTRmOTdl
MTg4NGM5NTA1YTM3MGE2NzQ4MDkuLjI3ZWQ3NGNkMjFkMzZhZTcwYzM1YThmMGIyMDkxYjBiNWE0
NzdiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcApA
QCAtNDI2LDYyICs0MjYsNTEgQEAgc3RhdGljIHZvaWQgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNp
dmVseShGcmFtZSYgZnJhbWUpCiAgICAgICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHko
KmNoaWxkKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3YXJkQ2Fj
aGU6OnRyeVN1c3BlbmRQYWdlKFBhZ2UmIHBhZ2UsIEZvcmNlU3VzcGVuc2lvbiBmb3JjZVN1c3Bl
bnNpb24pCitib29sIEJhY2tGb3J3YXJkQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVt
JiBpdGVtLCBQYWdlKiBwYWdlKQogewotICAgIHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuc3Rv
cEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNo
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZm9yY2VTdXNwZW5zaW9uID09
IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYWdlLmlzVXRpbGl0eVBhZ2UoKSwgIlV0aWxpdHkgcGFn
ZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2ZXIgZ28gaW50byBCYWNrRm9yd2Fy
ZENhY2hlIik7CisgICAgaWYgKCFjYW5DYWNoZSgqcGFnZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0eVBhZ2UoKSwgIlV0
aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2ZXIgZ28gaW50byBC
YWNrRm9yd2FyZENhY2hlIik7CiAKLSAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUocGFnZSwg
RG9jdW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJkQ2FjaGUpOworICAgIHNldEJhY2tGb3J3
YXJkQ2FjaGVTdGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJkQ2Fj
aGUpOwogCiAgICAgLy8gRm9jdXMgdGhlIG1haW4gZnJhbWUsIGRlZm9jdXNpbmcgYSBmb2N1c2Vk
IHN1YmZyYW1lIChpZiB3ZSBoYXZlIG9uZSkuIFdlIGRvIHRoaXMgaGVyZSwKICAgICAvLyBiZWZv
cmUgdGhlIHBhZ2UgZW50ZXJzIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUsIHdoaWxlIHdlIHN0aWxs
IGNhbiBkaXNwYXRjaCBET00gYmx1ci9mb2N1cyBldmVudHMuCi0gICAgaWYgKHBhZ2UuZm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCi0gICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVy
KCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1haW5GcmFtZSgpKTsKKyAgICBpZiAocGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCisgICAgICAgIHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS0+bWFpbkZyYW1lKCkpOwogCiAgICAgLy8gRmly
ZSB0aGUgcGFnZWhpZGUgZXZlbnQgaW4gYWxsIGZyYW1lcy4KLSAgICBmaXJlUGFnZUhpZGVFdmVu
dFJlY3Vyc2l2ZWx5KHBhZ2UubWFpbkZyYW1lKCkpOworICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVj
dXJzaXZlbHkocGFnZS0+bWFpbkZyYW1lKCkpOwogCi0gICAgZGVzdHJveVJlbmRlclRyZWUocGFn
ZS5tYWluRnJhbWUoKSk7CisgICAgZGVzdHJveVJlbmRlclRyZWUocGFnZS0+bWFpbkZyYW1lKCkp
OwogCiAgICAgLy8gU3RvcCBhbGwgbG9hZHMgYWdhaW4gYmVmb3JlIGNoZWNraW5nIGlmIHdlIGNh
biBzdGlsbCBjYWNoZSB0aGUgcGFnZSBhZnRlciBmaXJpbmcgdGhlIHBhZ2VoaWRlCiAgICAgLy8g
ZXZlbnQsIHNpbmNlIHRoZSBwYWdlIG1heSBoYXZlIHN0YXJ0ZWQgcGluZyBsb2FkcyBpbiBpdHMg
cGFnZWhpZGUgZXZlbnQgaGFuZGxlci4KLSAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0
b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCku
c3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlIHBhZ2Ug
aXMgc3RpbGwgcGFnZS1jYWNoZWFibGUgYWZ0ZXIgZmlyaW5nIHRoZSBwYWdlaGlkZSBldmVudC4g
VGhlIEpTIGV2ZW50IGhhbmRsZXJzCiAgICAgLy8gY291bGQgaGF2ZSBhbHRlcmVkIHRoZSBwYWdl
IGluIGEgd2F5IHRoYXQgY291bGQgcHJldmVudCBjYWNoaW5nLgotICAgIGlmIChmb3JjZVN1c3Bl
bnNpb24gPT0gRm9yY2VTdXNwZW5zaW9uOjpObyAmJiAhY2FuQ2FjaGUocGFnZSkpIHsKLSAgICAg
ICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3
YXJkQ2FjaGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBzZXRCYWNr
Rm9yd2FyZENhY2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7Ci0K
LSAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2Nv
cGUuCi0gICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxs
b3dlZFNjb3BlOwotICAgIHJldHVybiBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KHBhZ2UpOwotfQot
Ci1ib29sIEJhY2tGb3J3YXJkQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVt
LCBQYWdlKiBwYWdlKQotewotICAgIGlmIChpdGVtLmlzSW5CYWNrRm9yd2FyZENhY2hlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghcGFnZSkKKyAgICBpZiAoIWNhbkNhY2hl
KCpwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUoKnBhZ2UsIERvY3Vt
ZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogCi0gICAgYXV0byBjYWNoZWRQYWdlID0gdHJ5U3VzcGVuZFBhZ2UoKnBhZ2UsIEZvcmNlU3Vz
cGVuc2lvbjo6Tm8pOwotICAgIGlmICghY2FjaGVkUGFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkluQmFja0Zv
cndhcmRDYWNoZSk7CiAKICAgICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJl
IGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0u
c2V0Q2FjaGVkUGFnZShXVEZNb3ZlKGNhY2hlZFBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNo
ZWRQYWdlKG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKICAgICAgICAgaXRlbS5tX3By
dW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgm
aXRlbSk7CiAgICAgfQpAQCAtNDkyLDEzICs0ODEsNiBAQCBib29sIEJhY2tGb3J3YXJkQ2FjaGU6
OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNo
ZTo6c3VzcGVuZFBhZ2UoUGFnZSYgcGFnZSkKLXsKLSAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2Fy
ZENhY2hlLCAiQmFja0ZvcndhcmRDYWNoZTo6c3VzcGVuZFBhZ2UoKSIpOwotCi0gICAgcmV0dXJu
IHRyeVN1c3BlbmRQYWdlKHBhZ2UsIEZvcmNlU3VzcGVuc2lvbjo6WWVzKTsKLX0KLQogc3RkOjp1
bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnRha2UoSGlzdG9yeUl0ZW0m
IGl0ZW0sIFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFpdGVtLm1fY2FjaGVkUGFnZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaAppbmRleCA3M2U3NmUwMGIyYTk1
ZTQ2MzYwYjk3Zjk0YTc3MWQwMDFjYTQ4MWYyLi5hZGFhZmFiYTZiYTYzMTI3Y2M0ZDgyZDdmMWQy
YzM5ZDQ3NTM0ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUu
aApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
YXhTaXplKHVuc2lnbmVkKTsgLy8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hlLgogICAgIHVuc2ln
bmVkIG1heFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFNpemU7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBzdXNwZW5kUGFnZShQYWdlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2Uq
KTsgLy8gUHJ1bmVzIGlmIG1heFNpemUoKSBpcyBleGNlZWRlZC4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZShIaXN0b3J5SXRlbSYpOwogICAgIENhY2hlZFBhZ2UqIGdldChIaXN0b3J5
SXRlbSYsIFBhZ2UqKTsKQEAgLTc1LDggKzc0LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBi
b29sIGNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUmKTsKIAotICAgIGVudW0g
Y2xhc3MgRm9yY2VTdXNwZW5zaW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUGFnZT4gdHJ5U3VzcGVuZFBhZ2UoUGFnZSYsIEZvcmNlU3VzcGVuc2lvbik7
CiAgICAgdm9pZCBwcnVuZShQcnVuaW5nUmVhc29uKTsKICAgICB2b2lkIGR1bXAoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAppbmRleCAwZjczY2Y3OGFjM2I3M2ZkYzY1
NWYxNDM2NDExYzE3YWM1NTIxN2RiLi40ZWVjZjFjYjBjMjVkYWM3ZTFkNmYyNDk4Y2JiMmM5NWUz
ODg1ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaApAQCAtMzgsOSArMzgsOSBA
QCBjbGFzcyBDYWNoZWRQYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBDYWNoZWRQYWdlKFBhZ2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+
Q2FjaGVkUGFnZSgpOworICAgIH5DYWNoZWRQYWdlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3RvcmUoUGFnZSYpOworICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CiAgICAgdm9pZCBj
bGVhcigpOwogCiAgICAgUGFnZSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMzY3NzcxOWY4YWJiNzM2
NzU1MjY4MDAzYWIzMWI3ZWNmOTg1M2Y1Ny4uNjNhZjA1Y2RmYTgwNGM1ODA2MDQ4N2YwZGNiMDE3
YjU5ZTBlZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBA
IC0xNDMsMTQgKzE0Myw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VT
dGF0ZUNsaWVudEJhc2U+IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotc3RhdGljIE5F
VkVSX0lOTElORSB2b2lkIGNyYXNoSWZQYWdlSXNTdXNwZW5kZWQoV0tQYWdlUmVmIHBhZ2VSZWYp
Ci17Ci0gICAgV1RGTG9nQWx3YXlzKCJFcnJvcjogQXR0ZW1wdCB0byBjYWxsIFdLUGFnZVJlZiBB
UEkvU1BJIG9uIGEgc3VzcGVuZGVkIHBhZ2UsIHRoaXMgaXMgYSBjbGllbnQgYnVnLiIpOwotICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFnZVJlZiB8fCAhdG9JbXBsKHBhZ2VSZWYp
LT5pc1N1c3BlbmRlZCgpLCAiWW91IGNhbm5vdCBjYWxsIHRoaXMgQVBJL1NQSSBvbiBhIHN1c3Bl
bmRlZCBwYWdlIik7Ci19Ci0KLSNkZWZpbmUgQ1JBU0hfSUZfU1VTUEVOREVEIGNyYXNoSWZQYWdl
SXNTdXNwZW5kZWQocGFnZVJlZikKLQogV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKIHsKICAg
ICByZXR1cm4gdG9BUEkoV2ViUGFnZVByb3h5OjpBUElUeXBlKTsKQEAgLTE3Myw1OCArMTY1LDQ5
IEBAIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdL
UGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLVVJMUmVmIFVSTFJlZikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpKTsK
IH0KIAogdm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgYm9vbCBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdzsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwo
KSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwog
fQogCiB2b2lkIFdLUGFnZUxvYWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
VVJMUmVmIFVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdG9X
VEZTdHJpbmcoVVJMUmVmKSksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93LCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VM
b2FkVVJMUmVxdWVzdChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVl
c3RSZWYpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1
ZXN0ID0gdG9JbXBsKHVybFJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0lt
cGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSk7CiB9CiAK
IHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7
Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0ID0gdG9J
bXBsKHVybFJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHRvSW1wbCh1c2VyRGF0YVJl
ZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJl
ZiBmaWxlVVJMLCBXS1VSTFJlZiByZXNvdXJjZURpcmVjdG9yeVVSTCkKIHsKLSAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhm
aWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkRmlsZVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgZmls
ZVVSTCwgV0tVUkxSZWYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJl
ZikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2Fk
RmlsZSh0b1dURlN0cmluZyhmaWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlV
UkwpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVm
LCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKLSAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwo
ZGF0YVJlZiktPmRhdGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dU
RlN0cmluZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKIH0KIAogdm9p
ZCBXS1BhZ2VMb2FkRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVm
IGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1Jl
ZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChk
YXRhUmVmKS0+ZGF0YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RG
U3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2Vy
RGF0YVJlZikpOwogfQogCkBAIC0yNTAsNjIgKzIzMyw1MiBAQCBzdGF0aWMgdm9pZCBsb2FkU3Ry
aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNvbnN0IFN0cmlu
ZyYgbQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0
cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdl
UmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJMUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1Bh
Z2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRh
UmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBsb2FkU3RyaW5nKHBhZ2VSZWYs
IGh0bWxTdHJpbmdSZWYsICJ0ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB1
c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VV
UkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdl
UmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJMUmVmLCB1bnJlYWNoYWJsZVVSTFJlZiwgbnVsbHB0
cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXNlckRhdGEo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJh
c2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFS
ZWYpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFN0cmluZyBzdHJpbmcgPSB0b1dU
RlN0cmluZyhodG1sU3RyaW5nUmVmKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRBbHRlcm5h
dGVIVE1MKGRhdGFGcm9tKHN0cmluZyksIGVuY29kaW5nT2Yoc3RyaW5nKSwgVVJMKFVSTCgpLCB0
b1dURlN0cmluZyhiYXNlVVJMUmVmKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodW5yZWFjaGFi
bGVVUkxSZWYpKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBs
YWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3Ry
aW5nUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkUGxhaW5U
ZXh0U3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIHBsYWluVGV4dFN0cmluZ1JlZiwgbnVsbHB0
cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJpbmco
cGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgYWJvdXRCbGFua1VS
TCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hp
dmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCiB7
Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFy
Y2hpdmVEYXRhKHRvSW1wbCh3ZWJBcmNoaXZlRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWRXZWJBcmNoaXZlRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVm
IHdlYkFyY2hpdmVEYXRhUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRhKHRv
SW1wbCh3ZWJBcmNoaXZlRGF0YVJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lk
IFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CiB9CiAKIHZvaWQg
V0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RL
VmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCkBAIC0zMTcsMjUg
KzI5MCwyMSBAQCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBX
S1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlUmVmKQogewot
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChXZWJD
b3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwogfQogCiB2b2lkIFdL
UGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9w
dGlvbjo6RnJvbU9yaWdpbik7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkRXhwaXJlZE9ubHkoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChw
YWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogfQog
CiBib29sIFdLUGFnZVRyeUNsb3NlKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50cnlDbG9zZSgpOwogfQog
CkBAIC0zNTEsNyArMzIwLDYgQEAgYm9vbCBXS1BhZ2VJc0Nsb3NlZChXS1BhZ2VSZWYgcGFnZVJl
ZikKIAogdm9pZCBXS1BhZ2VHb0ZvcndhcmQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Gb3J3YXJkKCk7CiB9CiAK
QEAgLTM2Miw3ICszMzAsNiBAQCBib29sIFdLUGFnZUNhbkdvRm9yd2FyZChXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VHb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8mIHBhZ2UgPSAqdG9JbXBsKHBhZ2VSZWYpOwogICAg
IGlmIChwYWdlLnBhZ2VDbGllbnQoKS5oYXNTYWZlQnJvd3NpbmdXYXJuaW5nKCkpIHsKICAgICAg
ICAgV0tQYWdlUmVsb2FkKHBhZ2VSZWYpOwpAQCAtMzc4LDEzICszNDUsMTEgQEAgYm9vbCBXS1Bh
Z2VDYW5Hb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBp
dGVtUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZikt
PmdvVG9CYWNrRm9yd2FyZEl0ZW0oKnRvSW1wbChpdGVtUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdl
VHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpOwogfQogCkBAIC00MDAsNyArMzY1LDYgQEAgYm9vbCBXS1BhZ2VXaWxsSGFuZGxlSG9y
aXpvbnRhbFNjcm9sbEV2ZW50cyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VVcGRh
dGVXZWJzaXRlUG9saWNpZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLV2Vic2l0ZVBvbGljaWVzUmVm
IHdlYnNpdGVQb2xpY2llc1JlZikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLCAiU2V0dGluZyBXZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFTdG9y
ZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBv
bGljaWVzKCkuIik7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwod2Vi
c2l0ZVBvbGljaWVzUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCksICJTZXR0aW5nIFdlYnNp
dGVQb2xpY2llcy51c2VyQ29udGVudENvbnRyb2xsZXIgaXMgb25seSBzdXBwb3J0ZWQgZHVyaW5n
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcygpLiIpOwogICAgIGF1dG8gZGF0
YSA9IHRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYpLT5kYXRhKCk7CkBAIC00NTksNyArNDIzLDYg
QEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weUFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1Bh
Z2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTmFtZVJlZikKIHsK
LSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRBcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQodG9XVEZTdHJpbmcoYXBwbGljYXRpb25OYW1lUmVmKSk7CiB9
CiAKQEAgLTQ3MCw3ICs0MzMsNiBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5Q3VzdG9tVXNlckFn
ZW50KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudChX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdXNlckFnZW50UmVmKQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVVzZXJBZ2VudCh0
b1dURlN0cmluZyh1c2VyQWdlbnRSZWYpKTsKIH0KIApAQCAtNDkxLDEzICs0NTMsMTEgQEAgV0tT
dHJpbmdSZWYgV0tQYWdlQ29weUN1c3RvbVRleHRFbmNvZGluZ05hbWUoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdOYW1lUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUodG9X
VEZTdHJpbmcoZW5jb2RpbmdOYW1lUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlVGVybWluYXRlKFdL
UGFnZVJlZiBwYWdlUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBwcm90ZWN0ZWRQcm9jZXNzUHJveHkodG9JbXBsKHBhZ2VSZWYpLT5wcm9j
ZXNzKCkpOwogICAgIHByb3RlY3RlZFByb2Nlc3NQcm94eS0+cmVxdWVzdFRlcm1pbmF0aW9uKFBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwogfQpAQCAtNTU4LDEz
ICs1MTgsMTEgQEAgc3RhdGljIHZvaWQgcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNzaW9uU3RhdGVSZWYKIAogdm9pZCBXS1BhZ2VSZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBlUmVmIHNlc3Npb25TdGF0
ZVJlZikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmVzdG9yZUZyb21TZXNzaW9u
U3RhdGUocGFnZVJlZiwgc2Vzc2lvblN0YXRlUmVmLCB0cnVlKTsKIH0KIAogdm9pZCBXS1BhZ2VS
ZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1R5cGVSZWYgc2Vzc2lvblN0YXRlUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShwYWdlUmVmLCBzZXNzaW9uU3RhdGVSZWYsIGZh
bHNlKTsKIH0KIApAQCAtNTgwLDcgKzUzOCw2IEBAIGRvdWJsZSBXS1BhZ2VHZXRCYWNraW5nU2Nh
bGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tQmFja2lu
Z1NjYWxlRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgY3VzdG9tU2NhbGVGYWN0b3Ip
CiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3Vz
dG9tRGV2aWNlU2NhbGVGYWN0b3IoY3VzdG9tU2NhbGVGYWN0b3IpOwogfQogCkBAIC01OTEsNyAr
NTQ4LDYgQEAgYm9vbCBXS1BhZ2VTdXBwb3J0c1RleHRab29tKFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZVNldFRleHRab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUg
em9vbUZhY3RvcikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIApAQCAtNjAyLDE5ICs1NTgs
MTYgQEAgZG91YmxlIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUg
em9vbUZhY3RvcikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQ
YWdlQW5kVGV4dFpvb21GYWN0b3JzKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgcGFnZVpvb21G
YWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHBhZ2Vab29t
RmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKIHZvaWQgV0tQYWdlU2V0U2NhbGVGYWN0b3Io
V0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pCiB7Ci0gICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2NhbGVQYWdlKHNjYWxl
LCB0b0ludFBvaW50KG9yaWdpbikpOwogfQogCkBAIC02MjUsMTMgKzU3OCwxMSBAQCBkb3VibGUg
V0tQYWdlR2V0U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
VXNlRml4ZWRMYXlvdXQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZml4ZWQpCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNlRml4ZWRMYXlvdXQo
Zml4ZWQpOwogfQogCiB2b2lkIFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6ZShXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tTaXplIHNpemUpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0Rml4ZWRMYXlvdXRTaXplKHRvSW50U2l6ZShzaXplKSk7CiB9CiAKQEAg
LTY0Nyw3ICs1OTgsNiBAQCBXS1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXplKFdLUGFnZVJlZiBw
YWdlUmVmKQogCiB2b2lkIFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewotICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxpc3RlbkZvckxheW91dE1pbGVzdG9u
ZXModG9MYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKIH0KIApAQCAtNjYzLDcgKzYxMyw2
IEBAIGJvb2wgV0tQYWdlSGFzVmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiAK
IHZvaWQgV0tQYWdlU2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKFdLUGFnZVJlZiBwYWdl
UmVmLCBib29sIHN1cHByZXNzQW5pbWF0aW9ucykKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3Vw
cHJlc3NBbmltYXRpb25zKTsKIH0KIApAQCAtNjk5LDcgKzY0OCw2IEBAIGJvb2wgV0tQYWdlUnVi
YmVyQmFuZHNBdExlZnQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVy
QmFuZHNBdExlZnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdExlZnQpCiB7
Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVy
QmFuZHNBdExlZnQocnViYmVyQmFuZHNBdExlZnQpOwogfQogCkBAIC03MTAsNyArNjU4LDYgQEAg
Ym9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJl
ckJhbmRzQXRSaWdodCkKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0UmlnaHQocnViYmVyQmFuZHNBdFJpZ2h0KTsKIH0KIApA
QCAtNzIxLDcgKzY2OCw2IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdFRvcChXS1BhZ2VSZWYg
cGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0VG9wKFdLUGFnZVJlZiBwYWdl
UmVmLCBib29sIHJ1YmJlckJhbmRzQXRUb3ApCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdFRvcChydWJiZXJCYW5kc0F0VG9w
KTsKIH0KIApAQCAtNzMyLDcgKzY3OCw2IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdEJvdHRv
bShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0Qm90dG9t
KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRCb3R0b20pCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdEJv
dHRvbShydWJiZXJCYW5kc0F0Qm90dG9tKTsKIH0KIApAQCAtNzQzLDcgKzY4OCw2IEBAIGJvb2wg
V0tQYWdlVmVydGljYWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZVNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhXS1BhZ2VSZWYgcGFn
ZVJlZiwgYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCiB7Ci0gICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RW5hYmxlVmVydGljYWxSdWJiZXJC
YW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyk7CiB9CiAKQEAgLTc1NCwxMyArNjk4
LDExIEBAIGJvb2wgV0tQYWdlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQYWdl
UmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcp
CiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RW5h
YmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcp
OwogfQogCiB2b2lkIFdLUGFnZVNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1BhZ2VS
ZWYgcGFnZVJlZiwgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QmFja2dyb3VuZEV4dGVu
ZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSk7CiB9CiAKQEAgLTc3MSw3
ICs3MTMsNiBAQCBib29sIFdLUGFnZUJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1BhZ2VS
ZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tQYWdpbmF0aW9uTW9kZSBwYWdpbmF0aW9uTW9kZSkKIHsKLSAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtb2RlOwogICAgIHN3aXRj
aCAocGFnaW5hdGlvbk1vZGUpIHsKICAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0
ZWQ6CkBAIC04MTYsNyArNzU3LDYgQEAgV0tQYWdpbmF0aW9uTW9kZSBXS1BhZ2VHZXRQYWdpbmF0
aW9uTW9kZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uQmVo
YXZlc0xpa2VDb2x1bW5zKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGJlaGF2ZXNMaWtlQ29sdW1u
cykKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQ
YWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyk7CiB9CiAKQEAg
LTgyNyw3ICs3NjcsNiBAQCBib29sIFdLUGFnZUdldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVt
bnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxlbmd0aChXS1BhZ2VS
ZWYgcGFnZVJlZiwgZG91YmxlIHBhZ2VMZW5ndGgpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKTsKIH0KIApA
QCAtODM4LDcgKzc3Nyw2IEBAIGRvdWJsZSBXS1BhZ2VHZXRQYWdlTGVuZ3RoKFdLUGFnZVJlZiBw
YWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZVJl
ZiwgZG91YmxlIGdhcCkKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKTsKIH0KIApAQCAtODQ5LDcgKzc4Nyw2IEBA
IGRvdWJsZSBXS1BhZ2VHZXRHYXBCZXR3ZWVuUGFnZXMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZv
aWQgV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZiwg
Ym9vbCBsaW5lR3JpZEVuYWJsZWQpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJs
ZWQpOwogfQogCkBAIC04ODAsNTUgKzgxNyw0NiBAQCBib29sIFdLUGFnZUlzQ29udGVudEVkaXRh
YmxlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldE1haW50YWluc0luYWN0aXZl
U2VsZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIG5ld1ZhbHVlKQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5zZXRNYWludGFpbnNJ
bmFjdGl2ZVNlbGVjdGlvbihuZXdWYWx1ZSk7CiB9CiAKIHZvaWQgV0tQYWdlQ2VudGVyU2VsZWN0
aW9uSW5WaXNpYmxlQXJlYShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+Y2VudGVyU2VsZWN0aW9uSW5WaXNp
YmxlQXJlYSgpOwogfQogCiB2b2lkIFdLUGFnZUZpbmRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdLRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5maW5kU3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRv
RmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFnZUdl
dEltYWdlRm9yRmluZE1hdGNoKFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5kZXgp
CiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0SW1h
Z2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV0tQYWdlU2VsZWN0RmluZE1h
dGNoKFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2VsZWN0RmluZE1hdGNoKG1hdGNo
SW5kZXgpOwogfQogCiB2b2lkIFdLUGFnZUZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZikt
PmZpbmRTdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpLCB0b0ZpbmRPcHRpb25zKG9wdGlv
bnMpLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXS1BhZ2VIaWRlRmluZFVJKFdLUGFnZVJl
ZiBwYWdlUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmhpZGVGaW5kVUkoKTsKIH0KIAogdm9pZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmNvdW50U3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3Ry
aW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lk
IFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgY2xhc3MgQ29udGV4dE1l
bnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVDbGll
bnRCYXNlPiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogICAgIHB1YmxpYzoKQEAg
LTEwNDUsNyArOTczLDYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZURpYWdub3MKIAogdm9pZCBXS1BhZ2VT
ZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBG
aW5kQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRDbGllbnRCYXNlPiwgcHVi
bGljIEFQSTo6RmluZENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBGaW5k
Q2xpZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMDg0LDcgKzEw
MTEsNiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5k
TWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXND
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xh
c3MgRmluZE1hdGNoZXNDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZE1hdGNo
ZXNDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgZXhwbGljaXQgRmluZE1hdGNoZXNDbGllbnQoY29uc3QgV0tQYWdlRmluZE1h
dGNoZXNDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMTI4LDE5ICsxMDU0LDE2IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VGaW5kTWF0Y2hlc0NsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2Uq
IHdrQ2xpZW50KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1BhZ2VT
ZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGll
bnQ8V0tQYWdlTG9hZGVyQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkxvYWRlckNsaWVudCB7CiAg
ICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBMb2FkZXJDbGllbnQoY29uc3QgV0tQYWdlTG9h
ZGVyQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtMTMxMSw3ICsxMjM0LDYgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIFBvbGljeUNsaWVudCA6IHB1
YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6UG9s
aWN5Q2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBvbGljeUNsaWVudChj
b25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xNTcxLDcgKzE0OTMsNiBA
QCB2b2lkIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybVJlc3VsdExpc3RlbmVyQ2Fs
bChXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjYwogCiB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
LSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJ
OjpDbGllbnQ8V0tQYWdlVUlDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6VUlDbGllbnQgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnRC
YXNlKiBjbGllbnQpCkBAIC0yMjE3LDcgKzIxMzgsNiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVu
dAogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgOiBwdWJsaWMgQVBJ
OjpDbGllbnQ8V0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpOYXZpZ2F0
aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IE5hdmlnYXRpb25DbGll
bnQoY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTI1ODMsMTgg
KzI1MDMsMTYgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0
ZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQp
Cit2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3Rh
dGVDbGllbnRCYXNlKiBjbGllbnQpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGlm
IChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2Vy
dmVyKG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFn
ZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50PihjbGll
bnQpKTsKICAgICBlbHNlCi0gICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKG51bGxwdHIpOworICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6
bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CiAg
ICAgICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBjYWxsYmFjayh0b0FQ
SShyZXN1bHQudmFsdWUoKS5nZXQoKSksIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjYxMyw3ICsy
NTMxLDYgQEAgc3RhdGljIHZvaWQgY2FsbFJ1bkphdmFTY3JpcHRCbG9ja0FuZFJlbGVhc2UoV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgcmVzdWx0VmEKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVm
LCBXS1BhZ2VSdW5KYXZhU2NyaXB0QmxvY2sgYmxvY2spCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShwYWdlUmVmLCBzY3JpcHRS
ZWYsIEJsb2NrX2NvcHkoYmxvY2spLCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFzZSk7
CiB9CiAjZW5kaWYKQEAgLTI2MjcsMzcgKzI1NDQsMzEgQEAgc3RhdGljIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJik+IHRvU3RyaW5nQ2FsbGJhY2sodm9pZCogY29udGV4dCwg
dm8KIAogdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXS1BhZ2VS
ZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0
b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0
U291cmNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U291cmNl
Rm9yRnJhbWUodG9JbXBsKGZyYW1lUmVmKSwgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxs
YmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcoV0tQYWdlUmVmIHBh
Z2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmdGdW5jdGlvbiBj
YWxsYmFjaykKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6
Ok5vLCB0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQ
YWdlR2V0Qnl0ZWNvZGVQcm9maWxlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VHZXRCeXRlY29kZVByb2ZpbGVGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9T
dHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNh
bXBsaW5nUHJvZmlsZXJPdXRwdXQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdL
UGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9p
ZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24g
Y2FsbGJhY2spCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVm
KS0+Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6
OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNv
bnRleHQpOwogICAgIH0pOwpAQCAtMjY2NSw3ICsyNTc2LDYgQEAgdm9pZCBXS1BhZ2VHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2UKIAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdLUGFnZVJlZiBwYWdl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhRnVuY3Rpb24g
Y2FsbGJhY2spCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNSFRNTCkK
ICAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNNSFRNTERhdGEoW2NvbnRleHQsIGNh
bGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEp
LCBudWxscHRyLCBjb250ZXh0KTsKQEAgLTI2NzksNyArMjU4OSw2IEBAIHZvaWQgV0tQYWdlR2V0
Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQ
YWdlR2V0Q29uCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJlZiBwYWdlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQo
W2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29udGV4
dCk7CiAgICAgfSk7CkBAIC0yNzE3LDcgKzI2MjYsNiBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5
U3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKFdLU3RyaW5nUmVmIGFwcGxpY2F0
aQogCiB2b2lkIFdLUGFnZVZhbGlkYXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJp
bmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4dCwgV0tQYWdlVmFsaWRhdGVDb21tYW5kQ2FsbGJh
Y2sgY2FsbGJhY2spCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gY29tbWFu
ZE5hbWUgPSB0b0ltcGwoY29tbWFuZCktPnN0cmluZygpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
dmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBbY29udGV4dCwgY2FsbGJhY2ssIGNvbW1hbmRO
YW1lXShib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSkgewogICAgICAgICBjYWxsYmFjayh0
b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGNvbW1hbmROYW1lKS5wdHIoKSksIGlzRW5hYmxlZCwg
c3RhdGUsIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjcyNiw3ICsyNjM0LDYgQEAgdm9pZCBXS1Bh
Z2VWYWxpZGF0ZUNvbW1hbmQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGNvbW1hbmQs
IHZvaWQqIGNvbnRleHQKIAogdm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCkKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5leGVjdXRlRWRpdENvbW1hbmQodG9JbXBsKGNvbW1hbmQpLT5z
dHJpbmcoKSk7CiB9CiAKQEAgLTI3MzksMTAgKzI2NDYsOSBAQCBzdGF0aWMgUHJpbnRJbmZvIHBy
aW50SW5mb0Zyb21XS1ByaW50SW5mbyhjb25zdCBXS1ByaW50SW5mbyYgcHJpbnRJbmZvKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmco
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5m
bywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCog
Y29udGV4dCkKK3ZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgV0tQYWdlQ29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5jb21wdXRlUGFnZXNG
b3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJ
bmZvKSwgW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50
JiBjb21wdXRlZFBhZ2VNYXJnaW4pIHsKKyAgICB0b0ltcGwocGFnZSktPmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludElu
Zm8pLCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYg
cmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQm
IGNvbXB1dGVkUGFnZU1hcmdpbikgewogICAgICAgICBWZWN0b3I8V0tSZWN0PiB3a1JlY3RzKHJl
Y3RzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgICAgICB3a1JlY3RzW2ldID0gdG9BUEkocmVjdHNbaV0pOwpAQCAtMjc1
MSwyNSArMjY1NywyMiBAQCB2b2lkIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SQogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi12b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNv
bnRleHQpCit2b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQp
CiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+ZHJhd1Bh
Z2VzVG9QREYodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5m
byksIGZpcnN0LCBjb3VudCwgW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7
CisgICAgdG9JbXBsKHBhZ2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludElu
Zm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4dCwgY2Fs
bGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSks
IG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdlQmVn
aW5QcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludElu
Zm8gcHJpbnRJbmZvKQordm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8pCiB7Ci0gICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+YmVnaW5QcmludGluZyh0b0ltcGwoZnJh
bWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSk7CisgICAgdG9JbXBsKHBh
Z2UpLT5iZWdpblByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5m
byhwcmludEluZm8pKTsKIH0KIAotdm9pZCBXS1BhZ2VFbmRQcmludGluZyhXS1BhZ2VSZWYgcGFn
ZVJlZikKK3ZvaWQgV0tQYWdlRW5kUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+ZW5kUHJpbnRpbmcoKTsKKyAg
ICB0b0ltcGwocGFnZSktPmVuZFByaW50aW5nKCk7CiB9CiAKIGJvb2wgV0tQYWdlR2V0SXNDb250
cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjc3NywxMCArMjY4MCw5IEBA
IGJvb2wgV0tQYWdlR2V0SXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlKQog
ICAgIHJldHVybiB0b0ltcGwocGFnZSktPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpOwogfQog
Ci12b2lkIFdLUGFnZVNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYs
IGJvb2wgY29udHJvbGxlZCkKK3ZvaWQgV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihX
S1BhZ2VSZWYgcGFnZSwgYm9vbCBjb250cm9sbGVkKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJv
bGxlZCk7CisgICAgdG9JbXBsKHBhZ2UpLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRy
b2xsZWQpOwogfQogCiBib29sIFdLUGFnZUdldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdl
UmVmIHBhZ2UpCkBAIC0yNzkzLDI2ICsyNjk1LDIzIEBAIGJvb2wgV0tQYWdlR2V0QWxsb3dzUmVt
b3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZSkKICNlbmRpZiAgICAKIH0KIAotdm9pZCBXS1Bh
Z2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGFsbG93
KQordm9pZCBXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBi
b29sIGFsbG93KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldEFsbG93c1JlbW90ZUluc3BlY3Rp
b24oYWxsb3cpOworICAgIHRvSW1wbChwYWdlKS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihh
bGxvdyk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFS
QU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKGFsbG93KTsKICNlbmRpZgogfQogCi12b2lkIFdL
UGFnZVNldE1lZGlhVm9sdW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB2b2x1bWUpCit2b2lk
IFdLUGFnZVNldE1lZGlhVm9sdW1lKFdLUGFnZVJlZiBwYWdlLCBmbG9hdCB2b2x1bWUpCiB7Ci0g
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVkaWFWb2x1
bWUodm9sdW1lKTsKKyAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhVm9sdW1lKHZvbHVtZSk7ICAg
IAogfQogCi12b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlUmVmLCBXS01lZGlhTXV0
ZWRTdGF0ZSBtdXRlZFN0YXRlKQordm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwg
V0tNZWRpYU11dGVkU3RhdGUgbXV0ZWRTdGF0ZSkKIHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIGNvcmVTdGF0ZTsK
IAogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFBdWRpb011dGVkKQpAQCAtMjgyMiwxMyAr
MjcyMSwxMiBAQCB2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlUmVmLCBXS01lZGlh
TXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFTY3Jl
ZW5DYXB0dXJlTXV0ZWQpCiAgICAgICAgIGNvcmVTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TXV0ZWRTdGF0ZTo6U2NyZWVuQ2FwdHVyZUlzTXV0ZWQpOwogCi0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRNdXRlZChjb3JlU3RhdGUpOworICAgIHRvSW1wbChwYWdlKS0+c2V0TXV0ZWQo
Y29yZVN0YXRlKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFn
ZVJlZiBwYWdlUmVmLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVu
YWJsZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYUNhcHR1cmVFbmFibGVkKGVuYWJs
ZWQpOworICAgIHRvSW1wbChwYWdlKS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFibGVkKTsK
IH0KIAogYm9vbCBXS1BhZ2VHZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlKQpA
QCAtMjgzNiwzMyArMjczNCwzMCBAQCBib29sIFdLUGFnZUdldE1lZGlhQ2FwdHVyZUVuYWJsZWQo
V0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+bWVkaWFDYXB0dXJlRW5h
YmxlZCgpOwogfQogCi12b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBh
Z2VSZWYpCit2b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpCiB7
Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAg
dG9JbXBsKHBhZ2VSZWYpLT5kaWRBbGxvd1BvaW50ZXJMb2NrKCk7CisgICAgdG9JbXBsKHBhZ2Up
LT5kaWRBbGxvd1BvaW50ZXJMb2NrKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlUmVm
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVh
clVzZXJNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmKQordm9pZCBXS1BhZ2VDbGVhclVzZXJN
ZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJVc2VyTWVk
aWFTdGF0ZSgpOworICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwog
I2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlRGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdl
UmVmKQordm9pZCBXS1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpCiB7Ci0g
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5kaWREZW55UG9pbnRlckxvY2soKTsKKyAgICB0b0ltcGwocGFnZSktPmRp
ZERlbnlQb2ludGVyTG9jaygpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7Cisg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKQEAgLTI4OTUsMTggKzI3OTAsMTYg
QEAgV0tGcmFtZVJlZiBXS1BhZ2VMb29rVXBGcmFtZUZyb21IYW5kbGUoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLRnJhbWVIYW5kbGVSZWYgaGFuZGwKIAogdm9pZCBXS1BhZ2VTZXRNYXlTdGFydE1lZGlh
V2hlbkluV2luZG93KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIG1heVN0YXJ0TWVkaWEpCiB7Ci0g
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWF5U3RhcnRN
ZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKTsKIH0KIAogCi12b2lkIFdLUGFnZVNlbGVj
dENvbnRleHRNZW51SXRlbShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tDb250ZXh0TWVudUl0ZW1SZWYg
aXRlbSkKK3ZvaWQgV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJlZiBwYWdlLCBX
S0NvbnRleHRNZW51SXRlbVJlZiBpdGVtKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKCh0b0ltcGwoaXRlbSktPmRhdGEoKSkpOworICAgIHRvSW1wbChwYWdlKS0+
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoKHRvSW1wbChpdGVtKS0+ZGF0YSgpKSk7CiAjZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGl0ZW0pOwogI2VuZGlmCiB9CkBAIC0yOTI4LDkgKzI4MjEsOCBAQCBXS1Nj
cm9sbFBpbm5pbmdCZWhhdmlvciBXS1BhZ2VHZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdl
UmVmIHBhZ2UpCiAgICAgcmV0dXJuIGtXS1Njcm9sbFBpbm5pbmdCZWhhdmlvckRvTm90UGluOwog
fQogCi12b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKK3ZvaWQgV0tQYWdlU2V0U2Nyb2xs
UGlubmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBw
aW5uaW5nKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgY29yZVBpbm5pbmcgPSBTY3JvbGxQaW5uaW5nQmVoYXZpb3I6OkRvTm90UGluOwogCiAg
ICAgc3dpdGNoIChwaW5uaW5nKSB7CkBAIC0yOTQ3LDcgKzI4MzksNyBAQCB2b2lkIFdLUGFnZVNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTY3JvbGxQaW5uaW5n
QmVoYXZpb3IgcAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoY29yZVBpbm5pbmcp
OworICAgIHRvSW1wbChwYWdlKS0+c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKGNvcmVQaW5uaW5n
KTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlKQpA
QCAtMjk1NSwxMCArMjg0Nyw5IEBAIGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1Bh
Z2VSZWYgcGFnZSkKICAgICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5hZGRzVmlzaXRlZExpbmtzKCk7
CiB9CiAKLXZvaWQgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZVJlZiwg
Ym9vbCBhZGRzVmlzaXRlZExpbmtzKQordm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFdL
UGFnZVJlZiBwYWdlLCBib29sIGFkZHNWaXNpdGVkTGlua3MpCiB7Ci0gICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhhZGRzVmlz
aXRlZExpbmtzKTsKKyAgICB0b0ltcGwocGFnZSktPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zp
c2l0ZWRMaW5rcyk7CiB9CiAKIGJvb2wgV0tQYWdlSXNQbGF5aW5nQXVkaW8oV0tQYWdlUmVmIHBh
Z2UpCkBAIC0yOTkzLDIzICsyODg0LDIwIEBAIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0
YXRlKFdLUGFnZVJlZiBwYWdlKQogCiB2b2lkIFdLUGFnZUNsZWFyV2hlZWxFdmVudFRlc3RNb25p
dG9yKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQg
V0tQYWdlQ2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwg
dm9pZCogY29udGV4dCwgV0tQYWdlUG9zdFByZXNlbnRhdGlvblVwZGF0ZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IgIT0g
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3Jl
YXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgaWdub3Jl
c1ZpZXdwb3J0U2NhbGVMaW1pdHMpCit2b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxl
TGltaXRzKFdLUGFnZVJlZiBwYWdlLCBib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKQog
ewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKLSAg
ICB0b0ltcGwocGFnZVJlZiktPnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3
cG9ydFNjYWxlTGltaXRzKTsKKyAgICB0b0ltcGwocGFnZSktPnNldEZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKICNlbmRpZgogfQogCkBAIC0zMDE5
LDEwNSArMjkwNyw5MyBAQCBQcm9jZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQ
YWdlUmVmIHBhZ2UpCiB9CiAKICNpZmRlZiBfX0JMT0NLU19fCi12b2lkIFdLUGFnZUdldEFwcGxp
Y2F0aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlR2V0QXBwbGljYXRpb25N
YW5pZmVzdEJsb2NrIGJsb2NrKQordm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2Io
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykK
IHsKLSAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2td
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkg
eworICAgIHRvSW1wbChwYWdlKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgewogICAg
ICAgICBibG9jaygpOwogICAgIH0pOwogI2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQotICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7
CiAgICAgYmxvY2soKTsKICNlbmRpZiAvLyBub3QgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VEdW1wUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0g
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+ZHVtcFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5n
JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgeworICAgIHRvSW1wbChwYWdlKS0+ZHVtcFByaXZh
dGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3Ry
aW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgewogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6
OnRvQVBJKHByaXZhdGVDbGlja01lYXN1cmVtZW50LmltcGwoKSksIGNhbGxiYWNrQ29udGV4dCk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQog
ewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAg
ICB0b0ltcGwocGFnZSktPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHZhbHVlLCBXS1BhZ2VT
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9v
bCB2YWx1ZSwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9y
VGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyh2YWx1ZSwgW2NhbGxiYWNrQ29udGV4
dCwgY2FsbGJhY2tdICgpIHsKKyAgICB0b0ltcGwocGFnZSktPnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFsdWUsIFtjYWxsYmFja0NvbnRleHQsIGNh
bGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VNYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VNYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2Us
IFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+bWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRl
eHQsIGNhbGxiYWNrXSAoKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5tYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwg
Y2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9
KTsKIH0KIAotdm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9u
UmVzdGFydChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KQordm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVz
dGFydChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQog
ewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNpbXVsYXRl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFtjYWxsYmFja0NvbnRleHQsIGNh
bGxiYWNrXSAoKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAg
ICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZv
aWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVS
TFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZv
clRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZT
dHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgdG9J
bXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0
LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAg
IH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYsIFdL
UGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5n
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tQYWdl
UmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tDb250ZXh0KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0
aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNh
bGxiYWNrXSAoKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJl
ZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhj
YWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tQYWdl
U2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5n
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJM
LCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0Zv
clRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKHNvdXJjZVVSTCkpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9u
VVJMKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgdG9JbXBsKHBhZ2Up
LT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rp
bmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVSTCgpLCB0b1dURlN0
cmluZyhkZXN0aW5hdGlvblVSTCkpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewog
ICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdL
UGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lk
IFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0g
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+bWFya1ByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwgY2Fs
bGJhY2tdICgpIHsKKyAgICB0b0ltcGwocGFnZSktPm1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwg
V0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJp
bmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tTdHJpbmdSZWYga2V5
SUQsIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmdGdW5jdGlvbiBj
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmcodG9XVEZTdHJpbmcodW5saW5rYWJsZVRva2VuKSwgdG9XVEZTdHJpbmcoc2VjcmV0VG9r
ZW4pLCB0b1dURlN0cmluZyhzaWduYXR1cmUpLCB0b1dURlN0cmluZyhrZXlJRCksIFtjYWxsYmFj
a0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5zZXRQQ01GcmF1ZFBy
ZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHVubGlua2FibGVUb2tlbiksIHRv
V1RGU3RyaW5nKHNlY3JldFRva2VuKSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJlKSwgdG9XVEZTdHJp
bmcoa2V5SUQpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxs
YmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldE1vY2tD
YW1lcmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qgb3JpZW50YXRpb24p
Cit2b2lkIFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZSwgdWlu
dDY0X3Qgb3JpZW50YXRpb24pCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOworICAgIHRvSW1wbChw
YWdlKS0+c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOwogI2VuZGlm
CiB9CiAKQEAgLTMxMzAsNDAgKzMwMDYsMzYgQEAgV0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoV0tQYWdlUmVmKQogI2VuZGlmCiB9CiAK
LXZvaWQgV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdl
UmVmIHBhZ2UsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5n
ZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5n
ZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zID0gV1RGOjptYXAoZG9tYWlucywgW10oYXV0byYg
ZG9tYWluKSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0
cmluZzo6Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAg
ICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlu
cykpLnB0cigpKSwgY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKICNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHBhZ2VSZWYpOworICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBjYWxsYmFjayhu
dWxscHRyLCBjYWxsYmFja0NvbnRleHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2VSZWYpCit2b2lkIFdLUGFnZUNs
ZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlKQogewotICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKKyAgICB0
b0ltcGwocGFnZSktPmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCk7CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYK
IH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBkZWxheSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0
dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBkb3VibGUgZGVsYXkp
CiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVk
aWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxheSkpOworICAgIHRvSW1wbChwYWdl
KS0+c2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxheSkpOwogfQogCi12
b2lkIFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoV0tQYWdlUmVm
IHBhZ2VSZWYpCit2b2lkIFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgQ1JBU0hfSUZfU1VTUEVOREVEOwotICAgIHRvSW1w
bChwYWdlUmVmKS0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpOworICAg
IHRvSW1wbChwYWdlKS0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggMmVlNWY5NWNjMzdkY2I4YmE3MzIyNDFiNTY4YmU0YzA5MzA5NzJlZC4uNjU4MjQxM2FjYWNl
MWQzNTNiZjdmNzFlMjgwYzM0YjkxMGVhNGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xOTksOSArMTk5LDYgQEAgc3RhdGljIGNv
bnN0IEJPT0wgZGVmYXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBmaXJzdFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0g
MHhBMDAwMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jZGVmaW5lIFRIUk9X
X0lGX1NVU1BFTkRFRCBpZiAoX3BhZ2UgJiYgX3BhZ2UtPmlzU3VzcGVuZGVkKCkpIFwKLSAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0
OkAiVGhlIFdLV2ViVmlldyBpcyBzdXNwZW5kZWQiXQotCiBSZXRhaW5QdHI8TlNFcnJvcj4gbnNF
cnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMm
IGRldGFpbHMpCiB7CiAgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CkBAIC03MjEsMTMgKzcxOCwxMSBAQCAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWREZWxlZ2F0ZTooaWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRl
CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
CiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5s
b2FkUmVxdWVzdChyZXF1ZXN0KSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlVVJM
OihOU1VSTCAqKVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNz
VVJMCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghW1VSTCBpc0ZpbGVVUkxd
KQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCBVUkxdOwogCkBAIC03MzksNyArNzM0LDYg
QEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVh
ZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEhUTUxT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogewotICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKIAogICAgIHJldHVybiBbc2VsZiBsb2Fk
RGF0YTpkYXRhIE1JTUVUeXBlOkAidGV4dC9odG1sIiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6QCJV
VEYtOCIgYmFzZVVSTDpiYXNlVVJMXTsKQEAgLTc0NywxMyArNzQxLDExIEBAIC0gKFdLTmF2aWdh
dGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlN
RVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKLSAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRh
KHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9
LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5n
KSk7CiB9CiAKIC0gKHZvaWQpc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5kb3du
bG9hZFJlcXVlc3QocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CiAgICAgICAgIGlmIChkb3dubG9h
ZCkKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKQEAg
LTc2NCw3ICs3NTYsNiBAQCAtICh2b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaQogCiAtICh2b2lkKXJlc3Vt
ZURvd25sb2FkRnJvbVJlc3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJv
cjpuaWxdKTsKICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNv
ZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0
aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRo
T2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcg
Y2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwg
W05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2Jq
ZWN0S2V5Il07CkBAIC03OTEsNyArNzgyLDYgQEAgLSAodm9pZClyZXN1bWVEb3dubG9hZEZyb21S
ZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2kKIAog
LSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRM
aXN0SXRlbSAqKWl0ZW0KIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdy
YXBwZXIoX3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkpOwogfQogCkBAIC04
NTAsNyArODQwLDYgQEAgLSAoQk9PTCljYW5Hb0ZvcndhcmQKIAogLSAoV0tOYXZpZ2F0aW9uICop
Z29CYWNrCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChzZWxmLl9zYWZlQnJv
d3NpbmdXYXJuaW5nKQogICAgICAgICByZXR1cm4gW3NlbGYgcmVsb2FkXTsKICAgICByZXR1cm4g
d3JhcHBlcihfcGFnZS0+Z29CYWNrKCkpOwpAQCAtODU4LDEzICs4NDcsMTEgQEAgLSAoV0tOYXZp
Z2F0aW9uICopZ29CYWNrCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogewotICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29Gb3J3YXJkKCkp
OwogfQogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsK
ICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4
cGlyZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQogICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJD
b3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KTsKQEAgLTg3NCwzMSArODYxLDI2IEBAIC0g
KFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3Jp
Z2luCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdl
LT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKSk7CiB9CiAKIC0gKHZv
aWQpc3RvcExvYWRpbmcKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0
b3BMb2FkaW5nKCk7CiB9CiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAq
KWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9y
ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtz
ZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246
Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZ
RVMgaW5GcmFtZTpuaWwgaW5Xb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlv
bkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0
OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VVUkw6bmlsIHdp
dGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGluRnJhbWU6ZnJhbWUgaW5Xb3Js
ZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQog
CiAtICh2b2lkKWNhbGxBc3luY0phdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyBhcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5G
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQg
Kiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICpl
cnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlv
bjpZRVMgd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTkzOCw3ICs5MjAsNiBAQCBzdGF0
aWMgYm9vbCB2YWxpZGF0ZUFyZ3VtZW50KGlkIGFyZ3VtZW50KQogCiAtICh2b2lkKWNsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTk1NSw3
ICs5MzYsNiBAQCAtICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aQogCiAtICh2b2lkKXBhdXNlQWxsTWVk
aWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9u
SGFuZGxlcikgewogICAgICAgICBfcGFnZS0+cGF1c2VBbGxNZWRpYVBsYXliYWNrKFtdIHsgfSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTk2Niw3ICs5NDYsNiBAQCAtICh2b2lkKXBhdXNlQWxsTWVk
aWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbgogCiAtICh2b2lkKXNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6KEJPT0wpc3VzcGVu
ZGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKIApAQCAtOTk3LDcgKzk3Niw2IEBA
IHN0YXRpYyBXS01lZGlhUGxheWJhY2tTdGF0ZSB0b1dLTWVkaWFQbGF5YmFja1N0YXRlKFdlYktp
dDo6TWVkaWFQbGF5YmFja1N0YXRlIG1lCiAKIC0gKHZvaWQpcmVxdWVzdE1lZGlhUGxheWJhY2tT
dGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tNZWRpYVBsYXliYWNrU3RhdGUp
KWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICgh
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAyOCw3ICsxMDA2LDYg
QEAgLSAoV0tNZWRpYUNhcHR1cmVTdGF0ZSltaWNyb3Bob25lQ2FwdHVyZVN0YXRlCiAKIC0gKHZv
aWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CiAKQEAgLTEwNTAsNyArMTAyNyw2IEBAIC0g
KHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0
ZSBjb21wbGV0aW9uSGFuZGxlcjooCiAKIC0gKHZvaWQpc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOihX
S01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAo
IWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsK
IApAQCAtMTA3Miw3ICsxMDQ4LDYgQEAgLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdL
TWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQKIAogLSAodm9p
ZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3lu
Y0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNv
dXJjZVVSTCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJn
dW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBpbkZyYW1lOihX
S0ZyYW1lSW5mbyAqKWZyYW1lIGluV29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7
Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50
V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHNNYXA7CkBAIC0xMTM0LDcgKzExMDksNiBAQCAtICh2b2lk
KV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246KEJPT0wpYQogCiAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9u
OihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShDb2NvYUltYWdlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgY29uc3RleHByIGJvb2wgc25h
cHNob3RGYWlsZWRUcmFjZVZhbHVlID0gZmFsc2U7CiAgICAgdHJhY2VQb2ludChUYWtlU25hcHNo
b3RTdGFydCk7CiAKQEAgLTEyMDgsNyArMTE4Miw2IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0
aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1
CiAKIC0gKHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wp
YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMKIHsKLSAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9pbXBsLT5zZXRBbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlcyhhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyk7
CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTI0Nyw3ICsxMjIwLDYgQEAgLSAoTlNT
dHJpbmcgKiljdXN0b21Vc2VyQWdlbnQKIAogLSAodm9pZClzZXRDdXN0b21Vc2VyQWdlbnQ6KE5T
U3RyaW5nICopY3VzdG9tVXNlckFnZW50CiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5zZXRDdXN0b21Vc2VyQWdlbnQoY3VzdG9tVXNlckFnZW50KTsKIH0KIApAQCAtMTI2
Miw3ICsxMjM0LDYgQEAgLSAoQk9PTClhbGxvd3NMaW5rUHJldmlldwogCiAtICh2b2lkKXNldEFs
bG93c0xpbmtQcmV2aWV3OihCT09MKWFsbG93c0xpbmtQcmV2aWV3CiB7Ci0gICAgVEhST1dfSUZf
U1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBfaW1wbC0+c2V0QWxsb3dzTGlua1By
ZXZpZXcoYWxsb3dzTGlua1ByZXZpZXcpOwogICAgIHJldHVybjsKQEAgLTEyODQsNyArMTI1NSw2
IEBAIC0gKHZvaWQpc2V0QWxsb3dzTGlua1ByZXZpZXc6KEJPT0wpYWxsb3dzTGlua1ByZXZpZXcK
IAogLSAodm9pZClzZXRQYWdlWm9vbTooQ0dGbG9hdClwYWdlWm9vbQogewotICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnZVpvb21GYWN0b3IocGFnZVpvb20pOwogfQog
CkBAIC0xMzA5LDcgKzEyNzksNiBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlv
bnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmlndQogCiAtICh2b2lk
KWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhDb25maWd1cmF0aW9uOihXS0ZpbmRD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
V0tGaW5kUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIGlmICghc3RyaW5nLmxlbmd0aCkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhZG9wdE5TKFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5k
Ok5PXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xMzI3LDcgKzEyOTYsNiBAQCArIChC
T09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCiAKIC0gKHZvaWQpc2V0
TWVkaWFUeXBlOihOU1N0cmluZyAqKW1lZGlhU3R5bGUKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPnNldE92ZXJyaWRkZW5NZWRpYVR5cGUobWVkaWFTdHlsZSk7CiB9CiAK
QEAgLTEzNDMsNyArMTMxMSw2IEBAIC0gKGlkKWludGVyYWN0aW9uU3RhdGUKIAogLSAodm9pZClz
ZXRJbnRlcmFjdGlvblN0YXRlOihpZClpbnRlcmFjdGlvblN0YXRlCiB7Ci0gICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIGlmICghWyhpZClpbnRlcmFjdGlvblN0YXRlIGlzS2luZE9mQ2xhc3M6
W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzNjgsNyArMTMzNSw2IEBA
IC0gKFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIAogLSAodm9pZClzZXRBbGxvd3NNYWduaWZp
Y2F0aW9uOihCT09MKWFsbG93c01hZ25pZmljYXRpb24KIHsKLSAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX2ltcGwtPnNldEFsbG93c01hZ25pZmljYXRpb24oYWxsb3dzTWFnbmlmaWNhdGlv
bik7CiB9CiAKQEAgLTEzNzksMTMgKzEzNDUsMTEgQEAgLSAoQk9PTClhbGxvd3NNYWduaWZpY2F0
aW9uCiAKIC0gKHZvaWQpc2V0TWFnbmlmaWNhdGlvbjooZG91YmxlKW1hZ25pZmljYXRpb24gY2Vu
dGVyZWRBdFBvaW50OihOU1BvaW50KXBvaW50CiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9pbXBsLT5zZXRNYWduaWZpY2F0aW9uKG1hZ25pZmljYXRpb24sIE5TUG9pbnRUb0NHUG9p
bnQocG9pbnQpKTsKIH0KIAogLSAodm9pZClzZXRNYWduaWZpY2F0aW9uOihkb3VibGUpbWFnbmlm
aWNhdGlvbgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0TWFnbmlm
aWNhdGlvbihtYWduaWZpY2F0aW9uKTsKIH0KIApAQCAtMTM5Niw3ICsxMzYwLDYgQEAgLSAoZG91
YmxlKW1hZ25pZmljYXRpb24KIAogLSAoTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9u
V2l0aFByaW50SW5mbzooTlNQcmludEluZm8gKilwcmludEluZm8KIHsKLSAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgaWYgKGF1dG8gd2ViRnJhbWVQcm94eSA9IF9wYWdlLT5tYWluRnJhbWUo
KSkKICAgICAgICAgcmV0dXJuIF9pbXBsLT5wcmludE9wZXJhdGlvbldpdGhQcmludEluZm8ocHJp
bnRJbmZvLCAqd2ViRnJhbWVQcm94eSk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTE1NjQsNyArMTUy
Nyw2IEBAIC0gKE9wdGlvbmFsPEJPT0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0
ZUNvbXBsZXRpb25Gb3JUZXN0aW5nCiAKIC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRp
b246KFdLUERGQ29uZmlndXJhdGlvbiAqKXBkZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmRG9jdW1lbnREYXRhLCBOU0Vycm9yICplcnJvcikpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CiAgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gX3BhZ2Ut
Pm1haW5GcmFtZSgpKQogICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFtZUlEKCk7CkBA
IC0xNTkwLDcgKzE1NTIsNiBAQCAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihX
S1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZQogCiAtICh2b2lkKWNy
ZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEg
KiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6
OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwg
bmlsKTsKICAgICB9KTsKQEAgLTE2NzIsMjAgKzE2MzMsMTcgQEAgLSAodm9pZClfZGlkQ2hhbmdl
RWRpdG9yU3RhdGUKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBy
ZXNwb25zZURhdGE6KE5TRGF0YSAqKWRhdGEKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJl
c3BvbnNlLCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5s
ZW5ndGggfSkpOwogfQogCiAvLyBGSVhNRSgyMjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNlIGFkb3B0
ZXJzIGhhdmUgbW92ZWQgdG8gdGhlIGZpbmFsIEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRT
aW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogewotICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gW3NlbGYgbG9hZFNpbXVsYXRlZFJlcXVl
c3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSByZXNwb25zZURhdGE6ZGF0YV07CiB9CiAKIC0g
KFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IHJlc3BvbnNlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKIHsKLSAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5n
TmFtZTpAIlVURi04Il0pOwogCkBAIC0xNjk1LDEzICsxNjUzLDExIEBAIC0gKFdLTmF2aWdhdGlv
biAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNl
SFRNTFN0cmluCiAvLyBGSVhNRSgyMjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNlIGFkb3B0ZXJzIGhh
dmUgbW92ZWQgdG8gdGhlIGZpbmFsIEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0
ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZUhUTUxTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVy
biBbc2VsZiBsb2FkU2ltdWxhdGVkUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluZzpz
dHJpbmddOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vz
c1VSTAogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIFVSTCA9IHJlcXVlc3Qu
VVJMOwogCiAgICAgaWYgKCFbVVJMIGlzRmlsZVVSTF0pCkBAIC0xNzMxLDcgKzE2ODcsNyBAQCBA
aW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1ByaXZhdGUpCiAKICNpZiBQTEFURk9STShNQUMp
CiAKLSNkZWZpbmUgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoY29tbWFuZCkgLSAodm9pZClfIyNj
b21tYW5kOihpZClzZW5kZXIgeyBUSFJPV19JRl9TVVNQRU5ERUQ7IF9wYWdlLT5leGVjdXRlRWRp
dENvbW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CisjZGVmaW5lIFdFQkNPUkVfUFJJVkFURV9DT01N
QU5EKGNvbW1hbmQpIC0gKHZvaWQpXyMjY29tbWFuZDooaWQpc2VuZGVyIHsgX3BhZ2UtPmV4ZWN1
dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBfcyk7IH0KIAogV0VCQ09SRV9QUklWQVRFX0NPTU1B
TkQoYWxpZ25DZW50ZXIpCiBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGlnbkp1c3RpZmllZCkK
QEAgLTE3NTAsMjUgKzE3MDYsMjEgQEAgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQocGFzdGVBbmRN
YXRjaFN0eWxlKQogCiAtICh2b2lkKV90b2dnbGVTdHJpa2VUaHJvdWdoOihpZClzZW5kZXIKIHsK
LSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgi
c3RyaWtldGhyb3VnaCJfcyk7CiB9CiAKIC0gKHZvaWQpX2luY3JlYXNlTGlzdExldmVsOihpZClz
ZW5kZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmluY3JlYXNlTGlz
dExldmVsKCk7CiB9CiAKIC0gKHZvaWQpX2RlY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKIHsK
LSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmRlY3JlYXNlTGlzdExldmVsKCk7
CiB9CiAKIC0gKHZvaWQpX2NoYW5nZUxpc3RUeXBlOihpZClzZW5kZXIKIHsKLSAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmNoYW5nZUxpc3RUeXBlKCk7CiB9CiAKQEAgLTE4MjAs
NyArMTc3Miw2IEBAIC0gKENHU2l6ZSlfdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cwog
CiAtICh2b2lkKV9zZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOihDR1NpemUpdmll
d3BvcnRTaXplCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gdmlld3BvcnRT
aXplRm9yVmlld3BvcnRVbml0cyA9IFdlYkNvcmU6OkludFNpemUodmlld3BvcnRTaXplKTsKICAg
ICBpZiAodmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cy5pc0VtcHR5KCkpCiAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJWaWV3
cG9ydCBzaXplIHNob3VsZCBub3QgYmUgZW1wdHkiXTsKQEAgLTE4NDIsNyArMTc5Myw2IEBAIC0g
KF9XS0luc3BlY3RvciAqKV9pbnNwZWN0b3IKIAogLSAodm9pZClfZGlkRW5hYmxlQnJvd3NlckV4
dGVuc2lvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGVuc2lv
bklEVG9OYW1lTWFwCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IHRyYW5zZm9ybWVkOwogICAgIHRyYW5zZm9ybWVkLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXh0ZW5zaW9uSURUb05hbWVNYXAuY291bnQpOwogICAgIFtleHRlbnNpb25JRFRv
TmFtZU1hcCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6WyZdKE5TU3RyaW5nICpl
eHRlbnNpb25JRCwgTlNTdHJpbmcgKmV4dGVuc2lvbk5hbWUsIEJPT0wgKikgewpAQCAtMTg1Myw3
ICsxODAzLDYgQEAgLSAodm9pZClfZGlkRW5hYmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGUKIAogLSAodm9pZClfZGlkRGlzYWJs
ZUJyb3dzZXJFeHRlbnNpb25zOihOU1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEcwogewot
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBIYXNoU2V0PFN0cmluZz4gdHJhbnNmb3JtZWQ7
CiAgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25JRHMuY291
bnQpOwogICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbklEIGluIGV4dGVuc2lvbklEcykKQEAg
LTE5MDIsNyArMTg1MSw2IEBAIC0gKEJPT0wpX2lzRWRpdGFibGUKIAogLSAodm9pZClfc2V0RWRp
dGFibGU6KEJPT0wpZWRpdGFibGUKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYm9v
bCB3YXNFZGl0YWJsZSA9IF9wYWdlLT5pc0VkaXRhYmxlKCk7CiAgICAgX3BhZ2UtPnNldEVkaXRh
YmxlKGVkaXRhYmxlKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xOTIwLDcgKzE4NjgsNiBAQCAt
ICh2b2lkKV9zZXRFZGl0YWJsZTooQk9PTCllZGl0YWJsZQogCiAtICh2b2lkKV9leGVjdXRlRWRp
dENvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVu
dCBjb21wbGV0aW9uOih2b2lkICheKShCT09MKSljb21wbGV0aW9uCiB7Ci0gICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZCwgYXJndW1l
bnQsIFtjYXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0g
ewogICAgICAgICBpZiAoY2FwdHVyZWRDb21wbGV0aW9uQmxvY2spCiAgICAgICAgICAgICBjYXB0
dXJlZENvbXBsZXRpb25CbG9jayhZRVMpOwpAQCAtMTk1Niw3ICsxOTAzLDYgQEAgc3RhdGljIFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+PiBjcmVhdGVVc2VySW5mbyhjb25z
dCBPcHRpb25hbDxXZWIKIAogLSAodm9pZClfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25m
aWd1cmF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRp
b24gY29tcGxldGlvbjoodm9pZCheKSgpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIHVzaW5nIEV4Y2x1c2lvblJ1bGUgPSBXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTsKIAogICAgIGlmICghX3RleHRNYW5p
cHVsYXRpb25EZWxlZ2F0ZSB8fCAhX3BhZ2UpIHsKQEAgLTIwMjEsNyArMTk2Nyw2IEBAIHN0YXRp
YyBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5JZGVudGlmaWVyIGNv
cmVUZXh0TWFuaXB1bGF0aW9uCiAKIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjoo
X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBz
dWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBpZiAoIV9wYWdlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjA3OSw3ICsyMDI0LDYgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXQK
IAogLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6KE5TQXJyYXk8X1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKilpdGVtcyBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJy
YXk8TlNFcnJvciAqPiAqZXJyb3JzKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBpZiAoIV9wYWdlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VGYWlsdXJlU2V0Rm9yQWxsVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0ZW1zKS5nZXQoKSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTIxMDcsNyArMjA1MSw2IEBAIC0gKHZvaWQpX2NvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVt
ICo+ICopCiAKIC0gKHZvaWQpX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjooaWQpc2VuZGVy
CiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBbc2Vs
ZiBfdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uSW50ZXJuYWw6c2VuZGVyXTsKICNlbHNlCkBA
IC0yMTYyLDcgKzIxMDUsNiBAQCAtICh2b2lkKV9zZXRIaXN0b3J5RGVsZWdhdGU6KGlkIDxXS0hp
c3RvcnlEZWxlZ2F0ZVByaXZhdGU+KWhpc3RvcnlEZWxlZ2F0ZQogCiAtICh2b2lkKV91cGRhdGVN
ZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwog
I2lmIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFH
RVIpCiAgICAgX2ltcGwtPnVwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKICNl
bmRpZgpAQCAtMjE4OCw3ICsyMTMwLDYgQEAgLSAoQk9PTClfaXNQaWN0dXJlSW5QaWN0dXJlQWN0
aXZlCiAKIC0gKHZvaWQpX3RvZ2dsZVBpY3R1cmVJblBpY3R1cmUKIHsKLSAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09O
VFJPTFNfTUFOQUdFUikKICAgICBfaW1wbC0+dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpOwogI2Vu
ZGlmCkBAIC0yMjAxLDMxICsyMTQyLDI2IEBAIC0gKF9XS01lZGlhTXV0ZWRTdGF0ZSlfbWVkaWFN
dXRlZFN0YXRlCiAKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zCiB7Ci0gICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
V2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1
cmUKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1
cmUoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW9WaWRlbyk7
CiB9CiAKIC0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFtzZWxmIHBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFu
ZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9zdXNwZW5kQWxsTWVkaWFQbGF5YmFjawogewotICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVu
ZGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9yZXN1bWVBbGxN
ZWRpYVBsYXliYWNrCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldEFs
bE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApA
QCAtMjI0Miw3ICsyMTc4LDYgQEAgc3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChW
ZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4KIAogLSAodm9pZClf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogewot
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAg
VmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAKQEAgLTIyNTcsNyAr
MjE5Miw2IEBAIC0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAq
PiAqKWhpZ2hsaWdodHMKIAogLSAodm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0
OihOU0RhdGEgKiloaWdobGlnaHQKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQogICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
PiBidWZmZXJzOwogICAgIApAQCAtMjI3MCw3ICsyMjA0LDYgQEAgLSAodm9pZClfcmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQKIAogLSAodm9pZClfYWRk
QXBwSGlnaGxpZ2h0CiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBf
SElHSExJR0hUUykKICAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObywgV2ViQ29yZTo6SGlnaGxp
Z2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzKTsKICNlbmRpZgpAQCAtMjI5MCwyNyArMjIy
MywyMyBAQCAtIChOU1VSTCAqKV9tYWluRnJhbWVVUkwKIAogLSAodm9pZClfbG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBm
b3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTAogewotICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBfcGFnZS0+bG9hZEFsdGVybmF0ZUhUTUwoeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sICJV
VEYtOCJfcywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtIChXS05hdmlnYXRpb24g
KilfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBi
YXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7Ci0gICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlN
RVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZywgV2Vi
S2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkpKTsKIH0KIAogLSAo
V0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHM6KEJPT0wpc2hvdWxkT3BlbkV4dGVybmFsVVJMcwogewotICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBv
bGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMgPyBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5QWxsb3cgOiBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Tm90QWxsb3c7CiAg
ICAgcmV0dXJuIFtzZWxmIF9sb2FkUmVxdWVzdDpyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6cG9saWN5XTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6KF9XS1No
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeQog
ewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHBvbGljeTsKICAgICBzd2l0Y2ggKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpIHsKICAgICBjYXNlIF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lOb3RBbGxv
dzoKQEAgLTIzMjgsMjggKzIyNTcsMjQgQEAgLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2wKIAogLSAo
dm9pZClfZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgaWYgKF9wYWdlKQogICAgICAgICBfcGFnZS0+Z3JhbnRBY2Nlc3NUb0Fzc2V0U2Vy
dmljZXMoKTsKIH0KIAogLSAodm9pZClfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzCiB7Ci0g
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPnJl
dm9rZUFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpOwogfQogCiAtICh2b2lkKV9zd2l0Y2hGcm9tU3Rh
dGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5CiB7Ci0gICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPnN3aXRjaEZyb21TdGF0aWNGb250
UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKTsKIH0KIAogLSAodm9pZClfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW3Jl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21Ib3N0KGRvbWFpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERhdGEpIG11dGFibGUgewogICAgICAg
ICBpZiAoIWFwcEJvdW5kRGF0YS5jb250ZXh0RGF0YS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CkBAIC0yMzYyLDcgKzIy
ODcsNiBAQCAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmlu
ZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodgogCiAtICh2b2lkKV9kaWRMb2FkQXBwQm91
bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8mJiBhcHBCb3VuZERhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihh
cHBCb3VuZERhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CiAgICAgfSk7CkBA
IC0yMzcwLDM0ICsyMjk0LDExIEBAIC0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9kaWRMb2Fk
Tm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mJiBhcHBCb3VuZERhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhcHBCb3VuZERhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgotewotICAgIGlmICghX3BhZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoTk8pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIF9wYWdlLT5zdXNwZW5kKFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wg
c3VjY2VzcykgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKLSAgICB9KTsK
LX0KLQotLSAodm9pZClfcmVzdW1lUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXIKLXsKLSAgICBpZiAoIV9wYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBfcGFnZS0+cmVzdW1lKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2Vzcykgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKLSAgICB9KTsKLX0KLQogLSAoTlNB
cnJheSAqKV9jZXJ0aWZpY2F0ZUNoYWluCiB7CiAgICAgaWYgKFdlYktpdDo6V2ViRnJhbWVQcm94
eSogbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQpAQCAtMjQzMSw3ICsyMzMyLDYgQEAg
LSAoTlNTdHJpbmcgKilfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiAKIC0gKHZvaWQpX3Nl
dEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDooTlNTdHJpbmcgKilhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOwog
ICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCk7CiB9CkBAIC0yNDg0LDcgKzIzODQsNiBAQCAtIChCT09MKV93
ZWJQcm9jZXNzSXNSZXNwb25zaXZlCiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzcwog
ewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIVtzZWxmIF9pc1ZhbGlkXSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNDkzLDE5ICsyMzkyLDE2IEBAIC0gKHZvaWQpX2tpbGxXZWJD
b250ZW50UHJvY2VzcwogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRlbnRC
bG9ja2VycwogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vy
cykpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkKIHsKLSAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChXZWJD
b3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KSk7CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJD
b250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgUmVmPFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0ZWRQcm9jZXNzUHJveHkoX3Bh
Z2UtPnByb2Nlc3MoKSk7CiAgICAgcHJvdGVjdGVkUHJvY2Vzc1Byb3h5LT5yZXF1ZXN0VGVybWlu
YXRpb24oV2ViS2l0OjpQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50
KTsKIApAQCAtMjUxNyw3ICsyNDEzLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNz
QW5kUmVzZXRTdGF0ZQogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlv
bjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFJldGFpblB0cjxXS1BERkNvbmZp
Z3VyYXRpb24+IHBkZkNvbmZpZ3VyYXRpb247CiAgICAgaWYgKHNuYXBzaG90Q29uZmlndXJhdGlv
bikgewogICAgICAgICBwZGZDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLUERGQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjUyOSw3ICsyNDI0LDYgQEAgLSAodm9pZClfdGFrZVBE
RlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25h
cHNob3RDb24KIAogLSAodm9pZClfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6KF9XS0ZyYW1l
SGFuZGxlICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQ0dTaXplKSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0UERG
Rmlyc3RQYWdlU2l6ZShmcmFtZS0+X2ZyYW1lSGFuZGxlLT5mcmFtZUlEKCksIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFdlYkNvcmU6OkZsb2F0
U2l6ZSBzaXplKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PENHU2l6
ZT4oc2l6ZSkpOwogICAgIH0pOwpAQCAtMjU2MCw3ICsyNDU0LDYgQEAgLSAoX1dLU2Vzc2lvblN0
YXRlICopX3Nlc3Npb25TdGF0ZVdpdGhGaWx0ZXI6KEJPT0wgKF4pKFdLQmFja0ZvcndhcmRMaXN0
SXRlbSAqaXQKIAogLSAodm9pZClfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOihOU0RhdGEg
KilzZXNzaW9uU3RhdGVEYXRhCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBkZWNvZGVy
LgogICAgIFdlYktpdDo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZTsKICAgICBpZiAoIVdlYktp
dDo6ZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
ZXNzaW9uU3RhdGVEYXRhLmJ5dGVzKSwgc2Vzc2lvblN0YXRlRGF0YS5sZW5ndGgsIHNlc3Npb25T
dGF0ZSkpCkBAIC0yNTcxLDcgKzI0NjQsNiBAQCAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIAogLSAoV0tOYXZpZ2F0aW9uICop
X3Jlc3RvcmVTZXNzaW9uU3RhdGU6KF9XS1Nlc3Npb25TdGF0ZSAqKXNlc3Npb25TdGF0ZSBhbmRO
YXZpZ2F0ZTooQk9PTCluYXZpZ2F0ZQogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBy
ZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoc2Vzc2lvblN0YXRl
ID8gc2Vzc2lvblN0YXRlLT5fc2Vzc2lvblN0YXRlIDogV2ViS2l0OjpTZXNzaW9uU3RhdGUgeyB9
LCBuYXZpZ2F0ZSkpOwogfQogCkBAIC0yNTgyLDcgKzI0NzQsNiBAQCAtICh2b2lkKV9jbG9zZQog
CiAtIChCT09MKV90cnlDbG9zZQogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1
cm4gX3BhZ2UtPnRyeUNsb3NlKCk7CiB9CiAKQEAgLTI1OTMsNyArMjQ4NCw2IEBAIC0gKEJPT0wp
X2lzQ2xvc2VkCiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
bmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50
VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRp
b25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFVOVVNFRF9QQVJBTShv
cHRpb25zKTsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhXSk7CiAgICAgaWYgKGZpbGVu
YW1lKQpAQCAtMjYwMywxNCArMjQ5MywxMiBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5cAogCiAt
IChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmls
ZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlw
ZSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRp
b246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAgcmV0dXJuIFtz
ZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZpbGVXcmFwcGVyIGNvbnRlbnRU
eXBlOmNvbnRlbnRUeXBlIGNvbXBsZXRpb246Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtIChf
V0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdy
YXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBj
b21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgYXV0
byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRlbnRpZmllciwgKl9wYWdl
KTsKQEAgLTI2MzAsNyArMjUxOCw2IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNo
bWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyCiAKIC0gKF9X
S0F0dGFjaG1lbnQgKilfYXR0YWNobWVudEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRp
ZmllcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBfcGFnZS0+YXR0YWNobWVudEZvcklk
ZW50aWZpZXIoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiB3cmFwcGVyKGF0dGFjaG1lbnQp
OwpAQCAtMjY0MCw3ICsyNTI3LDYgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50Rm9y
SWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAKIC0gKHZvaWQpX3NpbXVsYXRlRGV2
aWNlT3JpZW50YXRpb25DaGFuZ2VXaXRoQWxwaGE6KGRvdWJsZSlhbHBoYSBiZXRhOihkb3VibGUp
YmV0YSBnYW1tYTooZG91YmxlKWdhbW1hCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5zaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlKGFscGhhLCBiZXRhLCBnYW1t
YSk7CiB9CiAKQEAgLTI2NTYsNyArMjU0Miw2IEBAICsgKEJPT0wpX3dpbGxVcGdyYWRlVG9IVFRQ
UzooTlNVUkwgKil1cmwKIAogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0
bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKil3YXJuaW5nIGRldGFpbHM6
KE5TQXR0cmlidXRlZFN0cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
W3NlbGYgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDpuaWwgdGl0bGU6dGl0bGUgd2Fy
bmluZzp3YXJuaW5nIGRldGFpbHNXaXRoTGlua3M6ZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjpe
KEJPT0wgY29udGludWVVbnNhZmVMb2FkLCBOU1VSTCAqdXJsKSB7CiAgICAgICAgIEFTU0VSVCgh
dXJsKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGludWVVbnNhZmVMb2FkKTsKQEAg
LTI2NjUsNyArMjU1MCw2IEBAIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFRp
dGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopCiAKIC0gKHZvaWQpX3No
b3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDooTlNVUkwgKil1cmwgdGl0bGU6KE5TU3RyaW5n
ICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKil3YXJuaW5nIGRldGFpbHM6KE5TQXR0cmlidXRl
ZFN0cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX3Nob3dT
YWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDpuaWwgdGl0bGU6dGl0bGUgd2FybmluZzp3YXJuaW5n
IGRldGFpbHNXaXRoTGlua3M6ZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgY29udGlu
dWVVbnNhZmVMb2FkLCBOU1VSTCAqdXJsKSB7CiAgICAgICAgIEFTU0VSVCghdXJsKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGludWVVbnNhZmVMb2FkKTsKQEAgLTI2NzQsNyArMjU1
OCw2IEBAIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDooTlNVUkwgKil1
cmwgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FyCiAKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3Np
bmdXYXJuaW5nV2l0aFVSTDooTlNVUkwgKil1cmwgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2Fy
bmluZzooTlNTdHJpbmcgKil3YXJuaW5nIGRldGFpbHNXaXRoTGlua3M6KE5TQXR0cmlidXRlZFN0
cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCwgTlNVUkwgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBz
YWZlQnJvd3NpbmdXYXJuaW5nID0gV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nOjpjcmVhdGUo
dXJsLCB0aXRsZSwgd2FybmluZywgZGV0YWlscyk7CiAgICAgYXV0byB3cmFwcGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZhcmlhbnQ8
V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJiB2YXJpYW50KSB7CiAgICAgICAgIHN3
aXRjaE9uKHZhcmlhbnQsIFsmXSAoV2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQgY29udGludWVV
bnNhZmVMb2FkKSB7CkBAIC0yNzA3LDcgKzI1OTAsNiBAQCArIChOU1VSTCAqKV92aXNpdFVuc2Fm
ZVdlYnNpdGVTZW50aW5lbAogCiAtICh2b2lkKV9pc0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PmlzSklURW5hYmxlZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoYm9vbCBlbmFibGVkKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVu
YWJsZWQpOwogICAgIH0pOwpAQCAtMjcxNSwxMyArMjU5NywxMSBAQCAtICh2b2lkKV9pc0pJVEVu
YWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfZXZhbHVh
dGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJp
bmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUph
dmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVS
TDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpOTyBpbkZyYW1lOm5pbCBp
bldvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0
aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHQ6KE5TU3RyaW5n
ICopZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KWFyZ3VtZW50cyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihX
S0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
aWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhc0Fz
eW5jRnVuY3Rpb246WUVTIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6YXJndW1lbnRz
IGZvcmNlVXNlckdlc3R1cmU6WUVTIGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCkBAIC0yNzQ2LDEzICsy
NjI2LDExIEBAIC0gKEJPT0wpX2FsbE1lZGlhUHJlc2VudGF0aW9uc0Nsb3NlZAogCiAtICh2b2lk
KV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBpbkZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9y
KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2Vs
ZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5P
IHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVT
IGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3Ry
aW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoU291cmNlVVJMOihOU1VSTCAqKXVybCBpbkZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9y
KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2Vs
ZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5P
IHdpdGhTb3VyY2VVUkw6dXJsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVT
IGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOwogfQogCkBAIC0yNzYyLDcgKzI2NDAsNiBAQCAtICh2b2lkKV91cGRh
dGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwog
CiAtICh2b2lkKV91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2Vz
ICopd2VicGFnZVByZWZlcmVuY2VzCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlm
ICh3ZWJwYWdlUHJlZmVyZW5jZXMuX3dlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJVcGRhdGluZyBX
S1dlYnNpdGVEYXRhU3RvcmUgaXMgb25seSBzdXBwb3J0ZWQgZHVyaW5nIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24uIl07CiAgICAgaWYgKHdlYnBhZ2VQcmVmZXJlbmNlcy5fdXNlckNv
bnRlbnRDb250cm9sbGVyKQpAQCAtMjc3MywxMyArMjY1MCwxMSBAQCAtICh2b2lkKV91cGRhdGVX
ZWJwYWdlUHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopd2VicGFnZVByZWZlcmVu
Y2VzCiAKIC0gKHZvaWQpX25vdGlmeVVzZXJTY3JpcHRzCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIF9wYWdlLT5ub3RpZnlVc2VyU2NyaXB0cygpOwogfQogCiAtIChCT09MKV9kZWZl
cnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIHJldHVybiBfcGFnZS0+dXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKCk7CiB9
CiAKQEAgLTI3OTQsNyArMjY2OSw2IEBAIC0gKEJPT0wpX2FsbG93c1JlbW90ZUluc3BlY3Rpb24K
IAogLSAodm9pZClfc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjooQk9PTClhbGxvdwogewotICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBf
cGFnZS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihhbGxvdyk7CiAjZW5kaWYKQEAgLTI4MTEs
NyArMjY4NSw2IEBAIC0gKE5TU3RyaW5nICopX3JlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUK
IAogLSAodm9pZClfc2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZTooTlNTdHJpbmcgKilu
YW1lCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQogICAgIF9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKG5hbWUpOwog
I2VuZGlmCkBAIC0yODI0LDcgKzI2OTcsNiBAQCAtIChCT09MKV9hZGRzVmlzaXRlZExpbmtzCiAK
IC0gKHZvaWQpX3NldEFkZHNWaXNpdGVkTGlua3M6KEJPT0wpYWRkc1Zpc2l0ZWRMaW5rcwogewot
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhh
ZGRzVmlzaXRlZExpbmtzKTsKIH0KIApAQCAtMjg3Miw3ICsyNzQ0LDYgQEAgLSAodm9pZClfc2V0
T2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50czooX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMpb2JzZXJ2ZWQKIAogLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldE1haW5SZXNvdXJjZURh
dGFPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSksIG5pbCk7CiAgICAgfSk7CkBAIC0yODgwLDEz
ICsyNzUxLDExIEBAIC0gKHZvaWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopCiAKIC0gKHZvaWQpX2dldFdlYkFy
Y2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJv
ciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBb
c2VsZiBjcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX2dldENvbnRlbnRzQXNTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNT
dHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgW2hh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShTdHJpbmcgc3RyaW5nKSB7
CiAgICAgICAgIGhhbmRsZXIoc3RyaW5nLCBuaWwpOwogICAgIH0pOwpAQCAtMjg5NCw3ICsyNzYz
LDYgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvcgogCiAtICh2b2lkKV9nZXRDb250ZW50c09mQWxs
RnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdl
LT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGls
ZEZyYW1lczo6WWVzLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KFN0cmluZyBzdHJpbmcpIHsKICAgICAgICAgaGFuZGxlcihzdHJpbmcpOwogICAgIH0pOwpAQCAt
MjkwMiw3ICsyNzcwLDYgQEAgLSAodm9pZClfZ2V0Q29udGVudHNPZkFsbEZyYW1lc0FzU3RyaW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZwogCiAtICh2b2lkKV9nZXRD
b250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBdHRyaWJ1dGVkU3RyaW5nICosIE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdEb2N1
bWVudEF0dHJpYnV0ZUtleSwgaWQ+ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsK
LSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNBdHRyaWJ1
dGVkU3RyaW5nKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYgYXR0cmlidXRlZFN0cmluZykgewogICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZy5zdHJp
bmcpCiAgICAgICAgICAgICBoYW5kbGVyKGF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgpLCBh
dHRyaWJ1dGVkU3RyaW5nLmRvY3VtZW50QXR0cmlidXRlcy5nZXQoKSwgbmlsKTsKQEAgLTI5MTMs
NyArMjc4MCw2IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0F0dHJpYnV0CiAKIC0gKHZvaWQpX2dldEFwcGxp
Y2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIF9wYWdlLT5nZXRBcHBs
aWNhdGlvbk1hbmlmZXN0KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
JiBtYW5pZmVzdCkgewogICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKQEAgLTI5NTEs
NyArMjgxNyw2IEBAIC0gKF9XS1BhZ2luYXRpb25Nb2RlKV9wYWdpbmF0aW9uTW9kZQogCiAtICh2
b2lkKV9zZXRQYWdpbmF0aW9uTW9kZTooX1dLUGFnaW5hdGlvbk1vZGUpcGFnaW5hdGlvbk1vZGUK
IHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9k
ZSBtb2RlOwogICAgIHN3aXRjaCAocGFnaW5hdGlvbk1vZGUpIHsKICAgICBjYXNlIF9XS1BhZ2lu
YXRpb25Nb2RlVW5wYWdpbmF0ZWQ6CkBAIC0yOTgzLDcgKzI4NDgsNiBAQCAtIChCT09MKV9wYWdp
bmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25CZWhhdmVz
TGlrZUNvbHVtbnM6KEJPT0wpYmVoYXZlc0xpa2VDb2x1bW5zCiB7Ci0gICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIF9wYWdlLT5zZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2
ZXNMaWtlQ29sdW1ucyk7CiB9CiAKQEAgLTI5OTQsNyArMjg1OCw2IEBAIC0gKENHRmxvYXQpX3Bh
Z2VMZW5ndGgKIAogLSAodm9pZClfc2V0UGFnZUxlbmd0aDooQ0dGbG9hdClwYWdlTGVuZ3RoCiB7
Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRQYWdlTGVuZ3RoKHBhZ2VM
ZW5ndGgpOwogfQogCkBAIC0zMDA1LDcgKzI4NjgsNiBAQCAtIChDR0Zsb2F0KV9nYXBCZXR3ZWVu
UGFnZXMKIAogLSAodm9pZClfc2V0R2FwQmV0d2VlblBhZ2VzOihDR0Zsb2F0KWdhcEJldHdlZW5Q
YWdlcwogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0R2FwQmV0d2Vl
blBhZ2VzKGdhcEJldHdlZW5QYWdlcyk7CiB9CiAKQEAgLTMwMTYsNyArMjg3OCw2IEBAIC0gKEJP
T0wpX3BhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQKIAogLSAodm9pZClfc2V0UGFnaW5hdGlvbkxp
bmVHcmlkRW5hYmxlZDooQk9PTClsaW5lR3JpZEVuYWJsZWQKIHsKLSAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQobGluZUdyaWRF
bmFibGVkKTsKIH0KIApAQCAtMzAzNyw3ICsyODk4LDYgQEAgLSAoZG91YmxlKV90ZXh0Wm9vbUZh
Y3RvcgogCiAtICh2b2lkKV9zZXRUZXh0Wm9vbUZhY3RvcjooZG91YmxlKXpvb21GYWN0b3IKIHsK
LSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFRleHRab29tRmFjdG9yKHpv
b21GYWN0b3IpOwogfQogCkBAIC0zMDQ4LDcgKzI5MDgsNiBAQCAtIChkb3VibGUpX3BhZ2Vab29t
RmFjdG9yCiAKIC0gKHZvaWQpX3NldFBhZ2Vab29tRmFjdG9yOihkb3VibGUpem9vbUZhY3Rvcgog
ewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBzZXRQYWdlWm9vbTp6b29tRmFj
dG9yXTsKIH0KIApAQCAtMzExMCw3ICsyOTY5LDYgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8
V2ViS2l0OjpGaW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmQK
IAogLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25z
OihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CiB7
Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKF9jdXN0b21Db250ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdl
Yl9jb3VudFN0cmluZ01hdGNoZXM6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDptYXhD
b3VudF07CkBAIC0zMTIyLDcgKzI5ODAsNiBAQCAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6
KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbQogCiAt
ICh2b2lkKV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0
aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CiB7Ci0gICAgVEhST1df
SUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2hpbGUgQXBw
S2l0IGNvbnRhaW5zIGxvZ2ljIGluIE5TQmFyVGV4dEZpbmRlciB0byBhdXRvbWF0aWNhbGx5IHVw
ZGF0ZSB0aGUgZmluZCBwYXN0ZWJvYXJkCiAgICAgLy8gd2hlbiB0aGUgZmluZCBzdHJpbmcgY2hh
bmdlcywgdGhpcyAoYWxvbmcgd2l0aCB0aGUgZmluZCBwYXN0ZWJvYXJkIGl0c2VsZikgYXJlIGJv
dGggbWlzc2luZwpAQCAtMzEzOSw3ICsyOTk2LDYgQEAgLSAodm9pZClfZmluZFN0cmluZzooTlNT
dHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDoK
IAogLSAodm9pZClfaGlkZUZpbmRVSQogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfY3VzdG9tQ29udGVudFZpZXcpIHsKICAgICAg
ICAgW19jdXN0b21Db250ZW50VmlldyB3ZWJfaGlkZUZpbmRVSV07CkBAIC0zMTUxLDcgKzMwMDcs
NiBAQCAtICh2b2lkKV9oaWRlRmluZFVJCiAKIC0gKHZvaWQpX3NhdmVCYWNrRm9yd2FyZFNuYXBz
aG90Rm9ySXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewotICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICBfcGFnZS0+
cmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KGl0ZW0uX2l0ZW0pOwpAQCAtMzE2NSw3ICszMDIwLDYg
QEAgLSAodm9pZClfc2VydmljZVdvcmtlcnNFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCiAKIC0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJp
ZGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIF9wYWdlLT5jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRl
KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKQEAgLTMxNzMsNyArMzAyNyw2
IEBAIC0gKHZvaWQpX2NsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGU6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZl
cjooTlNVUkwgKil1cmwKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnBy
ZWNvbm5lY3RUbyh1cmwpOwogfQogCkBAIC0zMTg0LDcgKzMwMzcsNiBAQCAtIChCT09MKV9jYW5V
c2VDcmVkZW50aWFsU3RvcmFnZQogCiAtICh2b2lkKV9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFn
ZTooQk9PTCljYW5Vc2VDcmVkZW50aWFsU3RvcmFnZQogewotICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY2FuVXNlQ3JlZGVudGlh
bFN0b3JhZ2UpOwogfQogCkBAIC0zMzI1LDcgKzMxNzcsNiBAQCAtIChfV0tMYXlvdXRNb2RlKV9s
YXlvdXRNb2RlCiAKIC0gKHZvaWQpX3NldExheW91dE1vZGU6KF9XS0xheW91dE1vZGUpbGF5b3V0
TW9kZQogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShNQUMpCiAgICAg
V0tMYXlvdXRNb2RlIHdrVmlld0xheW91dE1vZGU7CiAgICAgc3dpdGNoIChsYXlvdXRNb2RlKSB7
CkBAIC0zMzU2LDEzICszMjA3LDExIEBAIC0gKENHU2l6ZSlfZml4ZWRMYXlvdXRTaXplCiAKIC0g
KHZvaWQpX3NldEZpeGVkTGF5b3V0U2l6ZTooQ0dTaXplKWZpeGVkTGF5b3V0U2l6ZQogewotICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0Rml4ZWRMYXlvdXRTaXplKFdlYkNv
cmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoZml4ZWRMYXlvdXRTaXplKSkp
OwogfQogCiAtICh2b2lkKV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6KEJPT0wpYmFj
a2dyb3VuZEV4dGVuZHMKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNl
dEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kcyk7CiB9CiAKQEAg
LTMzODIsNyArMzIzMSw2IEBAIC0gKENHRmxvYXQpX3ZpZXdTY2FsZQogCiAtICh2b2lkKV9zZXRW
aWV3U2NhbGU6KENHRmxvYXQpdmlld1NjYWxlCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIGlmICh2aWV3U2NhbGUgPD0gMCB8fCBpc25hbih2aWV3U2NhbGUpIHx8IGlzaW5mKHZpZXdT
Y2FsZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJWaWV3IHNjYWxlIHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlciJdOwog
CkBAIC0zNDAzLDEzICszMjUxLDExIEBAIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfY29yc0Rp
c2FibGluZ1BhdHRlcm5zCiAKIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNB
cnJheTxOU1N0cmluZyAqPiAqKXBhdHRlcm5zCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9wYWdlLT5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobWFrZVZlY3RvcjxTdHJpbmc+KHBh
dHRlcm5zKSk7CiB9CiAKIC0gKHZvaWQpX2dldFByb2Nlc3NEaXNwbGF5TmFtZVdpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldFByb2Nlc3NEaXNwbGF5TmFtZShb
aGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBuYW1lKSB7
CiAgICAgICAgIGhhbmRsZXIobmFtZSk7CiAgICAgfSk7CkBAIC0zNDE3LDcgKzMyNjMsNiBAQCAt
ICh2b2lkKV9nZXRQcm9jZXNzRGlzcGxheU5hbWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TU3RyaW5nICopKWNvbXBsZQogCiAtICh2b2lkKV9zZXRNaW5pbXVtRWZmZWN0aXZlRGV2
aWNlV2lkdGg6KENHRmxvYXQpbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoCiB7Ci0gICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9wYWdl
LT5taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgoKSA9PSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNl
V2lkdGgpCiAgICAgICAgIHJldHVybjsKQEAgLTM0NDAsNyArMzI4NSw2IEBAIC0gKENHRmxvYXQp
X21pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aAogCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvUHJl
ZmVyZW5jZVNlcnZpY2UKIHsKLSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdl
KQogICAgICAgICBfcGFnZS0+Z3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlKCk7CiB9CkBA
IC0zNDQ5LDcgKzMyOTMsNiBAQCAtICh2b2lkKV9ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZp
Y2UKIAogLSAodm9pZClfc2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6
KEJPT0wpZW5hYmxlZAogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0
U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKQEAg
LTM0ODAsNyArMzMyMyw2IEBAIC0gKEJPT0wpX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5
YmFjawogCiAtICh2b2lkKV9zZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2s6KEJP
T0wpZmxhZwogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIF9wYWdlLT5zZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soZmxh
Zyk7CiAjZW5kaWYKQEAgLTM1MTksNyArMzM2MSw2IEBAIC0gKF9XS01lZGlhQ2FwdHVyZVN0YXRl
RGVwcmVjYXRlZClfbWVkaWFDYXB0dXJlU3RhdGUKIAogLSAodm9pZClfc2V0TWVkaWFDYXB0dXJl
RW5hYmxlZDooQk9PTCllbmFibGVkCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRNZWRpYUNhcHR1cmVFbmFibGVkKGVuYWJsZWQpOwogfQogCkBAIC0zNTMwLDcgKzMz
NzEsNiBAQCAtIChCT09MKV9tZWRpYUNhcHR1cmVFbmFibGVkCiAKIC0gKHZvaWQpX3NldFBhZ2VN
dXRlZDooX1dLTWVkaWFNdXRlZFN0YXRlKW11dGVkU3RhdGUKIHsKLSAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIGNvcmVT
dGF0ZTsKIAogICAgIGlmIChtdXRlZFN0YXRlICYgX1dLTWVkaWFBdWRpb011dGVkKQpAQCAtMzU0
NSw3ICszMzg1LDYgQEAgLSAodm9pZClfc2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVkU3RhdGUp
bXV0ZWRTdGF0ZQogCiAtICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczooZGlzcGF0Y2hf
YmxvY2tfdCljb21wbGV0aW9uCiB7Ci0gICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKICAgICBfcGFnZS0+cmVtb3ZlRGF0YURldGVjdGVkTGlua3MoW2Nv
bXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbiksIHBhZ2UgPSBtYWtlV2Vha1B0cihf
cGFnZS5nZXQoKSldIChhdXRvJiByZXN1bHQpIHsKICAgICAgICAgaWYgKHBhZ2UpCkBAIC0zNTYx
LDEzICszNDAwLDExIEBAIC0gKHZvaWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOihkaXNwYXRj
aF9ibG9ja190KWNvbXBsZXRpb24KIC8vIEV4ZWN1dGUgdGhlIHN1cHBsaWVkIGJsb2NrIGFmdGVy
IHRoZSBuZXh0IHRyYW5zYWN0aW9uIGZyb20gdGhlIFdlYlByb2Nlc3MuCiAtICh2b2lkKV9kb0Fm
dGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZToodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sKIHsK
LSAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2ludGVybmFsRG9BZnRlck5leHRQ
cmVzZW50YXRpb25VcGRhdGU6dXBkYXRlQmxvY2sgd2l0aG91dFdhaXRpbmdGb3JQYWludGluZzpO
TyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOk5PXTsKIH0KIAogLSAodm9pZClfZG9B
ZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVXaXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOih2b2lk
ICheKSh2b2lkKSl1cGRhdGVCbG9jawogewotICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBb
c2VsZiBfaW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp1cGRhdGVCbG9jayB3
aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOllFUyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVz
aXplOk5PXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMmRmZWFiYTBkZDRjYjNkNGUwMGU5ZDVmYmFjYzgz
ODIwMDdkZjBjZi4uNDQ5YmYyMzNmNTU2YThkMWNkOTZmNDY5MmFjMzYyMWI5M2JlZWNjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCkBAIC00MTAsOSArNDEwLDYgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lkKV9k
aWRMb2FkQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhh
bmRsZXI7CiAtICh2b2lkKV9kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09M
IHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKLS0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lk
ICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzdW1lUGFnZToodm9pZCAoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKLQogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOTIzMDY4MzQ3NzkxMWM4
ZmVlMDc3OWQ5MmFmNjhiZDc0YzUzZDk1NS4uNTJmOTYzOWFhNjVjMmI1NmVlYTM3NGY0ZTYzMWRi
MzU5MDM5YmE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0zMTQ2LDcgKzMxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChj
b25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBz
dXNwZW5kZWQsIHdoaWNoIHNob3VsZCBiZSB0aGUgY2FzZSBkdXJpbmcgcGFubmluZywgcGluY2hp
bmcKICAgICAvLyBhbmQgYW5pbWF0aW9uIG9uIHRoZSBwYWdlIGl0c2VsZiAoa2luZXRpYyBzY3Jv
bGxpbmcsIHRhcCB0byB6b29tKSBldGMsIHRoZW4KICAgICAvLyB3ZSBkbyBub3Qgc2VuZCBhbnkg
b2YgdGhlIGV2ZW50cyB0byB0aGUgcGFnZSBldmVuIGlmIGlzIGhhcyBsaXN0ZW5lcnMuCi0gICAg
aWYgKCFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKSB7CisgICAg
aWYgKCFtX2lzUGFnZVN1c3BlbmRlZCkgewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5hcHBl
bmQoZXZlbnQpOwogICAgICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigp
OwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSk7CkBA
IC0zNTk0LDQ1ICszNTk0LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21Vc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpIHx8ICFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVu
ZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2Fy
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSB8fCBtX2lzUGFnZVN1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7Cisg
ICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1
c3BlbmQ6Iik7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNTdXNwZW5kZWQp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0KLSAgICBtX2lzU3Vz
cGVuZGVkID0gdHJ1ZTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlN1c3BlbmQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIFdlYlBh
Z2VQcm94eTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1l
OiIpOwotCi0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2lzU3VzcGVuZGVkKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgbV9pc1N1c3Bl
bmRlZCA9IGZhbHNlOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdW1lKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogYm9vbCBXZWJQYWdl
UHJveHk6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRSAoMTE4
ODQwKTogV2Ugc2hvdWxkIHByb2JhYmx5IG9ubHkgc3VwcG9ydCB0aGlzIGZvciB0ZXh0IGRvY3Vt
ZW50cywgbm90IGFsbCBub24taW1hZ2UgZG9jdW1lbnRzLgpAQCAtNjEwMiw3ICs2MDgxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNZWRpYUNhcHR1cmUoTWVkaWFQcm9kdWNlcjo6TWVkaWFD
YXB0dXJlS2luZCBraW5kLCBDb21wbGUKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhUGxh
eWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdE1lZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TWVk
aWFQbGF5YmFja1N0YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTc3
NDMsNyArNzcyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNz
RXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAgICAgbV92aXNpYmxlUGFn
ZVRva2VuID0gbnVsbHB0cjsKIAogICAgIG1faGFzUnVubmluZ1Byb2Nlc3MgPSBmYWxzZTsKLSAg
ICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7Cisg
ICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIG1fdXNlclNjcmlwdHNOb3RpZmll
ZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQ1
MTNhYWEzYmUyN2U0YTUxNjMxZWFiMTNmZmFjYTkyYWYxYzBjYzAuLjViNDU3ZGZiNjAzMWVmNjM5
YWQzYWUzZmNiZmZmYWU2YTZkODU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC01MDUsMTAgKzUwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVudGVyRnVs
bHNjcmVlbigpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIAotICAgIHZvaWQgc3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlc3VtZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICBib29sIGlzU3VzcGVuZGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZDsgfQotCiAgICAgV2ViSW5zcGVjdG9yVUlQcm94
eSogaW5zcGVjdG9yKCkgY29uc3Q7CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSYgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVy
biBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAKQEAgLTEwMTgsNyAr
MTAxNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7IH0KIAotICAgIGJvb2wgYXJlQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkOyB9CisgICAgYm9vbCBhcmVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
YWdlU3VzcGVuZGVkOyB9CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpOwogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CiAKQEAgLTI3NTcsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlZh
bGlkYXRpb25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgYm9vbCBt
X2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0
ZWRMaW5rcyB7IHRydWUgfTsKIAogICAgIGJvb2wgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uIHsg
ZmFsc2UgfTsKQEAgLTMwMTksNyArMzAxNSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUnVubmluZ01v
ZGFsSmF2YVNjcmlwdERpYWxvZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDdhMDI4MGY3YTFmODU2NGExMDc4YTQ3ZmM5NTg3
MjEwNzRmY2QyMWQuLmE5YzdkZDMyM2VjNjY4MjBjNGYzNWY0NmM2MzZlZTRhNzA4ZWI0MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTIs
NyArMTUyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0Zv
cndhcmRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRQYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vblZNLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Db250YWN0c1JlcXVlc3REYXRhLmg+CkBAIC0zNTk3LDM3ICszNTk2
LDYgQEAgdm9pZCBXZWJQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiAgICAgbV9wYWdlLT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzdXNwZW5kOiBtX3BhZ2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOwotICAgIGlmICghbV9wYWdlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgZnJlZXplTGF5
ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7Ci0KLSAgICBtX2Nh
Y2hlZFBhZ2UgPSBCYWNrRm9yd2FyZENhY2hlOjpzaW5nbGV0b24oKS5zdXNwZW5kUGFnZSgqbV9w
YWdlKTsKLSAgICBBU1NFUlQobV9jYWNoZWRQYWdlKTsKLSAgICBpZiAoYXV0byBtYWluRnJhbWUg
PSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkpCi0gICAgICAgIG1haW5GcmFtZS0+bG9hZGVyKCku
ZGV0YWNoRnJvbUFsbE9wZW5lZEZyYW1lcygpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OwotfQotCi12b2lkIFdlYlBhZ2U6OnJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInJlc3VtZTogbV9wYWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKLSAgICBpZiAoIW1fcGFn
ZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8g
Y2FjaGVkUGFnZSA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWNoZWRQYWdlLCBudWxscHRyKTsKLSAgICBB
U1NFUlQoY2FjaGVkUGFnZSk7Ci0gICAgaWYgKCFjYWNoZWRQYWdlKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgY2FjaGVkUGFnZS0+cmVzdG9yZSgqbV9w
YWdlKTsKLSAgICB1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlBhZ2VT
dXNwZW5kZWQpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwotfQotCiBJbnRQb2ludCBX
ZWJQYWdlOjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBJ
bnRQb2ludCB3aW5kb3dQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBmYzk2MjFlMzcyYzViNDA0MmI5ZWRiY2JjZjJlMzIzNjQzYWFlYTMxLi5l
ZTQ0NzNhZGM0Yjk4MGUwZGI4ZDdhM2UwMzQ4N2JiMmZlODk4ZmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzcsNyArMTc3LDYgQEAgY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVk
UGFnZTsKIGNsYXNzIENhcHR1cmVEZXZpY2U7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IERyYWdEYXRhOwpAQCAtMTY3MCw5ICsxNjY5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3Bl
bmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIAotICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlc3VtZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGVyZm9y
bURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
ICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CkBA
IC0yMzIyLDggKzIzMTgsNiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9jb3Jz
RGlzYWJsaW5nUGF0dGVybnM7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q2FjaGVk
UGFnZT4gbV9jYWNoZWRQYWdlOwotCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKICAgICBi
b29sIG1faXBjVGVzdGluZ0FQSUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fdmlz
aXRlZExpbmtUYWJsZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMWIzYTY4MWZjYjUxZjQxM2UyMWJhNDI1NDQy
YjhjMGExZmQ1ZTBhYy4uZTM3YTY1OWM5MWIzODkyZTJiOGY5MzhjNjI2Y2RjZmU4OWU0MTkwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0yNTAsOSArMjUwLDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAg
ICBTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIFJlc3VtZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAotICAgIFN1c3BlbmQoKSAtPiAoYm9vbCBzdWNj
ZXNzKSBBc3luYwotICAgIFJlc3VtZSgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCi0KICAgICBD
bG9zZSgpCiAgICAgVHJ5Q2xvc2UoKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkgQXN5bmMKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEzMmQxYTQ2
MTQ4ZjFmNjBlYTczNTMzZWExN2M0NzY3ZTc2NjI0ZTguLmVmODZkODhlMjA4ZmUwNDM1ZjAyNzE1
ZDBiNzYyZTY1MDFjMjFkYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0xMSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyNzczNDEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU2ODUKKworICAgICAgICBDYXVzZWQgV0syIGxheW91dCB0ZXN0cyB0byBleGl0IHdpdGgg
YW4gZXhjZXB0aW9uCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJB
ZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXciCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI3NzM0MQorCiAyMDIxLTA1LTExICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1haWwgY29tcG9z
ZSB3ZWIgdmlldyBkb2Vzbid0IHNjcm9sbCB0byByZXZlYWwgdGhlIHNlbGVjdGlvbiBpbiBjZXJ0
YWluIGNvbmZpZ3VyYXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3OTNkMzcyZjMx
ZDQ1OTQxZWE0MjA3NThkYTYxZDRiNjg2ZDFjZDYuLmRjMTE3YjI0ZDkyNzIyZmU5MDZjN2VlNGZl
OTBiOWM3ZWM5MDdjMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjIsNyArMjYyLDYg
QEAKIAkJNDYzRjQ3MjMyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0Y0NzIyMjU1QjQ5
QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi87IH07CiAJCTQ2NDdCMTI2MUVCQTNC
ODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQ
cm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLzsgfTsKIAkJNDY0Qzc2NEQyMzBERjg1QzAwQUZCMDIw
IC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRDNzY0QzIzMERGODMy
MDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9
OwotCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICov
OyB9OwogCQk0NjVFMjgwNzI1NUIyQTZBMDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUUyODA2MjU1QjJBNjkw
MDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovOyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4
REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4
OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1
MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYw
MDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi87IH07CkBAIC0xNjUxLDcgKzE2NTAs
NiBAQAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDE1MDg2RDFEQTA0MEM1MDA0
NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTBFQkJDQzY2MUZGRjlFMEMwMEZBNDJBQiAvKiBwb3AtdXAtY2hlY2suaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKLQkJCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0YgLyogcG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTgxRUY0
Njk2QjAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJRjQxQUI5QTkxRUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQtc3RhcnQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVz
aC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjA2OSw3ICsyMDY3LDYgQEAK
IAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFBy
b2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRl
MyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3
RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1y
ZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5v
dGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNzYsNyArNDA3Myw2IEBACiAJCQkJOUI3RDc0MEUx
RjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLywKIAkJCQkzRkNDNEZFNjFFQzRF
ODdFMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0bWwgKi8sCiAJCQkJRjQx
NTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAqLywKLQkJ
CQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwg
Ki8sCiAJCQkJRjQxQUI5OTQxRUY0NjkyQzAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0
bWwgKi8sCiAJCQkJRjQxQUI5OUExRUY0NjkyQzAwODNGQTA4IC8qIHByZXZlbnQtc3RhcnQuaHRt
bCAqLywKIAkJCQlBMTJEREJGRjFFODM3M0MxMDBDRjZDQUUgLyogcmVuZGVyZWQtaW1hZ2UtZXhj
bHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQppbmRleCAwYjBiOWFj
OTY3MDU4MjE2ZTA0Mzk4YmVmNDc1ZWNiN2UxZjkxZDg2Li45OTY2MWIzNDAzYjA0ZDE0MWExYzQy
ODE0NWI3ZDZmZjQ3OThkZGMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KQEAgLTI2LDEzICsyNiwx
MSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
Ci0jaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVG
b3JUZXN0aW5nLmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KIAogVEVTVChQcm9jZXNzU3Vz
cGVuc2lvbiwgQ2FuY2VsV2ViUHJvY2Vzc1N1c3BlbnNpb24pCiB7CkBAIC04NSwxNTEgKzgzLDMg
QEAgVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgRGVzdHJveVdlYlBhZ2VEdXJpbmdXZWJQcm9jZXNz
U3VzcGVuc2lvbikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgxKTsKICAgICBFWFBF
Q1RfRVEocGlkMSwgW3dlYlZpZXczIF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwogfQotCi1URVNU
KFByb2Nlc3NTdXNwZW5zaW9uLCBXS1dlYlZpZXdTdXNwZW5kUGFnZSkKLXsKLSAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotCi0gICAgYXV0byB0ZXN0TWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6dGVzdE1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwotICAgIF9fYmxvY2sgdW5zaWduZWQgdGltZXJGaXJl
ZENvdW50ID0gMDsKLSAgICBbdGVzdE1lc3NhZ2VIYW5kbGVyIGFkZE1lc3NhZ2U6QCJ0aW1lciBm
aXJlZCIgd2l0aEhhbmRsZXI6XnsKLSAgICAgICAgKyt0aW1lckZpcmVkQ291bnQ7Ci0gICAgfV07
Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7Ci0gICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicG9zdE1lc3NhZ2UtcmVndWxhcmx5Il07Ci0KLSAgICBh
dXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07Ci0gICAgRVhQRUNUX05F
KHBpZCwgMCk7Ci0KLSAgICAvLyBUaGUgdGltZXIgc2hvdWxkIGJlIGZpcmluZy4KLSAgICBhdXRv
IGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKLSAgICB3aGlsZSAobGFzdFRp
bWVyRmlyZUNvdW50ID09IHRpbWVyRmlyZWRDb3VudCkKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c3BpblJ1bkxvb3AoMTApOwotICAgIEVYUEVDVF9UUlVFKHRpbWVyRmlyZWRDb3VudCA+
IGxhc3RUaW1lckZpcmVDb3VudCk7Ci0KLSAgICBhdXRvIHRlc3RSZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0
Lm9yZy8iXV07Ci0gICAgaWQgdGVzdEludGVyYWN0aW9uU3RhdGUgPSBbd2ViVmlldyBpbnRlcmFj
dGlvblN0YXRlXTsKLSAgICBhdXRvIG9yaWdpbmFsVVJMID0gW3dlYlZpZXcgVVJMXTsKLQotICAg
IC8vIFN1c3BlbmQgdGhlIHBhZ2UuCi0gICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107
Ci0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfc3VzcGVuZFBh
Z2U6XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAg
ICAgIGRvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7Ci0KLSAgICAvLyBUaGUgdGltZXIgc2hvdWxkIG5vIGxvbmdlciBiZSBmaXJpbmcuCi0g
ICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENvdW50OwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwMCk7Ci0gICAgRVhQRUNUX0VRKGxhc3RUaW1lckZpcmVD
b3VudCwgdGltZXJGaXJlZENvdW50KTsKLQotICAgIGF1dG8gY2hlY2tUaHJvd3MgPSBbXShGdW5j
dGlvbjx2b2lkKCk+JiYgZikgewotICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgIGYoKTsKLSAg
ICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKLQotICAgIC8vIE1v
c3Qgb3BlcmF0aW9ucyBvbiBXS1dlYlZpZXcgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVu
IHN1c3BlbmRlZC4KLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cubmFtZSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsg
fSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIiXTsgfSkpOwotICAgIEVYUEVDVF9UUlVF
KGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiZm9vIiBiYXNlVVJM
Om5pbF07IH0pKTsKLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBn
b1RvQmFja0ZvcndhcmRMaXN0SXRlbTp3ZWJWaWV3LmdldCgpLmJhY2tGb3J3YXJkTGlzdC5jdXJy
ZW50SXRlbV07IH0pKTsKLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmll
dyByZWxvYWRdOyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZp
ZXcgcmVsb2FkRnJvbU9yaWdpbl07IH0pKTsKLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyBnb0JhY2tdOyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3Mo
WyZdIHsgW3dlYlZpZXcgZ29Gb3J3YXJkXTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhy
b3dzKFsmXSB7IFt3ZWJWaWV3IHN0b3BMb2FkaW5nXTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNo
ZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENv
bXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29tcGxldGlvbkhhbmRsZXI6
bmlsXTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNl
dEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0p
KTsKLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyByZXF1ZXN0TWVk
aWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oV0tNZWRpYVBsYXliYWNrU3Rh
dGUpIHsgfV07IH0pKTsKLSAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmll
dyBzZXRDYW1lcmFDYXB0dXJlU3RhdGU6V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsg
W3dlYlZpZXcgc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTpXS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKLSNpZiBUQVJHRVRfT1NfSVBIT05FCi0g
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgdGFrZVNuYXBzaG90V2l0
aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oVUlJbWFnZSAqc25hcHNob3Qs
IE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7Ci0jZWxzZQotICAgIEVYUEVDVF9UUlVFKGNoZWNr
VGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TSW1hZ2UgKnNuYXBzaG90LCBOU0Vycm9yICplcnJvcikgeyB9
XTsgfSkpOwotI2VuZGlmCi0gICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZp
ZXcgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNE
YXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgeyB9XTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNo
ZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRp
b25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgeyB9XTsgfSkpOwotICAg
IEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkuYWxsb3dzQmFja0Zv
cndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBZRVM7IH0pKTsKLSAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmN1c3RvbVVzZXJBZ2VudCA9IEAiZm9vIjsgfSkp
OwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkuYWxsb3dz
TGlua1ByZXZpZXcgPSBZRVM7IH0pKTsKLSNpZiAhVEFSR0VUX09TX0lQSE9ORQotICAgIEVYUEVD
VF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkuYWxsb3dzTWFnbmlmaWNhdGlv
biA9IFlFUzsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcu
Z2V0KCkubWFnbmlmaWNhdGlvbiA9IDEuMTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhy
b3dzKFsmXSB7IFt3ZWJWaWV3IHNldE1hZ25pZmljYXRpb246MS4xIGNlbnRlcmVkQXRQb2ludDpD
R1BvaW50TWFrZSgwLCAwKV07IH0pKTsKLSNlbmRpZgotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhy
b3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkucGFnZVpvb20gPSAxLjE7IH0pKTsKLSAgICBFWFBFQ1Rf
VFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBmaW5kU3RyaW5nOkAiZm9vIiB3aXRoQ29u
ZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkg
eyB9XTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6dGVzdFJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeyB9XTsgfSkpOwotICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhy
b3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkuaW50ZXJhY3Rpb25TdGF0ZSA9IHRlc3RJbnRlcmFjdGlv
blN0YXRlOyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5n
ZXQoKS5tZWRpYVR5cGUgPSBAInRleHQvaHRtbCI7IH0pKTsKLQotICAgIC8vIFNvbWUgb2YgdGhl
IGJhc2ljIEFQSSBzdGlsbCB3b3Jrcy4KLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJM
XS5hYnNvbHV0ZVN0cmluZywgb3JpZ2luYWxVUkwuYWJzb2x1dGVTdHJpbmcpOwotICAgIEVYUEVD
VF9FUShbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdLmJhY2tJdGVtLCBuaWwpOwotICAgIEVYUEVD
VF9XS19TVFJFUShbd2ViVmlldyB0aXRsZV0sIEAiIik7Ci0gICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IGlzTG9hZGluZ10pOwotICAgIEVYUEVDVF9FUShbd2ViVmlldyBlc3RpbWF0ZWRQcm9ncmVz
c10sIDEuMCk7Ci0gICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGNhbkdvQmFja10pOwotICAgIEVY
UEVDVF9GQUxTRShbd2ViVmlldyBjYW5Hb0ZvcndhcmRdKTsKLSAgICBFWFBFQ1RfRkFMU0UoW3dl
YlZpZXcgaGFzT25seVNlY3VyZUNvbnRlbnRdKTsKLSAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc2Vy
dmVyVHJ1c3RdLCBuaWwpOwotICAgIEVYUEVDVF9FUShbd2ViVmlldyBjYW1lcmFDYXB0dXJlU3Rh
dGVdLCBXS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSk7Ci0gICAgRVhQRUNUX0VRKFt3ZWJWaWV3IG1p
Y3JvcGhvbmVDYXB0dXJlU3RhdGVdLCBXS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSk7Ci0gICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3IGN1c3RvbVVzZXJBZ2VudF0sIEAiIik7Ci0gICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgYWxsb3dzTGlua1ByZXZpZXddKTsKLSNpZiAhVEFSR0VUX09TX0lQSE9O
RQotICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBhbGxvd3NNYWduaWZpY2F0aW9uXSk7Ci0gICAg
RVhQRUNUX0VRKFt3ZWJWaWV3IG1hZ25pZmljYXRpb25dLCAxLjApOwotI2VuZGlmCi0gICAgRVhQ
RUNUX0VRKFt3ZWJWaWV3IHBhZ2Vab29tXSwgMS4wKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcgbWVkaWFUeXBlXSwgQCIiKTsKLSAgICBFWFBFQ1RfRkFMU0UoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgaW50ZXJhY3Rpb25TdGF0ZV07IH0pKTsKLSAgICBFWFBFQ1RfRkFMU0UoY2hl
Y2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgdGhlbWVDb2xvcl07IH0pKTsKLQotICAgIC8vIFJlc3Vt
ZSB0aGUgcGFnZS4KLSAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX3Jlc3VtZVBhZ2U6
XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgICAg
IGRvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7Ci0gICAgW3dlYlZpZXcgYWRkVG9UZXN0V2luZG93XTsKLQotICAgIC8vIFRoZSB0aW1lciBz
aG91bGQgc3RhcnQgZmlyaW5nIGFnYWluLgotICAgIGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVy
RmlyZWRDb3VudDsKLSAgICB3aGlsZSAobGFzdFRpbWVyRmlyZUNvdW50ID09IHRpbWVyRmlyZWRD
b3VudCkKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOwotICAg
IEVYUEVDVF9UUlVFKHRpbWVyRmlyZWRDb3VudCA+IGxhc3RUaW1lckZpcmVDb3VudCk7Ci0KLSAg
ICAvLyBNYWtlIHN1cmUgd2UgZGlkIG5vdCBjcmFzaC4KLSAgICBFWFBFQ1RfRVEocGlkLCBbd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKLX0KLQotVEVTVChQcm9jZXNzU3VzcGVuc2lv
biwgRGVhbGxvY2F0ZVN1c3BlbmRlZFZpZXcpCi17Ci0gICAgLy8gRGVhbGxvY2F0aW5nIGEgc3Vz
cGVuZGVkIFdlYlZpZXcgc2hvdWxkIG5vdCB0aHJvdyBvciBjcmFzaC4KLSAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07Ci0gICAgICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgICAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAgICBbd2ViVmlldyBfc3VzcGVuZFBhZ2U6
XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAg
ICAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIH1dOwotICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwotCi0gICAgICAgIFt3ZWJWaWV3IF9jbG9zZV07Ci0gICAgfQot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0
TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYzYTZiMDRiZDE1ZTAwZDhjYmRiZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRT4KLTxodG1sPgotPGJvZHk+Ci08c2NyaXB0
Pgotc2V0SW50ZXJ2YWwoKCkgPT4gewotICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoJ3RpbWVyIGZpcmVkJyk7Ci19LCA1KTsKLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>