<?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>134224</bug_id>
          
          <creation_ts>2014-06-23 16:13:11 -0700</creation_ts>
          <short_desc>REGRESSION(r170323): lots of build breakage (Requested by bradeeoh on #webkit).</short_desc>
          <delta_ts>2014-06-23 16:17:28 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134178</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1017740</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-23 16:13:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170323 broke the build:
lots of build breakage (Requested by bradeeoh on #webkit).

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>1017742</commentid>
    <comment_count>1</comment_count>
      <attachid>233647</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-23 16:13:46 -0700</bug_when>
    <thetext>Created attachment 233647
ROLLOUT of r170323

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 rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout 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>1017751</commentid>
    <comment_count>2</comment_count>
      <attachid>233647</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-23 16:17:25 -0700</bug_when>
    <thetext>Comment on attachment 233647
ROLLOUT of r170323

Clearing flags on attachment: 233647

Committed r170332: &lt;http://trac.webkit.org/changeset/170332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017753</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-23 16:17:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233647</attachid>
            <date>2014-06-23 16:13:46 -0700</date>
            <delta_ts>2014-06-23 16:17:25 -0700</delta_ts>
            <desc>ROLLOUT of r170323</desc>
            <filename>bug-134224-20140623161325.patch</filename>
            <type>text/plain</type>
            <size>74640</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQyYWNlMzdiMDNlZDQx
MjNlYjBlMjNjMjQ3MTVhZjg3MDY1MWY3NS4uZDVhOWIxOGM0ZWJlYTViMzRhMTVlM2M3OGU3OGJh
NTk5ZWY5NWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA2LTIzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTcwMzIzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM0MjI0CisKKyAgICAgICAgbG90cyBvZiBidWlsZCBicmVha2FnZSAo
UmVxdWVzdGVkIGJ5IGJyYWRlZW9oIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiW01hY10gcHJvY2VzcyByYXcgVlRUIGluLWJhbmQgY2FwdGlv
bnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQx
NzgKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTcwMzIzCisKIDIw
MTQtMDYtMTkgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRh
YmFzZSBwcm9jZXNzIGNyYXNoZXMgd2hlbiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgYXR0ZW1wdCB0
byBydW4gYXQgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3MjZjMTkwZGQzMjU1MTMxM2I1
N2Q1NmE3NzliYWQwNzdiYTNlYmVhLi4xYzdjYTZkM2FiZjczNDEyYTk3M2QzMmM3ZjI4NGY5M2Q2
MzA2OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjA5MCw3ICsyMDkwLDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6
ZS5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9JU09WVFRDdWUuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0Qm94RXh0ZW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lP
Uy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xz
aU9TLmpzCmluZGV4IGJjMTdkNjUzZDY3ODEzY2FlZTQzNmUxZWUzM2VlOWQ2NmE4YzI1ZWYuLjgw
N2ZkZWI3YzYzNjIxNjdiYTA1MzM2YzRiM2MwZjY5NDhiMzNkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpz
CkBAIC0zMjAsNyArMzIwLDcgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBpZiAodGhpcy5oaWRlVGltZXIpCiAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuaGlkZVRpbWVyKTsKICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVyID0gc2V0VGltZW91dCh0
aGlzLmhpZGVDb250cm9scy5iaW5kKHRoaXMpLCB0aGlzLkhpZGVDb250cm9sc0RlbGF5KTsKLSAg
ICAgICAgfSBlbHNlIGlmICh0aGlzLmNhblBsYXkoKSkKKyAgICAgICAgfSBlbHNlIGlmICghdGhp
cy5jYW5QbGF5KCkpCiAgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygpOwogICAgIH0sCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IGY4ODNmZmQ1N2IwYmQ5YTc1M2FmNDEzNzc2NjhhODQxMmNmYTk4NTUuLmRlOTVlY2EyMjM2YjQ0
MTdhOTY3YmEyNDg1M2VkNWM3NWRlZGZhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzI1Niw3ICs3MjU2LDYgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEZpbGVDaG9vc2VyLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEZpbGVTdHJlYW0uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cRmlsZVN5c3RlbS5jcHAiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJU09WVFRDdWUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVkaW9TZXNzaW9uLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXE1lZGlhU2Vzc2lv
bi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxhdWRpb1xNZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcCIgLz4KQEAgLTE5NDM4LDcgKzE5NDM3LDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEludFJlY3QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEludFNpemUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEludFNpemVIYXNoLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJU09WVFRD
dWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXExh
eW91dEJveEV4dGVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcTGF5b3V0UG9pbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXExheW91dFJlY3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NjFkYmI3ZGM3NmU5MDY3NDY5
NjdhY2ZiZGE1NWQ1MjZhNGM2NjgwLi45NTRhNGY3YjhjZTg4Nzk1OWY3OGYyYmIwOGQwYWY3OTE5
MWZiNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMTQsOCArMzE0LDYgQEAKIAkJMDdBQjk5NkIxOERBM0MwMTAwMTg3NzFF
IC8qIFJUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdBQjk5NjcxOERBM0MwMTAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZlci5oICovOyB9
OwogCQkwN0FCOTk2RjE4REEzQzc0MDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvblByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUI5OTZE
MThEQTNDNzQwMDE4NzcxRSAvKiBSVENDb25maWd1cmF0aW9uUHJpdmF0ZS5oICovOyB9OwogCQkw
N0FCOTk3MDE4REEzQzc0MDAxODc3MUUgLyogUlRDSWNlU2VydmVyUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBQjk5NkUxOERBM0M3NDAw
MTg3NzFFIC8qIFJUQ0ljZVNlcnZlclByaXZhdGUuaCAqLzsgfTsKLQkJMDdBQzQ3MDExOTUyMTAy
MTAwRUU5NzIzIC8qIElTT1ZUVEN1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0FDNDZGRjE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmNw
cCAqLzsgfTsKLQkJMDdBQzQ3MDIxOTUyMTAyMTAwRUU5NzIzIC8qIElTT1ZUVEN1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBQzQ3MDAxOTUyMTAy
MTAwRUU5NzIzIC8qIElTT1ZUVEN1ZS5oICovOyB9OwogCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRD
MzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OwogCQkwN0I0NDJENjE2NkM3MEIwMDA1NTZD
QUQgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I0NDJENDE2NkM3MEIwMDA1NTZDQUQgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87IH07CiAJCTA3QjQ0MkQ3MTY2QzcwQjAwMDU1
NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I0NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03MjEwLDggKzcyMDgsNiBAQAogCQkwN0FCOTk2ODE4REEzQzAx
MDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENJ
Y2VTZXJ2ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FCOTk2RDE4REEz
Qzc0MDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvblByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUlRDQ29uZmlndXJhdGlvblByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdBQjk5NkUxOERBM0M3NDAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZl
clByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDSWNlU2VydmVy
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0FDNDZGRjE5NTIxMDIx
MDBFRTk3MjMgLyogSVNPVlRUQ3VlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IElTT1ZUVEN1ZS5jcHA7IHBhdGggPSBJU09WVFRDdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwN0FDNDcwMDE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElTT1ZUVEN1ZS5oOyBwYXRoID0gSVNP
VlRUQ3VlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjAxMTNFMTAzMjI0MjIw
MEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0I0NDJENDE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdCNDQyRDUxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0MTQsOCArMjA0MTAs
NiBAQAogCQkJCTJENDZGMDRGMTdCOTZGRDIwMDU2NDdGMCAvKiBJbnRTaXplLmNwcCAqLywKIAkJ
CQlCMjc1MzU0NzBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZS5oICovLAogCQkJCUIyNzUzNTQ4
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oICovLAotCQkJCTA3QUM0NkZGMTk1MjEw
MjEwMEVFOTcyMyAvKiBJU09WVFRDdWUuY3BwICovLAotCQkJCTA3QUM0NzAwMTk1MjEwMjEwMEVF
OTcyMyAvKiBJU09WVFRDdWUuaCAqLywKIAkJCQk2NUNDNkJFRDE2MDE0RUMwMDAwRUQyN0QgLyog
TGF0aW4xVGV4dEl0ZXJhdG9yLmggKi8sCiAJCQkJMTQxREMwNDkxNjQ4MzRCOTAwMzcxRTVBIC8q
IExheW91dEJveEV4dGVudC5jcHAgKi8sCiAJCQkJMTQxREMwNEExNjQ4MzRCOTAwMzcxRTVBIC8q
IExheW91dEJveEV4dGVudC5oICovLApAQCAtMjQ5MjEsNyArMjQ5MTUsNiBAQAogCQkJCUUxRkY4
RjY1MTgwNzQ1RDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI0RDkxMjkyMTNDQTk1MUUwMEQyMTkxNSAvKiBKU1NWR0FsdEdseXBoRGVmRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDdBQzQ3MDIxOTUyMTAyMTAwRUU5NzIzIC8qIElT
T1ZUVEN1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNUVDOTIwRDk3MjNGRjAwNjNENDlBIC8q
IEpTU1ZHQWx0R2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5MTI5NjEzQ0E5
NTYxMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyRjY5OTBBQjc3MTk1MDAyMkVGQUQgLyogSlNTVkdBbmdsZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yOTUxMCw3ICsyOTUwMyw2IEBACiAJCQkJQjIyMjdBNTMwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTU2MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQYXJzZXJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRDNjc4
NEMxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTA3QUM0NzAxMTk1MjEwMjEwMEVFOTcyMyAvKiBJU09WVFRDdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODQ3NkM5RUExMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg0MTlEMkE4MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQxOUQyQUMxMjBEOTJGQzAw
MTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVyLmgKaW5kZXggOGFh
Y2Q4MTliZDgzNDJmNTM4NWFhNTU4NDg4OTk2N2Q3YzQ1ZjRjZi4uZGYzYTc0OTZmNGVlNTg0MTRm
ZTZhOTZhMmUxMjQ4ZjY2NWMxYTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0J1ZmZlcmVkTGluZVJlYWRlci5oCkBAIC02OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgRU9TIGhhcyBiZWVuIHJlYWNoZWQgcHJvcGVyLgogICAgIGJvb2wgaXNB
dEVuZE9mU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZlN0cmVhbSAmJiBtX2J1ZmZlci5p
c0VtcHR5KCk7IH0KIAotICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyLmNsZWFyKCk7IH0KLQog
cHJpdmF0ZToKICAgICAvLyBDb25zdW1lIHRoZSBuZXh0IGNoYXJhY3RlciB0aGUgYnVmZmVyIGlm
IGl0IGlzIHRoZSBjaGFyYWN0ZXIgfGN8LgogICAgIHZvaWQgc2NhbkNoYXJhY3RlcihVQ2hhciBj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRU
cmFjay5jcHAKaW5kZXggMDJiN2U5NjgzYzRmMTc4MTllYWM4Y2I5OTU1ZmNjNTZhODk0NjVkYS4u
Y2EzOWRhYmFiOTNlOGY0NTk0Y2ZlMjMyNGM5MWIxODE4N2Q3NGJkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYs
MTAgKzM2LDYgQEAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCi0jaWYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQotI2luY2x1ZGUgIlZUVFJlZ2lvbkxp
c3QuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEdlbmVyaWNUZXh0VHJhY2tD
dWVNYXA6OkdlbmVyaWNUZXh0VHJhY2tDdWVNYXAoKQpAQCAtMTk0LDU5ICsxOTAsNiBAQCB2b2lk
IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqIGN1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgVGV4dFRyYWNrOjpyZW1vdmVDdWUoY3VlLCBlYyk7CiB9CiAK
LVdlYlZUVFBhcnNlciYgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKCkKLXsKLSAgICBp
ZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2Vy
OwotfQotCi12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlKiB0cmFja1ByaXZhdGUsIGNvbnN0IElTT1dlYlZUVEN1ZSYg
Y3VlRGF0YSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHRyYWNrUHJpdmF0ZSwgdHJhY2tQcml2YXRl
ID09IG1fcHJpdmF0ZSk7Ci0gICAgcGFyc2VyKCkucGFyc2VDdWVEYXRhKGN1ZURhdGEpOwotfQot
Ci12b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlV2ViVlRURmlsZUhlYWRlcihJbmJh
bmRUZXh0VHJhY2tQcml2YXRlKiB0cmFja1ByaXZhdGUsIFN0cmluZyBoZWFkZXIpCi17Ci0gICAg
QVNTRVJUX1VOVVNFRCh0cmFja1ByaXZhdGUsIHRyYWNrUHJpdmF0ZSA9PSBtX3ByaXZhdGUpOwot
ICAgIHBhcnNlcigpLnBhcnNlRmlsZUhlYWRlcihoZWFkZXIpOwotfQotCi12b2lkIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQoKQotewotICAgIFZlY3RvcjxSZWZQdHI8V2Vi
VlRUQ3VlRGF0YT4+IGN1ZXM7Ci0gICAgcGFyc2VyKCkuZ2V0TmV3Q3VlcyhjdWVzKTsKLQotICAg
IGZvciAoYXV0byYgY3VlRGF0YSA6IGN1ZXMpIHsKLSAgICAgICAgUmVmUHRyPFZUVEN1ZT4gdnR0
Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEp
OwotCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9y
ZUR1cmF0aW9uKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJpY1RleHRU
cmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4y
ZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRD
dWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYWRkQ3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFT
U0VSVF9OT19FWENFUFRJT04pOwotICAgIH0KLX0KLQotI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9O
UykKLXZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6bmV3UmVnaW9uc1BhcnNlZCgpCi17Ci0g
ICAgVmVjdG9yPFJlZlB0cjxWVFRSZWdpb24+PiBuZXdSZWdpb25zOwotICAgIHBhcnNlcigpLmdl
dE5ld1JlZ2lvbnMobmV3UmVnaW9ucyk7Ci0KLSAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG5ld1Jl
Z2lvbnMpIHsKLSAgICAgICAgcmVnaW9uLT5zZXRUcmFjayh0aGlzKTsKLSAgICAgICAgcmVnaW9u
cygpLT5hZGQocmVnaW9uKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQotdm9pZCBJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSgpCi17Ci0gICAgTE9HKE1lZGlhLCAiRXJyb3Ig
cGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5l
cmljVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNU
ZXh0VHJhY2suaAppbmRleCBkMDFmYTgzZGU2YjczZGE2YTUxMDhlNWIyMzJiN2Q5NTcxMmFmMjBm
Li5iMDJiZDg3NzZkOTc5ZjU3ODkxYzc3MmI0ZDc2YTgyZDUzZDkwNjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJU
ZXh0VHJhY2tDdWVHZW5lcmljLmgiCi0jaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgQ3VlRGF0YVRvQ3VlTWFwIG1fZGF0YVRvQ3VlTWFwOwogfTsKIAotY2xh
c3MgSW5iYW5kR2VuZXJpY1RleHRUcmFjayA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2ssIHByaXZh
dGUgV2ViVlRUUGFyc2VyQ2xpZW50IHsKK2NsYXNzIEluYmFuZEdlbmVyaWNUZXh0VHJhY2sgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bmJhbmRHZW5lcmljVGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRl
eHRUcmFja0NsaWVudCosIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOwogICAg
IHZpcnR1YWwgfkluYmFuZEdlbmVyaWNUZXh0VHJhY2soKTsKQEAgLTc2LDE4ICs3NSw3IEBAIHBy
aXZhdGU6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPiBjcmVhdGVDdWUoUGFz
c1JlZlB0cjxHZW5lcmljQ3VlRGF0YT4pOwogICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEo
VGV4dFRyYWNrQ3VlR2VuZXJpYyosIEdlbmVyaWNDdWVEYXRhKik7CiAKLSAgICBXZWJWVFRQYXJz
ZXImIHBhcnNlcigpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IElTT1dlYlZUVEN1ZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSos
IFN0cmluZykgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpIG92
ZXJyaWRlOwotI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLSAgICB2aXJ0dWFsIHZvaWQgbmV3
UmVnaW9uc1BhcnNlZCgpIG92ZXJyaWRlOwotI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGZpbGVG
YWlsZWRUb1BhcnNlKCkgb3ZlcnJpZGU7Ci0KICAgICBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwIG1f
Y3VlTWFwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJWVFRQYXJzZXI+IG1fd2ViVlRUUGFyc2Vy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggYmIyNDA0ZDcwYzFiMGZlZmIyOWZhMmY4ZDY0NTk5
NDU0MWQyOTg5Yy4uMmIzZmYxYTFkZTdiOTgxZDFhYjAzYmNjMDFkMzhkODcxYWYxMzhkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCkBAIC04MSwxMCAr
ODEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlKiwgR2VuZXJpY0N1ZURhdGEqKSBvdmVycmlkZSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKElu
YmFuZFRleHRUcmFja1ByaXZhdGUqLCBTdHJpbmcpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKEluYmFuZFRleHRU
cmFja1ByaXZhdGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKEluYmFu
ZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBJU09XZWJWVFRDdWUmKSBvdmVycmlkZSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0KICAgICB2aXJ0dWFsIGRvdWJsZSBzdGFydFRpbWVWYXJpYW5j
ZSgpIGNvbnN0OwogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRl
eCBjYWY3Nzg3NzlhOGViZmI4MjBiMmY0MGU3ZjM0MGM2Y2E5NzZmNTQxLi4xMjY4ZDk1NzhiZDA0
ZTRjZTE4YWNlN2JmMjhlNTk0YzE3YjA5NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC0zNCwxMCArMzQsNiBAQAog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCi0jaWYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQotI2luY2x1ZGUgIlZUVFJlZ2lvbkxpc3Qu
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrPiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlPiBwbGF5ZXJQcml2YXRlKQpAQCAtNTQsNTcgKzUwLDQyIEBAIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRUcmFjaygpCiB7CiB9CiAKLVdlYlZU
VFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQotewotICAgIGlmICghbV93
ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7Ci19Ci0K
IHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEoSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZSogdHJhY2tQcml2YXRlLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0cmFja1ByaXZhdGUsIHRyYWNrUHJpdmF0ZSA9
PSBtX3ByaXZhdGUpOwotICAgIHBhcnNlcigpLnBhcnNlQnl0ZXMoZGF0YSwgbGVuZ3RoKTsKLX0K
LQotdm9pZCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlKiB0cmFja1ByaXZhdGUsIGNvbnN0IElTT1dlYlZUVEN1ZSYgY3VlRGF0
YSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHRyYWNrUHJpdmF0ZSwgdHJhY2tQcml2YXRlID09IG1f
cHJpdmF0ZSk7Ci0gICAgcGFyc2VyKCkucGFyc2VDdWVEYXRhKGN1ZURhdGEpOworICAgIGlmICgh
bV93ZWJWVFRQYXJzZXIpCisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fd2ViVlRUUGFyc2VyLT5wYXJzZUJ5dGVz
KGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVz
UGFyc2VkKCkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFdlYlZUVEN1ZURhdGE+PiBjdWVzOwotICAg
IHBhcnNlcigpLmdldE5ld0N1ZXMoY3Vlcyk7Ci0KLSAgICBmb3IgKGF1dG8mIGN1ZURhdGEgOiBj
dWVzKSB7Ci0gICAgICAgIFJlZlB0cjxWVFRDdWU+IHZ0dEN1ZSA9IFZUVEN1ZTo6Y3JlYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpjdWVEYXRhKTsKLQotICAgICAgICBpZiAoaGFzQ3Vl
KHZ0dEN1ZS5nZXQoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKLSAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25v
cmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIl
c1wiXG4iLCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50
ZXh0KCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV93ZWJWVFRQYXJzZXItPmdldE5ld0N1ZXMoY3Vl
cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdWVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIFJlZlB0cjxXZWJWVFRDdWVEYXRhPiBjdWVEYXRhID0gY3Vlc1tpXTsKKyAgICAgICAgUmVm
UHRyPFZUVEN1ZT4gY3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgY3VlRGF0YS0+c3RhcnRUaW1lKCksIGN1ZURhdGEtPmVuZFRpbWUoKSwgY3VlRGF0YS0+Y29u
dGVudCgpKTsKKyAgICAgICAgY3VlLT5zZXRJZChjdWVEYXRhLT5pZCgpKTsKKyAgICAgICAgY3Vl
LT5zZXRDdWVTZXR0aW5ncyhjdWVEYXRhLT5zZXR0aW5ncygpKTsKKworICAgICAgICBpZiAoaGFz
Q3VlKGN1ZS5nZXQoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKKyAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25v
cmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIl
c1wiXG4iLCBjdWVEYXRhLT5zdGFydFRpbWUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLCBjdWVEYXRh
LT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgYWRkQ3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04p
OworICAgICAgICBhZGRDdWUoY3VlLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAg
ICAgfQogfQogICAgIAogI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKIHZvaWQgSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpuZXdSZWdpb25zUGFyc2VkKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFZU
VFJlZ2lvbj4+IG5ld1JlZ2lvbnM7Ci0gICAgcGFyc2VyKCkuZ2V0TmV3UmVnaW9ucyhuZXdSZWdp
b25zKTsKLQotICAgIGZvciAoYXV0byYgcmVnaW9uIDogbmV3UmVnaW9ucykgewotICAgICAgICBy
ZWdpb24tPnNldFRyYWNrKHRoaXMpOwotICAgICAgICByZWdpb25zKCktPmFkZChyZWdpb24pOwot
ICAgIH0KKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogI2VuZGlmCiAgICAgCiB2b2lkIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6ZmlsZUZhaWxlZFRvUGFyc2UoKQogewotICAgIExPRyhNZWRpYSwg
IkVycm9yIHBhcnNpbmcgV2ViVlRUIHN0cmVhbS4iKTsKKyAgICBMT0coTWVkaWEsICJVbmFibGUg
dG8gcGFyc2UgV2ViVlRUIHN0cmVhbS4iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgK
aW5kZXggYWJiYmRkODVlZmRjODk5MTI5OWI0ZDVlMzkxZjEyYzA3MTJlNDhmNS4uNTk2NmM0YmJk
ZWUxNGZmM2FiNDM0NTRkNTk0MzUwYWRiOGNkNzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC00Myw5ICs0Myw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGU+KTsKIAotICAgIFdlYlZUVFBhcnNlciYgcGFyc2VyKCk7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlV2ViVlRUQ3VlRGF0YShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBJU09XZWJWVFRDdWUm
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCkgb3ZlcnJpZGU7
CiAjaWYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKaW5kZXggNGIxYjIwN2JlNTFlYjQ0YjY1YTEw
OWM2ZjJiNTEwZTBlMzQyNzE3Mi4uZTUyMjRkNGI4ZGYxMWFkMGUzOTljNDNmMTNiMGMzMzZiZTA3
YTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdl
bmVyaWMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
VGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgVlRUQ3VlQm94IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxl
bWVudD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3Vl
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWVHZW5lcmljKiBjdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVt
ZW50KGRvY3VtZW50LCBjdWUpKTsKICAgICB9CkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpIG92ZXJy
aWRlOwogICAgIAogcHJpdmF0ZToKLSAgICBUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudChE
b2N1bWVudCYsIFZUVEN1ZSYpOworICAgIFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50KERv
Y3VtZW50JiwgVlRUQ3VlKik7CiB9OwogCi1UZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudDo6
VGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUm
IGN1ZSkKK1RleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjpUZXh0VHJhY2tDdWVHZW5lcmlj
Qm94RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFZUVEN1ZSogY3VlKQogICAgIDogVlRUQ3Vl
Qm94KGRvY3VtZW50LCBjdWUpCiB7CiB9CkBAIC0xMTgsNyArMTE4LDcgQEAgVGV4dFRyYWNrQ3Vl
R2VuZXJpYzo6VGV4dFRyYWNrQ3VlR2VuZXJpYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBkb3VibGUKIAogUGFzc1JlZlB0cjxWVFRDdWVCb3g+IFRleHRUcmFja0N1ZUdlbmVyaWM6
OmNyZWF0ZURpc3BsYXlUcmVlKCkKIHsKLSAgICByZXR1cm4gVGV4dFRyYWNrQ3VlR2VuZXJpY0Jv
eEVsZW1lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCksICp0aGlzKTsKKyAgICByZXR1cm4gVGV4
dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCksIHRoaXMp
OwogfQogCiB2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnNldExpbmUoaW50IGxpbmUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDk1ODky
ZDQ1ZGRiMzAzMjA0ZTBiYzY1MzIzODUzMWEyNzYxMTg1MTEuLjUwMjgwNGIxNWIyNmUwNGIxMDgy
YTA0ZTk1ZGQ1N2M3ZWFhMWY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAK
QEAgLTExOSwxNCArMTE5LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5n
UmlnaHRLZXl3b3JkKCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNz
UmVmUHRyPFZUVEN1ZUJveD4gVlRUQ3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBW
VFRDdWUmIGN1ZSkKLXsKLSAgICBWVFRDdWVCb3gqIGN1ZUJveCA9IG5ldyBWVFRDdWVCb3goZG9j
dW1lbnQsIGN1ZSk7Ci0gICAgY3VlQm94LT5zZXRQc2V1ZG8oVlRUQ3VlQm94Ojp2dHRDdWVCb3hT
aGFkb3dQc2V1ZG9JZCgpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYoY3VlQm94KTsKLX0KLQotVlRU
Q3VlQm94OjpWVFRDdWVCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKK1ZUVEN1
ZUJveDo6VlRUQ3VlQm94KERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3VlKiBjdWUpCiAgICAgOiBI
VE1MRWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogICAgICwgbV9jdWUoY3VlKQogewpAQCAtMTM1
LDE0ICsxMjgsMTQgQEAgVlRUQ3VlQm94OjpWVFRDdWVCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBW
VFRDdWUmIGN1ZSkKIAogVlRUQ3VlKiBWVFRDdWVCb3g6OmdldEN1ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICZtX2N1ZTsKKyAgICByZXR1cm4gbV9jdWU7CiB9CiAKIHZvaWQgVlRUQ3VlQm94Ojph
cHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpCiB7CiAgICAgLy8gRklYTUU6IEFwcGx5
IGFsbCB0aGUgaW5pdGlhbCBDU1MgcG9zaXRpb25pbmcgcHJvcGVydGllcy4gaHR0cDovL3drYi51
Zy83OTkxNgogI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLSAgICBpZiAoIW1fY3VlLnJlZ2lv
bklkKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFtX2N1ZS0+cmVnaW9uSWQoKS5pc0VtcHR5KCkp
IHsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBD
U1NWYWx1ZVJlbGF0aXZlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1NywxMiArMTUw
LDEyIEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYp
CiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NW
YWx1ZVdlYmtpdFBsYWludGV4dCk7CiAKICAgICAvLyB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkg
bXVzdCBiZSBzZXQgdG8gZGlyZWN0aW9uCi0gICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgbV9jdWUuZ2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpKTsKKyAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBtX2N1ZS0+Z2V0Q1NT
V3JpdGluZ0RpcmVjdGlvbigpKTsKIAogICAgIC8vIHRoZSAnd3JpdGluZy1tb2RlJyBwcm9wZXJ0
eSBtdXN0IGJlIHNldCB0byB3cml0aW5nLW1vZGUKLSAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUsIG1fY3VlLmdldENTU1dyaXRpbmdNb2RlKCks
IGZhbHNlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0V3Jp
dGluZ01vZGUsIG1fY3VlLT5nZXRDU1NXcml0aW5nTW9kZSgpLCBmYWxzZSk7CiAKLSAgICBzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiBwb3NpdGlvbiA9IG1fY3VlLmdldENTU1Bvc2l0aW9uKCk7Cisg
ICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcG9zaXRpb24gPSBtX2N1ZS0+Z2V0Q1NTUG9zaXRp
b24oKTsKIAogICAgIC8vIHRoZSAndG9wJyBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byB0b3AsCiAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihwb3NpdGlvbi5zZWNvbmQpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
OwpAQCAtMTcxLDIxICsxNjQsMjEgQEAgdm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGll
cyhjb25zdCBJbnRTaXplJikKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TGVmdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbi5maXJzdCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAKICAgICAvLyB0aGUgJ3dpZHRoJyBwcm9wZXJ0eSBtdXN0
IGJlIHNldCB0byB3aWR0aCwgYW5kIHRoZSAnaGVpZ2h0JyBwcm9wZXJ0eSAgbXVzdCBiZSBzZXQg
dG8gaGVpZ2h0Ci0gICAgaWYgKG1fY3VlLnZlcnRpY2FsKCkgPT0gaG9yaXpvbnRhbEtleXdvcmQo
KSkgewotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHN0
YXRpY19jYXN0PGRvdWJsZT4obV9jdWUuZ2V0Q1NTU2l6ZSgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKKyAgICBpZiAobV9jdWUtPnZlcnRpY2FsKCkgPT0gaG9yaXpvbnRh
bEtleXdvcmQoKSkgeworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgsIHN0YXRpY19jYXN0PGRvdWJsZT4obV9jdWUtPmdldENTU1NpemUoKSksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlIZWlnaHQsIENTU1ZhbHVlQXV0byk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8p
OwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fY3VlLmdldENTU1NpemUoKSksICBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5SGVpZ2h0LCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fY3VlLT5nZXRDU1NTaXplKCkpLCAgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9CiAKICAgICAvLyBUaGUgJ3Rl
eHQtYWxpZ24nIHByb3BlcnR5IG9uIHRoZSAocm9vdCkgTGlzdCBvZiBXZWJWVFQgTm9kZSBPYmpl
Y3RzIG11c3QKICAgICAvLyBiZSBzZXQgdG8gdGhlIHZhbHVlIGluIHRoZSBzZWNvbmQgY2VsbCBv
ZiB0aGUgcm93IG9mIHRoZSB0YWJsZSBiZWxvdwogICAgIC8vIHdob3NlIGZpcnN0IGNlbGwgaXMg
dGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGN1ZSdzIHRleHQgdHJhY2sgY3VlCiAgICAg
Ly8gYWxpZ25tZW50OgotICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0
QWxpZ24sIG1fY3VlLmdldENTU0FsaWdubWVudCgpKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBtX2N1ZS0+Z2V0Q1NTQWxpZ25tZW50KCkpOwogCi0g
ICAgaWYgKCFtX2N1ZS5zbmFwVG9MaW5lcygpKSB7CisgICAgaWYgKCFtX2N1ZS0+c25hcFRvTGlu
ZXMoKSkgewogICAgICAgICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5OgogICAgICAgICAvLyBO
b3RlOiB4IGFuZCB5IGFyZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQgYW5kIHRvcCBhYm92ZS4K
IApAQCAtMjE2LDMzICsyMDksMjMgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJv
eDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHMKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzUmVmUHRyPFZUVEN1ZT4gVlRUQ3VlOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBWVFRDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgY29udGVudCkpOwotfQotCi1QYXNzUmVmUHRy
PFZUVEN1ZT4gVlRUQ3VlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgV2ViVlRUQ3VlRGF0YSYgZGF0YSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZU
VEN1ZShjb250ZXh0LCBkYXRhKSk7Ci19Ci0KIFZUVEN1ZTo6VlRUQ3VlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50KQogICAgIDogVGV4dFRyYWNrQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQpCiAgICAg
LCBtX2NvbnRlbnQoY29udGVudCkKKyAgICAsIG1fbGluZVBvc2l0aW9uKHVuZGVmaW5lZFBvc2l0
aW9uKQorICAgICwgbV9jb21wdXRlZExpbmVQb3NpdGlvbih1bmRlZmluZWRQb3NpdGlvbikKKyAg
ICAsIG1fdGV4dFBvc2l0aW9uKDUwKQorICAgICwgbV9jdWVTaXplKDEwMCkKKyAgICAsIG1fd3Jp
dGluZ0RpcmVjdGlvbihIb3Jpem9udGFsKQorICAgICwgbV9jdWVBbGlnbm1lbnQoTWlkZGxlKQor
ICAgICwgbV93ZWJWVFROb2RlVHJlZShudWxscHRyKQorICAgICwgbV9jdWVCYWNrZ3JvdW5kQm94
KEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcsIHRvRG9jdW1lbnQoY29udGV4dCkpKQor
ICAgICwgbV9kaXNwbGF5RGlyZWN0aW9uKENTU1ZhbHVlTHRyKQorICAgICwgbV9kaXNwbGF5U2l6
ZSgwKQorICAgICwgbV9zbmFwVG9MaW5lcyh0cnVlKQorICAgICwgbV9kaXNwbGF5VHJlZVNob3Vs
ZENoYW5nZSh0cnVlKQorICAgICwgbV9ub3RpZnlSZWdpb24odHJ1ZSkKIHsKLSAgICBpbml0aWFs
aXplKGNvbnRleHQpOwotfQotCi1WVFRDdWU6OlZUVEN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBXZWJWVFRDdWVEYXRhJiBjdWVEYXRhKQotICAgIDogVGV4dFRyYWNr
Q3VlKGNvbnRleHQsIDAsIDApCi17Ci0gICAgaW5pdGlhbGl6ZShjb250ZXh0KTsKLSAgICBzZXRU
ZXh0KGN1ZURhdGEuY29udGVudCgpKTsKLSAgICBzZXRTdGFydFRpbWUoY3VlRGF0YS5zdGFydFRp
bWUoKSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgc2V0RW5kVGltZShjdWVEYXRhLmVuZFRpbWUo
KSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgc2V0SWQoY3VlRGF0YS5pZCgpKTsKLSAgICBzZXRD
dWVTZXR0aW5ncyhjdWVEYXRhLnNldHRpbmdzKCkpOwotICAgIG1fb3JpZ2luYWxTdGFydFRpbWUg
PSBjdWVEYXRhLm9yaWdpbmFsU3RhcnRUaW1lKCk7CiB9CiAKIFZUVEN1ZTo6flZUVEN1ZSgpCkBA
IC0yNTMsMjcgKzIzNiw5IEBAIFZUVEN1ZTo6flZUVEN1ZSgpCiAgICAgZGlzcGxheVRyZWVJbnRl
cm5hbCgpLT5yZW1vdmUoQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKLXZvaWQgVlRUQ3VlOjpp
bml0aWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgbV9saW5l
UG9zaXRpb24gPSB1bmRlZmluZWRQb3NpdGlvbjsKLSAgICBtX2NvbXB1dGVkTGluZVBvc2l0aW9u
ID0gdW5kZWZpbmVkUG9zaXRpb247Ci0gICAgbV90ZXh0UG9zaXRpb24gPSA1MDsKLSAgICBtX2N1
ZVNpemUgPSAxMDA7Ci0gICAgbV93cml0aW5nRGlyZWN0aW9uID0gSG9yaXpvbnRhbDsKLSAgICBt
X2N1ZUFsaWdubWVudCA9IE1pZGRsZTsKLSAgICBtX3dlYlZUVE5vZGVUcmVlID0gbnVsbHB0cjsK
LSAgICBtX2N1ZUJhY2tncm91bmRCb3ggPSBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFn
LCB0b0RvY3VtZW50KGNvbnRleHQpKTsKLSAgICBtX2Rpc3BsYXlEaXJlY3Rpb24gPSBDU1NWYWx1
ZUx0cjsKLSAgICBtX2Rpc3BsYXlTaXplID0gMDsKLSAgICBtX3NuYXBUb0xpbmVzID0gdHJ1ZTsK
LSAgICBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gdHJ1ZTsKLSAgICBtX25vdGlmeVJlZ2lv
biA9IHRydWU7Ci0gICAgbV9vcmlnaW5hbFN0YXJ0VGltZSA9IDA7Ci19Ci0KIFBhc3NSZWZQdHI8
VlRUQ3VlQm94PiBWVFRDdWU6OmNyZWF0ZURpc3BsYXlUcmVlKCkKIHsKLSAgICByZXR1cm4gVlRU
Q3VlQm94OjpjcmVhdGUob3duZXJEb2N1bWVudCgpLCAqdGhpcyk7CisgICAgcmV0dXJuIFZUVEN1
ZUJveDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSwgdGhpcyk7CiB9CiAKIFZUVEN1ZUJveCogVlRU
Q3VlOjpkaXNwbGF5VHJlZUludGVybmFsKCkKQEAgLTczNCw3ICs2OTksNiBAQCB2b2lkIFZUVEN1
ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBkb3VibGUgcHJl
dmlvdXNUaW1lc3RhbQogICAgICAgICAgICAgYm9vbCBjaGVjayA9IFdlYlZUVFBhcnNlcjo6Y29s
bGVjdFRpbWVTdGFtcChjaGlsZC0+bm9kZVZhbHVlKCksIGN1cnJlbnRUaW1lc3RhbXApOwogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjaGVjaywgY2hlY2spOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjdXJyZW50VGltZXN0YW1wICs9IG1fb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAg
ICAgICBpZiAoY3VycmVudFRpbWVzdGFtcCA+IG1vdmllVGltZSkKICAgICAgICAgICAgICAgICBp
c1Bhc3ROb2RlID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTkyMCw5ICs4ODQsNiBAQCBzdGF0aWMg
Ym9vbCBzY2FuUGVyY2VudGFnZShWVFRTY2FubmVyJiBpbnB1dCwgY29uc3QgVlRUU2Nhbm5lcjo6
UnVuJiB2YWx1ZVJ1biwgaQogCiB2b2lkIFZUVEN1ZTo6c2V0Q3VlU2V0dGluZ3MoY29uc3QgU3Ry
aW5nJiBpbnB1dFN0cmluZykKIHsKLSAgICBpZiAoaW5wdXRTdHJpbmcuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBWVFRTY2FubmVyIGlucHV0KGlucHV0U3RyaW5nKTsKIAogICAg
IHdoaWxlICghaW5wdXQuaXNBdEVuZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaApp
bmRleCBlMTU2NzQ2ZjNmYThmZTc2YWE1Y2EwOWJiNjYxYmZiYTcxN2I5MzJlLi45NDdhY2U2MTBk
YzU4YzA3NzE1ODgxY2JlZTZkYWZiMTU5OTdmMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmgKQEAgLTQ2LDEzICs0NiwxNSBAQCBjbGFzcyBIVE1MU3BhbkVsZW1lbnQ7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVlRUQ3VlOwogY2xhc3MgVlRUU2Nhbm5lcjsK
LWNsYXNzIFdlYlZUVEN1ZURhdGE7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogY2xhc3MgVlRUQ3VlQm94IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxWVFRDdWVCb3g+IGNyZWF0ZShEb2N1bWVudCYsIFZUVEN1ZSYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZUVEN1ZUJveD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgVlRUQ3VlKiBjdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZUVEN1
ZUJveChkb2N1bWVudCwgY3VlKSk7CisgICAgfQogCiAgICAgVlRUQ3VlKiBnZXRDdWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZp
ZGVvU2l6ZSk7CkBAIC02MCwxOSArNjIsMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICBWVFRDdWVCb3goRG9jdW1lbnQmLCBWVFRDdWUmKTsKKyAgICBWVFRDdWVCb3goRG9jdW1lbnQm
LCBWVFRDdWUqKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CiAKLSAgICBW
VFRDdWUmIG1fY3VlOworICAgIFZUVEN1ZSogbV9jdWU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIFZUVEN1ZSA6IHB1YmxpYyBUZXh0VHJhY2tDdWUgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZUVEN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZUVEN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBXZWJWVFRDdWVEYXRhJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VlRUQ3Vl
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFZUVEN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBjb250ZW50KSk7CisgICAg
fQogCiAgICAgdmlydHVhbCB+VlRUQ3VlKCk7CiAKQEAgLTE2MCwxMyArMTY0LDExIEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIFZUVEN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwotICAgIFZUVEN1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgV2ViVlRUQ3VlRGF0YSYpOwogCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFZUVEN1ZUJveD4gY3JlYXRlRGlzcGxheVRyZWUoKTsKICAgICBW
VFRDdWVCb3gqIGRpc3BsYXlUcmVlSW50ZXJuYWwoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGlu
aXRpYWxpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZvaWQgY3JlYXRlV2ViVlRU
Tm9kZVRyZWUoKTsKICAgICB2b2lkIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5v
ZGUqIFdlYlZUVE5vZGUsIENvbnRhaW5lck5vZGUqIHJvb3QpOwogCkBAIC0yMDksOCArMjExLDYg
QEAgcHJpdmF0ZToKICAgICBpbnQgbV9kaXNwbGF5U2l6ZTsKICAgICBzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0PiBtX2Rpc3BsYXlQb3NpdGlvbjsKIAotICAgIGRvdWJsZSBtX29yaWdpbmFsU3RhcnRU
aW1lOwotCiAgICAgYm9vbCBtX3NuYXBUb0xpbmVzIDogMTsKICAgICBib29sIG1fZGlzcGxheVRy
ZWVTaG91bGRDaGFuZ2UgOiAxOwogICAgIGJvb2wgbV9ub3RpZnlSZWdpb24gOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDUxMTNmOTJiNmRhZjY2
ZTI3ZWVjMDkxM2M4MDUzOGE1OWQzZmIxY2UuLmJmN2Q2MDM1Njg2YWI3N2U1MzliNGI1MGU4NTBi
ZWIwN2YyZTdhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIENhYmxl
IFRlbGV2aXNpb24gTGFicywgSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzYsNyArMzYsNiBAQAogCiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCiAKLSNp
bmNsdWRlICJJU09WVFRDdWUuaCIKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVlRUU2Nhbm5lci5oIgpAQCAtMTA5LDE0ICsx
MDgsNiBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Z2V0TmV3UmVnaW9ucyhWZWN0b3I8UmVmUHRyPFZU
VFJlZ2lvbj4+JiBvdXRwdXRSZWdpb25zKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViVlRUUGFyc2Vy
OjpwYXJzZUZpbGVIZWFkZXIoY29uc3QgU3RyaW5nJiBkYXRhKQotewotICAgIG1fc3RhdGUgPSBJ
bml0aWFsOwotICAgIG1fbGluZVJlYWRlci5yZXNldCgpOwotICAgIG1fbGluZVJlYWRlci5hcHBl
bmQoZGF0YSk7Ci0gICAgcGFyc2UoKTsKLX0KLQogdm9pZCBXZWJWVFRQYXJzZXI6OnBhcnNlQnl0
ZXMoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIFN0cmluZyB0ZXh0
RGF0YSA9IG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0aCk7CkBAIC0xMjQsMjcgKzExNSw2
IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICBwYXJzZSgpOwogfQogCi12b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VD
dWVEYXRhKGNvbnN0IElTT1dlYlZUVEN1ZSYgZGF0YSkKLXsKLSAgICBSZWZQdHI8V2ViVlRUQ3Vl
RGF0YT4gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7Ci0KLSAgICBkb3VibGUgc3RhcnRU
aW1lID0gZGF0YS5wcmVzZW50YXRpb25UaW1lKCkudG9Eb3VibGUoKTsKLSAgICBjdWUtPnNldFN0
YXJ0VGltZShzdGFydFRpbWUpOwotICAgIGN1ZS0+c2V0RW5kVGltZShzdGFydFRpbWUgKyBkYXRh
LmR1cmF0aW9uKCkudG9Eb3VibGUoKSk7Ci0KLSAgICBjdWUtPnNldENvbnRlbnQoZGF0YS5jdWVU
ZXh0KCkpOwotICAgIGN1ZS0+c2V0SWQoZGF0YS5pZCgpKTsKLSAgICBjdWUtPnNldFNldHRpbmdz
KGRhdGEuc2V0dGluZ3MoKSk7Ci0KLSAgICBkb3VibGUgb3JpZ2luYWxTdGFydFRpbWU7Ci0gICAg
aWYgKFdlYlZUVFBhcnNlcjo6Y29sbGVjdFRpbWVTdGFtcChkYXRhLm9yaWdpbmFsU3RhcnRUaW1l
KCksIG9yaWdpbmFsU3RhcnRUaW1lKSkKLSAgICAgICAgY3VlLT5zZXRPcmlnaW5hbFN0YXJ0VGlt
ZShvcmlnaW5hbFN0YXJ0VGltZSk7Ci0KLSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7Ci0gICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwotfQotCiB2
b2lkIFdlYlZUVFBhcnNlcjo6Zmx1c2goKQogewogICAgIFN0cmluZyB0ZXh0RGF0YSA9IG1fZGVj
b2Rlci0+Zmx1c2goKTsKQEAgLTMwMSw5ICsyNzEsNiBAQCBXZWJWVFRQYXJzZXI6OlBhcnNlU3Rh
dGUgV2ViVlRUUGFyc2VyOjpjb2xsZWN0Q3VlSWQoY29uc3QgU3RyaW5nJiBsaW5lKQogCiBXZWJW
VFRQYXJzZXI6OlBhcnNlU3RhdGUgV2ViVlRUUGFyc2VyOjpjb2xsZWN0VGltaW5nc0FuZFNldHRp
bmdzKGNvbnN0IFN0cmluZyYgbGluZSkKIHsKLSAgICBpZiAobGluZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBCYWRDdWU7Ci0KICAgICBWVFRTY2FubmVyIGlucHV0KGxpbmUpOwogCiAgICAg
Ly8gQ29sbGVjdCBXZWJWVFQgY3VlIHRpbWluZ3MgYW5kIHNldHRpbmdzLiAoNS4zIFdlYlZUVCBj
dWUgdGltaW5ncyBhbmQgc2V0dGluZ3MgcGFyc2luZy4pCkBAIC00NjcsOSArNDM0LDYgQEAgdm9p
ZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld1JlZ2lvbihjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVl
KQogCiBib29sIFdlYlZUVFBhcnNlcjo6Y29sbGVjdFRpbWVTdGFtcChjb25zdCBTdHJpbmcmIGxp
bmUsIGRvdWJsZSYgdGltZVN0YW1wKQogewotICAgIGlmIChsaW5lLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgVlRUU2Nhbm5lciBpbnB1dChsaW5lKTsKICAgICByZXR1
cm4gY29sbGVjdFRpbWVTdGFtcChpbnB1dCwgdGltZVN0YW1wKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IDBmN2Q4MTI5NDc0ODgzNTE3MzZmYzcxYzY5
ZTkwZmEyNTA0NmI2YjEuLmZjM2ZkMmRjYTc0ZjdmNjg3N2E0ZDZkZTJmN2E0NjFmM2RiM2JkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaApAQCAtNDksNyArNDks
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBj
bGFzcyBEb2N1bWVudDsKLWNsYXNzIElTT1dlYlZUVEN1ZTsKIGNsYXNzIFZUVFNjYW5uZXI7CiAK
IGNsYXNzIFdlYlZUVFBhcnNlckNsaWVudCB7CkBAIC04NCwyMCArODMsMTUgQEAgcHVibGljOgog
ICAgIFN0cmluZyBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2
b2lkIHNldFNldHRpbmdzKFN0cmluZyBzZXR0aW5ncykgeyBtX3NldHRpbmdzID0gc2V0dGluZ3M7
IH0KIAotICAgIGRvdWJsZSBvcmlnaW5hbFN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luYWxTdGFydFRpbWU7IH0KLSAgICB2b2lkIHNldE9yaWdpbmFsU3RhcnRUaW1lKGRvdWJsZSB0
aW1lKSB7IG1fb3JpZ2luYWxTdGFydFRpbWUgPSB0aW1lOyB9Ci0KIHByaXZhdGU6CiAgICAgV2Vi
VlRUQ3VlRGF0YSgpCiAgICAgICAgIDogbV9zdGFydFRpbWUoMCkKICAgICAgICAgLCBtX2VuZFRp
bWUoMCkKLSAgICAgICAgLCBtX29yaWdpbmFsU3RhcnRUaW1lKDApCiAgICAgewogICAgIH0KIAog
ICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBkb3VibGUgbV9lbmRUaW1lOwotICAgIGRvdWJs
ZSBtX29yaWdpbmFsU3RhcnRUaW1lOwogICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmluZyBtX2Nv
bnRlbnQ7CiAgICAgU3RyaW5nIG1fc2V0dGluZ3M7CkBAIC0xNDYsOSArMTQwLDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICAvLyBJbnB1dCBkYXRhIHRvIHRoZSBwYXJzZXIgdG8gcGFyc2UuCi0g
ICAgdm9pZCBwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBwYXJz
ZUZpbGVIZWFkZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBwYXJzZUN1ZURhdGEoY29uc3Qg
SVNPV2ViVlRUQ3VlJik7CisgICAgdm9pZCBwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBmbHVzaCgpOwogICAgIHZvaWQgZmlsZUZpbmlzaGVk
KCk7CiAKQEAgLTE5Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2N1cnJlbnRF
bmRUaW1lOwogICAgIFN0cmluZ0J1aWxkZXIgbV9jdXJyZW50Q29udGVudDsKICAgICBTdHJpbmcg
bV9jdXJyZW50U2V0dGluZ3M7Ci0KKyAgICAKICAgICBXZWJWVFRQYXJzZXJDbGllbnQqIG1fY2xp
ZW50OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJWVFRDdWVEYXRhPj4gbV9jdWVsaXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA0YjBmNjUxZjJkNzAx
ZDBlNTFiNmI3ZDdlZWFlYjliZDRkM2VhNDBjLi5lYzNjM2JiMzQxMzlhN2U5MzE1ODI0MmZmNzlj
NmQyZTA2ZTZiYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cApAQCAtMjE1LDkgKzIxNSwxMyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6Z2V0TmV3Q3VlcyhW
ZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4+JiBvdXRwdXRDdWVzKQogICAgIGlmIChtX2N1ZVBh
cnNlcikgewogICAgICAgICBWZWN0b3I8UmVmUHRyPFdlYlZUVEN1ZURhdGE+PiBuZXdDdWVzOwog
ICAgICAgICBtX2N1ZVBhcnNlci0+Z2V0TmV3Q3VlcyhuZXdDdWVzKTsKLQotICAgICAgICBmb3Ig
KGF1dG8mIGN1ZURhdGEgOiBuZXdDdWVzKQotICAgICAgICAgICAgb3V0cHV0Q3Vlcy5hcHBlbmQo
VlRUQ3VlOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKmN1ZURhdGEpKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDdWVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gZGF0YSA9IG5ld0N1ZXNbaV07CisgICAgICAg
ICAgICBSZWZQdHI8VlRUQ3VlPiBjdWUgPSBWVFRDdWU6OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBkYXRhLT5zdGFydFRpbWUoKSwgZGF0YS0+ZW5kVGltZSgpLCBkYXRhLT5jb250
ZW50KCkpOworICAgICAgICAgICAgY3VlLT5zZXRJZChkYXRhLT5pZCgpKTsKKyAgICAgICAgICAg
IGN1ZS0+c2V0Q3VlU2V0dGluZ3MoZGF0YS0+c2V0dGluZ3MoKSk7CisgICAgICAgICAgICBvdXRw
dXRDdWVzLmFwcGVuZChjdWUpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JU09WVFRDdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3VlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTQ0ZmJkOGY0YWQwNzU0MDdiN2UyN2NmNTI0NDIwMDU0NzE3OWQ1Zi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JU09WVFRDdWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklTT1ZUVEN1ZS5oIgotCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDxy
dW50aW1lL0RhdGFWaWV3Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9JbnQ4QXJyYXkuaD4KLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LWNsYXNzIEFycmF5QnVmZmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUlTT0JveDo6
SVNPQm94KEFycmF5QnVmZmVyKiBkYXRhKQotewotICAgIG1fdHlwZSA9IHBlZWtUeXBlKGRhdGEp
OwotICAgIG1fbGVuZ3RoID0gcGVla0xlbmd0aChkYXRhKTsKLSAgICBBU1NFUlQobV9sZW5ndGgg
Pj0gOCk7Ci19Ci0KLVN0cmluZyBJU09Cb3g6OnBlZWtUeXBlKEFycmF5QnVmZmVyKiBkYXRhKQot
ewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGRhdGEtPmJ5dGVMZW5ndGgo
KSA+PSAyICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgaWYgKGRhdGEtPmJ5dGVMZW5ndGgoKSA8
IDIgKiBzaXplb2YodWludDMyX3QpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQot
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9
IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgNCwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5
LT5pdGVtKGkpKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1zaXplX3Qg
SVNPQm94OjpwZWVrTGVuZ3RoKEFycmF5QnVmZmVyKiBkYXRhKQotewotICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGRhdGEtPmJ5dGVMZW5ndGgoKSA+PSBzaXplb2YodWludDMy
X3QpKTsKLSAgICBpZiAoZGF0YS0+Ynl0ZUxlbmd0aCgpIDwgc2l6ZW9mKHVpbnQzMl90KSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEs
IDAsIHNpemVvZih1aW50MzJfdCkpLT5nZXQ8dWludDMyX3Q+KDAsIGZhbHNlKTsKLX0KLQotU3Ry
aW5nIElTT0JveDo6cGVla1N0cmluZyhBcnJheUJ1ZmZlciogZGF0YSwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04ob2Zmc2V0ICsgbGVuZ3RoIDw9IGRhdGEtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgaWYgKGRhdGEt
PmJ5dGVMZW5ndGgoKSA8IG9mZnNldCArIGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nKEpTQzo6VWludDhBcnJheTo6Y3JlYXRlKGRhdGEs
IG9mZnNldCwgbGVuZ3RoKS0+ZGF0YSgpLCBsZW5ndGgpOwotfQotCi1zdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiB2dHRDdWVCb3hUeXBlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiB2dHRjKCJ2dHRjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgcmV0dXJuIHZ0dGM7Ci19Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHZ0dElkQm94VHlwZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gaWRlbigiaWRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
IHJldHVybiBpZGVuOwotfQotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2dHRTZXR0aW5n
c0JveFR5cGUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN0
dGcoInN0dGciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1
cm4gc3R0ZzsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdnR0UGF5bG9hZEJveFR5
cGUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBheWwoInBh
eWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gcGF5
bDsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdnR0Q3VycmVudFRpbWVCb3hUeXBl
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjdGltKCJjdGlt
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGN0aW07
Ci19Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZ0dEN1ZVNvdXJjZUlEQm94VHlwZSgp
Ci17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdnNpZCgidnNpZCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiB2c2lkOwot
fQotCi1jb25zdCBBdG9taWNTdHJpbmcmIElTT1dlYlZUVEN1ZTo6Ym94VHlwZSgpCi17Ci0gICAg
cmV0dXJuIHZ0dEN1ZUJveFR5cGUoKTsKLX0KLQotSVNPV2ViVlRUQ3VlOjpJU09XZWJWVFRDdWUo
Y29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0
aW9uLCBKU0M6OkFycmF5QnVmZmVyKiBidWZmZXIpCi0gICAgOiBJU09Cb3goYnVmZmVyKQotICAg
ICwgbV9wcmVzZW50YXRpb25UaW1lKHByZXNlbnRhdGlvblRpbWUpCi0gICAgLCBtX2R1cmF0aW9u
KGR1cmF0aW9uKQotewotICAgIHNpemVfdCBvZmZzZXQgPSBJU09Cb3g6OmJveEhlYWRlclNpemUo
KTsKLSAgICB3aGlsZSAob2Zmc2V0IDwgbGVuZ3RoKCkgJiYgbGVuZ3RoKCkgLSBvZmZzZXQgPiBJ
U09Cb3g6OmJveEhlYWRlclNpemUoKSkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1
YkJ1ZmZlciA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0KTsKLSAgICAgICAgU3RyaW5nIGJveFR5cGUg
PSBJU09Cb3g6OnBlZWtUeXBlKHN1YkJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIHNpemVfdCBib3hT
aXplID0gSVNPQm94OjpwZWVrTGVuZ3RoKHN1YkJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIHNpemVf
dCBib3hEYXRhU2l6ZSA9IGJveFNpemUgLSBJU09Cb3g6OmJveEhlYWRlclNpemUoKTsKLQotICAg
ICAgICBpZiAoYm94VHlwZSA9PSB2dHRDdWVTb3VyY2VJREJveFR5cGUoKSkKLSAgICAgICAgICAg
IG1fc291cmNlSUQgPSBwZWVrU3RyaW5nKHN1YkJ1ZmZlci5nZXQoKSwgSVNPQm94Ojpib3hIZWFk
ZXJTaXplKCksIGJveERhdGFTaXplKTsKLSAgICAgICAgZWxzZSBpZiAoYm94VHlwZSA9PSB2dHRJ
ZEJveFR5cGUoKSkKLSAgICAgICAgICAgIG1faWRlbnRpZmVyID0gcGVla1N0cmluZyhzdWJCdWZm
ZXIuZ2V0KCksIElTT0JveDo6Ym94SGVhZGVyU2l6ZSgpLCBib3hEYXRhU2l6ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGJveFR5cGUgPT0gdnR0Q3VycmVudFRpbWVCb3hUeXBlKCkpCi0gICAgICAgICAg
ICBtX29yaWdpbmFsU3RhcnRUaW1lID0gcGVla1N0cmluZyhzdWJCdWZmZXIuZ2V0KCksIElTT0Jv
eDo6Ym94SGVhZGVyU2l6ZSgpLCBib3hEYXRhU2l6ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGJveFR5
cGUgPT0gdnR0U2V0dGluZ3NCb3hUeXBlKCkpCi0gICAgICAgICAgICBtX3NldHRpbmdzID0gcGVl
a1N0cmluZyhzdWJCdWZmZXIuZ2V0KCksIElTT0JveDo6Ym94SGVhZGVyU2l6ZSgpLCBib3hEYXRh
U2l6ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGJveFR5cGUgPT0gdnR0UGF5bG9hZEJveFR5cGUoKSkK
LSAgICAgICAgICAgIG1fY3VlVGV4dCA9IHBlZWtTdHJpbmcoc3ViQnVmZmVyLmdldCgpLCBJU09C
b3g6OmJveEhlYWRlclNpemUoKSwgYm94RGF0YVNpemUpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBMT0coTWVkaWEsICJJU09XZWJWVFRDdWU6OklTT1dlYlZUVEN1ZSAtIHNraXBwaW5nIGJv
eCBpZCA9IFwiJXNcIiwgc2l6ZSA9ICV6dSIsIGJveFR5cGUudXRmOCgpLmRhdGEoKSwgYm94U2l6
ZSk7Ci0KLSAgICAgICAgb2Zmc2V0ICs9IGJveFNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lTT1ZUVEN1
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzhkY2JmNzhkNDk0M2ZmNTIxNTYx
NmIyYzdkZTRhMjVjNTFhMDRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIElTT1ZUVEN1ZV9oCi0jZGVmaW5lIElTT1ZUVEN1
ZV9oCi0KLSNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQW4gSVNPQm94IHJlcHJlc2VudHMgYSBJU08tQk1GRiBi
b3guIERhdGEgaW4gdGhlIHN0cnVjdHVyZSBpcyBiaWctZW5kaWFuLiBUaGUgbGF5b3V0IG9mIHRo
ZSBkYXRhIHN0cnVjdHVyZSBhcyBmb2xsb3dzOgotLy8gNCBieXRlcyA6IDRDQyA6IGlkZW50aWZp
ZXIKLS8vIDQgYnl0ZXMgOiB1bnNpZ25lZCA6IGxlbmd0aAotY2xhc3MgSVNPQm94IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgU3RyaW5nIHBlZWtUeXBlKEpTQzo6QXJyYXlCdWZmZXIqKTsKLSAgICBz
dGF0aWMgc2l6ZV90IHBlZWtMZW5ndGgoSlNDOjpBcnJheUJ1ZmZlciopOwotICAgIHN0YXRpYyBT
dHJpbmcgcGVla1N0cmluZyhKU0M6OkFycmF5QnVmZmVyKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBib3hIZWFkZXJTaXplKCkgeyByZXR1
cm4gMiAqIHNpemVvZih1aW50MzJfdCk7IH0KLQotICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgSVNPQm94KEpTQzo6QXJyYXlC
dWZmZXIqKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgc2l6ZV90IG1fbGVuZ3RoOwotICAgIEF0b21p
Y1N0cmluZyBtX3R5cGU7Ci19OwotCi0vLyA0IGJ5dGVzIDogNENDIDogaWRlbnRpZmllciA9ICd2
dHRjJwotLy8gNCBieXRlcyA6IHVuc2lnbmVkIDogbGVuZ3RoCi0vLyBOIGJ5dGVzIDpDdWVTb3Vy
Y2VJREJveCA6IGJveCA6IG9wdGlvbmFsCi0vLyBOIGJ5dGVzIDpDdWVJREJveCA6IGJveCA6IG9w
dGlvbmFsCi0vLyBOIGJ5dGVzIDpDdWVUaW1lQm94IDogYm94IDogb3B0aW9uYWwKLS8vIE4gYnl0
ZXMgOkN1ZVNldHRpbmdzQm94IDogYm94IDogb3B0aW9uYWwKLS8vIE4gYnl0ZXMgOkN1ZVBheWxv
YWRCb3ggOiBib3ggOiByZXF1aXJlZAotY2xhc3MgSVNPV2ViVlRUQ3VlIDogcHVibGljIElTT0Jv
eCB7Ci1wdWJsaWM6Ci0gICAgSVNPV2ViVlRUQ3VlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0
aW9uVGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgSlNDOjpBcnJheUJ1ZmZlciopOwot
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYm94VHlwZSgpOwotCi0gICAgY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRp
b25UaW1lOyB9Ci0gICAgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZHVyYXRpb247IH0KLQotICAgIGNvbnN0IFN0cmluZyYgc291cmNlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUlEOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmVyOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxTdGFydFRpbWU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNl
dHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgIGNvbnN0IFN0cmluZyYg
Y3VlVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlVGV4dDsgfQotCi1wcml2YXRlOgotICAgIE1l
ZGlhVGltZSBtX3ByZXNlbnRhdGlvblRpbWU7Ci0gICAgTWVkaWFUaW1lIG1fZHVyYXRpb247Ci0K
LSAgICBTdHJpbmcgbV9zb3VyY2VJRDsKLSAgICBTdHJpbmcgbV9pZGVudGlmZXI7Ci0gICAgU3Ry
aW5nIG1fb3JpZ2luYWxTdGFydFRpbWU7Ci0gICAgU3RyaW5nIG1fc2V0dGluZ3M7Ci0gICAgU3Ry
aW5nIG1fY3VlVGV4dDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIElTT1ZUVEN1ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggY2U1MzVkMTJkMGVjYTc4OTAyZWMxZDRkMDgyNmI2
MGMwM2MxODM0Mi4uZDYyNmU3YjU1ODNiOTlhNWUwZDMzZGM1OTYyMmIzMzk1Y2M3YzY3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7Ci1jbGFzcyBJU09X
ZWJWVFRDdWU7CiAKIGNsYXNzIEdlbmVyaWNDdWVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8R2Vu
ZXJpY0N1ZURhdGE+IHsKIHB1YmxpYzoKQEAgLTE4MSw5ICsxODAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIEdl
bmVyaWNDdWVEYXRhKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKElu
YmFuZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIFN0
cmluZykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdl
YlZUVEN1ZURhdGEoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEo
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IElTT1dlYlZUVEN1ZSYpID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCAyNjM4MmE3MDE5OTI2ODFjNzI4YTVkM2YyZWNjODM3
OTdhMTU2NzUyLi5hNTQzN2NmNmU2ZWM1NDg4OTY2ZmYzMDUxZTU1Mzc4MzNkYTg2MTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDI3ICsyOSwxNiBAQAogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
IgogCi0jaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb2Z0TGlua2lu
Zy5oIgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9EYXRhVmlldy5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvSW50OEFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgotI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgIVBMQVRGT1JNKFdJTikKLSNpbmNsdWRl
ICJNZWRpYVRpbWVNYWMuaCIKLSNlbmRpZgotCi0jaWYgIVBMQVRGT1JNKFdJTikKICNkZWZpbmUg
U09GVF9MSU5LX0FWRl9GUkFNRVdPUksoTGliKSBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFM
KExpYikKICNkZWZpbmUgU09GVF9MSU5LX0FWRl9QT0lOVEVSKExpYiwgTmFtZSwgVHlwZSkgU09G
VF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoTGliLCBOYW1lLCBUeXBlKQogI2Vsc2UKQEAgLTY0LDMy
ICs1Myw2IEBACiAKIFNPRlRfTElOS19BVkZfRlJBTUVXT1JLKENvcmVNZWRpYSkKIAotI2lmICFQ
TEFURk9STShXSU4pCi1TT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldERhdGFC
dWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYp
KQotU09GVF9MSU5LKENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3Rh
dHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIsIHNpemVfdCBvZmZzZXRUb0Rh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlvbiksICh0aGVTb3VyY2VCdWZm
ZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRpb24pKQotU09GVF9MSU5LKENv
cmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZm
ZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCi1TT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm8sIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJS
ZWYgc2J1ZiwgQ01JdGVtSW5kZXggc2FtcGxlSW5kZXgsIENNU2FtcGxlVGltaW5nSW5mbyogdGlt
aW5nSW5mb091dCksIChzYnVmLCBzYW1wbGVJbmRleCwgdGltaW5nSW5mb091dCkpCi1TT0ZUX0xJ
TksoQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9u
YXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQotU09GVF9MSU5L
KENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbiwgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCi0jZWxzZQot
Ci1TT0ZUX0xJTktfRExMX0lNUE9SVChDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0
NjQsIF9fY2RlY2wsIChDTVRpbWUgdGltZSksICh0aW1lKSkKLSNkZWZpbmUgQ01UaW1lR2V0U2Vj
b25kcyBzb2Z0TGlua19DTVRpbWVHZXRTZWNvbmRzCi1TT0ZUX0xJTktfRExMX0lNUE9SVChDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwgX19j
ZGVjbCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCi0jZGVmaW5lIENNU2FtcGxl
QnVmZmVyR2V0RGF0YUJ1ZmZlciBzb2Z0TGlua19DTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIK
LVNPRlRfTElOS19ETExfSU1QT1JUKENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0
ZXMsIE9TU3RhdHVzLCBfX2NkZWNsLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIs
IHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlv
biksICh0aGVTb3VyY2VCdWZmZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRp
b24pKQotI2RlZmluZSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBzb2Z0TGlua19DTUJsb2Nr
QnVmZmVyQ29weURhdGFCeXRlcwotU09GVF9MSU5LX0RMTF9JTVBPUlQoQ29yZU1lZGlhLCBDTUJs
b2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCBfX2NkZWNsLCAoQ01CbG9ja0J1ZmZlclJl
ZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKLSNkZWZpbmUgQ01CbG9ja0J1ZmZlckdldERhdGFM
ZW5ndGggc29mdExpbmtfQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgKLVNPRlRfTElOS19ETExf
SU1QT1JUKENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvLCBPU1N0
YXR1cywgX19jZGVjbCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUluZGV4IHNhbXBs
ZUluZGV4LCBDTVNhbXBsZVRpbWluZ0luZm8qIHRpbWluZ0luZm9PdXQpLCAoc2J1Ziwgc2FtcGxl
SW5kZXgsIHRpbWluZ0luZm9PdXQpKQotI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRp
bWluZ0luZm8gc29mdExpbmtfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvCi1TT0ZU
X0xJTktfRExMX0lNUE9SVChDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNp
b25zLCBDRkRpY3Rpb25hcnlSZWYsIF9fY2RlY2wsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRl
c2MpLCAoZGVzYykpCi0jZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNv
ZnRMaW5rX0NNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zCi1TT0ZUX0xJTktfRExMX0lN
UE9SVChDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24sIENNRm9y
bWF0RGVzY3JpcHRpb25SZWYsIF9fY2RlY2wsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNi
dWYpKQotI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uIHNvZnRMaW5r
X0NNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24KLQotI2VuZGlmCi0KIFNPRlRfTElO
S19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50
LCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEsIGtDTVRleHRN
YXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19BVkZfUE9J
TlRFUihDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgQ0ZTdHJp
bmdSZWYpCkBAIC0xMDksNyArNzIsNiBAQCBTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvbnRGYW1pbHlOYW1lLCBDRlN0cmluZwogU09GVF9M
SU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3Jv
dW5kQ29sb3JBUkdCLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVk
aWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdS
ZWYpCiBTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IsIENGU3RyaW5nUmVmKQotU09GVF9MSU5L
X0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2Ft
cGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCiAKICNkZWZpbmUga0NN
VGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQgZ2V0a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9B
bGlnbm1lbnQoKQogI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9TdGFydCBnZXRr
Q01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9TdGFydCgpCkBAIC0xMzAsMTEgKzkyLDYgQEAgU09G
VF9MSU5LX0FWRl9QT0lOVEVSKENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fU2FtcGxlRGVzY3JpcHRpb24KICNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3Jl
Z3JvdW5kQ29sb3JBUkdCIGdldGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9y
QVJHQigpCiAjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJH
QiBnZXRrQ01UZXh0TWFya3VwQXR0cmlidXRlX0JhY2tncm91bmRDb2xvckFSR0IoKQogI2RlZmlu
ZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IgZ2V0
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCKCkKLSNk
ZWZpbmUga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRl
bnNpb25BdG9tcyBnZXRrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlw
dGlvbkV4dGVuc2lvbkF0b21zKCkKLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZl
cjsKLX0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDIsMTQgKzk5LDEzIEBAIEFWRklu
YmFuZFRyYWNrUGFyZW50Ojp+QVZGSW5iYW5kVHJhY2tQYXJlbnQoKQogewogfQogCi1JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBvd25lciwgQ3VlRm9ybWF0IGZvcm1hdCkKLSAgICA6IEluYmFuZFRleHRUcmFj
a1ByaXZhdGUoZm9ybWF0KQorSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCogb3duZXIpCisgICAgOiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlKEdlbmVyaWMpCiAgICAgLCBtX293bmVyKG93bmVyKQogICAgICwgbV9w
ZW5kaW5nQ3VlU3RhdHVzKE5vbmUpCiAgICAgLCBtX2luZGV4KDApCiAgICAgLCBtX2hhc0JlZW5S
ZXBvcnRlZChmYWxzZSkKICAgICAsIG1fc2Vla2luZyhmYWxzZSkKLSAgICAsIG1faGF2ZVJlcG9y
dGVkVlRUSGVhZGVyKGZhbHNlKQogewogfQogCkBAIC0zOTcsMTggKzM1MywxMiBAQCB2b2lkIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRl
ZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICBjdWVEYXRhLT5zZXRDb250ZW50KGNvbnRlbnQudG9T
dHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1
ZShDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMs
IGRvdWJsZSB0aW1lKQordm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3Vl
KENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIGRvdWJsZSB0aW1lKQogewogICAgIGlmICgh
Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5n
cyhhdHRyaWJ1dGVkU3RyaW5ncywgdGltZSk7Ci0gICAgcHJvY2Vzc05hdGl2ZVNhbXBsZXMobmF0
aXZlU2FtcGxlcywgdGltZSk7Ci19Ci0KLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6
cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdzKENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIGRv
dWJsZSB0aW1lKQotewotICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5ncyAtICVsaSBhdHRyaWJ1dGVkIHN0cmluZ3MgYXQgdGlt
ZSAlLjJmXG4iLCBhdHRyaWJ1dGVkU3RyaW5ncyA/IENGQXJyYXlHZXRDb3VudChhdHRyaWJ1dGVk
U3RyaW5ncykgOiAwLCB0aW1lKTsKKyAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlIC0gJWxpIGN1ZXMgYXQgdGltZSAlLjJmXG4iLCBhdHRyaWJ1dGVk
U3RyaW5ncyA/IENGQXJyYXlHZXRDb3VudChhdHRyaWJ1dGVkU3RyaW5ncykgOiAwLCB0aW1lKTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8R2VuZXJpY0N1ZURhdGE+PiBhcnJpdmluZ0N1ZXM7CiAgICAg
aWYgKGF0dHJpYnV0ZWRTdHJpbmdzKSB7CkBAIC00OTIsOSArNDQyLDkgQEAgdm9pZCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBh
dHRyaWJ1dGVkU3QKICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cHJvY2Vzc0N1ZSglcCkgLSBhZGRpbmcgY3VlIGZvciB0aW1lID0gJS4yZiwgcG9zaXRpb24g
PSAgJS4yZiwgbGluZSA9ICAlLjJmIiwgdGhpcywgY3VlRGF0YS0+c3RhcnRUaW1lKCksIGN1ZURh
dGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKICAgICAgICAgY2xpZW50KCktPmFk
ZEdlbmVyaWNDdWUodGhpcywgY3VlRGF0YS5yZWxlYXNlKCkpOwotICAgIH0KIAotICAgIG1fcGVu
ZGluZ0N1ZVN0YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsK
KyAgICAgICAgbV9wZW5kaW5nQ3VlU3RhdHVzID0gc2Vla2luZygpID8gRGVsaXZlcmVkRHVyaW5n
U2VlayA6IFZhbGlkOworICAgIH0KIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
OjpiZWdpblNlZWtpbmcoKQpAQCAtNTYzLDEwMyArNTEzLDYgQEAgdm9pZCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpzZXRNb2RlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgbmV3TW9k
ZSkKICAgICBtX293bmVyLT50cmFja01vZGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoQ0ZBcnJheVJlZiBuYXRpdmVT
YW1wbGVzLCBkb3VibGUgcHJlc2VudGF0aW9uVGltZSkKLXsKLSAgICBpZiAoIW5hdGl2ZVNhbXBs
ZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291
bnQobmF0aXZlU2FtcGxlcyk7Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNh
bXBsZXMgLSAlbGkgc2FtcGxlIGJ1ZmZlcnMgYXQgdGltZSAlLjJmXG4iLCBjb3VudCwgcHJlc2Vu
dGF0aW9uVGltZSk7Ci0KLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7
Ci0KLSAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gKENNU2FtcGxlQnVm
ZmVyUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmF0aXZlU2FtcGxlcywgaSk7Ci0gICAgICAg
IGlmICghc2FtcGxlQnVmZmVyKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgQ01T
YW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87Ci0gICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyhzYW1wbGVCdWZmZXIsIGksICZ0aW1pbmdJ
bmZvKTsKLSAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoJXApIC0gQ01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvIHJldHVybmVkIGVycm9yICV4IGZvciBzYW1wbGUg
JWxpIiwgdGhpcywgc3RhdHVzLCBpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlciA9IENNU2FtcGxlQnVmZmVy
R2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOwotICAgICAgICBzaXplX3QgYnVmZmVyTGVuZ3Ro
ID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYmxvY2tCdWZmZXIpOwotICAgICAgICBpZiAo
YnVmZmVyTGVuZ3RoIDwgSVNPQm94Ojpib3hIZWFkZXJTaXplKCkpIHsKLSAgICAgICAgICAgIExP
RyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVz
KCVwKSAtIEVSUk9SOiBDTVNhbXBsZUJ1ZmZlciBzaXplIGxlbmd0aCB1bmV4cGVjdGVkbHkgc21h
bGwgKCV6dSkhISIsIHRoaXMsIGJ1ZmZlckxlbmd0aCk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIG1fc2FtcGxlSW5wdXRCdWZmZXIucmVzaXplKG1fc2FtcGxl
SW5wdXRCdWZmZXIuc2l6ZSgpICsgYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgQ01CbG9ja0J1ZmZl
ckNvcHlEYXRhQnl0ZXMoYmxvY2tCdWZmZXIsIDAsIGJ1ZmZlckxlbmd0aCwgbV9zYW1wbGVJbnB1
dEJ1ZmZlci5kYXRhKCkgKyBtX3NhbXBsZUlucHV0QnVmZmVyLnNpemUoKSAtIGJ1ZmZlckxlbmd0
aCk7Ci0KLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKG1fc2FtcGxlSW5wdXRCdWZmZXIuZGF0YSgpLCBtX3NhbXBsZUlucHV0QnVmZmVyLnNp
emUoKSk7Ci0KLSAgICAgICAgU3RyaW5nIHR5cGUgPSBJU09Cb3g6OnBlZWtUeXBlKGJ1ZmZlci5n
ZXQoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBJU09Cb3g6OnBlZWtMZW5ndGgoYnVm
ZmVyLmdldCgpKTsKLSAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpw
cm9jZXNzTmF0aXZlU2FtcGxlcyglcCkgLSBFUlJPUjogY2h1bmsgJyVzJyBzaXplICglenUpIGxh
cmdlciB0aGFuIGJ1ZmZlciBsZW5ndGggKCV1KSEhIiwgdGhpcywgdHlwZS51dGY4KCkuZGF0YSgp
LCBib3hMZW5ndGgsIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoJXApIC0gY2h1bmsgdHlwZSA9ICclcycsIHNpemUg
PSAlenUiLCB0aGlzLCB0eXBlLnV0ZjgoKS5kYXRhKCksIGJveExlbmd0aCk7Ci0KLSAgICAgICAg
aWYgKHR5cGUgPT0gSVNPV2ViVlRUQ3VlOjpib3hUeXBlKCkpIHsKLSNpZiAhUExBVEZPUk0oV0lO
KQotICAgICAgICAgICAgSVNPV2ViVlRUQ3VlIGN1ZURhdGEgPSBJU09XZWJWVFRDdWUoTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKHByZXNlbnRhdGlvblRpbWUpLCB0b01lZGlhVGltZSh0aW1p
bmdJbmZvLmR1cmF0aW9uKSwgYnVmZmVyLmdldCgpKTsKLSNlbHNlCi0gICAgICAgICAgICBJU09X
ZWJWVFRDdWUgY3VlRGF0YSA9IElTT1dlYlZUVEN1ZShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUocHJlc2VudGF0aW9uVGltZSksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShDTVRpbWVH
ZXRTZWNvbmRzKHRpbWluZ0luZm8uZHVyYXRpb24pKSwgYnVmZmVyLmdldCgpKTsKLSNlbmRpZgot
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiICAgIHNhbXBsZSBwcmVzZW50YXRpb24gdGltZSA9ICUu
MmYsIGR1cmF0aW9uID0gJS4yZiIsIGN1ZURhdGEucHJlc2VudGF0aW9uVGltZSgpLnRvRG91Ymxl
KCksIGN1ZURhdGEuZHVyYXRpb24oKS50b0RvdWJsZSgpKTsKLSAgICAgICAgICAgIExPRyhNZWRp
YSwgIiAgICBpZCA9IFwiJXNcIiwgc2V0dGluZ3MgPSBcIiVzXCIsIGN1ZSB0ZXh0ID0gXCIlc1wi
IiwgY3VlRGF0YS5pZCgpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEuc2V0dGluZ3MoKS51dGY4KCku
ZGF0YSgpLCBjdWVEYXRhLmN1ZVRleHQoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIExP
RyhNZWRpYSwgIiAgICBzb3VyY2VJRCA9IFwiJXNcIiwgb3JpZ2luYWxTdGFydFRpbWUgPSBcIiVz
XCIiLCBjdWVEYXRhLnNvdXJjZUlEKCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS5vcmlnaW5hbFN0
YXJ0VGltZSgpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgICAgICAgICBjbGllbnQoKS0+cGFyc2VX
ZWJWVFRDdWVEYXRhKHRoaXMsIGN1ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZG8gewot
ICAgICAgICAgICAgaWYgKG1faGF2ZVJlcG9ydGVkVlRUSGVhZGVyKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGVCdWZmZXIp
OwotICAgICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbnMgPSBDTUZvcm1h
dERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
IENGRGljdGlvbmFyeVJlZiBzYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbnMgPSBzdGF0aWNfY2Fz
dDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbnMsIGtDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMp
KTsKLSAgICAgICAgICAgIGlmICghc2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25zKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBDRkRhdGFSZWYgd2Vi
dnR0SGVhZGVyRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoc2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25zLCBDRlNUUigidnR0QyIpKSk7Ci0gICAgICAg
ICAgICBpZiAoIXdlYnZ0dEhlYWRlckRhdGEpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IENGRGF0YUdldExlbmd0aCh3ZWJ2dHRIZWFkZXJE
YXRhKTsKLSAgICAgICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgICAgICAvLyBBIFdlYlZUVCBoZWFkZXIgaXMgdGVybWluYXRlZCBieSAiT25lIG9y
IG1vcmUgV2ViVlRUIGxpbmUgdGVybWluYXRvcnMiIHNvIGFwcGVuZCB0d28gbGluZSBmZWVkcyB0
byBtYWtlIHN1cmUgdGhlIHBhcnNlcgotICAgICAgICAgICAgLy8gcmVjY29nbml6ZWQgdGhpcyBz
dHJpbmcgYXMgYSBmdWxsIGhlYWRlci4KLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgaGVhZGVy
OwotICAgICAgICAgICAgaGVhZGVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwgbGVuZ3RoKTsK
LSAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKLQotICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiICAgIHZ0dCBoZWFkZXIgPSBcbiVzIiwgaGVhZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRGaWxlSGVhZGVyKHRoaXMs
IGhlYWRlci50b1N0cmluZygpKTsKLSAgICAgICAgICAgIG1faGF2ZVJlcG9ydGVkVlRUSGVhZGVy
ID0gdHJ1ZTsKLSAgICAgICAgfSB3aGlsZSAoMCk7Ci0KLSAgICAgICAgbV9zYW1wbGVJbnB1dEJ1
ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3RoKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8
IFBMQVRGT1JNKElPUykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaAppbmRleCAzOGM1OWJjZGY4NWFmMzc0YjA2ZGMzODE4YmNmZTViNWM1MzM3Y2Q2Li4y
ZDUxYWFiM2QxNjQ4MDdkYWFhNWQyMTA3NmY3NzQ0ZGZhZDJlNWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzQmVlblJlcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNCZWVu
UmVwb3J0ZWQ7IH0KICAgICB2b2lkIHNldEhhc0JlZW5SZXBvcnRlZChib29sIHJlcG9ydGVkKSB7
IG1faGFzQmVlblJlcG9ydGVkID0gcmVwb3J0ZWQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzQ3VlKENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENGQXJyYXlSZWYgbmF0aXZlU2Ft
cGxlcywgZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBk
b3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldEN1ZVZhbHVlcygpOwogCiAgICAgdm9pZCBi
ZWdpblNlZWtpbmcoKTsKQEAgLTY4LDE1ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEluQmFu
ZAogICAgIH07CiAgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNvbnN0
ID0gMDsKLQorICAgIAogICAgIHZpcnR1YWwgZG91YmxlIHN0YXJ0VGltZVZhcmlhbmNlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4yNTsgfQotCisgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCosIEN1ZUZvcm1hdCk7
CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCopOwog
CiAgICAgdm9pZCBwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYsIEdl
bmVyaWNDdWVEYXRhKik7Ci0gICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJh
eVJlZiwgZG91YmxlKTsKLSAgICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlSZWYs
IGRvdWJsZSk7CiAgICAgdm9pZCByZW1vdmVDb21wbGV0ZWRDdWVzKCk7CiAKICAgICBkb3VibGUg
bV9jdXJyZW50Q3VlU3RhcnRUaW1lOwpAQCAtODUsOCArODMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
VmVjdG9yPFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4+IG1fY3VlczsKICAgICBBVkZJbmJhbmRUcmFj
a1BhcmVudCogbV9vd25lcjsKIAotICAgIFZlY3RvcjxjaGFyPiBtX3NhbXBsZUlucHV0QnVmZmVy
OwotCiAgICAgZW51bSBQZW5kaW5nQ3VlU3RhdHVzIHsKICAgICAgICAgTm9uZSwKICAgICAgICAg
RGVsaXZlcmVkRHVyaW5nU2VlaywKQEAgLTk3LDcgKzkzLDYgQEAgcHJvdGVjdGVkOgogICAgIGlu
dCBtX2luZGV4OwogICAgIGJvb2wgbV9oYXNCZWVuUmVwb3J0ZWQ7CiAgICAgYm9vbCBtX3NlZWtp
bmc7Ci0gICAgYm9vbCBtX2hhdmVSZXBvcnRlZFZUVEhlYWRlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YuY3BwCmluZGV4IGFmY2I3MDY0NGViNTQ3MzIyMTIzNTFkZjM4NWI0YTFmMDRh
MWQ1NTkuLjJhYmI3MmRhMDBmYjE3M2FlM2U1NGQ0MTQyMWY2NzFjZDg0MTNmNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcApA
QCAtNDUsOCArNDUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihBVkZJbmJhbmRUcmFja1Bh
cmVudCogcGxheWVyLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uLCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgZm9ybWF0KQotICAgIDogSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRihwbGF5ZXIsIGZvcm1hdCkKK0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNG
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVy
LCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYgc2VsZWN0aW9uKQorICAgIDogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIpCiAgICAgLCBtX21lZGlhU2VsZWN0aW9uT3B0aW9uKHNl
bGVjdGlvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkNGLmgKaW5kZXggODhmNzMyYWNlMTNmZjc2YzMxNTA4ZTU3OGNlMjUyNTRhOGYz
NGU1MC4uZDM5ZWJjYjM1MDhiNDg0YTMzN2MxMjVjYjAxZDJiZDgxYjdiNjMyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKQEAgLTM2
LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZDRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRj4gY3JlYXRl
KEFWRkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25S
ZWYgc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgZm9ybWF0KQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUo
QVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJl
ZiBzZWxlY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9uLCBmb3JtYXQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRihwbGF5ZXIsIHNl
bGVjdGlvbikpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsg
fQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9u
UmVmIG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbi5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YoQVZGSW5iYW5kVHJhY2tQYXJlbnQqLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYs
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCk7CisgICAgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YoQVZGSW5iYW5kVHJhY2tQYXJlbnQqLCBBVkNGTWVkaWFTZWxlY3Rpb25PcHRp
b25SZWYpOwogICAgIAogICAgIFJldGFpblB0cjxBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWY+
IG1fbWVkaWFTZWxlY3Rpb25PcHRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggMGJlYWQ5
ZmEzODFjYmNhN2E4Y2RhMDFiZmY0OGVmMjU3MjE5MjVlZS4uZDU2ZjU2NzAyOTAxNDM4NmNiZDkz
ODI1MjY4MDZkZDcxNmM2ZjBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwcm9jZXNzTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKCkKICAgICAgICAgaWYgKCFuZXdUcmFjaykKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWQ0Y6OmNyZWF0ZSh0aGlzLCBvcHRpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Okdl
bmVyaWMpKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZChJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRjo6Y3JlYXRlKHRoaXMsIG9wdGlvbikpOwogICAgIH0KIAogICAgIHByb2Nlc3NOZXdB
bmRSZW1vdmVkVGV4dFRyYWNrcyhyZW1vdmVkVGV4dFRyYWNrcyk7CkBAIC0xNTk0LDEyICsxNTk0
LDExIEBAIHZvaWQgQVZGV3JhcHBlcjo6c2Vla1RvVGltZShkb3VibGUgdGltZSwgZG91YmxlIG5l
Z2F0aXZlVG9sZXJhbmNlLCBkb3VibGUgcG9zaXRpCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVE
SUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9T
VVBQT1JUKQogc3RydWN0IExlZ2libGVPdXRwdXREYXRhIHsKICAgICBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gbV9hdHRyaWJ1dGVkU3RyaW5nczsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9z
YW1wbGVzOwogICAgIGRvdWJsZSBtX3RpbWU7CiAgICAgdm9pZCogbV9jb250ZXh0OwogCi0gICAg
TGVnaWJsZU91dHB1dERhdGEoQ0ZBcnJheVJlZiBzdHJpbmdzLCBDRkFycmF5UmVmIHNhbXBsZXMs
IGRvdWJsZSB0aW1lLCB2b2lkKiBjb250ZXh0KQotICAgICAgICA6IG1fYXR0cmlidXRlZFN0cmlu
Z3Moc3RyaW5ncyksIG1fc2FtcGxlcyhzYW1wbGVzKSwgbV90aW1lKHRpbWUpLCBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICBMZWdpYmxlT3V0cHV0RGF0YShDRkFycmF5UmVmIHN0cmluZ3MsIGRvdWJs
ZSB0aW1lLCB2b2lkKiBjb250ZXh0KQorICAgICAgICA6IG1fYXR0cmlidXRlZFN0cmluZ3Moc3Ry
aW5ncyksIG1fdGltZSh0aW1lKSwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgewogICAgIH0KIH07
CkBAIC0xNjI0LDEwICsxNjIzLDEwIEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lk
KiBjb250ZXh0KQogICAgIGlmICghc2VsZi0+bV9jdXJyZW50VGV4dFRyYWNrKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzZWxmLT5tX2N1cnJlbnRUZXh0VHJhY2stPnByb2Nlc3NDdWUobGVnaWJs
ZU91dHB1dERhdGEtPm1fYXR0cmlidXRlZFN0cmluZ3MuZ2V0KCksIGxlZ2libGVPdXRwdXREYXRh
LT5tX3NhbXBsZXMuZ2V0KCksIGxlZ2libGVPdXRwdXREYXRhLT5tX3RpbWUpOworICAgIHNlbGYt
Pm1fY3VycmVudFRleHRUcmFjay0+cHJvY2Vzc0N1ZShsZWdpYmxlT3V0cHV0RGF0YS0+bV9hdHRy
aWJ1dGVkU3RyaW5ncy5nZXQoKSwgbGVnaWJsZU91dHB1dERhdGEtPm1fdGltZSk7CiB9CiAKLXZv
aWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFycmF5UmVmIGF0dHJp
YnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIENNVGltZSBpdGVt
VGltZSkKK3ZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFycmF5
UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIC8qbmF0aXZlU2FtcGxlQnVmZmVycyov
LCBDTVRpbWUgaXRlbVRpbWUpCiB7CiAgICAgQVNTRVJUKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgIT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7CiAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1hcExvY2soKSk7CkBAIC0xNjQxLDcgKzE2NDAsNyBAQCB2b2lkIEFWRldyYXBwZXI6Omxl
Z2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVP
dXRwdQogCiAgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0gc2VsZi0+bV9sZWdpYmxlT3V0cHV0
KTsKIAotICAgIE93blB0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91dHB1dERhdGEgPSBh
ZG9wdFB0cihuZXcgTGVnaWJsZU91dHB1dERhdGEoYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNh
bXBsZUJ1ZmZlcnMsIENNVGltZUdldFNlY29uZHMoaXRlbVRpbWUpLCBjb250ZXh0KSk7CisgICAg
T3duUHRyPExlZ2libGVPdXRwdXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YSA9IGFkb3B0UHRyKG5l
dyBMZWdpYmxlT3V0cHV0RGF0YShhdHRyaWJ1dGVkU3RyaW5ncywgQ01UaW1lR2V0U2Vjb25kcyhp
dGVtVGltZSksIGNvbnRleHQpKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgbGVnaWJsZU91dHB1dERhdGEubGVha1B0cigpLCBwcm9jZXNzQ3VlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5oCmluZGV4IDBjYWRhZjIxM2ExMjVjZDlkMmY4ZTA3MDAyZjYyODM0NzhlN2Q3
MWYuLjRiNzgwYmZjMjg2MzRlNDcwZGEwM2Y5YjM1Y2U3NGNkZjM1ZmExZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aApAQCAtMzEsMTYgKzMxLDE1IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0Owog
T0JKQ19DTEFTUyBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDIDogcHVibGljIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBs
YXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKnNlbGVjdGlvbiwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBwbGF5
ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24pCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwg
c2VsZWN0aW9uLCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQyhwbGF5ZXIsIHNlbGVjdGlvbikpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpAQCAtNjIsNyArNjEsNyBAQCBw
dWJsaWM6CiAgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqbWVkaWFTZWxlY3Rpb25PcHRpb24o
KSBjb25zdCB7IHJldHVybiBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyhBVkZJbmJhbmRUcmFja1Bh
cmVudCosIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6
Q3VlRm9ybWF0KTsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyhBVkZJbmJhbmRU
cmFja1BhcmVudCosIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAgICAgCiAgICAgUmV0YWlu
UHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IG1fbWVkaWFTZWxlY3Rpb25PcHRpb247CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5tbQppbmRleCAwYjJiMTg0MzM2ZmI2NTMzN2Y1MTU5ZWVhYTRlMDRjYzU3YWI5YWMx
Li4yYjMwOGRjZWY4N2Y2ZDg1MzQ3ODQ5M2M1MTg3NGJhYTI4NDUyYzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bQpAQCAtNzYsOCArNzYsOCBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQsIE5TU3RyaW5nICopCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDKEFWRkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsIEFWTWVkaWFTZWxlY3Rp
b25PcHRpb24gKnNlbGVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZv
cm1hdCkKLSAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVyLCBmb3JtYXQpCitJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akMoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
c2VsZWN0aW9uKQorICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIpCiAgICAg
LCBtX21lZGlhU2VsZWN0aW9uT3B0aW9uKHNlbGVjdGlvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Rk9iakMubW0KaW5kZXggMTNjMDVlYjE0NTBiMzI3YjIxNGY0YTc1MjFjNmY0MDIwNzUxNjNiYS4u
YmFmODY5ZDYxNTk4Y2FkNTg4YjcwMDA1N2Q3ZGZiZTgyMmVkYmIyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMubW0KQEAgLTU2LDcgKzU2LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0
aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24sIE5TU3RyaW5nICopCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwbGF5ZXIsIEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYocGxheWVyLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpHZW5lcmljKQor
ICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIpCiAgICAgLCBtX3BsYXllckl0
ZW1UcmFjayh0cmFjaykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA3MjA2NzhlMTQ3
MzNmZDI2MDY2NjUwNzIzYWQxMmMwOGM4YjdlMDQ4Li4yOGQ5NTNjMjk0Mzc4NjkxOTljNjA3ZTY3
M2UwODIzMjJkMDQzYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC03Niw3ICs3Niw3IEBA
IHB1YmxpYzoKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkK
ICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBwbGF5ZXJJdGVtKCkgY29uc3QgeyByZXR1cm4g
bV9hdlBsYXllckl0ZW07IH0KLSAgICB2b2lkIHByb2Nlc3NDdWUoTlNBcnJheSAqLCBOU0FycmF5
ICosIGRvdWJsZSk7CisgICAgdm9pZCBwcm9jZXNzQ3VlKE5TQXJyYXkgKiwgZG91YmxlKTsKICAg
ICB2b2lkIGZsdXNoQ3VlcygpOwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCBkMjk2NjMyZjVkMTE5ZTM3YTY0NDEzNGQyYzNiOTJmMDBlZWNmOTMyLi4yMGM4MmNkNzBj
OTQ2MmI0Yzc0MTliMWM2ODRkZTNjNTgyNWI2MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKG1fYXZB
c3NldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCglcCkgLSB1cmwgPSAlcyIs
IHRoaXMsIHVybC51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKCVwKSIsIHRoaXMpOwog
CiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKQEAgLTgwOCw4ICs4MDgsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSgp
CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFW
Rk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQogICAgIGNvbnN0IE5TVGltZUludGVy
dmFsIGxlZ2libGVPdXRwdXRBZHZhbmNlSW50ZXJ2YWwgPSAyOwogCi0gICAgUmV0YWluUHRyPE5T
QXJyYXk+IHN1YnR5cGVzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmtDTVN1YnRpdGxlRm9ybWF0VHlwZV9X
ZWJWVFRdLCBuaWxdKTsKLSAgICBtX2xlZ2libGVPdXRwdXQgPSBhZG9wdE5TKFtbQVZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dCBhbGxvY10gaW5pdFdpdGhNZWRpYVN1YnR5cGVzRm9yTmF0aXZlUmVw
cmVzZW50YXRpb246c3VidHlwZXMuZ2V0KCldKTsKKyAgICBtX2xlZ2libGVPdXRwdXQgPSBhZG9w
dE5TKFtbQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBhbGxvY10gaW5pdFdpdGhNZWRpYVN1YnR5
cGVzRm9yTmF0aXZlUmVwcmVzZW50YXRpb246W05TQXJyYXkgYXJyYXldXSk7CiAgICAgW21fbGVn
aWJsZU91dHB1dC5nZXQoKSBzZXRTdXBwcmVzc2VzUGxheWVyUmVuZGVyaW5nOllFU107CiAKICAg
ICBbbV9sZWdpYmxlT3V0cHV0LmdldCgpIHNldERlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgp
IHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOwpAQCAtMTU3OCw4ICsxNTc3LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFja3NDaGFuZ2VkKCkK
ICAgICB9CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCi0g
ICAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqbGVnaWJsZUdyb3VwID0gc2FmZU1lZGlhU2Vs
ZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKTsKLSAgICBpZiAobGVnaWJsZUdyb3VwICYmIG1f
Y2FjaGVkVHJhY2tzKSB7CisgICAgaWYgKEFWTWVkaWFTZWxlY3Rpb25Hcm91cFR5cGUgKmxlZ2li
bGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkpIHsKICAg
ICAgICAgaGFzQ2FwdGlvbnMgPSBbW0FWTWVkaWFTZWxlY3Rpb25Hcm91cCBwbGF5YWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbGVnaWJsZUdyb3VwIG9wdGlvbnNdXSBjb3VudF07
CiAgICAgICAgIGlmIChoYXNDYXB0aW9ucykKICAgICAgICAgICAgIHByb2Nlc3NNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoKTsKQEAgLTIxNjYsNyArMjE2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucygpCiAgICAg
ICAgIH0KICNlbmRpZgogCi0gICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBvcHRpb24sIEluYmFuZFRleHRUcmFja1By
aXZhdGU6OkdlbmVyaWMpKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZChJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMsIG9wdGlvbikpOwogICAgIH0KIAogICAg
IHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhyZW1vdmVkVGV4dFRyYWNrcyk7CkBAIC0y
MTgyLDEyICsyMTgwLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cHJvY2Vzc01ldGFkYXRhVHJhY2soKQogICAgIHBsYXllcigpLT5hZGRUZXh0VHJhY2sobV9t
ZXRhZGF0YVRyYWNrKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwcm9jZXNzQ3VlKE5TQXJyYXkgKmF0dHJpYnV0ZWRTdHJpbmdzLCBOU0FycmF5ICpuYXRp
dmVTYW1wbGVzLCBkb3VibGUgdGltZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cHJvY2Vzc0N1ZShOU0FycmF5ICphdHRyaWJ1dGVkU3RyaW5ncywgZG91YmxlIHRp
bWUpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUZXh0VHJhY2spCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY3VycmVudFRleHRUcmFjay0+cHJvY2Vzc0N1ZShyZWludGVycHJldF9jYXN0PENGQXJy
YXlSZWY+KGF0dHJpYnV0ZWRTdHJpbmdzKSwgcmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihu
YXRpdmVTYW1wbGVzKSwgdGltZSk7CisgICAgbV9jdXJyZW50VGV4dFRyYWNrLT5wcm9jZXNzQ3Vl
KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oYXR0cmlidXRlZFN0cmluZ3MpLCB0aW1lKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpmbHVzaEN1ZXMo
KQpAQCAtMjczNiwxMiArMjczNCwxMSBAQCBOU0FycmF5KiBhc3NldFRyYWNrTWV0YWRhdGFLZXlO
YW1lcygpCiAKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IHN0cm9uZ1Nl
bGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBzdHJvbmdTdHJpbmdzID0gc3RyaW5n
czsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3Ryb25nU2FtcGxlcyA9IG5hdGl2ZVNhbXBsZXM7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ryb25nU3RyaW5ncywgc3Ryb25n
U2FtcGxlcywgaXRlbVRpbWVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBz
dHJvbmdTdHJpbmdzLCBpdGVtVGltZV0gewogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiBjYWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2s7CiAgICAgICAg
IGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhbGxiYWNrLT5w
cm9jZXNzQ3VlKHN0cm9uZ1N0cmluZ3MuZ2V0KCksIHN0cm9uZ1NhbXBsZXMuZ2V0KCksIENNVGlt
ZUdldFNlY29uZHMoaXRlbVRpbWUpKTsKKyAgICAgICAgY2FsbGJhY2stPnByb2Nlc3NDdWUoc3Ry
b25nU3RyaW5ncy5nZXQoKSwgQ01UaW1lR2V0U2Vjb25kcyhpdGVtVGltZSkpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmgKaW5kZXggY2JhMDE3NmRiMTRhMThhMTM2OTI4NTFkMDYwYWMwMDc1Zjk5NjFk
MC4uZmY0NWIyMTE3M2Y1Y2U1MTVlNmJmYTA4NGFmMzY2MDdlN2FkODI1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIsIHNlbGVjdGlvbikpOwogICAgIH0KICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBk
b3VibGUpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlS
ZWYsIGRvdWJsZSkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0Q3VlVmFsdWVz
KCkgb3ZlcnJpZGUgeyB9CiAgICAgCiAgICAgdmlydHVhbCBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRl
Z29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE91dE9mQmFuZDsgfQpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgT3V0T2ZCYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRihBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCBBVk1lZGlhU2VsZWN0aW9uT3B0
aW9uKiBzZWxlY3Rpb24pCi0gICAgICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5
ZXIsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkdlbmVyaWMpCisgICAgICAgIDogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIpCiAgICAgICAgICwgbV9tZWRpYVNlbGVjdGlvbk9wdGlv
bihzZWxlY3Rpb24pCiAgICAgewogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>