<?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>237502</bug_id>
          
          <creation_ts>2022-03-05 10:43:54 -0800</creation_ts>
          <short_desc>Optimize the passing of data across threads</short_desc>
          <delta_ts>2022-03-07 16:53:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237481</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237568</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1848538</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 10:43:54 -0800</bug_when>
    <thetext>Optimize de passing of data across threads by optimizing the cases where isolatedCopy() is called on a r-value reference and by calling isolatedCopy() on r-value references whenever possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848540</commentid>
    <comment_count>1</comment_count>
      <attachid>453912</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 10:56:32 -0800</bug_when>
    <thetext>Created attachment 453912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848541</commentid>
    <comment_count>2</comment_count>
      <attachid>453913</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 11:04:36 -0800</bug_when>
    <thetext>Created attachment 453913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848543</commentid>
    <comment_count>3</comment_count>
      <attachid>453914</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 11:07:27 -0800</bug_when>
    <thetext>Created attachment 453914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848559</commentid>
    <comment_count>4</comment_count>
      <attachid>453920</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 13:29:25 -0800</bug_when>
    <thetext>Created attachment 453920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848564</commentid>
    <comment_count>5</comment_count>
      <attachid>453920</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 16:00:54 -0800</bug_when>
    <thetext>Comment on attachment 453920
Patch

Some failures on EWS debug. I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848565</commentid>
    <comment_count>6</comment_count>
      <attachid>453922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 16:14:20 -0800</bug_when>
    <thetext>Created attachment 453922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848572</commentid>
    <comment_count>7</comment_count>
      <attachid>453926</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-05 18:21:23 -0800</bug_when>
    <thetext>Created attachment 453926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848868</commentid>
    <comment_count>8</comment_count>
      <attachid>453926</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-07 11:43:29 -0800</bug_when>
    <thetext>Comment on attachment 453926
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848875</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-07 12:01:57 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 453926 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848877</commentid>
    <comment_count>10</comment_count>
      <attachid>454010</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 12:05:12 -0800</bug_when>
    <thetext>Created attachment 454010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848891</commentid>
    <comment_count>11</comment_count>
      <attachid>454010</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 12:29:29 -0800</bug_when>
    <thetext>Comment on attachment 454010
Patch

Clearing flags on attachment: 454010

Committed r290901 (248132@trunk): &lt;https://commits.webkit.org/248132@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848892</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 12:29:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848893</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-07 12:30:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/89923434&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453912</attachid>
            <date>2022-03-05 10:56:32 -0800</date>
            <delta_ts>2022-03-05 11:04:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220305105631.patch</filename>
            <type>text/plain</type>
            <size>161337</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE3OWY1OWI4NzkyNDYzODUyMjg5Y2Yy
ZmEyNzEzMThlMDE5MzhkMmMuLmU0YTgyZjg3NGNmNjFiNDIyOTdmNTkzZjA0M2YzNmE4MzdiYjZk
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBkZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3Nz
IHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERyb3AgaXNvbGF0ZWRDb3B5KCkgb24gVmVjdG9yIHNpbmNlIENyb3NzVGhyZWFkQ29waWVyIGFs
cmVhZHkgaGFzIGxvZ2ljIHRvCisgICAgICAgIGlzb2xhdGUtY29weSBhIFZlY3Rvci4gVGhlIGxv
Z2ljIGluIENyb3NzVGhyZWFkQ29waWVyIGhhcyB0aGUgYmVuZWZpdCBvZgorICAgICAgICB3b3Jr
aW5nIG9uIHR5cGVzIHRoYXQgZG8gbm90IGltcGxlbWVudCBpc29sYXRlZENvcHkoKSAoZS5nLiBh
IFZlY3RvciBvZgorICAgICAgICBzdGQ6Om9wdGlvbmFsIG9yIGEgVmVjdG9yIG9mIHN0ZDo6dmFy
aWFudCkuCisKKyAgICAgICAgSW1wcm92ZSB0aGUgQ3Jvc3NUaHJlYWRDb3BpZXIgdG8gb3B0aW1p
emUgdGhlIGNhc2Ugd2hlcmUgY3Jvc3NUaHJlYWRDb3B5KCkKKyAgICAgICAgaXMgY2FsbGVkIG9u
IGEgci12YWx1ZSByZWZlcmVuY2UgaW4gbW9yZSBjYXNlcy4gSW4gcGFydGljdWxhciwgdGhlIGxv
Z2ljCisgICAgICAgIGZvciBWZWN0b3IsIEhhc2hTZXQsIEhhc2hNYXAsIHN0ZDo6cGFpciwgc3Rk
Ojp2YXJpYW50IHdhcyBpbXByb3ZlZC4gSQorICAgICAgICBhbHNvIGFkZGVkIEFQSSB0ZXN0IGNv
dmVyYWdlIGZvciB0aG9zZS4KKworICAgICAgICBUaGUgQVBJIHRlc3RzIGFsc28gZm91bmQgYSBi
dWcgd2hlcmUgY3Jvc3NUaHJlYWRDb3B5KCkgd2FzIGluY29ycmVjdGx5CisgICAgICAgIG1vdmlu
ZyB0aGUgc291cmNlIHdoZW4gY2FsbGVkIG9uIGEgc3RkOjp2YXJpYW50IHRoYXQgd2FzIG5vdCBh
IHItdmFsdWUKKyAgICAgICAgcmVmZXJlbmNlLiBUaGlzIGJ1ZyBpcyBmaXhlZCBpbiB0aGlzIHBh
dGNoIHRvby4KKworICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGllci5oOgorICAgICAgICAq
IHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TWFsbG9jPjo6aXNvbGF0ZWRDb3B5KTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXVEY6OkZp
bGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKToKKwogMjAyMi0wMy0wNCAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEJvb2tzIEFTU0VSVHMg
dXBvbiBvcGVuaW5nIGEgYm9vayB3aXRoIGEgZGVidWcgYnVpbGQgb2YgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggY2ViYjFiZTQ5OWFiNTI2MDQ1M2Q5ZDkzODA1MWZjODhiMjA2ZDlmZi4uOTE3ODEyY2I4
MDliNjA0M2U2YTI4ZjRjOWE1ZWI4NDc2ZWUwZWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
MSBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplIGRlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgaXNvbGF0ZWRD
b3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVlIHJlZmVyZW5jZXMgd2hlbiB0aGUg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGltaXplZC4gQWxzbyBjYWxsIGlzb2xh
dGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSByLXZhbHVlIHJlZmVyZW5jZQorICAg
ICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0aGVzZSBvcHRpbWl6YXRpb25zLgor
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjppc29sYXRlQ2FjaGVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zOjppc29sYXRlZENvcHkpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvczo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlv
bnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldHJpZXZlUmVjb3Jkc09wdGlvbnM6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXRyaWV2ZVJlY29yZHNPcHRpb25zOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlzdGVk
Q2hpbGQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaXN0ZWRDaGls
ZDo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRp
Zmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3Jk
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OnBv
cHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJl
Y29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJFcnJvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJFcnJvcjo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkVycm9yOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
Yi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJM
b2NrTWFuYWdlclNuYXBzaG90OjpJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdDo6SW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNob3Q6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90Ojppc29sYXRlZENv
cHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1EZXNjcmlwdG9yOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbURlc2NyaXB0b3I6Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
cm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0
VGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5o
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpjcmVhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlT3BlblRhc2s6OmRvUGVyZm9ybVRhc2spOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9y
aWdpbkxvY2tGb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
Ok1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENvcHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJl
ZGlyZWN0QWN0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9u
OjpRdWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpR
dWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5z
Zm9ybTo6UXVlcnlLZXlWYWx1ZTo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YTo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QpOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb246Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjpjaGVj
a1ZhbGlkaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uUnVsZTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uUnVsZTo6aXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+VHJpZ2dlcik6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RXhj
ZXB0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9u
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6aXNvbGF0ZWRDb3B5KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9uRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIGRvbS9FeGNlcHRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25E
YXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uT3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9EaXJlY3Rv
cnlGaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUluZm9ybWF0aW9u
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUluZm9ybWF0aW9u
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzV2l0aEltYWdl
VHJhbnNjb2RpbmcpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjp1cGRhdGVQcmVkaWN0
ZWRCYXNlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDoK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICog
bG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDb250YWluZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvbGljeUNvbnRhaW5lcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBvbGljeUNvbnRhaW5lcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2Fk
ZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9r
ZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3Jl
dFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVk
Q29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJs
ZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjppc29s
YXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNpdGU6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25j
ZTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNlY3JldFRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRv
a2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VUaW1pbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZzo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VUaW1pbmcuaDoKKyAgICAgICAgKiBsb2FkZXIvU2VydmVyVGlt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclRpbWluZzo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZlclRpbWluZzo6aXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKiBsb2FkZXIvU2VydmVyVGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIHBhZ2UvQ2xpZW50T3JpZ2luLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDbGllbnRPcmlnaW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDbGllbnRPcmlnaW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGFnZS9Q
cm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJl
d2FybVdpdGhJbmZvcm1hdGlvbik6CisgICAgICAgICogcGFnZS9Qcm9jZXNzV2FybWluZy5oOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg6CisgICAgICAgICogcGxh
dGZvcm0vRmlsZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUlu
Zm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlckZp
bGVJbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2VsZWN0aW9u
T3B0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FjaGU6OnByZXdhcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OlByZXdh
cm1JbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmlj
RmFtaWxpZXM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHZW5lcmljRmFtaWxpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0Rl
Y29kaW5nUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhYmFzZTo6Y29sbGVjdGlv
bkZvckZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnByZXdhcm0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06
CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAg
IChpc29sYXRlZENvcHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db25m
aWd1cmF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b25maWd1cmF0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25maWd1cmF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25maWd1cmF0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxJbml0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJbml0Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpDb21t
b25IZWFkZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwOjpDb21tb25IZWFkZXI6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwOjpVbmNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OlVuY29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xhaW0pOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjaGVkdWxlUHVzaENoYW5nZXMpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRQYXJhbWV0ZXJzOjppc29sYXRlZENvcHkpOgorCiAyMDIyLTAzLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQm9v
a3MgQVNTRVJUcyB1cG9uIG9wZW5pbmcgYSBib29rIHdpdGggYSBkZWJ1ZyBidWlsZCBvZiBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZWFjZWY4MDk3MjhmMzhmNDJmNzBkMTkyNGNkNmRkYTEwMjdjODlhNC4u
ZDM0NjQ3OWYxM2MxMjE2YjE3ZjRkZmYwYzZjMjBjYzEwYWUxYWFhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE9wdGltaXplIGRlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgaXNv
bGF0ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVlIHJlZmVyZW5jZXMgd2hl
biB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGltaXplZC4gQWxzbyBjYWxs
IGlzb2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSByLXZhbHVlIHJlZmVyZW5j
ZQorICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0aGVzZSBvcHRpbWl6YXRp
b25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvUENNRGF0YWJhc2VJZk5lY2Vz
c2FyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFi
bGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3I6Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JP
cmlnaW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OkRlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1
Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdJbmZvLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6U3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllci5tbToK
KyAgICAgICAgKFdlYktpdDo6TW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllcjo6Y2xhc3Np
ZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TWVkaWFBY2Nlc3NpYmlsaXR5UHJl
ZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aElt
YWdlVHJhbnNjb2RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAzLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQm9v
a3MgQVNTRVJUcyB1cG9uIG9wZW5pbmcgYSBib29rIHdpdGggYSBkZWJ1ZyBidWlsZCBvZiBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZjZiODg5ZTJlZmViYWFlZmJiZmU1YjVjOTg4NzJi
OWZmOGM3NjYxYS4uZDM1ZDEyYzExMTY3NGZkY2U5Y2NlZmM1ZWE1ZWU0YzYwMjI1NWY5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGRlIHBhc3Npbmcgb2Yg
ZGF0YSBhY3Jvc3MgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG1vcmUgaXNvbGF0ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBv
biByLXZhbHVlIHJlZmVyZW5jZXMgd2hlbiB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2Fu
IGJlIG9wdGltaXplZC4gQWxzbyBjYWxsIGlzb2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5
KCkgb24gYSByLXZhbHVlIHJlZmVyZW5jZQorICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBs
ZXZlcmFnZSB0aGVzZSBvcHRpbWl6YXRpb25zLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorCiAyMDIyLTAzLTAyICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHkgV2ViS2l0IGZyYW1ld29ya3MgYW5k
IFhQQyBwcm9jZXNzZXMgdG8gU2Vjb25kYXJ5IFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGll
ci5oCmluZGV4IDAxZDJhNzc2MzNiMGIwMmNmNGRmNTI1MGZmZDIzNGNiZjAzOTdiODcuLjQxZTEx
YjM2NTc3ZGExOGJhNzA5ZmYxNGRiNDBmM2QyZjYzYjkxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaApAQCAtMTQyLDYgKzE0MiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgog
ICAgICAgICAgICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5kKENyb3NzVGhyZWFkQ29waWVy
PFQ+Ojpjb3B5KG9iamVjdCkpOwogICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CiAgICAgfQor
ICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlwZSYmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGZvciAo
YXV0byBpdGVyYXRvciA9IHNvdXJjZS5iZWdpbigpLCBpdGVyYXRvckVuZCA9IHNvdXJjZS5lbmQo
KTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgKytpdGVyYXRvcikKKyAgICAgICAgICAgICppdGVy
YXRvciA9IENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KFdURk1vdmUoKml0ZXJhdG9yKSk7Cisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKHNvdXJjZSk7CisgICAgfQogfTsKICAgICAKIC8vIERlZmF1
bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhhc2hTZXRzIG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xh
c3NlcwpAQCAtMTU0LDI2ICsxNjAsNDMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hTZXQ8VD4gPiB7CiAgICAgICAg
ICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8VD46OmNvcHkob2JqZWN0KSk7
CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29w
eShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgVHlwZSBkZXN0aW5hdGlvbjsKKyAgICAg
ICAgZGVzdGluYXRpb24ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzb3VyY2Uuc2l6ZSgpKTsKKyAg
ICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGVzdGluYXRpb24u
YWRkKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KHNvdXJjZS50YWtlQW55KCkpKTsKKyAgICAg
ICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6
YXRpb24gZm9yIEhhc2hNYXBzIG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xhc3NlcwotdGVtcGxh
dGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIEhhc2hNYXA8SywgVj4gPiB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEssIFY+
IFR5cGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmcsIHR5cGVuYW1lIFRhYmxlVHJhaXRzQXJnPgorc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0c0FyZz4+IHsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFw
cGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0c0FyZz4gVHlwZTsKICAgICBzdGF0aWMgVHlwZSBjb3B5
KGNvbnN0IFR5cGUmIHNvdXJjZSkKICAgICB7CiAgICAgICAgIFR5cGUgZGVzdGluYXRpb247Ci0g
ICAgICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBzb3VyY2UpCi0gICAgICAgICAgICBkZXN0aW5h
dGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8Sz46OmNvcHkoa2V5VmFsdWUua2V5KSwgQ3Jvc3NU
aHJlYWRDb3BpZXI8Vj46OmNvcHkoa2V5VmFsdWUudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRv
JiBba2V5LCB2YWx1ZV0gOiBzb3VyY2UpCisgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jv
c3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6Y29weShrZXkpLCBDcm9zc1RocmVhZENvcGllcjxNYXBw
ZWRBcmc+Ojpjb3B5KHZhbHVlKSk7CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9
CisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgZm9y
IChhdXRvIGl0ZXJhdG9yID0gc291cmNlLmJlZ2luKCksIGVuZCA9IHNvdXJjZS5lbmQoKTsgaXRl
cmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpdGVyYXRvci0+a2V5ID0g
Q3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6Y29weShXVEZNb3ZlKGl0ZXJhdG9yLT5rZXkpKTsK
KyAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZSA9IENyb3NzVGhyZWFkQ29waWVyPE1hcHBlZEFy
Zz46OmNvcHkoV1RGTW92ZShpdGVyYXRvci0+dmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gV1RGTW92ZShzb3VyY2UpOworICAgIH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6
YXRpb24gZm9yIHBhaXJzIG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xhc3NlcwogdGVtcGxhdGU8
dHlwZW5hbWUgRiwgdHlwZW5hbWUgUz4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIHN0ZDo6cGFpcjxGLCBTPiA+IHsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxGLCBT
PiBUeXBlOwotICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBUeXBlIGNvcHkoVSYmIHNvdXJjZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShz
b3VyY2UuZmlyc3QpLCBDcm9zc1RocmVhZENvcGllcjxTPjo6Y29weShzb3VyY2Uuc2Vjb25kKSk7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29w
eShzdGQ6OmdldDwwPihzdGQ6OmZvcndhcmQ8VT4oc291cmNlKSkpLCBDcm9zc1RocmVhZENvcGll
cjxTPjo6Y29weShzdGQ6OmdldDwxPihzdGQ6OmZvcndhcmQ8VT4oc291cmNlKSkpKTsKICAgICB9
CiB9OwogCkBAIC0xODksMTEgKzIxMiwxOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgc3RkOjpvcHRpb25hbDxUPgogCiAv
LyBEZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciBzdGQ6OnZhcmlhbnQgb2YgQ3Jvc3NUaHJlYWRD
b3B5YWJsZSBjbGFzc2VzLgogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+PiB7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4g
Y29weShVJiYgc291cmNlKQorICAgIHVzaW5nIFR5cGUgPSBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+
OworICAgIHN0YXRpYyBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IGNvcHkoY29uc3QgVHlwZSYgc291
cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQoW10gKGF1dG8mIHR5cGUpIC0+
IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gewogICAgICAgICAgICAgcmV0dXJuIENyb3NzVGhyZWFk
Q29waWVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5
cGUodHlwZSk+Pj46OmNvcHkodHlwZSk7Ci0gICAgICAgIH0sIHN0ZDo6Zm9yd2FyZDxVPihzb3Vy
Y2UpKTsKKyAgICAgICAgfSwgc291cmNlKTsKKyAgICB9CisgICAgc3RhdGljIHN0ZDo6dmFyaWFu
dDxUeXBlcy4uLj4gY29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6dmlzaXQoW10gKGF1dG8mJiB0eXBlKSAtPiBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IHsKKyAg
ICAgICAgICAgIHJldHVybiBDcm9zc1RocmVhZENvcGllcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKHR5cGUpPj4+Ojpjb3B5KFdURk1vdmUodHlw
ZSkpOworICAgICAgICB9LCBXVEZNb3ZlKHNvdXJjZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5k
ZXggYzZiZGFlOWU3MjU3OGMxZTUzMDNmMWNhMjg2ZjhlNjhlYTljYjllNS4uNDY3OWExOGRmMDE0
NWQyNDVlMTcyNDFjNzlmYzZkN2JhYWExYjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTc3Niw5ICs3NzYsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCkgeyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSBjb25z
dCAmOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5
KCkgJiY7Ci0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVl
KSB7IGFwcGVuZDxWYWx1ZVR5cGU+KHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFUmJiB1
KSB7IGFwcGVuZDxGYWlsdXJlQWN0aW9uOjpDcmFzaCwgVT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgYm9vbCB0cnlBcHBlbmQo
VSYmIHUpIHsgcmV0dXJuIGFwcGVuZDxGYWlsdXJlQWN0aW9uOjpSZXBvcnQsIFU+KHN0ZDo6Zm9y
d2FyZDxVPih1KSk7IH0KQEAgLTE2NTksMjYgKzE2NTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0b3I8VD4+IHsKIH07CiAjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9j
PgotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWlubGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojppc29sYXRl
ZENvcHkoKSBjb25zdCAmCi17Ci0gICAgVmVjdG9yPFU+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
KnRoaXMpCi0gICAgICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5
KCkpOwotICAgIHJldHVybiBjb3B5OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFZlY3Rv
cjxVPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHksIE1hbGxvYz46Omlzb2xhdGVkQ29weSgpICYmCi17Ci0gICAgZm9yIChhdXRvIGl0ZXJhdG9y
ID0gYmVnaW4oKSwgaXRlcmF0b3JFbmQgPSBlbmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsg
KytpdGVyYXRvcikKLSAgICAgICAgKml0ZXJhdG9yID0gV1RGTW92ZSgqaXRlcmF0b3IpLmlzb2xh
dGVkQ29weSgpOwotICAgIHJldHVybiBXVEZNb3ZlKCp0aGlzKTsKLX0KLQogdGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgRnVuYz4KIHNpemVfdCByZW1vdmVSZXBlYXRlZEVs
ZW1lbnRzKFZlY3RvclR5cGUmIHZlY3RvciwgY29uc3QgRnVuYyYgZnVuYykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dURi93dGYv
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5kZXggYmI2MmRhYTMzODM0YzMyOGQwZTUxOWQ2ZjI1ZjRj
YjlmZmI5MTc4Ni4uMmZiMWE1ZjI1NjE3ZWZiMDM2YWE5NGYxN2JkNTM1Zjc0ZWJiNTdiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNl
L1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBGaWxl
U3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bWV0YWRhdGFVUkxTdHIKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CiAK
ICAgICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBp
dCBjYW4gdGFrZSBzb21lIHRpbWUuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCks
IHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IFdURk1vdmUo
dXJsU3RyaW5nKS5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENv
cHkoKV0gewogICAgICAgICBhdXRvIGl0ZW0gPSBhZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICAgICAgaWYg
KCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCmluZGV4IDAxZmRjOTM3Yzc1MTgxNTNlMDBiY2Ni
N2VkNTkxYTU4MTE0NGYyZGUuLmNmMWE2NzQ5Nzk3OGQyMjM0YWY0Y2Q2MzkyZGVmYzViNmFiMjJh
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9w
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRp
b25zLmgKQEAgLTMwLDcgKzMwLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENh
Y2hlUXVlcnlPcHRpb25zIHsKLSAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBj
YWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwg
aWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDYWNoZVF1ZXJ5
T3B0aW9ucyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3Jl
TWV0aG9kLCBpZ25vcmVWYXJ5LCBXVEZNb3ZlKGNhY2hlTmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsg
fQogCiAgICAgYm9vbCBpZ25vcmVTZWFyY2ggeyBmYWxzZSB9OwogICAgIGJvb2wgaWdub3JlTWV0
aG9kIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5jcHAKaW5kZXggYzBmODAzMmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMy
Ni4uYjQyODI2NWMxMjc4MjU0N2MxYTBkZTQyZjlhNmYyMmNlNDM4ZGQ1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTE1NCwxNiAr
MTU0LDYgQEAgUmVjb3JkIFJlY29yZDo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlY29yZCB7
IGlkZW50aWZpZXIsIHVwZGF0ZVJlc3BvbnNlQ291bnRlciwgcmVxdWVzdEhlYWRlcnNHdWFyZCwg
cmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIsIHJlc3BvbnNlSGVhZGVyc0d1YXJkLCByZXNwb25z
ZSwgY29weVJlc3BvbnNlQm9keShyZXNwb25zZUJvZHkpLCByZXNwb25zZUJvZHlTaXplIH07CiB9
CiAKLXN0YXRpYyBpbmxpbmUgQ2FjaGVJbmZvIGlzb2xhdGVDYWNoZUluZm8oY29uc3QgQ2FjaGVJ
bmZvJiBpbmZvKQotewotICAgIHJldHVybiBDYWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGlu
Zm8ubmFtZS5pc29sYXRlZENvcHkoKSB9OwotfQotCi1DYWNoZUluZm9zIENhY2hlSW5mb3M6Omlz
b2xhdGVkQ29weSgpCi17Ci0gICAgcmV0dXJuIHsgV1RGOjptYXAoaW5mb3MsIGlzb2xhdGVDYWNo
ZUluZm8pLCB1cGRhdGVDb3VudGVyIH07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIERPTUNhY2hlRW5n
aW5lCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJh
NTczNmMxMzQ1OGVlLi5iZTVjMmMxZTM1NDBjNzZmZWM3N2VkNWM0ZjZlYTBhYjQyMjk3NWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC04
MiwxNiArODIsMjAgQEAgc3RydWN0IFJlY29yZCB7CiBzdHJ1Y3QgQ2FjaGVJbmZvIHsKICAgICB1
aW50NjRfdCBpZGVudGlmaWVyOwogICAgIFN0cmluZyBuYW1lOworCisgICAgQ2FjaGVJbmZvIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBpZGVudGlmaWVyLCBuYW1lLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICBDYWNoZUluZm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBp
ZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpIH07IH0KIH07CiAKIHN0cnVj
dCBDYWNoZUluZm9zIHsKLSAgICBDYWNoZUluZm9zIGlzb2xhdGVkQ29weSgpOworICAgIFZlY3Rv
cjxDYWNoZUluZm8+IGluZm9zOworICAgIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJbmZvcz4g
ZGVjb2RlKERlY29kZXImKTsKIAotICAgIFZlY3RvcjxDYWNoZUluZm8+IGluZm9zOwotICAgIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXI7CisgICAgQ2FjaGVJbmZvcyBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGluZm9zKSwgdXBkYXRlQ291bnRlciB9OyB9
CisgICAgQ2FjaGVJbmZvcyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKGluZm9zKSksIHVwZGF0ZUNvdW50ZXIgfTsgfQogfTsKIAogc3RydWN0IENh
Y2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3VsdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCmluZGV4IDBmYTAyYmJiZGMz
MzkxY2RiZGJjZmQ4YWJlNmFmZmY0YWZjYTE1MGYuLjc1NjA0NTk0N2Y2ZWU1MTg0ZWJkMDg5YTVk
NmZiMmNjMjhmNDU1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
UmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCkBAIC0zMyw3ICszMyw4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIHsKLSAgICBSZXRyaWV2
ZVJlY29yZHNPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgcmVxdWVzdC5p
c29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwg
c291cmNlT3JpZ2luLT5pc29sYXRlZENvcHkoKSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2Qs
IGlnbm9yZVZhcnksIHNob3VsZFByb3ZpZGVSZXNwb25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNv
cmRzT3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgcmVxdWVzdC5pc29s
YXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291
cmNlT3JpZ2luLT5pc29sYXRlZENvcHkoKSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGln
bm9yZVZhcnksIHNob3VsZFByb3ZpZGVSZXNwb25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRz
T3B0aW9ucyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUocmVxdWVzdCkuaXNv
bGF0ZWRDb3B5KCksIFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSkuaXNvbGF0ZWRD
b3B5KCksIHNvdXJjZU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCksIGlnbm9yZVNlYXJjaCwgaWdub3Jl
TWV0aG9kLCBpZ25vcmVWYXJ5LCBzaG91bGRQcm92aWRlUmVzcG9uc2UgfTsgfQogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHJpZXZlUmVjb3Jk
c09wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRl
eCA0NmZmN2NlY2QzZTIyMzI5ZDY3NWRlMjVlMmU2YmQ3OWM1NGI5MTJjLi5iZDIwNGE5Yzc5ZjQ1
MTRjZjkwMDNlY2UzNjZkYTM0Y2YxY2VjNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
QEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
dHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aQogICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQg
PSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXNv
bGF0ZWRSZXN1bHQgPSByZXN1bHQudmFsdWUoKS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgICAg
ICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1vdmUocmVzdWx0KS52YWx1ZSgpLmlzb2xhdGVkQ29w
eSgpOwogCiAgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1v
ZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKGlzb2xhdGVkUmVzdWx0KV0g
KGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5yZXRyaWV2ZUNhY2hl
c0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKQEAgLTIyMCw3
ICsyMjAsNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRl
T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcgogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX2JhdGNoRGVsZXRl
QW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9z
Y29wZS50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5l
Y3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1
ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Nj
b3BlLnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVj
dGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVl
c3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hEZWxl
dGVPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpLCBb
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0o
UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
IHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZp
ZXIsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKS5kZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc3VsdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDAxNmQxNzE3Mjg3NWQyYTUzOWM2YzJhMjk1
ZThkNTJjNDY4NTE4NDAuLjk4MmU1YjU4MzdmNWM1ZTUyODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDggQEAgc3RydWN0IExpc3RlZENoaWxkIHsKICAgICBTdHJp
bmcgZmlsZW5hbWU7CiAgICAgRmlsZVN5c3RlbTo6RmlsZVR5cGUgdHlwZTsKIAotICAgIExpc3Rl
ZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRD
b3B5KCksIHR5cGUgfTsgfQorICAgIExpc3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBmaWxlbmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTGlzdGVk
Q2hpbGQgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGZpbGVuYW1lKS5pc29s
YXRlZENvcHkoKSwgdHlwZSB9OyB9CiB9OwogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlU3lz
dGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYg
ZnVsbFBhdGgpCkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKIAog
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNvbnRleHQgPSBSZWYgeyBjb250ZXh0IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwg
ZGlyZWN0b3J5VmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZGlyZWN0b3J5VmlydHVhbFBh
dGgpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVj
dG9yeVdpdGhNZXRhZGF0YShmdWxsUGF0aCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb250ZXh0ID0gV1RGTW92ZShj
b250ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bGlzdGVkQ2hpbGRyZW4gPSBjcm9zc1RocmVhZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3Rv
cnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUobGlzdGVkQ2hpbGRyZW4pKSwgZGlyZWN0b3J5VmlydHVhbFBh
dGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoY29udGV4dCwg
cHJvdGVjdGVkVGhpcywgV1RGTW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQ
YXRoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTM1
NTBmYTdkOWExNTlmZTFmOWY3ZTc3NmUzZGRlNmZhNTI3ZDRmNy4uZDhmODU2NzRjZDExMGIzMTA5
ZjZhOWU0OGY3OWM2ZDdmZjViNDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC00MiwxNCAr
NDIsMjEgQEAgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNlY3VyaXQKICAgICBBU1NFUlQoIWRhdGFiYXNlTmFt
ZS5pc051bGwoKSk7CiB9CiAKLUlEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50
aWZpZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0
YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgSURCRGF0YWJh
c2VJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0KICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1l
ID0gbV9kYXRhYmFzZU5hbWUuaXNvbGF0ZWRDb3B5KCk7CiAgICAgaWRlbnRpZmllci5tX29yaWdp
biA9IG1fb3JpZ2luLmlzb2xhdGVkQ29weSgpOwogICAgIGlkZW50aWZpZXIubV9pc1RyYW5zaWVu
dCA9IG1faXNUcmFuc2llbnQ7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CiAKK0lEQkRhdGFi
YXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpICYmCit7
CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgaWRlbnRpZmllci5t
X2RhdGFiYXNlTmFtZSA9IFdURk1vdmUobV9kYXRhYmFzZU5hbWUpLmlzb2xhdGVkQ29weSgpOwor
ICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBXVEZNb3ZlKG1fb3JpZ2luKS5pc29sYXRlZENvcHko
KTsKKyAgICBpZGVudGlmaWVyLm1faXNUcmFuc2llbnQgPSBtX2lzVHJhbnNpZW50OwogICAgIHJl
dHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IGY4M2YxOTVhNTZkZWZk
MmIzZjBlY2Q4ZTlkNjcxNGQyOTQwZDBhMjIuLjI3MWRlZDRkZWU4Yjg4OGQzMWU0YzRjMTFlMWQx
ZmM4ODlkYmE2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3JpZ2luLCBib29sIGlzVHJhbnNpZW50ID0gZmFsc2Up
OwogCi0gICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAg
IElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIElEQkRh
dGFiYXNlSWRlbnRpZmllciBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCmluZGV4IDU0NzlkNjFmMWYwM2E5ZjJmMmZl
MzkzY2Y3MmRjMjk1MjJkNTRmNTIuLmFiNTY3MjIzMWYyYmI0MjQzMmEyOWIyMDc0ZmEwYTA2N2Jj
MzQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdl
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0
UmVzdWx0LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIElEQkdldFJlc3VsdDo6aXNvbGF0ZWRD
b3B5KGNvbnN0IElEQkdldFJlc3VsdCYgc291cmNlLCBJREJHZXRSZXN1bHQmIGRlc3RpbgogICAg
IGRlc3RpbmF0aW9uLm1fcHJpbWFyeUtleURhdGEgPSBzb3VyY2UubV9wcmltYXJ5S2V5RGF0YS5p
c29sYXRlZENvcHkoKTsKICAgICBkZXN0aW5hdGlvbi5tX2tleVBhdGggPSBjcm9zc1RocmVhZENv
cHkoc291cmNlLm1fa2V5UGF0aCk7CiAgICAgZGVzdGluYXRpb24ubV9pc0RlZmluZWQgPSBzb3Vy
Y2UubV9pc0RlZmluZWQ7Ci0gICAgZGVzdGluYXRpb24ubV9wcmVmZXRjaGVkUmVjb3JkcyA9IHNv
dXJjZS5tX3ByZWZldGNoZWRSZWNvcmRzLmlzb2xhdGVkQ29weSgpOworICAgIGRlc3RpbmF0aW9u
Lm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBjcm9zc1RocmVhZENvcHkoc291cmNlLm1fcHJlZmV0Y2hl
ZFJlY29yZHMpOwogfQogCiB2b2lkIElEQkdldFJlc3VsdDo6c2V0VmFsdWUoSURCVmFsdWUmJiB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCBjZTg2N2IxYjdlNmQ2ZjE1NDllY2Q3MjYxMjdkY2M3Njk5NWE5ZDA2
Li43NzNlNWIyZDNhYTVkMjhlYmViYTgzNmY5NzcyYzg3ZDU0NjgyNmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05
MzIsNyArOTMyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
QWxsT2JqZWN0U3RvcmVSZWNvcmRzKElEQk9iamVjdFN0b3JlJgogICAgIExPRyhJbmRleGVkREJP
cGVyYXRpb25zLCAiSURCIGdldCBhbGwgb2JqZWN0IHN0b3JlIHJlY29yZHMgb3BlcmF0aW9uOiAl
cyIsIGdldEFsbFJlY29yZHNEYXRhLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6
Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAg
fSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdl
dEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CisgICAg
fSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IFdU
Rk1vdmUoZ2V0QWxsUmVjb3Jkc0RhdGEpLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9u
KSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmdldEFsbFJlY29yZHNPblNlcnZlcihvcGVyYXRp
b24sIGdldEFsbFJlY29yZHNEYXRhKTsKICAgICB9KSk7CiAKQEAgLTk1NCw3ICs5NTQsNyBAQCBS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMo
SURCSW5kZXgmIGluZGV4LCBjb25zdAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURC
IGdldCBhbGwgaW5kZXggcmVjb3JkcyBvcGVyYXRpb246ICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3Qu
Z2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRBbGxSZWNvcmRzT25T
ZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKLSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0
ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNEYXRhID0gV1RGTW92ZShnZXRBbGxSZWNvcmRzRGF0
YSkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVyKG9wZXJhdGlvbiwgZ2V0QWxsUmVjb3Jkc0RhdGEp
OwogICAgIH0pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggYzlkZDFkMDM2ZTdj
MTk0YTljY2IxNDZjMDVhMDc2MzFhZDNkZGIzYy4uN2VmOWQwYTM4N2Y3MjdkODVlYzBkZWVmNmQz
Y2FlMGRlZDAxNThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zNDQsNyArMzQ0
LDcgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3Rp
bmdSZWNvcmRzKE1lbW9yeUluZGV4JiBpbmRleCkKIAogICAgICAgICAgICAgSW5kZXhLZXkgaW5k
ZXhLZXk7CiAgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0
LCBpbmRleEluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKLSAg
ICAgICAgICAgIHJlc3VsdEluZGV4S2V5ID0gaW5kZXhLZXkuaXNvbGF0ZWRDb3B5KCk7CisgICAg
ICAgICAgICByZXN1bHRJbmRleEtleSA9IFdURk1vdmUoaW5kZXhLZXkpLmlzb2xhdGVkQ29weSgp
OwogICAgICAgICB9KTsKIAogICAgICAgICBpZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA5MjFhYTJiMGI4ODA5YjNhNGRjZjczMjE4OWRi
OTA5YTQ2MGFiMThmLi5iNTNlOGJhOTYyZjZmYjc3MjIzZGNhM2JkNGU2MmI2MWI1OTdiNTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTg4Niw3ICsxODg2LDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29y
ZChJREJPYmplY3RTdG9yZUluZm8mIG8KIAogICAgICAgICBJbmRleEtleSBpbmRleEtleTsKICAg
ICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKGdsb2JhbE9iamVjdCwgaW5mbywganNWYWx1
ZSwgaW5kZXhLZXksIG9iamVjdFN0b3JlSW5mby5rZXlQYXRoKCksIGtleSk7Ci0gICAgICAgIHJl
c3VsdEluZGV4S2V5ID0gaW5kZXhLZXkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIHJlc3VsdElu
ZGV4S2V5ID0gV1RGTW92ZShpbmRleEtleSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgfSk7CiAKICAg
ICBpZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
LmgKaW5kZXggZjRjNzVlMGUyN2E2OTA2M2Q0NzZkY2NiOWRkNzhjNWM4ZGRhNjJhYS4uYzcxZDA3
ZjY5YzNkYmI0NzBkNjExNzc2M2VkYmQ5ZDg0MTAzNzY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbi5oCkBAIC0zNiw3ICszNiw4IEBAIHN0cnVjdCBJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIAot
ICAgIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJu
IHsgbmFtZS5pc29sYXRlZENvcHkoKSwgdmVyc2lvbiB9OyB9CisgICAgSURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUobmFtZSkuaXNv
bGF0ZWRDb3B5KCksIHZlcnNpb24gfTsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
QEAgLTU5LDkgKzYwLDQgQEAgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
PiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpkZWNvZGUoRGVjb2QKICAgICByZXR1cm4gaW5m
bzsKIH0KIAotaW5saW5lIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24gSURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBuYW1lLmlz
b2xhdGVkQ29weSgpLCB2ZXJzaW9uIH07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
Y3BwCmluZGV4IDJlMGE1N2FjNjY3YjYyY2M2Y2ZiZGJlNGNmNmYxNTE4OTliMjE4YWIuLjE4ZWQ3
ZTIxYjM1NTBkMzk5NDIyOGVlMGFhN2RhNDhlOTgxZjY0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzYsMTEg
KzM2LDYgQEAgSURCRXJyb3I6OklEQkVycm9yKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4g
Y29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogfQogCi1JREJFcnJvciBJREJFcnJvcjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gSURCRXJyb3IgeyBtX2NvZGUsIG1f
bWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OwotfQotCiBTdHJpbmcgSURCRXJyb3I6Om5hbWUoKSBj
b25zdAogewogICAgIGlmICghbV9jb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBiMzBhZDM5MTc2ZjAzZmYwZDZjOTM5
OGQ2YjNlZDE5Y2QyZTk5MjFkLi4zMjk2NTZjZTlmNDI4ODdmM2QwYmY3MDhjOWIwYzYzYTkxNWUw
MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaApAQCAtNTQsNyArNTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiAhbV9jb2RlOyB9CiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICFpc051bGwoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCRXJyb3IgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgSURCRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVy
biBJREJFcnJvciB7IG1fY29kZSwgbV9tZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBJ
REJFcnJvciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgV1RG
TW92ZShtX21lc3NhZ2UpLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBJREJFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAppbmRleCAwMTVhY2Y3Mjc2OTQ1Mzc0YzRhZGI4
YWQyNDM0YmEzYjc5OWFhZmRhLi5lNzFkMmViZjIxYzRhZGZlZjI4YTJiZGFmYTFmZjg0YjNmN2Yw
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCSW5kZXhJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCSW5kZXhJbmZvLmNwcApAQCAtNDUsMTEgKzQ1LDE2IEBAIElEQkluZGV4SW5mbzo6
SURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwKIHsKIH0KIAotSURCSW5kZXhJbmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QKK0lEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0
ICYKIHsKICAgICByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBtX25hbWUuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhyZWFkQ29weShtX2tleVBhdGgpLCBtX3Vu
aXF1ZSwgbV9tdWx0aUVudHJ5IH07CiB9CiAKK0lEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlz
b2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX29iamVjdFN0
b3JlSWRlbnRpZmllciwgV1RGTW92ZShtX25hbWUpLmlzb2xhdGVkQ29weSgpLCBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShtX2tleVBhdGgpKSwgbV91bmlxdWUsIG1fbXVsdGlFbnRyeSB9OworfQor
CiAjaWYgIUxPR19ESVNBQkxFRAogCiBTdHJpbmcgSURCSW5kZXhJbmZvOjpsb2dnaW5nU3RyaW5n
KGludCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmgKaW5kZXggOWYxZWI5YTBhMTAxNDQzOGNiMjM4
NjNhYWNhMjE0YjdjZjQxYmNlNi4uYTEwZjhmNTJmMzQyMWExNzllMGRjYWQ5YWFiOTdmMmZjMWE4
ZWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQkluZGV4SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJJbmRleEluZm8uaApAQCAtMzUsNyArMzUsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSURCSW5kZXhJbmZvKCk7CiAgICAgSURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJLZXlQYXRoJiYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgSURCSW5kZXhJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIElEQkluZGV4SW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNP
UkVfRVhQT1JUIElEQkluZGV4SW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRl
bnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmNwcAppbmRleCAxMGMxYTRjNTE1ZTJl
YWVmODA5Mzk0MmJiMzZjNWQ4ZDUyMzRjMGNjLi4xZThiOGRlYTQwYmY4YmQzNmJkMjcyM2U5MjAw
MTA2MDZhZDU2MDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmNwcApAQCAtOTIsMTMgKzky
LDE3IEBAIElEQkluZGV4SW5mbyogSURCT2JqZWN0U3RvcmVJbmZvOjppbmZvRm9yRXhpc3RpbmdJ
bmRleCh1aW50NjRfdCBpZGVudGlmaWVyKQogICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwog
fQogCi1JREJPYmplY3RTdG9yZUluZm8gSURCT2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHko
KSBjb25zdAorSURCT2JqZWN0U3RvcmVJbmZvIElEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QgJgogewogICAgIElEQk9iamVjdFN0b3JlSW5mbyByZXN1bHQgPSB7IG1faWRl
bnRpZmllciwgbV9uYW1lLmlzb2xhdGVkQ29weSgpLCBjcm9zc1RocmVhZENvcHkobV9rZXlQYXRo
KSwgbV9hdXRvSW5jcmVtZW50IH07CisgICAgcmVzdWx0Lm1faW5kZXhNYXAgPSBjcm9zc1RocmVh
ZENvcHkobV9pbmRleE1hcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAotICAgIGZvciAoYXV0
byYgaXRlcmF0b3IgOiBtX2luZGV4TWFwKQotICAgICAgICByZXN1bHQubV9pbmRleE1hcC5zZXQo
aXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0KK0lEQk9iamVj
dFN0b3JlSW5mbyBJREJPYmplY3RTdG9yZUluZm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
SURCT2JqZWN0U3RvcmVJbmZvIHJlc3VsdCA9IHsgbV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1fbmFt
ZSkuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fa2V5UGF0aCkpLCBt
X2F1dG9JbmNyZW1lbnQgfTsKKyAgICByZXN1bHQubV9pbmRleE1hcCA9IGNyb3NzVGhyZWFkQ29w
eShXVEZNb3ZlKG1faW5kZXhNYXApKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3Rv
cmVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2Jq
ZWN0U3RvcmVJbmZvLmgKaW5kZXggNDAzZmQ0MDU5ODZiYzVkOTI3YjRlNjNhZGYwYzk1ZmVmMWFl
OTY5OS4uZTNhMDNiZjc1NjU4MzFhNzUwODM1OWQ1OGMyNmVhOTEyZTcxODFkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3Jl
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJP
YmplY3RTdG9yZUluZm8uaApAQCAtNDQsNyArNDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bmFtZShjb25zdCBTdHJpbmcmIG5ld05hbWUpIHsgbV9uYW1lID0gbmV3TmFtZTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgSURCT2JqZWN0U3RvcmVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSBjb25z
dCAmOworICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHko
KSAmJjsKIAogICAgIElEQkluZGV4SW5mbyBjcmVhdGVOZXdJbmRleCh1aW50NjRfdCBpbmRleElE
LCBjb25zdCBTdHJpbmcmIG5hbWUsIElEQktleVBhdGgmJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSk7CiAgICAgdm9pZCBhZGRFeGlzdGluZ0luZGV4KGNvbnN0IElEQkluZGV4SW5mbyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01h
bmFnZXJTbmFwc2hvdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9j
a01hbmFnZXJTbmFwc2hvdC5oCmluZGV4IDQ0MmMzMDNkMmE4NzRlMjk0M2VmN2FjNWY2MmZjZTM2
MDBmMmU3NWEuLjI3MDdmNzE2MmY5ZGQwYTMxOTA1YTI4NDRkNzA2YzQ2ZjIyMTMxMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25h
cHNob3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFu
YWdlclNuYXBzaG90LmgKQEAgLTM3LDcgKzM3LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25h
cHNob3QgewogICAgICAgICBXZWJMb2NrTW9kZSBtb2RlIHsgV2ViTG9ja01vZGU6OkV4Y2x1c2l2
ZSB9OwogICAgICAgICBTdHJpbmcgY2xpZW50SWQ7CiAKLSAgICAgICAgSW5mbyBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IG5hbWUuaXNvbGF0ZWRDb3B5KCksIG1vZGUsIGNsaWVudElk
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAm
IHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgbW9kZSwgY2xpZW50SWQuaXNvbGF0ZWRD
b3B5KCkgfTsgfQorICAgICAgICBJbmZvIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgbW9kZSwgV1RGTW92ZShjbGllbnRJZCkuaXNvbGF0
ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0IHsgZW5jb2RlciA8PCBuYW1lIDw8IG1vZGUgPDwg
Y2xpZW50SWQ7IH0KICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQ2LDcgKzQ3LDggQEAgc3RydWN0
IFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgewogICAgIFZlY3RvcjxJbmZvPiBoZWxkOwogICAgIFZl
Y3RvcjxJbmZvPiBwZW5kaW5nOwogCi0gICAgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShoZWxkKSwgY3Jvc3NUaHJl
YWRDb3B5KHBlbmRpbmcpIH07IH0KKyAgICBXZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVk
Q29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoaGVsZCksIGNyb3NzVGhy
ZWFkQ29weShwZW5kaW5nKSB9OyB9CisgICAgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGhlbGQpKSwgY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUocGVuZGluZykpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0IHsgZW5jb2RlciA8
PCBoZWxkIDw8IHBlbmRpbmc7IH0KICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJMb2NrTWFuYWdlclNuYXBzaG90PiBkZWNvZGUoRGVjb2RlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVz
Y3JpcHRvci5oCmluZGV4IDFlZDZjZGU3MjllZjkzNTc3MGJhOTYzN2QzYWZhNWYwMmE4ZDg2NGUu
LjVkZTU0ZjhiMzAzZDI0Yzk4NmI0NWIxZTRjZDBmY2E5YTNiMDI5NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgK
QEAgLTQyLDE2ICs0Miw4IEBAIHN0cnVjdCBBdWRpb1BhcmFtRGVzY3JpcHRvciB7CiAgICAgZmxv
YXQgbWF4VmFsdWUgeyAzLjQwMjgyMzVlMzggfTsKICAgICBBdXRvbWF0aW9uUmF0ZSBhdXRvbWF0
aW9uUmF0ZSB7IEF1dG9tYXRpb25SYXRlOjpBUmF0ZSB9OwogCi0gICAgQXVkaW9QYXJhbURlc2Ny
aXB0b3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICBuYW1lLmlzb2xhdGVkQ29weSgpLAotICAgICAgICAgICAgZGVmYXVsdFZhbHVlLAot
ICAgICAgICAgICAgbWluVmFsdWUsCi0gICAgICAgICAgICBtYXhWYWx1ZSwKLSAgICAgICAgICAg
IGF1dG9tYXRpb25SYXRlCi0gICAgICAgIH07Ci0gICAgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlw
dG9yIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgp
LCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlvblJhdGUgfTsgfQor
ICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFs
dWUsIGF1dG9tYXRpb25SYXRlIH07IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggM2U3MzljMWNmOTA5ZWY3MjlmNWI5ZjBhOWFmYzhjMGZm
ZWMyY2FiOC4uOGE1MTMwZGI5NzBmYmY2MmMxODQ1MjA5YTQwM2EyYTQ5MjFlNDI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwg
UmVmPAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIkEgcHJvY2Vzc29yIHdhcyBhbHJlYWR5IHJlZ2lz
dGVyZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsKIAotICAgIHRocmVhZCgpLm1lc3NhZ2luZ1Byb3h5
KCkucG9zdFRhc2tUb0F1ZGlvV29ya2xldChbbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBh
cmFtZXRlckRlc2NyaXB0b3JzID0gY3Jvc3NUaHJlYWRDb3B5KHBhcmFtZXRlckRlc2NyaXB0b3Jz
KV0oQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KSBtdXRhYmxlIHsKKyAgICB0aHJlYWQoKS5tZXNzYWdp
bmdQcm94eSgpLnBvc3RUYXNrVG9BdWRpb1dvcmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNjcmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29weShwYXJh
bWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29ya2xldCYgd29ya2xldCkgbXV0YWJsZSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBhdWRpb0NvbnRl
eHQgPSB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpKQogICAgICAgICAgICAgYXVkaW9Db250ZXh0LT5h
ZGRBdWRpb1BhcmFtRGVzY3JpcHRvcnMobmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9y
cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuY3BwCmluZGV4IDZhMGJlOTY0NDc3M2Q4MjM4MjM2ZDY3OTMyMTgxYTYzN2Rk
MjVhMzAuLjU0YWMwOGNkNDhkZjNjY2NjM2NlNGMwM2U3YzllZjMyMWIwMmFmNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKQEAgLTM3LDEwICszNywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlv
V29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CitBdWRpb1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHksIFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICA6IFdvcmtlck9yV29ya2xldFRocmVhZChwYXJhbWV0ZXJzLmlkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCkpCiAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQotICAg
ICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3BhcmFt
ZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKS5pc29sYXRlZENvcHkoKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgK
aW5kZXggZjZlNzE1NTZjZTBjOTRmYWQ0ZDI2OTc1MzI2ODY1ODIwNDEzNTI3Mi4uYjM0ZWU5OTg5
OGY5ZGRkMWQwYTdiMzgyMGYxYjVjY2EyZWY3ZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBAIC0zOSw5ICszOSw5
IEBAIGNsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OwogCiBjbGFzcyBBdWRpb1dvcmts
ZXRUaHJlYWQgOiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCisgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHksIFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xl
dFRocmVhZChtZXNzYWdpbmdQcm94eSwgcGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQobWVzc2FnaW5nUHJveHksIFdURk1vdmUocGFy
YW1ldGVycykpKTsKICAgICB9CiAgICAgfkF1ZGlvV29ya2xldFRocmVhZCgpOwogCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2Fn
aW5nUHJveHkoKSB7IHJldHVybiBtX21lc3NhZ2luZ1Byb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAg
QXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29y
a2xldFBhcmFtZXRlcnMmKTsKKyAgICBBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkmLCBXb3JrbGV0UGFyYW1ldGVycyYmKTsKIAogICAgIC8vIFdvcmtlck9yV29y
a2xldFRocmVhZC4KICAgICBSZWY8VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcApp
bmRleCBiZWYwMzllMTVlODI1NjUwNzBmMGUzN2Y5ZjMzOWY1YTRmYTEzNTI0Li4zZWFlOTYxMDQ4
NzFlYWEyODliNTAwNDRhYjE3YjM5MTUyMzgyMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCkBAIC05NSw3ICs5NSw3IEBA
IERhdGFiYXNlT3BlblRhc2s6OkRhdGFiYXNlT3BlblRhc2soRGF0YWJhc2UmIGRhdGFiYXNlLCBi
b29sIHNldFZlcnNpb25Jbk5ld0RhdGFiCiAKIHZvaWQgRGF0YWJhc2VPcGVuVGFzazo6ZG9QZXJm
b3JtVGFzaygpCiB7Ci0gICAgbV9yZXN1bHQgPSBpc29sYXRlZENvcHkoZGF0YWJhc2UoKS5wZXJm
b3JtT3BlbkFuZFZlcmlmeShtX3NldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSk7CisgICAgbV9yZXN1
bHQgPSBjcm9zc1RocmVhZENvcHkoZGF0YWJhc2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3Nl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHAKaW5kZXggMTE5ZjNlMmQzM2IwNzY3ZTBkNTExZWI5ZmQ0NzYwZGU5NzY1Mzg2My4uYjEyZTMw
MGM0OWYxOTQ0NjFmZjkwOGQwMTBhNTc0NjYxNzI3MTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzcy
LDggKzM3MiwxMCBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBEYXRhYmFzZVRyYWNrZXI6
Om9yaWdpbnMoKQogCiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAg
ICBpbnQgc3RlcFJlc3VsdDsKLSAgICB3aGlsZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0
ZXAoKSkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSkt
Pmlzb2xhdGVkQ29weSgpKTsKKyAgICB3aGlsZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0
ZXAoKSkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBpZiAoYXV0byBvcmlnaW4gPSBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDApKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKFdURk1vdmUob3JpZ2luKS52YWx1ZSgp
Lmlzb2xhdGVkQ29weSgpKTsKKyAgICB9CiAgICAgb3JpZ2lucy5zaHJpbmtUb0ZpdCgpOwogCiAg
ICAgaWYgKHN0ZXBSZXN1bHQgIT0gU1FMSVRFX0RPTkUpCkBAIC01MzcsNyArNTM5LDYgQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAg
ICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4o
KTsKIAogICAgIGF1dG8gb3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKLQogICAg
IGF1dG8qIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbik7CiAgICAgaWYg
KCFuYW1lTWFwKSB7CiAgICAgICAgIG5hbWVNYXAgPSBuZXcgRGF0YWJhc2VOYW1lTWFwOwpAQCAt
NTk4LDE3ICs1OTksMTUgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZShEYXRhYmFzZSYgZGF0YWJhc2UpCiBSZWZQdHI8T3JpZ2luTG9jaz4gRGF0YWJhc2VUcmFja2Vy
OjpvcmlnaW5Mb2NrRm9yKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAg
IExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2RhdGFiYXNlR3VhcmQgfTsKLSAgICBTdHJpbmcgZGF0
YWJhc2VJZGVudGlmaWVyID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogCiAgICAgLy8g
VGhlIG9yaWdpbkxvY2tNYXAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSBEYXRhYmFzZVRocmVh
ZHMgc2luY2UKICAgICAvLyBkaWZmZXJlbnQgc2NyaXB0IGNvbnRleHRzIGNhbiBiZSB3cml0aW5n
IHRvIGRpZmZlcmVudCBkYXRhYmFzZXMgZnJvbQogICAgIC8vIHRoZSBzYW1lIG9yaWdpbi4gSGVu
Y2UsIHRoZSBkYXRhYmFzZUlkZW50aWZpZXIga2V5IG5lZWRzIHRvIGJlIGFuCiAgICAgLy8gaXNv
bGF0ZWQgY29weS4gQW4gaXNvbGF0ZWQgY29weSBnaXZlcyB1cyBhIHZhbHVlIHdob3NlIHJlZkNv
dW50aW5nIGlzCiAgICAgLy8gdGhyZWFkLXNhZmUsIHNpbmNlIG91ciBjb3B5IGlzIGd1YXJkZWQg
YnkgdGhlIG1fZGF0YWJhc2VHdWFyZCBtdXRleC4KLSAgICBkYXRhYmFzZUlkZW50aWZpZXIgPSBk
YXRhYmFzZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgU3RyaW5nIGRhdGFiYXNlSWRl
bnRpZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKS5pc29sYXRlZENvcHkoKTsKIAot
ICAgIE9yaWdpbkxvY2tNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPQotICAgICAgICBtX29yaWdp
bkxvY2tNYXAuYWRkKGRhdGFiYXNlSWRlbnRpZmllciwgUmVmUHRyPE9yaWdpbkxvY2s+KCkpOwor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vcmlnaW5Mb2NrTWFwLmFkZChkYXRhYmFzZUlkZW50aWZp
ZXIsIFJlZlB0cjxPcmlnaW5Mb2NrPigpKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOWZiYzk0ZTdjZWY2M2Q3NDFi
MzFkYWMyZWI3OGRhN2RiNTAxNTZhMi4uNjgyNjI2YWM0ZTkwMDdhOTFjMGIzNGM3MTY2NGZhMDUw
NWVlNDMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
UGVlcjo6ZGlkQ29ubmVjdCgpCiAKICAgICBTdHJpbmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJT
b2NrZXRDaGFubmVsLT5zdWJwcm90b2NvbCgpOwogICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9t
YWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBzdWJwcm90b2NvbC5p
c29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMuaXNvbGF0ZWRDb3B5KCldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBXVEZNb3Zl
KHN1YnByb3RvY29sKS5pc29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IFdURk1vdmUoZXh0ZW5z
aW9ucykuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAg
IHdvcmtlckNsaWVudFdyYXBwZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggM2EzNWUyNjA1ZTAzZTYyOTc5YjIyOWQ4MjZmZTZlNzNiZTI5NDJkZi4uMDA0
NWMyN2QzMWIxMDdjZGY3YTNkYWM4ZDZiNDE1OWZjYWRmMTI3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTk3MSw3ICs5NzEsNiBAQCBkb20vRXZlbnROYW1lcy5jcHAKIGRvbS9FdmVudFBhdGguY3BwCiBk
b20vRXZlbnRUYXJnZXQuY3BwCiBkb20vRXZlbnRUYXJnZXRDb25jcmV0ZS5jcHAKLWRvbS9FeGNl
cHRpb25EYXRhLmNwcAogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAogZG9tL0ZvY3VzRXZl
bnQuY3BwCiBkb20vRm9ybURhdGFFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYTIyN2Q1OThlNDI5ZDg1NWJiM2Rl
ZWRhOWIxZDQ3MjgwZDYyNDNiLi5jNTJiNWY3MDc5YWIxYjZlMGQ1ZTU4ZjJjZWZlYzZkNmU5NDVl
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDA1NSw3ICsxMDA1NSw2IEBACiAJCTUxRjY0NTk0MUY0QTY4NEYwMEI1NERF
RCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUY2NDU5NTFGNEE2ODYxMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVBMDFGNEJGNTE2MDBCNTRE
RUQgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRE
RUQgLyogRXhjZXB0aW9uRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFeGNlcHRpb25EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFG
NjQ1RDIxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1RDMxRkVDREJDODAwQjU0REVEIC8qIFByb2Nl
c3NJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NURFMUZGNDU5
NEIwMEI1NERFRCAvKiBNZXNzYWdlUG9ydElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVzc2FnZVBvcnRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMjU2NSw3ICszMjU2NCw2IEBACiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAw
RDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKIAkJCQk5M0QxOTYzMjFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIx
IC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKLQkJCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyog
RXhjZXB0aW9uRGF0YS5jcHAgKi8sCiAJCQkJNTFGNjQ1NjAxRjQ1Mzk4QjAwQjU0REVEIC8qIEV4
Y2VwdGlvbkRhdGEuaCAqLywKIAkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0
aW9uT3IuaCAqLywKIAkJCQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IGQ1OTZkYTQwOGI3
ODdjMWRmNjYxOTM2Y2MwYzIxZTQ4Mzk5ZTJmODcuLjFiMmYyZmUwY2YzMTA3ZmJjYzk5YTQwYTA3
NzIyZjkwN2IwNDhiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKQEAgLTExNCwxMiArMTE0
LDE0IEBAIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gTW9k
aWZ5SGVhZGVyc0FjdGlvbjo6cGFyc2UoY29uc3QKICAgICByZXR1cm4gTW9kaWZ5SGVhZGVyc0Fj
dGlvbiB7IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJzKSwgV1RGTW92ZSgqcmVzcG9uc2VIZWFkZXJz
KSB9OwogfQogCi1Nb2RpZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xh
dGVkQ29weSgpIGNvbnN0CitNb2RpZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246
Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc1Ro
cmVhZENvcHkocmVxdWVzdEhlYWRlcnMpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVzcG9u
c2VIZWFkZXJzKQotICAgIH07CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHJlcXVlc3RI
ZWFkZXJzKSwgY3Jvc3NUaHJlYWRDb3B5KHJlc3BvbnNlSGVhZGVycykgfTsKK30KKworTW9kaWZ5
SGVhZGVyc0FjdGlvbiBNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgorewor
ICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSksIGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3BvbnNlSGVhZGVycykpIH07CiB9CiAKIGJvb2wgTW9k
aWZ5SGVhZGVyc0FjdGlvbjo6b3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJiBv
dGhlcikgY29uc3QKQEAgLTIyMiwxMSArMjI0LDE0IEBAIGF1dG8gTW9kaWZ5SGVhZGVyc0FjdGlv
bjo6TW9kaWZ5SGVhZGVySW5mbzo6cGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmIGluZm9WYWx1ZSkK
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTW9k
aWZ5SGVhZGVyc0ludmFsaWRPcGVyYXRpb24pOwogfQogCi1hdXRvIE1vZGlmeUhlYWRlcnNBY3Rp
b246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IE1vZGlmeUhlYWRl
ckluZm8KK2F1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QgJiAtPiBNb2RpZnlIZWFkZXJJbmZvCiB7Ci0gICAgcmV0dXJuIHsKLSAg
ICAgICAgY3Jvc3NUaHJlYWRDb3B5KG9wZXJhdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShvcGVyYXRpb24pIH07Cit9CisKK2F1dG8gTW9kaWZ5SGVhZGVyc0FjdGlv
bjo6TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gTW9kaWZ5SGVhZGVySW5m
bworeworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wZXJhdGlvbikpIH07
CiB9CiAKIGJvb2wgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6b3BlcmF0
b3I9PShjb25zdCBNb2RpZnlIZWFkZXJJbmZvJiBvdGhlcikgY29uc3QKQEAgLTMxNCwxMSArMzE5
LDE0IEBAIEV4cGVjdGVkPFJlZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IFJlZGlyZWN0
QWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmplCiAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlJlZGlyZWN0SW52YWxpZFR5cGUpOwogfQogCi1S
ZWRpcmVjdEFjdGlvbiBSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1JlZGly
ZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAg
cmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGFjdGlvbikKLSAgICB9OworICAgIHJl
dHVybiB7IGNyb3NzVGhyZWFkQ29weShhY3Rpb24pIH07Cit9CisKK1JlZGlyZWN0QWN0aW9uIFJl
ZGlyZWN0QWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKGFjdGlvbikpIH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246Om9w
ZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNDMyLDE4ICs0
NDAsMTYgQEAgYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpwYXJzZShj
b25zdCBKU09OOjpPYmplY3QmIHRyYW5zZm9ybSkgLT4KICAgICByZXR1cm4gYWN0aW9uOwogfQog
Ci1hdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVkQ29weSgp
IGNvbnN0IC0+IFVSTFRyYW5zZm9ybUFjdGlvbgorYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJh
bnNmb3JtQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmIC0+IFVSTFRyYW5zZm9ybUFjdGlv
bgogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShmcmFnbWVudCksCi0g
ICAgICAgIGNyb3NzVGhyZWFkQ29weShob3N0KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHBh
c3N3b3JkKSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHBhdGgpLAotICAgICAgICBjcm9zc1Ro
cmVhZENvcHkocG9ydCksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShxdWVyeVRyYW5zZm9ybSks
Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShzY2hlbWUpLAotICAgICAgICBjcm9zc1RocmVhZENv
cHkodXNlcm5hbWUpCi0gICAgfTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZnJhZ21l
bnQpLCBjcm9zc1RocmVhZENvcHkoaG9zdCksIGNyb3NzVGhyZWFkQ29weShwYXNzd29yZCksIGNy
b3NzVGhyZWFkQ29weShwYXRoKSwgY3Jvc3NUaHJlYWRDb3B5KHBvcnQpLCBjcm9zc1RocmVhZENv
cHkocXVlcnlUcmFuc2Zvcm0pLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoc2NoZW1lKSwgY3Jv
c3NUaHJlYWRDb3B5KHVzZXJuYW1lKSB9OworfQorCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxU
cmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVkQ29weSgpICYmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgor
eworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZyYWdtZW50KSksIGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGhvc3QpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGFzc3dv
cmQpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGF0aCkpLCBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShwb3J0KSksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHF1ZXJ5VHJhbnNm
b3JtKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNjaGVtZSkpLCBjcm9zc1RocmVhZENvcHko
V1RGTW92ZSh1c2VybmFtZSkpIH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6b3BlcmF0b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mIG90aGVyKSBj
b25zdApAQCAtNjk5LDEyICs3MDUsMTQgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNm
b3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6YXBwbHlUb1VSTChVUkwmIHVybCkgY28KICAgICB1
cmwuc2V0UXVlcnkodHJhbnNmb3JtZWRRdWVyeSk7CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246
OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpIGNvbnN0
IC0+IFF1ZXJ5VHJhbnNmb3JtCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rp
b246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkoKSBjb25zdCAmIC0+IFF1ZXJ5VHJhbnNm
b3JtCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGFkZE9yUmVwbGFj
ZVBhcmFtcyksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShyZW1vdmVQYXJhbXMpCi0gICAgfTsK
KyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoYWRkT3JSZXBsYWNlUGFyYW1zKSwgY3Jvc3NU
aHJlYWRDb3B5KHJlbW92ZVBhcmFtcykgfTsKK30KKworYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gUXVl
cnlUcmFuc2Zvcm0KK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShhZGRP
clJlcGxhY2VQYXJhbXMpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVtb3ZlUGFyYW1zKSkg
fTsKIH0KIAogYm9vbCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRy
YW5zZm9ybTo6b3BlcmF0b3I9PShjb25zdCBRdWVyeVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0CkBA
IC03NzksMTUgKzc4Nyw2IEBAIGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OnBhcnNlKGNvCiAgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKGtleSksIHJlcGxhY2VPbmx5LCBXVEZNb3ZlKHZhbHVlKSB9IH07CiB9CiAKLWF1
dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1
ZXJ5S2V5VmFsdWU6Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5S2V5VmFsdWUKLXsKLSAg
ICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkoa2V5KSwKLSAgICAgICAgY3Jvc3NU
aHJlYWRDb3B5KHJlcGxhY2VPbmx5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHZhbHVlKQot
ICAgIH07Ci19Ci0KIGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVl
cnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1
ZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG90aGVyLmtleSA9PSB0aGlzLT5rZXkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQWN0aW9ucy5oCmluZGV4IDQ2ZTA1ODBjOWM2ZTU0MGYzYjhiMTA5NjA5MGM1N2FiMWIw
M2ZjMDkuLmIwY2MwZWQxZjVjODE0MzFjYTZiNGU5ZjgxNzY1MzZmMDJkNzgyNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkFjdGlvbnMuaApAQCAtNTAsOCArNTAsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQWN0aW9uV2l0aG91dE1ldGFkYXRhIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEgewotICAgIGNvbnN0IFN0cmluZyBzdHJpbmc7
Ci0gICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHsgc3RyaW5nLmlzb2xhdGVk
Q29weSgpIH0gfTsgfQorICAgIFN0cmluZyBzdHJpbmc7CisgICAgVCBpc29sYXRlZENvcHkoKSBj
b25zdCAmIHsgcmV0dXJuIHsgeyBzdHJpbmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9CisgICAgVCBp
c29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IHsgV1RGTW92ZShzdHJpbmcpLmlzb2xhdGVkQ29w
eSgpIH0gfTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb25XaXRoU3RyaW5nTWV0
YWRhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5n
OyB9CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0IHsg
c2VyaWFsaXplU3RyaW5nKHZlY3Rvciwgc3RyaW5nKTsgfQogICAgIHN0YXRpYyBUIGRlc2VyaWFs
aXplKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeyByZXR1cm4geyB7IGRlc2VyaWFsaXplU3Ry
aW5nKHNwYW4pIH0gfTsgfQpAQCAtNzEsMjcgKzcyLDMxIEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9S
VCBNb2RpZnlIZWFkZXJzQWN0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFkZXI7CiAgICAg
ICAgICAgICBTdHJpbmcgdmFsdWU7CiAKLSAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUu
aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVk
Q29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlz
b2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92
ZSh2YWx1ZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEFwcGVuZE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRl
ciA9PSB0aGlzLT5oZWFkZXIgJiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7IH0KICAgICAg
ICAgfTsKICAgICAgICAgc3RydWN0IFNldE9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcg
aGVhZGVyOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgICAgICBTZXRPcGVy
YXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5
KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFNldE9wZXJhdGlvbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2
YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0
ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGhlYWRlcikuaXNvbGF0ZWRDb3B5KCksIFdU
Rk1vdmUodmFsdWUpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTZXRPcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFk
ZXIgPT0gdGhpcy0+aGVhZGVyICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CiAgICAg
ICAgIH07CiAgICAgICAgIHN0cnVjdCBSZW1vdmVPcGVyYXRpb24gewogICAgICAgICAgICAgU3Ry
aW5nIGhlYWRlcjsKIAotICAgICAgICAgICAgUmVtb3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAg
IFJlbW92ZU9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgaGVhZGVy
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSB9OyB9
CiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVtb3ZlT3BlcmF0aW9uJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gb3RoZXIuaGVhZGVyID09IHRoaXMtPmhlYWRlcjsgfQogICAgICAg
ICB9OwogICAgICAgICB1c2luZyBPcGVyYXRpb25WYXJpYW50ID0gc3RkOjp2YXJpYW50PEFwcGVu
ZE9wZXJhdGlvbiwgU2V0T3BlcmF0aW9uLCBSZW1vdmVPcGVyYXRpb24+OwogICAgICAgICBPcGVy
YXRpb25WYXJpYW50IG9wZXJhdGlvbjsKIAogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5
SGVhZGVySW5mbywgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwot
ICAgICAgICBNb2RpZnlIZWFkZXJJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBN
b2RpZnlIZWFkZXJJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIE1vZGlmeUhl
YWRlckluZm8gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBNb2RpZnlIZWFkZXJJbmZvJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rv
cjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgTW9kaWZ5SGVhZGVySW5mbyBkZXNl
cmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTExNSw3ICsxMjAsOCBAQCBzdHJ1Y3Qg
V0VCQ09SRV9FWFBPUlQgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAgICAgYm9vbCBpc0RlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc2hUYWJsZVR5cGUgPT0gSGFzaFRhYmxlVHlwZTo6RGVs
ZXRlZDsgfQogCiAgICAgc3RhdGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6
ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6T2JqZWN0Jik7Ci0gICAgTW9kaWZ5SGVhZGVy
c0FjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENv
cHkoKSAmJjsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiYp
IGNvbnN0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAg
IHN0YXRpYyBNb2RpZnlIZWFkZXJzQWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhf
dD4pOwpAQCAtMTI3LDEzICsxMzMsMTUgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0
QWN0aW9uIHsKICAgICBzdHJ1Y3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiB7CiAgICAgICAgIFN0cmlu
ZyBleHRlbnNpb25QYXRoOwogCi0gICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0K
KyAgICAgICAgRXh0ZW5zaW9uUGF0aEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0
dXJuIHsgZXh0ZW5zaW9uUGF0aC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEV4dGVuc2lv
blBhdGhBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGV4dGVuc2lv
blBhdGgpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV4dGVuc2lvblBhdGhBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5leHRlbnNp
b25QYXRoID09IHRoaXMtPmV4dGVuc2lvblBhdGg7IH0KICAgICB9OwogICAgIHN0cnVjdCBSZWdl
eFN1YnN0aXR1dGlvbkFjdGlvbiB7CiAgICAgICAgIFN0cmluZyByZWdleFN1YnN0aXR1dGlvbjsK
IAotICAgICAgICBSZWdleFN1YnN0aXR1dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiB7IHJlZ2V4U3Vic3RpdHV0aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAg
UmVnZXhTdWJzdGl0dXRpb25BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7
IHJlZ2V4U3Vic3RpdHV0aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJz
dGl0dXRpb25BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHJlZ2V4
U3Vic3RpdHV0aW9uKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZWdleFN1YnN0aXR1dGlvbkFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90
aGVyLnJlZ2V4U3Vic3RpdHV0aW9uID09IHRoaXMtPnJlZ2V4U3Vic3RpdHV0aW9uOyB9CiAgICAg
fTsKICAgICBzdHJ1Y3QgVVJMVHJhbnNmb3JtQWN0aW9uIHsKQEAgLTE0NCw3ICsxNTIsOCBAQCBz
dHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICAgICAgICAgIFN0
cmluZyB2YWx1ZTsKIAogICAgICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeUtleVZh
bHVlLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046OlZhbHVlJik7Ci0gICAgICAg
ICAgICAgICAgUXVlcnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgICAg
ICAgICBRdWVyeUtleVZhbHVlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBrZXku
aXNvbGF0ZWRDb3B5KCksIHJlcGxhY2VPbmx5LCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9Cisg
ICAgICAgICAgICAgICAgUXVlcnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7
IFdURk1vdmUoa2V5KS5pc29sYXRlZENvcHkoKSwgcmVwbGFjZU9ubHksIFdURk1vdmUodmFsdWUp
Lmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUXVlcnlLZXlWYWx1ZSYpIGNvbnN0OwogICAgICAgICAgICAgICAgIHZvaWQgc2VyaWFsaXpl
KFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICAgICAgICAgIHN0YXRpYyBRdWVyeUtl
eVZhbHVlIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTU1LDcgKzE2NCw4
IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiByZW1vdmVQYXJhbXM7CiAKICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3Rl
ZDxRdWVyeVRyYW5zZm9ybSwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmpl
Y3QmKTsKLSAgICAgICAgICAgIFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpIGNvbnN0Owor
ICAgICAgICAgICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAg
ICAgICAgIFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5VHJhbnNmb3JtJikgY29uc3Q7CiAgICAgICAgICAgICB2
b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRp
YyBRdWVyeVRyYW5zZm9ybSBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE3
NCw3ICsxODQsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAg
ICAgICBTdHJpbmcgdXNlcm5hbWU7CiAKICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFVSTFRyYW5z
Zm9ybUFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsK
LSAgICAgICAgVVJMVHJhbnNmb3JtQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAg
ICBVUkxUcmFuc2Zvcm1BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgVVJM
VHJhbnNmb3JtQWN0aW9uIGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVVJMVHJhbnNmb3JtQWN0aW9uJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFs
aXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgVVJMVHJhbnNmb3Jt
QWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTg0LDcgKzE5NSw4
IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgc3RydWN0IFVS
TEFjdGlvbiB7CiAgICAgICAgIFN0cmluZyB1cmw7CiAKLSAgICAgICAgVVJMQWN0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgdXJsLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgVVJMQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyB1cmwuaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgICAgICBVUkxBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1
cm4geyBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIudXJsID09
IHRoaXMtPnVybDsgfQogICAgIH07CiAKQEAgLTIwMyw3ICsyMTUsOCBAQCBzdHJ1Y3QgV0VCQ09S
RV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBoYXNoVGFibGVUeXBlID09IEhhc2hUYWJsZVR5cGU6OkRlbGV0ZWQ7IH0KIAog
ICAgIHN0YXRpYyBFeHBlY3RlZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJz
ZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAg
IFJlZGlyZWN0QWN0aW9uIGlzb2xhdGVkQ29weSgpICYmOwogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZWRpcmVjdEFjdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1
aW50OF90PiYpIGNvbnN0OwogICAgIHN0YXRpYyBSZWRpcmVjdEFjdGlvbiBkZXNlcmlhbGl6ZShT
cGFuPGNvbnN0IHVpbnQ4X3Q+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IGQ3MTI2
OTc3ZjYxMGRmYjExZTQ0YmVlNzI0OGY3YzNiOGMwNDkwMzMuLjAzNWUyODY3ZDQ3MjVkNjhiMGRm
OTg3ODY3ZDM3Y2IwMTE1NTM4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMjcx
LDcgKzI3MSw3IEBAIHN0YXRpYyBib29sIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmls
dGVycyYmIGZpbHRlcnMsIFVuaXZlcnNhbEFjdGlvblNldCYmCiBzdGQ6OmVycm9yX2NvZGUgY29t
cGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBT
dHJpbmcmJiBydWxlSlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1
bGVMaXN0KQogewogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgY2FsbE9uTWFpblRocmVhZChbcnVs
ZUpTT04gPSBydWxlSlNPTi5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBwYXJzZWRS
dWxlTGlzdC5pc29sYXRlZENvcHkoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVKU09O
ID0gV1RGTW92ZShydWxlSlNPTikuaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUocGFyc2VkUnVsZUxpc3QpKV0gewogICAgICAgICBBU1NFUlQo
cGFyc2VSdWxlTGlzdChydWxlSlNPTikudmFsdWUoKSA9PSBwYXJzZWRSdWxlTGlzdCk7CiAgICAg
fSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggYjMzMzlmZjY0NzRjNTdhZmU0
ZDEzY2JmMDM0ZDRiNTgyZjQ0OGIwNC4uODgyNDAyYzdiODUzYzFlNWJjNTdmZTZhZTdkNTM3YjA5
NmNmZjViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0
aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJpZ2dlcihjb25zdCBK
U09OOjpPYmplY3QmIHJ1bGVPYgogICAgIGlmIChhdXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24o
ImlmLWZyYW1lLXVybCJfcywgZ2V0U3RyaW5nTGlzdCwgQWN0aW9uQ29uZGl0aW9uOjpJZkZyYW1l
VVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKIAorICAgIHRyaWdn
ZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgIHJldHVybiB0cmlnZ2VyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVs
ZS5jcHAKaW5kZXggM2I0ZmEzMzkwMTMwMDdmMzU0Mjc4OGEyNDU5NTI4NTE3MGIzNTMyMy4uNjJl
NGNlOGQ4NDdiNjY0NDAwMGE2NGI0OGIyNDZhMzdiMmZiODcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNw
cApAQCAtOTUsMjMgKzk1LDI2IEBAIHNpemVfdCBEZXNlcmlhbGl6ZWRBY3Rpb246OnNlcmlhbGl6
ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9uCiAgICAgcmV0dXJu
IDEgKyBWYXJpYW50RGVzZXJpYWxpemVyPEFjdGlvbkRhdGE+OjpzZXJpYWxpemVkTGVuZ3RoKHNl
cmlhbGl6ZWRBY3Rpb25zLnN1YnNwYW4obG9jYXRpb24gKyAxKSwgc2VyaWFsaXplZEFjdGlvbnNb
bG9jYXRpb25dKTsKIH0KIAotVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENvcHkoKSBjb25zdAor
VHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsK
LSAgICAgICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29weSgpLAotICAgICAgICB1cmxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUsCi0gICAgICAgIHRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwKLSAgICAg
ICAgZnJhbWVVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCi0gICAgICAgIGZsYWdzLAotICAgICAg
ICBjb25kaXRpb25zLmlzb2xhdGVkQ29weSgpCi0gICAgfTsKKyAgICByZXR1cm4geyB1cmxGaWx0
ZXIuaXNvbGF0ZWRDb3B5KCksIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgdG9wVVJMRmlsdGVy
SXNDYXNlU2Vuc2l0aXZlLCBmcmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgZmxhZ3MsIGNy
b3NzVGhyZWFkQ29weShjb25kaXRpb25zKSB9OwogfQogCi1BY3Rpb24gQWN0aW9uOjppc29sYXRl
ZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENvcHkoKSAmJgoreworICAg
IHJldHVybiB7IFdURk1vdmUodXJsRmlsdGVyKS5pc29sYXRlZENvcHkoKSwgdXJsRmlsdGVySXND
YXNlU2Vuc2l0aXZlLCB0b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIGZyYW1lVVJMRmlsdGVy
SXNDYXNlU2Vuc2l0aXZlLCBmbGFncywgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29uZGl0aW9u
cykpIH07Cit9CisKK0FjdGlvbiBBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAg
ICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkobV9kYXRhKSB9OwogfQogCitBY3Rpb24gQWN0aW9u
Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKG1fZGF0YSkpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxl
LmgKaW5kZXggN2UzOGQwYTJmNTQzNGU1YzlhZjQzZDUyZmExOTAxZDQ3Yzg5MjdlMy4uNzg3ZGJk
NzA1NDQzYWI1MDIyNTRjMDJlZWE4ZGM4NzE1NmRhY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCkBAIC00
Nyw5ICs0NywxMCBAQCBzdHJ1Y3QgVHJpZ2dlciB7CiAgICAgUmVzb3VyY2VGbGFncyBmbGFncyB7
IDAgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb25kaXRpb25zOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBUcmln
Z2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBp
c29sYXRlZENvcHkoKSAmJjsKICAgICAKLSAgICB+VHJpZ2dlcigpCisgICAgdm9pZCBjaGVja1Zh
bGlkaXR5KCkKICAgICB7CiAgICAgICAgIGF1dG8gYWN0aW9uQ29uZGl0aW9uID0gc3RhdGljX2Nh
c3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFncyAmIEFjdGlvbkNvbmRpdGlvbk1hc2spOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGFjdGlvbkNvbmRpdGlvbiwgY29uZGl0aW9ucy5pc0VtcHR5KCkgPT0g
KGFjdGlvbkNvbmRpdGlvbiA9PSBBY3Rpb25Db25kaXRpb246Ok5vbmUpKTsKQEAgLTEzMSwxMCAr
MTMyLDExIEBAIHN0cnVjdCBBY3Rpb24gewogCiAgICAgY29uc3QgQWN0aW9uRGF0YSYgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRlZENvcHkoKSAm
JjsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBBY3Rpb25EYXRhIG1fZGF0YTsKKyAgICBBY3Rpb25E
YXRhIG1fZGF0YTsKIH07CiAKIHN0cnVjdCBEZXNlcmlhbGl6ZWRBY3Rpb24gOiBwdWJsaWMgQWN0
aW9uIHsKQEAgLTE1OCwxOCArMTYwLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBUcmlnZ2VyJiB0
cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2VyOyB9CiAgICAgY29uc3QgQWN0aW9uJiBh
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQogCi0gICAgQ29udGVudEV4dGVuc2lv
blJ1bGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fdHJp
Z2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rpb24uaXNvbGF0ZWRDb3B5KCkgfTsKLSAgICB9Cisg
ICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7
IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQor
ICAgIENvbnRlbnRFeHRlbnNpb25SdWxlIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZShtX3RyaWdnZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG1fYWN0aW9uKS5pc29sYXRl
ZENvcHkoKSB9OyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnRlbnRFeHRlbnNpb25S
dWxlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3RyaWdnZXIgPT0gb3Ro
ZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09IG90aGVyLm1fYWN0aW9uOwogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBjb25zdCBUcmlnZ2VyIG1fdHJpZ2dlcjsKLSAgICBjb25zdCBBY3Rpb24gbV9h
Y3Rpb247CisgICAgVHJpZ2dlciBtX3RyaWdnZXI7CisgICAgQWN0aW9uIG1fYWN0aW9uOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb24uaAppbmRleCBlMWU3YWRiOTg2Y2FhZDY3MjE1OWIxZTNjMjgwYTg5ZDdhYzE3OTBmLi4y
MWYzYzFmYjMwNzYyNmNmNWI2YzU0NjdlZjQyYTcwYTRjMzdiYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbi5oCkBAIC0zOSwyNyArMzksMTggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQogICAgIFN0cmluZyYmIHJlbGVhc2VN
ZXNzYWdlKCkgeyByZXR1cm4gV1RGTW92ZShtX21lc3NhZ2UpOyB9CiAKLSAgICBFeGNlcHRpb24g
aXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBt
X2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KKyAgICBFeGNlcHRpb24g
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBFeGNlcHRpb24geyBtX2NvZGUsIG1fbWVz
c2FnZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRXhjZXB0aW9uIGlzb2xhdGVkQ29weSgpICYm
IHsgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgV1RGTW92ZShtX21lc3NhZ2UpLmlzb2xhdGVk
Q29weSgpIH07IH0KIAogcHJpdmF0ZToKICAgICBFeGNlcHRpb25Db2RlIG1fY29kZTsKICAgICBT
dHJpbmcgbV9tZXNzYWdlOwogfTsKIAotRXhjZXB0aW9uIGlzb2xhdGVkQ29weShFeGNlcHRpb24m
Jik7Ci0KIGlubGluZSBFeGNlcHRpb246OkV4Y2VwdGlvbihFeGNlcHRpb25Db2RlIGNvZGUsIFN0
cmluZyBtZXNzYWdlKQogICAgIDogbV9jb2RlIHsgY29kZSB9CiAgICAgLCBtX21lc3NhZ2UgeyBX
VEZNb3ZlKG1lc3NhZ2UpIH0KIHsKIH0KIAotaW5saW5lIEV4Y2VwdGlvbiBpc29sYXRlZENvcHko
RXhjZXB0aW9uJiYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIEV4Y2VwdGlvbiB7IHZhbHVlLmNvZGUo
KSwgdmFsdWUucmVsZWFzZU1lc3NhZ2UoKS5pc29sYXRlZENvcHkoKSB9OwotfQotCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZjE2YzMyNTg1ZTRhODFkNmE4NTcyNDIxYmFiYWM3
OGI0MjQ5ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJF
eGNlcHRpb25EYXRhLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRXhjZXB0aW9uRGF0YSBF
eGNlcHRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIEV4Y2VwdGlvbkRhdGEg
cmVzdWx0OwotICAgIHJlc3VsdC5jb2RlID0gY29kZTsKLSAgICByZXN1bHQubWVzc2FnZSA9IG1l
c3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuaAppbmRleCBmYzc5OGIz
NjRkM2E3OGY3MWEzYzA5OWFkOWVkZmViMjFjMDQ0NmFkLi45ODUzMzc2ZjFjNGRkY2ZkMWE1MWFk
NGFlYWM5ZDA2NGVlOTlmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRhLmgKQEAgLTM0
LDcgKzM0LDggQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGEgewogICAgIEV4Y2VwdGlvbkNvZGUgY29k
ZTsKICAgICBTdHJpbmcgbWVzc2FnZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkRh
dGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgRXhjZXB0aW9uRGF0YSBpc29sYXRlZENvcHko
KSBjb25zdCAmIHsgcmV0dXJuIHsgY29kZSwgbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OyB9Cisg
ICAgRXhjZXB0aW9uRGF0YSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNvZGUsIFdURk1v
dmUobWVzc2FnZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+IGRlY29kZShEZWNvZGVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IGJiZmQ5NjY4NTAxNjMxZjUxMjJiOTQw
ZDliMDAwNDIyZTk5ZWQwNWMuLjFhMTliMGVlOWEyYTQ1MmJmNTc3NDBhMmFiZmRiZGRiYzIzMzhh
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC05MCw4ICs5MCw2IEBAIHByaXZhdGU6
CiAjZW5kaWYKIH07CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IGlzb2xhdGVkQ29weShFeGNlcHRpb25P
cjx2b2lkPiYmKTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2Vw
dGlvbk9yPFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihFeGNlcHRpb24mJiBleGNlcHRpb24pCiAg
ICAgOiBtX3ZhbHVlKG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoZXhjZXB0aW9uKSkpCiB7CkBAIC0x
OTMsMTMgKzE5MSw2IEBAIGlubGluZSBFeGNlcHRpb24gRXhjZXB0aW9uT3I8dm9pZD46OnJlbGVh
c2VFeGNlcHRpb24oKQogICAgIHJldHVybiBXVEZNb3ZlKG1fdmFsdWUuZXJyb3IoKSk7CiB9CiAK
LWlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4m
JiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVy
biBpc29sYXRlZENvcHkodmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAgICByZXR1cm4geyB9
OwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29sIElzRXhj
ZXB0aW9uT3IgPSBXVEY6OklzVGVtcGxhdGU8c3RkOjpkZWNheV90PFQ+LCBFeGNlcHRpb25Pcj46
OnZhbHVlOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc0V4Y2VwdGlvbk9yID0gSXNF
eGNlcHRpb25PcjxUPj4gc3RydWN0IFR5cGVPckV4Y2VwdGlvbk9yVW5kZXJseWluZ1R5cGVJbXBs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3Bw
CmluZGV4IDk4NWY3YTYyZjBjMWYzOTc1NTgyZWIzZjliOTg5NzUxNTYxNTY2NzcuLmU1YWEyNGVh
MWY5ZDJhNzg2ZDdiZTZkYzNkNDE0MWQ5ZmQxOTNhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTQ0LDEwICs0NCw4IEBAIHN0
cnVjdCBGaWxlSW5mb3JtYXRpb24gewogICAgIFN0cmluZyByZWxhdGl2ZVBhdGg7CiAgICAgU3Ry
aW5nIGRpc3BsYXlOYW1lOwogCi0gICAgRmlsZUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gRmlsZUluZm9ybWF0aW9uIHsgcGF0aC5pc29sYXRl
ZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRl
ZENvcHkoKSB9OwotICAgIH0KKyAgICBGaWxlSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJiB7IHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRl
ZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIEZpbGVJbmZvcm1h
dGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUocGF0aCkuaXNvbGF0ZWRD
b3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShkaXNwbGF5TmFtZSku
aXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5Rmls
ZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBW
ZWN0b3I8RmlsZUluZm9ybWF0aW9uPiYgZmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcAppbmRleCBlYTdkZmFjZjYyYjc4MjU1OWQ2NWUzYmZiNmIzZDBjY2RmZTI1MjFjLi5h
MjkwNmQ3Y2U3YTY1ZTFhYzRjZWFmOGU2NDI2ZTFkMDEzNDY5ZTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTQ5NSwxMyArNDk1LDEzIEBAIGJvb2wgRmlsZUlucHV0
VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmZpbGVzQ2hvc2VuKHBhdGhzLCByZXBs
YWNlbWVudFBhdGhzKTsKICAgICB9OwogCi0gICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVl
KCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwg
dHJhbnNjb2RpbmdQYXRocyA9IHRyYW5zY29kaW5nUGF0aHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5z
Y29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEkuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0
ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNpb24uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0No
b3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwgdHJhbnNjb2RpbmdQYXRocyA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kaW5nUGF0aHMpKSwgdHJhbnNjb2RpbmdVVEkgPSBX
VEZNb3ZlKHRyYW5zY29kaW5nVVRJKS5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNp
b24gPSBXVEZNb3ZlKHRyYW5zY29kaW5nRXh0ZW5zaW9uKS5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAgICAgYXV0
byByZXBsYWNlbWVudFBhdGhzID0gdHJhbnNjb2RlSW1hZ2VzKHRyYW5zY29kaW5nUGF0aHMsIHRy
YW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4dGVuc2lvbik7CiAgICAgICAgIEFTU0VSVCh0cmFu
c2NvZGluZ1BhdGhzLnNpemUoKSA9PSByZXBsYWNlbWVudFBhdGhzLnNpemUoKSk7CiAKLSAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsRmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNh
bGxGaWxlc0Nob3NlbiksIHJlcGxhY2VtZW50UGF0aHMgPSByZXBsYWNlbWVudFBhdGhzLmlzb2xh
dGVkQ29weSgpXSgpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsRmls
ZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3NlbiksIHJlcGxhY2VtZW50UGF0aHMgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXBsYWNlbWVudFBhdGhzKSldIHsKICAgICAgICAgICAg
IGNhbGxGaWxlc0Nob3NlbihyZXBsYWNlbWVudFBhdGhzKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAppbmRleCBmYTk5YTYwZDZhMjc4ZGQ5ZDgyZmZiZTllZTI4YTc3MTM2ZDMyMDE1Li4yODk2Mjhh
ZWE4OTViYjI4Y2QwNjMyNjViNWU0NWI2NTNhNTA1OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBA
QCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnVwZGF0ZVByZWRpY3RlZEJhc2VVUkwoY29uc3Qg
SFRNTFRva2VuJiB0b2tlbiwgYm9vbCBzaAogICAgICAgICByZXR1cm47CiAgICAgVVJMIHRlbXAg
eyBtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5n
SW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaHJlZkF0dHJpYnV0ZS0+dmFsdWUpKSB9OwogICAg
IGlmICghc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lcyB8fCBTZWN1cml0eVBvbGljeTo6aXNC
YXNlVVJMU2NoZW1lQWxsb3dlZCh0ZW1wKSkKLSAgICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVu
dFVSTCA9IHRlbXAuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIG1fcHJlZGljdGVkQmFzZUVsZW1l
bnRVUkwgPSBXVEZNb3ZlKHRlbXApLmlzb2xhdGVkQ29weSgpOwogfQogCiBIVE1MUHJlbG9hZFNj
YW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAppbmRl
eCBjZWU1NzZiODNlNDhkMmZlN2E0M2M0MDc3N2RkOWMwMTRhMjVhMThkLi43NGJkMTI5ZjFjODEy
MGQzNmNhYzYxZTI3OGYwYThkYmM2MDVlZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKQEAgLTE2MSwxNCArMTYxLDE0IEBAIENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIHBvbGljeTsKIH0KIAotQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7Ci0gICAgICAgIHZhbHVlLAotICAg
ICAgICByZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgcmVwb3J0T25s
eVZhbHVlLAotICAgICAgICByZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5
KCkKLSAgICB9OworICAgIHJldHVybiB7IHZhbHVlLCByZXBvcnRpbmdFbmRwb2ludC5pc29sYXRl
ZENvcHkoKSwgcmVwb3J0T25seVZhbHVlLCByZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQuaXNv
bGF0ZWRDb3B5KCkgfTsKK30KKworQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgdmFsdWUsIFdU
Rk1vdmUocmVwb3J0aW5nRW5kcG9pbnQpLmlzb2xhdGVkQ29weSgpLCByZXBvcnRPbmx5VmFsdWUs
IFdURk1vdmUocmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50KS5pc29sYXRlZENvcHkoKSB9Owog
fQogCiB2b2lkIGFkZENyb3NzT3JpZ2luT3BlbmVyUG9saWN5SGVhZGVycyhSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGNvb3ApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCmluZGV4IDUy
MjEwNjk4NjQ4ZTA4M2ZhMGQ5ZjI5Y2VmZjA3MzFmOWVlNDk4Y2QuLjIwZWM1M2I4ZWM3ZWViZjRk
MmE2OWFhYzU4MDM1NjJmNzA4NTg0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpbk9wZW5lclBvbGljeS5oCkBAIC02MCw3ICs2MCw4IEBAIHN0cnVjdCBDcm9zc09y
aWdpbk9wZW5lclBvbGljeSB7CiAgICAgY29uc3QgU3RyaW5nJiByZXBvcnRpbmdFbmRwb2ludEZv
ckRpc3Bvc2l0aW9uKENPT1BEaXNwb3NpdGlvbikgY29uc3Q7CiAgICAgYm9vbCBoYXNSZXBvcnRp
bmdFbmRwb2ludChDT09QRGlzcG9zaXRpb24pIGNvbnN0OwogCi0gICAgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBp
c29sYXRlZENvcHkoKSAmJjsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+IGRlY29kZShEZWNvZGVyJik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMjBkZGVmZGU0
MjgxYmVhYzZiZTk3M2YxODUzNGRlZjhhNTU5ZDFiOS4uZjE4ZGI4Njk1YjM5N2MxYjJhM2JkMzAz
MTExZGViOWU1NWU0OTQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpo
YW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYQogewogICAg
IHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKLSAg
ICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRy
b2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CisgICAg
ICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9s
bGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlwdCA9IFdURk1vdmUodW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpLmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkg
ewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKICAgICAg
ICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRp
b24oc2NyaXB0KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgK
aW5kZXggODhjMDM2ZDI2NDUxY2YxNzRmYmZmOGMwMDBlMjA1YzFkZmY3ZGY2Ni4uNWFjZTAxNWJk
NWVmNzI5M2I2MGVhMWU2YTZkZTFlOGNmODFlODlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRj
aE9wdGlvbnMuaApAQCAtNDUsNyArNDUsOCBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKIAogICAg
IEZldGNoT3B0aW9ucygpID0gZGVmYXVsdDsKICAgICBGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24s
IE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJlY3QsIFJlZmVycmVyUG9saWN5LCBTdHJp
bmcmJiwgYm9vbCk7Ci0gICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxzLCBjYWNoZSwgcmVkaXJlY3QsIHJl
ZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNvbGF0ZWRDb3B5KCksIGtlZXBBbGl2ZSB9OyB9Cisg
ICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBkZXN0aW5h
dGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ks
IGludGVncml0eS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0KKyAgICBGZXRjaE9wdGlv
bnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVu
dGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ksIFdURk1vdmUoaW50ZWdyaXR5
KS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlUGVyc2lzdGVudChFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBl
cnNpc3RlbnQoRGVjb2RlciYsIEZldGNoT3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNvbnRhaW5lci5oCmluZGV4IDQzMWNmMWM1YjJiZDFmOTAzZDE2YmVhZjc3MTIwZDcxYTYx
MDU5Y2QuLjhjMGFkMGY5MDczNzU5NjA2ZWI4YzY5NDYyMzI3NjZlZWY4NTMwZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDb250YWluZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmgKQEAgLTM2LDcgKzM2LDggQEAgc3RydWN0
IFBvbGljeUNvbnRhaW5lciB7CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3k7CiAgICAgLy8gRklYTUU6IENTUCBsaXN0IGFuZCByZWZlcnJlciBwb2xp
Y3kgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIFBvbGljeUNvbnRhaW5lci4KIAotICAgIFBvbGljeUNv
bnRhaW5lciBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaXNv
bGF0ZWRDb3B5KCksIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpIH07IH0K
KyAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3Zl
KGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5KS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvbGljeUNvbnRhaW5lcj4gZGVjb2Rl
KERlY29kZXImKTsKIH07CkBAIC00NiwxNCArNDcsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBvbGljeUNvbnRhaW5lciYgYSwgY29uc3QgUG9saWN5Q29udGFpbmVyJiBiKQogICAg
IHJldHVybiBhLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgPT0gYi5jcm9zc09yaWdpbkVtYmVk
ZGVyUG9saWN5ICYmIGEuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgPT0gYi5jcm9zc09yaWdpbk9w
ZW5lclBvbGljeTsKIH0KIAotaW5saW5lIFBvbGljeUNvbnRhaW5lciBQb2xpY3lDb250YWluZXI6
Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgY3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBQb2xpY3lDb250YWluZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5jcHAKaW5kZXggMDU3OGY2M2JlYmViMWE4N2Y0MGFmNDdiOTQzMmI2MmU1YmRjNGMyMi4uYjNh
OWY4MGFmNjAyODNiOTI0ZDQ3NTk4NmUwZjRlZmE2Y2QwMThjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCkBAIC02MCw1MyArNjAs
MjcgQEAgYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNWYWxpZCgpIGNvbnN0CiAgICAg
ICAgICYmIChtX3RpbWVzVG9TZW5kLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCB8fCBtX3RpbWVz
VG9TZW5kLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKTsKIH0KIAotUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxp
bmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7Ci0gICAgICAgIHRva2VuQmFzZTY0
VVJMLmlzb2xhdGVkQ29weSgpLAotICAgICAgICBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRD
b3B5KCksCi0gICAgICAgIGtleUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICBibGluZGVyLCB3YWl0aW5nVG9rZW4sIHJlYWR5VG9rZW4sCisj
ZW5kaWYKKyAgICAgICAgdmFsdWVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCkKICAgICB9OwogfQog
Ci1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAotewot
ICAgIHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpFcGhlbWVyYWxOb25jZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBu
b25jZS5pc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5s
aW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW46Omlz
b2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRv
a2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29w
eSgpICYmCiB7CiAgICAgcmV0dXJuIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgYmxp
bmRlciwKLSAgICAgICAgd2FpdGluZ1Rva2VuLAotICAgICAgICByZWFkeVRva2VuLAorICAgICAg
ICBibGluZGVyLCB3YWl0aW5nVG9rZW4sIHJlYWR5VG9rZW4sCiAjZW5kaWYKLSAgICAgICAgdmFs
dWVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCkKKyAgICAgICAgV1RGTW92ZSh2YWx1ZUJhc2U2NFVS
TCkuaXNvbGF0ZWRDb3B5KCkKICAgICB9OwogfQogCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlVW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxp
bmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgVW5saW5r
YWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRl
c3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJl
dHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGNvcHkg
ewogICAgICAgICBtX3NvdXJjZUlELApAQCAtMTI0LDYgKzk4LDI0IEBAIFByaXZhdGVDbGlja01l
YXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAog
ICAgIHJldHVybiBjb3B5OwogfQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBjb3B5IHsKKyAgICAgICAgbV9zb3VyY2VJRCwKKyAgICAgICAgV1RGTW92ZShtX3Nv
dXJjZVNpdGUpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1fZGVzdGluYXRpb25T
aXRlKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShtX3NvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSUQpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1fdGltZU9mQWRDbGlj
aykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faXNFcGhlbWVyYWwsCisgICAgfTsKKyAgICBj
b3B5Lm1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUobV9hdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKTsKKyAgICBjb3B5Lm1fdGltZXNUb1NlbmQgPSBXVEZNb3ZlKG1fdGltZXNUb1NlbmQp
OworICAgIGNvcHkubV9lcGhlbWVyYWxTb3VyY2VOb25jZSA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKG1fZXBoZW1lcmFsU291cmNlTm9uY2UpKTsKKyAgICBjb3B5Lm1fc291cmNlVW5saW5rYWJs
ZVRva2VuID0gV1RGTW92ZShtX3NvdXJjZVVubGlua2FibGVUb2tlbikuaXNvbGF0ZWRDb3B5KCk7
CisgICAgY29weS5tX3NvdXJjZVNlY3JldFRva2VuID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bV9zb3VyY2VTZWNyZXRUb2tlbikpOworICAgIHJldHVybiBjb3B5OworfQorCiBib29sIFByaXZh
dGVDbGlja01lYXN1cmVtZW50Ojppc05laXRoZXJTYW1lU2l0ZU5vckNyb3NzU2l0ZVRyaWdnZXJp
bmdFdmVudChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYgYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSkKIHsKICAgICBhdXRvIGlzU2FtZVNpdGVUcmlnZ2VyaW5nRXZlbnQgPSBy
ZWRpcmVjdERvbWFpbi5tYXRjaGVzKGZpcnN0UGFydHlVUkwpICYmIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmluZGV4IDAxZjg3MzQ4YWI2YTIxYTAyZTYwMzZi
MjU4ZTg5MjcyNjBlM2U3MTguLjFlNzgxYTlkZWRhOTA2YWYzMWVkMGIyMDliNTU5YTRjMWQ0YTI1
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5oCkBAIC03Nyw3ICs3Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgU291cmNlU2l0ZSBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTb3VyY2VTaXRl
IHsgcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBTb3VyY2VT
aXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4gU291cmNlU2l0ZSB7IHJlZ2lzdHJh
YmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgU291cmNlU2l0ZSBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiBTb3VyY2VTaXRlIHsgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
bikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
b3VyY2VTaXRlJiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtMTIzLDcgKzEyNCw4IEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUgeyByZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAg
IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1
cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyByZWdpc3RyYWJsZURvbWFpbi5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIGlzb2xhdGVk
Q29weSgpICYmIHsgcmV0dXJuIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIHsgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgIHsKQEAgLTE3MSw3ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEVwaGVtZXJh
bE5vbmNlIHsKICAgICAgICAgU3RyaW5nIG5vbmNlOwogCi0gICAgICAgIEVwaGVtZXJhbE5vbmNl
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBFcGhlbWVyYWxOb25jZSBpc29sYXRlZENv
cHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbm9uY2UuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAg
ICBFcGhlbWVyYWxOb25jZSBpc29sYXRlZENvcHkoKSAmJiAgeyByZXR1cm4geyBXVEZNb3ZlKG5v
bmNlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1ZhbGlkKCkgY29uc3Q7CiAKQEAgLTE4NywzMSArMTkwLDM3IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7CiAgICAgICAgIAotICAgICAgICBVbmxpbmth
YmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFVubGlua2FibGVUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRD
b3B5KCkgJiY7CiAgICAgfTsKIAogICAgIHN0cnVjdCBTb3VyY2VVbmxpbmthYmxlVG9rZW4gOiBV
bmxpbmthYmxlVG9rZW4gewotICAgICAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHko
KSBjb25zdCAmIHsgcmV0dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9
CisgICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVy
biB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBz
dHJ1Y3QgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gOiBVbmxpbmthYmxlVG9rZW4gewotICAg
ICAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICAgICAgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7
IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFVu
bGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3Qg
U2VjcmV0VG9rZW4gewogICAgICAgICBTdHJpbmcgdG9rZW5CYXNlNjRVUkw7CiAgICAgICAgIFN0
cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7CiAgICAgICAgIFN0cmluZyBrZXlJREJhc2U2NFVSTDsK
LSAgICAgICAgU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFNlY3Jl
dFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyB0b2tlbkJhc2U2NFVSTC5p
c29sYXRlZENvcHkoKSwgc2lnbmF0dXJlQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLCBrZXlJREJh
c2U2NFVSTC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNlY3JldFRva2VuIGlzb2xhdGVk
Q29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZSh0b2tlbkJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5
KCksIFdURk1vdmUoc2lnbmF0dXJlQmFzZTY0VVJMKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShr
ZXlJREJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIGlzVmFsaWQo
KSBjb25zdDsKICAgICB9OwogCiAgICAgc3RydWN0IFNvdXJjZVNlY3JldFRva2VuIDogU2VjcmV0
VG9rZW4gewotICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsK
KyAgICAgICAgU291cmNlU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVy
biB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVNlY3Jl
dFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVk
Q29weSgpIH07IH0KICAgICB9OwogCiAgICAgc3RydWN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4g
OiBTZWNyZXRUb2tlbiB7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uU2VjcmV0
VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIERlc3RpbmF0aW9uU2VjcmV0VG9r
ZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgICAgIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07
CiAKICAgICBzdHJ1Y3QgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7CkBAIC00MjksNyArNDM4LDgg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGlzb2xhdGVkQ29w
eSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
aXNvbGF0ZWRDb3B5KCkgJiY7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIEV4cGVjdGVkPEF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gcGFyc2VBdHRyaWJ1dGlvblJlcXVlc3RRdWVyeShj
b25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRp
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4
IDZhZWU5ZWJiYTQyN2MyNjc2ZDQ0ZWIwZGUxZmMwNGQxNDgzY2IwNjUuLmZhNmM5NmRlNDU4ZTAw
ZTA4YmE1YjQ5MDFlY2FhOTIzMDg1ZDE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZVRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlVGltaW5nLmNwcApAQCAtNjgsMTUgKzY4LDI2IEBAIFZlY3RvcjxSZWY8UGVyZm9ybWFuY2VT
ZXJ2ZXJUaW1pbmc+PiBSZXNvdXJjZVRpbWluZzo6cG9wdWxhdGVTZXJ2ZXJUaW1pbmcoKSBjb25z
CiAgICAgfSk7CiB9CiAKLVJlc291cmNlVGltaW5nIFJlc291cmNlVGltaW5nOjppc29sYXRlZENv
cHkoKSBjb25zdAorUmVzb3VyY2VUaW1pbmcgUmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSgp
IGNvbnN0ICYKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VUaW1pbmcoCisgICAgcmV0dXJuIFJlc291
cmNlVGltaW5nIHsKICAgICAgICAgbV91cmwuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIG1faW5p
dGlhdG9yLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBtX3Jlc291cmNlTG9hZFRpbWluZy5pc29s
YXRlZENvcHkoKSwKICAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCks
CiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShtX3NlcnZlclRpbWluZykKLSAgICApOworICAgIH07
Cit9CisKK1Jlc291cmNlVGltaW5nIFJlc291cmNlVGltaW5nOjppc29sYXRlZENvcHkoKSAmJgor
eworICAgIHJldHVybiBSZXNvdXJjZVRpbWluZyB7CisgICAgICAgIFdURk1vdmUobV91cmwpLmlz
b2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1faW5pdGlhdG9yKS5pc29sYXRlZENvcHko
KSwKKyAgICAgICAgV1RGTW92ZShtX3Jlc291cmNlTG9hZFRpbWluZykuaXNvbGF0ZWRDb3B5KCks
CisgICAgICAgIFdURk1vdmUobV9uZXR3b3JrTG9hZE1ldHJpY3MpLmlzb2xhdGVkQ29weSgpLAor
ICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3NlcnZlclRpbWluZykpCisgICAgfTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VU
aW1pbmcuaAppbmRleCA5MDVmYzY2OTBiMWE3N2MwZjcwOWI3MDNjYTQ5Y2YwOGNkNzhhMTljLi44
MTA5NjJmYzRkYTZhMjc0YjliZjQ3YjNjYjZiMWU2ZmY4NTY3MGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VUaW1pbmcuaApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVy
biBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KICAgICBWZWN0
b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGltaW5nPj4gcG9wdWxhdGVTZXJ2ZXJUaW1pbmcoKSBj
b25zdDsKLSAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBSZXNv
dXJjZVRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFJlc291cmNlVGltaW5nIGlz
b2xhdGVkQ29weSgpICYmOwogCiAgICAgdm9pZCBvdmVycmlkZUluaXRpYXRvck5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yID0gbmFtZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TZXJ2ZXJUaW1pbmcuY3BwCmluZGV4IGNlMTc2NzBkNDc5YWE4MTkwMzgyZWFkOWQ1OTNjMDE5
MWE4NTk1YWUuLmMwOTkwYzFhY2Y0NTk3YWQ4MDk3MmM2MTBiNjA2ZTkzYzhmMjQyYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwCkBAIC00Niw5ICs0NiwxNCBAQCB2b2lk
IFNlcnZlclRpbWluZzo6c2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICB9CiB9CiAKLVNlcnZlclRpbWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xh
dGVkQ29weSgpIGNvbnN0CitTZXJ2ZXJUaW1pbmcgU2VydmVyVGltaW5nOjppc29sYXRlZENvcHko
KSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIFNlcnZlclRpbWluZyhuYW1lLmlzb2xhdGVkQ29weSgp
LCBkdXJhdGlvbiwgZGVzY3JpcHRpb24uaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uU2V0LCBkZXNj
cmlwdGlvblNldCk7CisgICAgcmV0dXJuIFNlcnZlclRpbWluZyB7IG5hbWUuaXNvbGF0ZWRDb3B5
KCksIGR1cmF0aW9uLCBkZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRl
c2NyaXB0aW9uU2V0IH07Cit9CisKK1NlcnZlclRpbWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVk
Q29weSgpICYmCit7CisgICAgcmV0dXJuIFNlcnZlclRpbWluZyB7IFdURk1vdmUobmFtZSkuaXNv
bGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBXVEZNb3ZlKGRlc2NyaXB0aW9uKS5pc29sYXRlZENvcHko
KSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9uU2V0IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuaAppbmRleCA2N2I0MTA4ZWY5NDU5
MzlkOGY3ZjEzY2JkMWEwY2YwZTY4NGNiNDQ2Li44YmJlODU3ZDRiMjBjNjI2MWRkNjQzMTA2MDg1
NTM4MmJhODhjZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGlt
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5oCkBAIC00Miw3
ICs0Miw4IEBAIHN0cnVjdCBTZXJ2ZXJUaW1pbmcgewogICAgIFNlcnZlclRpbWluZyhTdHJpbmcm
JiBuYW1lLCBkb3VibGUgZHVyYXRpb24sIFN0cmluZyYmIGRlc2NyaXB0aW9uLCBib29sIGR1cmF0
aW9uU2V0LCBib29sIGRlc2NyaXB0aW9uU2V0KTsKIAogICAgIHZvaWQgc2V0UGFyYW1ldGVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotICAgIFNlcnZlclRpbWluZyBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBTZXJ2ZXJUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAg
ICBTZXJ2ZXJUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgJiY7CiB9OwogCiBpbmxpbmUgU2VydmVyVGlt
aW5nOjpTZXJ2ZXJUaW1pbmcoU3RyaW5nJiYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1MWZmYTY5MzUyZTVmMzIwMDVj
YWZlYTA5ZGM5NGNhMmZmOGQ0M2NkLi5lMjk1ODljMmZmMjQwMDQyNTM1YzNjMDM5NmZjOGI0NzYy
NDQyYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwgbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmll
ciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJlcXVlc3QgYmVpbmcg
YW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNvbGF0ZWQgY29weT8K
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3QgPSByZXF1
ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkp
LCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Q29weSA9IFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25z
Q29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0
eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Q29weSA9IFdURk1vdmUoY3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCBlZTQ3Y2FhYThkMGRkZTNmODkxNzlhNzU2MzFl
YTM0Y2JlMzYzMTJiLi42MjA0MDEwZmFmY2UwMzYzZTdjMGViYjRkNjE2Y2VmYjEwNDIwYTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTQyLDcgKzQyLDggQEAgc3RydWN0IENs
aWVudE9yaWdpbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPENsaWVudE9yaWdpbj4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIENsaWVudE9yaWdp
biBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJiB7IHJldHVybiB7IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgY2xpZW50T3JpZ2lu
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgJiYg
eyByZXR1cm4geyBXVEZNb3ZlKHRvcE9yaWdpbikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY2xp
ZW50T3JpZ2luKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgYm9vbCBpc1JlbGF0ZWQoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdG9wT3JpZ2luID09IG90
aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBvdGhlcjsgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW4g
Y2xpZW50UmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoY2xpZW50T3JpZ2luLmhvc3QpOyB9CkBAIC02MSwx
MSArNjIsNiBAQCBpbmxpbmUgYm9vbCBDbGllbnRPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ2xp
ZW50T3JpZ2luJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyLnRv
cE9yaWdpbiAmJiBjbGllbnRPcmlnaW4gPT0gb3RoZXIuY2xpZW50T3JpZ2luOwogfQogCi1pbmxp
bmUgQ2xpZW50T3JpZ2luIENsaWVudE9yaWdpbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4geyB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNsaWVudE9yaWdpbi5pc29sYXRl
ZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDbGll
bnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgdG9wT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2Fy
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBl
YzgwYWU0M2FiZTc5MTM2OTc4YzdmZDAwMzkwYzIxNmI2OWI3NzM4Li5kZmEzZTgyYTYyODRiYmRh
MTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Byb2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJt
aW5nLmNwcApAQCAtODksOSArODksOSBAQCBXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24gUHJv
Y2Vzc1dhcm1pbmc6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKQogICAgIHJldHVybiB7IEZv
bnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9
OwogfQogCi12b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKGNvbnN0
IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm8pCit2b2lkIFByb2Nlc3NXYXJtaW5nOjpw
cmV3YXJtV2l0aEluZm9ybWF0aW9uKFByZXdhcm1JbmZvcm1hdGlvbiYmIHByZXdhcm1JbmZvKQog
ewotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0ocHJld2FybUluZm8u
Zm9udENhY2hlKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJtKFdU
Rk1vdmUocHJld2FybUluZm8uZm9udENhY2hlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJv
Y2Vzc1dhcm1pbmcuaAppbmRleCBjZjE3ZWFhMWQ5ZDBiNmUzZDgxN2IzYjFhMjI0ZDVkY2M3MDIw
MDRlLi40ZDNjN2UxMTg4NTdhOGY3MDQ1ZTJhMzMwN2RlOGFjYzM1ZTA5OTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBwcmV3YXJtR2xvYmFsbHkoKTsKIAogICAgIHN0YXRpYyBQcmV3YXJtSW5mb3Jt
YXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpOwotICAgIHN0YXRpYyB2b2lkIHByZXdh
cm1XaXRoSW5mb3JtYXRpb24oY29uc3QgUHJld2FybUluZm9ybWF0aW9uJik7CisgICAgc3RhdGlj
IHZvaWQgcHJld2FybVdpdGhJbmZvcm1hdGlvbihQcmV3YXJtSW5mb3JtYXRpb24mJik7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcAppbmRleCBhMDkzNGQ3ZjUzNTU3Zjk2
NWYwYjUyZGQzNjgzOGRkNmE0NjkzOWZmLi4yYjNiZjQ3MmMwZjEyMDIzMTJiOTNiMjdmNDViMWE5
NDZmMzg2Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoY29uc3QKICAgICBtX2h0dHBTdGF0dXNDb2RlID0gcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKIH0KIAotQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKK0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsK
ICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5Owog
ICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMgPSBjcm9zc1RocmVhZENvcHkobV9oZWFkZXJzKTsK
QEAgLTUzLDQgKzUzLDEyIEBAIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlzb2xhCiAgICAgcmV0dXJuIGlz
b2xhdGVkQ29weTsKIH0KIAorQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sK
KyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5Owor
ICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2hl
YWRlcnMpKTsKKyAgICBpc29sYXRlZENvcHkubV9odHRwU3RhdHVzQ29kZSA9IG1faHR0cFN0YXR1
c0NvZGU7CisgICAgcmV0dXJuIGlzb2xhdGVkQ29weTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAppbmRleCA5NDhkOGNjODc0MjhkZTg5YTBm
YzgwOTljNjViZDAzYWNhY2Q1ZGIzLi5kNjA1OGU4Y2Y5OWM1ZGEzZDljOTJkMmU4NmI2ZmIyNDhk
NGNhOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaApAQCAtNDMsNyArNDMsOCBAQCBw
dWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKCkgPSBkZWZh
dWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7
CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGlzb2xhdGVkQ29weSgp
ICYmOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBkZWNvZGUoRGVjb2RlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggYWI2OGRhY2JmYTc0MGNh
NDhlYzFjMzQ1MmE4NjAyMTE2NmQ5NzEzMC4uZmEyMjQwZmU4NmQ0MDRmOGYzNDcxZTQxYTY4Yjc0
NjE1OTAxZDk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC00Niwx
NCArNDYsMTIgQEAgY2xhc3MgRmlsZUNob29zZXI7CiBjbGFzcyBJY29uOwogCiBzdHJ1Y3QgRmls
ZUNob29zZXJGaWxlSW5mbyB7Ci0gICAgRmlsZUNob29zZXJGaWxlSW5mbyBpc29sYXRlZENvcHko
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVw
bGFjZW1lbnRQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9
OwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyBwYXRoOwotICAgIGNvbnN0IFN0cmluZyByZXBs
YWNlbWVudFBhdGg7Ci0gICAgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lOworICAgIEZpbGVDaG9v
c2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHBhdGguaXNvbGF0
ZWRDb3B5KCksIHJlcGxhY2VtZW50UGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkg
JiYgeyByZXR1cm4geyBXVEZNb3ZlKHBhdGgpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHJlcGxh
Y2VtZW50UGF0aCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoZGlzcGxheU5hbWUpLmlzb2xhdGVk
Q29weSgpIH07IH0KKworICAgIFN0cmluZyBwYXRoOworICAgIFN0cmluZyByZXBsYWNlbWVudFBh
dGg7CisgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogfTsKIAogc3RydWN0IEZpbGVDaG9vc2VyU2V0
dGluZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rp
b25PcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9u
LmgKaW5kZXggNDI4YmZlMGU2MmM3OGNjYzI4OTA1MjhiMDE4NTg5YWI0ODJlMzk4Yi4uODVjMDA4
NTBjZWNjNGMwMTY3NjYwNzcxYzllYWQyZGQ2OTc1NWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCkBAIC00Myw2ICs0Myw5IEBAIHN0cnVj
dCBNZWRpYVNlbGVjdGlvbk9wdGlvbiB7CiAgICAgewogICAgIH0KIAorICAgIE1lZGlhU2VsZWN0
aW9uT3B0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBkaXNwbGF5TmFtZS5p
c29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTWVkaWFTZWxlY3Rpb25PcHRpb24gaXNvbGF0
ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGRpc3BsYXlOYW1lKS5pc29sYXRlZENvcHko
KSwgdHlwZSB9OyB9CisKICAgICBTdHJpbmcgZGlzcGxheU5hbWU7CiAgICAgVHlwZSB0eXBlIHsg
VHlwZTo6UmVndWxhciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJs
ZURvbWFpbi5oCmluZGV4IDdjZTNmNjEzNmMzMTdkYTNmYmVjMjI0MDFmNWJmMjgwMTY0OTVjNjAu
LmJjZThjNDMwMzQwZmU2NzBiYzI0OWNkZjE3Yjk4NjlhNDRhYjg2MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaApAQCAtNjcsNyArNjcsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtYXRjaGVzKG9yaWdpbi5ob3N0KTsKICAgICB9CiAKLSAgICBS
ZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBSZWdpc3RyYWJs
ZURvbWFpbiB7IG1fcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIFJl
Z2lzdHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4gUmVnaXN0cmFi
bGVEb21haW4geyBtX3JlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBS
ZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiBSZWdpc3RyYWJsZURv
bWFpbiB7IFdURk1vdmUobV9yZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQog
CiAgICAgUmVnaXN0cmFibGVEb21haW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQog
ICAgICAgICA6IG1fcmVnaXN0cmFibGVEb21haW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
aW5kZXggMWJmYTNmZDVmMmIzYTI2YTlhNGFlZTk1NTNiNjJiNjg2ZWJlMjI0MS4uMTJjZTNlOTZk
ZDMxMmM2MTNkNjE4MmIwOWQyNzkxNThiYmY2OWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBG
b250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiB7CiB9CiAKLXZvaWQgRm9udENhY2hlOjpwcmV3
YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYpCit2b2lkIEZvbnRDYWNoZTo6cHJld2FybShQ
cmV3YXJtSW5mb3JtYXRpb24mJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA4OWI0ZTE5MjdhNzhlMDNmMzQ4MzVhODZjYzkwMmIx
YTI2N2FhMjY5Li40OWQzMGQ2NDY5YWRmMWY0YWUwODg2ZWRjZmUyNGYyZWVkNDdkMjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8
bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0zNTYsMTMgKzM1NywxNCBAQCBwdWJsaWM6CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGZvbnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrOwogCiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFByZXdhcm1JbmZvcm1hdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHNlZW5GYW1pbGllcyksIGNy
b3NzVGhyZWFkQ29weShmb250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjaykgfTsgfQorICAg
ICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShzZWVuRmFtaWxpZXMpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUoZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2spKSB9OyB9CiAKICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmV3YXJtSW5m
b3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKICAgICBQcmV3YXJtSW5mb3JtYXRp
b24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIGNvbnN0OwotICAgIHZvaWQgcHJld2FybShj
b25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHByZXdhcm0oUHJld2FybUluZm9y
bWF0aW9uJiYpOwogICAgIHN0YXRpYyB2b2lkIHByZXdhcm1HbG9iYWxseSgpOwogCiBwcml2YXRl
OgpAQCAtNDMxLDExICs0MzMsNiBAQCBpbmxpbmUgYm9vbCBGb250Q2FjaGU6OlByZXdhcm1JbmZv
cm1hdGlvbjo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIHNlZW5GYW1pbGllcy5pc0VtcHR5
KCkgJiYgZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2suaXNFbXB0eSgpOwogfQogCi1p
bmxpbmUgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gRm9udENhY2hlOjpQcmV3YXJtSW5m
b3JtYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgc2VlbkZhbWls
aWVzLmlzb2xhdGVkQ29weSgpLCBmb250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjay5pc29s
YXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBGb250Q2Fj
aGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJp
Y0ZhbWlsaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5l
cmljRmFtaWxpZXMuY3BwCmluZGV4IGIwYjNkNDUyZDU2MTljNjk4YTliMjU5YWFhZjI1M2U0MTNk
MDMyMzMuLjBjNDViMjA1YzlhOGNmMGZjNTk3OTU1MDhmZjYwNDk2MjNhM2I0YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29w
aWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTkyLDIzICs5MywyOSBAQCBGb250R2VuZXJpY0ZhbWlsaWVzOjpGb250R2VuZXJpY0ZhbWls
aWVzKCkKICAgICB9KTsKIH0KIAotRm9udEdlbmVyaWNGYW1pbGllcyBGb250R2VuZXJpY0ZhbWls
aWVzOjppc29sYXRlZENvcHkoKSBjb25zdAorRm9udEdlbmVyaWNGYW1pbGllcyBGb250R2VuZXJp
Y0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgRm9udEdlbmVyaWNGYW1p
bGllcyBjb3B5OwotICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX3N0YW5kYXJkRm9udEZhbWls
eU1hcCkKLSAgICAgICAgY29weS5tX3N0YW5kYXJkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUu
a2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgZm9yIChhdXRvICZrZXlW
YWx1ZSA6IG1fc2VyaWZGb250RmFtaWx5TWFwKQotICAgICAgICBjb3B5Lm1fc2VyaWZGb250RmFt
aWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsK
LSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9maXhlZEZvbnRGYW1pbHlNYXApCi0gICAgICAg
IGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFs
dWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX3NhbnNTZXJp
ZkZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9zYW5zU2VyaWZGb250RmFtaWx5TWFwLmFk
ZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3Ig
KGF1dG8gJmtleVZhbHVlIDogbV9jdXJzaXZlRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5t
X2N1cnNpdmVGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlz
b2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9mYW50YXN5Rm9udEZh
bWlseU1hcCkKLSAgICAgICAgY29weS5tX2ZhbnRhc3lGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1
ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtl
eVZhbHVlIDogbV9waWN0b2dyYXBoRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3BpY3Rv
Z3JhcGhGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xh
dGVkQ29weSgpKTsKKyAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJl
YWRDb3B5KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fc2VyaWZGb250RmFt
aWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fc2VyaWZGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5
Lm1fZml4ZWRGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fZml4ZWRGb250RmFtaWx5
TWFwKTsKKyAgICBjb3B5Lm1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29w
eShtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9jdXJzaXZlRm9udEZhbWls
eU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2N1cnNpdmVGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5
Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkobV9mYW50YXN5Rm9udEZh
bWlseU1hcCk7CisgICAgY29weS5tX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJl
YWRDb3B5KG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXApOworICAgIHJldHVybiBjb3B5OworfQor
CitGb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFtaWxpZXM6Omlzb2xhdGVkQ29weSgp
ICYmCit7CisgICAgRm9udEdlbmVyaWNGYW1pbGllcyBjb3B5OworICAgIGNvcHkubV9zdGFuZGFy
ZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3N0YW5kYXJkRm9udEZh
bWlseU1hcCkpOworICAgIGNvcHkubV9zZXJpZkZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShtX3NlcmlmRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9maXhlZEZvbnRG
YW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2ZpeGVkRm9udEZhbWlseU1hcCkp
OworICAgIGNvcHkubV9zYW5zU2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUobV9zYW5zU2VyaWZGb250RmFtaWx5TWFwKSk7CisgICAgY29weS5tX2N1cnNpdmVGb250
RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9jdXJzaXZlRm9udEZhbWlseU1h
cCkpOworICAgIGNvcHkubV9mYW50YXN5Rm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKG1fZmFudGFzeUZvbnRGYW1pbHlNYXApKTsKKyAgICBjb3B5Lm1fcGljdG9ncmFwaEZv
bnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3BpY3RvZ3JhcGhGb250RmFt
aWx5TWFwKSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaAppbmRleCA2MDc3MGNk
NjRjMzkxOGIwMDA1MWU3NDU3YmJlZjQzNzRmMmFlYzI0Li5lZTQ3ZGRjYzNjNGMyYzQwODk3NWRi
NzQ5OTY0ZDQ3MzFkNmNmNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNz
IEZvbnRHZW5lcmljRmFtaWxpZXMgewogcHVibGljOgogICAgIEZvbnRHZW5lcmljRmFtaWxpZXMo
KTsKIAotICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
Rm9udEdlbmVyaWNGYW1pbGllcyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIEZvbnRHZW5l
cmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICBjb25zdCBTdHJpbmcmIHN0YW5k
YXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKICAgICBj
b25zdCBTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9O
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAppbmRleCBmMmM5NjQwZDQ2ZDNhOTM1NjExNGYzM2FiMTQwNTJjN2ZlYzI3NzhjLi40
YjNhNWUxNDI4N2I1NzNjMzI5NGFhMGFhNmM2YWIyZWMyMzAyNDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zNzMsNyArMzcz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAg
ICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5nRHVyYXRpb24gLSAoTW9ub3RvbmljVGltZTo6bm93
KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQg
ZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJlYWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9y
eUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgotICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVj
b2Rlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdl
ID0gV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIHByb3RlY3RlZERlY29k
aW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVSTCA9IFdURk1vdmUoc291cmNlVVJM
KS5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdURk1vdmUocGxhdGZvcm1JbWFnZSks
IGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHF1ZXVl
IG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUgZnJhbWUgTmF0aXZlSW1h
Z2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgogICAgICAgICAgICAgICAg
IGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09IHByb3RlY3RlZFRoaXMtPm1fZGVj
b2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigpID09IHByb3RlY3RlZFRoaXMtPm1f
ZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJvdGVjdGVkVGhpcy0+bV9m
cmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcAppbmRleCBhZDlhMjM3YWE5YzYwNDg1NDc0NTUxYzI0NTg2ZDJjYThhNTc2MzAyLi40
MGRmMzJlYzc2ZjNlNDk4ZWRhNzljYTg3OGNkZjA2M2M2OTNhOThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwCkBAIC05NTYsNyArOTU2LDcgQEAgcHVibGljOgogICAgICAgICB9KCk7CiAKICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzTG9jayB9
OwotICAgICAgICByZXR1cm4gKm1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmFkZChmb2xk
ZWQuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaW5zdGFsbGVkRm9udEZhbWlseSkpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuICptX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5h
ZGQoV1RGTW92ZShmb2xkZWQpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRG
YW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCiAgICAgY29uc3QgSW5zdGFsbGVkRm9u
dCYgZm9udEZvclBvc3RTY3JpcHROYW1lKGNvbnN0IEF0b21TdHJpbmcmIHBvc3RTY3JpcHROYW1l
KQpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gRm9u
dENhY2hlOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4geyBj
b3B5VG9WZWN0b3IobV9zZWVuRmFtaWxpZXNGb3JQcmV3YXJtaW5nKSwgY29weVRvVmVjdG9yKG1f
Zm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2tGb3JQcmV3YXJtaW5nKSB9OwogfQogCi12
b2lkIEZvbnRDYWNoZTo6cHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1J
bmZvcm1hdGlvbikKK3ZvaWQgRm9udENhY2hlOjpwcmV3YXJtKFByZXdhcm1JbmZvcm1hdGlvbiYm
IHByZXdhcm1JbmZvcm1hdGlvbikKIHsKICAgICBpZiAocHJld2FybUluZm9ybWF0aW9uLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBGb250Q2Fj
aGU6OnByZXdhcm0oY29uc3QgUHJld2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mb3JtYXRpb24p
CiAKICAgICBhdXRvJiBkYXRhYmFzZSA9IEZvbnREYXRhYmFzZTo6c2luZ2xldG9uRGlzYWxsb3dp
bmdVc2VySW5zdGFsbGVkRm9udHMoKTsKIAotICAgIG1fcHJld2FybVF1ZXVlLT5kaXNwYXRjaChb
JmRhdGFiYXNlLCBwcmV3YXJtSW5mb3JtYXRpb24gPSBwcmV3YXJtSW5mb3JtYXRpb24uaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICBtX3ByZXdhcm1RdWV1ZS0+ZGlzcGF0Y2goWyZkYXRhYmFzZSwgcHJl
d2FybUluZm9ybWF0aW9uID0gV1RGTW92ZShwcmV3YXJtSW5mb3JtYXRpb24pLmlzb2xhdGVkQ29w
eSgpXSB7CiAgICAgICAgIGZvciAoYXV0byYgZmFtaWx5IDogcHJld2FybUluZm9ybWF0aW9uLnNl
ZW5GYW1pbGllcykKICAgICAgICAgICAgIGRhdGFiYXNlLmNvbGxlY3Rpb25Gb3JGYW1pbHkoZmFt
aWx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggMTE3Mjg5NGZlZDI1
YjhmNGY1YzMzMzBhZjMyZTI0Mjg4YTdjNTg2My4uYTBjNTcxMDc1ODk2ZDY0NTQ3ZTcyOTg0ZGYx
YTA4MzE4ZDg0ZGViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC00Myw2
ICs0Myw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4KICNpbXBvcnQg
PFVJS2l0L1VJVmlldy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
CisjaW1wb3J0IDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVl
dWUuaD4KIAogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CkBAIC00ODIsMTkgKzQ4
MywxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKGJvb2wgY2FuUGxheUZhcwogICAgICAgICBjbGllbnQtPmNhblBsYXlG
YXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsKIH0KIAotc3RhdGljIFZlY3Rv
cjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gaXNvbGF0ZWRDb3B5KGNvbnN0IFZlY3RvcjxNZWRpYVNl
bGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMpCi17Ci0gICAgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0
aW9uPiBvcHRpb25zQ29weTsKLSAgICBvcHRpb25zQ29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG9wdGlvbnMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IG9wdGlvbnMpCi0gICAg
ICAgIG9wdGlvbnNDb3B5LnVuY2hlY2tlZEFwcGVuZCh7IG9wdGlvbi5kaXNwbGF5TmFtZS5pc29s
YXRlZENvcHkoKSwgb3B0aW9uLnR5cGUgfSk7Ci0gICAgcmV0dXJuIG9wdGlvbnNDb3B5OwotfQot
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0
ZWRJbmRleF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBz
ZWxlY3RlZEluZGV4XSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CkBAIC01MDcsNyArNDk5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNv
bnN0IFYKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlv
bj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYgKFdlYlRocmVh
ZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyks
IHNlbGVjdGVkSW5kZXhdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShvcHRp
b25zKSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlvbi5oCmlu
ZGV4IDZlMWU4ZDFmY2JhNzg5MGQ5NjQ3NjBlODQzNjFhNTVmMTA5OGI3OWYuLmRiODMzZjMwYmJl
N2U2MTRkMjE5ZTdlMzE1NzYzMmMyZjBhM2YwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlv
bi5oCkBAIC0zNiwxNyArMzYsMjMgQEAgc3RydWN0IEF1ZGlvQ29uZmlndXJhdGlvbiB7CiAgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2FtcGxlcmF0ZTsKICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHNwYXRpYWxSZW5kZXJpbmc7CiAKLSAgICBBdWRpb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgQXVkaW9Db25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICY7CisgICAgQXVkaW9Db25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlubGluZSBBdWRpb0NvbmZpZ3VyYXRpb24g
QXVkaW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAoraW5saW5lIEF1ZGlvQ29u
ZmlndXJhdGlvbiBBdWRpb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsK
ICAgICByZXR1cm4geyBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKSwgY2hhbm5lbHMuaXNvbGF0
ZWRDb3B5KCksIGJpdHJhdGUsIHNhbXBsZXJhdGUsIHNwYXRpYWxSZW5kZXJpbmcgfTsKIH0KIAor
aW5saW5lIEF1ZGlvQ29uZmlndXJhdGlvbiBBdWRpb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29w
eSgpICYmCit7CisgICAgcmV0dXJuIHsgV1RGTW92ZShjb250ZW50VHlwZSkuaXNvbGF0ZWRDb3B5
KCksIFdURk1vdmUoY2hhbm5lbHMpLmlzb2xhdGVkQ29weSgpLCBiaXRyYXRlLCBzYW1wbGVyYXRl
LCBzcGF0aWFsUmVuZGVyaW5nIH07Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEF1ZGlvQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oCmluZGV4IGVmYWM0Yzc5NGRjZmViNDczMTU2YmQzZjQ1
ZmRlNTljZmZmMDg1MzguLjk0M2I5MDViNjg1MjlhNjczNjdjYWEzYjg0NzRhODlhYmUwNGM0OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oCkBAIC0zNSwxNyArMzUsMjMgQEAgc3RydWN0
IE1lZGlhQ29uZmlndXJhdGlvbiB7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRp
b24+IHZpZGVvOwogICAgIHN0ZDo6b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBhdWRpbzsK
IAotICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBNZWRp
YUNvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBNZWRpYUNvbmZpZ3Vy
YXRpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAotaW5saW5lIE1lZGlhQ29uZmlndXJhdGlvbiBNZWRpYUNvbmZpZ3VyYXRpb246Omlz
b2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgTWVkaWFDb25maWd1cmF0aW9uIE1lZGlhQ29uZmln
dXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNyb3NzVGhy
ZWFkQ29weSh2aWRlbyksICBjcm9zc1RocmVhZENvcHkoYXVkaW8pIH07CiB9CiAKK2lubGluZSBN
ZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSAmJgor
eworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZpZGVvKSksICBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShhdWRpbykpIH07Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIE1lZGlhQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9WaWRlb0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oCmluZGV4IGU4NjMxZjJjZjE3NjdlYWZiODVk
NTU2YTBkZTdiMjU0YzA1YjJiODcuLjEzMDFlYzY2M2QzYjk2YjMzMmM4OTc1ODZiMGEzYTNhYjll
NzU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oCkBAIC00MywxNyArNDMsMjMgQEAg
c3RydWN0IFZpZGVvQ29uZmlndXJhdGlvbiB7CiAgICAgc3RkOjpvcHRpb25hbDxIZHJNZXRhZGF0
YVR5cGU+IGhkck1ldGFkYXRhVHlwZTsKICAgICBzdGQ6Om9wdGlvbmFsPFRyYW5zZmVyRnVuY3Rp
b24+IHRyYW5zZmVyRnVuY3Rpb247CiAKLSAgICBWaWRlb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgVmlkZW9Db25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICY7CisgICAgVmlkZW9Db25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlubGluZSBWaWRlb0NvbmZpZ3VyYXRpb24g
VmlkZW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAoraW5saW5lIFZpZGVvQ29u
ZmlndXJhdGlvbiBWaWRlb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsK
ICAgICByZXR1cm4geyBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKSwgd2lkdGgsIGhlaWdodCwg
Yml0cmF0ZSwgZnJhbWVyYXRlLCBhbHBoYUNoYW5uZWwsIGNvbG9yR2FtdXQsIGhkck1ldGFkYXRh
VHlwZSwgdHJhbnNmZXJGdW5jdGlvbiB9OwogfQogCitpbmxpbmUgVmlkZW9Db25maWd1cmF0aW9u
IFZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBX
VEZNb3ZlKGNvbnRlbnRUeXBlKS5pc29sYXRlZENvcHkoKSwgd2lkdGgsIGhlaWdodCwgYml0cmF0
ZSwgZnJhbWVyYXRlLCBhbHBoYUNoYW5uZWwsIGNvbG9yR2FtdXQsIGhkck1ldGFkYXRhVHlwZSwg
dHJhbnNmZXJGdW5jdGlvbiB9OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBW
aWRlb0NvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaAppbmRleCA2YTNhYTg3ZDg5MzFjNGI4MGNhMGRlYTczODA2YjU3MGM4
Njc4ZTU4Li4zNGUzMDI1Zjc0MWM2YTllOWYyM2M0NGI0Nzg5MzFiNzhkODA5NTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaApAQCAtNDIsMTkgKzQyLDI3IEBAIHN0cnVjdCBSVENEYXRhQ2hhbm5l
bEluaXQgewogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IGlkOwogICAgIFJUQ1By
aW9yaXR5VHlwZSBwcmlvcml0eSB7IFJUQ1ByaW9yaXR5VHlwZTo6TG93IH07CiAKLSAgICBSVENE
YXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgUlRDRGF0YUNoYW5uZWxJ
bml0IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgUlRDRGF0YUNoYW5uZWxJbml0IGlzb2xh
dGVkQ29weSgpICYmOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlu
bGluZSBSVENEYXRhQ2hhbm5lbEluaXQgUlRDRGF0YUNoYW5uZWxJbml0Ojppc29sYXRlZENvcHko
KSBjb25zdAoraW5saW5lIFJUQ0RhdGFDaGFubmVsSW5pdCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlz
b2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBhdXRvIGNvcHkgPSAqdGhpczsKICAgICBjb3B5
LnByb3RvY29sID0gcHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCk7CiAgICAgcmV0dXJuIGNvcHk7CiB9
CiAKK2lubGluZSBSVENEYXRhQ2hhbm5lbEluaXQgUlRDRGF0YUNoYW5uZWxJbml0Ojppc29sYXRl
ZENvcHkoKSAmJgoreworICAgIGF1dG8gY29weSA9IFdURk1vdmUoKnRoaXMpOworICAgIGNvcHku
cHJvdG9jb2wgPSBXVEZNb3ZlKGNvcHkucHJvdG9jb2wpLmlzb2xhdGVkQ29weSgpOworICAgIHJl
dHVybiBjb3B5OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFJUQ0RhdGFDaGFu
bmVsSW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8
PCBvcmRlcmVkIDw8IG1heFBhY2tldExpZmVUaW1lIDw8IG1heFJldHJhbnNtaXRzIDw8IHByb3Rv
Y29sIDw8IG5lZ290aWF0ZWQgPDwgaWQgPDwgcHJpb3JpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCmluZGV4IDhlMzc1OGZlNjZhYjg2YTY2YWIyZDcwOTdkNGNmNTRmMjk3YzBm
YjkuLjNlNTFmZTE1Njc1ZDczM2JjY2VmNjljYzk4YTUwMzdjZTZjZDU3NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xODAsNyArMTgwLDcgQEAgVmVjdG9yPENhcHR1
cmVEZXZpY2U+IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJldHJpZXZlQ2FwdHVyZURldmljZXMo
KQogdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVyZURldmljZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIG1fZGlzcGF0Y2hRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZGV2aWNlTGlzdCA9IHJldHJpZXZlQ2FwdHVyZURldmljZXMoKS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsgICAgICAgICAgICAKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBkZXZp
Y2VMaXN0ID0gY3Jvc3NUaHJlYWRDb3B5KHJldHJpZXZlQ2FwdHVyZURldmljZXMoKSldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBib29sIGRldmljZUhhc0NoYW5nZWQgPSBtX2RldmljZXMuc2l6
ZSgpICE9IGRldmljZUxpc3Quc2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFkZXZpY2VIYXNDaGFu
Z2VkKSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBkZXZp
Y2VMaXN0LnNpemUoKTsgKytjcHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCBkODBjNWJkNmMwM2RmNTJhZDExMzljZTQz
NGM0YTRhNTMzODE0ZWE3Li5iZDUxNmNmNmM2NWYyZGI0MDUxOGYwY2QxZDdlOTdlOGY3NGUzODUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgSFRUUEhlYWRlck1hcDo6SFRUUEhlYWRlck1hcCgpCiB7
CiB9CiAKLUhUVFBIZWFkZXJNYXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K0hUVFBIZWFkZXJNYXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewog
ICAgIEhUVFBIZWFkZXJNYXAgbWFwOwogICAgIG1hcC5tX2NvbW1vbkhlYWRlcnMgPSBjcm9zc1Ro
cmVhZENvcHkobV9jb21tb25IZWFkZXJzKTsKQEAgLTUwLDYgKzUwLDE0IEBAIEhUVFBIZWFkZXJN
YXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXR1cm4gbWFwOwog
fQogCitIVFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSgpICYmCit7Cisg
ICAgSFRUUEhlYWRlck1hcCBtYXA7CisgICAgbWFwLm1fY29tbW9uSGVhZGVycyA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKG1fY29tbW9uSGVhZGVycykpOworICAgIG1hcC5tX3VuY29tbW9uSGVh
ZGVycyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fdW5jb21tb25IZWFkZXJzKSk7CisgICAg
cmV0dXJuIG1hcDsKK30KKwogU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0CiB7CiAgICAgSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggZmEwMzdm
Y2Y5NjgxNzNjMGNhOTNkNDcxYzNkZDQxZGM0ODcwYjBjYi4uMWZlMTlkMzExOGIxM2JhYThiOWNi
MDRiM2Y3ZGU2OTliZDgwZmY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQSGVhZGVyTWFwLmgKQEAgLTQwLDcgKzQwLDggQEAgcHVibGljOgogICAgICAgICBI
VFRQSGVhZGVyTmFtZSBrZXk7CiAgICAgICAgIFN0cmluZyB2YWx1ZTsKIAotICAgICAgICBDb21t
b25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgICAgIENvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsga2V5ICwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBD
b21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBrZXkgLCBXVEZNb3ZlKHZh
bHVlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb21tb25IZWFkZXI+IGRlY29kZShEZWNvZGVy
Jik7CiAKQEAgLTUxLDcgKzUyLDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcga2V5OwogICAg
ICAgICBTdHJpbmcgdmFsdWU7CiAKLSAgICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4geyBrZXkuaXNvbGF0ZWRDb3B5KCkgLCB2YWx1ZS5pc29sYXRlZENv
cHkoKSB9OyB9CisgICAgICAgIFVuY29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBrZXkuaXNvbGF0ZWRDb3B5KCkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9
CisgICAgICAgIFVuY29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZShrZXkpLmlzb2xhdGVkQ29weSgpICwgV1RGTW92ZSh2YWx1ZSkuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VW5jb21tb25IZWFkZXI+IGRlY29kZShEZWNvZGVyJik7CiAKQEAgLTEzNCw3ICsx
MzYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRUUEhlYWRlck1hcCgpOwogCiAg
ICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYW5v
dGhlciB0aHJlYWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgSFRUUEhlYWRlck1hcCBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29w
eSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRUUEhlYWRlck1hcCBpc29sYXRlZENv
cHkoKSAmJjsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbW9uSGVh
ZGVycy5pc0VtcHR5KCkgJiYgbV91bmNvbW1vbkhlYWRlcnMuaXNFbXB0eSgpOyB9CiAgICAgaW50
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbW1vbkhlYWRlcnMuc2l6ZSgpICsgbV91bmNvbW1v
bkhlYWRlcnMuc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA2ZTQ1YWExNzZkMDdmMjI5MWJi
ZTIzNTUwNzc2NWJhYjU4OGFjMWY0Li4zODRkYzcxNDcyYmI2MDExZDZjZGUwMzFhYThlODJjNWEy
MmMxZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRzOjpjbGFpbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8
RGVmZXJyZWRQcgogICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllcl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKICAgICAgICAgY29u
bmVjdGlvbi0+Y2xhaW0oc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwg
c2VydmljZVdvcmtlcklkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3Jr
ZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgcmVzdWx0ID0gaXNv
bGF0ZWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29y
a2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIHJlc3VsdCA9IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS5tX3BlbmRp
bmdQcm9taXNlcy50YWtlKHByb21pc2VQb2ludGVyKSkgewogICAgICAgICAgICAgICAgICAgICBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4gcGVuZGluZ1Byb21pc2UgeyBwcm9taXNlLnJlbGVhc2VO
b25OdWxsKCkgfTsKICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2Uuc2V0dGxlKFdU
Rk1vdmUocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDQ1NjcxY2Yy
N2EzNDFlYzc1OTEyYzVmMDE0MjkzYjE0ZWQ4ZmFiOGYuLmU2MjhlZjBlYTQ3MGZhMjZlNjVhZTM0
OTZlZmZmYmQxZTE3NjQ1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0zNzgs
NyArMzc4LDcgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NoZWR1bGVQdXNoQ2hhbmdl
cyhWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHVwZGF0ZWRS
ZWdpc3RyYXRpb25zLmNsZWFyKCk7CiAgICAgICAgICAgICByZW1vdmVkUmVnaXN0cmF0aW9ucy5j
bGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBzdWNjZXNzLCBwdXNoQ291bnRlciwg
dXBkYXRlZFJlZ2lzdHJhdGlvbnMgPSBXVEZNb3ZlKHVwZGF0ZWRSZWdpc3RyYXRpb25zKS5pc29s
YXRlZENvcHkoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMgPSBXVEZNb3ZlKHJlbW92ZWRSZWdpc3Ry
YXRpb25zKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHN1Y2Nlc3MsIHB1c2hD
b3VudGVyLCB1cGRhdGVkUmVnaXN0cmF0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHVw
ZGF0ZWRSZWdpc3RyYXRpb25zKSksIHJlbW92ZWRSZWdpc3RyYXRpb25zID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUocmVtb3ZlZFJlZ2lzdHJhdGlvbnMpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
c3VjY2VzcyAmJiAocHVzaENvdW50ZXIgKyAxKSA9PSBtX3B1c2hDb3VudGVyKSB7CiAgICAgICAg
ICAgICAgICAgLy8gV2UgcmV0cnkgd3JpdGluZyBvbmNlIGlmIG5vIG90aGVyIGNoYW5nZSB3YXMg
cHVzaGVkLgogICAgICAgICAgICAgICAgIHNjaGVkdWxlUHVzaENoYW5nZXMoV1RGTW92ZSh1cGRh
dGVkUmVnaXN0cmF0aW9ucyksIFdURk1vdmUocmVtb3ZlZFJlZ2lzdHJhdGlvbnMpLCBTaG91bGRS
ZXRyeTo6Tm8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCmluZGV4IGVhNWNhNmRiMzQ2YTYyMTc4MjA3MjYz
MWEzNGYyMDE3MjZjNzc1NjguLjMzNmZlYTg2ZWI4YmI3OGNhMzZmYzQzMjk4NGVlYTRjMjJiM2Jj
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaApAQCAt
MzksMTcgKzM5LDggQEAgc3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJzIHsKICAgICBTZXR0aW5nczo6
VmFsdWVzIHNldHRpbmdzVmFsdWVzOwogICAgIGJvb2wgaXNBdWRpb0NvbnRleHRSZWFsVGltZTsK
IAotICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAotICAg
ICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgICAgICBzYW1wbGVSYXRlLAotICAgICAg
ICAgICAgaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgICAgIHNldHRpbmdzVmFs
dWVzLmlzb2xhdGVkQ29weSgpLAotICAgICAgICAgICAgaXNBdWRpb0NvbnRleHRSZWFsVGltZQot
ICAgICAgICB9OwotICAgIH0KKyAgICBXb3JrbGV0UGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSBj
b25zdCAmIHsgcmV0dXJuIHsgd2luZG93VVJMLmlzb2xhdGVkQ29weSgpLCBqc1J1bnRpbWVGbGFn
cywgc2FtcGxlUmF0ZSwgaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc2V0dGluZ3NWYWx1ZXMu
aXNvbGF0ZWRDb3B5KCksIGlzQXVkaW9Db250ZXh0UmVhbFRpbWUgfTsgfQorICAgIFdvcmtsZXRQ
YXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZSh3aW5kb3dVUkwp
Lmlzb2xhdGVkQ29weSgpLCBqc1J1bnRpbWVGbGFncywgc2FtcGxlUmF0ZSwgV1RGTW92ZShpZGVu
dGlmaWVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShzZXR0aW5nc1ZhbHVlcykuaXNvbGF0ZWRD
b3B5KCksIGlzQXVkaW9Db250ZXh0UmVhbFRpbWUgfTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKaW5kZXggY2NkMWYxMTI1ZmU2ODk2NjY5OGE4ZjVmNmQ3YjBmNDFmMGU1MTM1
NS4uYTU1Mjk1ZjMwNTUwZGYyNzQwNGJjZTQyOTlkMmZlMzc5YjBlNDllNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC00
NTUsMTUgKzQ1NSwxNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptaWdyYXRlRGF0YVRvUENNRGF0YWJhc2VJZk5lY2Vzc2FyeSgpCiAgICAgfQogCiAgICAgaWYg
KCF1bmF0dHJpYnV0ZWQuaXNFbXB0eSgpIHx8ICFhdHRyaWJ1dGVkLmlzRW1wdHkoKSkgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCB1
bmF0dHJpYnV0ZWQgPSB1bmF0dHJpYnV0ZWQuaXNvbGF0ZWRDb3B5KCksIGF0dHJpYnV0ZWQgPSBh
dHRyaWJ1dGVkLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgdW5hdHRyaWJ1dGVkID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodW5hdHRyaWJ1dGVkKSksIGF0dHJpYnV0ZWQgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShhdHRyaWJ1dGVkKSldICgpIG11dGFibGUgewogICAgICAgICAg
ICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBzdG9yZS0+bmV0d29ya1Nlc3Npb24oKTsKICAgICAg
ICAgICAgIGlmICghbmV0d29ya1Nlc3Npb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gbmV0d29ya1Nlc3Npb24tPnByaXZhdGVDbGlja01l
YXN1cmVtZW50KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHBjbSA6IFdURk1vdmUoYXR0cmli
dXRlZCkpCisgICAgICAgICAgICBmb3IgKGF1dG8mJiBwY20gOiBXVEZNb3ZlKGF0dHJpYnV0ZWQp
KQogICAgICAgICAgICAgICAgIG1hbmFnZXIubWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbUxlZ2FjeVN0b3JhZ2UoV1RGTW92ZShwY20pLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHBjbSA6
IFdURk1vdmUodW5hdHRyaWJ1dGVkKSkKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHBjbSA6IFdU
Rk1vdmUodW5hdHRyaWJ1dGVkKSkKICAgICAgICAgICAgICAgICBtYW5hZ2VyLm1pZ3JhdGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdURk1vdmUocGNtKSwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CiAgICAgICAg
IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5k
ZXggNjYxYjE1NjNlYzY0YjY2ZTc4ZjFmOGQ1NTRjNmQ5ZGYzNzMxYWU2Yi4uYzVjZDlmMTRkZmEy
Njc2NmRlMzExMDJjZGM0MjQxY2ZhNjkxYTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03NiwxNCArNzcsMTYgQEAgc3RydWN0
IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIHsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3I7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbkFzRmlyc3RQYXJ0eTsKICAgICBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNv
dXJjZURvbWFpbj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzOwotICAgIFJlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbkFzRmlyc3RQYXJ0eS5pc29sYXRlZENvcHkoKSwgZG9tYWluc1dpdGhTdG9yYWdlQWNj
ZXNzIH07IH0KKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRl
ZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0ZvciksIGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9ja0J1dEtl
ZXBDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5KSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzcykg
fTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvQmxvY2tB
bmREZWxldGVDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0Js
b2NrQnV0S2VlcENvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
ZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKSkgfTsgfQogfTsKIHN0cnVjdCBSZWdpc3RyYWJsZURv
bWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yOwogICAg
IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQnV0
SHR0cE9ubHlDb29raWVzRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3I7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJp
Y3RGb3I7Ci0gICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURh
dGFGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5zVG9EZWxldGVBbGxD
b29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNv
b2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RG
b3IuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0ZvciksIGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IpLCBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IpLCBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yKSB9OyB9CisgICAgUmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9EZWxl
dGVBbGxDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0
ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21h
aW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcikpLCBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IpKSB9OyB9CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0Zvci5p
c0VtcHR5KCkgJiYgZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmlzRW1w
dHkoKSAmJiBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5pc0VtcHR5
KCkgJiYgZG9tYWluc1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yLmlzRW1wdHkoKTsgfQogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5jcHAKaW5kZXggYTdhYjkzODA5Y2NiN2Y2NWY0OGIxYTUxOWNkOTY3YWRhYjVj
NmQ1OC4uMGEwNGFlZTQ1ZmFiYjYzZGVjMmY3OTc2Yjc2MWQzNjYxNzAxNjA5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luRGF0YXMgPSBvcmlnaW5EYXRhcy5pc29sYXRl
ZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAg
cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW5EYXRh
cyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5EYXRhcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldICgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1
Z0luZm8uY3BwCmluZGV4IDU1NGZkMmQ4ZjBkZDFiOWM3OThlMDY4NTYxMmQxYjhkOGYwNmM3ZTIu
LmRkMzEyYzczMTBiZWNlY2Y0YzdjNDIzZDEzOTFmMmFlZWU2NDRkNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWJ1Z0luZm8uY3BwCkBAIC0yOCwxNCArMjgsMjQgQEAKIAogbmFtZXNwYWNlIFdlYktpdDo6UENN
IHsKIAotRGVidWdJbmZvIERlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0RlYnVnSW5m
byBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4geyBtZXNz
YWdlcy5pc29sYXRlZENvcHkoKSB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShtZXNz
YWdlcykgfTsKIH0KIAotRGVidWdJbmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpICYm
Cit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobWVzc2FnZXMpKSB9Owor
fQorCitEZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHko
KSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgbWVzc2FnZUxldmVsLCBtZXNzYWdlLmlzb2xhdGVk
Q29weSgpIH07CiB9CiAKK0RlYnVnSW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlz
b2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKG1l
c3NhZ2UpLmlzb2xhdGVkQ29weSgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6UENN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdJbmZvLmgKaW5kZXggNTI1Nzc4NGI0ZTE5ZjM4MGFhMjA2YmMyYTc2ODhk
YzlmNWVlM2RjZi4uMGI5OTg0YzQ2NGRjZTE5YWEzNGQ1ZGU4ZGY2M2FiZWUzYTI2ZmRlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z0luZm8uaApAQCAtMzYsMTIgKzM2LDE0IEBAIHN0cnVjdCBEZWJ1Z0luZm8g
ewogICAgICAgICBKU0M6Ok1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWw7CiAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlOwogCi0gICAgICAgIE1lc3NhZ2UgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
ICAgIE1lc3NhZ2UgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgTWVzc2FnZSBpc29s
YXRlZENvcHkoKSAmJjsKICAgICB9OwogCiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwog
Ci0gICAgRGVidWdJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIERlYnVnSW5mbyBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIERlYnVnSW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKaW5kZXggYWI1MDk0MDgx
NzI0NGQ3MjkxYjE5ODE4NDM2ZTVkNTE4MmVhNDk2NC4uYmI0NGNkZjE4YWE4Mzg2OTNjNDJjODMw
ZDFjMDgyYWQ1ZWJhZDU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAg
dm9pZCBTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFcKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CiAgICAgICAgIGlmIChtX2Rh
dGFiYXNlKQogICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0gbV9kYXRhYmFzZS0+
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgICAgIHBvc3RUYXNr
UmVwbHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IGNvbnZlcnRlZEF0dHJpYnV0aW9ucy5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbY29udmVydGVkQXR0cmlidXRp
b25zID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29udmVydGVkQXR0cmlidXRpb25zKSksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0
aW9ucykpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IGM2ZDRiY2I3
MDIyOTk5MDJhYTgxODQ3YWI5ODZiZThjMzE5ZDdmOWYuLjY1Y2E0YzBjMTRmNjFhOGMzMmE5NGM0
NDRiZjQxMzY3M2E1YWUwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU1MSw3ICs1NTIsNyBA
QCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0
IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAogICAgIGlmICghcGFyc2VkUnVsZXMuaGFzX3ZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBwYXJzZWRSdWxl
cy5lcnJvcigpKTsKICAgICAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENv
cHkoKSwganNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVs
ZXMudmFsdWUoKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0
ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgeworICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBqc29uID0ganNvbi5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZXMgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShwYXJzZWRSdWxlcykudmFsdWUoKSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRo
Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRo
KHN0b3JlUGF0aCwgaWRlbnRpZmllciwgZmFsc2UpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0g
Y29tcGlsZWRUb0ZpbGUoV1RGTW92ZShqc29uKSwgV1RGTW92ZShwYXJzZWRSdWxlcyksIHBhdGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWlu
ZXJDb250cm9sQ2xhc3NpZmllci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01v
ZGFsQ29udGFpbmVyQ29udHJvbENsYXNzaWZpZXIubW0KaW5kZXggMmYwMzc0OGI3Y2IxOGZhYTg5
MmE5YzJlYWNkM2I3MTY1OWEzZmNhMS4uOTQxMjFlN2NmMWRlZmQwYTU3NTA2ODA2OTI4ZTY0ZGMx
MjNhYjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxD
b250YWluZXJDb250cm9sQ2xhc3NpZmllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Nb2RhbENvbnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCkBAIC0yMDcsNyArMjA3
LDcgQEAgc3RhdGljIFZlY3RvcjxNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBlPiBjb21wdXRlUHJl
ZGljdGlvbnMoTUxNb2RlbCAqbW9kZWwsIFZlY3QKIHZvaWQgTW9kYWxDb250YWluZXJDb250cm9s
Q2xhc3NpZmllcjo6Y2xhc3NpZnkoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYgY29tcGxl
dGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCB0ZXh0cyA9IHRleHRzLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgdGV4dHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0ZXh0cykpLCBjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbG9hZE1vZGVsSWZO
ZWVkZWQoKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKSwgcHJlZGljdGlvbnMgPSBjb21wdXRlUHJlZGljdGlvbnMobV9t
b2RlbC5nZXQoKSwgV1RGTW92ZSh0ZXh0cykpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29t
cGxldGlvbihXVEZNb3ZlKHByZWRpY3Rpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA0MzM5MzQ2MDE1MzVh
MGQ0NmUzZTg5ODdiODM2ODQyMzg3MDYwNWM3Li41M2E2YmE0Mzk5MDNjZGQ5YmZhNzE1YzcwMGE0
ZGZiMzI3ZmFlNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRNZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShE
SVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3dlYWtQcm9jZXNzID0gV2Vha1B0
ciB7IHByb2Nlc3MgfV0gewogICAgICAgICBhdXRvIGNhcHRpb25EaXNwbGF5TW9kZSA9IFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0Zm9ybUNhcHRpb25EaXNwbGF5
TW9kZSgpOwogICAgICAgICBhdXRvIHByZWZlcnJlZExhbmd1YWdlcyA9IFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpOwot
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1Byb2Nlc3MsIGNhcHRpb25EaXNwbGF5TW9k
ZSwgcHJlZmVycmVkTGFuZ3VhZ2VzID0gV1RGTW92ZShwcmVmZXJyZWRMYW5ndWFnZXMpLmlzb2xh
dGVkQ29weSgpXSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrUHJvY2VzcywgY2Fw
dGlvbkRpc3BsYXlNb2RlLCBwcmVmZXJyZWRMYW5ndWFnZXMgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShwcmVmZXJyZWRMYW5ndWFnZXMpKV0gewogICAgICAgICAgICAgaWYgKHdlYWtQcm9jZXNz
KQogICAgICAgICAgICAgICAgIHdlYWtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRNZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyhjYXB0aW9uRGlzcGxheU1vZGUsIHBy
ZWZlcnJlZExhbmd1YWdlcyksIDApOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDJmZGRiODQ5NTJkMDg4OWE4ODI1NGU0NzdiZmYyMzIw
YjYwZjAxZGMuLjdjN2JmMTcyOGMxNGJkM2Q4YjhhMDY4ZWNiMDgxZDQwODg1NzAyZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE5OCwxMyArNzE5OCwx
MyBAQCBib29sIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1h
Z2VUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8UwogICAgIGF1dG8gdHJhbnNjb2RpbmdVVEkgPSBX
ZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUodHJhbnNjb2RpbmdNSU1FVHlwZSk7CiAgICAgYXV0byB0
cmFuc2NvZGluZ0V4dGVuc2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOwogCi0gICAgc2hhcmVk
SW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2Nv
ZGluZ1VSTHMgPSB0cmFuc2NvZGluZ1VSTHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJ
ID0gdHJhbnNjb2RpbmdVVEkuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0g
dHJhbnNjb2RpbmdFeHRlbnNpb24uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hh
cmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBmaWxlVVJMcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlVVJMcyksIHRy
YW5zY29kaW5nVVJMcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kaW5nVVJMcykp
LCB0cmFuc2NvZGluZ1VUSSA9IFdURk1vdmUodHJhbnNjb2RpbmdVVEkpLmlzb2xhdGVkQ29weSgp
LCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9IFdURk1vdmUodHJhbnNjb2RpbmdFeHRlbnNpb24pLmlz
b2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgICAgICBhdXRvIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlSW1hZ2VzKHRy
YW5zY29kaW5nVVJMcywgdHJhbnNjb2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKICAg
ICAgICAgQVNTRVJUKHRyYW5zY29kaW5nVVJMcy5zaXplKCkgPT0gdHJhbnNjb2RlZFVSTHMuc2l6
ZSgpKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xh
dGVkQ29weSgpLCB0cmFuc2NvZGVkVVJMcyA9IHRyYW5zY29kZWRVUkxzLmlzb2xhdGVkQ29weSgp
XSgpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZmlsZVVSTHMgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShmaWxlVVJMcykpLCB0cmFuc2NvZGVkVVJMcyA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHRyYW5zY29kZWRVUkxzKSldKCkgewogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMp
CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBzYW5kYm94RXh0ZW5zaW9uRmlsZXM7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlOTc4
YjlkOTA5YmFkZWM2NDQ5YTY1MzFlNWM3NTgzYWU3MThjN2FjLi40ODIxOTg3MzljZmRhNWZjZTY2
MjEwN2M0ZTI3ZTM1MWQzODQ3MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC02OTUsOSArNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmV3YXJtR2xvYmFs
bHkoKQogICAgIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjpwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKGNvbnN0IFdl
YkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9ybWF0aW9uKQordm9pZCBXZWJQ
cm9jZXNzOjpwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYkNvcmU6OlByZXdhcm1JbmZv
cm1hdGlvbiYmIHByZXdhcm1JbmZvcm1hdGlvbikKIHsKLSAgICBXZWJDb3JlOjpQcm9jZXNzV2Fy
bWluZzo6cHJld2FybVdpdGhJbmZvcm1hdGlvbihwcmV3YXJtSW5mb3JtYXRpb24pOworICAgIFdl
YkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFdURk1vdmUocHJl
d2FybUluZm9ybWF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA5NmU2Y2VlMjIxOGY2YTliMDA1M2RkOWZmYTBkNWQ4
M2NkM2I2NGM1Li42Njg4MzEwZDk2MTU5N2FlNzY2OTg4ZGE2YTNhOGViNzg1NTllNGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQxMSw3ICs0MTEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcHJld2FybUdsb2JhbGx5
KCk7Ci0gICAgdm9pZCBwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6
OlByZXdhcm1JbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcHJld2FybVdpdGhEb21haW5JbmZvcm1h
dGlvbihXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24mJik7CiAKICNpZiBVU0UoT1NfU1RBVEUp
CiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gYWRkaXRpb25hbFN0YXRlRm9yRGlhZ25vc3Rp
Y1JlcG9ydCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCAwY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3
M2RjZjk4MzJkMzcwMmFlLi43NzQzZDUwODg1MjRiY2U1ZDdkM2YzNDkyZmM3NzE3YTg3YWExMDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyCiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMo
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFz
ZXMpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllciwgZGF0YWJhc2VzID0gZGF0YWJhc2VzLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyA9
IGNyb3NzVGhyZWFkQ29weShkYXRhYmFzZXMpXSgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFiYXNlcykpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNjZWJiMzhiMWIzZGViNThm
NDIwOGQ5OWEwNDE0YWU2YTFhNmE3MDAuLjY5MTg5NzMxMzJhZWQ5ZjI0N2Q2NjM3NzdmNzc3MjE4
MDYzZGU5YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGRlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhy
ZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhw
YW5kIHRlc3QgY292ZXJhZ2UgZm9yIGNyb3NzVGhyZWFkQ29weSgpIGFuZCBtYWtlIHN1cmUgdGhl
IG9wdGltaXphdGlvbnMgYXJlIHdvcmtpbmcKKyAgICAgICAgd2hlbiBjYWxsZWQgb24gYSByLXZh
bHVlIHJlZmVyZW5jZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAyMi0wMy0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEJvb2tzIEFTU0VSVHMgdXBvbiBvcGVuaW5n
IGEgYm9vayB3aXRoIGEgZGVidWcgYnVpbGQgb2YgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXggY2Q0ZGMyM2M3
YjZhZWZiNGM5OWZmNTA4NDAzMzIyMTEzMzNkOGRlYi4uNGQ2NDc1MDY4YzNkYWJkZDI0YzMxZmMx
MGRkOGI4NDBiMTA0YmQzZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtMjcsNiArMjcsOSBAQAogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgogCiAjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPHZh
cmlhbnQ+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewpAQCAtODUsNCArODgsMTE4IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBD
b3B5UlZPcHRpb25hbFN0cmluZ0hhdmluZ1R3b1JlZikKICAgICBFWFBFQ1RfVFJVRShjb3B5LT5p
bXBsKCktPmhhc09uZVJlZigpKTsKIH0KIAorVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIFBh
aXIpCit7CisgICAgc3RkOjpwYWlyIHBhaXIxIHsgImZvbyJfc3RyLCAiYmFyIl9zdHIgfTsKKyAg
ICBhdXRvKiBmaXJzdFN0cmluZ0ltcGwgPSBwYWlyMS5maXJzdC5pbXBsKCk7CisgICAgYXV0byog
c2Vjb25kU3RyaW5nSW1wbCA9IHBhaXIxLnNlY29uZC5pbXBsKCk7CisgICAgYXV0byBjb3B5ID0g
Y3Jvc3NUaHJlYWRDb3B5KHBhaXIxKTsKKyAgICBFWFBFQ1RfRVEoY29weSwgcGFpcjEpOworICAg
IEVYUEVDVF9ORShjb3B5LmZpcnN0LmltcGwoKSwgZmlyc3RTdHJpbmdJbXBsKTsKKyAgICBFWFBF
Q1RfTkUoY29weS5zZWNvbmQuaW1wbCgpLCBzZWNvbmRTdHJpbmdJbXBsKTsKKworICAgIHN0ZDo6
cGFpciBwYWlyMiB7ICJmb28iX3N0ciwgImJhciJfc3RyIH07CisgICAgZmlyc3RTdHJpbmdJbXBs
ID0gcGFpcjIuZmlyc3QuaW1wbCgpOworICAgIHNlY29uZFN0cmluZ0ltcGwgPSBwYWlyMi5zZWNv
bmQuaW1wbCgpOworICAgIGNvcHkgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYWlyMikpOwor
ICAgIEVYUEVDVF9FUShjb3B5LCBwYWlyMSk7CisgICAgRVhQRUNUX0VRKGNvcHkuZmlyc3QuaW1w
bCgpLCBmaXJzdFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9FUShjb3B5LnNlY29uZC5pbXBsKCks
IHNlY29uZFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9UUlVFKHBhaXIyLmZpcnN0LmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShwYWlyMi5zZWNvbmQuaXNOdWxsKCkpOworfQorCitURVNUKFdU
Rl9Dcm9zc1RocmVhZENvcGllciwgVmFyaWFudCkKK3sKKyAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBVUkw+IHZhcmlhbnQ7CisgICAgdmFyaWFudCA9ICJmb28iX3N0cjsKKyAgICBhdXRvKiBpbXBs
ID0gc3RkOjpnZXQ8U3RyaW5nPih2YXJpYW50KS5pbXBsKCk7CisgICAgYXV0byBjb3B5ID0gY3Jv
c3NUaHJlYWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9FUShjb3B5LCB2YXJpYW50KTsKKyAg
ICBFWFBFQ1RfTkUoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBsKCksIGltcGwpOworCisgICAg
dmFyaWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGltcGwgPSBzdGQ6OmdldDxVUkw+KHZh
cmlhbnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHZhcmlh
bnQpOworICAgIEFTU0VSVF9FUShjb3B5LCB2YXJpYW50KTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpn
ZXQ8VVJMPihjb3B5KS5zdHJpbmcoKS5pbXBsKCksIGltcGwpOworCisgICAgdmFyaWFudCA9ICJm
b28iX3N0cjsKKyAgICBpbXBsID0gc3RkOjpnZXQ8U3RyaW5nPih2YXJpYW50KS5pbXBsKCk7Cisg
ICAgY29weSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZhcmlhbnQpKTsKKyAgICBBU1NFUlRf
RVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KSwgImZvbyJfc3RyKTsKKyAgICBFWFBFQ1RfRVEoc3Rk
OjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBsKCksIGltcGwpOworCisgICAgdmFyaWFudCA9IFVSTCB7
ICJiYXIiX3N0ciB9OworICAgIGltcGwgPSBzdGQ6OmdldDxVUkw+KHZhcmlhbnQpLnN0cmluZygp
LmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmFyaWFudCkpOwor
ICAgIEFTU0VSVF9FUShzdGQ6OmdldDxVUkw+KGNvcHkpLCBVUkwgeyAiYmFyIl9zdHIgfSk7Cisg
ICAgRVhQRUNUX0VRKHN0ZDo6Z2V0PFVSTD4oY29weSkuc3RyaW5nKCkuaW1wbCgpLCBpbXBsKTsK
K30KKworVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIEhhc2hNYXApCit7CisgICAgSGFzaE1h
cDxDU3RyaW5nLCBTdHJpbmdJbXBsKj4gaW1wbHM7CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBtYXA7CisgICAgbWFwLmFkZCgiZm9vIl9zdHIsICJmb29WYWx1ZSJfc3RyKTsKKyAgICBt
YXAuYWRkKCJiYXIiX3N0ciwgImJhclZhbHVlIl9zdHIpOworICAgIGZvciAoYXV0byYgW2tleSwg
dmFsdWVdIDogbWFwKSB7CisgICAgICAgIGltcGxzLmFkZChrZXkudXRmOCgpLCBrZXkuaW1wbCgp
KTsKKyAgICAgICAgaW1wbHMuYWRkKHZhbHVlLnV0ZjgoKSwgdmFsdWUuaW1wbCgpKTsKKyAgICB9
CisKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkobWFwKTsKKyAgICBFWFBFQ1RfRVEo
Y29weSwgbWFwKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6IGNvcHkpIHsKKyAgICAg
ICAgRVhQRUNUX05FKGtleS5pbXBsKCksIGltcGxzLmdldChrZXkudXRmOCgpKSk7CisgICAgICAg
IEVYUEVDVF9ORSh2YWx1ZS5pbXBsKCksIGltcGxzLmdldCh2YWx1ZS51dGY4KCkpKTsKKyAgICB9
CisKKyAgICBhdXRvIGNvcHkyID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobWFwKSk7CisgICAg
RVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfVFJVRShtYXAuaXNFbXB0eSgpKTsK
KyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6IGNvcHkyKSB7CisgICAgICAgIEVYUEVDVF9F
UShrZXkuaW1wbCgpLCBpbXBscy5nZXQoa2V5LnV0ZjgoKSkpOworICAgICAgICBFWFBFQ1RfRVEo
dmFsdWUuaW1wbCgpLCBpbXBscy5nZXQodmFsdWUudXRmOCgpKSk7CisgICAgfQorfQorCitURVNU
KFdURl9Dcm9zc1RocmVhZENvcGllciwgSGFzaFNldCkKK3sKKyAgICBIYXNoTWFwPENTdHJpbmcs
IFN0cmluZ0ltcGwqPiBpbXBsczsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBzZXQ7CisgICAgc2V0
LmFkZCgiZm9vIl9zdHIpOworICAgIHNldC5hZGQoImJhciJfc3RyKTsKKyAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBzZXQpCisgICAgICAgIGltcGxzLmFkZChpdGVtLnV0ZjgoKSwgaXRlbS5pbXBsKCkp
OworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHNldCk7CisgICAgRVhQRUNUX0VR
KGNvcHksIHNldCk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogY29weSkKKyAgICAgICAgRVhQRUNU
X05FKGl0ZW0uaW1wbCgpLCBpbXBscy5nZXQoaXRlbS51dGY4KCkpKTsKKworICAgIGF1dG8gY29w
eTIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZXQpKTsKKyAgICBFWFBFQ1RfRVEoY29weTIs
IGNvcHkpOworICAgIEVYUEVDVF9UUlVFKHNldC5pc0VtcHR5KCkpOworICAgIGZvciAoYXV0byYg
aXRlbSA6IGNvcHkyKQorICAgICAgICBFWFBFQ1RfRVEoaXRlbS5pbXBsKCksIGltcGxzLmdldChp
dGVtLnV0ZjgoKSkpOworfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgT3B0aW9uYWwp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsOworICAgIG9wdGlvbmFsID0g
ImZvbyJfc3RyOworICAgIGF1dG8qIGltcGwgPSBvcHRpb25hbC0+aW1wbCgpOworCisgICAgYXV0
byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbmFsKTsKKyAgICBFWFBFQ1RfRVEoY29weSwg
b3B0aW9uYWwpOworICAgIEVYUEVDVF9ORShjb3B5LT5pbXBsKCksIGltcGwpOworCisgICAgYXV0
byBjb3B5MiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wdGlvbmFsKSk7CisgICAgRVhQRUNU
X0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfRVEoY29weTItPmltcGwoKSwgaW1wbCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9WZWN0b3IuY3BwCmluZGV4IDVkNDZjM2NiZTkzYWNjZTM2ZGE5ZjZlMmMwYTU0NzNlZmU5
YmIwNWQuLjBiMTY2NzBhNDIyMWMwZDdlMmJkNGRlYWNjMmVkNWQ3N2UzNmQ0YzIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0xMjgsNyAr
MTI5LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb25zdHJ1Y3RXaXRoRnJvbVN0cmluZykKICAgICBF
WFBFQ1RfVFJVRShzMy5pc051bGwoKSk7CiB9CiAKLVRFU1QoV1RGX1ZlY3RvciwgSXNvbGF0ZUNv
cHkpCitURVNUKFdURl9WZWN0b3IsIElzb2xhdGVkQ29weSkKIHsKICAgICBTdHJpbmcgczEgPSAi
czEiOwogICAgIFN0cmluZyBzMiA9ICJzMiI7CkBAIC0xNDAsNyArMTQxLDcgQEAgVEVTVChXVEZf
VmVjdG9yLCBJc29sYXRlQ29weSkKICAgICBhdXRvKiBkYXRhMSA9IHZlY3RvcjFbMF0uaW1wbCgp
OwogICAgIGF1dG8qIGRhdGEyID0gdmVjdG9yMVsxXS5pbXBsKCk7CiAKLSAgICBhdXRvIHZlY3Rv
cjIgPSB2ZWN0b3IxLmlzb2xhdGVkQ29weSgpOworICAgIGF1dG8gdmVjdG9yMiA9IGNyb3NzVGhy
ZWFkQ29weSh2ZWN0b3IxKTsKIAogICAgIEVYUEVDVF9UUlVFKCJzMSIgPT0gdmVjdG9yMlswXSk7
CiAgICAgRVhQRUNUX1RSVUUoInMyIiA9PSB2ZWN0b3IyWzFdKTsKQEAgLTE0OCw3ICsxNDksNyBA
QCBURVNUKFdURl9WZWN0b3IsIElzb2xhdGVDb3B5KQogICAgIEVYUEVDVF9GQUxTRShkYXRhMSA9
PSB2ZWN0b3IyWzBdLmltcGwoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGRhdGEyID09IHZlY3RvcjJb
MV0uaW1wbCgpKTsKIAotICAgIGF1dG8gdmVjdG9yMyA9IFdURk1vdmUodmVjdG9yMSkuaXNvbGF0
ZWRDb3B5KCk7CisgICAgYXV0byB2ZWN0b3IzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmVj
dG9yMSkpOwogICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yMS5zaXplKCkpOwogCiAgICAgRVhQRUNU
X1RSVUUoInMxIiA9PSB2ZWN0b3IzWzBdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453913</attachid>
            <date>2022-03-05 11:04:36 -0800</date>
            <delta_ts>2022-03-05 11:07:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220305110435.patch</filename>
            <type>text/plain</type>
            <size>161127</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyZGM0ODMzNTA2MzNiNWEyYzJhNjFk
ZWVkZDY3ODE5NWIxMjlhYzEuLjM0OGUwYWQyYWQyOTliODliODZjM2RiNTlmNzg4MDk2ZTY1ZTU1
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBkZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3Nz
IHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERyb3AgaXNvbGF0ZWRDb3B5KCkgb24gVmVjdG9yIHNpbmNlIENyb3NzVGhyZWFkQ29waWVyIGFs
cmVhZHkgaGFzIGxvZ2ljIHRvCisgICAgICAgIGlzb2xhdGUtY29weSBhIFZlY3Rvci4gVGhlIGxv
Z2ljIGluIENyb3NzVGhyZWFkQ29waWVyIGhhcyB0aGUgYmVuZWZpdCBvZgorICAgICAgICB3b3Jr
aW5nIG9uIHR5cGVzIHRoYXQgZG8gbm90IGltcGxlbWVudCBpc29sYXRlZENvcHkoKSAoZS5nLiBh
IFZlY3RvciBvZgorICAgICAgICBzdGQ6Om9wdGlvbmFsIG9yIGEgVmVjdG9yIG9mIHN0ZDo6dmFy
aWFudCkuCisKKyAgICAgICAgSW1wcm92ZSB0aGUgQ3Jvc3NUaHJlYWRDb3BpZXIgdG8gb3B0aW1p
emUgdGhlIGNhc2Ugd2hlcmUgY3Jvc3NUaHJlYWRDb3B5KCkKKyAgICAgICAgaXMgY2FsbGVkIG9u
IGEgci12YWx1ZSByZWZlcmVuY2UgaW4gbW9yZSBjYXNlcy4gSW4gcGFydGljdWxhciwgdGhlIGxv
Z2ljCisgICAgICAgIGZvciBWZWN0b3IsIEhhc2hTZXQsIEhhc2hNYXAsIHN0ZDo6cGFpciwgc3Rk
Ojp2YXJpYW50IHdhcyBpbXByb3ZlZC4gSQorICAgICAgICBhbHNvIGFkZGVkIEFQSSB0ZXN0IGNv
dmVyYWdlIGZvciB0aG9zZS4KKworICAgICAgICBUaGUgQVBJIHRlc3RzIGFsc28gZm91bmQgYSBi
dWcgd2hlcmUgY3Jvc3NUaHJlYWRDb3B5KCkgd2FzIGluY29ycmVjdGx5CisgICAgICAgIG1vdmlu
ZyB0aGUgc291cmNlIHdoZW4gY2FsbGVkIG9uIGEgc3RkOjp2YXJpYW50IHRoYXQgd2FzIG5vdCBh
IHItdmFsdWUKKyAgICAgICAgcmVmZXJlbmNlLiBUaGlzIGJ1ZyBpcyBmaXhlZCBpbiB0aGlzIHBh
dGNoIHRvby4KKworICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGllci5oOgorICAgICAgICAq
IHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TWFsbG9jPjo6aXNvbGF0ZWRDb3B5KTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXVEY6OkZp
bGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKToKKwogMjAyMi0wMy0wNCAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbnVsbCBjaGVjayBmb3IgcGF0aCBpbiBt
YWtlQWxsRGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OGZkZjdmN2VlYTJiMjg4M2IyZjRkMGQ1
ZWQ2MDA4MjkxMzRiMWNmLi40NDI4Yjc1NTkxNmY5ZTM4ZjU1MzA3ZjA2ZGRiYjYwOGZhMDYzOTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUxIEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgZGUgcGFzc2luZyBvZiBkYXRh
IGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbW9yZSBpc29sYXRlZENvcHkoKSBvdmVybG9hZHMgdGhhdCB3b3JrIG9uIHIt
dmFsdWUgcmVmZXJlbmNlcyB3aGVuIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBjYW4gYmUg
b3B0aW1pemVkLiBBbHNvIGNhbGwgaXNvbGF0ZWRDb3B5KCkgLyBjcm9zc1RocmVhZENvcHkoKSBv
biBhIHItdmFsdWUgcmVmZXJlbmNlCisgICAgICAgIHdoZW5ldmVyIHBvc3NpYmxlIHRvIGxldmVy
YWdlIHRoZXNlIG9wdGltaXphdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hl
UXVlcnlPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVDYWNoZUluZm8pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3M6Omlz
b2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbzo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q2FjaGVJbmZvczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm9zOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6UmV0cmll
dmVSZWNvcmRzT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJldHJpZXZlUmVjb3Jkc09wdGlvbnM6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMaXN0ZWRDaGlsZDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0UmVz
dWx0Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
QWxsT2JqZWN0U3RvcmVSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlzdGluZ1JlY29yZHMp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb246Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkVycm9yOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJF
cnJvcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCSW5kZXhJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4SW5mbzo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4SW5mbzo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm86Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm86Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5m
by5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNob3Q6OkluZm86Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90
OjpJbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJT
bmFwc2hvdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tN
YW5hZ2VyU25hcHNob3Q6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbURl
c2NyaXB0b3I6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Bh
cmFtRGVzY3JpcHRvcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29y
a2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0VGhyZWFkOjpBdWRpb1dvcmtsZXRUaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmts
ZXRUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRhc2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPcGVuVGFzazo6ZG9QZXJmb3Jt
VGFzayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9ja0Zvcik6CisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRD
b25uZWN0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJz
QWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhl
YWRlckluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6UmVkaXJlY3RBY3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVSTFRy
YW5zZm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjppc29s
YXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0
QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxU
cmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjppc29sYXRlZENv
cHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25BY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YTo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbXBp
bGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6bG9hZFRy
aWdnZXIpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRy
aWdnZXI6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OlRyaWdnZXI6OmNoZWNrVmFsaWRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25SdWxlOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25SdWxlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OlRyaWdnZXI6On5UcmlnZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb246Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjppc29sYXRlZENvcHkpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25EYXRh
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVk
Q29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkRhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeGNlcHRpb25EYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGRv
bS9FeGNlcHRpb25Pci5oOgorICAgICAgICAoV2ViQ29yZTo6aXNvbGF0ZWRDb3B5KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJl
Y2VpdmVEcm9wcGVkRmlsZXNXaXRoSW1hZ2VUcmFuc2NvZGluZyk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJl
bG9hZFNjYW5uZXI6OnVwZGF0ZVByZWRpY3RlZEJhc2VVUkwpOgorICAgICAgICAqIGxvYWRlci9D
cm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdp
bk9wZW5lclBvbGljeTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzT3JpZ2luT3BlbmVyUG9saWN5Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIGxvYWRlci9D
cm9zc09yaWdpbk9wZW5lclBvbGljeS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvRmV0Y2hPcHRpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaE9wdGlvbnM6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1Bv
bGljeUNvbnRhaW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q29udGFpbmVyOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q29udGFpbmVyOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRv
a2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46Omlz
b2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGlu
YXRpb25TZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGlu
YXRpb25VbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRl
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29s
YXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xh
dGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVz
dGluYXRpb25VbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9r
ZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9r
ZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVRp
bWluZzo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVGlt
aW5nOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZy5oOgor
ICAgICAgICAqIGxvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmVyVGltaW5nOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmVy
VGltaW5nOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGxvYWRlci9TZXJ2ZXJUaW1pbmcuaDoK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICog
cGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6aXNvbGF0
ZWRDb3B5KToKKyAgICAgICAgKiBwYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKToKKyAgICAgICAg
KiBwYWdlL1Byb2Nlc3NXYXJtaW5nLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0
ZWRDb3B5KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAg
ICogcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2VsZWN0aW9uT3B0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZWxlY3Rpb25PcHRpb246Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGxhdGZv
cm0vUmVnaXN0cmFibGVEb21haW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cHJld2FybSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjppc29sYXRlZENvcHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udERhdGFiYXNlOjpjb2xsZWN0aW9uRm9yRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6cHJld2FybSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAg
ICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKGlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZy
ZXNoQ2FwdHVyZURldmljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXA6OkNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OkNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OlVuY29tbW9uSGVhZGVyOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6VW5j
b21tb25IZWFkZXI6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRzOjpjbGFpbSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6c2NoZWR1bGVQdXNoQ2hhbmdlcyk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRQYXJhbWV0ZXJzOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSk6CisKIDIwMjItMDMtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBicm9rZW4gU3VzcGVuZEV4Y2VwdGlvblNjb3BlIGFuZCByZW1vdmUgcmVkdW5k
YW50IFZNOjpEZWZlckV4Y2VwdGlvblNjb3BlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNDU4MGQ2YjRlZDFhMTk5
ZWY0YmE0YzI1OTYxNDc1MjBjM2Q4MDQxLi41YjY3NDdlNDc2ZTU4NDllZmZhNjhiYzllOWQzODYz
YmFmMDMyNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAzLTA1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgZGUgcGFzc2luZyBv
ZiBkYXRhIGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbW9yZSBpc29sYXRlZENvcHkoKSBvdmVybG9hZHMgdGhhdCB3b3Jr
IG9uIHItdmFsdWUgcmVmZXJlbmNlcyB3aGVuIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBj
YW4gYmUgb3B0aW1pemVkLiBBbHNvIGNhbGwgaXNvbGF0ZWRDb3B5KCkgLyBjcm9zc1RocmVhZENv
cHkoKSBvbiBhIHItdmFsdWUgcmVmZXJlbmNlCisgICAgICAgIHdoZW5ldmVyIHBvc3NpYmxlIHRv
IGxldmVyYWdlIHRoZXNlIG9wdGltaXphdGlvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3Jh
dGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAo
V2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcjo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tp
ZXNGb3I6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJz
aXRlRGF0YUZvcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpj
bG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJ
bmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVk
Q29weSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBp
bGVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RhbENvbnRh
aW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RhbENvbnRhaW5l
ckNvbnRyb2xDbGFzc2lmaWVyOjpjbGFzc2lmeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpzZXRNZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJl
d2FybVdpdGhEb21haW5JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3RvcCBzZXR0aW5nIE5TVVJMSXNFeGNsdWRlZEZyb21CYWNrdXBLZXkgYXR0cmli
dXRlIGZvciBsb2NhbFNvcmFnZURpcmVjdG9yeSBpbiBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IGY2Yjg4OWUyZWZlYmFhZWZiYmZlNWI1Yzk4ODcyYjlmZjhjNzY2MWEuLmQzNWQx
MmMxMTE2NzRmZGNlOWNjZWZjNWVhNWVlNGM2MDIyNTVmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBkZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVh
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzUw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBt
b3JlIGlzb2xhdGVkQ29weSgpIG92ZXJsb2FkcyB0aGF0IHdvcmsgb24gci12YWx1ZSByZWZlcmVu
Y2VzIHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhbiBiZSBvcHRpbWl6ZWQuIEFs
c28gY2FsbCBpc29sYXRlZENvcHkoKSAvIGNyb3NzVGhyZWFkQ29weSgpIG9uIGEgci12YWx1ZSBy
ZWZlcmVuY2UKKyAgICAgICAgd2hlbmV2ZXIgcG9zc2libGUgdG8gbGV2ZXJhZ2UgdGhlc2Ugb3B0
aW1pemF0aW9ucy4KKworICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoK
KyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKToKKwogMjAyMi0wMy0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2VzIHRv
IFNlY29uZGFyeSBQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENv
cGllci5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCAwMWQyYTc3
NjMzYjBiMDJjZjRkZjUyNTBmZmQyMzRjYmYwMzk3Yjg3Li40MWUxMWIzNjU3N2RhMThiYTcwOWZm
MTRkYjQwZjNkMmY2M2I5MThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVh
ZENvcGllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTE0
Miw2ICsxNDIsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW4KICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uLnVuY2hlY2tlZEFwcGVuZChDcm9zc1RocmVhZENvcGllcjxUPjo6Y29weShvYmplY3Qp
KTsKICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogICAgIH0KKyAgICBzdGF0aWMgVHlwZSBj
b3B5KFR5cGUmJiBzb3VyY2UpCisgICAgeworICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBz
b3VyY2UuYmVnaW4oKSwgaXRlcmF0b3JFbmQgPSBzb3VyY2UuZW5kKCk7IGl0ZXJhdG9yIDwgaXRl
cmF0b3JFbmQ7ICsraXRlcmF0b3IpCisgICAgICAgICAgICAqaXRlcmF0b3IgPSBDcm9zc1RocmVh
ZENvcGllcjxUPjo6Y29weShXVEZNb3ZlKCppdGVyYXRvcikpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShzb3VyY2UpOworICAgIH0KIH07CiAgICAgCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9u
IGZvciBIYXNoU2V0cyBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNzZXMKQEAgLTE1NCwyNiAr
MTYwLDQzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJh
c2U8ZmFsc2UsIGZhbHNlLCBIYXNoU2V0PFQ+ID4gewogICAgICAgICAgICAgZGVzdGluYXRpb24u
YWRkKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KG9iamVjdCkpOwogICAgICAgICByZXR1cm4g
ZGVzdGluYXRpb247CiAgICAgfQorICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlwZSYmIHNvdXJjZSkK
KyAgICB7CisgICAgICAgIFR5cGUgZGVzdGluYXRpb247CisgICAgICAgIGRlc3RpbmF0aW9uLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoc291cmNlLnNpemUoKSk7CisgICAgICAgIHdoaWxlICghc291
cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChDcm9zc1RocmVhZENv
cGllcjxUPjo6Y29weShzb3VyY2UudGFrZUFueSgpKSk7CisgICAgICAgIHJldHVybiBkZXN0aW5h
dGlvbjsKKyAgICB9CiB9OwogCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciBIYXNoTWFw
cyBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNzZXMKLXRlbXBsYXRlPHR5cGVuYW1lIEssIHR5
cGVuYW1lIFY+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBIYXNo
TWFwPEssIFY+ID4gewotICAgIHR5cGVkZWYgSGFzaE1hcDxLLCBWPiBUeXBlOwordGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnLCB0eXBlbmFtZSBU
YWJsZVRyYWl0c0FyZz4KK3N0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgVGFibGVUcmFpdHNBcmc+PiB7CisgICAgdHlwZWRlZiBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgVGFi
bGVUcmFpdHNBcmc+IFR5cGU7CiAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBUeXBlJiBzb3Vy
Y2UpCiAgICAgewogICAgICAgICBUeXBlIGRlc3RpbmF0aW9uOwotICAgICAgICBmb3IgKGF1dG8m
IGtleVZhbHVlIDogc291cmNlKQotICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKENyb3NzVGhy
ZWFkQ29waWVyPEs+Ojpjb3B5KGtleVZhbHVlLmtleSksIENyb3NzVGhyZWFkQ29waWVyPFY+Ojpj
b3B5KGtleVZhbHVlLnZhbHVlKSk7CisgICAgICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDog
c291cmNlKQorICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKENyb3NzVGhyZWFkQ29waWVyPEtl
eUFyZz46OmNvcHkoa2V5KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8TWFwcGVkQXJnPjo6Y29weSh2YWx1
ZSkpOwogICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CiAgICAgfQorICAgIHN0YXRpYyBUeXBl
IGNvcHkoVHlwZSYmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9
IHNvdXJjZS5iZWdpbigpLCBlbmQgPSBzb3VyY2UuZW5kKCk7IGl0ZXJhdG9yICE9IGVuZDsgKytp
dGVyYXRvcikgeworICAgICAgICAgICAgaXRlcmF0b3ItPmtleSA9IENyb3NzVGhyZWFkQ29waWVy
PEtleUFyZz46OmNvcHkoV1RGTW92ZShpdGVyYXRvci0+a2V5KSk7CisgICAgICAgICAgICBpdGVy
YXRvci0+dmFsdWUgPSBDcm9zc1RocmVhZENvcGllcjxNYXBwZWRBcmc+Ojpjb3B5KFdURk1vdmUo
aXRlcmF0b3ItPnZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdURk1vdmUoc291
cmNlKTsKKyAgICB9CiB9OwogCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciBwYWlycyBv
ZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNzZXMKIHRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVu
YW1lIFM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6OnBh
aXI8RiwgUz4gPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8RiwgUz4gVHlwZTsKLSAgICBzdGF0
aWMgVHlwZSBjb3B5KGNvbnN0IFR5cGUmIHNvdXJjZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBzdGF0aWMgVHlwZSBjb3B5KFUmJiBzb3VyY2UpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoQ3Jvc3NUaHJlYWRDb3BpZXI8Rj46OmNvcHkoc291cmNlLmZpcnN0KSwgQ3Jv
c3NUaHJlYWRDb3BpZXI8Uz46OmNvcHkoc291cmNlLnNlY29uZCkpOworICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoQ3Jvc3NUaHJlYWRDb3BpZXI8Rj46OmNvcHkoc3RkOjpnZXQ8MD4oc3Rk
Ojpmb3J3YXJkPFU+KHNvdXJjZSkpKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8Uz46OmNvcHkoc3RkOjpn
ZXQ8MT4oc3RkOjpmb3J3YXJkPFU+KHNvdXJjZSkpKSk7CiAgICAgfQogfTsKIApAQCAtMTg5LDEx
ICsyMTIsMTggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VD4KIAogLy8gRGVmYXVsdCBzcGVjaWFs
aXphdGlvbiBmb3Igc3RkOjp2YXJpYW50IG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xhc3Nlcy4K
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNl
PGZhbHNlLCBmYWxzZSwgc3RkOjp2YXJpYW50PFR5cGVzLi4uPj4gewotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IHN0YXRpYyBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IGNvcHkoVSYmIHNvdXJjZSkK
KyAgICB1c2luZyBUeXBlID0gc3RkOjp2YXJpYW50PFR5cGVzLi4uPjsKKyAgICBzdGF0aWMgc3Rk
Ojp2YXJpYW50PFR5cGVzLi4uPiBjb3B5KGNvbnN0IFR5cGUmIHNvdXJjZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBzdGQ6OnZpc2l0KFtdIChhdXRvJiB0eXBlKSAtPiBzdGQ6OnZhcmlhbnQ8VHlw
ZXMuLi4+IHsKICAgICAgICAgICAgIHJldHVybiBDcm9zc1RocmVhZENvcGllcjxzdGQ6OnJlbW92
ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKHR5cGUpPj4+Ojpjb3B5
KHR5cGUpOwotICAgICAgICB9LCBzdGQ6OmZvcndhcmQ8VT4oc291cmNlKSk7CisgICAgICAgIH0s
IHNvdXJjZSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IGNvcHko
VHlwZSYmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnZpc2l0KFtdIChhdXRv
JiYgdHlwZSkgLT4gc3RkOjp2YXJpYW50PFR5cGVzLi4uPiB7CisgICAgICAgICAgICByZXR1cm4g
Q3Jvc3NUaHJlYWRDb3BpZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2VfdDxkZWNsdHlwZSh0eXBlKT4+Pjo6Y29weShXVEZNb3ZlKHR5cGUpKTsKKyAgICAgICAgfSwg
V1RGTW92ZShzb3VyY2UpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IGM2YmRhZTllNzI1Nzhj
MWU1MzAzZjFjYTI4NmY4ZTY4ZWE5Y2I5ZTUuLjQ2NzlhMThkZjAxNDVkMjQ1ZTE3MjQxYzc5ZmM2
ZDdiYWFhMWIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03NzYsOSArNzc2LDYgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVID0gVD4gVmVjdG9yPFU+IGlzb2xhdGVkQ29weSgpICYmOwotCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGFwcGVuZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyBhcHBlbmQ8VmFsdWVU
eXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZChVJiYgdSkgeyBhcHBlbmQ8RmFpbHVy
ZUFjdGlvbjo6Q3Jhc2gsIFU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIGJvb2wgdHJ5QXBwZW5kKFUmJiB1KSB7IHJldHVybiBh
cHBlbmQ8RmFpbHVyZUFjdGlvbjo6UmVwb3J0LCBVPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CkBA
IC0xNjU5LDI2ICsxNjU2LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hl
Y2s8VmVjdG9yPFQ+PiB7CiB9OwogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KLXRlbXBsYXRlPHR5cGVu
YW1lIFU+Ci1pbmxpbmUgVmVjdG9yPFU+IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgot
ewotICAgIFZlY3RvcjxVPiBjb3B5OwotICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
aXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICp0aGlzKQotICAgICAgICBj
b3B5LnVuY2hlY2tlZEFwcGVuZChlbGVtZW50Lmlzb2xhdGVkQ29weSgpKTsKLSAgICByZXR1cm4g
Y29weTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWlubGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojppc29s
YXRlZENvcHkoKSAmJgotewotICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGJlZ2luKCksIGl0ZXJh
dG9yRW5kID0gZW5kKCk7IGl0ZXJhdG9yIDwgaXRlcmF0b3JFbmQ7ICsraXRlcmF0b3IpCi0gICAg
ICAgICppdGVyYXRvciA9IFdURk1vdmUoKml0ZXJhdG9yKS5pc29sYXRlZENvcHkoKTsKLSAgICBy
ZXR1cm4gV1RGTW92ZSgqdGhpcyk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUs
IHR5cGVuYW1lIEZ1bmM+CiBzaXplX3QgcmVtb3ZlUmVwZWF0ZWRFbGVtZW50cyhWZWN0b3JUeXBl
JiB2ZWN0b3IsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxlU3lzdGVtTWFj
Lm1tCmluZGV4IGJiNjJkYWEzMzgzNGMzMjhkMGU1MTlkNmYyNWY0Y2I5ZmZiOTE3ODYuLjJmYjFh
NWYyNTYxN2VmYjAzNmFhOTRmMTdiZDUzNWY3NGViYjU3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxl
U3lzdGVtTWFjLm1tCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRh
dGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyCiAg
ICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwogCiAgICAgLy8gQ2FsbCBNZXRh
ZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2UgaXQgY2FuIHRha2Ugc29tZSB0
aW1lLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFU
Q0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHko
KSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVy
cmVyLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSBXVEZNb3ZlKHVybFN0cmluZykuaXNvbGF0
ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAg
YXV0byBpdGVtID0gYWRvcHRDRihNREl0ZW1DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0
aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVy
eU9wdGlvbnMuaAppbmRleCAwMWZkYzkzN2M3NTE4MTUzZTAwYmNjYjdlZDU5MWE1ODExNDRmMmRl
Li5jZjFhNjc0OTc5NzhkMjIzNGFmNGNkNjM5MmRlZmM1YjZhYjIyYTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCkBAIC0zMCw3ICsz
MCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9ucyB7
Ci0gICAgQ2FjaGVRdWVyeU9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBp
Z25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCAm
IHsgcmV0dXJuIHsgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIGNhY2hl
TmFtZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFy
eSwgV1RGTW92ZShjYWNoZU5hbWUpLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgIGJvb2wgaWdu
b3JlU2VhcmNoIHsgZmFsc2UgfTsKICAgICBib29sIGlnbm9yZU1ldGhvZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4
IGMwZjgwMzJiMDQ1MmMzN2VlNGNhZmJjYWZkNzlmMDlkMjE0NjMzMjYuLmI0MjgyNjVjMTI3ODI1
NDdjMWEwZGU0MmY5YTZmMjJjZTQzOGRkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xNTQsMTYgKzE1NCw2IEBAIFJlY29yZCBS
ZWNvcmQ6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBSZWNvcmQgeyBpZGVudGlmaWVyLCB1cGRh
dGVSZXNwb25zZUNvdW50ZXIsIHJlcXVlc3RIZWFkZXJzR3VhcmQsIHJlcXVlc3QsIG9wdGlvbnMs
IHJlZmVycmVyLCByZXNwb25zZUhlYWRlcnNHdWFyZCwgcmVzcG9uc2UsIGNvcHlSZXNwb25zZUJv
ZHkocmVzcG9uc2VCb2R5KSwgcmVzcG9uc2VCb2R5U2l6ZSB9OwogfQogCi1zdGF0aWMgaW5saW5l
IENhY2hlSW5mbyBpc29sYXRlQ2FjaGVJbmZvKGNvbnN0IENhY2hlSW5mbyYgaW5mbykKLXsKLSAg
ICByZXR1cm4gQ2FjaGVJbmZvIHsgaW5mby5pZGVudGlmaWVyLCBpbmZvLm5hbWUuaXNvbGF0ZWRD
b3B5KCkgfTsKLX0KLQotQ2FjaGVJbmZvcyBDYWNoZUluZm9zOjppc29sYXRlZENvcHkoKQotewot
ICAgIHJldHVybiB7IFdURjo6bWFwKGluZm9zLCBpc29sYXRlQ2FjaGVJbmZvKSwgdXBkYXRlQ291
bnRlciB9OwotfQotCiB9IC8vIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uYmU1
YzJjMWUzNTQwYzc2ZmVjNzdlZDVjNGY2ZWEwYWI0MjI5NzVjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtODIsMTYgKzgyLDIwIEBAIHN0
cnVjdCBSZWNvcmQgewogc3RydWN0IENhY2hlSW5mbyB7CiAgICAgdWludDY0X3QgaWRlbnRpZmll
cjsKICAgICBTdHJpbmcgbmFtZTsKKworICAgIENhY2hlSW5mbyBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsgaWRlbnRpZmllciwgbmFtZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAg
Q2FjaGVJbmZvIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgaWRlbnRpZmllciwgV1RGTW92
ZShuYW1lKS5pc29sYXRlZENvcHkoKSB9OyB9CiB9OwogCiBzdHJ1Y3QgQ2FjaGVJbmZvcyB7Ci0g
ICAgQ2FjaGVJbmZvcyBpc29sYXRlZENvcHkoKTsKKyAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpbmZv
czsKKyAgICB1aW50NjRfdCB1cGRhdGVDb3VudGVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhY2hlSW5mb3M+IGRlY29kZShEZWNvZGVyJik7
CiAKLSAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpbmZvczsKLSAgICB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyOworICAgIENhY2hlSW5mb3MgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShpbmZvcyksIHVwZGF0ZUNvdW50ZXIgfTsgfQorICAgIENhY2hlSW5mb3Mg
aXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShpbmZv
cykpLCB1cGRhdGVDb3VudGVyIH07IH0KIH07CiAKIHN0cnVjdCBDYWNoZUlkZW50aWZpZXJPcGVy
YXRpb25SZXN1bHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9S
ZXRyaWV2ZVJlY29yZHNPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1Jl
dHJpZXZlUmVjb3Jkc09wdGlvbnMuaAppbmRleCAwZmEwMmJiYmRjMzM5MWNkYmRiY2ZkOGFiZTZh
ZmZmNGFmY2ExNTBmLi43NTYwNDU5NDdmNmVlNTE4NGViZDA4OWE1ZDZmYjJjYzI4ZjQ1NTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jkc09w
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jk
c09wdGlvbnMuaApAQCAtMzMsNyArMzMsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyB7Ci0gICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBp
c29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIGNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZU9yaWdpbi0+aXNv
bGF0ZWRDb3B5KCksIGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBzaG91
bGRQcm92aWRlUmVzcG9uc2UgfTsgfQorICAgIFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIGNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZU9yaWdpbi0+aXNvbGF0
ZWRDb3B5KCksIGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBzaG91bGRQ
cm92aWRlUmVzcG9uc2UgfTsgfQorICAgIFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHJlcXVlc3QpLmlzb2xhdGVkQ29weSgpLCBXVEZN
b3ZlKGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VPcmln
aW4tPmlzb2xhdGVkQ29weSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFy
eSwgc2hvdWxkUHJvdmlkZVJlc3BvbnNlIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRyaWV2ZVJlY29yZHNPcHRpb25zPiBkZWNvZGUo
RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggNDZmZjdjZWNkM2UyMjMy
OWQ2NzVkZTI1ZTJlNmJkNzljNTRiOTEyYy4uYmQyMDRhOWM3OWY0NTE0Y2Y5MDAzZWNlMzY2ZGEz
NGNmMWNlYzVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0xODAsNyArMTgwLDcg
QEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWkKICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192
YWx1ZSgpKQogICAgICAgICAgICAgICAgIGlzb2xhdGVkUmVzdWx0ID0gV1RGTW92ZShyZXN1bHQp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGlzb2xhdGVkUmVzdWx0ID0gcmVz
dWx0LnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCkudmFsdWUoKS5pc29sYXRlZENvcHkoKTsKIAogICAgICAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0ID0gV1RGTW92ZShpc29sYXRlZFJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3Bl
KS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkucmV0cmlldmVDYWNoZXNDb21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9s
YXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUudGhyZWFkKCkgfSwg
bWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRl
bnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHko
KSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS50aHJlYWQoKSB9LCBt
YWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmJhdGNoRGVsZXRlT3BlcmF0aW9uKGNhY2hl
SWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSwgW3dvcmtlclRocmVhZCA9IFdU
Rk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJz
T3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZN
b3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCku
ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAppbmRleCAwMTZkMTcxNzI4NzVkMmE1MzljNmMyYTI5NWU4ZDUyYzQ2ODUxODQwLi45
ODJlNWI1ODM3ZjVjNWU1MjgwNzkxNWNhN2JiYjY2Y2ExMzk2N2Q4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3
ICs0NCw4IEBAIHN0cnVjdCBMaXN0ZWRDaGlsZCB7CiAgICAgU3RyaW5nIGZpbGVuYW1lOwogICAg
IEZpbGVTeXN0ZW06OkZpbGVUeXBlIHR5cGU7CiAKLSAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07IH0K
KyAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgZmlsZW5h
bWUuaXNvbGF0ZWRDb3B5KCksIHR5cGUgfTsgfQorICAgIExpc3RlZENoaWxkIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShmaWxlbmFtZSkuaXNvbGF0ZWRDb3B5KCksIHR5cGUg
fTsgfQogfTsKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbTo6RmlsZVR5cGU+IGZp
bGVUeXBlSWdub3JpbmdIaWRkZW5GaWxlcyhjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQpAQCAtMjU2
LDcgKzI1Nyw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyCiAKICAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gUmVmIHsg
Y29udGV4dCB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIGRpcmVjdG9yeVZpcnR1YWxQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGRpcmVjdG9yeVZpcnR1YWxQYXRoKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgYXV0byBsaXN0ZWRDaGlsZHJlbiA9IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEo
ZnVsbFBhdGgpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0g
Y3Jvc3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBk
aXJlY3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGxpc3RlZENoaWxkcmVuKSksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0gZGlyZWN0b3J5Vmly
dHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih0b0ZpbGVTeXN0ZW1FbnRyaWVzKGNvbnRleHQsIHByb3RlY3RlZFRoaXMsIFdU
Rk1vdmUobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOwogICAgICAgICB9
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IDUzNTUwZmE3ZDlhMTU5ZmUxZjlm
N2U3NzZlM2RkZTZmYTUyN2Q0ZjcuLmQ4Zjg1Njc0Y2QxMTBiMzEwOWY2YTllNDhmNzljNmQ3ZmY1
YjQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNDIsMTQgKzQyLDIxIEBAIElEQkRhdGFi
YXNlSWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBTZWN1cml0CiAgICAgQVNTRVJUKCFkYXRhYmFzZU5hbWUuaXNOdWxsKCkpOwogfQog
Ci1JREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENv
cHkoKSBjb25zdAorSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpZGVu
dGlmaWVyOwotCiAgICAgaWRlbnRpZmllci5tX2RhdGFiYXNlTmFtZSA9IG1fZGF0YWJhc2VOYW1l
Lmlzb2xhdGVkQ29weSgpOwogICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBtX29yaWdpbi5pc29s
YXRlZENvcHkoKTsKICAgICBpZGVudGlmaWVyLm1faXNUcmFuc2llbnQgPSBtX2lzVHJhbnNpZW50
OworICAgIHJldHVybiBpZGVudGlmaWVyOworfQogCitJREJEYXRhYmFzZUlkZW50aWZpZXIgSURC
RGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIElEQkRhdGFiYXNl
SWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBX
VEZNb3ZlKG1fZGF0YWJhc2VOYW1lKS5pc29sYXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1f
b3JpZ2luID0gV1RGTW92ZShtX29yaWdpbikuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWRlbnRpZmll
ci5tX2lzVHJhbnNpZW50ID0gbV9pc1RyYW5zaWVudDsKICAgICByZXR1cm4gaWRlbnRpZmllcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBmODNmMTk1YTU2ZGVmZDJiM2YwZWNkOGU5ZDY3MTRk
Mjk0MGQwYTIyLi4yNzFkZWQ0ZGVlOGI4ODhkMzFlNGM0YzExZTFkMWZjODg5ZGJhNmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuaApAQCAtNDIsNyArNDIsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIG9wZW5pbmdPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG1h
aW5GcmFtZU9yaWdpbiwgYm9vbCBpc1RyYW5zaWVudCA9IGZhbHNlKTsKIAotICAgIElEQkRhdGFi
YXNlSWRlbnRpZmllciBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIg
aXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmNwcAppbmRleCA1NDc5ZDYxZjFmMDNhOWYyZjJmZTM5M2NmNzJkYzI5NTIyZDU0
ZjUyLi5hYjU2NzIyMzFmMmJiNDI0MzJhMjliMjA3NGZhMGEwNjdiYzM0NTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgdm9pZCBJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weShjb25zdCBJREJHZXRS
ZXN1bHQmIHNvdXJjZSwgSURCR2V0UmVzdWx0JiBkZXN0aW4KICAgICBkZXN0aW5hdGlvbi5tX3By
aW1hcnlLZXlEYXRhID0gc291cmNlLm1fcHJpbWFyeUtleURhdGEuaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgZGVzdGluYXRpb24ubV9rZXlQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHNvdXJjZS5tX2tleVBh
dGgpOwogICAgIGRlc3RpbmF0aW9uLm1faXNEZWZpbmVkID0gc291cmNlLm1faXNEZWZpbmVkOwot
ICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBzb3VyY2UubV9wcmVmZXRjaGVk
UmVjb3Jkcy5pc29sYXRlZENvcHkoKTsKKyAgICBkZXN0aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNv
cmRzID0gY3Jvc3NUaHJlYWRDb3B5KHNvdXJjZS5tX3ByZWZldGNoZWRSZWNvcmRzKTsKIH0KIAog
dm9pZCBJREJHZXRSZXN1bHQ6OnNldFZhbHVlKElEQlZhbHVlJiYgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
Y2U4NjdiMWI3ZTZkNmYxNTQ5ZWNkNzI2MTI3ZGNjNzY5OTVhOWQwNi4uNzczZTViMmQzYWE1ZDI4
ZWJlYmE4MzZmOTc3MmM4N2Q1NDY4MjZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtOTMyLDcgKzkzMiw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVj
b3JkcyhJREJPYmplY3RTdG9yZSYKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBn
ZXQgYWxsIG9iamVjdCBzdG9yZSByZWNvcmRzIG9wZXJhdGlvbjogJXMiLCBnZXRBbGxSZWNvcmRz
RGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgc2NoZWR1bGVPcGVyYXRp
b24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVx
dWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0XSAoY29u
c3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEdldEFsbFJlY29y
ZHNPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgZ2V0QWxsUmVjb3Jkc0RhdGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5p
c29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgeworICAgIH0sIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgZ2V0QWxsUmVjb3Jkc0RhdGEgPSBXVEZNb3ZlKGdldEFsbFJlY29y
ZHNEYXRhKS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5nZXRBbGxSZWNvcmRzT25TZXJ2ZXIob3BlcmF0aW9uLCBnZXRBbGxSZWNvcmRz
RGF0YSk7CiAgICAgfSkpOwogCkBAIC05NTQsNyArOTU0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKElEQkluZGV4JiBpbmRleCwg
Y29uc3QKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBnZXQgYWxsIGluZGV4IHJl
Y29yZHMgb3BlcmF0aW9uOiAlcyIsIGdldEFsbFJlY29yZHNEYXRhLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKHJlcXVlc3QuZ2V0
KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBnZXRB
bGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0byYg
b3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBnZXRB
bGxSZWNvcmRzRGF0YSA9IFdURk1vdmUoZ2V0QWxsUmVjb3Jkc0RhdGEpLmlzb2xhdGVkQ29weSgp
XSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmdldEFsbFJlY29y
ZHNPblNlcnZlcihvcGVyYXRpb24sIGdldEFsbFJlY29yZHNEYXRhKTsKICAgICB9KSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGM5ZGQxZDAzNmU3YzE5NGE5Y2NiMTQ2YzA1YTA3
NjMxYWQzZGRiM2MuLjdlZjlkMGEzODdmNzI3ZDg1ZWMwZGVlZjZkM2NhZTBkZWQwMTU4Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIElEQkVycm9yIE1l
bW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3JkcyhNZW1vcnlJ
bmRleCYgaW5kZXgpCiAKICAgICAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwogICAgICAgICAg
ICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKGdsb2JhbE9iamVjdCwgaW5kZXhJbmZvLCBqc1Zh
bHVlLCBpbmRleEtleSwgaW5mby5rZXlQYXRoKCksIGtleSk7Ci0gICAgICAgICAgICByZXN1bHRJ
bmRleEtleSA9IGluZGV4S2V5Lmlzb2xhdGVkQ29weSgpOworICAgICAgICAgICAgcmVzdWx0SW5k
ZXhLZXkgPSBXVEZNb3ZlKGluZGV4S2V5KS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgaWYgKCFyZXN1bHRJbmRleEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggOTIxYWEyYjBiODgwOWIzYTRkY2Y3MzIxODlkYjkwOWE0NjBhYjE4Zi4uYjUz
ZThiYTk2MmY2ZmI3NzIyM2RjYTNiZDRlNjJiNjFiNTk3YjU0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE4ODYsNyArMTg4Niw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQoSURCT2JqZWN0U3RvcmVJ
bmZvJiBvCiAKICAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7CiAgICAgICAgIGdlbmVyYXRlSW5k
ZXhLZXlGb3JWYWx1ZShnbG9iYWxPYmplY3QsIGluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBvYmpl
Y3RTdG9yZUluZm8ua2V5UGF0aCgpLCBrZXkpOwotICAgICAgICByZXN1bHRJbmRleEtleSA9IGlu
ZGV4S2V5Lmlzb2xhdGVkQ29weSgpOworICAgICAgICByZXN1bHRJbmRleEtleSA9IFdURk1vdmUo
aW5kZXhLZXkpLmlzb2xhdGVkQ29weSgpOwogICAgIH0pOwogCiAgICAgaWYgKCFyZXN1bHRJbmRl
eEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCmluZGV4IGY0Yzc1ZTBl
MjdhNjkwNjNkNDc2ZGNjYjlkZDc4YzVjOGRkYTYyYWEuLmM3MWQwN2Y2OWMzZGJiNDcwZDYxMTc3
NjNlZGJkOWQ4NDEwMzc2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24u
aApAQCAtMzYsNyArMzYsOCBAQCBzdHJ1Y3QgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiB7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG5hbWUuaXNvbGF0ZWRD
b3B5KCksIHZlcnNpb24gfTsgfQorICAgIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24gaXNvbGF0
ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpLCB2ZXJz
aW9uIH07IH0KIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OSw5ICs2MCw0IEBA
IHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gSURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbjo6ZGVjb2RlKERlY29kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLWlubGluZSBJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb246Omlzb2xh
dGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgdmVy
c2lvbiB9OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAppbmRleCAyZTBhNTdh
YzY2N2I2MmNjNmNmYmRiZTRjZjZmMTUxODk5YjIxOGFiLi4xOGVkN2UyMWIzNTUwZDM5OTQyMjhl
ZTBhYTdkYTQ4ZTk4MWY2NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKQEAgLTM2LDExICszNiw2IEBAIElEQkVycm9y
OjpJREJFcnJvcihzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKIH0KIAotSURCRXJyb3IgSURCRXJyb3I6Omlzb2xhdGVkQ29weSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIElEQkVycm9yIHsgbV9jb2RlLCBtX21lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCkgfTsKLX0KLQogU3RyaW5nIElEQkVycm9yOjpuYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQkVycm9yLmgKaW5kZXggYjMwYWQzOTE3NmYwM2ZmMGQ2YzkzOThkNmIzZWQxOWNkMmU5OTIx
ZC4uMzI5NjU2Y2U5ZjQyODg3ZjNkMGJmNzA4YzliMGM2M2E5MTVlMDExNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKQEAgLTU0
LDcgKzU0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1f
Y29kZTsgfQogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAg
IElEQkVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4gSURCRXJyb3IgeyBtX2Nv
ZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgSURCRXJyb3IgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4gSURCRXJyb3IgeyBtX2NvZGUsIFdURk1vdmUobV9tZXNzYWdlKS5p
c29sYXRlZENvcHkoKSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgSURCRXJyb3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRl
eEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQklu
ZGV4SW5mby5jcHAKaW5kZXggMDE1YWNmNzI3Njk0NTM3NGM0YWRiOGFkMjQzNGJhM2I3OTlhYWZk
YS4uZTcxZDJlYmYyMWM0YWRmZWYyOGEyYmRhZmExZmY4NGIzZjdmMDM5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5m
by5jcHAKQEAgLTQ1LDExICs0NSwxNiBAQCBJREJJbmRleEluZm86OklEQkluZGV4SW5mbyh1aW50
NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsCiB7CiB9CiAK
LUlEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CitJREJJbmRl
eEluZm8gSURCSW5kZXhJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJu
IHsgbV9pZGVudGlmaWVyLCBtX29iamVjdFN0b3JlSWRlbnRpZmllciwgbV9uYW1lLmlzb2xhdGVk
Q29weSgpLCBjcm9zc1RocmVhZENvcHkobV9rZXlQYXRoKSwgbV91bmlxdWUsIG1fbXVsdGlFbnRy
eSB9OwogfQogCitJREJJbmRleEluZm8gSURCSW5kZXhJbmZvOjppc29sYXRlZENvcHkoKSAmJgor
eworICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIsIFdU
Rk1vdmUobV9uYW1lKS5pc29sYXRlZENvcHkoKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9r
ZXlQYXRoKSksIG1fdW5pcXVlLCBtX211bHRpRW50cnkgfTsKK30KKwogI2lmICFMT0dfRElTQUJM
RUQKIAogU3RyaW5nIElEQkluZGV4SW5mbzo6bG9nZ2luZ1N0cmluZyhpbnQgaW5kZW50KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkluZGV4SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkluZGV4SW5mby5oCmluZGV4IDlmMWViOWEwYTEwMTQ0MzhjYjIzODYzYWFjYTIxNGI3Y2Y0MWJj
ZTYuLmExMGY4ZjUyZjM0MjFhMTc5ZTBkY2FkOWFhYjk3ZjJmYzFhOGVkYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmgKQEAgLTM1LDcgKzM1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4
SW5mbygpOwogICAgIElEQkluZGV4SW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgSURCS2V5UGF0aCYmLCBi
b29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIElEQklu
ZGV4SW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJJbmRl
eEluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJJbmRl
eEluZm8gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkZW50aWZpZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RT
dG9yZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
Qk9iamVjdFN0b3JlSW5mby5jcHAKaW5kZXggMTBjMWE0YzUxNWUyZWFlZjgwOTM5NDJiYjM2YzVk
OGQ1MjM0YzBjYy4uMWU4YjhkZWE0MGJmOGJkMzZiZDI3MjNlOTIwMDEwNjA2YWQ1NjA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVj
dFN0b3JlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKQEAgLTkyLDEzICs5MiwxNyBAQCBJREJJbmRleElu
Zm8qIElEQk9iamVjdFN0b3JlSW5mbzo6aW5mb0ZvckV4aXN0aW5nSW5kZXgodWludDY0X3QgaWRl
bnRpZmllcikKICAgICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotSURCT2JqZWN0U3Rv
cmVJbmZvIElEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0lEQk9iamVj
dFN0b3JlSW5mbyBJREJPYmplY3RTdG9yZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsK
ICAgICBJREJPYmplY3RTdG9yZUluZm8gcmVzdWx0ID0geyBtX2lkZW50aWZpZXIsIG1fbmFtZS5p
c29sYXRlZENvcHkoKSwgY3Jvc3NUaHJlYWRDb3B5KG1fa2V5UGF0aCksIG1fYXV0b0luY3JlbWVu
dCB9OworICAgIHJlc3VsdC5tX2luZGV4TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1faW5kZXhNYXAp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKLSAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV9p
bmRleE1hcCkKLSAgICAgICAgcmVzdWx0Lm1faW5kZXhNYXAuc2V0KGl0ZXJhdG9yLmtleSwgaXRl
cmF0b3IudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotCitJREJPYmplY3RTdG9yZUluZm8gSURCT2Jq
ZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIElEQk9iamVjdFN0b3JlSW5m
byByZXN1bHQgPSB7IG1faWRlbnRpZmllciwgV1RGTW92ZShtX25hbWUpLmlzb2xhdGVkQ29weSgp
LCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2tleVBhdGgpKSwgbV9hdXRvSW5jcmVtZW50IH07
CisgICAgcmVzdWx0Lm1faW5kZXhNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2luZGV4
TWFwKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCmlu
ZGV4IDQwM2ZkNDA1OTg2YmM1ZDkyN2I0ZTYzYWRmMGM5NWZlZjFhZTk2OTkuLmUzYTAzYmY3NTY1
ODMxYTc1MDgzNTlkNThjMjZlYTkxMmU3MTgxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgK
QEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZW5hbWUoY29uc3QgU3RyaW5n
JiBuZXdOYW1lKSB7IG1fbmFtZSA9IG5ld05hbWU7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIElE
Qk9iamVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJREJPYmplY3RTdG9yZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBXRUJDT1JF
X0VYUE9SVCBJREJPYmplY3RTdG9yZUluZm8gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICBJREJJ
bmRleEluZm8gY3JlYXRlTmV3SW5kZXgodWludDY0X3QgaW5kZXhJRCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJLZXlQYXRoJiYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwogICAgIHZv
aWQgYWRkRXhpc3RpbmdJbmRleChjb25zdCBJREJJbmRleEluZm8mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3Qu
aAppbmRleCA0NDJjMzAzZDJhODc0ZTI5NDNlZjdhYzVmNjJmY2UzNjAwZjJlNzVhLi4yNzA3Zjcx
NjJmOWRkMGEzMTkwNWEyODQ0ZDcwNmM0NmYyMjEzMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCkBA
IC0zNyw3ICszNyw4IEBAIHN0cnVjdCBXZWJMb2NrTWFuYWdlclNuYXBzaG90IHsKICAgICAgICAg
V2ViTG9ja01vZGUgbW9kZSB7IFdlYkxvY2tNb2RlOjpFeGNsdXNpdmUgfTsKICAgICAgICAgU3Ry
aW5nIGNsaWVudElkOwogCi0gICAgICAgIEluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCBtb2RlLCBjbGllbnRJZC5pc29sYXRlZENvcHkoKSB9
OyB9CisgICAgICAgIEluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG5hbWUu
aXNvbGF0ZWRDb3B5KCksIG1vZGUsIGNsaWVudElkLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgSW5mbyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUobmFtZSkuaXNvbGF0
ZWRDb3B5KCksIG1vZGUsIFdURk1vdmUoY2xpZW50SWQpLmlzb2xhdGVkQ29weSgpIH07IH0KIAog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdCB7IGVuY29kZXIgPDwgbmFtZSA8PCBtb2RlIDw8IGNsaWVudElkOyB9CiAgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluZm8+IGRl
Y29kZShEZWNvZGVyJik7CkBAIC00Niw3ICs0Nyw4IEBAIHN0cnVjdCBXZWJMb2NrTWFuYWdlclNu
YXBzaG90IHsKICAgICBWZWN0b3I8SW5mbz4gaGVsZDsKICAgICBWZWN0b3I8SW5mbz4gcGVuZGlu
ZzsKIAotICAgIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4geyBjcm9zc1RocmVhZENvcHkoaGVsZCksIGNyb3NzVGhyZWFkQ29weShwZW5kaW5nKSB9
OyB9CisgICAgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGhlbGQpLCBjcm9zc1RocmVhZENvcHkocGVuZGluZykg
fTsgfQorICAgIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1
cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShoZWxkKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHBlbmRpbmcpKSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdCB7IGVuY29kZXIgPDwgaGVsZCA8PCBwZW5kaW5n
OyB9CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
TG9ja01hbmFnZXJTbmFwc2hvdD4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaAppbmRleCAx
ZWQ2Y2RlNzI5ZWY5MzU3NzBiYTk2MzdkM2FmYTVmMDJhOGQ4NjRlLi41ZGU1NGY4YjMwM2QyNGM5
ODZiNDViMWU0Y2QwZmNhOWEzYjAyOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oCkBAIC00MiwxNiArNDIsOCBA
QCBzdHJ1Y3QgQXVkaW9QYXJhbURlc2NyaXB0b3IgewogICAgIGZsb2F0IG1heFZhbHVlIHsgMy40
MDI4MjM1ZTM4IH07CiAgICAgQXV0b21hdGlvblJhdGUgYXV0b21hdGlvblJhdGUgeyBBdXRvbWF0
aW9uUmF0ZTo6QVJhdGUgfTsKIAotICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlzb2xhdGVkQ29w
eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbmFtZS5pc29s
YXRlZENvcHkoKSwKLSAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSwKLSAgICAgICAgICAgIG1pblZh
bHVlLAotICAgICAgICAgICAgbWF4VmFsdWUsCi0gICAgICAgICAgICBhdXRvbWF0aW9uUmF0ZQot
ICAgICAgICB9OwotICAgIH0KKyAgICBBdWRpb1BhcmFtRGVzY3JpcHRvciBpc29sYXRlZENvcHko
KSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgZGVmYXVsdFZhbHVlLCBt
aW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlIH07IH0KKyAgICBBdWRpb1BhcmFtRGVz
Y3JpcHRvciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUobmFtZSkuaXNvbGF0
ZWRDb3B5KCksIGRlZmF1bHRWYWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlLCBhdXRvbWF0aW9uUmF0
ZSB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IDNlNzM5YzFjZjkwOWVmNzI5ZjViOWYwYTlhZmM4YzBmZmVjMmNhYjguLjhhNTEzMGRi
OTcwZmJmNjJjMTg0NTIwOWE0MDNhMmE0OTIxZTQyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjwKICAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IsICJBIHByb2Nlc3NvciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBu
YW1lIl9zIH07CiAKLSAgICB0aHJlYWQoKS5tZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRp
b1dvcmtsZXQoW25hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNjcmlwdG9y
cyA9IGNyb3NzVGhyZWFkQ29weShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29ya2xldCYg
d29ya2xldCkgbXV0YWJsZSB7CisgICAgdGhyZWFkKCkubWVzc2FnaW5nUHJveHkoKS5wb3N0VGFz
a1RvQXVkaW9Xb3JrbGV0KFtuYW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgcGFy
YW1ldGVyRGVzY3JpcHRvcnMgPSBjcm9zc1RocmVhZENvcHkocGFyYW1ldGVyRGVzY3JpcHRvcnMp
XShBdWRpb1dvcmtsZXQmIHdvcmtsZXQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgICAgICBpZiAoYXV0byogYXVkaW9Db250ZXh0ID0gd29ya2xldC5hdWRp
b0NvbnRleHQoKSkKICAgICAgICAgICAgIGF1ZGlvQ29udGV4dC0+YWRkQXVkaW9QYXJhbURlc2Ny
aXB0b3JzKG5hbWUsIFdURk1vdmUocGFyYW1ldGVyRGVzY3JpcHRvcnMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApp
bmRleCA2YTBiZTk2NDQ3NzNkODIzODIzNmQ2NzkzMjE4MWE2MzdkZDI1YTMwLi41NGFjMDhjZDQ4
ZGYzY2NjYzNjZTRjMDNlN2M5ZWYzMjFiMDJhZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCkBAIC0zNywxMCAr
MzcsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1dvcmtsZXRUaHJlYWQ6OkF1
ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJv
eHksIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorQXVkaW9Xb3JrbGV0VGhy
ZWFkOjpBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3Nh
Z2luZ1Byb3h5LCBXb3JrbGV0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBXb3JrZXJP
cldvcmtsZXRUaHJlYWQocGFyYW1ldGVycy5pZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKLSAgICAsIG1fcGFyYW1ldGVycyhw
YXJhbWV0ZXJzLmlzb2xhdGVkQ29weSgpKQorICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFy
YW1ldGVycykuaXNvbGF0ZWRDb3B5KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCmluZGV4IGY2ZTcxNTU2Y2Uw
Yzk0ZmFkNGQyNjk3NTMyNjg2NTgyMDQxMzUyNzIuLmIzNGVlOTk4OThmOWRkZDFkMGE3YjM4MjBm
MWI1Y2NhMmVmN2ZlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaApAQCAtMzksOSArMzksOSBAQCBjbGFzcyBBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eTsKIAogY2xhc3MgQXVkaW9Xb3JrbGV0VGhyZWFkIDogcHVibGlj
IFdvcmtlck9yV29ya2xldFRocmVhZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb1dv
cmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5n
UHJveHksIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBS
ZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkm
IG1lc3NhZ2luZ1Byb3h5LCBXb3JrbGV0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQobWVzc2FnaW5n
UHJveHksIHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9X
b3JrbGV0VGhyZWFkKG1lc3NhZ2luZ1Byb3h5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAg
fQogICAgIH5BdWRpb1dvcmtsZXRUaHJlYWQoKTsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3NhZ2luZ1Byb3h5KCkgeyByZXR1
cm4gbV9tZXNzYWdpbmdQcm94eTsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlvV29ya2xldFRocmVh
ZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7
CisgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgV29y
a2xldFBhcmFtZXRlcnMmJik7CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQuCiAgICAg
UmVmPFRocmVhZD4gY3JlYXRlVGhyZWFkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKaW5kZXggYmVmMDM5ZTE1ZTgy
NTY1MDcwZjBlMzdmOWYzMzlmNWE0ZmExMzUyNC4uM2VhZTk2MTA0ODcxZWFhMjg5YjUwMDQ0YWIx
N2IzOTE1MjM4MjA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUYXNrLmNwcApAQCAtOTUsNyArOTUsNyBAQCBEYXRhYmFzZU9wZW5UYXNr
OjpEYXRhYmFzZU9wZW5UYXNrKERhdGFiYXNlJiBkYXRhYmFzZSwgYm9vbCBzZXRWZXJzaW9uSW5O
ZXdEYXRhYgogCiB2b2lkIERhdGFiYXNlT3BlblRhc2s6OmRvUGVyZm9ybVRhc2soKQogewotICAg
IG1fcmVzdWx0ID0gaXNvbGF0ZWRDb3B5KGRhdGFiYXNlKCkucGVyZm9ybU9wZW5BbmRWZXJpZnko
bV9zZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkpOworICAgIG1fcmVzdWx0ID0gY3Jvc3NUaHJlYWRD
b3B5KGRhdGFiYXNlKCkucGVyZm9ybU9wZW5BbmRWZXJpZnkobV9zZXRWZXJzaW9uSW5OZXdEYXRh
YmFzZSkpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGFlNjYwYzAy
MWY3YThkMjBkNGMxMWJhNGJkOWEzNDJlZmZmNzM2NDkuLjA2N2ZkMzkxMzkwYzg1ZGMyZDQ5ZGY0
MDgwMTYyYjQzYzRmNDIzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTM3Miw4ICszNzIsMTAgQEAgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKCkKIAogICAg
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAgaW50IHN0ZXBSZXN1bHQ7
Ci0gICAgd2hpbGUgKChzdGVwUmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCkpID09IFNRTElURV9S
T1cpCi0gICAgICAgIG9yaWdpbnMuYXBwZW5kKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcihzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpLT5pc29sYXRlZENvcHkoKSk7
CisgICAgd2hpbGUgKChzdGVwUmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCkpID09IFNRTElURV9S
T1cpIHsKKyAgICAgICAgaWYgKGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSkpCisgICAgICAgICAg
ICBvcmlnaW5zLmFwcGVuZChXVEZNb3ZlKG9yaWdpbikudmFsdWUoKS5pc29sYXRlZENvcHkoKSk7
CisgICAgfQogICAgIG9yaWdpbnMuc2hyaW5rVG9GaXQoKTsKIAogICAgIGlmIChzdGVwUmVzdWx0
ICE9IFNRTElURV9ET05FKQpAQCAtNTM3LDcgKzUzOSw2IEBAIHZvaWQgRGF0YWJhc2VUcmFja2Vy
OjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgICAgICBtX29wZW5EYXRh
YmFzZU1hcCA9IG1ha2VVbmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CiAKICAgICBhdXRvIG9y
aWdpbiA9IGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCk7Ci0KICAgICBhdXRvKiBuYW1lTWFwID0g
bV9vcGVuRGF0YWJhc2VNYXAtPmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZU1hcCkgewogICAg
ICAgICBuYW1lTWFwID0gbmV3IERhdGFiYXNlTmFtZU1hcDsKQEAgLTU5OCwxNCArNTk5LDEzIEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFi
YXNlKQogUmVmPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9ja0Zvcihjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBMb2NrZXIgbG9ja0RhdGFiYXNl
IHsgbV9kYXRhYmFzZUd1YXJkIH07Ci0gICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIAogICAgIC8vIFRoZSBvcmlnaW5Mb2NrTWFwIGlz
IGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgRGF0YWJhc2VUaHJlYWRzIHNpbmNlCiAgICAgLy8gZGlm
ZmVyZW50IHNjcmlwdCBjb250ZXh0cyBjYW4gYmUgd3JpdGluZyB0byBkaWZmZXJlbnQgZGF0YWJh
c2VzIGZyb20KICAgICAvLyB0aGUgc2FtZSBvcmlnaW4uIEhlbmNlLCB0aGUgZGF0YWJhc2VJZGVu
dGlmaWVyIGtleSBuZWVkcyB0byBiZSBhbgogICAgIC8vIGlzb2xhdGVkIGNvcHkuIEFuIGlzb2xh
dGVkIGNvcHkgZ2l2ZXMgdXMgYSB2YWx1ZSB3aG9zZSByZWZDb3VudGluZyBpcwogICAgIC8vIHRo
cmVhZC1zYWZlLCBzaW5jZSBvdXIgY29weSBpcyBndWFyZGVkIGJ5IHRoZSBtX2RhdGFiYXNlR3Vh
cmQgbXV0ZXguCi0gICAgZGF0YWJhc2VJZGVudGlmaWVyID0gZGF0YWJhc2VJZGVudGlmaWVyLmlz
b2xhdGVkQ29weSgpOworICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICByZXR1cm4gbV9vcmlnaW5M
b2NrTWFwLmVuc3VyZShkYXRhYmFzZUlkZW50aWZpZXIsIFsmXSB7CiAgICAgICAgIHJldHVybiBP
cmlnaW5Mb2NrOjpjcmVhdGUob3JpZ2luUGF0aChvcmlnaW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDkzMzRjNTUxYzQ0ZTQxNTMxZTBkNTY2ZjIy
YjUyOTY5ZDQ2MTBkODIuLmJhMWI0MDI2MTJhMzk0MTY4MzMxYjY1MWE1ZDNmMmQ5MTUzMDg5MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjY0LDcg
KzI2NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZENvbm5lY3QoKQogCiAgICAgU3RyaW5nIHN1YnByb3RvY29sID0gbV9tYWluV2ViU29ja2V0Q2hh
bm5lbC0+c3VicHJvdG9jb2woKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fbWFpbldlYlNv
Y2tldENoYW5uZWwtPmV4dGVuc2lvbnMoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBt
X3dvcmtlckNsaWVudFdyYXBwZXIsIHN1YnByb3RvY29sID0gc3VicHJvdG9jb2wuaXNvbGF0ZWRD
b3B5KCksIGV4dGVuc2lvbnMgPSBleHRlbnNpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHN1YnByb3RvY29sID0gV1RGTW92ZShzdWJwcm90
b2NvbCkuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lvbnMgPSBXVEZNb3ZlKGV4dGVuc2lvbnMpLmlz
b2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJD
bGllbnRXcmFwcGVyLT5zZXRTdWJwcm90b2NvbChzdWJwcm90b2NvbCk7CiAgICAgICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDNhMzVlMjYwNWUwM2U2Mjk3OWIyMjlkODI2ZmU2ZTczYmUyOTQyZGYuLjAwNDVjMjdkMzFi
MTA3Y2RmN2EzZGFjOGQ2YjQxNTlmY2FkZjEyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NzEsNyAr
OTcxLDYgQEAgZG9tL0V2ZW50TmFtZXMuY3BwCiBkb20vRXZlbnRQYXRoLmNwcAogZG9tL0V2ZW50
VGFyZ2V0LmNwcAogZG9tL0V2ZW50VGFyZ2V0Q29uY3JldGUuY3BwCi1kb20vRXhjZXB0aW9uRGF0
YS5jcHAKIGRvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKIGRvbS9Gb2N1c0V2ZW50LmNwcAog
ZG9tL0Zvcm1EYXRhRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWEyMjdkNTk4ZTQyOWQ4NTViYjNkZWVkYTliMWQ0
NzI4MGQ2MjQzYi4uYzUyYjVmNzA3OWFiMWI2ZTBkNWU1OGYyY2VmZWM2ZDZlOTQ1ZTlhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTAwNTUsNyArMTAwNTUsNiBAQAogCQk1MUY2NDU5NDFGNEE2ODRGMDBCNTRERUQgLyogU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1
OTUxRjRBNjg2MTAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1QTAxRjRCRjUxNjAwQjU0REVEIC8qIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFGNjQ1QTMxRjRDMDAwQzAwQjU0REVEIC8qIEV4
Y2VwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhj
ZXB0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NUQyMUZF
Q0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzSWRlbnRpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzSWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRjY0NUQzMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVERTFGRjQ1OTRCMDBCNTRE
RUQgLyogTWVzc2FnZVBvcnRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lc3NhZ2VQb3J0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzI1NjUsNyArMzI1NjQsNiBAQAogCQkJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAv
KiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8sCiAJCQkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3
IC8qIEV4Y2VwdGlvbi5oICovLAogCQkJCTkzNUZCQ0YxMDlCQTE0M0IwMEUyMzBCMSAvKiBFeGNl
cHRpb25Db2RlLmggKi8sCi0JCQkJNTFGNjQ1QTMxRjRDMDAwQzAwQjU0REVEIC8qIEV4Y2VwdGlv
bkRhdGEuY3BwICovLAogCQkJCTUxRjY0NTYwMUY0NTM5OEIwMEI1NERFRCAvKiBFeGNlcHRpb25E
YXRhLmggKi8sCiAJCQkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmgg
Ki8sCiAJCQkJRTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRz
LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcAppbmRleCBkNTk2ZGE0MDhiNzg3YzFkZjY2
MTkzNmNjMGMyMWU0ODM5OWUyZjg3Li4xYjJmMmZlMGNmMzEwN2ZiY2M5OWE0MGEwNzcyMmY5MDdi
MDQ4YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCkBAIC0xMTQsMTIgKzExNCwxNCBAQCBF
eHBlY3RlZDxNb2RpZnlIZWFkZXJzQWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IE1vZGlmeUhlYWRl
cnNBY3Rpb246OnBhcnNlKGNvbnN0CiAgICAgcmV0dXJuIE1vZGlmeUhlYWRlcnNBY3Rpb24geyBX
VEZNb3ZlKCpyZXF1ZXN0SGVhZGVycyksIFdURk1vdmUoKnJlc3BvbnNlSGVhZGVycykgfTsKIH0K
IAotTW9kaWZ5SGVhZGVyc0FjdGlvbiBNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHko
KSBjb25zdAorTW9kaWZ5SGVhZGVyc0FjdGlvbiBNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KHJlcXVlc3RIZWFkZXJzKSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHJlc3BvbnNlSGVhZGVy
cykKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShyZXF1ZXN0SGVhZGVycyks
IGNyb3NzVGhyZWFkQ29weShyZXNwb25zZUhlYWRlcnMpIH07Cit9CisKK01vZGlmeUhlYWRlcnNB
Y3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1
cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXF1ZXN0SGVhZGVycykpLCBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShyZXNwb25zZUhlYWRlcnMpKSB9OwogfQogCiBib29sIE1vZGlmeUhlYWRl
cnNBY3Rpb246Om9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiYgb3RoZXIpIGNv
bnN0CkBAIC0yMjIsMTEgKzIyNCwxNCBAQCBhdXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlm
eUhlYWRlckluZm86OnBhcnNlKGNvbnN0IEpTT046OlZhbHVlJiBpbmZvVmFsdWUpCiAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk1vZGlmeUhlYWRl
cnNJbnZhbGlkT3BlcmF0aW9uKTsKIH0KIAotYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2Rp
ZnlIZWFkZXJJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAtPiBNb2RpZnlIZWFkZXJJbmZvCith
dXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgLT4gTW9kaWZ5SGVhZGVySW5mbwogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNy
b3NzVGhyZWFkQ29weShvcGVyYXRpb24pCi0gICAgfTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVh
ZENvcHkob3BlcmF0aW9uKSB9OworfQorCithdXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlm
eUhlYWRlckluZm86Omlzb2xhdGVkQ29weSgpICYmIC0+IE1vZGlmeUhlYWRlckluZm8KK3sKKyAg
ICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvcGVyYXRpb24pKSB9OwogfQogCiBi
b29sIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Om9wZXJhdG9yPT0oY29u
c3QgTW9kaWZ5SGVhZGVySW5mbyYgb3RoZXIpIGNvbnN0CkBAIC0zMTQsMTEgKzMxOSwxNCBAQCBF
eHBlY3RlZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBSZWRpcmVjdEFjdGlvbjo6
cGFyc2UoY29uc3QgSlNPTjo6T2JqZQogICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50
RXh0ZW5zaW9uRXJyb3I6OkpTT05SZWRpcmVjdEludmFsaWRUeXBlKTsKIH0KIAotUmVkaXJlY3RB
Y3Rpb24gUmVkaXJlY3RBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0CitSZWRpcmVjdEFjdGlv
biBSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7
Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShhY3Rpb24pCi0gICAgfTsKKyAgICByZXR1cm4geyBj
cm9zc1RocmVhZENvcHkoYWN0aW9uKSB9OworfQorCitSZWRpcmVjdEFjdGlvbiBSZWRpcmVjdEFj
dGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShhY3Rpb24pKSB9OwogfQogCiBib29sIFJlZGlyZWN0QWN0aW9uOjpvcGVyYXRvcj09
KGNvbnN0IFJlZGlyZWN0QWN0aW9uJiBvdGhlcikgY29uc3QKQEAgLTQzMiwxOCArNDQwLDE2IEBA
IGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6cGFyc2UoY29uc3QgSlNP
Tjo6T2JqZWN0JiB0cmFuc2Zvcm0pIC0+CiAgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotYXV0byBS
ZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAt
PiBVUkxUcmFuc2Zvcm1BY3Rpb24KK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFj
dGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiAtPiBVUkxUcmFuc2Zvcm1BY3Rpb24KIHsKLSAg
ICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkoZnJhZ21lbnQpLAotICAgICAgICBj
cm9zc1RocmVhZENvcHkoaG9zdCksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShwYXNzd29yZCks
Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShwYXRoKSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KHBvcnQpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocXVlcnlUcmFuc2Zvcm0pLAotICAgICAg
ICBjcm9zc1RocmVhZENvcHkoc2NoZW1lKSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHVzZXJu
YW1lKQotICAgIH07CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGZyYWdtZW50KSwgY3Jv
c3NUaHJlYWRDb3B5KGhvc3QpLCBjcm9zc1RocmVhZENvcHkocGFzc3dvcmQpLCBjcm9zc1RocmVh
ZENvcHkocGF0aCksIGNyb3NzVGhyZWFkQ29weShwb3J0KSwgY3Jvc3NUaHJlYWRDb3B5KHF1ZXJ5
VHJhbnNmb3JtKSwKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjaGVtZSksIGNyb3NzVGhyZWFk
Q29weSh1c2VybmFtZSkgfTsKK30KKworYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3Jt
QWN0aW9uOjppc29sYXRlZENvcHkoKSAmJiAtPiBVUkxUcmFuc2Zvcm1BY3Rpb24KK3sKKyAgICBy
ZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShmcmFnbWVudCkpLCBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShob3N0KSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHBhc3N3b3JkKSksIGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKHBhdGgpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocG9y
dCkpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShxdWVyeVRyYW5zZm9ybSkpLCBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShzY2hlbWUpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dXNlcm5hbWUpKSB9OwogfQogCiBib29sIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rp
b246Om9wZXJhdG9yPT0oY29uc3QgVVJMVHJhbnNmb3JtQWN0aW9uJiBvdGhlcikgY29uc3QKQEAg
LTY5OSwxMiArNzA1LDE0IEBAIHZvaWQgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6UXVlcnlUcmFuc2Zvcm06OmFwcGx5VG9VUkwoVVJMJiB1cmwpIGNvCiAgICAgdXJsLnNldFF1
ZXJ5KHRyYW5zZm9ybWVkUXVlcnkpOwogfQogCi1hdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFu
c2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkoKSBjb25zdCAtPiBRdWVy
eVRyYW5zZm9ybQorYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVy
eVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiAtPiBRdWVyeVRyYW5zZm9ybQogewot
ICAgIHJldHVybiB7Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShhZGRPclJlcGxhY2VQYXJhbXMp
LAotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVtb3ZlUGFyYW1zKQotICAgIH07CisgICAgcmV0
dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGFkZE9yUmVwbGFjZVBhcmFtcyksIGNyb3NzVGhyZWFkQ29w
eShyZW1vdmVQYXJhbXMpIH07Cit9CisKK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9y
bUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpICYmIC0+IFF1ZXJ5VHJhbnNm
b3JtCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoYWRkT3JSZXBsYWNl
UGFyYW1zKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlbW92ZVBhcmFtcykpIH07CiB9CiAK
IGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06
Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mIG90aGVyKSBjb25zdApAQCAtNzc5LDE1
ICs3ODcsNiBAQCBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5
VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpwYXJzZShjbwogICAgIHJldHVybiB7IHsgV1RGTW92
ZShrZXkpLCByZXBsYWNlT25seSwgV1RGTW92ZSh2YWx1ZSkgfSB9OwogfQogCi1hdXRvIFJlZGly
ZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZh
bHVlOjppc29sYXRlZENvcHkoKSBjb25zdCAtPiBRdWVyeUtleVZhbHVlCi17Ci0gICAgcmV0dXJu
IHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGtleSksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29w
eShyZXBsYWNlT25seSksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weSh2YWx1ZSkKLSAgICB9Owot
fQotCiBib29sIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNm
b3JtOjpRdWVyeUtleVZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5S2V5VmFsdWUmIG90aGVy
KSBjb25zdAogewogICAgIHJldHVybiBvdGhlci5rZXkgPT0gdGhpcy0+a2V5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaAppbmRleCA0NmUwNTgwYzljNmU1NDBmM2I4YjEwOTYwOTBjNTdhYjFiMDNmYzA5Li5i
MGNjMGVkMWY1YzgxNDMxY2E2YjRlOWY4MTc2NTM2ZjAyZDc4MjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmgKQEAgLTUwLDggKzUwLDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFjdGlv
bldpdGhvdXRNZXRhZGF0YSB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0
aW9uV2l0aFN0cmluZ01ldGFkYXRhIHsKLSAgICBjb25zdCBTdHJpbmcgc3RyaW5nOwotICAgIFQg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyB7IHN0cmluZy5pc29sYXRlZENvcHkoKSB9
IH07IH0KKyAgICBTdHJpbmcgc3RyaW5nOworICAgIFQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7
IHJldHVybiB7IHsgc3RyaW5nLmlzb2xhdGVkQ29weSgpIH0gfTsgfQorICAgIFQgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyB7IFdURk1vdmUoc3RyaW5nKS5pc29sYXRlZENvcHkoKSB9IH07
IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuc3RyaW5nID09IHRoaXMtPnN0cmluZzsgfQogICAg
IHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKSBjb25zdCB7IHNlcmlhbGl6
ZVN0cmluZyh2ZWN0b3IsIHN0cmluZyk7IH0KICAgICBzdGF0aWMgVCBkZXNlcmlhbGl6ZShTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsgcmV0dXJuIHsgeyBkZXNlcmlhbGl6ZVN0cmluZyhzcGFu
KSB9IH07IH0KQEAgLTcxLDI3ICs3MiwzMSBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9kaWZ5
SGVhZGVyc0FjdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyOwogICAgICAgICAgICAg
U3RyaW5nIHZhbHVlOwogCi0gICAgICAgICAgICBBcHBlbmRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBj
b25zdCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENv
cHkoKSB9OyB9CisgICAgICAgICAgICBBcHBlbmRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiYg
eyByZXR1cm4geyBXVEZNb3ZlKGhlYWRlcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUodmFsdWUp
Lmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBB
cHBlbmRPcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhp
cy0+aGVhZGVyICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CiAgICAgICAgIH07CiAg
ICAgICAgIHN0cnVjdCBTZXRPcGVyYXRpb24gewogICAgICAgICAgICAgU3RyaW5nIGhlYWRlcjsK
ICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKIAotICAgICAgICAgICAgU2V0T3BlcmF0aW9uIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1
ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgU2V0T3BlcmF0aW9uIGlzb2xhdGVkQ29weSgp
ICYmIHsgcmV0dXJuIHsgV1RGTW92ZShoZWFkZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHZh
bHVlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2V0T3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuaGVhZGVyID09IHRo
aXMtPmhlYWRlciAmJiBvdGhlci52YWx1ZSA9PSB0aGlzLT52YWx1ZTsgfQogICAgICAgICB9Owog
ICAgICAgICBzdHJ1Y3QgUmVtb3ZlT3BlcmF0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFk
ZXI7CiAKLSAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICBSZW1vdmVP
cGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGhlYWRlci5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgICAgICAgICBSZW1vdmVPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkg
JiYgeyByZXR1cm4geyBXVEZNb3ZlKGhlYWRlcikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbW92ZU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlzLT5oZWFkZXI7IH0KICAgICAgICAgfTsKICAg
ICAgICAgdXNpbmcgT3BlcmF0aW9uVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxBcHBlbmRPcGVyYXRp
b24sIFNldE9wZXJhdGlvbiwgUmVtb3ZlT3BlcmF0aW9uPjsKICAgICAgICAgT3BlcmF0aW9uVmFy
aWFudCBvcGVyYXRpb247CiAKICAgICAgICAgc3RhdGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcklu
Zm8sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmKTsKLSAgICAgICAg
TW9kaWZ5SGVhZGVySW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgTW9kaWZ5SGVh
ZGVySW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBNb2RpZnlIZWFkZXJJbmZv
IGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5
SGVhZGVySW5mbyYpIGNvbnN0OwogICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhf
dD4mKSBjb25zdDsKICAgICAgICAgc3RhdGljIE1vZGlmeUhlYWRlckluZm8gZGVzZXJpYWxpemUo
U3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xMTUsNyArMTIwLDggQEAgc3RydWN0IFdFQkNPUkVf
RVhQT1JUIE1vZGlmeUhlYWRlcnNBY3Rpb24gewogICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBoYXNoVGFibGVUeXBlID09IEhhc2hUYWJsZVR5cGU6OkRlbGV0ZWQ7IH0K
IAogICAgIHN0YXRpYyBFeHBlY3RlZDxNb2RpZnlIZWFkZXJzQWN0aW9uLCBzdGQ6OmVycm9yX2Nv
ZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYpOwotICAgIE1vZGlmeUhlYWRlcnNBY3Rpb24g
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdCAmOworICAgIE1vZGlmeUhlYWRlcnNBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiY7
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mKSBjb25zdDsK
ICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAgICBzdGF0aWMg
TW9kaWZ5SGVhZGVyc0FjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAg
LTEyNywxMyArMTMzLDE1IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7
CiAgICAgc3RydWN0IEV4dGVuc2lvblBhdGhBY3Rpb24gewogICAgICAgICBTdHJpbmcgZXh0ZW5z
aW9uUGF0aDsKIAotICAgICAgICBFeHRlbnNpb25QYXRoQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIHsgZXh0ZW5zaW9uUGF0aC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAg
IEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGV4
dGVuc2lvblBhdGguaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBFeHRlbnNpb25QYXRoQWN0
aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShleHRlbnNpb25QYXRoKS5p
c29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHRlbnNp
b25QYXRoQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuZXh0ZW5zaW9uUGF0aCA9
PSB0aGlzLT5leHRlbnNpb25QYXRoOyB9CiAgICAgfTsKICAgICBzdHJ1Y3QgUmVnZXhTdWJzdGl0
dXRpb25BY3Rpb24gewogICAgICAgICBTdHJpbmcgcmVnZXhTdWJzdGl0dXRpb247CiAKLSAgICAg
ICAgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
eyByZWdleFN1YnN0aXR1dGlvbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFJlZ2V4U3Vi
c3RpdHV0aW9uQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyByZWdleFN1
YnN0aXR1dGlvbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFJlZ2V4U3Vic3RpdHV0aW9u
QWN0aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShyZWdleFN1YnN0aXR1
dGlvbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
UmVnZXhTdWJzdGl0dXRpb25BY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5yZWdl
eFN1YnN0aXR1dGlvbiA9PSB0aGlzLT5yZWdleFN1YnN0aXR1dGlvbjsgfQogICAgIH07CiAgICAg
c3RydWN0IFVSTFRyYW5zZm9ybUFjdGlvbiB7CkBAIC0xNDQsNyArMTUyLDggQEAgc3RydWN0IFdF
QkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgdmFs
dWU7CiAKICAgICAgICAgICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8UXVlcnlLZXlWYWx1ZSwgc3Rk
OjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwotICAgICAgICAgICAgICAg
IFF1ZXJ5S2V5VmFsdWUgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgICAgICAgICAgUXVl
cnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsga2V5Lmlzb2xhdGVk
Q29weSgpLCByZXBsYWNlT25seSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAg
ICAgICAgIFF1ZXJ5S2V5VmFsdWUgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3Zl
KGtleSkuaXNvbGF0ZWRDb3B5KCksIHJlcGxhY2VPbmx5LCBXVEZNb3ZlKHZhbHVlKS5pc29sYXRl
ZENvcHkoKSB9OyB9CiAgICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5
S2V5VmFsdWUmKSBjb25zdDsKICAgICAgICAgICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8
dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgICAgICAgICBzdGF0aWMgUXVlcnlLZXlWYWx1ZSBk
ZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE1NSw3ICsxNjQsOCBAQCBzdHJ1
Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICAgICAgVmVjdG9yPFN0
cmluZz4gcmVtb3ZlUGFyYW1zOwogCiAgICAgICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8UXVlcnlU
cmFuc2Zvcm0sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6T2JqZWN0Jik7Ci0g
ICAgICAgICAgICBRdWVyeVRyYW5zZm9ybSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAg
ICAgIFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgICAgICBR
dWVyeVRyYW5zZm9ybSBpc29sYXRlZENvcHkoKSAmJjsKICAgICAgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBRdWVyeVRyYW5zZm9ybSYpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCBzZXJp
YWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgICAgICBzdGF0aWMgUXVlcnlU
cmFuc2Zvcm0gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xNzQsNyArMTg0
LDggQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgU3Ry
aW5nIHVzZXJuYW1lOwogCiAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxVUkxUcmFuc2Zvcm1BY3Rp
b24sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6T2JqZWN0Jik7Ci0gICAgICAg
IFVSTFRyYW5zZm9ybUFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgVVJMVHJh
bnNmb3JtQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIFVSTFRyYW5zZm9y
bUFjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFVSTFRyYW5zZm9ybUFjdGlvbiYpIGNvbnN0OwogICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0
b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgc3RhdGljIFVSTFRyYW5zZm9ybUFjdGlvbiBk
ZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE4NCw3ICsxOTUsOCBAQCBzdHJ1
Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgIHN0cnVjdCBVUkxBY3Rpb24g
ewogICAgICAgICBTdHJpbmcgdXJsOwogCi0gICAgICAgIFVSTEFjdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiB7IHVybC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFVSTEFj
dGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgdXJsLmlzb2xhdGVkQ29weSgp
IH07IH0KKyAgICAgICAgVVJMQWN0aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFVSTEFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnVybCA9PSB0aGlzLT51
cmw7IH0KICAgICB9OwogCkBAIC0yMDMsNyArMjE1LDggQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JU
IFJlZGlyZWN0QWN0aW9uIHsKICAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gaGFzaFRhYmxlVHlwZSA9PSBIYXNoVGFibGVUeXBlOjpEZWxldGVkOyB9CiAKICAgICBzdGF0
aWMgRXhwZWN0ZWQ8UmVkaXJlY3RBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3Qg
SlNPTjo6T2JqZWN0Jik7Ci0gICAgUmVkaXJlY3RBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CisgICAgUmVkaXJlY3RBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBSZWRpcmVj
dEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVk
aXJlY3RBY3Rpb24mKSBjb25zdDsKICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4m
KSBjb25zdDsKICAgICBzdGF0aWMgUmVkaXJlY3RBY3Rpb24gZGVzZXJpYWxpemUoU3Bhbjxjb25z
dCB1aW50OF90Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAppbmRleCBkNzEyNjk3N2Y2MTBk
ZmIxMWU0NGJlZTcyNDhmN2MzYjhjMDQ5MDMzLi4wMzVlMjg2N2Q0NzI1ZDY4YjBkZjk4Nzg2N2Qz
N2NiMDExNTUzODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKQEAgLTI3MSw3ICsyNzEs
NyBAQCBzdGF0aWMgYm9vbCBjb21waWxlVG9CeXRlY29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBm
aWx0ZXJzLCBVbml2ZXJzYWxBY3Rpb25TZXQmJgogc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxl
TGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW5nJiYg
cnVsZUpTT04sIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mJiBwYXJzZWRSdWxlTGlzdCkK
IHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVKU09OID0g
cnVsZUpTT04uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gcGFyc2VkUnVsZUxpc3Qu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtydWxlSlNPTiA9IFdURk1v
dmUocnVsZUpTT04pLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlTGlzdCA9IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKHBhcnNlZFJ1bGVMaXN0KSldIHsKICAgICAgICAgQVNTRVJUKHBhcnNlUnVs
ZUxpc3QocnVsZUpTT04pLnZhbHVlKCkgPT0gcGFyc2VkUnVsZUxpc3QpOwogICAgIH0pOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IGIzMzM5ZmY2NDc0YzU3YWZlNGQxM2NiZjAz
NGQ0YjU4MmY0NDhiMDQuLjg4MjQwMmM3Yjg1M2MxZTViYzU3ZmU2YWU3ZDUzN2IwOTZjZmY1YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIEV4cGVj
dGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoY29uc3QgSlNPTjo6T2Jq
ZWN0JiBydWxlT2IKICAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29uZGl0aW9uKCJpZi1mcmFt
ZS11cmwiX3MsIGdldFN0cmluZ0xpc3QsIEFjdGlvbkNvbmRpdGlvbjo6SWZGcmFtZVVSTCkpCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7CiAKKyAgICB0cmlnZ2VyLmNoZWNr
VmFsaWRpdHkoKTsKICAgICByZXR1cm4gdHJpZ2dlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCmlu
ZGV4IDNiNGZhMzM5MDEzMDA3ZjM1NDI3ODhhMjQ1OTUyODUxNzBiMzUzMjMuLjYyZTRjZThkODQ3
YjY2NDQwMDBhNjRiNDhiMjQ2YTM3YjJmYjg3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKQEAgLTk1
LDIzICs5NSwyNiBAQCBzaXplX3QgRGVzZXJpYWxpemVkQWN0aW9uOjpzZXJpYWxpemVkTGVuZ3Ro
KFNwYW48Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFjdGlvbgogICAgIHJldHVybiAxICsgVmFy
aWFudERlc2VyaWFsaXplcjxBY3Rpb25EYXRhPjo6c2VyaWFsaXplZExlbmd0aChzZXJpYWxpemVk
QWN0aW9ucy5zdWJzcGFuKGxvY2F0aW9uICsgMSksIHNlcmlhbGl6ZWRBY3Rpb25zW2xvY2F0aW9u
XSk7CiB9CiAKLVRyaWdnZXIgVHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1RyaWdnZXIg
VHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7Ci0gICAgICAg
IHVybEZpbHRlci5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgdXJsRmlsdGVySXNDYXNlU2Vuc2l0
aXZlLAotICAgICAgICB0b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCi0gICAgICAgIGZyYW1l
VVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLAotICAgICAgICBmbGFncywKLSAgICAgICAgY29uZGl0
aW9ucy5pc29sYXRlZENvcHkoKQotICAgIH07CisgICAgcmV0dXJuIHsgdXJsRmlsdGVyLmlzb2xh
dGVkQ29weSgpLCB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIHRvcFVSTEZpbHRlcklzQ2FzZVNl
bnNpdGl2ZSwgZnJhbWVVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIGZsYWdzLCBjcm9zc1RocmVh
ZENvcHkoY29uZGl0aW9ucykgfTsKIH0KIAotQWN0aW9uIEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK1RyaWdnZXIgVHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4g
eyBXVEZNb3ZlKHVybEZpbHRlcikuaXNvbGF0ZWRDb3B5KCksIHVybEZpbHRlcklzQ2FzZVNlbnNp
dGl2ZSwgdG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmcmFtZVVSTEZpbHRlcklzQ2FzZVNl
bnNpdGl2ZSwgZmxhZ3MsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvbmRpdGlvbnMpKSB9Owor
fQorCitBY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJu
IHsgY3Jvc3NUaHJlYWRDb3B5KG1fZGF0YSkgfTsKIH0KIAorQWN0aW9uIEFjdGlvbjo6aXNvbGF0
ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2Rh
dGEpKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwog
CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCmluZGV4
IDdlMzhkMGEyZjU0MzRlNWM5YWY0M2Q1MmZhMTkwMWQ0N2M4OTI3ZTMuLjc4N2RiZDcwNTQ0M2Fi
NTAyMjU0YzAyZWVhOGRjODcxNTZkYWNhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaApAQCAtNDcsOSArNDcs
MTAgQEAgc3RydWN0IFRyaWdnZXIgewogICAgIFJlc291cmNlRmxhZ3MgZmxhZ3MgeyAwIH07CiAg
ICAgVmVjdG9yPFN0cmluZz4gY29uZGl0aW9uczsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFRyaWdn
ZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIFRyaWdnZXIgaXNvbGF0ZWRD
b3B5KCkgJiY7CiAgICAgCi0gICAgflRyaWdnZXIoKQorICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgp
CiAgICAgewogICAgICAgICBhdXRvIGFjdGlvbkNvbmRpdGlvbiA9IHN0YXRpY19jYXN0PEFjdGlv
bkNvbmRpdGlvbj4oZmxhZ3MgJiBBY3Rpb25Db25kaXRpb25NYXNrKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChhY3Rpb25Db25kaXRpb24sIGNvbmRpdGlvbnMuaXNFbXB0eSgpID09IChhY3Rpb25D
b25kaXRpb24gPT0gQWN0aW9uQ29uZGl0aW9uOjpOb25lKSk7CkBAIC0xMzEsMTAgKzEzMiwxMSBA
QCBzdHJ1Y3QgQWN0aW9uIHsKIAogICAgIGNvbnN0IEFjdGlvbkRhdGEmIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKIHBy
aXZhdGU6Ci0gICAgY29uc3QgQWN0aW9uRGF0YSBtX2RhdGE7CisgICAgQWN0aW9uRGF0YSBtX2Rh
dGE7CiB9OwogCiBzdHJ1Y3QgRGVzZXJpYWxpemVkQWN0aW9uIDogcHVibGljIEFjdGlvbiB7CkBA
IC0xNTgsMTggKzE2MCwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgVHJpZ2dlciYgdHJpZ2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcjsgfQogICAgIGNvbnN0IEFjdGlvbiYgYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KIAotICAgIENvbnRlbnRFeHRlbnNpb25SdWxlIGlz
b2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4geyBtX3RyaWdnZXIuaXNv
bGF0ZWRDb3B5KCksIG1fYWN0aW9uLmlzb2xhdGVkQ29weSgpIH07Ci0gICAgfQorICAgIENvbnRl
bnRFeHRlbnNpb25SdWxlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBtX3RyaWdn
ZXIuaXNvbGF0ZWRDb3B5KCksIG1fYWN0aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDb250
ZW50RXh0ZW5zaW9uUnVsZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUobV90
cmlnZ2VyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShtX2FjdGlvbikuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYgb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV90cmlnZ2VyID09IG90aGVyLm1fdHJp
Z2dlciAmJiBtX2FjdGlvbiA9PSBvdGhlci5tX2FjdGlvbjsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgY29uc3QgVHJpZ2dlciBtX3RyaWdnZXI7Ci0gICAgY29uc3QgQWN0aW9uIG1fYWN0aW9uOwor
ICAgIFRyaWdnZXIgbV90cmlnZ2VyOworICAgIEFjdGlvbiBtX2FjdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgK
aW5kZXggZTFlN2FkYjk4NmNhYWQ2NzIxNTliMWUzYzI4MGE4OWQ3YWMxNzkwZi4uMjFmM2MxZmIz
MDc2MjZjZjViNmM1NDY3ZWY0MmE3MGE0YzM3YmMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaApA
QCAtMzksMjcgKzM5LDE4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBj
b25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICBTdHJpbmcmJiByZWxlYXNlTWVzc2FnZSgp
IHsgcmV0dXJuIFdURk1vdmUobV9tZXNzYWdlKTsgfQogCi0gICAgRXhjZXB0aW9uIGlzb2xhdGVk
Q29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgbV9jb2RlLCBt
X21lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsKLSAgICB9CisgICAgRXhjZXB0aW9uIGlzb2xhdGVk
Q29weSgpIGNvbnN0ICYgeyByZXR1cm4gRXhjZXB0aW9uIHsgbV9jb2RlLCBtX21lc3NhZ2UuaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgIEV4Y2VwdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVy
biBFeGNlcHRpb24geyBtX2NvZGUsIFdURk1vdmUobV9tZXNzYWdlKS5pc29sYXRlZENvcHkoKSB9
OyB9CiAKIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uQ29kZSBtX2NvZGU7CiAgICAgU3RyaW5nIG1f
bWVzc2FnZTsKIH07CiAKLUV4Y2VwdGlvbiBpc29sYXRlZENvcHkoRXhjZXB0aW9uJiYpOwotCiBp
bmxpbmUgRXhjZXB0aW9uOjpFeGNlcHRpb24oRXhjZXB0aW9uQ29kZSBjb2RlLCBTdHJpbmcgbWVz
c2FnZSkKICAgICA6IG1fY29kZSB7IGNvZGUgfQogICAgICwgbV9tZXNzYWdlIHsgV1RGTW92ZSht
ZXNzYWdlKSB9CiB7CiB9CiAKLWlubGluZSBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlv
biYmIHZhbHVlKQotewotICAgIHJldHVybiBFeGNlcHRpb24geyB2YWx1ZS5jb2RlKCksIHZhbHVl
LnJlbGVhc2VNZXNzYWdlKCkuaXNvbGF0ZWRDb3B5KCkgfTsKLX0KLQotfQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMmYxNmMzMjU4NWU0YTgxZDZhODU3MjQyMWJhYmFjNzhiNDI0OWY5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9u
RGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUV4Y2VwdGlvbkRhdGEgRXhjZXB0aW9u
RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBFeGNlcHRpb25EYXRhIHJlc3VsdDsK
LSAgICByZXN1bHQuY29kZSA9IGNvZGU7Ci0gICAgcmVzdWx0Lm1lc3NhZ2UgPSBtZXNzYWdlLmlz
b2xhdGVkQ29weSgpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRhLmgKaW5kZXggZmM3OThiMzY0ZDNhNzhm
NzFhM2MwOTlhZDllZGZlYjIxYzA0NDZhZC4uOTg1MzM3NmYxYzRkZGNmZDFhNTFhZDRhZWFjOWQw
NjRlZTk5ZjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oCkBAIC0zNCw3ICszNCw4
IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhIHsKICAgICBFeGNlcHRpb25Db2RlIGNvZGU7CiAgICAg
U3RyaW5nIG1lc3NhZ2U7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25EYXRhIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIEV4Y2VwdGlvbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiB7IHJldHVybiB7IGNvZGUsIG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIEV4Y2Vw
dGlvbkRhdGEgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBjb2RlLCBXVEZNb3ZlKG1lc3Nh
Z2UpLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uT3IuaAppbmRleCBiYmZkOTY2ODUwMTYzMWY1MTIyYjk0MGQ5YjAwMDQy
MmU5OWVkMDVjLi4xYTE5YjBlZTlhMmE0NTJiZjU3NzQwYTJhYmZkYmRkYmMyMzM4YWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtOTAsOCArOTAsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi1FeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4m
Jik7Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBFeGNlcHRpb25PcjxS
ZXR1cm5UeXBlPjo6RXhjZXB0aW9uT3IoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAgIDogbV92
YWx1ZShtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGV4Y2VwdGlvbikpKQogewpAQCAtMTkzLDEzICsx
OTEsNiBAQCBpbmxpbmUgRXhjZXB0aW9uIEV4Y2VwdGlvbk9yPHZvaWQ+OjpyZWxlYXNlRXhjZXB0
aW9uKCkKICAgICByZXR1cm4gV1RGTW92ZShtX3ZhbHVlLmVycm9yKCkpOwogfQogCi1pbmxpbmUg
RXhjZXB0aW9uT3I8dm9pZD4gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbk9yPHZvaWQ+JiYgdmFsdWUp
Ci17Ci0gICAgaWYgKHZhbHVlLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gaXNvbGF0
ZWRDb3B5KHZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBJc0V4Y2VwdGlvbk9y
ID0gV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxUPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNFeGNlcHRpb25PciA9IElzRXhjZXB0aW9u
T3I8VD4+IHN0cnVjdCBUeXBlT3JFeGNlcHRpb25PclVuZGVybHlpbmdUeXBlSW1wbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCA5
ODVmN2E2MmYwYzFmMzk3NTU4MmViM2Y5Yjk4OTc1MTU2MTU2Njc3Li5lNWFhMjRlYTFmOWQyYTc4
NmQ3YmU2ZGMzZDQxNDFkOWZkMTkzYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
aXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00NCwxMCArNDQsOCBAQCBzdHJ1Y3QgRmls
ZUluZm9ybWF0aW9uIHsKICAgICBTdHJpbmcgcmVsYXRpdmVQYXRoOwogICAgIFN0cmluZyBkaXNw
bGF5TmFtZTsKIAotICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIEZpbGVJbmZvcm1hdGlvbiB7IHBhdGguaXNvbGF0ZWRDb3B5KCks
IHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkg
fTsKLSAgICB9CisgICAgRmlsZUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyBwYXRoLmlzb2xhdGVkQ29weSgpLCByZWxhdGl2ZVBhdGguaXNvbGF0ZWRDb3B5KCks
IGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBGaWxlSW5mb3JtYXRpb24gaXNv
bGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHBhdGgpLmlzb2xhdGVkQ29weSgpLCBy
ZWxhdGl2ZVBhdGguaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoZGlzcGxheU5hbWUpLmlzb2xhdGVk
Q29weSgpIH07IH0KIH07CiAKIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgVmVjdG9yPEZp
bGVJbmZvcm1hdGlvbj4mIGZpbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
aW5kZXggZWE3ZGZhY2Y2MmI3ODI1NTlkNjVlM2JmYjZiM2QwY2NkZmUyNTIxYy4uYTI5MDZkN2Nl
N2E2NWUxYWM0Y2VhZjhlNjQyNmUxZDAxMzQ2OWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCkBAIC00OTUsMTMgKzQ5NSwxMyBAQCBib29sIEZpbGVJbnB1dFR5cGU6OnJl
Y2VpdmVEcm9wcGVkRmlsZXNXaXRoSW1hZ2VUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8U3RyaW5n
PgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5maWxlc0Nob3NlbihwYXRocywgcmVwbGFjZW1lbnRQ
YXRocyk7CiAgICAgfTsKIAotICAgIHNoYXJlZEltYWdlVHJhbnNjb2RpbmdRdWV1ZSgpLmRpc3Bh
dGNoKFtjYWxsRmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3NlbiksIHRyYW5zY29k
aW5nUGF0aHMgPSB0cmFuc2NvZGluZ1BhdGhzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VU
SSA9IHRyYW5zY29kaW5nVVRJLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9
IHRyYW5zY29kaW5nRXh0ZW5zaW9uLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHNo
YXJlZEltYWdlVHJhbnNjb2RpbmdRdWV1ZSgpLmRpc3BhdGNoKFtjYWxsRmlsZXNDaG9zZW4gPSBX
VEZNb3ZlKGNhbGxGaWxlc0Nob3NlbiksIHRyYW5zY29kaW5nUGF0aHMgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZSh0cmFuc2NvZGluZ1BhdGhzKSksIHRyYW5zY29kaW5nVVRJID0gV1RGTW92ZSh0
cmFuc2NvZGluZ1VUSSkuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gV1RG
TW92ZSh0cmFuc2NvZGluZ0V4dGVuc2lvbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgICAgIGF1dG8gcmVwbGFj
ZW1lbnRQYXRocyA9IHRyYW5zY29kZUltYWdlcyh0cmFuc2NvZGluZ1BhdGhzLCB0cmFuc2NvZGlu
Z1VUSSwgdHJhbnNjb2RpbmdFeHRlbnNpb24pOwogICAgICAgICBBU1NFUlQodHJhbnNjb2RpbmdQ
YXRocy5zaXplKCkgPT0gcmVwbGFjZW1lbnRQYXRocy5zaXplKCkpOwogCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbEZpbGVzQ2hvc2VuID0gV1RGTW92ZShjYWxsRmlsZXND
aG9zZW4pLCByZXBsYWNlbWVudFBhdGhzID0gcmVwbGFjZW1lbnRQYXRocy5pc29sYXRlZENvcHko
KV0oKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbEZpbGVzQ2hvc2Vu
ID0gV1RGTW92ZShjYWxsRmlsZXNDaG9zZW4pLCByZXBsYWNlbWVudFBhdGhzID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUocmVwbGFjZW1lbnRQYXRocykpXSB7CiAgICAgICAgICAgICBjYWxsRmls
ZXNDaG9zZW4ocmVwbGFjZW1lbnRQYXRocyk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXgg
ZmE5OWE2MGQ2YTI3OGRkOWQ4MmZmYmU5ZWUyOGE3NzEzNmQzMjAxNS4uMjg5NjI4YWVhODk1YmIy
OGNkMDYzMjY1YjVlNDViNjUzYTUwNThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBU
b2tlblByZWxvYWRTY2FubmVyOjp1cGRhdGVQcmVkaWN0ZWRCYXNlVVJMKGNvbnN0IEhUTUxUb2tl
biYgdG9rZW4sIGJvb2wgc2gKICAgICAgICAgcmV0dXJuOwogICAgIFVSTCB0ZW1wIHsgbV9kb2N1
bWVudFVSTCwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKFN0cmluZ0ltcGw6OmNy
ZWF0ZThCaXRJZlBvc3NpYmxlKGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkgfTsKICAgICBpZiAoIXNo
b3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXMgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQmFzZVVSTFNj
aGVtZUFsbG93ZWQodGVtcCkpCi0gICAgICAgIG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSB0
ZW1wLmlzb2xhdGVkQ29weSgpOworICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMID0g
V1RGTW92ZSh0ZW1wKS5pc29sYXRlZENvcHkoKTsKIH0KIAogSFRNTFByZWxvYWRTY2FubmVyOjpI
VE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKaW5kZXggY2VlNTc2
YjgzZTQ4ZDJmZTdhNDNjNDA3NzdkZDljMDE0YTI1YTE4ZC4uNzRiZDEyOWYxYzgxMjBkMzZjYWM2
MWUyNzhmMGE4ZGJjNjA1ZWU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCkBAIC0xNjEsMTQgKzE2MSwxNCBAQCBDcm9zc09yaWdp
bk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdpbk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAKLUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Ojppc29sYXRlZENvcHkoKSBjb25zdAorQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gewotICAgICAgICB2YWx1ZSwKLSAgICAgICAgcmVw
b3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIHJlcG9ydE9ubHlWYWx1ZSwK
LSAgICAgICAgcmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50Lmlzb2xhdGVkQ29weSgpCi0gICAg
fTsKKyAgICByZXR1cm4geyB2YWx1ZSwgcmVwb3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCks
IHJlcG9ydE9ubHlWYWx1ZSwgcmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50Lmlzb2xhdGVkQ29w
eSgpIH07Cit9CisKK0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5IENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IHZhbHVlLCBXVEZNb3ZlKHJl
cG9ydGluZ0VuZHBvaW50KS5pc29sYXRlZENvcHkoKSwgcmVwb3J0T25seVZhbHVlLCBXVEZNb3Zl
KHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludCkuaXNvbGF0ZWRDb3B5KCkgfTsKIH0KIAogdm9p
ZCBhZGRDcm9zc09yaWdpbk9wZW5lclBvbGljeUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjb29wKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaAppbmRleCA1MjIxMDY5ODY0
OGUwODNmYTBkOWYyOWNlZmYwNzMxZjllZTQ5OGNkLi4yMGVjNTNiOGVjN2VlYmY0ZDJhNjlhYWM1
ODAzNTYyZjcwODU4NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kuaApAQCAtNjAsNyArNjAsOCBAQCBzdHJ1Y3QgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kgewogICAgIGNvbnN0IFN0cmluZyYgcmVwb3J0aW5nRW5kcG9pbnRGb3JEaXNwb3Np
dGlvbihDT09QRGlzcG9zaXRpb24pIGNvbnN0OwogICAgIGJvb2wgaGFzUmVwb3J0aW5nRW5kcG9p
bnQoQ09PUERpc3Bvc2l0aW9uKSBjb25zdDsKIAotICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGlzb2xh
dGVkQ29weSgpIGNvbnN0ICY7CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRD
b3B5KCkgJiY7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDIwZGRlZmRlNDI4MWJlYWM2
YmU5NzNmMTg1MzRkZWY4YTU1OWQxYjkuLmYxOGRiODY5NWIzOTdjMWIyYTNiZDMwMzExMWRlYjll
NTVlNDk0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
MjQ0MSw3ICsyNDQxLDcgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGEKIHsKICAgICB1bmJsb2Nr
SGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7Ci0gICAgICAgIHVu
YmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0g
V2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgeworICAgICAgICB1bmJs
b2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdl
YWtQdHIgeyBmcmFtZSgpLT5zY3JpcHQoKSB9LCBzY3JpcHQgPSBXVEZNb3ZlKHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KS5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAg
ICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCiAgICAgICAgICAgICAg
ICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlw
dCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNo
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCmluZGV4IDg4
YzAzNmQyNjQ1MWNmMTc0ZmJmZjhjMDAwZTIwNWMxZGZmN2RmNjYuLjVhY2UwMTViZDVlZjcyOTNi
NjBlYTFlNmE2ZGUxZThjZjgxZTg5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GZXRjaE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25z
LmgKQEAgLTQ1LDcgKzQ1LDggQEAgc3RydWN0IEZldGNoT3B0aW9ucyB7CiAKICAgICBGZXRjaE9w
dGlvbnMoKSA9IGRlZmF1bHQ7CiAgICAgRmV0Y2hPcHRpb25zKERlc3RpbmF0aW9uLCBNb2RlLCBD
cmVkZW50aWFscywgQ2FjaGUsIFJlZGlyZWN0LCBSZWZlcnJlclBvbGljeSwgU3RyaW5nJiYsIGJv
b2wpOwotICAgIEZldGNoT3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRl
c3RpbmF0aW9uLCBtb2RlLCBjcmVkZW50aWFscywgY2FjaGUsIHJlZGlyZWN0LCByZWZlcnJlclBv
bGljeSwgaW50ZWdyaXR5Lmlzb2xhdGVkQ29weSgpLCBrZWVwQWxpdmUgfTsgfQorICAgIEZldGNo
T3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgZGVzdGluYXRpb24sIG1v
ZGUsIGNyZWRlbnRpYWxzLCBjYWNoZSwgcmVkaXJlY3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3Jp
dHkuaXNvbGF0ZWRDb3B5KCksIGtlZXBBbGl2ZSB9OyB9CisgICAgRmV0Y2hPcHRpb25zIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxzLCBj
YWNoZSwgcmVkaXJlY3QsIHJlZmVycmVyUG9saWN5LCBXVEZNb3ZlKGludGVncml0eSkuaXNvbGF0
ZWRDb3B5KCksIGtlZXBBbGl2ZSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZVBlcnNpc3RlbnQoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQZXJzaXN0ZW50
KERlY29kZXImLCBGZXRjaE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDb250
YWluZXIuaAppbmRleCA0MzFjZjFjNWIyYmQxZjkwM2QxNmJlYWY3NzEyMGQ3MWE2MTA1OWNkLi44
YzBhZDBmOTA3Mzc1OTYwNmViOGM2OTQ2MjMyNzY2ZWVmODUzMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCkBAIC0zNiw3ICszNiw4IEBAIHN0cnVjdCBQb2xpY3lD
b250YWluZXIgewogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OwogICAgIC8vIEZJWE1FOiBDU1AgbGlzdCBhbmQgcmVmZXJyZXIgcG9saWN5IHNob3Vs
ZCBiZSBwYXJ0IG9mIHRoZSBQb2xpY3lDb250YWluZXIuCiAKLSAgICBQb2xpY3lDb250YWluZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgUG9saWN5Q29udGFpbmVyIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29w
eSgpLCBjcm9zc09yaWdpbk9wZW5lclBvbGljeS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgUG9s
aWN5Q29udGFpbmVyIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShjcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5KS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShjcm9zc09yaWdpbk9w
ZW5lclBvbGljeSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQb2xpY3lDb250YWluZXI+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwpAQCAtNDYsMTQgKzQ3LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
b2xpY3lDb250YWluZXImIGEsIGNvbnN0IFBvbGljeUNvbnRhaW5lciYgYikKICAgICByZXR1cm4g
YS5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5ID09IGIuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
eSAmJiBhLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5ID09IGIuY3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3k7CiB9CiAKLWlubGluZSBQb2xpY3lDb250YWluZXIgUG9saWN5Q29udGFpbmVyOjppc29sYXRl
ZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7Ci0gICAgICAgIGNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
Lmlzb2xhdGVkQ29weSgpCi0gICAgfTsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgUG9saWN5Q29udGFpbmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmlu
ZGV4IDA1NzhmNjNiZWJlYjFhODdmNDBhZjQ3Yjk0MzJiNjJlNWJkYzRjMjIuLmIzYTlmODBhZjYw
MjgzYjkyNGQ0NzU5ODZlMGY0ZWZhNmNkMDE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcApAQCAtNjAsNTMgKzYwLDI3IEBAIGJv
b2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICAmJiAo
bV90aW1lc1RvU2VuZC5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgfHwgbV90aW1lc1RvU2VuZC5k
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCk7CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46Omlz
b2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRv
a2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4gewotICAgICAgICB0b2tlbkJhc2U2NFVSTC5pc29s
YXRlZENvcHkoKSwKLSAgICAgICAgc2lnbmF0dXJlQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAot
ICAgICAgICBrZXlJREJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSwKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAgICAgYmxpbmRlciwgd2FpdGluZ1Rva2VuLCByZWFkeVRva2VuLAorI2VuZGlmCisg
ICAgICAgIHZhbHVlQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpCiAgICAgfTsKIH0KIAotUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1l
cmFsTm9uY2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgbm9uY2UuaXNv
bGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVU
b2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENv
cHkoKSBjb25zdAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSAmJgog
ewogICAgIHJldHVybiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGJsaW5kZXIsCi0g
ICAgICAgIHdhaXRpbmdUb2tlbiwKLSAgICAgICAgcmVhZHlUb2tlbiwKKyAgICAgICAgYmxpbmRl
ciwgd2FpdGluZ1Rva2VuLCByZWFkeVRva2VuLAogI2VuZGlmCi0gICAgICAgIHZhbHVlQmFzZTY0
VVJMLmlzb2xhdGVkQ29weSgpCisgICAgICAgIFdURk1vdmUodmFsdWVCYXNlNjRVUkwpLmlzb2xh
dGVkQ29weSgpCiAgICAgfTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVu
bGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRv
a2VuOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFVubGlua2FibGVUb2tl
bjo6aXNvbGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBV
bmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlja01lYXN1
cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAorUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYKIHsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjb3B5IHsKICAgICAg
ICAgbV9zb3VyY2VJRCwKQEAgLTEyNCw2ICs5OCwyNCBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXR1
cm4gY29weTsKIH0KIAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
Y29weSB7CisgICAgICAgIG1fc291cmNlSUQsCisgICAgICAgIFdURk1vdmUobV9zb3VyY2VTaXRl
KS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShtX2Rlc3RpbmF0aW9uU2l0ZSkuaXNv
bGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlE
KS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShtX3RpbWVPZkFkQ2xpY2spLmlzb2xh
dGVkQ29weSgpLAorICAgICAgICBtX2lzRXBoZW1lcmFsLAorICAgIH07CisgICAgY29weS5tX2F0
dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YSk7
CisgICAgY29weS5tX3RpbWVzVG9TZW5kID0gV1RGTW92ZShtX3RpbWVzVG9TZW5kKTsKKyAgICBj
b3B5Lm1fZXBoZW1lcmFsU291cmNlTm9uY2UgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2Vw
aGVtZXJhbFNvdXJjZU5vbmNlKSk7CisgICAgY29weS5tX3NvdXJjZVVubGlua2FibGVUb2tlbiA9
IFdURk1vdmUobV9zb3VyY2VVbmxpbmthYmxlVG9rZW4pLmlzb2xhdGVkQ29weSgpOworICAgIGNv
cHkubV9zb3VyY2VTZWNyZXRUb2tlbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fc291cmNl
U2VjcmV0VG9rZW4pKTsKKyAgICByZXR1cm4gY29weTsKK30KKwogYm9vbCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6aXNOZWl0aGVyU2FtZVNpdGVOb3JDcm9zc1NpdGVUcmlnZ2VyaW5nRXZlbnQo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0
UGFydHlVUkwsIGNvbnN0IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEpCiB7CiAgICAgYXV0byBpc1NhbWVTaXRlVHJpZ2dlcmluZ0V2ZW50ID0gcmVkaXJlY3RE
b21haW4ubWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNv
dXJjZVJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaAppbmRleCAwMWY4NzM0OGFiNmEyMWEwMmU2MDM2YjI1OGU4OTI3
MjYwZTNlNzE4Li4xZTc4MWE5ZGVkYTkwNmFmMzFlZDBiMjA5YjU1OWE0YzFkNGEyNTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAt
NzcsNyArNzcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNv
dXJjZVNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU291cmNlU2l0ZSB7IHJlZ2lz
dHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgU291cmNlU2l0ZSBpc29s
YXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIFNvdXJjZVNpdGUgeyByZWdpc3RyYWJsZURvbWFp
bi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVNpdGUgaXNvbGF0ZWRDb3B5KCkg
JiYgeyByZXR1cm4gU291cmNlU2l0ZSB7IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLmlzb2xh
dGVkQ29weSgpIH07IH0KIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlU2l0
ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTEyMyw3ICsxMjQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRl
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRl
IHsgcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBBdHRyaWJ1
dGlvbkRlc3RpbmF0aW9uU2l0ZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIEF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlIHsgcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkg
fTsgfQorICAgICAgICBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIG90aGVyKSBjb25zdAogICAgICAgICB7
CkBAIC0xNzEsNyArMTczLDggQEAgcHVibGljOgogICAgIHN0cnVjdCBFcGhlbWVyYWxOb25jZSB7
CiAgICAgICAgIFN0cmluZyBub25jZTsKIAotICAgICAgICBFcGhlbWVyYWxOb25jZSBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICAgICAgRXBoZW1lcmFsTm9uY2UgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJiB7IHJldHVybiB7IG5vbmNlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRXBoZW1l
cmFsTm9uY2UgaXNvbGF0ZWRDb3B5KCkgJiYgIHsgcmV0dXJuIHsgV1RGTW92ZShub25jZSkuaXNv
bGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxpZCgp
IGNvbnN0OwogCkBAIC0xODcsMzEgKzE5MCwzNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAg
U3RyaW5nIHZhbHVlQmFzZTY0VVJMOwogICAgICAgICAKLSAgICAgICAgVW5saW5rYWJsZVRva2Vu
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJjsKKyAgICAgICAgVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpICYm
OwogICAgIH07CiAKICAgICBzdHJ1Y3QgU291cmNlVW5saW5rYWJsZVRva2VuIDogVW5saW5rYWJs
ZVRva2VuIHsKLSAgICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgICAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAg
ICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBVbmxp
bmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KICAgICB9OwogCiAgICAgc3RydWN0IERl
c3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIDogVW5saW5rYWJsZVRva2VuIHsKLSAgICAgICAgRGVz
dGluYXRpb25VbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIERl
c3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRGVzdGluYXRp
b25VbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KICAgICB9OwogCiAgICAgc3RydWN0IFNlY3JldFRv
a2VuIHsKICAgICAgICAgU3RyaW5nIHRva2VuQmFzZTY0VVJMOwogICAgICAgICBTdHJpbmcgc2ln
bmF0dXJlQmFzZTY0VVJMOwogICAgICAgICBTdHJpbmcga2V5SURCYXNlNjRVUkw7Ci0gICAgICAg
IFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBTZWNyZXRUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRD
b3B5KCksIHNpZ25hdHVyZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSwga2V5SURCYXNlNjRVUkwu
aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IFdURk1vdmUodG9rZW5CYXNlNjRVUkwpLmlzb2xhdGVkQ29weSgpLCBXVEZN
b3ZlKHNpZ25hdHVyZUJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoa2V5SURCYXNl
NjRVUkwpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBTb3VyY2VTZWNyZXRUb2tlbiA6IFNlY3JldFRva2VuIHsK
LSAgICAgICAgU291cmNlU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAg
IFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBTZWNy
ZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBp
c29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9
OyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBEZXN0aW5hdGlvblNlY3JldFRva2VuIDogU2VjcmV0
VG9rZW4gewotICAgICAgICBXRUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvblNlY3JldFRva2VuIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBEZXN0aW5hdGlvblNlY3JldFRva2VuIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkg
fTsgfQorICAgICAgICBEZXN0aW5hdGlvblNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsg
cmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KICAgICB9OwogCiAgICAg
c3RydWN0IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgewpAQCAtNDI5LDcgKzQzOCw4IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpc29sYXRlZENvcHkoKSBjb25z
dCAmOworICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGlzb2xhdGVk
Q29weSgpICYmOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBFeHBlY3RlZDxBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhLCBTdHJpbmc+IHBhcnNlQXR0cmlidXRpb25SZXF1ZXN0UXVlcnkoY29uc3QgVVJM
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcAppbmRleCA2YWVlOWVi
YmE0MjdjMjY3NmQ0NGViMGRlMWZjMDRkMTQ4M2NiMDY1Li5mYTZjOTZkZTQ1OGUwMGUwOGJhNWI0
OTAxZWNhYTkyMzA4NWQxOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWlu
Zy5jcHAKQEAgLTY4LDE1ICs2OCwyNiBAQCBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGlt
aW5nPj4gUmVzb3VyY2VUaW1pbmc6OnBvcHVsYXRlU2VydmVyVGltaW5nKCkgY29ucwogICAgIH0p
OwogfQogCi1SZXNvdXJjZVRpbWluZyBSZXNvdXJjZVRpbWluZzo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKK1Jlc291cmNlVGltaW5nIFJlc291cmNlVGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdCAm
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlVGltaW5nKAorICAgIHJldHVybiBSZXNvdXJjZVRpbWlu
ZyB7CiAgICAgICAgIG1fdXJsLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBtX2luaXRpYXRvci5p
c29sYXRlZENvcHkoKSwKICAgICAgICAgbV9yZXNvdXJjZUxvYWRUaW1pbmcuaXNvbGF0ZWRDb3B5
KCksCiAgICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLAogICAgICAg
ICBjcm9zc1RocmVhZENvcHkobV9zZXJ2ZXJUaW1pbmcpCi0gICAgKTsKKyAgICB9OworfQorCitS
ZXNvdXJjZVRpbWluZyBSZXNvdXJjZVRpbWluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBy
ZXR1cm4gUmVzb3VyY2VUaW1pbmcgeworICAgICAgICBXVEZNb3ZlKG1fdXJsKS5pc29sYXRlZENv
cHkoKSwKKyAgICAgICAgV1RGTW92ZShtX2luaXRpYXRvcikuaXNvbGF0ZWRDb3B5KCksCisgICAg
ICAgIFdURk1vdmUobV9yZXNvdXJjZUxvYWRUaW1pbmcpLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICBXVEZNb3ZlKG1fbmV0d29ya0xvYWRNZXRyaWNzKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAg
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zZXJ2ZXJUaW1pbmcpKQorICAgIH07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgK
aW5kZXggOTA1ZmM2NjkwYjFhNzdjMGY3MDliNzAzY2E0OWNmMDhjZDc4YTE5Yy4uODEwOTYyZmM0
ZGE2YTI3NGI5YmY0N2IzY2I2YjFlNmZmODU2NzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlVGltaW5nLmgKQEAgLTUxLDcgKzUxLDggQEAgcHVibGljOgogICAgIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3
b3JrTG9hZE1ldHJpY3M7IH0KICAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9CiAgICAgVmVjdG9yPFJlZjxQ
ZXJmb3JtYW5jZVNlcnZlclRpbWluZz4+IHBvcHVsYXRlU2VydmVyVGltaW5nKCkgY29uc3Q7Ci0g
ICAgUmVzb3VyY2VUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgUmVzb3VyY2VUaW1p
bmcgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRlZENv
cHkoKSAmJjsKIAogICAgIHZvaWQgb3ZlcnJpZGVJbml0aWF0b3JOYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSkgeyBtX2luaXRpYXRvciA9IG5hbWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1NlcnZlclRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVy
VGltaW5nLmNwcAppbmRleCBjZTE3NjcwZDQ3OWFhODE5MDM4MmVhZDlkNTkzYzAxOTFhODU5NWFl
Li5jMDk5MGMxYWNmNDU5N2FkODA5NzJjNjEwYjYwNmU5M2M4ZjI0MmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2VydmVyVGltaW5nLmNwcApAQCAtNDYsOSArNDYsMTQgQEAgdm9pZCBTZXJ2ZXJU
aW1pbmc6OnNldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAgICAgfQogfQogCi1TZXJ2ZXJUaW1pbmcgU2VydmVyVGltaW5nOjppc29sYXRlZENvcHko
KSBjb25zdAorU2VydmVyVGltaW5nIFNlcnZlclRpbWluZzo6aXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JgogewotICAgIHJldHVybiBTZXJ2ZXJUaW1pbmcobmFtZS5pc29sYXRlZENvcHkoKSwgZHVyYXRp
b24sIGRlc2NyaXB0aW9uLmlzb2xhdGVkQ29weSgpLCBkdXJhdGlvblNldCwgZGVzY3JpcHRpb25T
ZXQpOworICAgIHJldHVybiBTZXJ2ZXJUaW1pbmcgeyBuYW1lLmlzb2xhdGVkQ29weSgpLCBkdXJh
dGlvbiwgZGVzY3JpcHRpb24uaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uU2V0LCBkZXNjcmlwdGlv
blNldCB9OworfQorCitTZXJ2ZXJUaW1pbmcgU2VydmVyVGltaW5nOjppc29sYXRlZENvcHkoKSAm
JgoreworICAgIHJldHVybiBTZXJ2ZXJUaW1pbmcgeyBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29w
eSgpLCBkdXJhdGlvbiwgV1RGTW92ZShkZXNjcmlwdGlvbikuaXNvbGF0ZWRDb3B5KCksIGR1cmF0
aW9uU2V0LCBkZXNjcmlwdGlvblNldCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmgKaW5kZXggNjdiNDEwOGVmOTQ1OTM5ZDhmN2Yx
M2NiZDFhMGNmMGU2ODRjYjQ0Ni4uOGJiZTg1N2Q0YjIwYzYyNjFkZDY0MzEwNjA4NTUzODJiYTg4
Y2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuaApAQCAtNDIsNyArNDIsOCBA
QCBzdHJ1Y3QgU2VydmVyVGltaW5nIHsKICAgICBTZXJ2ZXJUaW1pbmcoU3RyaW5nJiYgbmFtZSwg
ZG91YmxlIGR1cmF0aW9uLCBTdHJpbmcmJiBkZXNjcmlwdGlvbiwgYm9vbCBkdXJhdGlvblNldCwg
Ym9vbCBkZXNjcmlwdGlvblNldCk7CiAKICAgICB2b2lkIHNldFBhcmFtZXRlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKLSAgICBTZXJ2ZXJUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CisgICAgU2VydmVyVGltaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgU2VydmVy
VGltaW5nIGlzb2xhdGVkQ29weSgpICYmOwogfTsKIAogaW5saW5lIFNlcnZlclRpbWluZzo6U2Vy
dmVyVGltaW5nKFN0cmluZyYmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNTFmZmE2OTM1MmU1ZjMyMDA1Y2FmZWEwOWRj
OTRjYTJmZjhkNDNjZC4uZTI5NTg5YzJmZjI0MDA0MjUzNWMzYzAzOTZmYzhiNDc2MjQ0MmFhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVl
c3QpOwogCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFs
dWUgdG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/Ci0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29s
YXRlZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSwgY3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeUNvcHkgPSBXVEZNb3ZlKGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3lDb3B5KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KS5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5KSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkgPSBXVEZNb3ZlKGNyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3lDb3B5KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIERvY3VtZW50
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2xpZW50T3JpZ2luLmgKaW5kZXggZWU0N2NhYWE4ZDBkZGUzZjg5MTc5YTc1NjMxZWEzNGNiZTM2
MzEyYi4uNjIwNDAxMGZhZmNlMDM2M2U3YzBlYmI0ZDYxNmNlZmIxMDQyMGE5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NsaWVudE9yaWdpbi5oCkBAIC00Miw3ICs0Miw4IEBAIHN0cnVjdCBDbGllbnRPcmln
aW4gewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
bGllbnRPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBDbGllbnRPcmlnaW4gaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgQ2xpZW50T3JpZ2luIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNsaWVudE9yaWdpbi5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgQ2xpZW50T3JpZ2luIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJu
IHsgV1RGTW92ZSh0b3BPcmlnaW4pLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGNsaWVudE9yaWdp
bikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIGJvb2wgaXNSZWxhdGVkKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRvcE9yaWdpbiA9PSBvdGhlciB8fCBj
bGllbnRPcmlnaW4gPT0gb3RoZXI7IH0KIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIGNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KGNsaWVudE9yaWdpbi5ob3N0KTsgfQpAQCAtNjEsMTEgKzYyLDYg
QEAgaW5saW5lIGJvb2wgQ2xpZW50T3JpZ2luOjpvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdp
biYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRvcE9yaWdpbiA9PSBvdGhlci50b3BPcmlnaW4g
JiYgY2xpZW50T3JpZ2luID09IG90aGVyLmNsaWVudE9yaWdpbjsKIH0KIAotaW5saW5lIENsaWVu
dE9yaWdpbiBDbGllbnRPcmlnaW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHsgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRPcmlnaW4uaXNvbGF0ZWRDb3B5KCkg
fTsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgQ2xpZW50T3JpZ2lu
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHRvcE9y
aWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXggZWM4MGFlNDNh
YmU3OTEzNjk3OGM3ZmQwMDM5MGMyMTZiNjliNzczOC4uZGZhM2U4MmE2Mjg0YmJkYTEwNDIzODYy
ZTY1ZTJiOGJkMGZmZWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNz
V2FybWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAK
QEAgLTg5LDkgKzg5LDkgQEAgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIFByb2Nlc3NXYXJt
aW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkKICAgICByZXR1cm4geyBGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5jb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgfTsKIH0KIAot
dm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybVdpdGhJbmZvcm1hdGlvbihjb25zdCBQcmV3YXJt
SW5mb3JtYXRpb24mIHByZXdhcm1JbmZvKQordm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybVdp
dGhJbmZvcm1hdGlvbihQcmV3YXJtSW5mb3JtYXRpb24mJiBwcmV3YXJtSW5mbykKIHsKLSAgICBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJtKHByZXdhcm1JbmZvLmZvbnRDYWNo
ZSk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHJld2FybShXVEZNb3ZlKHBy
ZXdhcm1JbmZvLmZvbnRDYWNoZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJt
aW5nLmgKaW5kZXggY2YxN2VhYTFkOWQwYjZlM2Q4MTdiM2IxYTIyNGQ1ZGNjNzAyMDA0ZS4uNGQz
YzdlMTE4ODU3YThmNzA0NWUyYTMzMDdkZThhY2MzNWUwOTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJvY2Vzc1dhcm1pbmcuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgcHJld2FybUdsb2JhbGx5KCk7CiAKICAgICBzdGF0aWMgUHJld2FybUluZm9ybWF0aW9uIGNv
bGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKTsKLSAgICBzdGF0aWMgdm9pZCBwcmV3YXJtV2l0aElu
Zm9ybWF0aW9uKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYpOworICAgIHN0YXRpYyB2b2lkIHBy
ZXdhcm1XaXRoSW5mb3JtYXRpb24oUHJld2FybUluZm9ybWF0aW9uJiYpOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAKaW5kZXggYTA5MzRkN2Y1MzU1N2Y5NjVmMGI1MmRk
MzY4MzhkZDZhNDY5MzlmZi4uMmIzYmY0NzJjMGYxMjAyMzEyYjkzYjI3ZjQ1YjFhOTQ2ZjM4NmNm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzKGNvbnN0CiAgICAgbV9odHRwU3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCk7CiB9CiAKLUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CitDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGlzb2xhdGVkQ29weTsKICAgICBpc29s
YXRlZENvcHkubV9oZWFkZXJzID0gY3Jvc3NUaHJlYWRDb3B5KG1faGVhZGVycyk7CkBAIC01Myw0
ICs1MywxMiBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYQogICAgIHJldHVybiBpc29sYXRlZENv
cHk7CiB9CiAKK0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGlzb2xhdGVkQ29weTsKKyAgICBpc29s
YXRlZENvcHkubV9oZWFkZXJzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9oZWFkZXJzKSk7
CisgICAgaXNvbGF0ZWRDb3B5Lm1faHR0cFN0YXR1c0NvZGUgPSBtX2h0dHBTdGF0dXNDb2RlOwor
ICAgIHJldHVybiBpc29sYXRlZENvcHk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKaW5kZXggOTQ4ZDhjYzg3NDI4ZGU4OWEwZmM4MDk5YzY1
YmQwM2FjYWNkNWRiMy4uZDYwNThlOGNmOTljNWRhM2Q5YzkyZDJlODZiNmZiMjQ4ZDRjYThiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKQEAgLTQzLDcgKzQzLDggQEAgcHVibGljOgog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycygpID0gZGVmYXVsdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSAmJjsKIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmluZGV4IGFiNjhkYWNiZmE3NDBjYTQ4ZWMxYzM0
NTJhODYwMjExNjZkOTcxMzAuLmZhMjI0MGZlODZkNDA0ZjhmMzQ3MWU0MWE2OGI3NDYxNTkwMWQ5
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaApAQCAtNDYsMTQgKzQ2LDEy
IEBAIGNsYXNzIEZpbGVDaG9vc2VyOwogY2xhc3MgSWNvbjsKIAogc3RydWN0IEZpbGVDaG9vc2Vy
RmlsZUluZm8gewotICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlcGxhY2VtZW50
UGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsKLSAgICB9
Ci0KLSAgICBjb25zdCBTdHJpbmcgcGF0aDsKLSAgICBjb25zdCBTdHJpbmcgcmVwbGFjZW1lbnRQ
YXRoOwotICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKKyAgICBGaWxlQ2hvb3NlckZpbGVJ
bmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBwYXRoLmlzb2xhdGVkQ29weSgp
LCByZXBsYWNlbWVudFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29w
eSgpIH07IH0KKyAgICBGaWxlQ2hvb3NlckZpbGVJbmZvIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0
dXJuIHsgV1RGTW92ZShwYXRoKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShyZXBsYWNlbWVudFBh
dGgpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGRpc3BsYXlOYW1lKS5pc29sYXRlZENvcHkoKSB9
OyB9CisKKyAgICBTdHJpbmcgcGF0aDsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoOworICAg
IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCmluZGV4
IDQyOGJmZTBlNjJjNzhjY2MyODkwNTI4YjAxODU4OWFiNDgyZTM5OGIuLjg1YzAwODUwY2VjYzRj
MDE2NzY2MDc3MWM5ZWFkMmRkNjk3NTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaApAQCAtNDMsNiArNDMsOSBAQCBzdHJ1Y3QgTWVkaWFT
ZWxlY3Rpb25PcHRpb24gewogICAgIHsKICAgICB9CiAKKyAgICBNZWRpYVNlbGVjdGlvbk9wdGlv
biBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgZGlzcGxheU5hbWUuaXNvbGF0ZWRD
b3B5KCksIHR5cGUgfTsgfQorICAgIE1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzb2xhdGVkQ29weSgp
ICYmIHsgcmV0dXJuIHsgV1RGTW92ZShkaXNwbGF5TmFtZSkuaXNvbGF0ZWRDb3B5KCksIHR5cGUg
fTsgfQorCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIFR5cGUgdHlwZSB7IFR5cGU6OlJl
Z3VsYXIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3Ry
YWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4u
aAppbmRleCA3Y2UzZjYxMzZjMzE3ZGEzZmJlYzIyNDAxZjViZjI4MDE2NDk1YzYwLi5iY2U4YzQz
MDM0MGZlNjcwYmMyNDljZGYxN2I5ODY5YTQ0YWI4NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTY3LDcgKzY3LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbWF0Y2hlcyhvcmlnaW4uaG9zdCk7CiAgICAgfQogCi0gICAgUmVnaXN0cmFi
bGVEb21haW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW4g
eyBtX3JlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBSZWdpc3RyYWJs
ZURvbWFpbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgbV9yZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0cmFi
bGVEb21haW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBX
VEZNb3ZlKG1fcmVnaXN0cmFibGVEb21haW4pLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgIFJl
Z2lzdHJhYmxlRG9tYWluKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKICAgICAgICAg
OiBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDFi
ZmEzZmQ1ZjJiM2EyNmE5YTRhZWU5NTUzYjYyYjY4NmViZTIyNDEuLjEyY2UzZTk2ZGQzMTJjNjEz
ZDYxODJiMDlkMjc5MTU4YmJmNjlmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRm9udENhY2hl
OjpwcmV3YXJtR2xvYmFsbHkoKQogewogfQogCi12b2lkIEZvbnRDYWNoZTo6cHJld2FybShjb25z
dCBQcmV3YXJtSW5mb3JtYXRpb24mKQordm9pZCBGb250Q2FjaGU6OnByZXdhcm0oUHJld2FybUlu
Zm9ybWF0aW9uJiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmgKaW5kZXggODliNGUxOTI3YTc4ZTAzZjM0ODM1YTg2Y2M5MDJiMWEyNjdhYTI2
OS4uNDlkMzBkNjQ2OWFkZjFmNGFlMDg4NmVkY2ZlMjRmMmVlZDQ3ZDI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGxpbWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgpAQCAtMzU2LDEzICszNTcsMTQgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBmb250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjazsKIAogICAgICAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKLSAgICAgICAgUHJld2FybUluZm9ybWF0aW9uIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShzZWVuRmFtaWxpZXMpLCBjcm9zc1RocmVh
ZENvcHkoZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2spIH07IH0KKyAgICAgICAgUHJl
d2FybUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoc2VlbkZhbWlsaWVzKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZvbnRO
YW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrKSkgfTsgfQogCiAgICAgICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJld2FybUluZm9ybWF0aW9u
PiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAgICAgUHJld2FybUluZm9ybWF0aW9uIGNvbGxl
Y3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHByZXdhcm0oY29uc3QgUHJl
d2FybUluZm9ybWF0aW9uJik7CisgICAgdm9pZCBwcmV3YXJtKFByZXdhcm1JbmZvcm1hdGlvbiYm
KTsKICAgICBzdGF0aWMgdm9pZCBwcmV3YXJtR2xvYmFsbHkoKTsKIAogcHJpdmF0ZToKQEAgLTQz
MSwxMSArNDMzLDYgQEAgaW5saW5lIGJvb2wgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246
OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBzZWVuRmFtaWxpZXMuaXNFbXB0eSgpICYmIGZv
bnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrLmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIEZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9u
Ojppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IHNlZW5GYW1pbGllcy5pc29s
YXRlZENvcHkoKSwgZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2suaXNvbGF0ZWRDb3B5
KCkgfTsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRm9udENhY2hlOjpQcmV3
YXJtSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWls
aWVzLmNwcAppbmRleCBiMGIzZDQ1MmQ1NjE5YzY5OGE5YjI1OWFhYWYyNTNlNDEzZDAzMjMzLi4w
YzQ1YjIwNWM5YThjZjBmYzU5Nzk1NTA4ZmY2MDQ5NjIzYTNiNGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRH
ZW5lcmljRmFtaWxpZXMuaCIKIAorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgog
I2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Miwy
MyArOTMsMjkgQEAgRm9udEdlbmVyaWNGYW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcygpCiAg
ICAgfSk7CiB9CiAKLUZvbnRHZW5lcmljRmFtaWxpZXMgRm9udEdlbmVyaWNGYW1pbGllczo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK0ZvbnRHZW5lcmljRmFtaWxpZXMgRm9udEdlbmVyaWNGYW1pbGll
czo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgY29w
eTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9zdGFuZGFyZEZvbnRGYW1pbHlNYXApCi0g
ICAgICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5
VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBt
X3NlcmlmRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3NlcmlmRm9udEZhbWlseU1hcC5h
ZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgZm9y
IChhdXRvICZrZXlWYWx1ZSA6IG1fZml4ZWRGb250RmFtaWx5TWFwKQotICAgICAgICBjb3B5Lm1f
Zml4ZWRGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xh
dGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9zYW5zU2VyaWZGb250RmFt
aWx5TWFwKQotICAgICAgICBjb3B5Lm1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcC5hZGQoa2V5VmFs
dWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgZm9yIChhdXRvICZr
ZXlWYWx1ZSA6IG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9jdXJzaXZl
Rm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENv
cHkoKSk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fZmFudGFzeUZvbnRGYW1pbHlNYXAp
Ci0gICAgICAgIGNvcHkubV9mYW50YXN5Rm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBr
ZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6
IG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9waWN0b2dyYXBoRm9u
dEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHko
KSk7CisgICAgY29weS5tX3N0YW5kYXJkRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weSht
X3N0YW5kYXJkRm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX3NlcmlmRm9udEZhbWlseU1hcCA9
IGNyb3NzVGhyZWFkQ29weShtX3NlcmlmRm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX2ZpeGVk
Rm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2ZpeGVkRm9udEZhbWlseU1hcCk7Cisg
ICAgY29weS5tX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkobV9zYW5z
U2VyaWZGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAgPSBj
cm9zc1RocmVhZENvcHkobV9jdXJzaXZlRm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX2ZhbnRh
c3lGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fZmFudGFzeUZvbnRGYW1pbHlNYXAp
OworICAgIGNvcHkubV9waWN0b2dyYXBoRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weSht
X3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKTsKKyAgICByZXR1cm4gY29weTsKK30KKworRm9udEdl
bmVyaWNGYW1pbGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSAmJgorewor
ICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgY29weTsKKyAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFt
aWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAp
KTsKKyAgICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUobV9zZXJpZkZvbnRGYW1pbHlNYXApKTsKKyAgICBjb3B5Lm1fZml4ZWRGb250RmFtaWx5TWFw
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9maXhlZEZvbnRGYW1pbHlNYXApKTsKKyAgICBj
b3B5Lm1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1f
c2Fuc1NlcmlmRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9jdXJzaXZlRm9udEZhbWlseU1h
cCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXApKTsKKyAg
ICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSht
X2ZhbnRhc3lGb250RmFtaWx5TWFwKSk7CisgICAgY29weS5tX3BpY3RvZ3JhcGhGb250RmFtaWx5
TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9waWN0b2dyYXBoRm9udEZhbWlseU1hcCkp
OwogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKaW5kZXggNjA3NzBjZDY0YzM5MThi
MDAwNTFlNzQ1N2JiZWY0Mzc0ZjJhZWMyNC4uZWU0N2RkY2MzYzRjMmM0MDg5NzVkYjc0OTk2NGQ0
NzMxZDZjZjVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEdlbmVyaWNGYW1pbGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaApAQCAtNDksNyArNDksOCBAQCBjbGFzcyBGb250R2Vu
ZXJpY0ZhbWlsaWVzIHsKIHB1YmxpYzoKICAgICBGb250R2VuZXJpY0ZhbWlsaWVzKCk7CiAKLSAg
ICBGb250R2VuZXJpY0ZhbWlsaWVzIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIEZvbnRHZW5l
cmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBGb250R2VuZXJpY0ZhbWls
aWVzIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgY29uc3QgU3RyaW5nJiBzdGFuZGFyZEZvbnRG
YW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAgICAgY29uc3QgU3Ry
aW5nJiBmaXhlZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
aW5kZXggZjJjOTY0MGQ0NmQzYTkzNTYxMTRmMzNhYjE0MDUyYzdmZWMyNzc4Yy4uNGIzYTVlMTQy
ODdiNTczYzMyOTRhYTBhYTZjNmFiMmVjMjMwMjQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIHZv
aWQgSW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAg
ICBzbGVlcChtaW5EZWNvZGluZ0R1cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3Rh
cnRpbmdUaW1lKSk7CiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBv
biB0aGUgY3JlYXRpb24gdGhyZWFkIHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBm
cm9tIGEgZGlmZmVyZW50IHRocmVhZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNv
dXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdURk1v
dmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVl
LCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBXVEZNb3ZlKHNvdXJjZVVSTCkuaXNvbGF0
ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJl
cXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIFRoZSBxdWV1ZSBtYXkgaGF2
ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdlLCBzdG9w
QXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAgICAgICAgICAgICAgICBpZiAocHJv
dGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kaW5nUXVl
dWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kZXIp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21t
aXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAK
aW5kZXggYWQ5YTIzN2FhOWM2MDQ4NTQ3NDU1MWMyNDU4NmQyY2E4YTU3NjMwMi4uNDBkZjMyZWM3
NmYzZTQ5OGVkYTc5Y2E4NzhjZGYwNjNjNjkzYTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cApAQCAtOTU2LDcgKzk1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgfSgpOwogCiAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2sgfTsKLSAgICAg
ICAgcmV0dXJuICptX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoZm9sZGVkLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7
CisgICAgICAgIHJldHVybiAqbV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnMuYWRkKFdURk1v
dmUoZm9sZGVkKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShpbnN0YWxsZWRGb250RmFtaWx5KSku
aXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIAogICAgIGNvbnN0IEluc3RhbGxlZEZvbnQmIGZvbnRG
b3JQb3N0U2NyaXB0TmFtZShjb25zdCBBdG9tU3RyaW5nJiBwb3N0U2NyaXB0TmFtZSkKQEAgLTE2
MzAsNyArMTYzMCw3IEBAIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIEZvbnRDYWNoZTo6
Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHsgY29weVRvVmVj
dG9yKG1fc2VlbkZhbWlsaWVzRm9yUHJld2FybWluZyksIGNvcHlUb1ZlY3RvcihtX2ZvbnROYW1l
c1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrRm9yUHJld2FybWluZykgfTsKIH0KIAotdm9pZCBGb250
Q2FjaGU6OnByZXdhcm0oY29uc3QgUHJld2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mb3JtYXRp
b24pCit2b2lkIEZvbnRDYWNoZTo6cHJld2FybShQcmV3YXJtSW5mb3JtYXRpb24mJiBwcmV3YXJt
SW5mb3JtYXRpb24pCiB7CiAgICAgaWYgKHByZXdhcm1JbmZvcm1hdGlvbi5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE2NDAsNyArMTY0MCw3IEBAIHZvaWQgRm9udENhY2hlOjpwcmV3
YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9ybWF0aW9uKQogCiAgICAg
YXV0byYgZGF0YWJhc2UgPSBGb250RGF0YWJhc2U6OnNpbmdsZXRvbkRpc2FsbG93aW5nVXNlcklu
c3RhbGxlZEZvbnRzKCk7CiAKLSAgICBtX3ByZXdhcm1RdWV1ZS0+ZGlzcGF0Y2goWyZkYXRhYmFz
ZSwgcHJld2FybUluZm9ybWF0aW9uID0gcHJld2FybUluZm9ybWF0aW9uLmlzb2xhdGVkQ29weSgp
XSB7CisgICAgbV9wcmV3YXJtUXVldWUtPmRpc3BhdGNoKFsmZGF0YWJhc2UsIHByZXdhcm1JbmZv
cm1hdGlvbiA9IFdURk1vdmUocHJld2FybUluZm9ybWF0aW9uKS5pc29sYXRlZENvcHkoKV0gewog
ICAgICAgICBmb3IgKGF1dG8mIGZhbWlseSA6IHByZXdhcm1JbmZvcm1hdGlvbi5zZWVuRmFtaWxp
ZXMpCiAgICAgICAgICAgICBkYXRhYmFzZS5jb2xsZWN0aW9uRm9yRmFtaWx5KGZhbWlseSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDExNzI4OTRmZWQyNWI4ZjRmNWMz
MzMwYWYzMmUyNDI4OGE3YzU4NjMuLmEwYzU3MTA3NTg5NmQ2NDU0N2U3Mjk4NGRmMWEwODMxOGQ4
NGRlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtNDMsNiArNDMsNyBA
QAogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SVZpZXcuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgorI2ltcG9y
dCA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAK
ICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgpAQCAtNDgyLDE5ICs0ODMsMTAgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZlcnNl
Q2hhbmdlZChib29sIGNhblBsYXlGYXMKICAgICAgICAgY2xpZW50LT5jYW5QbGF5RmFzdFJldmVy
c2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+IGlzb2xhdGVkQ29weShjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25P
cHRpb24+JiBvcHRpb25zKQotewotICAgIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0
aW9uc0NvcHk7Ci0gICAgb3B0aW9uc0NvcHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcHRpb25z
LnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBvcHRpb24gOiBvcHRpb25zKQotICAgICAgICBvcHRp
b25zQ29weS51bmNoZWNrZWRBcHBlbmQoeyBvcHRpb24uZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5
KCksIG9wdGlvbi50eXBlIH0pOwotICAgIHJldHVybiBvcHRpb25zQ29weTsKLX0KLQogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhd
IHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJ
bmRleF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTA3LDcgKzQ5OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJl
bnQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3Rl
ZEluZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIHNl
bGVjdGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAppbmRleCA2ZTFl
OGQxZmNiYTc4OTBkOTY0NzYwZTg0MzYxYTU1ZjEwOThiNzlmLi5kYjgzM2YzMGJiZTdlNjE0ZDIx
OWU3ZTMxNTc2MzJjMmYwYTNmMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaApAQCAt
MzYsMTcgKzM2LDIzIEBAIHN0cnVjdCBBdWRpb0NvbmZpZ3VyYXRpb24gewogICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzcGF0
aWFsUmVuZGVyaW5nOwogCi0gICAgQXVkaW9Db25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgIEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAg
IEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgQXVkaW9Db25maWd1cmF0aW9uIEF1ZGlvQ29u
ZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK2lubGluZSBBdWRpb0NvbmZpZ3VyYXRp
b24gQXVkaW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0
dXJuIHsgY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCksIGNoYW5uZWxzLmlzb2xhdGVkQ29weSgp
LCBiaXRyYXRlLCBzYW1wbGVyYXRlLCBzcGF0aWFsUmVuZGVyaW5nIH07CiB9CiAKK2lubGluZSBB
dWRpb0NvbmZpZ3VyYXRpb24gQXVkaW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSAmJgor
eworICAgIHJldHVybiB7IFdURk1vdmUoY29udGVudFR5cGUpLmlzb2xhdGVkQ29weSgpLCBXVEZN
b3ZlKGNoYW5uZWxzKS5pc29sYXRlZENvcHkoKSwgYml0cmF0ZSwgc2FtcGxlcmF0ZSwgc3BhdGlh
bFJlbmRlcmluZyB9OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBdWRpb0Nv
bmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUNvbmZpZ3VyYXRpb24uaAppbmRleCBlZmFjNGM3OTRkY2ZlYjQ3MzE1NmJkM2Y0NWZkZTU5Y2Zm
ZjA4NTM4Li45NDNiOTA1YjY4NTI5YTY3MzY3Y2FhM2I4NDc0YTg5YWJlMDRjNDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUNvbmZpZ3VyYXRpb24uaApAQCAtMzUsMTcgKzM1LDIzIEBAIHN0cnVjdCBNZWRpYUNv
bmZpZ3VyYXRpb24gewogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiB2aWRl
bzsKICAgICBzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmlndXJhdGlvbj4gYXVkaW87CiAKLSAgICBN
ZWRpYUNvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgTWVkaWFDb25maWd1
cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgTWVkaWFDb25maWd1cmF0aW9uIGlz
b2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPE1lZGlhQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
LWlubGluZSBNZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0aW9uOjppc29sYXRlZENv
cHkoKSBjb25zdAoraW5saW5lIE1lZGlhQ29uZmlndXJhdGlvbiBNZWRpYUNvbmZpZ3VyYXRpb246
Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHko
dmlkZW8pLCAgY3Jvc3NUaHJlYWRDb3B5KGF1ZGlvKSB9OwogfQogCitpbmxpbmUgTWVkaWFDb25m
aWd1cmF0aW9uIE1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBy
ZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh2aWRlbykpLCAgY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUoYXVkaW8pKSB9OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBN
ZWRpYUNvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9WaWRlb0NvbmZpZ3VyYXRpb24uaAppbmRleCBlODYzMWYyY2YxNzY3ZWFmYjg1ZDU1NmEwZGU3
YjI1NGMwNWIyYjg3Li4xMzAxZWM2NjNkM2I5NmIzMzJjODk3NTg2YjBhM2EzYWI5ZTc1NzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRl
b0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaApAQCAtNDMsMTcgKzQzLDIzIEBAIHN0cnVjdCBW
aWRlb0NvbmZpZ3VyYXRpb24gewogICAgIHN0ZDo6b3B0aW9uYWw8SGRyTWV0YWRhdGFUeXBlPiBo
ZHJNZXRhZGF0YVR5cGU7CiAgICAgc3RkOjpvcHRpb25hbDxUcmFuc2ZlckZ1bmN0aW9uPiB0cmFu
c2ZlckZ1bmN0aW9uOwogCi0gICAgVmlkZW9Db25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgIFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAg
IFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgVmlkZW9Db25maWd1cmF0aW9uIFZpZGVvQ29u
ZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK2lubGluZSBWaWRlb0NvbmZpZ3VyYXRp
b24gVmlkZW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0
dXJuIHsgY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCksIHdpZHRoLCBoZWlnaHQsIGJpdHJhdGUs
IGZyYW1lcmF0ZSwgYWxwaGFDaGFubmVsLCBjb2xvckdhbXV0LCBoZHJNZXRhZGF0YVR5cGUsIHRy
YW5zZmVyRnVuY3Rpb24gfTsKIH0KIAoraW5saW5lIFZpZGVvQ29uZmlndXJhdGlvbiBWaWRlb0Nv
bmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgV1RGTW92ZShj
b250ZW50VHlwZSkuaXNvbGF0ZWRDb3B5KCksIHdpZHRoLCBoZWlnaHQsIGJpdHJhdGUsIGZyYW1l
cmF0ZSwgYWxwaGFDaGFubmVsLCBjb2xvckdhbXV0LCBoZHJNZXRhZGF0YVR5cGUsIHRyYW5zZmVy
RnVuY3Rpb24gfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgVmlkZW9Db25m
aWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKaW5kZXggNmEzYWE4N2Q4OTMxYzRiODBjYTBkZWE3MzgwNmI1NzBjODY3OGU1OC4u
MzRlMzAyNWY3NDFjNmE5ZTlmMjNjNDRiNDc4OTMxYjc4ZDgwOTU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKQEAgLTQyLDE5ICs0MiwyNyBAQCBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0IHsK
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKICAgICBSVENQcmlvcml0eVR5
cGUgcHJpb3JpdHkgeyBSVENQcmlvcml0eVR5cGU6OkxvdyB9OwogCi0gICAgUlRDRGF0YUNoYW5u
ZWxJbml0IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBpc29sYXRlZENvcHko
KSAmJjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSVENEYXRhQ2hhbm5lbEluaXQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgUlRD
RGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K2lubGluZSBSVENEYXRhQ2hhbm5lbEluaXQgUlRDRGF0YUNoYW5uZWxJbml0Ojppc29sYXRlZENv
cHkoKSBjb25zdCAmCiB7CiAgICAgYXV0byBjb3B5ID0gKnRoaXM7CiAgICAgY29weS5wcm90b2Nv
bCA9IHByb3RvY29sLmlzb2xhdGVkQ29weSgpOwogICAgIHJldHVybiBjb3B5OwogfQogCitpbmxp
bmUgUlRDRGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkg
JiYKK3sKKyAgICBhdXRvIGNvcHkgPSBXVEZNb3ZlKCp0aGlzKTsKKyAgICBjb3B5LnByb3RvY29s
ID0gV1RGTW92ZShjb3B5LnByb3RvY29sKS5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gY29w
eTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBSVENEYXRhQ2hhbm5lbEluaXQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgb3JkZXJl
ZCA8PCBtYXhQYWNrZXRMaWZlVGltZSA8PCBtYXhSZXRyYW5zbWl0cyA8PCBwcm90b2NvbCA8PCBu
ZWdvdGlhdGVkIDw8IGlkIDw8IHByaW9yaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQppbmRleCA4ZTM3NThmZTY2YWI4NmE2NmFiMmQ3MDk3ZDRjZjU0ZjI5N2MwZmI5Li4zZTUx
ZmUxNTY3NWQ3MzNiY2NlZjY5Y2M5OGE1MDM3Y2U2Y2Q1NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbQpAQCAtMTgwLDcgKzE4MCw3IEBAIFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZXRyaWV2ZUNhcHR1cmVEZXZpY2VzKCkKIHZvaWQg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGRldmljZUxpc3QgPSByZXRyaWV2ZUNhcHR1cmVEZXZpY2VzKCkuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7ICAgICAgICAgICAgCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGV2aWNlTGlzdCA9
IGNyb3NzVGhyZWFkQ29weShyZXRyaWV2ZUNhcHR1cmVEZXZpY2VzKCkpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgYm9vbCBkZXZpY2VIYXNDaGFuZ2VkID0gbV9kZXZpY2VzLnNpemUoKSAhPSBk
ZXZpY2VMaXN0LnNpemUoKTsKICAgICAgICAgICAgIGlmICghZGV2aWNlSGFzQ2hhbmdlZCkgewog
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgZGV2aWNlTGlzdC5z
aXplKCk7ICsrY3B0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5jcHAKaW5kZXggZDgwYzViZDZjMDNkZjUyYWQxMTM5Y2U0MzRjNGE0YTUz
MzgxNGVhNy4uYmQ1MTZjZjZjNjVmMmRiNDA1MThmMGNkMWQ3ZTk3ZThmNzRlMzg1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBA
IC00Miw3ICs0Miw3IEBAIEhUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXAoKQogewogfQogCi1I
VFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitIVFRQSGVh
ZGVyTWFwIEhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBIVFRQ
SGVhZGVyTWFwIG1hcDsKICAgICBtYXAubV9jb21tb25IZWFkZXJzID0gY3Jvc3NUaHJlYWRDb3B5
KG1fY29tbW9uSGVhZGVycyk7CkBAIC01MCw2ICs1MCwxNCBAQCBIVFRQSGVhZGVyTWFwIEhUVFBI
ZWFkZXJNYXA6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIG1hcDsKIH0KIAorSFRU
UEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIEhUVFBI
ZWFkZXJNYXAgbWFwOworICAgIG1hcC5tX2NvbW1vbkhlYWRlcnMgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShtX2NvbW1vbkhlYWRlcnMpKTsKKyAgICBtYXAubV91bmNvbW1vbkhlYWRlcnMgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3VuY29tbW9uSGVhZGVycykpOworICAgIHJldHVybiBt
YXA7Cit9CisKIFN0cmluZyBIVFRQSGVhZGVyTWFwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdAogewogICAgIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGZhMDM3ZmNmOTY4MTcz
YzBjYTkzZDQ3MWMzZGQ0MWRjNDg3MGIwY2IuLjFmZTE5ZDMxMThiMTNiYWE4YjljYjA0YjNmN2Rl
Njk5YmQ4MGZmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oCkBAIC00MCw3ICs0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgSFRUUEhlYWRl
ck5hbWUga2V5OwogICAgICAgICBTdHJpbmcgdmFsdWU7CiAKLSAgICAgICAgQ29tbW9uSGVhZGVy
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsga2V5ICwgdmFsdWUuaXNvbGF0ZWRDb3B5
KCkgfTsgfQorICAgICAgICBDb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJl
dHVybiB7IGtleSAsIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgQ29tbW9uSGVh
ZGVyIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsga2V5ICwgV1RGTW92ZSh2YWx1ZSkuaXNv
bGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOwogCkBA
IC01MSw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGtleTsKICAgICAgICAgU3Ry
aW5nIHZhbHVlOwogCi0gICAgICAgIFVuY29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpICwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsg
fQorICAgICAgICBVbmNvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJu
IHsga2V5Lmlzb2xhdGVkQ29weSgpICwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAg
ICBVbmNvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoa2V5
KS5pc29sYXRlZENvcHkoKSAsIFdURk1vdmUodmFsdWUpLmlzb2xhdGVkQ29weSgpIH07IH0KICAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFVuY29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOwogCkBAIC0xMzQsNyArMTM2LDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAoKTsKIAogICAgIC8vIEdl
dHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhy
ZWFkLgotICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRUUEhlYWRlck1hcCBpc29sYXRlZENvcHkoKSBjb25z
dCAmOworICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkgJiY7
CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvbW1vbkhlYWRlcnMuaXNF
bXB0eSgpICYmIG1fdW5jb21tb25IZWFkZXJzLmlzRW1wdHkoKTsgfQogICAgIGludCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFkZXJzLnNpemUoKSArIG1fdW5jb21tb25IZWFkZXJz
LnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5kZXggNmU0NWFhMTc2ZDA3ZjIyOTFiYmUyMzU1MDc3
NjViYWI1ODhhYzFmNC4uMzg0ZGM3MTQ3MmJiNjAxMWQ2Y2RlMDMxYWE4ZTgyYzVhMjJjMWQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudHMuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6Y2xhaW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERlZmVycmVk
UHIKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXJdICgpIG11dGFibGUgewogICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7CiAgICAgICAgIGNvbm5lY3Rpb24t
PmNsYWltKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIHJlc3VsdCA9IGlzb2xhdGVkQ29w
eShXVEZNb3ZlKHJlc3VsdCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCByZXN1bHQgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvIHByb21pc2UgPSBzY29wZS5jbGllbnRzKCkubV9wZW5kaW5nUHJvbWlz
ZXMudGFrZShwcm9taXNlUG9pbnRlcikpIHsKICAgICAgICAgICAgICAgICAgICAgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+IHBlbmRpbmdQcm9taXNlIHsgcHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgp
IH07CiAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlLnNldHRsZShXVEZNb3ZlKHJl
c3VsdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCA0NTY3MWNmMjdhMzQxZWM3
NTkxMmM1ZjAxNDI5M2IxNGVkOGZhYjhmLi5lNjI4ZWYwZWE0NzBmYTI2ZTY1YWUzNDk2ZWZmZmJk
MWUxNzY0NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMzc4LDcgKzM3OCw3
IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjaGVkdWxlUHVzaENoYW5nZXMoVmVjdG9y
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgICAgICAgICB1cGRhdGVkUmVnaXN0cmF0
aW9ucy5jbGVhcigpOwogICAgICAgICAgICAgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuY2xlYXIoKTsK
ICAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc3VjY2VzcywgcHVzaENvdW50ZXIsIHVwZGF0ZWRS
ZWdpc3RyYXRpb25zID0gV1RGTW92ZSh1cGRhdGVkUmVnaXN0cmF0aW9ucykuaXNvbGF0ZWRDb3B5
KCksIHJlbW92ZWRSZWdpc3RyYXRpb25zID0gV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucyku
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBzdWNjZXNzLCBwdXNoQ291bnRlciwg
dXBkYXRlZFJlZ2lzdHJhdGlvbnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh1cGRhdGVkUmVn
aXN0cmF0aW9ucykpLCByZW1vdmVkUmVnaXN0cmF0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlbW92ZWRSZWdpc3RyYXRpb25zKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3Mg
JiYgKHB1c2hDb3VudGVyICsgMSkgPT0gbV9wdXNoQ291bnRlcikgewogICAgICAgICAgICAgICAg
IC8vIFdlIHJldHJ5IHdyaXRpbmcgb25jZSBpZiBubyBvdGhlciBjaGFuZ2Ugd2FzIHB1c2hlZC4K
ICAgICAgICAgICAgICAgICBzY2hlZHVsZVB1c2hDaGFuZ2VzKFdURk1vdmUodXBkYXRlZFJlZ2lz
dHJhdGlvbnMpLCBXVEZNb3ZlKHJlbW92ZWRSZWdpc3RyYXRpb25zKSwgU2hvdWxkUmV0cnk6Ok5v
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldFBhcmFtZXRlcnMuaAppbmRleCBlYTVjYTZkYjM0NmE2MjE3ODIwNzI2MzFhMzRmMjAx
NzI2Yzc3NTY4Li4zMzZmZWE4NmViOGJiNzhjYTM2ZmM0MzI5ODRlZWE0YzIyYjNiYzU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKQEAgLTM5LDE3ICsz
OSw4IEBAIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVycyB7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBz
ZXR0aW5nc1ZhbHVlczsKICAgICBib29sIGlzQXVkaW9Db250ZXh0UmVhbFRpbWU7CiAKLSAgICBX
b3JrbGV0UGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgIHdpbmRvd1VSTC5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgICAg
IGpzUnVudGltZUZsYWdzLAotICAgICAgICAgICAgc2FtcGxlUmF0ZSwKLSAgICAgICAgICAgIGlk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBzZXR0aW5nc1ZhbHVlcy5pc29s
YXRlZENvcHkoKSwKLSAgICAgICAgICAgIGlzQXVkaW9Db250ZXh0UmVhbFRpbWUKLSAgICAgICAg
fTsKLSAgICB9CisgICAgV29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7
IHJldHVybiB7IHdpbmRvd1VSTC5pc29sYXRlZENvcHkoKSwganNSdW50aW1lRmxhZ3MsIHNhbXBs
ZVJhdGUsIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHNldHRpbmdzVmFsdWVzLmlzb2xhdGVk
Q29weSgpLCBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lIH07IH0KKyAgICBXb3JrbGV0UGFyYW1ldGVy
cyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUod2luZG93VVJMKS5pc29sYXRl
ZENvcHkoKSwganNSdW50aW1lRmxhZ3MsIHNhbXBsZVJhdGUsIFdURk1vdmUoaWRlbnRpZmllciku
aXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoc2V0dGluZ3NWYWx1ZXMpLmlzb2xhdGVkQ29weSgpLCBp
c0F1ZGlvQ29udGV4dFJlYWxUaW1lIH07IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCmluZGV4IGNjZDFmMTEyNWZlNjg5NjY2OThhOGY1ZjZkN2IwZjQxZjBlNTEzNTUuLmE1NTI5
NWYzMDU1MGRmMjc0MDRiY2U0Mjk5ZDJmZTM3OWIwZTQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNDU1LDE1ICs0
NTUsMTUgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb1BDTURhdGFiYXNlSWZOZWNlc3NhcnkoKQogICAgIH0KIAogICAgIGlmICghdW5hdHRy
aWJ1dGVkLmlzRW1wdHkoKSB8fCAhYXR0cmlidXRlZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgdW5hdHRyaWJ1
dGVkID0gdW5hdHRyaWJ1dGVkLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGVkID0gYXR0cmlidXRl
ZC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHVuYXR0cmlidXRlZCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHVuYXR0cmlidXRlZCkpLCBhdHRyaWJ1dGVkID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoYXR0cmlidXRlZCkpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gc3RvcmUtPm5ldHdvcmtTZXNzaW9uKCk7CiAgICAgICAgICAgICBp
ZiAoIW5ldHdvcmtTZXNzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAg
ICAgYXV0byYgbWFuYWdlciA9IG5ldHdvcmtTZXNzaW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBwY20gOiBXVEZNb3ZlKGF0dHJpYnV0ZWQpKQor
ICAgICAgICAgICAgZm9yIChhdXRvJiYgcGNtIDogV1RGTW92ZShhdHRyaWJ1dGVkKSkKICAgICAg
ICAgICAgICAgICBtYW5hZ2VyLm1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdh
Y3lTdG9yYWdlKFdURk1vdmUocGNtKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGU6OkF0dHJpYnV0ZWQpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBwY20gOiBXVEZNb3Zl
KHVuYXR0cmlidXRlZCkpCisgICAgICAgICAgICBmb3IgKGF1dG8mJiBwY20gOiBXVEZNb3ZlKHVu
YXR0cmlidXRlZCkpCiAgICAgICAgICAgICAgICAgbWFuYWdlci5taWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShXVEZNb3ZlKHBjbSksIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwogICAgICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDY2MWIx
NTYzZWM2NGI2NmU3OGYxZjhkNTU0YzZkOWRmMzczMWFlNmIuLmM1Y2Q5ZjE0ZGZhMjY3NjZkZTMx
MTAyY2RjNDI0MWNmYTY5MWE0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzYsMTQgKzc3LDE2IEBAIHN0cnVjdCBSZWdpc3Ry
YWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25B
c0ZpcnN0UGFydHk7CiAgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21h
aW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzczsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Js
b2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25B
c0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyB9OyB9
CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2ll
c0ZvciksIGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQ
YXJ0eSksIGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpIH07IH0KKyAg
ICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9ja0J1dEtl
ZXBDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uQXNGaXJzdFBhcnR5KSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNX
aXRoU3RvcmFnZUFjY2VzcykpIH07IH0KIH07CiBzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5zVG9E
ZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgewogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0ZvcjsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5
Q29va2llc0ZvcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yOwot
ICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0Zv
ci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9y
Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZv
ci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvciBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJl
YWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSwgY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcikgfTsgfQorICAgIFJlZ2lzdHJhYmxl
RG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIGlzb2xhdGVkQ29weSgpICYm
IHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxsQ29v
a2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9EZWxldGVBbGxCdXRI
dHRwT25seUNvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVs
ZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
ZG9tYWluc1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yKSkgfTsgfQogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0Zvci5pc0VtcHR5KCkgJiYg
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuaXNFbXB0eSgpICYmIGRv
bWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvci5pc0VtcHR5KCk7IH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwCmluZGV4IGE3YWI5MzgwOWNjYjdmNjVmNDhiMWE1MTljZDk2N2FkYWI1YzZkNTguLjBh
MDRhZWU0NWZhYmI2M2RlYzJmNzk3NmI3NjFkMzY2MTcwMTYwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFz
ZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cgogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIG9yaWdpbkRhdGFzID0gb3JpZ2luRGF0YXMuaXNvbGF0ZWRDb3B5KCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgIHBvc3RUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luRGF0YXMgPSBjcm9z
c1RocmVhZENvcHkob3JpZ2luRGF0YXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNw
cAppbmRleCA1NTRmZDJkOGYwZGQxYjljNzk4ZTA2ODU2MTJkMWI4ZDhmMDZjN2UyLi5kZDMxMmM3
MzEwYmVjZWNmNGM3YzQyM2QxMzkxZjJhZWVlNjQ0ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZv
LmNwcApAQCAtMjgsMTQgKzI4LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQ6OlBDTSB7CiAKLURl
YnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CitEZWJ1Z0luZm8gRGVidWdJ
bmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgbWVzc2FnZXMuaXNv
bGF0ZWRDb3B5KCkgfTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkobWVzc2FnZXMpIH07
CiB9CiAKLURlYnVnSW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CitEZWJ1Z0luZm8gRGVidWdJbmZvOjppc29sYXRlZENvcHkoKSAmJgoreworICAg
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1lc3NhZ2VzKSkgfTsKK30KKworRGVi
dWdJbmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JgogewogICAgIHJldHVybiB7IG1lc3NhZ2VMZXZlbCwgbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9
OwogfQogCitEZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENv
cHkoKSAmJgoreworICAgIHJldHVybiB7IG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShtZXNzYWdlKS5p
c29sYXRlZENvcHkoKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OlBDTQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlYnVnSW5mby5oCmluZGV4IDUyNTc3ODRiNGUxOWYzODBhYTIwNmJjMmE3Njg4ZGM5ZjVlZTNk
Y2YuLjBiOTk4NGM0NjRkY2UxOWFhMzRkNWRlOGRmNjNhYmVlM2EyNmZkZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVidWdJbmZvLmgKQEAgLTM2LDEyICszNiwxNCBAQCBzdHJ1Y3QgRGVidWdJbmZvIHsKICAgICAg
ICAgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsOwogICAgICAgICBTdHJpbmcgbWVzc2Fn
ZTsKIAotICAgICAgICBNZXNzYWdlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBNZXNz
YWdlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIE1lc3NhZ2UgaXNvbGF0ZWRDb3B5
KCkgJiY7CiAgICAgfTsKIAogICAgIFZlY3RvcjxNZXNzYWdlPiBtZXNzYWdlczsKIAotICAgIERl
YnVnSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBEZWJ1Z0luZm8gaXNvbGF0ZWRDb3B5
KCkgY29uc3QgJjsKKyAgICBEZWJ1Z0luZm8gaXNvbGF0ZWRDb3B5KCkgJiY7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCmluZGV4IGFiNTA5NDA4MTcyNDRkNzI5
MWIxOTgxODQzNmU1ZDUxODJlYTQ5NjQuLmJiNDRjZGYxOGFhODM4NjkzYzQyYzgzMGQxYzA4MmFk
NWViYWQ1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU3Rv
cmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXCiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4gY29udmVydGVkQXR0cmlidXRpb25zOwogICAgICAgICBpZiAobV9kYXRhYmFzZSkK
ICAgICAgICAgICAgIGNvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IG1fZGF0YWJhc2UtPmFsbEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgICAgICBwb3N0VGFza1JlcGx5KFtj
b252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMuaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucykpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMpKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBjNmQ0YmNiNzAyMjk5OTAy
YWE4MTg0N2FiOTg2YmU4YzMxOWQ3ZjlmLi42NWNhNGMwYzE0ZjYxYThjMzJhOTRjNDQ0YmY0MTM2
NzNhNWFlMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01NTEsNyArNTUyLDcgQEAgdm9pZCBD
b250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwKICAgICBpZiAoIXBhcnNlZFJ1bGVzLmhhc192YWx1ZSgpKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgcGFyc2VkUnVsZXMuZXJyb3Io
KSk7CiAgICAgCi0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGpz
b24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IHBhcnNlZFJ1bGVzLnZhbHVl
KCkuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9
IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUocGFyc2VkUnVsZXMpLnZhbHVlKCkpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBh
dGgsIGlkZW50aWZpZXIsIGZhbHNlKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXBpbGVk
VG9GaWxlKFdURk1vdmUoanNvbiksIFdURk1vdmUocGFyc2VkUnVsZXMpLCBwYXRoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGFsQ29udGFpbmVyQ29udHJv
bENsYXNzaWZpZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RhbENvbnRh
aW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCmluZGV4IDJmMDM3NDhiN2NiMThmYWE4OTJhOWMyZWFj
ZDNiNzE2NTlhM2ZjYTEuLjk0MTIxZTdjZjFkZWZkMGE1NzUwNjgwNjkyOGU2NGRjMTIzYWI1NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGFsQ29udGFpbmVy
Q29udHJvbENsYXNzaWZpZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllci5tbQpAQCAtMjA3LDcgKzIwNyw3IEBAIHN0
YXRpYyBWZWN0b3I8TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4gY29tcHV0ZVByZWRpY3Rpb25z
KE1MTW9kZWwgKm1vZGVsLCBWZWN0CiB2b2lkIE1vZGFsQ29udGFpbmVyQ29udHJvbENsYXNzaWZp
ZXI6OmNsYXNzaWZ5KFZlY3RvcjxTdHJpbmc+JiYgdGV4dHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPE1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+JiYpPiYmIGNvbXBsZXRpb24pCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgdGV4dHMgPSB0ZXh0cy5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbiA9IFdURk1vdmUo
Y29tcGxldGlvbildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHRl
eHRzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodGV4dHMpKSwgY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgIGxvYWRNb2RlbElmTmVlZGVkKCk7
CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbiA9IFdURk1vdmUo
Y29tcGxldGlvbiksIHByZWRpY3Rpb25zID0gY29tcHV0ZVByZWRpY3Rpb25zKG1fbW9kZWwuZ2V0
KCksIFdURk1vdmUodGV4dHMpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb24o
V1RGTW92ZShwcmVkaWN0aW9ucykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNDMzOTM0NjAxNTM1YTBkNDZlM2U4
OTg3YjgzNjg0MjM4NzA2MDVjNy4uNTNhNmJhNDM5OTAzY2RkOWJmYTcxNWM3MDBhNGRmYjMyN2Zh
ZTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0TWVkaWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hf
UVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFt3ZWFrUHJvY2VzcyA9IFdlYWtQdHIgeyBwcm9j
ZXNzIH1dIHsKICAgICAgICAgYXV0byBjYXB0aW9uRGlzcGxheU1vZGUgPSBXZWJDb3JlOjpDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1DYXB0aW9uRGlzcGxheU1vZGUoKTsK
ICAgICAgICAgYXV0byBwcmVmZXJyZWRMYW5ndWFnZXMgPSBXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICAgICAg
Y2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtQcm9jZXNzLCBjYXB0aW9uRGlzcGxheU1vZGUsIHByZWZl
cnJlZExhbmd1YWdlcyA9IFdURk1vdmUocHJlZmVycmVkTGFuZ3VhZ2VzKS5pc29sYXRlZENvcHko
KV0geworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1Byb2Nlc3MsIGNhcHRpb25EaXNw
bGF5TW9kZSwgcHJlZmVycmVkTGFuZ3VhZ2VzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocHJl
ZmVycmVkTGFuZ3VhZ2VzKSldIHsKICAgICAgICAgICAgIGlmICh3ZWFrUHJvY2VzcykKICAgICAg
ICAgICAgICAgICB3ZWFrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0TWVk
aWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMoY2FwdGlvbkRpc3BsYXlNb2RlLCBwcmVmZXJyZWRM
YW5ndWFnZXMpLCAwKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCAyZmRkYjg0OTUyZDA4ODlhODgyNTRlNDc3YmZmMjMyMGI2MGYwMWRj
Li43YzdiZjE3MjhjMTRiZDNkOGI4YTA2OGVjYjA4MWQ0MDg4NTcwMmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcxOTgsMTMgKzcxOTgsMTMgQEAgYm9v
bCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aEltYWdlVHJhbnNj
b2RpbmcoY29uc3QgVmVjdG9yPFMKICAgICBhdXRvIHRyYW5zY29kaW5nVVRJID0gV2ViQ29yZTo6
VVRJRnJvbU1JTUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOwogICAgIGF1dG8gdHJhbnNjb2Rp
bmdFeHRlbnNpb24gPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZSh0cmFuc2NvZGluZ01JTUVUeXBlKTsKIAotICAgIHNoYXJlZEltYWdlVHJh
bnNjb2RpbmdRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgZmlsZVVSTHMgPSBmaWxlVVJMcy5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdVUkxz
ID0gdHJhbnNjb2RpbmdVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VUSSA9IHRyYW5z
Y29kaW5nVVRJLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9IHRyYW5zY29k
aW5nRXh0ZW5zaW9uLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHNoYXJlZEltYWdl
VHJhbnNjb2RpbmdRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgZmlsZVVSTHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVVSTHMpLCB0cmFuc2NvZGlu
Z1VSTHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0cmFuc2NvZGluZ1VSTHMpKSwgdHJhbnNj
b2RpbmdVVEkgPSBXVEZNb3ZlKHRyYW5zY29kaW5nVVRJKS5pc29sYXRlZENvcHkoKSwgdHJhbnNj
b2RpbmdFeHRlbnNpb24gPSBXVEZNb3ZlKHRyYW5zY29kaW5nRXh0ZW5zaW9uKS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICAgICAgYXV0byB0cmFuc2NvZGVkVVJMcyA9IHRyYW5zY29kZUltYWdlcyh0cmFuc2NvZGlu
Z1VSTHMsIHRyYW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4dGVuc2lvbik7CiAgICAgICAgIEFT
U0VSVCh0cmFuc2NvZGluZ1VSTHMuc2l6ZSgpID09IHRyYW5zY29kZWRVUkxzLnNpemUoKSk7CiAK
LSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZmlsZVVSTHMgPSBmaWxlVVJMcy5pc29sYXRlZENvcHko
KSwgdHJhbnNjb2RlZFVSTHMgPSB0cmFuc2NvZGVkVVJMcy5pc29sYXRlZENvcHkoKV0oKSB7Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVVUkxzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
ZmlsZVVSTHMpKSwgdHJhbnNjb2RlZFVSTHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0cmFu
c2NvZGVkVVJMcykpXSgpIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lvbkZpbGVzOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmaWxlVVJMcy5zaXplKCk7IGkgPCBzaXplOyArK2kp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTk3OGI5ZDkwOWJh
ZGVjNjQ0OWE2NTMxZTVjNzU4M2FlNzE4YzdhYy4uNDgyMTk4NzM5Y2ZkYTVmY2U2NjIxMDdjNGUy
N2UzNTFkMzg0NzJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtNjk1LDkgKzY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJld2FybUdsb2JhbGx5KCkKICAg
ICBXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KCk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzczo6cHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpQ
cmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKK3ZvaWQgV2ViUHJvY2Vzczo6
cHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24m
JiBwcmV3YXJtSW5mb3JtYXRpb24pCiB7Ci0gICAgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnBy
ZXdhcm1XaXRoSW5mb3JtYXRpb24ocHJld2FybUluZm9ybWF0aW9uKTsKKyAgICBXZWJDb3JlOjpQ
cm9jZXNzV2FybWluZzo6cHJld2FybVdpdGhJbmZvcm1hdGlvbihXVEZNb3ZlKHByZXdhcm1JbmZv
cm1hdGlvbikpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0
eURvY3VtZW50KGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggOTZlNmNlZTIyMThmNmE5YjAwNTNkZDlmZmEwZDVkODNjZDNiNjRj
NS4uNjY4ODMxMGQ5NjE1OTdhZTc2Njk4OGRhNmEzYThlYjc4NTU5ZTRhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00MTEsNyArNDExLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHByZXdhcm1HbG9iYWxseSgpOwotICAg
IHZvaWQgcHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpQcmV3YXJt
SW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oV2Vi
Q29yZTo6UHJld2FybUluZm9ybWF0aW9uJiYpOwogCiAjaWYgVVNFKE9TX1NUQVRFKQogICAgIFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk+IGFkZGl0aW9uYWxTdGF0ZUZvckRpYWdub3N0aWNSZXBvcnQo
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9J
blByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggMGNhZGI1MDQyYmExNjEwNzdmOTQ0OWE5NzNkY2Y5ODMy
ZDM3MDJhZS4uNzc0M2Q1MDg4NTI0YmNlNWQ3ZDNmMzQ5MmZjNzcxN2E4N2FhMTA5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
QEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJh
c2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cgogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYgZGF0YWJhc2VzKQogewot
ICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgcmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyA9IGRhdGFiYXNlcy5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMgPSBjcm9zc1Ro
cmVhZENvcHkoZGF0YWJhc2VzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShkYXRhYmFzZXMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYmNiY2Y0NTE3YmZhYmQ0MTEzZDNkMjI1
ZDUxNjdjMzFiNTM5MDk0Li4zMjY0YmI4ZTRhNDI4MzU3YTczMmVmZGU3NDZjYmZlNGI0MWRiZWUy
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSBkZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzUwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZCB0ZXN0
IGNvdmVyYWdlIGZvciBjcm9zc1RocmVhZENvcHkoKSBhbmQgbWFrZSBzdXJlIHRoZSBvcHRpbWl6
YXRpb25zIGFyZSB3b3JraW5nCisgICAgICAgIHdoZW4gY2FsbGVkIG9uIGEgci12YWx1ZSByZWZl
cmVuY2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENv
cGllci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4gbWFrZUFsbERpcmVjdG9yaWVzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGll
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5j
cHAKaW5kZXggY2Q0ZGMyM2M3YjZhZWZiNGM5OWZmNTA4NDAzMzIyMTEzMzNkOGRlYi4uNGQ2NDc1
MDY4YzNkYWJkZDI0YzMxZmMxMGRkOGI4NDBiMTA0YmQzZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtMjcsNiArMjcs
OSBAQAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogCiAjaW5jbHVkZSAiVGVz
dC5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtODUsNCArODgsMTE4IEBAIFRFU1QoV1RGX0Ny
b3NzVGhyZWFkQ29waWVyLCBDb3B5UlZPcHRpb25hbFN0cmluZ0hhdmluZ1R3b1JlZikKICAgICBF
WFBFQ1RfVFJVRShjb3B5LT5pbXBsKCktPmhhc09uZVJlZigpKTsKIH0KIAorVEVTVChXVEZfQ3Jv
c3NUaHJlYWRDb3BpZXIsIFBhaXIpCit7CisgICAgc3RkOjpwYWlyIHBhaXIxIHsgImZvbyJfc3Ry
LCAiYmFyIl9zdHIgfTsKKyAgICBhdXRvKiBmaXJzdFN0cmluZ0ltcGwgPSBwYWlyMS5maXJzdC5p
bXBsKCk7CisgICAgYXV0byogc2Vjb25kU3RyaW5nSW1wbCA9IHBhaXIxLnNlY29uZC5pbXBsKCk7
CisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHBhaXIxKTsKKyAgICBFWFBFQ1RfRVEo
Y29weSwgcGFpcjEpOworICAgIEVYUEVDVF9ORShjb3B5LmZpcnN0LmltcGwoKSwgZmlyc3RTdHJp
bmdJbXBsKTsKKyAgICBFWFBFQ1RfTkUoY29weS5zZWNvbmQuaW1wbCgpLCBzZWNvbmRTdHJpbmdJ
bXBsKTsKKworICAgIHN0ZDo6cGFpciBwYWlyMiB7ICJmb28iX3N0ciwgImJhciJfc3RyIH07Cisg
ICAgZmlyc3RTdHJpbmdJbXBsID0gcGFpcjIuZmlyc3QuaW1wbCgpOworICAgIHNlY29uZFN0cmlu
Z0ltcGwgPSBwYWlyMi5zZWNvbmQuaW1wbCgpOworICAgIGNvcHkgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShwYWlyMikpOworICAgIEVYUEVDVF9FUShjb3B5LCBwYWlyMSk7CisgICAgRVhQRUNU
X0VRKGNvcHkuZmlyc3QuaW1wbCgpLCBmaXJzdFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9FUShj
b3B5LnNlY29uZC5pbXBsKCksIHNlY29uZFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9UUlVFKHBh
aXIyLmZpcnN0LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShwYWlyMi5zZWNvbmQuaXNOdWxs
KCkpOworfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgVmFyaWFudCkKK3sKKyAgICBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBVUkw+IHZhcmlhbnQ7CisgICAgdmFyaWFudCA9ICJmb28iX3N0
cjsKKyAgICBhdXRvKiBpbXBsID0gc3RkOjpnZXQ8U3RyaW5nPih2YXJpYW50KS5pbXBsKCk7Cisg
ICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9FUShj
b3B5LCB2YXJpYW50KTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBs
KCksIGltcGwpOworCisgICAgdmFyaWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGltcGwg
PSBzdGQ6OmdldDxVUkw+KHZhcmlhbnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jv
c3NUaHJlYWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9FUShjb3B5LCB2YXJpYW50KTsKKyAg
ICBFWFBFQ1RfTkUoc3RkOjpnZXQ8VVJMPihjb3B5KS5zdHJpbmcoKS5pbXBsKCksIGltcGwpOwor
CisgICAgdmFyaWFudCA9ICJmb28iX3N0cjsKKyAgICBpbXBsID0gc3RkOjpnZXQ8U3RyaW5nPih2
YXJpYW50KS5pbXBsKCk7CisgICAgY29weSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZhcmlh
bnQpKTsKKyAgICBBU1NFUlRfRVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KSwgImZvbyJfc3RyKTsK
KyAgICBFWFBFQ1RfRVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBsKCksIGltcGwpOworCisg
ICAgdmFyaWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGltcGwgPSBzdGQ6OmdldDxVUkw+
KHZhcmlhbnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUodmFyaWFudCkpOworICAgIEFTU0VSVF9FUShzdGQ6OmdldDxVUkw+KGNvcHkpLCBVUkwg
eyAiYmFyIl9zdHIgfSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6Z2V0PFVSTD4oY29weSkuc3RyaW5n
KCkuaW1wbCgpLCBpbXBsKTsKK30KKworVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIEhhc2hN
YXApCit7CisgICAgSGFzaE1hcDxDU3RyaW5nLCBTdHJpbmdJbXBsKj4gaW1wbHM7CisKKyAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBtYXA7CisgICAgbWFwLmFkZCgiZm9vIl9zdHIsICJmb29W
YWx1ZSJfc3RyKTsKKyAgICBtYXAuYWRkKCJiYXIiX3N0ciwgImJhclZhbHVlIl9zdHIpOworICAg
IGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogbWFwKSB7CisgICAgICAgIGltcGxzLmFkZChrZXku
dXRmOCgpLCBrZXkuaW1wbCgpKTsKKyAgICAgICAgaW1wbHMuYWRkKHZhbHVlLnV0ZjgoKSwgdmFs
dWUuaW1wbCgpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkobWFw
KTsKKyAgICBFWFBFQ1RfRVEoY29weSwgbWFwKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVl
XSA6IGNvcHkpIHsKKyAgICAgICAgRVhQRUNUX05FKGtleS5pbXBsKCksIGltcGxzLmdldChrZXku
dXRmOCgpKSk7CisgICAgICAgIEVYUEVDVF9ORSh2YWx1ZS5pbXBsKCksIGltcGxzLmdldCh2YWx1
ZS51dGY4KCkpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvcHkyID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUobWFwKSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfVFJV
RShtYXAuaXNFbXB0eSgpKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6IGNvcHkyKSB7
CisgICAgICAgIEVYUEVDVF9FUShrZXkuaW1wbCgpLCBpbXBscy5nZXQoa2V5LnV0ZjgoKSkpOwor
ICAgICAgICBFWFBFQ1RfRVEodmFsdWUuaW1wbCgpLCBpbXBscy5nZXQodmFsdWUudXRmOCgpKSk7
CisgICAgfQorfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgSGFzaFNldCkKK3sKKyAg
ICBIYXNoTWFwPENTdHJpbmcsIFN0cmluZ0ltcGwqPiBpbXBsczsKKworICAgIEhhc2hTZXQ8U3Ry
aW5nPiBzZXQ7CisgICAgc2V0LmFkZCgiZm9vIl9zdHIpOworICAgIHNldC5hZGQoImJhciJfc3Ry
KTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzZXQpCisgICAgICAgIGltcGxzLmFkZChpdGVtLnV0
ZjgoKSwgaXRlbS5pbXBsKCkpOworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHNl
dCk7CisgICAgRVhQRUNUX0VRKGNvcHksIHNldCk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogY29w
eSkKKyAgICAgICAgRVhQRUNUX05FKGl0ZW0uaW1wbCgpLCBpbXBscy5nZXQoaXRlbS51dGY4KCkp
KTsKKworICAgIGF1dG8gY29weTIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZXQpKTsKKyAg
ICBFWFBFQ1RfRVEoY29weTIsIGNvcHkpOworICAgIEVYUEVDVF9UUlVFKHNldC5pc0VtcHR5KCkp
OworICAgIGZvciAoYXV0byYgaXRlbSA6IGNvcHkyKQorICAgICAgICBFWFBFQ1RfRVEoaXRlbS5p
bXBsKCksIGltcGxzLmdldChpdGVtLnV0ZjgoKSkpOworfQorCitURVNUKFdURl9Dcm9zc1RocmVh
ZENvcGllciwgT3B0aW9uYWwpCit7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFs
OworICAgIG9wdGlvbmFsID0gImZvbyJfc3RyOworICAgIGF1dG8qIGltcGwgPSBvcHRpb25hbC0+
aW1wbCgpOworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbmFsKTsKKyAg
ICBFWFBFQ1RfRVEoY29weSwgb3B0aW9uYWwpOworICAgIEVYUEVDVF9ORShjb3B5LT5pbXBsKCks
IGltcGwpOworCisgICAgYXV0byBjb3B5MiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wdGlv
bmFsKSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfRVEoY29weTIt
PmltcGwoKSwgaW1wbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCmluZGV4IDVkNDZjM2NiZTkzYWNjZTM2
ZGE5ZjZlMmMwYTU0NzNlZmU5YmIwNWQuLjBiMTY2NzBhNDIyMWMwZDdlMmJkNGRlYWNjMmVkNWQ3
N2UzNmQ0YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rv
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTW92ZU9ubHku
aCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CkBAIC0xMjgsNyArMTI5LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb25zdHJ1Y3RXaXRo
RnJvbVN0cmluZykKICAgICBFWFBFQ1RfVFJVRShzMy5pc051bGwoKSk7CiB9CiAKLVRFU1QoV1RG
X1ZlY3RvciwgSXNvbGF0ZUNvcHkpCitURVNUKFdURl9WZWN0b3IsIElzb2xhdGVkQ29weSkKIHsK
ICAgICBTdHJpbmcgczEgPSAiczEiOwogICAgIFN0cmluZyBzMiA9ICJzMiI7CkBAIC0xNDAsNyAr
MTQxLDcgQEAgVEVTVChXVEZfVmVjdG9yLCBJc29sYXRlQ29weSkKICAgICBhdXRvKiBkYXRhMSA9
IHZlY3RvcjFbMF0uaW1wbCgpOwogICAgIGF1dG8qIGRhdGEyID0gdmVjdG9yMVsxXS5pbXBsKCk7
CiAKLSAgICBhdXRvIHZlY3RvcjIgPSB2ZWN0b3IxLmlzb2xhdGVkQ29weSgpOworICAgIGF1dG8g
dmVjdG9yMiA9IGNyb3NzVGhyZWFkQ29weSh2ZWN0b3IxKTsKIAogICAgIEVYUEVDVF9UUlVFKCJz
MSIgPT0gdmVjdG9yMlswXSk7CiAgICAgRVhQRUNUX1RSVUUoInMyIiA9PSB2ZWN0b3IyWzFdKTsK
QEAgLTE0OCw3ICsxNDksNyBAQCBURVNUKFdURl9WZWN0b3IsIElzb2xhdGVDb3B5KQogICAgIEVY
UEVDVF9GQUxTRShkYXRhMSA9PSB2ZWN0b3IyWzBdLmltcGwoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KGRhdGEyID09IHZlY3RvcjJbMV0uaW1wbCgpKTsKIAotICAgIGF1dG8gdmVjdG9yMyA9IFdURk1v
dmUodmVjdG9yMSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0byB2ZWN0b3IzID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUodmVjdG9yMSkpOwogICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yMS5zaXpl
KCkpOwogCiAgICAgRVhQRUNUX1RSVUUoInMxIiA9PSB2ZWN0b3IzWzBdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453914</attachid>
            <date>2022-03-05 11:07:27 -0800</date>
            <delta_ts>2022-03-05 13:29:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220305110726.patch</filename>
            <type>text/plain</type>
            <size>161132</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyZGM0ODMzNTA2MzNiNWEyYzJhNjFk
ZWVkZDY3ODE5NWIxMjlhYzEuLjYzYzlmMjI3NDAxZTVlZjIwM2Q0MjMxMDczZjEwNjQ2NzYyNTZm
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9z
cyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEcm9wIGlzb2xhdGVkQ29weSgpIG9uIFZlY3RvciBzaW5jZSBDcm9zc1RocmVhZENvcGllciBh
bHJlYWR5IGhhcyBsb2dpYyB0bworICAgICAgICBpc29sYXRlLWNvcHkgYSBWZWN0b3IuIFRoZSBs
b2dpYyBpbiBDcm9zc1RocmVhZENvcGllciBoYXMgdGhlIGJlbmVmaXQgb2YKKyAgICAgICAgd29y
a2luZyBvbiB0eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgaXNvbGF0ZWRDb3B5KCkgKGUuZy4g
YSBWZWN0b3Igb2YKKyAgICAgICAgc3RkOjpvcHRpb25hbCBvciBhIFZlY3RvciBvZiBzdGQ6OnZh
cmlhbnQpLgorCisgICAgICAgIEltcHJvdmUgdGhlIENyb3NzVGhyZWFkQ29waWVyIHRvIG9wdGlt
aXplIHRoZSBjYXNlIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpCisgICAgICAgIGlzIGNhbGxlZCBv
biBhIHItdmFsdWUgcmVmZXJlbmNlIGluIG1vcmUgY2FzZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBs
b2dpYworICAgICAgICBmb3IgVmVjdG9yLCBIYXNoU2V0LCBIYXNoTWFwLCBzdGQ6OnBhaXIsIHN0
ZDo6dmFyaWFudCB3YXMgaW1wcm92ZWQuIEkKKyAgICAgICAgYWxzbyBhZGRlZCBBUEkgdGVzdCBj
b3ZlcmFnZSBmb3IgdGhvc2UuCisKKyAgICAgICAgVGhlIEFQSSB0ZXN0cyBhbHNvIGZvdW5kIGEg
YnVnIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpIHdhcyBpbmNvcnJlY3RseQorICAgICAgICBtb3Zp
bmcgdGhlIHNvdXJjZSB3aGVuIGNhbGxlZCBvbiBhIHN0ZDo6dmFyaWFudCB0aGF0IHdhcyBub3Qg
YSByLXZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4gVGhpcyBidWcgaXMgZml4ZWQgaW4gdGhpcyBw
YXRjaCB0b28uCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4g
bWFrZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhmZGY3ZjdlZWEyYjI4ODNiMmY0ZDBk
NWVkNjAwODI5MTM0YjFjZi4uZGYxNzgwNmVjZjViYmUzZjZmZjAyNGI0Nzc1MWIxNzNjNWQwZmUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRh
dGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBtb3JlIGlzb2xhdGVkQ29weSgpIG92ZXJsb2FkcyB0aGF0IHdvcmsgb24g
ci12YWx1ZSByZWZlcmVuY2VzIHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhbiBi
ZSBvcHRpbWl6ZWQuIEFsc28gY2FsbCBpc29sYXRlZENvcHkoKSAvIGNyb3NzVGhyZWFkQ29weSgp
IG9uIGEgci12YWx1ZSByZWZlcmVuY2UKKyAgICAgICAgd2hlbmV2ZXIgcG9zc2libGUgdG8gbGV2
ZXJhZ2UgdGhlc2Ugb3B0aW1pemF0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZUNhY2hlSW5mbyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvczo6
aXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm9zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXRy
aWV2ZVJlY29yZHNPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmV0cmlldmVSZWNvcmRzT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVP
cGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRS
ZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3Jk
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJFcnJvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkVycm9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJ
bmZvLmg6CisgICAgICAgICogTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hv
dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdDo6SW5mbzo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNo
b3Q6OkluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdl
clNuYXBzaG90Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9j
a01hbmFnZXJTbmFwc2hvdDo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFt
RGVzY3JpcHRvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
UGFyYW1EZXNjcmlwdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29y
a2xldFRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZv
cm1UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZENvbm5lY3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRl
cnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5
SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJl
Y3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVS
TFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xhdGVk
Q29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29t
cGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2Fk
VHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
VHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1bGU6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvblJ1bGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6VHJpZ2dlcjo6flRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YkNvcmU6Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkRh
dGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZENvcHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRyYW5zY29kaW5nKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIv
UG9saWN5Q29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29s
YXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2Vu
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
VGltaW5nOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VU
aW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmg6
CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5o
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAg
ICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZWxlY3Rpb25PcHRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoaXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpV
bmNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmNsYWltKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0UGFy
YW1ldGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0
ZWRDb3B5KToKKwogMjAyMi0wMy0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGJyb2tlbiBTdXNwZW5kRXhjZXB0aW9uU2NvcGUgYW5kIHJlbW92ZSByZWR1
bmRhbnQgVk06OkRlZmVyRXhjZXB0aW9uU2NvcGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0NTgwZDZiNGVkMWEx
OTllZjRiYTRjMjU5NjE0NzUyMGMzZDgwNDEuLmEwMWE5YzE2NDhkMGEyNDdjNDVkNzUyMDMyN2Fi
MTVkMjliZjY5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjItMDMtMDUgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2lu
ZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbW9yZSBpc29sYXRlZENvcHkoKSBvdmVybG9hZHMgdGhhdCB3
b3JrIG9uIHItdmFsdWUgcmVmZXJlbmNlcyB3aGVuIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBjYW4gYmUgb3B0aW1pemVkLiBBbHNvIGNhbGwgaXNvbGF0ZWRDb3B5KCkgLyBjcm9zc1RocmVh
ZENvcHkoKSBvbiBhIHItdmFsdWUgcmVmZXJlbmNlCisgICAgICAgIHdoZW5ldmVyIHBvc3NpYmxl
IHRvIGxldmVyYWdlIHRoZXNlIG9wdGltaXphdGlvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1p
Z3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcjo6aXNvbGF0ZWRD
b3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3I6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9J
bmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1Z0luZm86Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmNv
bXBpbGVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RhbENv
bnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RhbENvbnRh
aW5lckNvbnRyb2xDbGFzc2lmaWVyOjpjbGFzc2lmeSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRNZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RvcCBzZXR0aW5nIE5TVVJMSXNFeGNsdWRlZEZyb21CYWNrdXBLZXkgYXR0
cmlidXRlIGZvciBsb2NhbFNvcmFnZURpcmVjdG9yeSBpbiBVSSBwcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCmluZGV4IGY2Yjg4OWUyZWZlYmFhZWZiYmZlNWI1Yzk4ODcyYjlmZjhjNzY2MWEuLjEz
YWM4ZGU5ZmRkODc0NDBjNDE2MzgwNGY0YWE5MjA1MTZjZDk4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0
aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbW9yZSBpc29sYXRlZENvcHkoKSBvdmVybG9hZHMgdGhhdCB3b3JrIG9uIHItdmFsdWUgcmVm
ZXJlbmNlcyB3aGVuIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBjYW4gYmUgb3B0aW1pemVk
LiBBbHNvIGNhbGwgaXNvbGF0ZWRDb3B5KCkgLyBjcm9zc1RocmVhZENvcHkoKSBvbiBhIHItdmFs
dWUgcmVmZXJlbmNlCisgICAgICAgIHdoZW5ldmVyIHBvc3NpYmxlIHRvIGxldmVyYWdlIHRoZXNl
IG9wdGltaXphdGlvbnMuCisKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyk6CisKIDIwMjItMDMtMDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29weSBXZWJLaXQgZnJhbWV3b3JrcyBhbmQgWFBDIHByb2Nlc3Nl
cyB0byBTZWNvbmRhcnkgUGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggMDFk
MmE3NzYzM2IwYjAyY2Y0ZGY1MjUwZmZkMjM0Y2JmMDM5N2I4Ny4uNDFlMTFiMzY1NzdkYTE4YmE3
MDlmZjE0ZGI0MGYzZDJmNjNiOTE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC0xNDIsNiArMTQyLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgICAgICAgICBk
ZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoQ3Jvc3NUaHJlYWRDb3BpZXI8VD46OmNvcHkob2Jq
ZWN0KSk7CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5
cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9y
ID0gc291cmNlLmJlZ2luKCksIGl0ZXJhdG9yRW5kID0gc291cmNlLmVuZCgpOyBpdGVyYXRvciA8
IGl0ZXJhdG9yRW5kOyArK2l0ZXJhdG9yKQorICAgICAgICAgICAgKml0ZXJhdG9yID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8VD46OmNvcHkoV1RGTW92ZSgqaXRlcmF0b3IpKTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUoc291cmNlKTsKKyAgICB9CiB9OwogICAgIAogLy8gRGVmYXVsdCBzcGVjaWFsaXph
dGlvbiBmb3IgSGFzaFNldHMgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzCkBAIC0xNTQs
MjYgKzE2MCw0MyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgSGFzaFNldDxUPiA+IHsKICAgICAgICAgICAgIGRlc3RpbmF0
aW9uLmFkZChDcm9zc1RocmVhZENvcGllcjxUPjo6Y29weShvYmplY3QpKTsKICAgICAgICAgcmV0
dXJuIGRlc3RpbmF0aW9uOwogICAgIH0KKyAgICBzdGF0aWMgVHlwZSBjb3B5KFR5cGUmJiBzb3Vy
Y2UpCisgICAgeworICAgICAgICBUeXBlIGRlc3RpbmF0aW9uOworICAgICAgICBkZXN0aW5hdGlv
bi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5zaXplKCkpOworICAgICAgICB3aGlsZSAo
IXNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJl
YWRDb3BpZXI8VD46OmNvcHkoc291cmNlLnRha2VBbnkoKSkpOworICAgICAgICByZXR1cm4gZGVz
dGluYXRpb247CisgICAgfQogfTsKIAogLy8gRGVmYXVsdCBzcGVjaWFsaXphdGlvbiBmb3IgSGFz
aE1hcHMgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
LCB0eXBlbmFtZSBWPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
SGFzaE1hcDxLLCBWPiA+IHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8SywgVj4gVHlwZTsKK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgdHlwZW5h
bWUgVGFibGVUcmFpdHNBcmc+CitzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBm
YWxzZSwgSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzQXJnPj4geworICAgIHR5cGVkZWYgSGFzaE1hcDxL
ZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcs
IFRhYmxlVHJhaXRzQXJnPiBUeXBlOwogICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgVHlwZSYg
c291cmNlKQogICAgIHsKICAgICAgICAgVHlwZSBkZXN0aW5hdGlvbjsKLSAgICAgICAgZm9yIChh
dXRvJiBrZXlWYWx1ZSA6IHNvdXJjZSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChDcm9z
c1RocmVhZENvcGllcjxLPjo6Y29weShrZXlWYWx1ZS5rZXkpLCBDcm9zc1RocmVhZENvcGllcjxW
Pjo6Y29weShrZXlWYWx1ZS52YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVl
XSA6IHNvdXJjZSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChDcm9zc1RocmVhZENvcGll
cjxLZXlBcmc+Ojpjb3B5KGtleSksIENyb3NzVGhyZWFkQ29waWVyPE1hcHBlZEFyZz46OmNvcHko
dmFsdWUpKTsKICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogICAgIH0KKyAgICBzdGF0aWMg
VHlwZSBjb3B5KFR5cGUmJiBzb3VyY2UpCisgICAgeworICAgICAgICBmb3IgKGF1dG8gaXRlcmF0
b3IgPSBzb3VyY2UuYmVnaW4oKSwgZW5kID0gc291cmNlLmVuZCgpOyBpdGVyYXRvciAhPSBlbmQ7
ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT5rZXkgPSBDcm9zc1RocmVhZENv
cGllcjxLZXlBcmc+Ojpjb3B5KFdURk1vdmUoaXRlcmF0b3ItPmtleSkpOworICAgICAgICAgICAg
aXRlcmF0b3ItPnZhbHVlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8TWFwcGVkQXJnPjo6Y29weShXVEZN
b3ZlKGl0ZXJhdG9yLT52YWx1ZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KHNvdXJjZSk7CisgICAgfQogfTsKIAogLy8gRGVmYXVsdCBzcGVjaWFsaXphdGlvbiBmb3IgcGFp
cnMgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0
eXBlbmFtZSBTPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgc3Rk
OjpwYWlyPEYsIFM+ID4gewogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEYsIFM+IFR5cGU7Ci0gICAg
c3RhdGljIFR5cGUgY29weShjb25zdCBUeXBlJiBzb3VyY2UpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gc3RhdGljIFR5cGUgY29weShVJiYgc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKENyb3NzVGhyZWFkQ29waWVyPEY+Ojpjb3B5KHNvdXJjZS5maXJzdCks
IENyb3NzVGhyZWFkQ29waWVyPFM+Ojpjb3B5KHNvdXJjZS5zZWNvbmQpKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKENyb3NzVGhyZWFkQ29waWVyPEY+Ojpjb3B5KHN0ZDo6Z2V0PDA+
KHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKSksIENyb3NzVGhyZWFkQ29waWVyPFM+Ojpjb3B5KHN0
ZDo6Z2V0PDE+KHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKSkpOwogICAgIH0KIH07CiAKQEAgLTE4
OSwxMSArMjEyLDE4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFQ+CiAKIC8vIERlZmF1bHQgc3Bl
Y2lhbGl6YXRpb24gZm9yIHN0ZDo6dmFyaWFudCBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNz
ZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4+IHsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBzdGF0aWMgc3RkOjp2YXJpYW50PFR5cGVzLi4uPiBjb3B5KFUmJiBzb3Vy
Y2UpCisgICAgdXNpbmcgVHlwZSA9IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj47CisgICAgc3RhdGlj
IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShjb25zdCBUeXBlJiBzb3VyY2UpCiAgICAgewog
ICAgICAgICByZXR1cm4gc3RkOjp2aXNpdChbXSAoYXV0byYgdHlwZSkgLT4gc3RkOjp2YXJpYW50
PFR5cGVzLi4uPiB7CiAgICAgICAgICAgICByZXR1cm4gQ3Jvc3NUaHJlYWRDb3BpZXI8c3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZSh0eXBlKT4+Pjo6
Y29weSh0eXBlKTsKLSAgICAgICAgfSwgc3RkOjpmb3J3YXJkPFU+KHNvdXJjZSkpOworICAgICAg
ICB9LCBzb3VyY2UpOworICAgIH0KKyAgICBzdGF0aWMgc3RkOjp2YXJpYW50PFR5cGVzLi4uPiBj
b3B5KFR5cGUmJiBzb3VyY2UpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp2aXNpdChbXSAo
YXV0byYmIHR5cGUpIC0+IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4geworICAgICAgICAgICAgcmV0
dXJuIENyb3NzVGhyZWFkQ29waWVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVm
ZXJlbmNlX3Q8ZGVjbHR5cGUodHlwZSk+Pj46OmNvcHkoV1RGTW92ZSh0eXBlKSk7CisgICAgICAg
IH0sIFdURk1vdmUoc291cmNlKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBjNmJkYWU5ZTcy
NTc4YzFlNTMwM2YxY2EyODZmOGU2OGVhOWNiOWU1Li40Njc5YTE4ZGYwMTQ1ZDI0NWUxNzI0MWM3
OWZjNmQ3YmFhYTFiMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzc2LDkgKzc3Niw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXIoKSB7IHNocmlua0NhcGFjaXR5KDApOyB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gVD4gVmVjdG9yPFU+IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSAmJjsKLQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgYXBwZW5kPFZh
bHVlVHlwZT4oc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odmFsdWUpKTsgfQogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoVSYmIHUpIHsgYXBwZW5kPEZh
aWx1cmVBY3Rpb246OkNyYXNoLCBVPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lOTElORSBib29sIHRyeUFwcGVuZChVJiYgdSkgeyByZXR1
cm4gYXBwZW5kPEZhaWx1cmVBY3Rpb246OlJlcG9ydCwgVT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsg
fQpAQCAtMTY1OSwyNiArMTY1Niw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1
ZUNoZWNrPFZlY3RvcjxUPj4gewogfTsKICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBVPgotaW5saW5lIFZlY3RvcjxVPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omlzb2xhdGVkQ29weSgpIGNvbnN0
ICYKLXsKLSAgICBWZWN0b3I8VT4gY29weTsKLSAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqdGhpcykKLSAgICAg
ICAgY29weS51bmNoZWNrZWRBcHBlbmQoZWxlbWVudC5pc29sYXRlZENvcHkoKSk7Ci0gICAgcmV0
dXJuIGNvcHk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1l
IE1hbGxvYz4KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1pbmxpbmUgVmVjdG9yPFU+IFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6
aXNvbGF0ZWRDb3B5KCkgJiYKLXsKLSAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBiZWdpbigpLCBp
dGVyYXRvckVuZCA9IGVuZCgpOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyArK2l0ZXJhdG9yKQot
ICAgICAgICAqaXRlcmF0b3IgPSBXVEZNb3ZlKCppdGVyYXRvcikuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgcmV0dXJuIFdURk1vdmUoKnRoaXMpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JU
eXBlLCB0eXBlbmFtZSBGdW5jPgogc2l6ZV90IHJlbW92ZVJlcGVhdGVkRWxlbWVudHMoVmVjdG9y
VHlwZSYgdmVjdG9yLCBjb25zdCBGdW5jJiBmdW5jKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3Rl
bU1hYy5tbQppbmRleCBiYjYyZGFhMzM4MzRjMzI4ZDBlNTE5ZDZmMjVmNGNiOWZmYjkxNzg2Li4y
ZmIxYTVmMjU2MTdlZmIwMzZhYTk0ZjE3YmQ1MzVmNzRlYmI1N2JhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEZpbGVTeXN0ZW06OnNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0
cgogICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKIAogICAgIC8vIENhbGwg
TWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNhbiB0YWtlIHNv
bWUgdGltZS4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSBy
ZWZlcnJlci5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRo
ID0gcGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gV1RGTW92ZSh1cmxTdHJpbmcpLmlz
b2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7CiAgICAg
ICAgIGF1dG8gaXRlbSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlUXVlcnlPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
UXVlcnlPcHRpb25zLmgKaW5kZXggMDFmZGM5MzdjNzUxODE1M2UwMGJjY2I3ZWQ1OTFhNTgxMTQ0
ZjJkZS4uY2YxYTY3NDk3OTc4ZDIyMzRhZjRjZDYzOTJkZWZjNWI2YWIyMmE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaApAQCAtMzAs
NyArMzAsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ2FjaGVRdWVyeU9wdGlv
bnMgewotICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IHsgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIGNhY2hlTmFtZS5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJiB7IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBj
YWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9y
ZVZhcnksIFdURk1vdmUoY2FjaGVOYW1lKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICBib29s
IGlnbm9yZVNlYXJjaCB7IGZhbHNlIH07CiAgICAgYm9vbCBpZ25vcmVNZXRob2QgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApp
bmRleCBjMGY4MDMyYjA0NTJjMzdlZTRjYWZiY2FmZDc5ZjA5ZDIxNDYzMzI2Li5iNDI4MjY1YzEy
NzgyNTQ3YzFhMGRlNDJmOWE2ZjIyY2U0MzhkZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTU0LDE2ICsxNTQsNiBAQCBSZWNv
cmQgUmVjb3JkOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gUmVjb3JkIHsgaWRlbnRpZmllciwg
dXBkYXRlUmVzcG9uc2VDb3VudGVyLCByZXF1ZXN0SGVhZGVyc0d1YXJkLCByZXF1ZXN0LCBvcHRp
b25zLCByZWZlcnJlciwgcmVzcG9uc2VIZWFkZXJzR3VhcmQsIHJlc3BvbnNlLCBjb3B5UmVzcG9u
c2VCb2R5KHJlc3BvbnNlQm9keSksIHJlc3BvbnNlQm9keVNpemUgfTsKIH0KIAotc3RhdGljIGlu
bGluZSBDYWNoZUluZm8gaXNvbGF0ZUNhY2hlSW5mbyhjb25zdCBDYWNoZUluZm8mIGluZm8pCi17
Ci0gICAgcmV0dXJuIENhY2hlSW5mbyB7IGluZm8uaWRlbnRpZmllciwgaW5mby5uYW1lLmlzb2xh
dGVkQ29weSgpIH07Ci19Ci0KLUNhY2hlSW5mb3MgQ2FjaGVJbmZvczo6aXNvbGF0ZWRDb3B5KCkK
LXsKLSAgICByZXR1cm4geyBXVEY6Om1hcChpbmZvcywgaXNvbGF0ZUNhY2hlSW5mbyksIHVwZGF0
ZUNvdW50ZXIgfTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmJlNWMyYzFlMzU0MGM3NmZlYzc3ZWQ1YzRmNmVhMGFiNDIyOTc1YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTgyLDE2ICs4MiwyMCBA
QCBzdHJ1Y3QgUmVjb3JkIHsKIHN0cnVjdCBDYWNoZUluZm8gewogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXI7CiAgICAgU3RyaW5nIG5hbWU7CisKKyAgICBDYWNoZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJiB7IHJldHVybiB7IGlkZW50aWZpZXIsIG5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQor
ICAgIENhY2hlSW5mbyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGlkZW50aWZpZXIsIFdU
Rk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAogc3RydWN0IENhY2hlSW5mb3Mg
ewotICAgIENhY2hlSW5mb3MgaXNvbGF0ZWRDb3B5KCk7CisgICAgVmVjdG9yPENhY2hlSW5mbz4g
aW5mb3M7CisgICAgdWludDY0X3QgdXBkYXRlQ291bnRlcjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYWNoZUluZm9zPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCi0gICAgVmVjdG9yPENhY2hlSW5mbz4gaW5mb3M7Ci0gICAgdWludDY0X3QgdXBkYXRl
Q291bnRlcjsKKyAgICBDYWNoZUluZm9zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBjcm9zc1RocmVhZENvcHkoaW5mb3MpLCB1cGRhdGVDb3VudGVyIH07IH0KKyAgICBDYWNoZUlu
Zm9zIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
aW5mb3MpKSwgdXBkYXRlQ291bnRlciB9OyB9CiB9OwogCiBzdHJ1Y3QgQ2FjaGVJZGVudGlmaWVy
T3BlcmF0aW9uUmVzdWx0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKaW5kZXggMGZhMDJiYmJkYzMzOTFjZGJkYmNmZDhh
YmU2YWZmZjRhZmNhMTUwZi4uNzU2MDQ1OTQ3ZjZlZTUxODRlYmQwODlhNWQ2ZmIyY2MyOGY0NTUz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29y
ZHNPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJl
Y29yZHNPcHRpb25zLmgKQEAgLTMzLDcgKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgewotICAgIFJldHJpZXZlUmVjb3Jkc09wdGlv
bnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBzb3VyY2VPcmlnaW4t
Pmlzb2xhdGVkQ29weSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwg
c2hvdWxkUHJvdmlkZVJlc3BvbnNlIH07IH0KKyAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBj
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBzb3VyY2VPcmlnaW4tPmlz
b2xhdGVkQ29weSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgc2hv
dWxkUHJvdmlkZVJlc3BvbnNlIH07IH0KKyAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShyZXF1ZXN0KS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KS5pc29sYXRlZENvcHkoKSwgc291cmNl
T3JpZ2luLT5pc29sYXRlZENvcHkoKSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9y
ZVZhcnksIHNob3VsZFByb3ZpZGVSZXNwb25zZSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0cmlldmVSZWNvcmRzT3B0aW9ucz4gZGVj
b2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDQ2ZmY3Y2VjZDNl
MjIzMjlkNjc1ZGUyNWUyZTZiZDc5YzU0YjkxMmMuLmJkMjA0YTljNzlmNDUxNGNmOTAwM2VjZTM2
NmRhMzRjZjFjZWM1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTgwLDcgKzE4
MCw3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpCiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9
IHJlc3VsdC52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOworICAgICAgICAgICAgICAgIGlzb2xhdGVk
UmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICAg
ICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElk
ZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUoaXNvbGF0ZWRSZXN1bHQpXSAoYXV0byYgc2NvcGUp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihz
Y29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnJldHJpZXZlQ2FjaGVzQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHZv
aWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSAr
K21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5n
UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLnRocmVhZCgp
IH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVz
dElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUudGhyZWFkKCkg
fSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENv
cHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucykuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihj
YWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFt3b3JrZXJUaHJlYWQg
PSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlm
aWVyc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0g
V1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlv
bigpLmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVz
dWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9N
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmls
ZVN5c3RlbS5jcHAKaW5kZXggMDE2ZDE3MTcyODc1ZDJhNTM5YzZjMmEyOTVlOGQ1MmM0Njg1MTg0
MC4uOTgyZTViNTgzN2Y1YzVlNTI4MDc5MTVjYTdiYmI2NmNhMTM5NjdkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAt
NDQsNyArNDQsOCBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogICAgIFN0cmluZyBmaWxlbmFtZTsK
ICAgICBGaWxlU3lzdGVtOjpGaWxlVHlwZSB0eXBlOwogCi0gICAgTGlzdGVkQ2hpbGQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBmaWxlbmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9
OyB9CisgICAgTGlzdGVkQ2hpbGQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGZp
bGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07IH0KKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZmlsZW5hbWUpLmlzb2xhdGVkQ29weSgpLCB0
eXBlIH07IH0KIH07CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW06OkZpbGVUeXBl
PiBmaWxlVHlwZUlnbm9yaW5nSGlkZGVuRmlsZXMoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKQEAg
LTI1Niw3ICsyNTcsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcgogCiAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJl
ZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0
dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFk
YXRhKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJl
biA9IGNyb3NzVGhyZWFkQ29weShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRo
ID0gZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4gPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShsaXN0ZWRDaGlsZHJlbikpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9y
eVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcyhjb250ZXh0LCBwcm90ZWN0ZWRUaGlz
LCBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGgpKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRleCA1MzU1MGZhN2Q5YTE1OWZl
MWY5ZjdlNzc2ZTNkZGU2ZmE1MjdkNGY3Li5kOGY4NTY3NGNkMTEwYjMxMDlmNmE5ZTQ4Zjc5YzZk
N2ZmNWI0M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTQyLDE0ICs0MiwyMSBAQCBJREJE
YXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgU2VjdXJpdAogICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsK
IH0KIAotSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK0lEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZp
ZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIg
aWRlbnRpZmllcjsKLQogICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFiYXNl
TmFtZS5pc29sYXRlZENvcHkoKTsKICAgICBpZGVudGlmaWVyLm1fb3JpZ2luID0gbV9vcmlnaW4u
aXNvbGF0ZWRDb3B5KCk7CiAgICAgaWRlbnRpZmllci5tX2lzVHJhbnNpZW50ID0gbV9pc1RyYW5z
aWVudDsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KIAorSURCRGF0YWJhc2VJZGVudGlmaWVy
IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1l
ID0gV1RGTW92ZShtX2RhdGFiYXNlTmFtZSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWRlbnRpZmll
ci5tX29yaWdpbiA9IFdURk1vdmUobV9vcmlnaW4pLmlzb2xhdGVkQ29weSgpOworICAgIGlkZW50
aWZpZXIubV9pc1RyYW5zaWVudCA9IG1faXNUcmFuc2llbnQ7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggZjgzZjE5NWE1NmRlZmQyYjNmMGVjZDhlOWQ2
NzE0ZDI5NDBkMGEyMi4uMjcxZGVkNGRlZThiODg4ZDMxZTRjNGMxMWUxZDFmYzg4OWRiYTZhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgSURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBtYWluRnJhbWVPcmlnaW4sIGJvb2wgaXNUcmFuc2llbnQgPSBmYWxzZSk7CiAKLSAgICBJREJE
YXRhYmFzZUlkZW50aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5jcHAKaW5kZXggNTQ3OWQ2MWYxZjAzYTlmMmYyZmUzOTNjZjcyZGMyOTUy
MmQ1NGY1Mi4uYWI1NjcyMjMxZjJiYjQyNDMyYTI5YjIwNzRmYTBhMDY3YmMzNDUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgSURCR2V0UmVzdWx0Ojppc29sYXRlZENvcHkoY29uc3QgSURC
R2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluCiAgICAgZGVzdGluYXRpb24u
bV9wcmltYXJ5S2V5RGF0YSA9IHNvdXJjZS5tX3ByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgp
OwogICAgIGRlc3RpbmF0aW9uLm1fa2V5UGF0aCA9IGNyb3NzVGhyZWFkQ29weShzb3VyY2UubV9r
ZXlQYXRoKTsKICAgICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJjZS5tX2lzRGVmaW5l
ZDsKLSAgICBkZXN0aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNvcmRzID0gc291cmNlLm1fcHJlZmV0
Y2hlZFJlY29yZHMuaXNvbGF0ZWRDb3B5KCk7CisgICAgZGVzdGluYXRpb24ubV9wcmVmZXRjaGVk
UmVjb3JkcyA9IGNyb3NzVGhyZWFkQ29weShzb3VyY2UubV9wcmVmZXRjaGVkUmVjb3Jkcyk7CiB9
CiAKIHZvaWQgSURCR2V0UmVzdWx0OjpzZXRWYWx1ZShJREJWYWx1ZSYmIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGNlODY3YjFiN2U2ZDZmMTU0OWVjZDcyNjEyN2RjYzc2OTk1YTlkMDYuLjc3M2U1YjJkM2Fh
NWQyOGViZWJhODM2Zjk3NzJjODdkNTQ2ODI2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTkzMiw3ICs5MzIsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9y
ZVJlY29yZHMoSURCT2JqZWN0U3RvcmUmCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJ
REIgZ2V0IGFsbCBvYmplY3Qgc3RvcmUgcmVjb3JkcyBvcGVyYXRpb246ICVzIiwgZ2V0QWxsUmVj
b3Jkc0RhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHNjaGVkdWxlT3Bl
cmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMs
IHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0g
KGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRBbGxS
ZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKLSAgICB9LCBbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0Rh
dGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNEYXRhID0gV1RGTW92ZShnZXRBbGxS
ZWNvcmRzRGF0YSkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVyKG9wZXJhdGlvbiwgZ2V0QWxsUmVj
b3Jkc0RhdGEpOwogICAgIH0pKTsKIApAQCAtOTU0LDcgKzk1NCw3IEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYgaW5k
ZXgsIGNvbnN0CiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZ2V0IGFsbCBpbmRl
eCByZWNvcmRzIG9wZXJhdGlvbjogJXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEdldEFsbFJlY29yZHNPblNlcnZlcihyZXF1ZXN0
LmdldCgpLCByZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Z2V0QWxsUmVjb3Jkc0RhdGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1
dG8mIG9wZXJhdGlvbikgeworICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Z2V0QWxsUmVjb3Jkc0RhdGEgPSBXVEZNb3ZlKGdldEFsbFJlY29yZHNEYXRhKS5pc29sYXRlZENv
cHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRBbGxS
ZWNvcmRzT25TZXJ2ZXIob3BlcmF0aW9uLCBnZXRBbGxSZWNvcmRzRGF0YSk7CiAgICAgfSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCBjOWRkMWQwMzZlN2MxOTRhOWNjYjE0NmMw
NWEwNzYzMWFkM2RkYjNjLi43ZWY5ZDBhMzg3ZjcyN2Q4NWVjMGRlZWY2ZDNjYWUwZGVkMDE1OGNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBJREJFcnJv
ciBNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlzdGluZ1JlY29yZHMoTWVt
b3J5SW5kZXgmIGluZGV4KQogCiAgICAgICAgICAgICBJbmRleEtleSBpbmRleEtleTsKICAgICAg
ICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShnbG9iYWxPYmplY3QsIGluZGV4SW5mbywg
anNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5UGF0aCgpLCBrZXkpOwotICAgICAgICAgICAgcmVz
dWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgICAgIHJlc3Vs
dEluZGV4S2V5ID0gV1RGTW92ZShpbmRleEtleSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIGlmICghcmVzdWx0SW5kZXhLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDkyMWFhMmIwYjg4MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYu
LmI1M2U4YmE5NjJmNmZiNzcyMjNkY2EzYmQ0ZTYyYjYxYjU5N2I1NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xODg2LDcgKzE4ODYsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKElEQk9iamVjdFN0
b3JlSW5mbyYgbwogCiAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwogICAgICAgICBnZW5lcmF0
ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwg
b2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKLSAgICAgICAgcmVzdWx0SW5kZXhLZXkg
PSBpbmRleEtleS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBXVEZN
b3ZlKGluZGV4S2V5KS5pc29sYXRlZENvcHkoKTsKICAgICB9KTsKIAogICAgIGlmICghcmVzdWx0
SW5kZXhLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAppbmRleCBmNGM3
NWUwZTI3YTY5MDYzZDQ3NmRjY2I5ZGQ3OGM1YzhkZGE2MmFhLi5jNzFkMDdmNjljM2RiYjQ3MGQ2
MTE3NzYzZWRiZDlkODQxMDM3NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uLmgKQEAgLTM2LDcgKzM2LDggQEAgc3RydWN0IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24g
ewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBuYW1lLmlzb2xh
dGVkQ29weSgpLCB2ZXJzaW9uIH07IH0KKyAgICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
dmVyc2lvbiB9OyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTksOSArNjAs
NCBAQCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb246OmRlY29kZShEZWNvZAogICAgIHJldHVybiBpbmZvOwogfQogCi1pbmxp
bmUgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpp
c29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IG5hbWUuaXNvbGF0ZWRDb3B5KCks
IHZlcnNpb24gfTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKaW5kZXggMmUw
YTU3YWM2NjdiNjJjYzZjZmJkYmU0Y2Y2ZjE1MTg5OWIyMThhYi4uMThlZDdlMjFiMzU1MGQzOTk0
MjI4ZWUwYWE3ZGE0OGU5ODFmNjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCkBAIC0zNiwxMSArMzYsNiBAQCBJREJF
cnJvcjo6SURCRXJyb3Ioc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBjb2RlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiB9CiAKLUlEQkVycm9yIElEQkVycm9yOjppc29sYXRlZENvcHko
KSBjb25zdAotewotICAgIHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgbV9tZXNzYWdlLmlzb2xh
dGVkQ29weSgpIH07Ci19Ci0KIFN0cmluZyBJREJFcnJvcjo6bmFtZSgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2NvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5oCmluZGV4IGIzMGFkMzkxNzZmMDNmZjBkNmM5Mzk4ZDZiM2VkMTljZDJl
OTkyMWQuLjMyOTY1NmNlOWY0Mjg4N2YzZDBiZjcwOGM5YjBjNjNhOTE1ZTAxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBA
IC01NCw3ICs1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NvZGU7IH0KICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsK
KyAgICBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIElEQkVycm9yIHsg
bV9jb2RlLCBtX21lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIElEQkVycm9yIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIElEQkVycm9yIHsgbV9jb2RlLCBXVEZNb3ZlKG1fbWVzc2Fn
ZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIElEQkVycm9yJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
SW5kZXhJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJJbmRleEluZm8uY3BwCmluZGV4IDAxNWFjZjcyNzY5NDUzNzRjNGFkYjhhZDI0MzRiYTNiNzk5
YWFmZGEuLmU3MWQyZWJmMjFjNGFkZmVmMjhhMmJkYWZhMWZmODRiM2Y3ZjAzOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRl
eEluZm8uY3BwCkBAIC00NSwxMSArNDUsMTYgQEAgSURCSW5kZXhJbmZvOjpJREJJbmRleEluZm8o
dWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLAogewog
fQogCi1JREJJbmRleEluZm8gSURCSW5kZXhJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAorSURC
SW5kZXhJbmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJl
dHVybiB7IG1faWRlbnRpZmllciwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIsIG1fbmFtZS5pc29s
YXRlZENvcHkoKSwgY3Jvc3NUaHJlYWRDb3B5KG1fa2V5UGF0aCksIG1fdW5pcXVlLCBtX211bHRp
RW50cnkgfTsKIH0KIAorSURCSW5kZXhJbmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkg
JiYKK3sKKyAgICByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBXVEZNb3ZlKG1fbmFtZSkuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KG1fa2V5UGF0aCkpLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5IH07Cit9CisKICNpZiAhTE9HX0RJ
U0FCTEVECiAKIFN0cmluZyBJREJJbmRleEluZm86OmxvZ2dpbmdTdHJpbmcoaW50IGluZGVudCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uaAppbmRleCA5ZjFlYjlhMGExMDE0NDM4Y2IyMzg2M2FhY2EyMTRiN2Nm
NDFiY2U2Li5hMTBmOGY1MmYzNDIxYTE3OWUwZGNhZDlhYWI5N2YyZmMxYThlZGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4
SW5mby5oCkBAIC0zNSw3ICszNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJJ
bmRleEluZm8oKTsKICAgICBJREJJbmRleEluZm8odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIElEQktleVBhdGgm
JiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBJ
REJJbmRleEluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURC
SW5kZXhJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgSURC
SW5kZXhJbmZvIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2Jq
ZWN0U3RvcmVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCmluZGV4IDEwYzFhNGM1MTVlMmVhZWY4MDkzOTQyYmIz
NmM1ZDhkNTIzNGMwY2MuLjFlOGI4ZGVhNDBiZjhiZDM2YmQyNzIzZTkyMDAxMDYwNmFkNTYwNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJP
YmplY3RTdG9yZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCkBAIC05MiwxMyArOTIsMTcgQEAgSURCSW5k
ZXhJbmZvKiBJREJPYmplY3RTdG9yZUluZm86OmluZm9Gb3JFeGlzdGluZ0luZGV4KHVpbnQ2NF90
IGlkZW50aWZpZXIpCiAgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7CiB9CiAKLUlEQk9iamVj
dFN0b3JlSW5mbyBJREJPYmplY3RTdG9yZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CitJREJP
YmplY3RTdG9yZUluZm8gSURCT2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAm
CiB7CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIHJlc3VsdCA9IHsgbV9pZGVudGlmaWVyLCBtX25h
bWUuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhyZWFkQ29weShtX2tleVBhdGgpLCBtX2F1dG9JbmNy
ZW1lbnQgfTsKKyAgICByZXN1bHQubV9pbmRleE1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2luZGV4
TWFwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCi0gICAgZm9yIChhdXRvJiBpdGVyYXRvciA6
IG1faW5kZXhNYXApCi0gICAgICAgIHJlc3VsdC5tX2luZGV4TWFwLnNldChpdGVyYXRvci5rZXks
IGl0ZXJhdG9yLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLQorSURCT2JqZWN0U3RvcmVJbmZvIElE
Qk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBJREJPYmplY3RTdG9y
ZUluZm8gcmVzdWx0ID0geyBtX2lkZW50aWZpZXIsIFdURk1vdmUobV9uYW1lKS5pc29sYXRlZENv
cHkoKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9rZXlQYXRoKSksIG1fYXV0b0luY3JlbWVu
dCB9OworICAgIHJlc3VsdC5tX2luZGV4TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9p
bmRleE1hcCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8u
aAppbmRleCA0MDNmZDQwNTk4NmJjNWQ5MjdiNGU2M2FkZjBjOTVmZWYxYWU5Njk5Li5lM2EwM2Jm
NzU2NTgzMWE3NTA4MzU5ZDU4YzI2ZWE5MTJlNzE4MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5m
by5oCkBAIC00NCw3ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVuYW1lKGNvbnN0IFN0
cmluZyYgbmV3TmFtZSkgeyBtX25hbWUgPSBuZXdOYW1lOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBJREJPYmplY3RTdG9yZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSURCT2JqZWN0U3RvcmVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VC
Q09SRV9FWFBPUlQgSURCT2JqZWN0U3RvcmVJbmZvIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAg
SURCSW5kZXhJbmZvIGNyZWF0ZU5ld0luZGV4KHVpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCS2V5UGF0aCYmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKICAg
ICB2b2lkIGFkZEV4aXN0aW5nSW5kZXgoY29uc3QgSURCSW5kZXhJbmZvJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBz
aG90LmgKaW5kZXggNDQyYzMwM2QyYTg3NGUyOTQzZWY3YWM1ZjYyZmNlMzYwMGYyZTc1YS4uMjcw
N2Y3MTYyZjlkZDBhMzE5MDVhMjg0NGQ3MDZjNDZmMjIxMzEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3Qu
aApAQCAtMzcsNyArMzcsOCBAQCBzdHJ1Y3QgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCB7CiAgICAg
ICAgIFdlYkxvY2tNb2RlIG1vZGUgeyBXZWJMb2NrTW9kZTo6RXhjbHVzaXZlIH07CiAgICAgICAg
IFN0cmluZyBjbGllbnRJZDsKIAotICAgICAgICBJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgbW9kZSwgY2xpZW50SWQuaXNvbGF0ZWRDb3B5
KCkgfTsgfQorICAgICAgICBJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBu
YW1lLmlzb2xhdGVkQ29weSgpLCBtb2RlLCBjbGllbnRJZC5pc29sYXRlZENvcHkoKSB9OyB9Cisg
ICAgICAgIEluZm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpLCBtb2RlLCBXVEZNb3ZlKGNsaWVudElkKS5pc29sYXRlZENvcHkoKSB9OyB9
CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IG5hbWUgPDwgbW9kZSA8PCBjbGllbnRJZDsgfQog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDYsNyArNDcsOCBAQCBzdHJ1Y3QgV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdCB7CiAgICAgVmVjdG9yPEluZm8+IGhlbGQ7CiAgICAgVmVjdG9yPEluZm8+IHBl
bmRpbmc7CiAKLSAgICBXZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGhlbGQpLCBjcm9zc1RocmVhZENvcHkocGVuZGlu
ZykgfTsgfQorICAgIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShoZWxkKSwgY3Jvc3NUaHJlYWRDb3B5KHBlbmRp
bmcpIH07IH0KKyAgICBXZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpICYmIHsg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoaGVsZCkpLCBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShwZW5kaW5nKSkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IGhlbGQgPDwgcGVu
ZGluZzsgfQogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkxvY2tNYW5hZ2VyU25hcHNob3Q+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgKaW5k
ZXggMWVkNmNkZTcyOWVmOTM1NzcwYmE5NjM3ZDNhZmE1ZjAyYThkODY0ZS4uNWRlNTRmOGIzMDNk
MjRjOTg2YjQ1YjFlNGNkMGZjYTlhM2IwMjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaApAQCAtNDIsMTYgKzQy
LDggQEAgc3RydWN0IEF1ZGlvUGFyYW1EZXNjcmlwdG9yIHsKICAgICBmbG9hdCBtYXhWYWx1ZSB7
IDMuNDAyODIzNWUzOCB9OwogICAgIEF1dG9tYXRpb25SYXRlIGF1dG9tYXRpb25SYXRlIHsgQXV0
b21hdGlvblJhdGU6OkFSYXRlIH07CiAKLSAgICBBdWRpb1BhcmFtRGVzY3JpcHRvciBpc29sYXRl
ZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG5hbWUu
aXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBkZWZhdWx0VmFsdWUsCi0gICAgICAgICAgICBt
aW5WYWx1ZSwKLSAgICAgICAgICAgIG1heFZhbHVlLAotICAgICAgICAgICAgYXV0b21hdGlvblJh
dGUKLSAgICAgICAgfTsKLSAgICB9CisgICAgQXVkaW9QYXJhbURlc2NyaXB0b3IgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRlZmF1bHRWYWx1
ZSwgbWluVmFsdWUsIG1heFZhbHVlLCBhdXRvbWF0aW9uUmF0ZSB9OyB9CisgICAgQXVkaW9QYXJh
bURlc2NyaXB0b3IgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlv
blJhdGUgfTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAppbmRleCAzZTczOWMxY2Y5MDllZjcyOWY1YjlmMGE5YWZjOGMwZmZlYzJjYWI4Li44YTUx
MzBkYjk3MGZiZjYyYzE4NDUyMDlhNDAzYTJhNDkyMWU0MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8CiAgICAgaWYg
KCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCAiQSBwcm9jZXNzb3Igd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIHRo
aXMgbmFtZSJfcyB9OwogCi0gICAgdGhyZWFkKCkubWVzc2FnaW5nUHJveHkoKS5wb3N0VGFza1Rv
QXVkaW9Xb3JrbGV0KFtuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgcGFyYW1ldGVyRGVzY3Jp
cHRvcnMgPSBjcm9zc1RocmVhZENvcHkocGFyYW1ldGVyRGVzY3JpcHRvcnMpXShBdWRpb1dvcmts
ZXQmIHdvcmtsZXQpIG11dGFibGUgeworICAgIHRocmVhZCgpLm1lc3NhZ2luZ1Byb3h5KCkucG9z
dFRhc2tUb0F1ZGlvV29ya2xldChbbmFtZSA9IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCks
IHBhcmFtZXRlckRlc2NyaXB0b3JzID0gY3Jvc3NUaHJlYWRDb3B5KHBhcmFtZXRlckRlc2NyaXB0
b3JzKV0oQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGF1ZGlvQ29udGV4dCA9IHdvcmtsZXQu
YXVkaW9Db250ZXh0KCkpCiAgICAgICAgICAgICBhdWRpb0NvbnRleHQtPmFkZEF1ZGlvUGFyYW1E
ZXNjcmlwdG9ycyhuYW1lLCBXVEZNb3ZlKHBhcmFtZXRlckRlc2NyaXB0b3JzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5j
cHAKaW5kZXggNmEwYmU5NjQ0NzczZDgyMzgyMzZkNjc5MzIxODFhNjM3ZGQyNWEzMC4uNTRhYzA4
Y2Q0OGRmM2NjY2MzY2U0YzAzZTdjOWVmMzIxYjAyYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMzcs
MTAgKzM3LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9Xb3JrbGV0VGhyZWFk
OjpBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3NhZ2lu
Z1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK0F1ZGlvV29ya2xl
dFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBt
ZXNzYWdpbmdQcm94eSwgV29ya2xldFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogV29y
a2VyT3JXb3JrbGV0VGhyZWFkKHBhcmFtZXRlcnMuaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSkK
ICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCi0gICAgLCBtX3BhcmFtZXRl
cnMocGFyYW1ldGVycy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3Zl
KHBhcmFtZXRlcnMpLmlzb2xhdGVkQ29weSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCBmNmU3MTU1
NmNlMGM5NGZhZDRkMjY5NzUzMjY4NjU4MjA0MTM1MjcyLi5iMzRlZTk5ODk4ZjlkZGQxZDBhN2Iz
ODIwZjFiNWNjYTJlZjdmZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk7CiAKIGNsYXNzIEF1ZGlvV29ya2xldFRocmVhZCA6IHB1
YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVk
aW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3Nh
Z2luZ1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICBzdGF0
aWMgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5JiBtZXNzYWdpbmdQcm94eSwgV29ya2xldFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0VGhyZWFkKG1lc3Nh
Z2luZ1Byb3h5LCBwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvV29ya2xldFRocmVhZChtZXNzYWdpbmdQcm94eSwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwog
ICAgIH0KICAgICB+QXVkaW9Xb3JrbGV0VGhyZWFkKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsg
cmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KIAogcHJpdmF0ZToKLSAgICBBdWRpb1dvcmtsZXRU
aHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVy
cyYpOworICAgIEF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYs
IFdvcmtsZXRQYXJhbWV0ZXJzJiYpOwogCiAgICAgLy8gV29ya2VyT3JXb3JrbGV0VGhyZWFkLgog
ICAgIFJlZjxUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCmluZGV4IGJlZjAzOWUx
NWU4MjU2NTA3MGYwZTM3ZjlmMzM5ZjVhNGZhMTM1MjQuLjNlYWU5NjEwNDg3MWVhYTI4OWI1MDA0
NGFiMTdiMzkxNTIzODIwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgRGF0YWJhc2VPcGVu
VGFzazo6RGF0YWJhc2VPcGVuVGFzayhEYXRhYmFzZSYgZGF0YWJhc2UsIGJvb2wgc2V0VmVyc2lv
bkluTmV3RGF0YWIKIAogdm9pZCBEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZvcm1UYXNrKCkKIHsK
LSAgICBtX3Jlc3VsdCA9IGlzb2xhdGVkQ29weShkYXRhYmFzZSgpLnBlcmZvcm1PcGVuQW5kVmVy
aWZ5KG1fc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpKTsKKyAgICBtX3Jlc3VsdCA9IGNyb3NzVGhy
ZWFkQ29weShkYXRhYmFzZSgpLnBlcmZvcm1PcGVuQW5kVmVyaWZ5KG1fc2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UpKTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBhZTY2
MGMwMjFmN2E4ZDIwZDRjMTFiYTRiZDlhMzQyZWZmZjczNjQ5Li4wNjdmZDM5MTM5MGM4NWRjMmQ0
OWRmNDA4MDE2MmI0M2M0ZjQyM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zNzIsOCArMzcyLDEwIEBA
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucygpCiAK
ICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgIGludCBzdGVwUmVz
dWx0OwotICAgIHdoaWxlICgoc3RlcFJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKQotICAgICAgICBvcmlnaW5zLmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKS0+aXNvbGF0ZWRDb3B5
KCkpOworICAgIHdoaWxlICgoc3RlcFJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CisgICAgICAgIGlmIChhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbURhdGFiYXNlSWRlbnRpZmllcihzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpKQorICAgICAg
ICAgICAgb3JpZ2lucy5hcHBlbmQoV1RGTW92ZShvcmlnaW4pLnZhbHVlKCkuaXNvbGF0ZWRDb3B5
KCkpOworICAgIH0KICAgICBvcmlnaW5zLnNocmlua1RvRml0KCk7CiAKICAgICBpZiAoc3RlcFJl
c3VsdCAhPSBTUUxJVEVfRE9ORSkKQEAgLTUzNyw3ICs1MzksNiBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKICAgICAgICAgbV9vcGVu
RGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0
byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwotCiAgICAgYXV0byogbmFtZU1h
cCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVNYXApIHsK
ICAgICAgICAgbmFtZU1hcCA9IG5ldyBEYXRhYmFzZU5hbWVNYXA7CkBAIC01OTgsMTQgKzU5OSwx
MyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBk
YXRhYmFzZSkKIFJlZjxPcmlnaW5Mb2NrPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3Io
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgTG9ja2VyIGxvY2tEYXRh
YmFzZSB7IG1fZGF0YWJhc2VHdWFyZCB9OwotICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIg
PSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAKICAgICAvLyBUaGUgb3JpZ2luTG9ja01h
cCBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIERhdGFiYXNlVGhyZWFkcyBzaW5jZQogICAgIC8v
IGRpZmZlcmVudCBzY3JpcHQgY29udGV4dHMgY2FuIGJlIHdyaXRpbmcgdG8gZGlmZmVyZW50IGRh
dGFiYXNlcyBmcm9tCiAgICAgLy8gdGhlIHNhbWUgb3JpZ2luLiBIZW5jZSwgdGhlIGRhdGFiYXNl
SWRlbnRpZmllciBrZXkgbmVlZHMgdG8gYmUgYW4KICAgICAvLyBpc29sYXRlZCBjb3B5LiBBbiBp
c29sYXRlZCBjb3B5IGdpdmVzIHVzIGEgdmFsdWUgd2hvc2UgcmVmQ291bnRpbmcgaXMKICAgICAv
LyB0aHJlYWQtc2FmZSwgc2luY2Ugb3VyIGNvcHkgaXMgZ3VhcmRlZCBieSB0aGUgbV9kYXRhYmFz
ZUd1YXJkIG11dGV4LgotICAgIGRhdGFiYXNlSWRlbnRpZmllciA9IGRhdGFiYXNlSWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgcmV0dXJuIG1fb3Jp
Z2luTG9ja01hcC5lbnN1cmUoZGF0YWJhc2VJZGVudGlmaWVyLCBbJl0gewogICAgICAgICByZXR1
cm4gT3JpZ2luTG9jazo6Y3JlYXRlKG9yaWdpblBhdGgob3JpZ2luKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5MzM0YzU1MWM0NGU0MTUzMWUwZDU2
NmYyMmI1Mjk2OWQ0NjEwZDgyLi5iYTFiNDAyNjEyYTM5NDE2ODMzMWI2NTFhNWQzZjJkOTE1MzA4
OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2
NCw3ICsyNjQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRDb25uZWN0KCkKIAogICAgIFN0cmluZyBzdWJwcm90b2NvbCA9IG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPnN1YnByb3RvY29sKCk7CiAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX21haW5X
ZWJTb2NrZXRDaGFubmVsLT5leHRlbnNpb25zKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29sLmlzb2xh
dGVkQ29weSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRX
cmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IFdURk1vdmUoc3Vi
cHJvdG9jb2wpLmlzb2xhdGVkQ29weSgpLCBleHRlbnNpb25zID0gV1RGTW92ZShleHRlbnNpb25z
KS5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJvdG9jb2wpOwogICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVuc2lvbnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAzYTM1ZTI2MDVlMDNlNjI5NzliMjI5ZDgyNmZlNmU3M2JlMjk0MmRmLi4wMDQ1YzI3
ZDMxYjEwN2NkZjdhM2RhYzhkNmI0MTU5ZmNhZGYxMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtOTcx
LDcgKzk3MSw2IEBAIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0aC5jcHAKIGRvbS9F
dmVudFRhcmdldC5jcHAKIGRvbS9FdmVudFRhcmdldENvbmNyZXRlLmNwcAotZG9tL0V4Y2VwdGlv
bkRhdGEuY3BwCiBkb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCiBkb20vRm9jdXNFdmVudC5j
cHAKIGRvbS9Gb3JtRGF0YUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFhMjI3ZDU5OGU0MjlkODU1YmIzZGVlZGE5
YjFkNDcyODBkNjI0M2IuLmM1MmI1ZjcwNzlhYjFiNmUwZDVlNThmMmNlZmVjNmQ2ZTk0NWU5YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwMDU1LDcgKzEwMDU1LDYgQEAKIAkJNTFGNjQ1OTQxRjRBNjg0RjAwQjU0REVEIC8q
IFNXU2VydmVyUmVnaXN0cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNXU2VydmVyUmVnaXN0cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RjY0NTk1MUY0QTY4NjEwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NUEwMUY0QkY1MTYwMEI1NERFRCAv
KiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRjY0NUEzMUY0QzAwMEMwMEI1NERFRCAv
KiBFeGNlcHRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEV4Y2VwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVE
MjFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aWZpZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzc0lk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1REUxRkY0NTk0QjAw
QjU0REVEIC8qIE1lc3NhZ2VQb3J0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXNzYWdlUG9ydElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMyNTY1LDcgKzMyNTY0LDYgQEAKIAkJCQlDRENFNUNEMDE0NjMzQkM5MDBENDdD
Q0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovLAogCQkJCTkzRDE5NjMyMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyog
RXhjZXB0aW9uQ29kZS5oICovLAotCQkJCTUxRjY0NUEzMUY0QzAwMEMwMEI1NERFRCAvKiBFeGNl
cHRpb25EYXRhLmNwcCAqLywKIAkJCQk1MUY2NDU2MDFGNDUzOThCMDBCNTRERUQgLyogRXhjZXB0
aW9uRGF0YS5oICovLAogCQkJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25P
ci5oICovLAogCQkJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKaW5kZXggZDU5NmRhNDA4Yjc4N2Mx
ZGY2NjE5MzZjYzBjMjFlNDgzOTllMmY4Ny4uMWIyZjJmZTBjZjMxMDdmYmNjOTlhNDBhMDc3MjJm
OTA3YjA0OGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcApAQCAtMTE0LDEyICsxMTQsMTQg
QEAgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBNb2RpZnlI
ZWFkZXJzQWN0aW9uOjpwYXJzZShjb25zdAogICAgIHJldHVybiBNb2RpZnlIZWFkZXJzQWN0aW9u
IHsgV1RGTW92ZSgqcmVxdWVzdEhlYWRlcnMpLCBXVEZNb3ZlKCpyZXNwb25zZUhlYWRlcnMpIH07
CiB9CiAKLU1vZGlmeUhlYWRlcnNBY3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKK01vZGlmeUhlYWRlcnNBY3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShyZXF1ZXN0SGVhZGVycyksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShyZXNwb25zZUhl
YWRlcnMpCi0gICAgfTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkocmVxdWVzdEhlYWRl
cnMpLCBjcm9zc1RocmVhZENvcHkocmVzcG9uc2VIZWFkZXJzKSB9OworfQorCitNb2RpZnlIZWFk
ZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVxdWVzdEhlYWRlcnMpKSwgY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUocmVzcG9uc2VIZWFkZXJzKSkgfTsKIH0KIAogYm9vbCBNb2RpZnlI
ZWFkZXJzQWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mIG90aGVy
KSBjb25zdApAQCAtMjIyLDExICsyMjQsMTQgQEAgYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpN
b2RpZnlIZWFkZXJJbmZvOjpwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYgaW5mb1ZhbHVlKQogICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Nb2RpZnlI
ZWFkZXJzSW52YWxpZE9wZXJhdGlvbik7CiB9CiAKLWF1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gTW9kaWZ5SGVhZGVySW5m
bworYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENv
cHkoKSBjb25zdCAmIC0+IE1vZGlmeUhlYWRlckluZm8KIHsKLSAgICByZXR1cm4gewotICAgICAg
ICBjcm9zc1RocmVhZENvcHkob3BlcmF0aW9uKQotICAgIH07CisgICAgcmV0dXJuIHsgY3Jvc3NU
aHJlYWRDb3B5KG9wZXJhdGlvbikgfTsKK30KKworYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpN
b2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENvcHkoKSAmJiAtPiBNb2RpZnlIZWFkZXJJbmZvCit7
CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUob3BlcmF0aW9uKSkgfTsKIH0K
IAogYm9vbCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpvcGVyYXRvcj09
KGNvbnN0IE1vZGlmeUhlYWRlckluZm8mIG90aGVyKSBjb25zdApAQCAtMzE0LDExICszMTksMTQg
QEAgRXhwZWN0ZWQ8UmVkaXJlY3RBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gUmVkaXJlY3RBY3Rp
b246OnBhcnNlKGNvbnN0IEpTT046Ok9iamUKICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29u
dGVudEV4dGVuc2lvbkVycm9yOjpKU09OUmVkaXJlY3RJbnZhbGlkVHlwZSk7CiB9CiAKLVJlZGly
ZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAorUmVkaXJlY3RB
Y3Rpb24gUmVkaXJlY3RBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1
cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkoYWN0aW9uKQotICAgIH07CisgICAgcmV0dXJu
IHsgY3Jvc3NUaHJlYWRDb3B5KGFjdGlvbikgfTsKK30KKworUmVkaXJlY3RBY3Rpb24gUmVkaXJl
Y3RBY3Rpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoYWN0aW9uKSkgfTsKIH0KIAogYm9vbCBSZWRpcmVjdEFjdGlvbjo6b3BlcmF0
b3I9PShjb25zdCBSZWRpcmVjdEFjdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC00MzIsMTggKzQ0MCwx
NiBAQCBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OnBhcnNlKGNvbnN0
IEpTT046Ok9iamVjdCYgdHJhbnNmb3JtKSAtPgogICAgIHJldHVybiBhY3Rpb247CiB9CiAKLWF1
dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zv
cm1BY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCiB7
Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGZyYWdtZW50KSwKLSAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KGhvc3QpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocGFzc3dv
cmQpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocGF0aCksCi0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShwb3J0KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHF1ZXJ5VHJhbnNmb3JtKSwKLSAg
ICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjaGVtZSksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weSh1
c2VybmFtZSkKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShmcmFnbWVudCks
IGNyb3NzVGhyZWFkQ29weShob3N0KSwgY3Jvc3NUaHJlYWRDb3B5KHBhc3N3b3JkKSwgY3Jvc3NU
aHJlYWRDb3B5KHBhdGgpLCBjcm9zc1RocmVhZENvcHkocG9ydCksIGNyb3NzVGhyZWFkQ29weShx
dWVyeVRyYW5zZm9ybSksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY2hlbWUpLCBjcm9zc1Ro
cmVhZENvcHkodXNlcm5hbWUpIH07Cit9CisKK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCit7Cisg
ICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZnJhZ21lbnQpKSwgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUoaG9zdCkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXNzd29yZCkp
LCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXRoKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KHBvcnQpKSwKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocXVlcnlUcmFuc2Zvcm0p
KSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoc2NoZW1lKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHVzZXJuYW1lKSkgfTsKIH0KIAogYm9vbCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3Jt
QWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFVSTFRyYW5zZm9ybUFjdGlvbiYgb3RoZXIpIGNvbnN0
CkBAIC02OTksMTIgKzcwNSwxNCBAQCB2b2lkIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1B
Y3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjphcHBseVRvVVJMKFVSTCYgdXJsKSBjbwogICAgIHVybC5z
ZXRRdWVyeSh0cmFuc2Zvcm1lZFF1ZXJ5KTsKIH0KIAotYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4g
UXVlcnlUcmFuc2Zvcm0KK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6
UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYgLT4gUXVlcnlUcmFuc2Zvcm0K
IHsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkoYWRkT3JSZXBsYWNlUGFy
YW1zKSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHJlbW92ZVBhcmFtcykKLSAgICB9OworICAg
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShhZGRPclJlcGxhY2VQYXJhbXMpLCBjcm9zc1RocmVh
ZENvcHkocmVtb3ZlUGFyYW1zKSB9OworfQorCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFu
c2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkoKSAmJiAtPiBRdWVyeVRy
YW5zZm9ybQoreworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFkZE9yUmVw
bGFjZVBhcmFtcykpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZW1vdmVQYXJhbXMpKSB9Owog
fQogCiBib29sIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNm
b3JtOjpvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5VHJhbnNmb3JtJiBvdGhlcikgY29uc3QKQEAgLTc3
OSwxNSArNzg3LDYgQEAgYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpR
dWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlWYWx1ZTo6cGFyc2UoY28KICAgICByZXR1cm4geyB7IFdU
Rk1vdmUoa2V5KSwgcmVwbGFjZU9ubHksIFdURk1vdmUodmFsdWUpIH0gfTsKIH0KIAotYXV0byBS
ZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6UXVlcnlL
ZXlWYWx1ZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gUXVlcnlLZXlWYWx1ZQotewotICAgIHJl
dHVybiB7Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShrZXkpLAotICAgICAgICBjcm9zc1RocmVh
ZENvcHkocmVwbGFjZU9ubHkpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkodmFsdWUpCi0gICAg
fTsKLX0KLQogYm9vbCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRy
YW5zZm9ybTo6UXVlcnlLZXlWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBRdWVyeUtleVZhbHVlJiBv
dGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gb3RoZXIua2V5ID09IHRoaXMtPmtleQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmgKaW5kZXggNDZlMDU4MGM5YzZlNTQwZjNiOGIxMDk2MDkwYzU3YWIxYjAzZmMw
OS4uYjBjYzBlZDFmNWM4MTQzMWNhNmI0ZTlmODE3NjUzNmYwMmQ3ODI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
QWN0aW9ucy5oCkBAIC01MCw4ICs1MCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
Y3Rpb25XaXRob3V0TWV0YWRhdGEgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSB7Ci0gICAgY29uc3QgU3RyaW5nIHN0cmluZzsKLSAg
ICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgeyBzdHJpbmcuaXNvbGF0ZWRDb3B5
KCkgfSB9OyB9CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyB7IHN0cmluZy5pc29sYXRlZENvcHkoKSB9IH07IH0KKyAgICBUIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgeyBXVEZNb3ZlKHN0cmluZykuaXNvbGF0ZWRDb3B5KCkg
fSB9OyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0
YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnN0cmluZyA9PSB0aGlzLT5zdHJpbmc7IH0K
ICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QgeyBzZXJp
YWxpemVTdHJpbmcodmVjdG9yLCBzdHJpbmcpOyB9CiAgICAgc3RhdGljIFQgZGVzZXJpYWxpemUo
U3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmco
c3BhbikgfSB9OyB9CkBAIC03MSwyNyArNzIsMzEgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIE1v
ZGlmeUhlYWRlcnNBY3Rpb24gewogICAgICAgICAgICAgU3RyaW5nIGhlYWRlcjsKICAgICAgICAg
ICAgIFN0cmluZyB2YWx1ZTsKIAotICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICBBcHBlbmRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5
KCkgY29uc3QgJiB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgp
ICYmIHsgcmV0dXJuIHsgV1RGTW92ZShoZWFkZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHZh
bHVlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQXBwZW5kT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuaGVhZGVyID09
IHRoaXMtPmhlYWRlciAmJiBvdGhlci52YWx1ZSA9PSB0aGlzLT52YWx1ZTsgfQogICAgICAgICB9
OwogICAgICAgICBzdHJ1Y3QgU2V0T3BlcmF0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFk
ZXI7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWU7CiAKLSAgICAgICAgICAgIFNldE9wZXJhdGlv
biBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwg
dmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgU2V0T3BlcmF0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVl
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFNldE9wZXJhdGlvbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92
ZSh2YWx1ZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNldE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9
PSB0aGlzLT5oZWFkZXIgJiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7IH0KICAgICAgICAg
fTsKICAgICAgICAgc3RydWN0IFJlbW92ZU9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcg
aGVhZGVyOwogCi0gICAgICAgICAgICBSZW1vdmVPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgUmVt
b3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBoZWFkZXIuaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgUmVtb3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShoZWFkZXIpLmlzb2xhdGVkQ29weSgpIH07IH0KICAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW1vdmVPcGVyYXRpb24mIG90aGVyKSBj
b25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVhZGVyOyB9CiAgICAgICAgIH07
CiAgICAgICAgIHVzaW5nIE9wZXJhdGlvblZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8QXBwZW5kT3Bl
cmF0aW9uLCBTZXRPcGVyYXRpb24sIFJlbW92ZU9wZXJhdGlvbj47CiAgICAgICAgIE9wZXJhdGlv
blZhcmlhbnQgb3BlcmF0aW9uOwogCiAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxNb2RpZnlIZWFk
ZXJJbmZvLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046OlZhbHVlJik7Ci0gICAg
ICAgIE1vZGlmeUhlYWRlckluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIE1vZGlm
eUhlYWRlckluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgTW9kaWZ5SGVhZGVy
SW5mbyBpc29sYXRlZENvcHkoKSAmJjsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1v
ZGlmeUhlYWRlckluZm8mKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVp
bnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBNb2RpZnlIZWFkZXJJbmZvIGRlc2VyaWFs
aXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTE1LDcgKzEyMCw4IEBAIHN0cnVjdCBXRUJD
T1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0aW9uIHsKICAgICBib29sIGlzRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gaGFzaFRhYmxlVHlwZSA9PSBIYXNoVGFibGVUeXBlOjpEZWxldGVk
OyB9CiAKICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwgc3RkOjplcnJv
cl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICBNb2RpZnlIZWFkZXJzQWN0
aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIE1vZGlmeUhlYWRlcnNBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgp
ICYmOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJikgY29u
c3Q7CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgc3Rh
dGljIE1vZGlmeUhlYWRlcnNBY3Rpb24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7
CkBAIC0xMjcsMTMgKzEzMywxNSBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rp
b24gewogICAgIHN0cnVjdCBFeHRlbnNpb25QYXRoQWN0aW9uIHsKICAgICAgICAgU3RyaW5nIGV4
dGVuc2lvblBhdGg7CiAKLSAgICAgICAgRXh0ZW5zaW9uUGF0aEFjdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiB7IGV4dGVuc2lvblBhdGguaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBFeHRlbnNpb25QYXRoQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRXh0ZW5zaW9uUGF0
aEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZXh0ZW5zaW9uUGF0
aCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXh0
ZW5zaW9uUGF0aEFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmV4dGVuc2lvblBh
dGggPT0gdGhpcy0+ZXh0ZW5zaW9uUGF0aDsgfQogICAgIH07CiAgICAgc3RydWN0IFJlZ2V4U3Vi
c3RpdHV0aW9uQWN0aW9uIHsKICAgICAgICAgU3RyaW5nIHJlZ2V4U3Vic3RpdHV0aW9uOwogCi0g
ICAgICAgIFJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgcmVnZXhTdWJzdGl0dXRpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBSZWdl
eFN1YnN0aXR1dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgcmVn
ZXhTdWJzdGl0dXRpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBSZWdleFN1YnN0aXR1
dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUocmVnZXhTdWJz
dGl0dXRpb24pLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIu
cmVnZXhTdWJzdGl0dXRpb24gPT0gdGhpcy0+cmVnZXhTdWJzdGl0dXRpb247IH0KICAgICB9Owog
ICAgIHN0cnVjdCBVUkxUcmFuc2Zvcm1BY3Rpb24gewpAQCAtMTQ0LDcgKzE1Miw4IEBAIHN0cnVj
dCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICAgICAgU3RyaW5n
IHZhbHVlOwogCiAgICAgICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1ZXJ5S2V5VmFsdWUs
IHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmKTsKLSAgICAgICAgICAg
ICAgICBRdWVyeUtleVZhbHVlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICAgICAgICAg
IFF1ZXJ5S2V5VmFsdWUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGtleS5pc29s
YXRlZENvcHkoKSwgcmVwbGFjZU9ubHksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgICAgICAgICBRdWVyeUtleVZhbHVlIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZShrZXkpLmlzb2xhdGVkQ29weSgpLCByZXBsYWNlT25seSwgV1RGTW92ZSh2YWx1ZSkuaXNv
bGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR
dWVyeUtleVZhbHVlJikgY29uc3Q7CiAgICAgICAgICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVj
dG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgICAgICAgICAgc3RhdGljIFF1ZXJ5S2V5VmFs
dWUgZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xNTUsNyArMTY0LDggQEAg
c3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHJlbW92ZVBhcmFtczsKIAogICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1
ZXJ5VHJhbnNmb3JtLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYp
OwotICAgICAgICAgICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
ICAgICAgICBRdWVyeVRyYW5zZm9ybSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICAg
ICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQg
c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICAgICAgc3RhdGljIFF1
ZXJ5VHJhbnNmb3JtIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTc0LDcg
KzE4NCw4IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAg
IFN0cmluZyB1c2VybmFtZTsKIAogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8VVJMVHJhbnNmb3Jt
QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYpOwotICAg
ICAgICBVUkxUcmFuc2Zvcm1BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFVS
TFRyYW5zZm9ybUFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBVUkxUcmFu
c2Zvcm1BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUo
VmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBVUkxUcmFuc2Zvcm1BY3Rp
b24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xODQsNyArMTk1LDggQEAg
c3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICBzdHJ1Y3QgVVJMQWN0
aW9uIHsKICAgICAgICAgU3RyaW5nIHVybDsKIAotICAgICAgICBVUkxBY3Rpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBV
UkxBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHVybC5pc29sYXRlZENv
cHkoKSB9OyB9CisgICAgICAgIFVSTEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7
IFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBVUkxBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci51cmwgPT0gdGhp
cy0+dXJsOyB9CiAgICAgfTsKIApAQCAtMjAzLDcgKzIxNSw4IEBAIHN0cnVjdCBXRUJDT1JFX0VY
UE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGhhc2hUYWJsZVR5cGUgPT0gSGFzaFRhYmxlVHlwZTo6RGVsZXRlZDsgfQogCiAgICAg
c3RhdGljIEV4cGVjdGVkPFJlZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNv
bnN0IEpTT046Ok9iamVjdCYpOwotICAgIFJlZGlyZWN0QWN0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgIFJlZGlyZWN0QWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgUmVk
aXJlY3RBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlZGlyZWN0QWN0aW9uJikgY29uc3Q7CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4
X3Q+JikgY29uc3Q7CiAgICAgc3RhdGljIFJlZGlyZWN0QWN0aW9uIGRlc2VyaWFsaXplKFNwYW48
Y29uc3QgdWludDhfdD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKaW5kZXggZDcxMjY5Nzdm
NjEwZGZiMTFlNDRiZWU3MjQ4ZjdjM2I4YzA0OTAzMy4uMDM1ZTI4NjdkNDcyNWQ2OGIwZGY5ODc4
NjdkMzdjYjAxMTU1Mzg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCkBAIC0yNzEsNyAr
MjcxLDcgQEAgc3RhdGljIGJvb2wgY29tcGlsZVRvQnl0ZWNvZGUoQ29tYmluZWRVUkxGaWx0ZXJz
JiYgZmlsdGVycywgVW5pdmVyc2FsQWN0aW9uU2V0JiYKIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
ZyYmIHJ1bGVKU09OLCBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiYgcGFyc2VkUnVsZUxp
c3QpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBjYWxsT25NYWluVGhyZWFkKFtydWxlSlNP
TiA9IHJ1bGVKU09OLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlTGlzdCA9IHBhcnNlZFJ1bGVM
aXN0Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBX
VEZNb3ZlKHJ1bGVKU09OKS5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShwYXJzZWRSdWxlTGlzdCkpXSB7CiAgICAgICAgIEFTU0VSVChwYXJz
ZVJ1bGVMaXN0KHJ1bGVKU09OKS52YWx1ZSgpID09IHBhcnNlZFJ1bGVMaXN0KTsKICAgICB9KTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCBiMzMzOWZmNjQ3NGM1N2FmZTRkMTNj
YmYwMzRkNGI1ODJmNDQ4YjA0Li44ODI0MDJjN2I4NTNjMWU1YmM1N2ZlNmFlN2Q1MzdiMDk2Y2Zm
NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBF
eHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046
Ok9iamVjdCYgcnVsZU9iCiAgICAgaWYgKGF1dG8gZXJyb3IgPSBjaGVja0NvbmRpdGlvbigiaWYt
ZnJhbWUtdXJsIl9zLCBnZXRTdHJpbmdMaXN0LCBBY3Rpb25Db25kaXRpb246OklmRnJhbWVVUkwp
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwogCisgICAgdHJpZ2dlci5j
aGVja1ZhbGlkaXR5KCk7CiAgICAgcmV0dXJuIHRyaWdnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNw
cAppbmRleCAzYjRmYTMzOTAxMzAwN2YzNTQyNzg4YTI0NTk1Mjg1MTcwYjM1MzIzLi42MmU0Y2U4
ZDg0N2I2NjQ0MDAwYTY0YjQ4YjI0NmEzN2IyZmI4NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCkBA
IC05NSwyMyArOTUsMjYgQEAgc2l6ZV90IERlc2VyaWFsaXplZEFjdGlvbjo6c2VyaWFsaXplZExl
bmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNlcmlhbGl6ZWRBY3Rpb24KICAgICByZXR1cm4gMSAr
IFZhcmlhbnREZXNlcmlhbGl6ZXI8QWN0aW9uRGF0YT46OnNlcmlhbGl6ZWRMZW5ndGgoc2VyaWFs
aXplZEFjdGlvbnMuc3Vic3Bhbihsb2NhdGlvbiArIDEpLCBzZXJpYWxpemVkQWN0aW9uc1tsb2Nh
dGlvbl0pOwogfQogCi1UcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitUcmln
Z2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gewotICAg
ICAgICB1cmxGaWx0ZXIuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIHVybEZpbHRlcklzQ2FzZVNl
bnNpdGl2ZSwKLSAgICAgICAgdG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLAotICAgICAgICBm
cmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgZmxhZ3MsCi0gICAgICAgIGNv
bmRpdGlvbnMuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OworICAgIHJldHVybiB7IHVybEZpbHRlci5p
c29sYXRlZENvcHkoKSwgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCB0b3BVUkxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUsIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmbGFncywgY3Jvc3NU
aHJlYWRDb3B5KGNvbmRpdGlvbnMpIH07CiB9CiAKLUFjdGlvbiBBY3Rpb246Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CitUcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0
dXJuIHsgV1RGTW92ZSh1cmxGaWx0ZXIpLmlzb2xhdGVkQ29weSgpLCB1cmxGaWx0ZXJJc0Nhc2VT
ZW5zaXRpdmUsIHRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgZnJhbWVVUkxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUsIGZsYWdzLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjb25kaXRpb25zKSkg
fTsKK30KKworQWN0aW9uIEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJl
dHVybiB7IGNyb3NzVGhyZWFkQ29weShtX2RhdGEpIH07CiB9CiAKK0FjdGlvbiBBY3Rpb246Omlz
b2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bV9kYXRhKSkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaApp
bmRleCA3ZTM4ZDBhMmY1NDM0ZTVjOWFmNDNkNTJmYTE5MDFkNDdjODkyN2UzLi43ODdkYmQ3MDU0
NDNhYjUwMjI1NGMwMmVlYThkYzg3MTU2ZGFjYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKQEAgLTQ3LDkg
KzQ3LDEwIEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICBSZXNvdXJjZUZsYWdzIGZsYWdzIHsgMCB9
OwogICAgIFZlY3RvcjxTdHJpbmc+IGNvbmRpdGlvbnM7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBU
cmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFRyaWdnZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xh
dGVkQ29weSgpICYmOwogICAgIAotICAgIH5UcmlnZ2VyKCkKKyAgICB2b2lkIGNoZWNrVmFsaWRp
dHkoKQogICAgIHsKICAgICAgICAgYXV0byBhY3Rpb25Db25kaXRpb24gPSBzdGF0aWNfY2FzdDxB
Y3Rpb25Db25kaXRpb24+KGZsYWdzICYgQWN0aW9uQ29uZGl0aW9uTWFzayk7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYWN0aW9uQ29uZGl0aW9uLCBjb25kaXRpb25zLmlzRW1wdHkoKSA9PSAoYWN0
aW9uQ29uZGl0aW9uID09IEFjdGlvbkNvbmRpdGlvbjo6Tm9uZSkpOwpAQCAtMTMxLDEwICsxMzIs
MTEgQEAgc3RydWN0IEFjdGlvbiB7CiAKICAgICBjb25zdCBBY3Rpb25EYXRhJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgpICYmOwog
CiBwcml2YXRlOgotICAgIGNvbnN0IEFjdGlvbkRhdGEgbV9kYXRhOworICAgIEFjdGlvbkRhdGEg
bV9kYXRhOwogfTsKIAogc3RydWN0IERlc2VyaWFsaXplZEFjdGlvbiA6IHB1YmxpYyBBY3Rpb24g
ewpAQCAtMTU4LDE4ICsxNjAsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFRyaWdnZXImIHRyaWdn
ZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXI7IH0KICAgICBjb25zdCBBY3Rpb24mIGFjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CiAKLSAgICBDb250ZW50RXh0ZW5zaW9uUnVs
ZSBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgbV90cmlnZ2Vy
Lmlzb2xhdGVkQ29weSgpLCBtX2FjdGlvbi5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KKyAgICBD
b250ZW50RXh0ZW5zaW9uUnVsZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbV90
cmlnZ2VyLmlzb2xhdGVkQ29weSgpLCBtX2FjdGlvbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAg
Q29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3Zl
KG1fdHJpZ2dlcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUobV9hY3Rpb24pLmlzb2xhdGVkQ29w
eSgpIH07IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUm
IG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHJpZ2dlciA9PSBvdGhlci5t
X3RyaWdnZXIgJiYgbV9hY3Rpb24gPT0gb3RoZXIubV9hY3Rpb247CiAgICAgfQogCiBwcml2YXRl
OgotICAgIGNvbnN0IFRyaWdnZXIgbV90cmlnZ2VyOwotICAgIGNvbnN0IEFjdGlvbiBtX2FjdGlv
bjsKKyAgICBUcmlnZ2VyIG1fdHJpZ2dlcjsKKyAgICBBY3Rpb24gbV9hY3Rpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bi5oCmluZGV4IGUxZTdhZGI5ODZjYWFkNjcyMTU5YjFlM2MyODBhODlkN2FjMTc5MGYuLjIxZjNj
MWZiMzA3NjI2Y2Y1YjZjNTQ2N2VmNDJhNzBhNGMzN2JjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
LmgKQEAgLTM5LDI3ICszOSwxOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAgU3RyaW5nJiYgcmVsZWFzZU1lc3Nh
Z2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fbWVzc2FnZSk7IH0KIAotICAgIEV4Y2VwdGlvbiBpc29s
YXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29k
ZSwgbV9tZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07Ci0gICAgfQorICAgIEV4Y2VwdGlvbiBpc29s
YXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgbV9tZXNzYWdl
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyBy
ZXR1cm4gRXhjZXB0aW9uIHsgbV9jb2RlLCBXVEZNb3ZlKG1fbWVzc2FnZSkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQogCiBwcml2YXRlOgogICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOwogICAgIFN0cmlu
ZyBtX21lc3NhZ2U7CiB9OwogCi1FeGNlcHRpb24gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbiYmKTsK
LQogaW5saW5lIEV4Y2VwdGlvbjo6RXhjZXB0aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSwgU3RyaW5n
IG1lc3NhZ2UpCiAgICAgOiBtX2NvZGUgeyBjb2RlIH0KICAgICAsIG1fbWVzc2FnZSB7IFdURk1v
dmUobWVzc2FnZSkgfQogewogfQogCi1pbmxpbmUgRXhjZXB0aW9uIGlzb2xhdGVkQ29weShFeGNl
cHRpb24mJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgdmFsdWUuY29kZSgpLCB2
YWx1ZS5yZWxlYXNlTWVzc2FnZSgpLmlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRhLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmMTZjMzI1ODVlNGE4MWQ2YTg1NzI0MjFiYWJhYzc4YjQy
NDlmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV4Y2Vw
dGlvbkRhdGEuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FeGNlcHRpb25EYXRhIEV4Y2Vw
dGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgRXhjZXB0aW9uRGF0YSByZXN1
bHQ7Ci0gICAgcmVzdWx0LmNvZGUgPSBjb2RlOwotICAgIHJlc3VsdC5tZXNzYWdlID0gbWVzc2Fn
ZS5pc29sYXRlZENvcHkoKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oCmluZGV4IGZjNzk4YjM2NGQz
YTc4ZjcxYTNjMDk5YWQ5ZWRmZWIyMWMwNDQ2YWQuLjk4NTMzNzZmMWM0ZGRjZmQxYTUxYWQ0YWVh
YzlkMDY0ZWU5OWY1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuaApAQCAtMzQsNyAr
MzQsOCBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGF0YSB7CiAgICAgRXhjZXB0aW9uQ29kZSBjb2RlOwog
ICAgIFN0cmluZyBtZXNzYWdlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uRGF0YSBp
c29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBFeGNlcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBjb2RlLCBtZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBF
eGNlcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgY29kZSwgV1RGTW92ZSht
ZXNzYWdlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKaW5kZXggYmJmZDk2Njg1MDE2MzFmNTEyMmI5NDBkOWIw
MDA0MjJlOTllZDA1Yy4uMWExOWIwZWU5YTJhNDUyYmY1Nzc0MGEyYWJmZGJkZGJjMjMzOGFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTkwLDggKzkwLDYgQEAgcHJpdmF0ZToKICNl
bmRpZgogfTsKIAotRXhjZXB0aW9uT3I8dm9pZD4gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbk9yPHZv
aWQ+JiYpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9u
T3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKICAgICA6
IG1fdmFsdWUobWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShleGNlcHRpb24pKSkKIHsKQEAgLTE5Mywx
MyArMTkxLDYgQEAgaW5saW5lIEV4Y2VwdGlvbiBFeGNlcHRpb25Pcjx2b2lkPjo6cmVsZWFzZUV4
Y2VwdGlvbigpCiAgICAgcmV0dXJuIFdURk1vdmUobV92YWx1ZS5lcnJvcigpKTsKIH0KIAotaW5s
aW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IGlzb2xhdGVkQ29weShFeGNlcHRpb25Pcjx2b2lkPiYmIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGlz
b2xhdGVkQ29weSh2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgIHJldHVybiB7IH07Ci19
Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSXNFeGNlcHRp
b25PciA9IFdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VD4sIEV4Y2VwdGlvbk9yPjo6dmFs
dWU7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzRXhjZXB0aW9uT3IgPSBJc0V4Y2Vw
dGlvbk9yPFQ+PiBzdHJ1Y3QgVHlwZU9yRXhjZXB0aW9uT3JVbmRlcmx5aW5nVHlwZUltcGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5k
ZXggOTg1ZjdhNjJmMGMxZjM5NzU1ODJlYjNmOWI5ODk3NTE1NjE1NjY3Ny4uZTVhYTI0ZWExZjlk
MmE3ODZkN2JlNmRjM2Q0MTQxZDlmZDE5M2EzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtNDQsMTAgKzQ0LDggQEAgc3RydWN0
IEZpbGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aDsKICAgICBTdHJpbmcg
ZGlzcGxheU5hbWU7CiAKLSAgICBGaWxlSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBGaWxlSW5mb3JtYXRpb24geyBwYXRoLmlzb2xhdGVkQ29w
eSgpLCByZWxhdGl2ZVBhdGguaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29w
eSgpIH07Ci0gICAgfQorICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAm
IHsgcmV0dXJuIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29w
eSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRmlsZUluZm9ybWF0aW9u
IGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShwYXRoKS5pc29sYXRlZENvcHko
KSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGRpc3BsYXlOYW1lKS5pc29s
YXRlZENvcHkoKSB9OyB9CiB9OwogCiBzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3Rv
cjxGaWxlSW5mb3JtYXRpb24+JiBmaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IGVhN2RmYWNmNjJiNzgyNTU5ZDY1ZTNiZmI2YjNkMGNjZGZlMjUyMWMuLmEyOTA2
ZDdjZTdhNjVlMWFjNGNlYWY4ZTY0MjZlMWQwMTM0NjllNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtNDk1LDEzICs0OTUsMTMgQEAgYm9vbCBGaWxlSW5wdXRUeXBl
OjpyZWNlaXZlRHJvcHBlZEZpbGVzV2l0aEltYWdlVHJhbnNjb2RpbmcoY29uc3QgVmVjdG9yPFN0
cmluZz4KICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZmlsZXNDaG9zZW4ocGF0aHMsIHJlcGxhY2Vt
ZW50UGF0aHMpOwogICAgIH07CiAKLSAgICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5k
aXNwYXRjaChbY2FsbEZpbGVzQ2hvc2VuID0gV1RGTW92ZShjYWxsRmlsZXNDaG9zZW4pLCB0cmFu
c2NvZGluZ1BhdGhzID0gdHJhbnNjb2RpbmdQYXRocy5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2Rp
bmdVVEkgPSB0cmFuc2NvZGluZ1VUSS5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNp
b24gPSB0cmFuc2NvZGluZ0V4dGVuc2lvbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRjaChbY2FsbEZpbGVzQ2hvc2Vu
ID0gV1RGTW92ZShjYWxsRmlsZXNDaG9zZW4pLCB0cmFuc2NvZGluZ1BhdGhzID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUodHJhbnNjb2RpbmdQYXRocykpLCB0cmFuc2NvZGluZ1VUSSA9IFdURk1v
dmUodHJhbnNjb2RpbmdVVEkpLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9
IFdURk1vdmUodHJhbnNjb2RpbmdFeHRlbnNpb24pLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBhdXRvIHJl
cGxhY2VtZW50UGF0aHMgPSB0cmFuc2NvZGVJbWFnZXModHJhbnNjb2RpbmdQYXRocywgdHJhbnNj
b2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKICAgICAgICAgQVNTRVJUKHRyYW5zY29k
aW5nUGF0aHMuc2l6ZSgpID09IHJlcGxhY2VtZW50UGF0aHMuc2l6ZSgpKTsKIAotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1vdmUoY2FsbEZp
bGVzQ2hvc2VuKSwgcmVwbGFjZW1lbnRQYXRocyA9IHJlcGxhY2VtZW50UGF0aHMuaXNvbGF0ZWRD
b3B5KCldKCkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0No
b3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwgcmVwbGFjZW1lbnRQYXRocyA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlcGxhY2VtZW50UGF0aHMpKV0gewogICAgICAgICAgICAgY2Fs
bEZpbGVzQ2hvc2VuKHJlcGxhY2VtZW50UGF0aHMpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmlu
ZGV4IGZhOTlhNjBkNmEyNzhkZDlkODJmZmJlOWVlMjhhNzcxMzZkMzIwMTUuLjI4OTYyOGFlYTg5
NWJiMjhjZDA2MzI2NWI1ZTQ1YjY1M2E1MDU4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIHZv
aWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBIVE1M
VG9rZW4mIHRva2VuLCBib29sIHNoCiAgICAgICAgIHJldHVybjsKICAgICBVUkwgdGVtcCB7IG1f
ZG9jdW1lbnRVUkwsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhTdHJpbmdJbXBs
OjpjcmVhdGU4Qml0SWZQb3NzaWJsZShocmVmQXR0cmlidXRlLT52YWx1ZSkpIH07CiAgICAgaWYg
KCFzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzIHx8IFNlY3VyaXR5UG9saWN5Ojppc0Jhc2VV
UkxTY2hlbWVBbGxvd2VkKHRlbXApKQotICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJM
ID0gdGVtcC5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVS
TCA9IFdURk1vdmUodGVtcCkuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIEhUTUxQcmVsb2FkU2Nhbm5l
cjo6SFRNTFByZWxvYWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCmluZGV4IGNl
ZTU3NmI4M2U0OGQyZmU3YTQzYzQwNzc3ZGQ5YzAxNGEyNWExOGQuLjc0YmQxMjlmMWM4MTIwZDM2
Y2FjNjFlMjc4ZjBhOGRiYzYwNWVlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcApAQCAtMTYxLDE0ICsxNjEsMTQgQEAgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmUKICAgICByZXR1cm4gcG9saWN5OwogfQogCi1Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeSBDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Ojppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgdmFsdWUsCi0gICAgICAg
IHJlcG9ydGluZ0VuZHBvaW50Lmlzb2xhdGVkQ29weSgpLAotICAgICAgICByZXBvcnRPbmx5VmFs
dWUsCi0gICAgICAgIHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHkoKQot
ICAgIH07CisgICAgcmV0dXJuIHsgdmFsdWUsIHJlcG9ydGluZ0VuZHBvaW50Lmlzb2xhdGVkQ29w
eSgpLCByZXBvcnRPbmx5VmFsdWUsIHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludC5pc29sYXRl
ZENvcHkoKSB9OworfQorCitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBDcm9zc09yaWdpbk9wZW5l
clBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyB2YWx1ZSwgV1RGTW92
ZShyZXBvcnRpbmdFbmRwb2ludCkuaXNvbGF0ZWRDb3B5KCksIHJlcG9ydE9ubHlWYWx1ZSwgV1RG
TW92ZShyZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQpLmlzb2xhdGVkQ29weSgpIH07CiB9CiAK
IHZvaWQgYWRkQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lIZWFkZXJzKFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgY29vcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmgKaW5kZXggNTIyMTA2
OTg2NDhlMDgzZmEwZDlmMjljZWZmMDczMWY5ZWU0OThjZC4uMjBlYzUzYjhlYzdlZWJmNGQyYTY5
YWFjNTgwMzU2MmY3MDg1ODRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luT3BlbmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmgKQEAgLTYwLDcgKzYwLDggQEAgc3RydWN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5IHsKICAgICBjb25zdCBTdHJpbmcmIHJlcG9ydGluZ0VuZHBvaW50Rm9yRGlz
cG9zaXRpb24oQ09PUERpc3Bvc2l0aW9uKSBjb25zdDsKICAgICBib29sIGhhc1JlcG9ydGluZ0Vu
ZHBvaW50KENPT1BEaXNwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBDcm9zc09yaWdpbk9wZW5lclBv
bGljeSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBp
c29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGlzb2xh
dGVkQ29weSgpICYmOwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gZGVjb2RlKERlY29kZXImKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyMGRkZWZkZTQyODFi
ZWFjNmJlOTczZjE4NTM0ZGVmOGE1NTlkMWI5Li5mMThkYjg2OTViMzk3YzFiMmEzYmQzMDMxMTFk
ZWI5ZTU1ZTQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTI0NDEsNyArMjQ0MSw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRs
ZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhCiB7CiAgICAgdW5i
bG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewotICAgICAg
ICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxl
ciA9IFdlYWtQdHIgeyBmcmFtZSgpLT5zY3JpcHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAg
dW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIg
PSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gV1RGTW92ZSh1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAg
ICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCAmJiBzY3JpcHRDb250cm9sbGVyKQogICAgICAgICAg
ICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihz
Y3JpcHQpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
ZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRl
eCA4OGMwMzZkMjY0NTFjZjE3NGZiZmY4YzAwMGUyMDVjMWRmZjdkZjY2Li41YWNlMDE1YmQ1ZWY3
MjkzYjYwZWExZTZhNmRlMWU4Y2Y4MWU4OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0
aW9ucy5oCkBAIC00NSw3ICs0NSw4IEBAIHN0cnVjdCBGZXRjaE9wdGlvbnMgewogCiAgICAgRmV0
Y2hPcHRpb25zKCkgPSBkZWZhdWx0OwogICAgIEZldGNoT3B0aW9ucyhEZXN0aW5hdGlvbiwgTW9k
ZSwgQ3JlZGVudGlhbHMsIENhY2hlLCBSZWRpcmVjdCwgUmVmZXJyZXJQb2xpY3ksIFN0cmluZyYm
LCBib29sKTsKLSAgICBGZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
eyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJy
ZXJQb2xpY3ksIGludGVncml0eS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0KKyAgICBG
ZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGRlc3RpbmF0aW9u
LCBtb2RlLCBjcmVkZW50aWFscywgY2FjaGUsIHJlZGlyZWN0LCByZWZlcnJlclBvbGljeSwgaW50
ZWdyaXR5Lmlzb2xhdGVkQ29weSgpLCBrZWVwQWxpdmUgfTsgfQorICAgIEZldGNoT3B0aW9ucyBp
c29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGRlc3RpbmF0aW9uLCBtb2RlLCBjcmVkZW50aWFs
cywgY2FjaGUsIHJlZGlyZWN0LCByZWZlcnJlclBvbGljeSwgV1RGTW92ZShpbnRlZ3JpdHkpLmlz
b2xhdGVkQ29weSgpLCBrZWVwQWxpdmUgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGVQZXJzaXN0ZW50KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGVyc2lz
dGVudChEZWNvZGVyJiwgRmV0Y2hPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q29udGFpbmVyLmgKaW5kZXggNDMxY2YxYzViMmJkMWY5MDNkMTZiZWFmNzcxMjBkNzFhNjEwNTlj
ZC4uOGMwYWQwZjkwNzM3NTk2MDZlYjhjNjk0NjIzMjc2NmVlZjg1MzBmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDb250YWluZXIuaApAQCAtMzYsNyArMzYsOCBAQCBzdHJ1Y3QgUG9s
aWN5Q29udGFpbmVyIHsKICAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBjcm9zc09yaWdpbk9w
ZW5lclBvbGljeTsKICAgICAvLyBGSVhNRTogQ1NQIGxpc3QgYW5kIHJlZmVycmVyIHBvbGljeSBz
aG91bGQgYmUgcGFydCBvZiB0aGUgUG9saWN5Q29udGFpbmVyLgogCi0gICAgUG9saWN5Q29udGFp
bmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENv
cHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRl
ZENvcHkoKSwgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
IFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoY3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UG9saWN5Q29udGFpbmVyPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKQEAgLTQ2LDE0ICs0Nyw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgUG9saWN5Q29udGFpbmVyJiBhLCBjb25zdCBQb2xpY3lDb250YWluZXImIGIpCiAgICAgcmV0
dXJuIGEuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA9PSBiLmNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kgJiYgYS5jcm9zc09yaWdpbk9wZW5lclBvbGljeSA9PSBiLmNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OwogfQogCi1pbmxpbmUgUG9saWN5Q29udGFpbmVyIFBvbGljeUNvbnRhaW5lcjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLAotICAgICAgICBjcm9zc09yaWdpbk9wZW5lclBv
bGljeS5pc29sYXRlZENvcHkoKQotICAgIH07Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIFBvbGljeUNvbnRhaW5lcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cAppbmRleCAwNTc4ZjYzYmViZWIxYTg3ZjQwYWY0N2I5NDMyYjYyZTViZGM0YzIyLi5iM2E5Zjgw
YWY2MDI4M2I5MjRkNDc1OTg2ZTBmNGVmYTZjZDAxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTYwLDUzICs2MCwyNyBA
QCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc1ZhbGlkKCkgY29uc3QKICAgICAgICAg
JiYgKG1fdGltZXNUb1NlbmQuc291cmNlRWFybGllc3RUaW1lVG9TZW5kIHx8IG1fdGltZXNUb1Nl
bmQuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpOwogfQogCi1Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2Vu
Ojppc29sYXRlZENvcHkoKSBjb25zdAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2Fi
bGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgdG9rZW5CYXNlNjRVUkwu
aXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIHNpZ25hdHVyZUJhc2U2NFVSTC5pc29sYXRlZENvcHko
KSwKLSAgICAgICAga2V5SURCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgICAgIGJsaW5kZXIsIHdhaXRpbmdUb2tlbiwgcmVhZHlUb2tlbiwKKyNlbmRp
ZgorICAgICAgICB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKQogICAgIH07CiB9CiAKLVBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAg
IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVw
aGVtZXJhbE5vbmNlOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IG5vbmNl
Lmlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmth
YmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkg
JiYKIHsKICAgICByZXR1cm4gewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBibGluZGVy
LAotICAgICAgICB3YWl0aW5nVG9rZW4sCi0gICAgICAgIHJlYWR5VG9rZW4sCisgICAgICAgIGJs
aW5kZXIsIHdhaXRpbmdUb2tlbiwgcmVhZHlUb2tlbiwKICNlbmRpZgotICAgICAgICB2YWx1ZUJh
c2U2NFVSTC5pc29sYXRlZENvcHkoKQorICAgICAgICBXVEZNb3ZlKHZhbHVlQmFzZTY0VVJMKS5p
c29sYXRlZENvcHkoKQogICAgIH07CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2Fi
bGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGlu
YXRpb25VbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K1ByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY29weSB7CiAg
ICAgICAgIG1fc291cmNlSUQsCkBAIC0xMjQsNiArOTgsMjQgQEAgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
cmV0dXJuIGNvcHk7CiB9CiAKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01l
YXN1cmVtZW50Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IGNvcHkgeworICAgICAgICBtX3NvdXJjZUlELAorICAgICAgICBXVEZNb3ZlKG1fc291cmNl
U2l0ZSkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9kZXN0aW5hdGlvblNpdGUp
Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1fc291cmNlQXBwbGljYXRpb25CdW5k
bGVJRCkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV90aW1lT2ZBZENsaWNrKS5p
c29sYXRlZENvcHkoKSwKKyAgICAgICAgbV9pc0VwaGVtZXJhbCwKKyAgICB9OworICAgIGNvcHku
bV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShtX2F0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpOworICAgIGNvcHkubV90aW1lc1RvU2VuZCA9IFdURk1vdmUobV90aW1lc1RvU2VuZCk7Cisg
ICAgY29weS5tX2VwaGVtZXJhbFNvdXJjZU5vbmNlID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bV9lcGhlbWVyYWxTb3VyY2VOb25jZSkpOworICAgIGNvcHkubV9zb3VyY2VVbmxpbmthYmxlVG9r
ZW4gPSBXVEZNb3ZlKG1fc291cmNlVW5saW5rYWJsZVRva2VuKS5pc29sYXRlZENvcHkoKTsKKyAg
ICBjb3B5Lm1fc291cmNlU2VjcmV0VG9rZW4gPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3Nv
dXJjZVNlY3JldFRva2VuKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIGJvb2wgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OmlzTmVpdGhlclNhbWVTaXRlTm9yQ3Jvc3NTaXRlVHJpZ2dlcmluZ0V2
ZW50KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5VVJMLCBjb25zdCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKQogewogICAgIGF1dG8gaXNTYW1lU2l0ZVRyaWdnZXJpbmdFdmVudCA9IHJlZGly
ZWN0RG9tYWluLm1hdGNoZXMoZmlyc3RQYXJ0eVVSTCkgJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0
YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggMDFmODczNDhhYjZhMjFhMDJlNjAzNmIyNThl
ODkyNzI2MGUzZTcxOC4uMWU3ODFhOWRlZGE5MDZhZjMxZWQwYjIwOWI1NTlhNGMxZDRhMjU3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgK
QEAgLTc3LDcgKzc3LDggQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNvdXJjZVNpdGUgeyBy
ZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVNpdGUg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBTb3VyY2VTaXRlIHsgcmVnaXN0cmFibGVE
b21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIFNvdXJjZVNpdGUgeyBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKS5p
c29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJj
ZVNpdGUmIG90aGVyKSBjb25zdAogICAgICAgICB7CkBAIC0xMjMsNyArMTI0LDggQEAgcHVibGlj
OgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgQXR0
cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29w
eSgpIH07IH0KKyAgICAgICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhlcikgY29uc3QKICAgICAg
ICAgewpAQCAtMTcxLDcgKzE3Myw4IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgRXBoZW1lcmFsTm9u
Y2UgewogICAgICAgICBTdHJpbmcgbm9uY2U7CiAKLSAgICAgICAgRXBoZW1lcmFsTm9uY2UgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIEVwaGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyBub25jZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEVw
aGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgpICYmICB7IHJldHVybiB7IFdURk1vdmUobm9uY2Up
Lmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFs
aWQoKSBjb25zdDsKIApAQCAtMTg3LDMxICsxOTAsMzcgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
ICAgIFN0cmluZyB2YWx1ZUJhc2U2NFVSTDsKICAgICAgICAgCi0gICAgICAgIFVubGlua2FibGVU
b2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgVW5saW5rYWJsZVRva2VuIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHko
KSAmJjsKICAgICB9OwogCiAgICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tlbiA6IFVubGlu
a2FibGVUb2tlbiB7Ci0gICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KKyAg
ICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsg
VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAogICAgIHN0cnVj
dCBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiA6IFVubGlua2FibGVUb2tlbiB7Ci0gICAgICAg
IERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAg
ICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0
dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIERlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgVW5saW5r
YWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBTZWNy
ZXRUb2tlbiB7CiAgICAgICAgIFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKICAgICAgICAgU3RyaW5n
IHNpZ25hdHVyZUJhc2U2NFVSTDsKICAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOwotICAg
ICAgICBTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgU2VjcmV0VG9r
ZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHRva2VuQmFzZTY0VVJMLmlzb2xh
dGVkQ29weSgpLCBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksIGtleUlEQmFzZTY0
VVJMLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHRva2VuQmFzZTY0VVJMKS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShzaWduYXR1cmVCYXNlNjRVUkwpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGtleUlE
QmFzZTY0VVJMKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0OwogICAgIH07CiAKICAgICBzdHJ1Y3QgU291cmNlU2VjcmV0VG9rZW4gOiBTZWNyZXRUb2tl
biB7Ci0gICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAg
ICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsg
U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgU291cmNlU2VjcmV0VG9r
ZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5
KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRGVzdGluYXRpb25TZWNyZXRUb2tlbiA6IFNl
Y3JldFRva2VuIHsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRGVzdGluYXRpb25TZWNyZXRUb2tl
biBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29w
eSgpIH07IH0KKyAgICAgICAgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsKQEAgLTQyOSw3ICs0MzgsOCBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpc29s
YXRlZENvcHkoKSAmJjsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgRXhwZWN0ZWQ8QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KGNvbnN0
IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAKaW5kZXggNmFl
ZTllYmJhNDI3YzI2NzZkNDRlYjBkZTFmYzA0ZDE0ODNjYjA2NS4uZmE2Yzk2ZGU0NThlMDBlMDhi
YTViNDkwMWVjYWE5MjMwODVkMTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VU
aW1pbmcuY3BwCkBAIC02OCwxNSArNjgsMjYgQEAgVmVjdG9yPFJlZjxQZXJmb3JtYW5jZVNlcnZl
clRpbWluZz4+IFJlc291cmNlVGltaW5nOjpwb3B1bGF0ZVNlcnZlclRpbWluZygpIGNvbnMKICAg
ICB9KTsKIH0KIAotUmVzb3VyY2VUaW1pbmcgUmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CitSZXNvdXJjZVRpbWluZyBSZXNvdXJjZVRpbWluZzo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QgJgogewotICAgIHJldHVybiBSZXNvdXJjZVRpbWluZygKKyAgICByZXR1cm4gUmVzb3VyY2VU
aW1pbmcgewogICAgICAgICBtX3VybC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9pbml0aWF0
b3IuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkVGltaW5nLmlzb2xhdGVk
Q29weSgpLAogICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwKICAg
ICAgICAgY3Jvc3NUaHJlYWRDb3B5KG1fc2VydmVyVGltaW5nKQotICAgICk7CisgICAgfTsKK30K
KworUmVzb3VyY2VUaW1pbmcgUmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSgpICYmCit7Cisg
ICAgcmV0dXJuIFJlc291cmNlVGltaW5nIHsKKyAgICAgICAgV1RGTW92ZShtX3VybCkuaXNvbGF0
ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9pbml0aWF0b3IpLmlzb2xhdGVkQ29weSgpLAor
ICAgICAgICBXVEZNb3ZlKG1fcmVzb3VyY2VMb2FkVGltaW5nKS5pc29sYXRlZENvcHkoKSwKKyAg
ICAgICAgV1RGTW92ZShtX25ldHdvcmtMb2FkTWV0cmljcykuaXNvbGF0ZWRDb3B5KCksCisgICAg
ICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fc2VydmVyVGltaW5nKSkKKyAgICB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWlu
Zy5oCmluZGV4IDkwNWZjNjY5MGIxYTc3YzBmNzA5YjcwM2NhNDljZjA4Y2Q3OGExOWMuLjgxMDk2
MmZjNGRhNmEyNzRiOWJmNDdiM2NiNmIxZTZmZjg1NjcwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZVRpbWluZy5oCkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1f
bmV0d29ya0xvYWRNZXRyaWNzOyB9CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MoKSB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogICAgIFZlY3RvcjxS
ZWY8UGVyZm9ybWFuY2VTZXJ2ZXJUaW1pbmc+PiBwb3B1bGF0ZVNlcnZlclRpbWluZygpIGNvbnN0
OwotICAgIFJlc291cmNlVGltaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFJlc291cmNl
VGltaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgUmVzb3VyY2VUaW1pbmcgaXNvbGF0
ZWRDb3B5KCkgJiY7CiAKICAgICB2b2lkIG92ZXJyaWRlSW5pdGlhdG9yTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpIHsgbV9pbml0aWF0b3IgPSBuYW1lOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Nl
cnZlclRpbWluZy5jcHAKaW5kZXggY2UxNzY3MGQ0NzlhYTgxOTAzODJlYWQ5ZDU5M2MwMTkxYTg1
OTVhZS4uYzA5OTBjMWFjZjQ1OTdhZDgwOTcyYzYxMGI2MDZlOTNjOGYyNDJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5jcHAKQEAgLTQ2LDkgKzQ2LDE0IEBAIHZvaWQgU2Vy
dmVyVGltaW5nOjpzZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgIH0KIH0KIAotU2VydmVyVGltaW5nIFNlcnZlclRpbWluZzo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKK1NlcnZlclRpbWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNv
bnN0ICYKIHsKLSAgICByZXR1cm4gU2VydmVyVGltaW5nKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGR1
cmF0aW9uLCBkZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0
aW9uU2V0KTsKKyAgICByZXR1cm4gU2VydmVyVGltaW5nIHsgbmFtZS5pc29sYXRlZENvcHkoKSwg
ZHVyYXRpb24sIGRlc2NyaXB0aW9uLmlzb2xhdGVkQ29weSgpLCBkdXJhdGlvblNldCwgZGVzY3Jp
cHRpb25TZXQgfTsKK30KKworU2VydmVyVGltaW5nIFNlcnZlclRpbWluZzo6aXNvbGF0ZWRDb3B5
KCkgJiYKK3sKKyAgICByZXR1cm4gU2VydmVyVGltaW5nIHsgV1RGTW92ZShuYW1lKS5pc29sYXRl
ZENvcHkoKSwgZHVyYXRpb24sIFdURk1vdmUoZGVzY3JpcHRpb24pLmlzb2xhdGVkQ29weSgpLCBk
dXJhdGlvblNldCwgZGVzY3JpcHRpb25TZXQgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5oCmluZGV4IDY3YjQxMDhlZjk0NTkzOWQ4
ZjdmMTNjYmQxYTBjZjBlNjg0Y2I0NDYuLjhiYmU4NTdkNGIyMGM2MjYxZGQ2NDMxMDYwODU1Mzgy
YmE4OGNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmgKQEAgLTQyLDcgKzQy
LDggQEAgc3RydWN0IFNlcnZlclRpbWluZyB7CiAgICAgU2VydmVyVGltaW5nKFN0cmluZyYmIG5h
bWUsIGRvdWJsZSBkdXJhdGlvbiwgU3RyaW5nJiYgZGVzY3JpcHRpb24sIGJvb2wgZHVyYXRpb25T
ZXQsIGJvb2wgZGVzY3JpcHRpb25TZXQpOwogCiAgICAgdm9pZCBzZXRQYXJhbWV0ZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgU2VydmVyVGltaW5nIGlzb2xhdGVkQ29weSgp
IGNvbnN0OworICAgIFNlcnZlclRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFNl
cnZlclRpbWluZyBpc29sYXRlZENvcHkoKSAmJjsKIH07CiAKIGlubGluZSBTZXJ2ZXJUaW1pbmc6
OlNlcnZlclRpbWluZyhTdHJpbmcmJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDUxZmZhNjkzNTJlNWYzMjAwNWNhZmVh
MDlkYzk0Y2EyZmY4ZDQzY2QuLmUyOTU4OWMyZmYyNDAwNDI1MzVjM2MwMzk2ZmM4YjQ3NjI0NDJh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBy
ZXF1ZXN0KTsKIAogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiBy
LXZhbHVlIHRvIGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3Qu
aXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNl
Y3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSksIGNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lDb3B5ID0gV1RGTW92ZShjcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCkuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5
KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weSksIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lDb3B5ID0gV1RGTW92ZShjcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGVlNDdjYWFhOGQwZGRlM2Y4OTE3OWE3NTYzMWVhMzRj
YmUzNjMxMmIuLjYyMDQwMTBmYWZjZTAzNjNlN2MwZWJiNGQ2MTZjZWZiMTA0MjBhOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtNDIsNyArNDIsOCBAQCBzdHJ1Y3QgQ2xpZW50
T3JpZ2luIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q2xpZW50T3JpZ2luPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgQ2xpZW50T3JpZ2luIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRPcmlnaW4uaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSAmJiB7IHJl
dHVybiB7IFdURk1vdmUodG9wT3JpZ2luKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShjbGllbnRP
cmlnaW4pLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICBib29sIGlzUmVsYXRlZChjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiB0b3BPcmlnaW4gPT0gb3RoZXIg
fHwgY2xpZW50T3JpZ2luID09IG90aGVyOyB9CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiBjbGll
bnRSZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChjbGllbnRPcmlnaW4uaG9zdCk7IH0KQEAgLTYxLDExICs2
Miw2IEBAIGlubGluZSBib29sIENsaWVudE9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBDbGllbnRP
cmlnaW4mIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0b3BPcmlnaW4gPT0gb3RoZXIudG9wT3Jp
Z2luICYmIGNsaWVudE9yaWdpbiA9PSBvdGhlci5jbGllbnRPcmlnaW47CiB9CiAKLWlubGluZSBD
bGllbnRPcmlnaW4gQ2xpZW50T3JpZ2luOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJl
dHVybiB7IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgY2xpZW50T3JpZ2luLmlzb2xhdGVkQ29w
eSgpIH07Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIENsaWVudE9y
aWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCB0
b3BPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmluZGV4IGVjODBh
ZTQzYWJlNzkxMzY5NzhjN2ZkMDAzOTBjMjE2YjY5Yjc3MzguLmRmYTNlODJhNjI4NGJiZGExMDQy
Mzg2MmU2NWUyYjhiZDBmZmVjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJv
Y2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcu
Y3BwCkBAIC04OSw5ICs4OSw5IEBAIFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiBQcm9jZXNz
V2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpCiAgICAgcmV0dXJuIHsgRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIH07CiB9
CiAKLXZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24oY29uc3QgUHJl
d2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mbykKK3ZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdh
cm1XaXRoSW5mb3JtYXRpb24oUHJld2FybUluZm9ybWF0aW9uJiYgcHJld2FybUluZm8pCiB7Ci0g
ICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHJld2FybShwcmV3YXJtSW5mby5mb250
Q2FjaGUpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0oV1RGTW92
ZShwcmV3YXJtSW5mby5mb250Q2FjaGUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNz
V2FybWluZy5oCmluZGV4IGNmMTdlYWExZDlkMGI2ZTNkODE3YjNiMWEyMjRkNWRjYzcwMjAwNGUu
LjRkM2M3ZTExODg1N2E4ZjcwNDVlMmEzMzA3ZGU4YWNjMzVlMDk5MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Byb2Nlc3NXYXJtaW5nLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHByZXdhcm1HbG9iYWxseSgpOwogCiAgICAgc3RhdGljIFByZXdhcm1JbmZvcm1hdGlv
biBjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgcHJld2FybVdp
dGhJbmZvcm1hdGlvbihjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKKyAgICBzdGF0aWMgdm9p
ZCBwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFByZXdhcm1JbmZvcm1hdGlvbiYmKTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwCmluZGV4IGEwOTM0ZDdmNTM1NTdmOTY1ZjBi
NTJkZDM2ODM4ZGQ2YTQ2OTM5ZmYuLjJiM2JmNDcyYzBmMTIwMjMxMmI5M2IyN2Y0NWIxYTk0NmYz
ODZjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcApAQCAtNDUsNyArNDUsNyBA
QCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyhjb25zdAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpOwogfQogCi1Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHko
KSBjb25zdAorQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHk7CiAgICAg
aXNvbGF0ZWRDb3B5Lm1faGVhZGVycyA9IGNyb3NzVGhyZWFkQ29weShtX2hlYWRlcnMpOwpAQCAt
NTMsNCArNTMsMTIgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGEKICAgICByZXR1cm4gaXNvbGF0
ZWRDb3B5OwogfQogCitDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkoKSAmJgoreworICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHk7CisgICAg
aXNvbGF0ZWRDb3B5Lm1faGVhZGVycyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1faGVhZGVy
cykpOworICAgIGlzb2xhdGVkQ29weS5tX2h0dHBTdGF0dXNDb2RlID0gbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICByZXR1cm4gaXNvbGF0ZWRDb3B5OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCmluZGV4IDk0OGQ4Y2M4NzQyOGRlODlhMGZjODA5
OWM2NWJkMDNhY2FjZDVkYjMuLmQ2MDU4ZThjZjk5YzVkYTNkOWM5MmQyZTg2YjZmYjI0OGQ0Y2E4
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCkBAIC00Myw3ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoKSA9IGRlZmF1bHQ7
CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5KCkgJiY7
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGRlY29kZShEZWNvZGVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCBhYjY4ZGFjYmZhNzQwY2E0OGVj
MWMzNDUyYTg2MDIxMTY2ZDk3MTMwLi5mYTIyNDBmZTg2ZDQwNGY4ZjM0NzFlNDFhNjhiNzQ2MTU5
MDFkOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTQ2LDE0ICs0
NiwxMiBAQCBjbGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNzIEljb247CiAKIHN0cnVjdCBGaWxlQ2hv
b3NlckZpbGVJbmZvIHsKLSAgICBGaWxlQ2hvb3NlckZpbGVJbmZvIGlzb2xhdGVkQ29weSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4geyBwYXRoLmlzb2xhdGVkQ29weSgpLCByZXBsYWNl
bWVudFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpIH07Ci0g
ICAgfQotCi0gICAgY29uc3QgU3RyaW5nIHBhdGg7Ci0gICAgY29uc3QgU3RyaW5nIHJlcGxhY2Vt
ZW50UGF0aDsKLSAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWU7CisgICAgRmlsZUNob29zZXJG
aWxlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgcGF0aC5pc29sYXRlZENv
cHkoKSwgcmVwbGFjZW1lbnRQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgRmlsZUNob29zZXJGaWxlSW5mbyBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IFdURk1vdmUocGF0aCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUocmVwbGFjZW1l
bnRQYXRoKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShkaXNwbGF5TmFtZSkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQorCisgICAgU3RyaW5nIHBhdGg7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aDsK
KyAgICBTdHJpbmcgZGlzcGxheU5hbWU7CiB9OwogCiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5n
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9w
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaApp
bmRleCA0MjhiZmUwZTYyYzc4Y2NjMjg5MDUyOGIwMTg1ODlhYjQ4MmUzOThiLi44NWMwMDg1MGNl
Y2M0YzAxNjc2NjA3NzFjOWVhZDJkZDY5NzU1ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmgKQEAgLTQzLDYgKzQzLDkgQEAgc3RydWN0IE1l
ZGlhU2VsZWN0aW9uT3B0aW9uIHsKICAgICB7CiAgICAgfQogCisgICAgTWVkaWFTZWxlY3Rpb25P
cHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpLCB0eXBlIH07IH0KKyAgICBNZWRpYVNlbGVjdGlvbk9wdGlvbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZGlzcGxheU5hbWUpLmlzb2xhdGVkQ29weSgpLCB0
eXBlIH07IH0KKwogICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBUeXBlIHR5cGUgeyBUeXBl
OjpSZWd1bGFyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVn
aXN0cmFibGVEb21haW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9t
YWluLmgKaW5kZXggN2NlM2Y2MTM2YzMxN2RhM2ZiZWMyMjQwMWY1YmYyODAxNjQ5NWM2MC4uYmNl
OGM0MzAzNDBmZTY3MGJjMjQ5Y2RmMTdiOTg2OWE0NGFiODYyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBAIC02Nyw3ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1hdGNoZXMob3JpZ2luLmhvc3QpOwogICAgIH0KIAotICAgIFJlZ2lz
dHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9t
YWluIHsgbV9yZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0
cmFibGVEb21haW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBSZWdpc3RyYWJsZURv
bWFpbiB7IG1fcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIFJlZ2lz
dHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgV1RGTW92ZShtX3JlZ2lzdHJhYmxlRG9tYWluKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAg
ICBSZWdpc3RyYWJsZURvbWFpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAg
ICAgIDogbV9yZWdpc3RyYWJsZURvbWFpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRl
eCAxYmZhM2ZkNWYyYjNhMjZhOWE0YWVlOTU1M2I2MmI2ODZlYmUyMjQxLi4xMmNlM2U5NmRkMzEy
YzYxM2Q2MTgyYjA5ZDI3OTE1OGJiZjY5ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEZvbnRD
YWNoZTo6cHJld2FybUdsb2JhbGx5KCkKIHsKIH0KIAotdm9pZCBGb250Q2FjaGU6OnByZXdhcm0o
Y29uc3QgUHJld2FybUluZm9ybWF0aW9uJikKK3ZvaWQgRm9udENhY2hlOjpwcmV3YXJtKFByZXdh
cm1JbmZvcm1hdGlvbiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg5YjRlMTkyN2E3OGUwM2YzNDgzNWE4NmNjOTAyYjFhMjY3
YWEyNjkuLjQ5ZDMwZDY0NjlhZGYxZjRhZTA4ODZlZGNmZTI0ZjJlZWQ0N2QyNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxsaW1p
dHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hGdW5jdGlvbnMuaD4KQEAgLTM1NiwxMyArMzU3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2s7CiAKICAgICAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0gICAgICAgIFByZXdhcm1JbmZvcm1hdGlvbiBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICAgICAgUHJld2FybUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoc2VlbkZhbWlsaWVzKSwgY3Jvc3NU
aHJlYWRDb3B5KGZvbnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrKSB9OyB9CisgICAgICAg
IFByZXdhcm1JbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHNlZW5GYW1pbGllcykpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShm
b250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjaykpIH07IH0KIAogICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByZXdhcm1JbmZvcm1h
dGlvbj4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogICAgIFByZXdhcm1JbmZvcm1hdGlvbiBj
b2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBwcmV3YXJtKGNvbnN0
IFByZXdhcm1JbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcHJld2FybShQcmV3YXJtSW5mb3JtYXRp
b24mJik7CiAgICAgc3RhdGljIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7CiAKIHByaXZhdGU6CkBA
IC00MzEsMTEgKzQzMyw2IEBAIGlubGluZSBib29sIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0
aW9uOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gc2VlbkZhbWlsaWVzLmlzRW1wdHkoKSAm
JiBmb250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjay5pc0VtcHR5KCk7CiB9CiAKLWlubGlu
ZSBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1h
dGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBzZWVuRmFtaWxpZXMu
aXNvbGF0ZWRDb3B5KCksIGZvbnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrLmlzb2xhdGVk
Q29weSgpIH07Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRDYWNoZTo6
UHJld2FybUluZm9ybWF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNG
YW1pbGllcy5jcHAKaW5kZXggYjBiM2Q0NTJkNTYxOWM2OThhOWIyNTlhYWFmMjUzZTQxM2QwMzIz
My4uMGM0NWIyMDVjOWE4Y2YwZmM1OTc5NTUwOGZmNjA0OTYyM2EzYjRhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGll
cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
b250R2VuZXJpY0ZhbWlsaWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIu
aD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
OTIsMjMgKzkzLDI5IEBAIEZvbnRHZW5lcmljRmFtaWxpZXM6OkZvbnRHZW5lcmljRmFtaWxpZXMo
KQogICAgIH0pOwogfQogCi1Gb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFtaWxpZXM6
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitGb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFt
aWxpZXM6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBGb250R2VuZXJpY0ZhbWlsaWVz
IGNvcHk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc3RhbmRhcmRGb250RmFtaWx5TWFw
KQotICAgICAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXks
IGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVl
IDogbV9zZXJpZkZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9zZXJpZkZvbnRGYW1pbHlN
YXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAg
IGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZpeGVkRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29w
eS5tX2ZpeGVkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5p
c29sYXRlZENvcHkoKSk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc2Fuc1NlcmlmRm9u
dEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXAuYWRkKGtl
eVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0
byAma2V5VmFsdWUgOiBtX2N1cnNpdmVGb250RmFtaWx5TWFwKQotICAgICAgICBjb3B5Lm1fY3Vy
c2l2ZUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0
ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZhbnRhc3lGb250RmFtaWx5
TWFwKQotICAgICAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtl
eSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAma2V5VmFs
dWUgOiBtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKQotICAgICAgICBjb3B5Lm1fcGljdG9ncmFw
aEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRD
b3B5KCkpOworICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENv
cHkobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9zZXJpZkZvbnRGYW1pbHlN
YXAgPSBjcm9zc1RocmVhZENvcHkobV9zZXJpZkZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9m
aXhlZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkobV9maXhlZEZvbnRGYW1pbHlNYXAp
OworICAgIGNvcHkubV9zYW5zU2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1f
c2Fuc1NlcmlmRm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFw
ID0gY3Jvc3NUaHJlYWRDb3B5KG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9m
YW50YXN5Rm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2ZhbnRhc3lGb250RmFtaWx5
TWFwKTsKKyAgICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENv
cHkobV9waWN0b2dyYXBoRm9udEZhbWlseU1hcCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK0Zv
bnRHZW5lcmljRmFtaWxpZXMgRm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KCkgJiYK
K3sKKyAgICBGb250R2VuZXJpY0ZhbWlsaWVzIGNvcHk7CisgICAgY29weS5tX3N0YW5kYXJkRm9u
dEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fc3RhbmRhcmRGb250RmFtaWx5
TWFwKSk7CisgICAgY29weS5tX3NlcmlmRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKG1fc2VyaWZGb250RmFtaWx5TWFwKSk7CisgICAgY29weS5tX2ZpeGVkRm9udEZhbWls
eU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZml4ZWRGb250RmFtaWx5TWFwKSk7Cisg
ICAgY29weS5tX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApKTsKKyAgICBjb3B5Lm1fY3Vyc2l2ZUZvbnRGYW1p
bHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2N1cnNpdmVGb250RmFtaWx5TWFwKSk7
CisgICAgY29weS5tX2ZhbnRhc3lGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUobV9mYW50YXN5Rm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9waWN0b2dyYXBoRm9udEZh
bWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fcGljdG9ncmFwaEZvbnRGYW1pbHlN
YXApKTsKICAgICByZXR1cm4gY29weTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oCmluZGV4IDYwNzcwY2Q2NGMz
OTE4YjAwMDUxZTc0NTdiYmVmNDM3NGYyYWVjMjQuLmVlNDdkZGNjM2M0YzJjNDA4OTc1ZGI3NDk5
NjRkNDczMWQ2Y2Y1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3MgRm9u
dEdlbmVyaWNGYW1pbGllcyB7CiBwdWJsaWM6CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcygpOwog
Ci0gICAgRm9udEdlbmVyaWNGYW1pbGllcyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBGb250
R2VuZXJpY0ZhbWlsaWVzIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgRm9udEdlbmVyaWNG
YW1pbGllcyBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIGNvbnN0IFN0cmluZyYgc3RhbmRhcmRG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogICAgIGNvbnN0
IFN0cmluZyYgZml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCmluZGV4IGYyYzk2NDBkNDZkM2E5MzU2MTE0ZjMzYWIxNDA1MmM3ZmVjMjc3OGMuLjRiM2E1
ZTE0Mjg3YjU3M2MzMjk0YWEwYWE2YzZhYjJlYzIzMDI0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM3Myw3ICszNzMsNyBA
QCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAg
ICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJhdGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFt
ZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2Fj
aGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVy
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBX
VEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdR
dWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gV1RGTW92ZShzb3VyY2VVUkwpLmlz
b2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJh
bWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcXVldWUgbWF5
IGhhdmUgYmVlbiBjbG9zZWQgaWYgYWZ0ZXIgd2UgZ290IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSwg
c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpIHdhcyBjYWxsZWQuCiAgICAgICAgICAgICAgICAgaWYg
KHByb3RlY3RlZERlY29kaW5nUXVldWUucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGlu
Z1F1ZXVlICYmIHByb3RlY3RlZERlY29kZXIucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNv
ZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1l
Q29tbWl0UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IGFkOWEyMzdhYTljNjA0ODU0NzQ1NTFjMjQ1ODZkMmNhOGE1NzYzMDIuLjQwZGYz
MmVjNzZmM2U0OThlZGE3OWNhODc4Y2RmMDYzYzY5M2E5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTk1Niw3ICs5NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0oKTsKIAogICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNMb2NrIH07Ci0g
ICAgICAgIHJldHVybiAqbV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnMuYWRkKGZvbGRlZC5p
c29sYXRlZENvcHkoKSwgV1RGTW92ZShpbnN0YWxsZWRGb250RmFtaWx5KSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICByZXR1cm4gKm1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmFkZChX
VEZNb3ZlKGZvbGRlZCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaW5zdGFsbGVkRm9udEZhbWls
eSkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKICAgICBjb25zdCBJbnN0YWxsZWRGb250JiBm
b250Rm9yUG9zdFNjcmlwdE5hbWUoY29uc3QgQXRvbVN0cmluZyYgcG9zdFNjcmlwdE5hbWUpCkBA
IC0xNjMwLDcgKzE2MzAsNyBAQCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250Q2Fj
aGU6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdAogICAgIHJldHVybiB7IGNvcHlU
b1ZlY3RvcihtX3NlZW5GYW1pbGllc0ZvclByZXdhcm1pbmcpLCBjb3B5VG9WZWN0b3IobV9mb250
TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFja0ZvclByZXdhcm1pbmcpIH07CiB9CiAKLXZvaWQg
Rm9udENhY2hlOjpwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9y
bWF0aW9uKQordm9pZCBGb250Q2FjaGU6OnByZXdhcm0oUHJld2FybUluZm9ybWF0aW9uJiYgcHJl
d2FybUluZm9ybWF0aW9uKQogewogICAgIGlmIChwcmV3YXJtSW5mb3JtYXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CkBAIC0xNjQwLDcgKzE2NDAsNyBAQCB2b2lkIEZvbnRDYWNoZTo6
cHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKIAog
ICAgIGF1dG8mIGRhdGFiYXNlID0gRm9udERhdGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1Vz
ZXJJbnN0YWxsZWRGb250cygpOwogCi0gICAgbV9wcmV3YXJtUXVldWUtPmRpc3BhdGNoKFsmZGF0
YWJhc2UsIHByZXdhcm1JbmZvcm1hdGlvbiA9IHByZXdhcm1JbmZvcm1hdGlvbi5pc29sYXRlZENv
cHkoKV0geworICAgIG1fcHJld2FybVF1ZXVlLT5kaXNwYXRjaChbJmRhdGFiYXNlLCBwcmV3YXJt
SW5mb3JtYXRpb24gPSBXVEZNb3ZlKHByZXdhcm1JbmZvcm1hdGlvbikuaXNvbGF0ZWRDb3B5KCld
IHsKICAgICAgICAgZm9yIChhdXRvJiBmYW1pbHkgOiBwcmV3YXJtSW5mb3JtYXRpb24uc2VlbkZh
bWlsaWVzKQogICAgICAgICAgICAgZGF0YWJhc2UuY29sbGVjdGlvbkZvckZhbWlseShmYW1pbHkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCAxMTcyODk0ZmVkMjViOGY0
ZjVjMzMzMGFmMzJlMjQyODhhN2M1ODYzLi5hMGM1NzEwNzU4OTZkNjQ1NDdlNzI5ODRkZjFhMDgz
MThkODRkZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTQzLDYgKzQz
LDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlL
aXQvVUlWaWV3Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNp
bXBvcnQgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5o
PgogCiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KQEAgLTQ4MiwxOSArNDgzLDEw
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQoYm9vbCBjYW5QbGF5RmFzCiAgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOwogfQogCi1zdGF0aWMgVmVjdG9yPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiBpc29sYXRlZENvcHkoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0
aW9uT3B0aW9uPiYgb3B0aW9ucykKLXsKLSAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+
IG9wdGlvbnNDb3B5OwotICAgIG9wdGlvbnNDb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3B0
aW9ucy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykKLSAgICAgICAg
b3B0aW9uc0NvcHkudW5jaGVja2VkQXBwZW5kKHsgb3B0aW9uLmRpc3BsYXlOYW1lLmlzb2xhdGVk
Q29weSgpLCBvcHRpb24udHlwZSB9KTsKLSAgICByZXR1cm4gb3B0aW9uc0NvcHk7Ci19Ci0KIHZv
aWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQo
KSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZElu
ZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIHNlbGVj
dGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTUwNyw3ICs0OTksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3Qg
Vgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXND
dXJyZW50KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2Vs
ZWN0ZWRJbmRleF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMp
LCBzZWxlY3RlZEluZGV4XSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5sZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKaW5kZXgg
NmUxZThkMWZjYmE3ODkwZDk2NDc2MGU4NDM2MWE1NWYxMDk4Yjc5Zi4uZGI4MzNmMzBiYmU3ZTYx
NGQyMTllN2UzMTU3NjMyYzJmMGEzZjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgK
QEAgLTM2LDE3ICszNiwyMyBAQCBzdHJ1Y3QgQXVkaW9Db25maWd1cmF0aW9uIHsKICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBzYW1wbGVyYXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c3BhdGlhbFJlbmRlcmluZzsKIAotICAgIEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICBBdWRpb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsK
KyAgICBBdWRpb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9u
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIEF1ZGlvQ29uZmlndXJhdGlvbiBBdWRp
b0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgQXVkaW9Db25maWd1
cmF0aW9uIEF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IHJldHVybiB7IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpLCBjaGFubmVscy5pc29sYXRlZENv
cHkoKSwgYml0cmF0ZSwgc2FtcGxlcmF0ZSwgc3BhdGlhbFJlbmRlcmluZyB9OwogfQogCitpbmxp
bmUgQXVkaW9Db25maWd1cmF0aW9uIEF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkg
JiYKK3sKKyAgICByZXR1cm4geyBXVEZNb3ZlKGNvbnRlbnRUeXBlKS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShjaGFubmVscykuaXNvbGF0ZWRDb3B5KCksIGJpdHJhdGUsIHNhbXBsZXJhdGUsIHNw
YXRpYWxSZW5kZXJpbmcgfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXVk
aW9Db25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFDb25maWd1cmF0aW9uLmgKaW5kZXggZWZhYzRjNzk0ZGNmZWI0NzMxNTZiZDNmNDVmZGU1
OWNmZmYwODUzOC4uOTQzYjkwNWI2ODUyOWE2NzM2N2NhYTNiODQ3NGE4OWFiZTA0YzQ5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKQEAgLTM1LDE3ICszNSwyMyBAQCBzdHJ1Y3QgTWVk
aWFDb25maWd1cmF0aW9uIHsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4g
dmlkZW87CiAgICAgc3RkOjpvcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwogCi0g
ICAgTWVkaWFDb25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIE1lZGlhQ29u
ZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIE1lZGlhQ29uZmlndXJhdGlv
biBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCi1pbmxpbmUgTWVkaWFDb25maWd1cmF0aW9uIE1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK2lubGluZSBNZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0
aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KHZpZGVvKSwgIGNyb3NzVGhyZWFkQ29weShhdWRpbykgfTsKIH0KIAoraW5saW5lIE1lZGlh
Q29uZmlndXJhdGlvbiBNZWRpYUNvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpICYmCit7Cisg
ICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmlkZW8pKSwgIGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKGF1ZGlvKSkgfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgTWVkaWFDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1Zp
ZGVvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKaW5kZXggZTg2MzFmMmNmMTc2N2VhZmI4NWQ1NTZh
MGRlN2IyNTRjMDViMmI4Ny4uMTMwMWVjNjYzZDNiOTZiMzMyYzg5NzU4NmIwYTNhM2FiOWU3NTc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
VmlkZW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKQEAgLTQzLDE3ICs0MywyMyBAQCBzdHJ1
Y3QgVmlkZW9Db25maWd1cmF0aW9uIHsKICAgICBzdGQ6Om9wdGlvbmFsPEhkck1ldGFkYXRhVHlw
ZT4gaGRyTWV0YWRhdGFUeXBlOwogICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4g
dHJhbnNmZXJGdW5jdGlvbjsKIAotICAgIFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICBWaWRlb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsK
KyAgICBWaWRlb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9u
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIFZpZGVvQ29uZmlndXJhdGlvbiBWaWRl
b0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgVmlkZW9Db25maWd1
cmF0aW9uIFZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IHJldHVybiB7IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRy
YXRlLCBmcmFtZXJhdGUsIGFscGhhQ2hhbm5lbCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBl
LCB0cmFuc2ZlckZ1bmN0aW9uIH07CiB9CiAKK2lubGluZSBWaWRlb0NvbmZpZ3VyYXRpb24gVmlk
ZW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1v
dmUoY29udGVudFR5cGUpLmlzb2xhdGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBm
cmFtZXJhdGUsIGFscGhhQ2hhbm5lbCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFu
c2ZlckZ1bmN0aW9uIH07Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFZpZGVv
Q29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCmluZGV4IDZhM2FhODdkODkzMWM0YjgwY2EwZGVhNzM4MDZiNTcwYzg2Nzhl
NTguLjM0ZTMwMjVmNzQxYzZhOWU5ZjIzYzQ0YjQ3ODkzMWI3OGQ4MDk1OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCkBAIC00MiwxOSArNDIsMjcgQEAgc3RydWN0IFJUQ0RhdGFDaGFubmVsSW5p
dCB7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQ7CiAgICAgUlRDUHJpb3Jp
dHlUeXBlIHByaW9yaXR5IHsgUlRDUHJpb3JpdHlUeXBlOjpMb3cgfTsKIAotICAgIFJUQ0RhdGFD
aGFubmVsSW5pdCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRD
b3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UlRDRGF0YUNoYW5uZWxJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5l
IFJUQ0RhdGFDaGFubmVsSW5pdCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CitpbmxpbmUgUlRDRGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QgJgogewogICAgIGF1dG8gY29weSA9ICp0aGlzOwogICAgIGNvcHkucHJv
dG9jb2wgPSBwcm90b2NvbC5pc29sYXRlZENvcHkoKTsKICAgICByZXR1cm4gY29weTsKIH0KIAor
aW5saW5lIFJUQ0RhdGFDaGFubmVsSW5pdCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29w
eSgpICYmCit7CisgICAgYXV0byBjb3B5ID0gV1RGTW92ZSgqdGhpcyk7CisgICAgY29weS5wcm90
b2NvbCA9IFdURk1vdmUoY29weS5wcm90b2NvbCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJu
IGNvcHk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUlRDRGF0YUNoYW5uZWxJ
bml0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG9y
ZGVyZWQgPDwgbWF4UGFja2V0TGlmZVRpbWUgPDwgbWF4UmV0cmFuc21pdHMgPDwgcHJvdG9jb2wg
PDwgbmVnb3RpYXRlZCA8PCBpZCA8PCBwcmlvcml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW0KaW5kZXggOGUzNzU4ZmU2NmFiODZhNjZhYjJkNzA5N2Q0Y2Y1NGYyOTdjMGZiOS4u
M2U1MWZlMTU2NzVkNzMzYmNjZWY2OWNjOThhNTAzN2NlNmNkNTc1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KQEAgLTE4MCw3ICsxODAsNyBAQCBWZWN0b3I8Q2FwdHVyZURl
dmljZT4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmV0cmlldmVDYXB0dXJlRGV2aWNlcygpCiB2
b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5k
aXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBkZXZpY2VMaXN0ID0gcmV0cmlldmVDYXB0dXJlRGV2aWNlcygpLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgeyAgICAgICAgICAgIAorICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRldmljZUxp
c3QgPSBjcm9zc1RocmVhZENvcHkocmV0cmlldmVDYXB0dXJlRGV2aWNlcygpKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGJvb2wgZGV2aWNlSGFzQ2hhbmdlZCA9IG1fZGV2aWNlcy5zaXplKCkg
IT0gZGV2aWNlTGlzdC5zaXplKCk7CiAgICAgICAgICAgICBpZiAoIWRldmljZUhhc0NoYW5nZWQp
IHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IGRldmljZUxp
c3Quc2l6ZSgpOyArK2NwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IGQ4MGM1YmQ2YzAzZGY1MmFkMTEzOWNlNDM0YzRh
NGE1MzM4MTRlYTcuLmJkNTE2Y2Y2YzY1ZjJkYjQwNTE4ZjBjZDFkN2U5N2U4Zjc0ZTM4NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNw
cApAQCAtNDIsNyArNDIsNyBAQCBIVFRQSGVhZGVyTWFwOjpIVFRQSGVhZGVyTWFwKCkKIHsKIH0K
IAotSFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAorSFRU
UEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAg
SFRUUEhlYWRlck1hcCBtYXA7CiAgICAgbWFwLm1fY29tbW9uSGVhZGVycyA9IGNyb3NzVGhyZWFk
Q29weShtX2NvbW1vbkhlYWRlcnMpOwpAQCAtNTAsNiArNTAsMTQgQEAgSFRUUEhlYWRlck1hcCBI
VFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBtYXA7CiB9CiAK
K0hUVFBIZWFkZXJNYXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBI
VFRQSGVhZGVyTWFwIG1hcDsKKyAgICBtYXAubV9jb21tb25IZWFkZXJzID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUobV9jb21tb25IZWFkZXJzKSk7CisgICAgbWFwLm1fdW5jb21tb25IZWFkZXJz
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV91bmNvbW1vbkhlYWRlcnMpKTsKKyAgICByZXR1
cm4gbWFwOworfQorCiBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3QKIHsKICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBmYTAzN2ZjZjk2
ODE3M2MwY2E5M2Q0NzFjM2RkNDFkYzQ4NzBiMGNiLi4xZmUxOWQzMTE4YjEzYmFhOGI5Y2IwNGIz
ZjdkZTY5OWJkODBmZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaApAQCAtNDAsNyArNDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIEhUVFBI
ZWFkZXJOYW1lIGtleTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgIENvbW1vbkhl
YWRlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGtleSAsIHZhbHVlLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICAgICAgQ29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIENvbW1v
bkhlYWRlciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGtleSAsIFdURk1vdmUodmFsdWUp
Lmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsK
IApAQCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBrZXk7CiAgICAgICAg
IFN0cmluZyB2YWx1ZTsKIAotICAgICAgICBVbmNvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgp
IH07IH0KKyAgICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJl
dHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAg
ICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3Zl
KGtleSkuaXNvbGF0ZWRDb3B5KCkgLCBXVEZNb3ZlKHZhbHVlKS5pc29sYXRlZENvcHkoKSB9OyB9
CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxVbmNvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsKIApAQCAtMTM0LDcgKzEzNiw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwKCk7CiAKICAgICAv
LyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVy
IHRocmVhZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgp
ICYmOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFkZXJz
LmlzRW1wdHkoKSAmJiBtX3VuY29tbW9uSGVhZGVycy5pc0VtcHR5KCk7IH0KICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbW9uSGVhZGVycy5zaXplKCkgKyBtX3VuY29tbW9uSGVh
ZGVycy5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IDZlNDVhYTE3NmQwN2YyMjkxYmJlMjM1
NTA3NzY1YmFiNTg4YWMxZjQuLjM4NGRjNzE0NzJiYjYwMTFkNmNkZTAzMWFhOGU4MmM1YTIyYzFk
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNsaWVudHM6OmNsYWltKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxEZWZl
cnJlZFByCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0
aW9uLT5jbGFpbShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCByZXN1bHQgPSBpc29sYXRl
ZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAg
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLm1fcGVuZGluZ1By
b21pc2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiBwZW5kaW5nUHJvbWlzZSB7IHByb21pc2UucmVsZWFzZU5vbk51
bGwoKSB9OwogICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS5zZXR0bGUoV1RGTW92
ZShyZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNDU2NzFjZjI3YTM0
MWVjNzU5MTJjNWYwMTQyOTNiMTRlZDhmYWI4Zi4uZTYyOGVmMGVhNDcwZmEyNmU2NWFlMzQ5NmVm
ZmZiZDFlMTc2NDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTM3OCw3ICsz
NzgsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKFZl
Y3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgdXBkYXRlZFJlZ2lz
dHJhdGlvbnMuY2xlYXIoKTsKICAgICAgICAgICAgIHJlbW92ZWRSZWdpc3RyYXRpb25zLmNsZWFy
KCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHN1Y2Nlc3MsIHB1c2hDb3VudGVyLCB1cGRh
dGVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUodXBkYXRlZFJlZ2lzdHJhdGlvbnMpLmlzb2xhdGVk
Q29weSgpLCByZW1vdmVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUocmVtb3ZlZFJlZ2lzdHJhdGlv
bnMpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc3VjY2VzcywgcHVzaENvdW50
ZXIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodXBkYXRl
ZFJlZ2lzdHJhdGlvbnMpKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucykpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFzdWNj
ZXNzICYmIChwdXNoQ291bnRlciArIDEpID09IG1fcHVzaENvdW50ZXIpIHsKICAgICAgICAgICAg
ICAgICAvLyBXZSByZXRyeSB3cml0aW5nIG9uY2UgaWYgbm8gb3RoZXIgY2hhbmdlIHdhcyBwdXNo
ZWQuCiAgICAgICAgICAgICAgICAgc2NoZWR1bGVQdXNoQ2hhbmdlcyhXVEZNb3ZlKHVwZGF0ZWRS
ZWdpc3RyYXRpb25zKSwgV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucyksIFNob3VsZFJldHJ5
OjpObywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXggZWE1Y2E2ZGIzNDZhNjIxNzgyMDcyNjMxYTM0
ZjIwMTcyNmM3NzU2OC4uMzM2ZmVhODZlYjhiYjc4Y2EzNmZjNDMyOTg0ZWVhNGMyMmIzYmM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBAIC0zOSwx
NyArMzksOCBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAgIFNldHRpbmdzOjpWYWx1
ZXMgc2V0dGluZ3NWYWx1ZXM7CiAgICAgYm9vbCBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lOwogCi0g
ICAgV29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAg
ICAgICBqc1J1bnRpbWVGbGFncywKLSAgICAgICAgICAgIHNhbXBsZVJhdGUsCi0gICAgICAgICAg
ICBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLAotICAgICAgICAgICAgc2V0dGluZ3NWYWx1ZXMu
aXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lCi0gICAg
ICAgIH07Ci0gICAgfQorICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBz
YW1wbGVSYXRlLCBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzZXR0aW5nc1ZhbHVlcy5pc29s
YXRlZENvcHkoKSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CisgICAgV29ya2xldFBhcmFt
ZXRlcnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHdpbmRvd1VSTCkuaXNv
bGF0ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKGlkZW50aWZp
ZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNldHRpbmdzVmFsdWVzKS5pc29sYXRlZENvcHko
KSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAppbmRleCBjY2QxZjExMjVmZTY4OTY2Njk4YThmNWY2ZDdiMGY0MWYwZTUxMzU1Li5h
NTUyOTVmMzA1NTBkZjI3NDA0YmNlNDI5OWQyZmUzNzliMGU0OWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTQ1NSwx
NSArNDU1LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1p
Z3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKICAgICB9CiAKICAgICBpZiAoIXVu
YXR0cmlidXRlZC5pc0VtcHR5KCkgfHwgIWF0dHJpYnV0ZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHVuYXR0
cmlidXRlZCA9IHVuYXR0cmlidXRlZC5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9IGF0dHJp
YnV0ZWQuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCB1bmF0dHJpYnV0ZWQgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZSh1bmF0dHJpYnV0ZWQpKSwgYXR0cmlidXRlZCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKGF0dHJpYnV0ZWQpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0b3JlLT5uZXR3b3JrU2Vzc2lvbigpOwogICAgICAgICAg
ICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgICAgIGF1dG8mIG1hbmFnZXIgPSBuZXR3b3JrU2Vzc2lvbi0+cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RGTW92ZShhdHRyaWJ1dGVk
KSkKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHBjbSA6IFdURk1vdmUoYXR0cmlidXRlZCkpCiAg
ICAgICAgICAgICAgICAgbWFuYWdlci5taWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9t
TGVnYWN5U3RvcmFnZShXVEZNb3ZlKHBjbSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RG
TW92ZSh1bmF0dHJpYnV0ZWQpKQorICAgICAgICAgICAgZm9yIChhdXRvJiYgcGNtIDogV1RGTW92
ZSh1bmF0dHJpYnV0ZWQpKQogICAgICAgICAgICAgICAgIG1hbmFnZXIubWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV1RGTW92ZShwY20pLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKICAgICAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA2
NjFiMTU2M2VjNjRiNjZlNzhmMWY4ZDU1NGM2ZDlkZjM3MzFhZTZiLi5jNWNkOWYxNGRmYTI2NzY2
ZGUzMTEwMmNkYzQyNDFjZmE2OTFhNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRD
b3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc2LDE0ICs3NywxNiBAQCBzdHJ1Y3QgUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgewogICAgIFZlY3RvcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5OwogICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNl
RG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3M7Ci0gICAgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3Mg
fTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2tBbmRE
ZWxldGVDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHkpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKSB9OyB9
CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkg
JiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvQmxvY2tC
dXRLZWVwQ29va2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MpKSB9OyB9CiB9Owogc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3I7CiAgICAgVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRw
T25seUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcjsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZv
cjsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tp
ZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2ll
c0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURh
dGFGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvci5p
c29sYXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvciksIGNyb3NzVGhyZWFkQ29w
eShkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciksIGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IpIH07IH0KKyAgICBSZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBpc29sYXRlZENvcHko
KSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZUFs
bENvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxs
QnV0SHR0cE9ubHlDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNU
b0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcikpIH07IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yLmlzRW1w
dHkoKSAmJiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSAm
JiBkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IuaXNFbXB0eSgpOyB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmNwcAppbmRleCBhN2FiOTM4MDljY2I3ZjY1ZjQ4YjFhNTE5Y2Q5NjdhZGFiNWM2ZDU4
Li4wYTA0YWVlNDVmYWJiNjNkZWMyZjc5NzZiNzYxZDM2NjE3MDE2MDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW5EYXRhcyA9IG9yaWdpbkRhdGFzLmlzb2xhdGVkQ29w
eSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICBwb3N0
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbkRhdGFzID0g
Y3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5m
by5jcHAKaW5kZXggNTU0ZmQyZDhmMGRkMWI5Yzc5OGUwNjg1NjEyZDFiOGQ4ZjA2YzdlMi4uZGQz
MTJjNzMxMGJlY2VjZjRjN2M0MjNkMTM5MWYyYWVlZTY0NGQ1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
SW5mby5jcHAKQEAgLTI4LDE0ICsyOCwyNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0OjpQQ00gewog
Ci1EZWJ1Z0luZm8gRGVidWdJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAorRGVidWdJbmZvIERl
YnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7IG1lc3NhZ2Vz
Lmlzb2xhdGVkQ29weSgpIH07CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KG1lc3NhZ2Vz
KSB9OwogfQogCi1EZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRl
ZENvcHkoKSBjb25zdAorRGVidWdJbmZvIERlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sK
KyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtZXNzYWdlcykpIH07Cit9CisK
K0RlYnVnSW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSgpIGNv
bnN0ICYKIHsKICAgICByZXR1cm4geyBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UuaXNvbGF0ZWRDb3B5
KCkgfTsKIH0KIAorRGVidWdJbmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0
ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobWVzc2Fn
ZSkuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpQQ00KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWJ1Z0luZm8uaAppbmRleCA1MjU3Nzg0YjRlMTlmMzgwYWEyMDZiYzJhNzY4OGRjOWY1
ZWUzZGNmLi4wYjk5ODRjNDY0ZGNlMTlhYTM0ZDVkZThkZjYzYWJlZTNhMjZmZGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERlYnVnSW5mby5oCkBAIC0zNiwxMiArMzYsMTQgQEAgc3RydWN0IERlYnVnSW5mbyB7CiAg
ICAgICAgIEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbDsKICAgICAgICAgU3RyaW5nIG1l
c3NhZ2U7CiAKLSAgICAgICAgTWVzc2FnZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAg
TWVzc2FnZSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBNZXNzYWdlIGlzb2xhdGVk
Q29weSgpICYmOwogICAgIH07CiAKICAgICBWZWN0b3I8TWVzc2FnZT4gbWVzc2FnZXM7CiAKLSAg
ICBEZWJ1Z0luZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgRGVidWdJbmZvIGlzb2xhdGVk
Q29weSgpIGNvbnN0ICY7CisgICAgRGVidWdJbmZvIGlzb2xhdGVkQ29weSgpICYmOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAppbmRleCBhYjUwOTQwODE3MjQ0
ZDcyOTFiMTk4MTg0MzZlNWQ1MTgyZWE0OTY0Li5iYjQ0Y2RmMThhYTgzODY5M2M0MmM4MzBkMWMw
ODJhZDVlYmFkNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lk
IFN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8VwogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IGNvbnZlcnRlZEF0dHJpYnV0aW9uczsKICAgICAgICAgaWYgKG1fZGF0YWJh
c2UpCiAgICAgICAgICAgICBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBtX2RhdGFiYXNlLT5hbGxB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSAgICAgICAgcG9zdFRhc2tSZXBs
eShbY29udmVydGVkQXR0cmlidXRpb25zID0gY29udmVydGVkQXR0cmlidXRpb25zLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBwb3N0VGFza1JlcGx5KFtjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMpKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29udmVydGVkQXR0cmlidXRpb25z
KSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggYzZkNGJjYjcwMjI5
OTkwMmFhODE4NDdhYjk4NmJlOGMzMTlkN2Y5Zi4uNjVjYTRjMGMxNGY2MWE4YzMyYTk0YzQ0NGJm
NDEzNjczYTVhZTBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTUxLDcgKzU1Miw3IEBAIHZv
aWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgaWYgKCFwYXJzZWRSdWxlcy5oYXNfdmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIHBhcnNlZFJ1bGVzLmVy
cm9yKCkpOwogICAgIAotICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBqc29uID0ganNvbi5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZXMgPSBwYXJzZWRSdWxlcy52
YWx1ZSgpLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CisgICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGpz
b24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKHBhcnNlZFJ1bGVzKS52YWx1ZSgpKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3Rv
cmVQYXRoLCBpZGVudGlmaWVyLCBmYWxzZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBjb21w
aWxlZFRvRmlsZShXVEZNb3ZlKGpzb24pLCBXVEZNb3ZlKHBhcnNlZFJ1bGVzKSwgcGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RhbENvbnRhaW5lckNv
bnRyb2xDbGFzc2lmaWVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxD
b250YWluZXJDb250cm9sQ2xhc3NpZmllci5tbQppbmRleCAyZjAzNzQ4YjdjYjE4ZmFhODkyYTlj
MmVhY2QzYjcxNjU5YTNmY2ExLi45NDEyMWU3Y2YxZGVmZDBhNTc1MDY4MDY5MjhlNjRkYzEyM2Fi
NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RhbENvbnRh
aW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL01vZGFsQ29udGFpbmVyQ29udHJvbENsYXNzaWZpZXIubW0KQEAgLTIwNyw3ICsyMDcsNyBA
QCBzdGF0aWMgVmVjdG9yPE1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+IGNvbXB1dGVQcmVkaWN0
aW9ucyhNTE1vZGVsICptb2RlbCwgVmVjdAogdm9pZCBNb2RhbENvbnRhaW5lckNvbnRyb2xDbGFz
c2lmaWVyOjpjbGFzc2lmeShWZWN0b3I8U3RyaW5nPiYmIHRleHRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBlPiYmKT4mJiBjb21wbGV0aW9u
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHRleHRzID0gdGV4dHMuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB0ZXh0cyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRleHRzKSksIGNvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pXSgpIG11dGFibGUgewogICAgICAgICBsb2FkTW9kZWxJZk5lZWRl
ZCgpOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pLCBwcmVkaWN0aW9ucyA9IGNvbXB1dGVQcmVkaWN0aW9ucyhtX21vZGVs
LmdldCgpLCBXVEZNb3ZlKHRleHRzKSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uKFdURk1vdmUocHJlZGljdGlvbnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDQzMzkzNDYwMTUzNWEwZDQ2
ZTNlODk4N2I4MzY4NDIzODcwNjA1YzcuLjUzYTZiYTQzOTkwM2NkZDliZmE3MTVjNzAwYTRkZmIz
MjdmYWU3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldE1lZGlhQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbd2Vha1Byb2Nlc3MgPSBXZWFrUHRyIHsg
cHJvY2VzcyB9XSB7CiAgICAgICAgIGF1dG8gY2FwdGlvbkRpc3BsYXlNb2RlID0gV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnBsYXRmb3JtQ2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgICAgIGF1dG8gcHJlZmVycmVkTGFuZ3VhZ2VzID0gV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OnBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAg
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrUHJvY2VzcywgY2FwdGlvbkRpc3BsYXlNb2RlLCBw
cmVmZXJyZWRMYW5ndWFnZXMgPSBXVEZNb3ZlKHByZWZlcnJlZExhbmd1YWdlcykuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtQcm9jZXNzLCBjYXB0aW9u
RGlzcGxheU1vZGUsIHByZWZlcnJlZExhbmd1YWdlcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KHByZWZlcnJlZExhbmd1YWdlcykpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1Byb2Nlc3MpCiAg
ICAgICAgICAgICAgICAgd2Vha1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNl
dE1lZGlhQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKGNhcHRpb25EaXNwbGF5TW9kZSwgcHJlZmVy
cmVkTGFuZ3VhZ2VzKSwgMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggMmZkZGI4NDk1MmQwODg5YTg4MjU0ZTQ3N2JmZjIzMjBiNjBm
MDFkYy4uN2M3YmYxNzI4YzE0YmQzZDhiOGEwNjhlY2IwODFkNDA4ODU3MDJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MTk4LDEzICs3MTk4LDEzIEBA
IGJvb2wgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRy
YW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTCiAgICAgYXV0byB0cmFuc2NvZGluZ1VUSSA9IFdlYkNv
cmU6OlVUSUZyb21NSU1FVHlwZSh0cmFuc2NvZGluZ01JTUVUeXBlKTsKICAgICBhdXRvIHRyYW5z
Y29kaW5nRXh0ZW5zaW9uID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUodHJhbnNjb2RpbmdNSU1FVHlwZSk7CiAKLSAgICBzaGFyZWRJbWFn
ZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGZpbGVVUkxzID0gZmlsZVVSTHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5n
VVJMcyA9IHRyYW5zY29kaW5nVVJMcy5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdVVEkgPSB0
cmFuc2NvZGluZ1VUSS5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNpb24gPSB0cmFu
c2NvZGluZ0V4dGVuc2lvbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBzaGFyZWRJ
bWFnZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGZpbGVVUkxzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVVUkxzKSwgdHJhbnNj
b2RpbmdVUkxzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodHJhbnNjb2RpbmdVUkxzKSksIHRy
YW5zY29kaW5nVVRJID0gV1RGTW92ZSh0cmFuc2NvZGluZ1VUSSkuaXNvbGF0ZWRDb3B5KCksIHRy
YW5zY29kaW5nRXh0ZW5zaW9uID0gV1RGTW92ZSh0cmFuc2NvZGluZ0V4dGVuc2lvbikuaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgICAgIGF1dG8gdHJhbnNjb2RlZFVSTHMgPSB0cmFuc2NvZGVJbWFnZXModHJhbnNj
b2RpbmdVUkxzLCB0cmFuc2NvZGluZ1VUSSwgdHJhbnNjb2RpbmdFeHRlbnNpb24pOwogICAgICAg
ICBBU1NFUlQodHJhbnNjb2RpbmdVUkxzLnNpemUoKSA9PSB0cmFuc2NvZGVkVVJMcy5zaXplKCkp
OwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVVUkxzID0gZmlsZVVSTHMuaXNvbGF0ZWRD
b3B5KCksIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlZFVSTHMuaXNvbGF0ZWRDb3B5KCldKCkg
eworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlVVJMcyA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGZpbGVVUkxzKSksIHRyYW5zY29kZWRVUkxzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dHJhbnNjb2RlZFVSTHMpKV0oKSB7CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKICAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNpb25GaWxlczsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZVVSTHMuc2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGU5NzhiOWQ5
MDliYWRlYzY0NDlhNjUzMWU1Yzc1ODNhZTcxOGM3YWMuLjQ4MjE5ODczOWNmZGE1ZmNlNjYyMTA3
YzRlMjdlMzUxZDM4NDcyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTY5NSw5ICs2OTUsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnByZXdhcm1HbG9iYWxseSgp
CiAgICAgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpOwogfQogCi12
b2lkIFdlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oY29uc3QgV2ViQ29y
ZTo6UHJld2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mb3JtYXRpb24pCit2b2lkIFdlYlByb2Nl
c3M6OnByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oV2ViQ29yZTo6UHJld2FybUluZm9ybWF0
aW9uJiYgcHJld2FybUluZm9ybWF0aW9uKQogewotICAgIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5n
OjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKHByZXdhcm1JbmZvcm1hdGlvbik7CisgICAgV2ViQ29y
ZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24oV1RGTW92ZShwcmV3YXJt
SW5mb3JtYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFz
RW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IDk2ZTZjZWUyMjE4ZjZhOWIwMDUzZGQ5ZmZhMGQ1ZDgzY2Qz
YjY0YzUuLjY2ODgzMTBkOTYxNTk3YWU3NjY5ODhkYTZhM2E4ZWI3ODU1OWU0YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDExLDcgKzQxMSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwbGF0Zm9ybVNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nl
c3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCBwcmV3YXJtR2xvYmFsbHkoKTsK
LSAgICB2b2lkIHByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UHJl
d2FybUluZm9ybWF0aW9uJik7CisgICAgdm9pZCBwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9u
KFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYmKTsKIAogI2lmIFVTRShPU19TVEFURSkKICAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsU3RhdGVGb3JEaWFnbm9zdGljUmVw
b3J0KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9J
blByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDBjYWRiNTA0MmJhMTYxMDc3Zjk0NDlhOTczZGNm
OTgzMmQzNzAyYWUuLjc3NDNkNTA4ODUyNGJjZTVkN2QzZjM0OTJmYzc3MTdhODdhYTEwOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXIKIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25z
dCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mIGRhdGFiYXNlcykK
IHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMgPSBkYXRhYmFzZXMuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllciwgZGF0YWJhc2VzID0gY3Jv
c3NUaHJlYWRDb3B5KGRhdGFiYXNlcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUoZGF0YWJhc2VzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGJjYmNmNDUxN2JmYWJkNDExM2Qz
ZDIyNWQ1MTY3YzMxYjUzOTA5NC4uNGVjYmY5OWEzZjcwZGRjMTM4ODFhZGIxMzIxYThiNDg4NmNj
ZGI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFk
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTAy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwYW5k
IHRlc3QgY292ZXJhZ2UgZm9yIGNyb3NzVGhyZWFkQ29weSgpIGFuZCBtYWtlIHN1cmUgdGhlIG9w
dGltaXphdGlvbnMgYXJlIHdvcmtpbmcKKyAgICAgICAgd2hlbiBjYWxsZWQgb24gYSByLXZhbHVl
IHJlZmVyZW5jZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhy
ZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAyMi0wMy0wNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbnVsbCBjaGVjayBmb3IgcGF0aCBpbiBtYWtlQWxsRGlyZWN0b3Jp
ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
Q29waWVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29w
aWVyLmNwcAppbmRleCBjZDRkYzIzYzdiNmFlZmI0Yzk5ZmY1MDg0MDMzMjIxMTMzM2Q4ZGViLi40
ZDY0NzUwNjhjM2RhYmRkMjRjMzFmYzEwZGQ4Yjg0MGIxMDRiZDNkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0yNyw2
ICsyNyw5IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAKICNpbmNsdWRl
ICJUZXN0LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC04NSw0ICs4OCwxMTggQEAgVEVTVChX
VEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIENvcHlSVk9wdGlvbmFsU3RyaW5nSGF2aW5nVHdvUmVmKQog
ICAgIEVYUEVDVF9UUlVFKGNvcHktPmltcGwoKS0+aGFzT25lUmVmKCkpOwogfQogCitURVNUKFdU
Rl9Dcm9zc1RocmVhZENvcGllciwgUGFpcikKK3sKKyAgICBzdGQ6OnBhaXIgcGFpcjEgeyAiZm9v
Il9zdHIsICJiYXIiX3N0ciB9OworICAgIGF1dG8qIGZpcnN0U3RyaW5nSW1wbCA9IHBhaXIxLmZp
cnN0LmltcGwoKTsKKyAgICBhdXRvKiBzZWNvbmRTdHJpbmdJbXBsID0gcGFpcjEuc2Vjb25kLmlt
cGwoKTsKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkocGFpcjEpOworICAgIEVYUEVD
VF9FUShjb3B5LCBwYWlyMSk7CisgICAgRVhQRUNUX05FKGNvcHkuZmlyc3QuaW1wbCgpLCBmaXJz
dFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9ORShjb3B5LnNlY29uZC5pbXBsKCksIHNlY29uZFN0
cmluZ0ltcGwpOworCisgICAgc3RkOjpwYWlyIHBhaXIyIHsgImZvbyJfc3RyLCAiYmFyIl9zdHIg
fTsKKyAgICBmaXJzdFN0cmluZ0ltcGwgPSBwYWlyMi5maXJzdC5pbXBsKCk7CisgICAgc2Vjb25k
U3RyaW5nSW1wbCA9IHBhaXIyLnNlY29uZC5pbXBsKCk7CisgICAgY29weSA9IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKHBhaXIyKSk7CisgICAgRVhQRUNUX0VRKGNvcHksIHBhaXIxKTsKKyAgICBF
WFBFQ1RfRVEoY29weS5maXJzdC5pbXBsKCksIGZpcnN0U3RyaW5nSW1wbCk7CisgICAgRVhQRUNU
X0VRKGNvcHkuc2Vjb25kLmltcGwoKSwgc2Vjb25kU3RyaW5nSW1wbCk7CisgICAgRVhQRUNUX1RS
VUUocGFpcjIuZmlyc3QuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKHBhaXIyLnNlY29uZC5p
c051bGwoKSk7Cit9CisKK1RFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBWYXJpYW50KQorewor
ICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFVSTD4gdmFyaWFudDsKKyAgICB2YXJpYW50ID0gImZv
byJfc3RyOworICAgIGF1dG8qIGltcGwgPSBzdGQ6OmdldDxTdHJpbmc+KHZhcmlhbnQpLmltcGwo
KTsKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkodmFyaWFudCk7CisgICAgQVNTRVJU
X0VRKGNvcHksIHZhcmlhbnQpOworICAgIEVYUEVDVF9ORShzdGQ6OmdldDxTdHJpbmc+KGNvcHkp
LmltcGwoKSwgaW1wbCk7CisKKyAgICB2YXJpYW50ID0gVVJMIHsgImJhciJfc3RyIH07CisgICAg
aW1wbCA9IHN0ZDo6Z2V0PFVSTD4odmFyaWFudCkuc3RyaW5nKCkuaW1wbCgpOworICAgIGNvcHkg
PSBjcm9zc1RocmVhZENvcHkodmFyaWFudCk7CisgICAgQVNTRVJUX0VRKGNvcHksIHZhcmlhbnQp
OworICAgIEVYUEVDVF9ORShzdGQ6OmdldDxVUkw+KGNvcHkpLnN0cmluZygpLmltcGwoKSwgaW1w
bCk7CisKKyAgICB2YXJpYW50ID0gImZvbyJfc3RyOworICAgIGltcGwgPSBzdGQ6OmdldDxTdHJp
bmc+KHZhcmlhbnQpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dmFyaWFudCkpOworICAgIEFTU0VSVF9FUShzdGQ6OmdldDxTdHJpbmc+KGNvcHkpLCAiZm9vIl9z
dHIpOworICAgIEVYUEVDVF9FUShzdGQ6OmdldDxTdHJpbmc+KGNvcHkpLmltcGwoKSwgaW1wbCk7
CisKKyAgICB2YXJpYW50ID0gVVJMIHsgImJhciJfc3RyIH07CisgICAgaW1wbCA9IHN0ZDo6Z2V0
PFVSTD4odmFyaWFudCkuc3RyaW5nKCkuaW1wbCgpOworICAgIGNvcHkgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZSh2YXJpYW50KSk7CisgICAgQVNTRVJUX0VRKHN0ZDo6Z2V0PFVSTD4oY29weSks
IFVSTCB7ICJiYXIiX3N0ciB9KTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpnZXQ8VVJMPihjb3B5KS5z
dHJpbmcoKS5pbXBsKCksIGltcGwpOworfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwg
SGFzaE1hcCkKK3sKKyAgICBIYXNoTWFwPENTdHJpbmcsIFN0cmluZ0ltcGwqPiBpbXBsczsKKwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcDsKKyAgICBtYXAuYWRkKCJmb28iX3N0ciwg
ImZvb1ZhbHVlIl9zdHIpOworICAgIG1hcC5hZGQoImJhciJfc3RyLCAiYmFyVmFsdWUiX3N0cik7
CisgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBtYXApIHsKKyAgICAgICAgaW1wbHMuYWRk
KGtleS51dGY4KCksIGtleS5pbXBsKCkpOworICAgICAgICBpbXBscy5hZGQodmFsdWUudXRmOCgp
LCB2YWx1ZS5pbXBsKCkpOworICAgIH0KKworICAgIGF1dG8gY29weSA9IGNyb3NzVGhyZWFkQ29w
eShtYXApOworICAgIEVYUEVDVF9FUShjb3B5LCBtYXApOworICAgIGZvciAoYXV0byYgW2tleSwg
dmFsdWVdIDogY29weSkgeworICAgICAgICBFWFBFQ1RfTkUoa2V5LmltcGwoKSwgaW1wbHMuZ2V0
KGtleS51dGY4KCkpKTsKKyAgICAgICAgRVhQRUNUX05FKHZhbHVlLmltcGwoKSwgaW1wbHMuZ2V0
KHZhbHVlLnV0ZjgoKSkpOworICAgIH0KKworICAgIGF1dG8gY29weTIgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShtYXApKTsKKyAgICBFWFBFQ1RfRVEoY29weTIsIGNvcHkpOworICAgIEVYUEVD
VF9UUlVFKG1hcC5pc0VtcHR5KCkpOworICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogY29w
eTIpIHsKKyAgICAgICAgRVhQRUNUX0VRKGtleS5pbXBsKCksIGltcGxzLmdldChrZXkudXRmOCgp
KSk7CisgICAgICAgIEVYUEVDVF9FUSh2YWx1ZS5pbXBsKCksIGltcGxzLmdldCh2YWx1ZS51dGY4
KCkpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBIYXNoU2V0KQor
eworICAgIEhhc2hNYXA8Q1N0cmluZywgU3RyaW5nSW1wbCo+IGltcGxzOworCisgICAgSGFzaFNl
dDxTdHJpbmc+IHNldDsKKyAgICBzZXQuYWRkKCJmb28iX3N0cik7CisgICAgc2V0LmFkZCgiYmFy
Il9zdHIpOworICAgIGZvciAoYXV0byYgaXRlbSA6IHNldCkKKyAgICAgICAgaW1wbHMuYWRkKGl0
ZW0udXRmOCgpLCBpdGVtLmltcGwoKSk7CisKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENv
cHkoc2V0KTsKKyAgICBFWFBFQ1RfRVEoY29weSwgc2V0KTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0g
OiBjb3B5KQorICAgICAgICBFWFBFQ1RfTkUoaXRlbS5pbXBsKCksIGltcGxzLmdldChpdGVtLnV0
ZjgoKSkpOworCisgICAgYXV0byBjb3B5MiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNldCkp
OworICAgIEVYUEVDVF9FUShjb3B5MiwgY29weSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmlzRW1w
dHkoKSk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogY29weTIpCisgICAgICAgIEVYUEVDVF9FUShp
dGVtLmltcGwoKSwgaW1wbHMuZ2V0KGl0ZW0udXRmOCgpKSk7Cit9CisKK1RFU1QoV1RGX0Nyb3Nz
VGhyZWFkQ29waWVyLCBPcHRpb25hbCkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3B0
aW9uYWw7CisgICAgb3B0aW9uYWwgPSAiZm9vIl9zdHI7CisgICAgYXV0byogaW1wbCA9IG9wdGlv
bmFsLT5pbXBsKCk7CisKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkob3B0aW9uYWwp
OworICAgIEVYUEVDVF9FUShjb3B5LCBvcHRpb25hbCk7CisgICAgRVhQRUNUX05FKGNvcHktPmlt
cGwoKSwgaW1wbCk7CisKKyAgICBhdXRvIGNvcHkyID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
b3B0aW9uYWwpKTsKKyAgICBFWFBFQ1RfRVEoY29weTIsIGNvcHkpOworICAgIEVYUEVDVF9FUShj
b3B5Mi0+aW1wbCgpLCBpbXBsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggNWQ0NmMzY2JlOTNh
Y2NlMzZkYTlmNmUyYzBhNTQ3M2VmZTliYjA1ZC4uMGIxNjY3MGE0MjIxYzBkN2UyYmQ0ZGVhY2My
ZWQ1ZDc3ZTM2ZDRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJNb3Zl
T25seS5oIgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KQEAgLTEyOCw3ICsxMjksNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbnN0cnVj
dFdpdGhGcm9tU3RyaW5nKQogICAgIEVYUEVDVF9UUlVFKHMzLmlzTnVsbCgpKTsKIH0KIAotVEVT
VChXVEZfVmVjdG9yLCBJc29sYXRlQ29weSkKK1RFU1QoV1RGX1ZlY3RvciwgSXNvbGF0ZWRDb3B5
KQogewogICAgIFN0cmluZyBzMSA9ICJzMSI7CiAgICAgU3RyaW5nIHMyID0gInMyIjsKQEAgLTE0
MCw3ICsxNDEsNyBAQCBURVNUKFdURl9WZWN0b3IsIElzb2xhdGVDb3B5KQogICAgIGF1dG8qIGRh
dGExID0gdmVjdG9yMVswXS5pbXBsKCk7CiAgICAgYXV0byogZGF0YTIgPSB2ZWN0b3IxWzFdLmlt
cGwoKTsKIAotICAgIGF1dG8gdmVjdG9yMiA9IHZlY3RvcjEuaXNvbGF0ZWRDb3B5KCk7CisgICAg
YXV0byB2ZWN0b3IyID0gY3Jvc3NUaHJlYWRDb3B5KHZlY3RvcjEpOwogCiAgICAgRVhQRUNUX1RS
VUUoInMxIiA9PSB2ZWN0b3IyWzBdKTsKICAgICBFWFBFQ1RfVFJVRSgiczIiID09IHZlY3RvcjJb
MV0pOwpAQCAtMTQ4LDcgKzE0OSw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgSXNvbGF0ZUNvcHkpCiAg
ICAgRVhQRUNUX0ZBTFNFKGRhdGExID09IHZlY3RvcjJbMF0uaW1wbCgpKTsKICAgICBFWFBFQ1Rf
RkFMU0UoZGF0YTIgPT0gdmVjdG9yMlsxXS5pbXBsKCkpOwogCi0gICAgYXV0byB2ZWN0b3IzID0g
V1RGTW92ZSh2ZWN0b3IxKS5pc29sYXRlZENvcHkoKTsKKyAgICBhdXRvIHZlY3RvcjMgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZSh2ZWN0b3IxKSk7CiAgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3Ix
LnNpemUoKSk7CiAKICAgICBFWFBFQ1RfVFJVRSgiczEiID09IHZlY3RvcjNbMF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453920</attachid>
            <date>2022-03-05 13:29:25 -0800</date>
            <delta_ts>2022-03-05 16:14:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220305132924.patch</filename>
            <type>text/plain</type>
            <size>163148</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyZGM0ODMzNTA2MzNiNWEyYzJhNjFk
ZWVkZDY3ODE5NWIxMjlhYzEuLjYzYzlmMjI3NDAxZTVlZjIwM2Q0MjMxMDczZjEwNjQ2NzYyNTZm
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9z
cyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEcm9wIGlzb2xhdGVkQ29weSgpIG9uIFZlY3RvciBzaW5jZSBDcm9zc1RocmVhZENvcGllciBh
bHJlYWR5IGhhcyBsb2dpYyB0bworICAgICAgICBpc29sYXRlLWNvcHkgYSBWZWN0b3IuIFRoZSBs
b2dpYyBpbiBDcm9zc1RocmVhZENvcGllciBoYXMgdGhlIGJlbmVmaXQgb2YKKyAgICAgICAgd29y
a2luZyBvbiB0eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgaXNvbGF0ZWRDb3B5KCkgKGUuZy4g
YSBWZWN0b3Igb2YKKyAgICAgICAgc3RkOjpvcHRpb25hbCBvciBhIFZlY3RvciBvZiBzdGQ6OnZh
cmlhbnQpLgorCisgICAgICAgIEltcHJvdmUgdGhlIENyb3NzVGhyZWFkQ29waWVyIHRvIG9wdGlt
aXplIHRoZSBjYXNlIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpCisgICAgICAgIGlzIGNhbGxlZCBv
biBhIHItdmFsdWUgcmVmZXJlbmNlIGluIG1vcmUgY2FzZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBs
b2dpYworICAgICAgICBmb3IgVmVjdG9yLCBIYXNoU2V0LCBIYXNoTWFwLCBzdGQ6OnBhaXIsIHN0
ZDo6dmFyaWFudCB3YXMgaW1wcm92ZWQuIEkKKyAgICAgICAgYWxzbyBhZGRlZCBBUEkgdGVzdCBj
b3ZlcmFnZSBmb3IgdGhvc2UuCisKKyAgICAgICAgVGhlIEFQSSB0ZXN0cyBhbHNvIGZvdW5kIGEg
YnVnIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpIHdhcyBpbmNvcnJlY3RseQorICAgICAgICBtb3Zp
bmcgdGhlIHNvdXJjZSB3aGVuIGNhbGxlZCBvbiBhIHN0ZDo6dmFyaWFudCB0aGF0IHdhcyBub3Qg
YSByLXZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4gVGhpcyBidWcgaXMgZml4ZWQgaW4gdGhpcyBw
YXRjaCB0b28uCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4g
bWFrZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhmZGY3ZjdlZWEyYjI4ODNiMmY0ZDBk
NWVkNjAwODI5MTM0YjFjZi4uZGYxNzgwNmVjZjViYmUzZjZmZjAyNGI0Nzc1MWIxNzNjNWQwZmUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRh
dGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBtb3JlIGlzb2xhdGVkQ29weSgpIG92ZXJsb2FkcyB0aGF0IHdvcmsgb24g
ci12YWx1ZSByZWZlcmVuY2VzIHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhbiBi
ZSBvcHRpbWl6ZWQuIEFsc28gY2FsbCBpc29sYXRlZENvcHkoKSAvIGNyb3NzVGhyZWFkQ29weSgp
IG9uIGEgci12YWx1ZSByZWZlcmVuY2UKKyAgICAgICAgd2hlbmV2ZXIgcG9zc2libGUgdG8gbGV2
ZXJhZ2UgdGhlc2Ugb3B0aW1pemF0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZUNhY2hlSW5mbyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvczo6
aXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm9zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXRy
aWV2ZVJlY29yZHNPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmV0cmlldmVSZWNvcmRzT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVP
cGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRS
ZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3Jk
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJFcnJvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkVycm9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJ
bmZvLmg6CisgICAgICAgICogTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hv
dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdDo6SW5mbzo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNo
b3Q6OkluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdl
clNuYXBzaG90Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9j
a01hbmFnZXJTbmFwc2hvdDo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFt
RGVzY3JpcHRvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
UGFyYW1EZXNjcmlwdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29y
a2xldFRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZv
cm1UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZENvbm5lY3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRl
cnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5
SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJl
Y3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVS
TFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xhdGVk
Q29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29t
cGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2Fk
VHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
VHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1bGU6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvblJ1bGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6VHJpZ2dlcjo6flRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YkNvcmU6Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkRh
dGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZENvcHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRyYW5zY29kaW5nKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIv
UG9saWN5Q29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29s
YXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2Vu
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
VGltaW5nOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VU
aW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmg6
CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5o
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAg
ICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZWxlY3Rpb25PcHRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoaXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpV
bmNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmNsYWltKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0UGFy
YW1ldGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0
ZWRDb3B5KToKKwogMjAyMi0wMy0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGJyb2tlbiBTdXNwZW5kRXhjZXB0aW9uU2NvcGUgYW5kIHJlbW92ZSByZWR1
bmRhbnQgVk06OkRlZmVyRXhjZXB0aW9uU2NvcGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0NTgwZDZiNGVkMWEx
OTllZjRiYTRjMjU5NjE0NzUyMGMzZDgwNDEuLmEwMWE5YzE2NDhkMGEyNDdjNDVkNzUyMDMyN2Fi
MTVkMjliZjY5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjItMDMtMDUgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2lu
ZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbW9yZSBpc29sYXRlZENvcHkoKSBvdmVybG9hZHMgdGhhdCB3
b3JrIG9uIHItdmFsdWUgcmVmZXJlbmNlcyB3aGVuIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBjYW4gYmUgb3B0aW1pemVkLiBBbHNvIGNhbGwgaXNvbGF0ZWRDb3B5KCkgLyBjcm9zc1RocmVh
ZENvcHkoKSBvbiBhIHItdmFsdWUgcmVmZXJlbmNlCisgICAgICAgIHdoZW5ldmVyIHBvc3NpYmxl
IHRvIGxldmVyYWdlIHRoZXNlIG9wdGltaXphdGlvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1p
Z3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcjo6aXNvbGF0ZWRD
b3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3I6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9J
bmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1Z0luZm86Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmNv
bXBpbGVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RhbENv
bnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RhbENvbnRh
aW5lckNvbnRyb2xDbGFzc2lmaWVyOjpjbGFzc2lmeSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRNZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RvcCBzZXR0aW5nIE5TVVJMSXNFeGNsdWRlZEZyb21CYWNrdXBLZXkgYXR0
cmlidXRlIGZvciBsb2NhbFNvcmFnZURpcmVjdG9yeSBpbiBVSSBwcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCmluZGV4IGY2Yjg4OWUyZWZlYmFhZWZiYmZlNWI1Yzk4ODcyYjlmZjhjNzY2MWEuLjEz
YWM4ZGU5ZmRkODc0NDBjNDE2MzgwNGY0YWE5MjA1MTZjZDk4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0
aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbW9yZSBpc29sYXRlZENvcHkoKSBvdmVybG9hZHMgdGhhdCB3b3JrIG9uIHItdmFsdWUgcmVm
ZXJlbmNlcyB3aGVuIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBjYW4gYmUgb3B0aW1pemVk
LiBBbHNvIGNhbGwgaXNvbGF0ZWRDb3B5KCkgLyBjcm9zc1RocmVhZENvcHkoKSBvbiBhIHItdmFs
dWUgcmVmZXJlbmNlCisgICAgICAgIHdoZW5ldmVyIHBvc3NpYmxlIHRvIGxldmVyYWdlIHRoZXNl
IG9wdGltaXphdGlvbnMuCisKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyk6CisKIDIwMjItMDMtMDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29weSBXZWJLaXQgZnJhbWV3b3JrcyBhbmQgWFBDIHByb2Nlc3Nl
cyB0byBTZWNvbmRhcnkgUGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggMDFk
MmE3NzYzM2IwYjAyY2Y0ZGY1MjUwZmZkMjM0Y2JmMDM5N2I4Ny4uNDFlMTFiMzY1NzdkYTE4YmE3
MDlmZjE0ZGI0MGYzZDJmNjNiOTE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC0xNDIsNiArMTQyLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgICAgICAgICBk
ZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoQ3Jvc3NUaHJlYWRDb3BpZXI8VD46OmNvcHkob2Jq
ZWN0KSk7CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5
cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9y
ID0gc291cmNlLmJlZ2luKCksIGl0ZXJhdG9yRW5kID0gc291cmNlLmVuZCgpOyBpdGVyYXRvciA8
IGl0ZXJhdG9yRW5kOyArK2l0ZXJhdG9yKQorICAgICAgICAgICAgKml0ZXJhdG9yID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8VD46OmNvcHkoV1RGTW92ZSgqaXRlcmF0b3IpKTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUoc291cmNlKTsKKyAgICB9CiB9OwogICAgIAogLy8gRGVmYXVsdCBzcGVjaWFsaXph
dGlvbiBmb3IgSGFzaFNldHMgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzCkBAIC0xNTQs
MjYgKzE2MCw0MyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgSGFzaFNldDxUPiA+IHsKICAgICAgICAgICAgIGRlc3RpbmF0
aW9uLmFkZChDcm9zc1RocmVhZENvcGllcjxUPjo6Y29weShvYmplY3QpKTsKICAgICAgICAgcmV0
dXJuIGRlc3RpbmF0aW9uOwogICAgIH0KKyAgICBzdGF0aWMgVHlwZSBjb3B5KFR5cGUmJiBzb3Vy
Y2UpCisgICAgeworICAgICAgICBUeXBlIGRlc3RpbmF0aW9uOworICAgICAgICBkZXN0aW5hdGlv
bi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5zaXplKCkpOworICAgICAgICB3aGlsZSAo
IXNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJl
YWRDb3BpZXI8VD46OmNvcHkoc291cmNlLnRha2VBbnkoKSkpOworICAgICAgICByZXR1cm4gZGVz
dGluYXRpb247CisgICAgfQogfTsKIAogLy8gRGVmYXVsdCBzcGVjaWFsaXphdGlvbiBmb3IgSGFz
aE1hcHMgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
LCB0eXBlbmFtZSBWPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
SGFzaE1hcDxLLCBWPiA+IHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8SywgVj4gVHlwZTsKK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgdHlwZW5h
bWUgVGFibGVUcmFpdHNBcmc+CitzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBm
YWxzZSwgSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmcsIFRhYmxlVHJhaXRzQXJnPj4geworICAgIHR5cGVkZWYgSGFzaE1hcDxL
ZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcs
IFRhYmxlVHJhaXRzQXJnPiBUeXBlOwogICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgVHlwZSYg
c291cmNlKQogICAgIHsKICAgICAgICAgVHlwZSBkZXN0aW5hdGlvbjsKLSAgICAgICAgZm9yIChh
dXRvJiBrZXlWYWx1ZSA6IHNvdXJjZSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChDcm9z
c1RocmVhZENvcGllcjxLPjo6Y29weShrZXlWYWx1ZS5rZXkpLCBDcm9zc1RocmVhZENvcGllcjxW
Pjo6Y29weShrZXlWYWx1ZS52YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVl
XSA6IHNvdXJjZSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChDcm9zc1RocmVhZENvcGll
cjxLZXlBcmc+Ojpjb3B5KGtleSksIENyb3NzVGhyZWFkQ29waWVyPE1hcHBlZEFyZz46OmNvcHko
dmFsdWUpKTsKICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogICAgIH0KKyAgICBzdGF0aWMg
VHlwZSBjb3B5KFR5cGUmJiBzb3VyY2UpCisgICAgeworICAgICAgICBmb3IgKGF1dG8gaXRlcmF0
b3IgPSBzb3VyY2UuYmVnaW4oKSwgZW5kID0gc291cmNlLmVuZCgpOyBpdGVyYXRvciAhPSBlbmQ7
ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT5rZXkgPSBDcm9zc1RocmVhZENv
cGllcjxLZXlBcmc+Ojpjb3B5KFdURk1vdmUoaXRlcmF0b3ItPmtleSkpOworICAgICAgICAgICAg
aXRlcmF0b3ItPnZhbHVlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8TWFwcGVkQXJnPjo6Y29weShXVEZN
b3ZlKGl0ZXJhdG9yLT52YWx1ZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KHNvdXJjZSk7CisgICAgfQogfTsKIAogLy8gRGVmYXVsdCBzcGVjaWFsaXphdGlvbiBmb3IgcGFp
cnMgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0
eXBlbmFtZSBTPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgc3Rk
OjpwYWlyPEYsIFM+ID4gewogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEYsIFM+IFR5cGU7Ci0gICAg
c3RhdGljIFR5cGUgY29weShjb25zdCBUeXBlJiBzb3VyY2UpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gc3RhdGljIFR5cGUgY29weShVJiYgc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKENyb3NzVGhyZWFkQ29waWVyPEY+Ojpjb3B5KHNvdXJjZS5maXJzdCks
IENyb3NzVGhyZWFkQ29waWVyPFM+Ojpjb3B5KHNvdXJjZS5zZWNvbmQpKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKENyb3NzVGhyZWFkQ29waWVyPEY+Ojpjb3B5KHN0ZDo6Z2V0PDA+
KHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKSksIENyb3NzVGhyZWFkQ29waWVyPFM+Ojpjb3B5KHN0
ZDo6Z2V0PDE+KHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKSkpOwogICAgIH0KIH07CiAKQEAgLTE4
OSwxMSArMjEyLDE4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFQ+CiAKIC8vIERlZmF1bHQgc3Bl
Y2lhbGl6YXRpb24gZm9yIHN0ZDo6dmFyaWFudCBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNz
ZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4+IHsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBzdGF0aWMgc3RkOjp2YXJpYW50PFR5cGVzLi4uPiBjb3B5KFUmJiBzb3Vy
Y2UpCisgICAgdXNpbmcgVHlwZSA9IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj47CisgICAgc3RhdGlj
IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShjb25zdCBUeXBlJiBzb3VyY2UpCiAgICAgewog
ICAgICAgICByZXR1cm4gc3RkOjp2aXNpdChbXSAoYXV0byYgdHlwZSkgLT4gc3RkOjp2YXJpYW50
PFR5cGVzLi4uPiB7CiAgICAgICAgICAgICByZXR1cm4gQ3Jvc3NUaHJlYWRDb3BpZXI8c3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZSh0eXBlKT4+Pjo6
Y29weSh0eXBlKTsKLSAgICAgICAgfSwgc3RkOjpmb3J3YXJkPFU+KHNvdXJjZSkpOworICAgICAg
ICB9LCBzb3VyY2UpOworICAgIH0KKyAgICBzdGF0aWMgc3RkOjp2YXJpYW50PFR5cGVzLi4uPiBj
b3B5KFR5cGUmJiBzb3VyY2UpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp2aXNpdChbXSAo
YXV0byYmIHR5cGUpIC0+IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4geworICAgICAgICAgICAgcmV0
dXJuIENyb3NzVGhyZWFkQ29waWVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVm
ZXJlbmNlX3Q8ZGVjbHR5cGUodHlwZSk+Pj46OmNvcHkoV1RGTW92ZSh0eXBlKSk7CisgICAgICAg
IH0sIFdURk1vdmUoc291cmNlKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBjNmJkYWU5ZTcy
NTc4YzFlNTMwM2YxY2EyODZmOGU2OGVhOWNiOWU1Li40Njc5YTE4ZGYwMTQ1ZDI0NWUxNzI0MWM3
OWZjNmQ3YmFhYTFiMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzc2LDkgKzc3Niw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXIoKSB7IHNocmlua0NhcGFjaXR5KDApOyB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gVD4gVmVjdG9yPFU+IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSAmJjsKLQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgYXBwZW5kPFZh
bHVlVHlwZT4oc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4odmFsdWUpKTsgfQogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoVSYmIHUpIHsgYXBwZW5kPEZh
aWx1cmVBY3Rpb246OkNyYXNoLCBVPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lOTElORSBib29sIHRyeUFwcGVuZChVJiYgdSkgeyByZXR1
cm4gYXBwZW5kPEZhaWx1cmVBY3Rpb246OlJlcG9ydCwgVT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsg
fQpAQCAtMTY1OSwyNiArMTY1Niw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1
ZUNoZWNrPFZlY3RvcjxUPj4gewogfTsKICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBVPgotaW5saW5lIFZlY3RvcjxVPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omlzb2xhdGVkQ29weSgpIGNvbnN0
ICYKLXsKLSAgICBWZWN0b3I8VT4gY29weTsKLSAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqdGhpcykKLSAgICAg
ICAgY29weS51bmNoZWNrZWRBcHBlbmQoZWxlbWVudC5pc29sYXRlZENvcHkoKSk7Ci0gICAgcmV0
dXJuIGNvcHk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1l
IE1hbGxvYz4KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1pbmxpbmUgVmVjdG9yPFU+IFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6
aXNvbGF0ZWRDb3B5KCkgJiYKLXsKLSAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBiZWdpbigpLCBp
dGVyYXRvckVuZCA9IGVuZCgpOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyArK2l0ZXJhdG9yKQot
ICAgICAgICAqaXRlcmF0b3IgPSBXVEZNb3ZlKCppdGVyYXRvcikuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgcmV0dXJuIFdURk1vdmUoKnRoaXMpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JU
eXBlLCB0eXBlbmFtZSBGdW5jPgogc2l6ZV90IHJlbW92ZVJlcGVhdGVkRWxlbWVudHMoVmVjdG9y
VHlwZSYgdmVjdG9yLCBjb25zdCBGdW5jJiBmdW5jKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3Rl
bU1hYy5tbQppbmRleCBiYjYyZGFhMzM4MzRjMzI4ZDBlNTE5ZDZmMjVmNGNiOWZmYjkxNzg2Li4y
ZmIxYTVmMjU2MTdlZmIwMzZhYTk0ZjE3YmQ1MzVmNzRlYmI1N2JhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMv
RmlsZVN5c3RlbU1hYy5tbQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEZpbGVTeXN0ZW06OnNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0
cgogICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKIAogICAgIC8vIENhbGwg
TWV0YWRhdGEgQVBJIG9uIGEgYmFja2dyb3VuZCBxdWV1ZSBiZWNhdXNlIGl0IGNhbiB0YWtlIHNv
bWUgdGltZS4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSBy
ZWZlcnJlci5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRo
ID0gcGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gV1RGTW92ZSh1cmxTdHJpbmcpLmlz
b2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7CiAgICAg
ICAgIGF1dG8gaXRlbSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlUXVlcnlPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
UXVlcnlPcHRpb25zLmgKaW5kZXggMDFmZGM5MzdjNzUxODE1M2UwMGJjY2I3ZWQ1OTFhNTgxMTQ0
ZjJkZS4uY2YxYTY3NDk3OTc4ZDIyMzRhZjRjZDYzOTJkZWZjNWI2YWIyMmE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaApAQCAtMzAs
NyArMzAsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ2FjaGVRdWVyeU9wdGlv
bnMgewotICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IHsgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIGNhY2hlTmFtZS5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJiB7IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBj
YWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9y
ZVZhcnksIFdURk1vdmUoY2FjaGVOYW1lKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICBib29s
IGlnbm9yZVNlYXJjaCB7IGZhbHNlIH07CiAgICAgYm9vbCBpZ25vcmVNZXRob2QgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApp
bmRleCBjMGY4MDMyYjA0NTJjMzdlZTRjYWZiY2FmZDc5ZjA5ZDIxNDYzMzI2Li5iNDI4MjY1YzEy
NzgyNTQ3YzFhMGRlNDJmOWE2ZjIyY2U0MzhkZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTU0LDE2ICsxNTQsNiBAQCBSZWNv
cmQgUmVjb3JkOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gUmVjb3JkIHsgaWRlbnRpZmllciwg
dXBkYXRlUmVzcG9uc2VDb3VudGVyLCByZXF1ZXN0SGVhZGVyc0d1YXJkLCByZXF1ZXN0LCBvcHRp
b25zLCByZWZlcnJlciwgcmVzcG9uc2VIZWFkZXJzR3VhcmQsIHJlc3BvbnNlLCBjb3B5UmVzcG9u
c2VCb2R5KHJlc3BvbnNlQm9keSksIHJlc3BvbnNlQm9keVNpemUgfTsKIH0KIAotc3RhdGljIGlu
bGluZSBDYWNoZUluZm8gaXNvbGF0ZUNhY2hlSW5mbyhjb25zdCBDYWNoZUluZm8mIGluZm8pCi17
Ci0gICAgcmV0dXJuIENhY2hlSW5mbyB7IGluZm8uaWRlbnRpZmllciwgaW5mby5uYW1lLmlzb2xh
dGVkQ29weSgpIH07Ci19Ci0KLUNhY2hlSW5mb3MgQ2FjaGVJbmZvczo6aXNvbGF0ZWRDb3B5KCkK
LXsKLSAgICByZXR1cm4geyBXVEY6Om1hcChpbmZvcywgaXNvbGF0ZUNhY2hlSW5mbyksIHVwZGF0
ZUNvdW50ZXIgfTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdpbmUKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmJlNWMyYzFlMzU0MGM3NmZlYzc3ZWQ1YzRmNmVhMGFiNDIyOTc1YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTgyLDE2ICs4MiwyMCBA
QCBzdHJ1Y3QgUmVjb3JkIHsKIHN0cnVjdCBDYWNoZUluZm8gewogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXI7CiAgICAgU3RyaW5nIG5hbWU7CisKKyAgICBDYWNoZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJiB7IHJldHVybiB7IGlkZW50aWZpZXIsIG5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQor
ICAgIENhY2hlSW5mbyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGlkZW50aWZpZXIsIFdU
Rk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAogc3RydWN0IENhY2hlSW5mb3Mg
ewotICAgIENhY2hlSW5mb3MgaXNvbGF0ZWRDb3B5KCk7CisgICAgVmVjdG9yPENhY2hlSW5mbz4g
aW5mb3M7CisgICAgdWludDY0X3QgdXBkYXRlQ291bnRlcjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYWNoZUluZm9zPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCi0gICAgVmVjdG9yPENhY2hlSW5mbz4gaW5mb3M7Ci0gICAgdWludDY0X3QgdXBkYXRl
Q291bnRlcjsKKyAgICBDYWNoZUluZm9zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBjcm9zc1RocmVhZENvcHkoaW5mb3MpLCB1cGRhdGVDb3VudGVyIH07IH0KKyAgICBDYWNoZUlu
Zm9zIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
aW5mb3MpKSwgdXBkYXRlQ291bnRlciB9OyB9CiB9OwogCiBzdHJ1Y3QgQ2FjaGVJZGVudGlmaWVy
T3BlcmF0aW9uUmVzdWx0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKaW5kZXggMGZhMDJiYmJkYzMzOTFjZGJkYmNmZDhh
YmU2YWZmZjRhZmNhMTUwZi4uNzU2MDQ1OTQ3ZjZlZTUxODRlYmQwODlhNWQ2ZmIyY2MyOGY0NTUz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29y
ZHNPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJl
Y29yZHNPcHRpb25zLmgKQEAgLTMzLDcgKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgewotICAgIFJldHJpZXZlUmVjb3Jkc09wdGlv
bnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBzb3VyY2VPcmlnaW4t
Pmlzb2xhdGVkQ29weSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwg
c2hvdWxkUHJvdmlkZVJlc3BvbnNlIH07IH0KKyAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBj
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBzb3VyY2VPcmlnaW4tPmlz
b2xhdGVkQ29weSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgc2hv
dWxkUHJvdmlkZVJlc3BvbnNlIH07IH0KKyAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShyZXF1ZXN0KS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KS5pc29sYXRlZENvcHkoKSwgc291cmNl
T3JpZ2luLT5pc29sYXRlZENvcHkoKSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9y
ZVZhcnksIHNob3VsZFByb3ZpZGVSZXNwb25zZSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0cmlldmVSZWNvcmRzT3B0aW9ucz4gZGVj
b2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDQ2ZmY3Y2VjZDNl
MjIzMjlkNjc1ZGUyNWUyZTZiZDc5YzU0YjkxMmMuLmJkMjA0YTljNzlmNDUxNGNmOTAwM2VjZTM2
NmRhMzRjZjFjZWM1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTgwLDcgKzE4
MCw3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpCiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9
IHJlc3VsdC52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOworICAgICAgICAgICAgICAgIGlzb2xhdGVk
UmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICAg
ICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElk
ZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUoaXNvbGF0ZWRSZXN1bHQpXSAoYXV0byYgc2NvcGUp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihz
Y29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnJldHJpZXZlQ2FjaGVzQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHZv
aWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSAr
K21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5n
UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLnRocmVhZCgp
IH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVz
dElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUudGhyZWFkKCkg
fSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENv
cHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucykuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihj
YWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFt3b3JrZXJUaHJlYWQg
PSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlm
aWVyc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0g
V1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlv
bigpLmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVz
dWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9N
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmls
ZVN5c3RlbS5jcHAKaW5kZXggMDE2ZDE3MTcyODc1ZDJhNTM5YzZjMmEyOTVlOGQ1MmM0Njg1MTg0
MC4uOTgyZTViNTgzN2Y1YzVlNTI4MDc5MTVjYTdiYmI2NmNhMTM5NjdkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAt
NDQsNyArNDQsOCBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogICAgIFN0cmluZyBmaWxlbmFtZTsK
ICAgICBGaWxlU3lzdGVtOjpGaWxlVHlwZSB0eXBlOwogCi0gICAgTGlzdGVkQ2hpbGQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBmaWxlbmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9
OyB9CisgICAgTGlzdGVkQ2hpbGQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGZp
bGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07IH0KKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZmlsZW5hbWUpLmlzb2xhdGVkQ29weSgpLCB0
eXBlIH07IH0KIH07CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW06OkZpbGVUeXBl
PiBmaWxlVHlwZUlnbm9yaW5nSGlkZGVuRmlsZXMoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKQEAg
LTI1Niw3ICsyNTcsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcgogCiAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJl
ZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0
dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFk
YXRhKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJl
biA9IGNyb3NzVGhyZWFkQ29weShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRo
ID0gZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4gPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShsaXN0ZWRDaGlsZHJlbikpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9y
eVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcyhjb250ZXh0LCBwcm90ZWN0ZWRUaGlz
LCBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGgpKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRleCA1MzU1MGZhN2Q5YTE1OWZl
MWY5ZjdlNzc2ZTNkZGU2ZmE1MjdkNGY3Li5kOGY4NTY3NGNkMTEwYjMxMDlmNmE5ZTQ4Zjc5YzZk
N2ZmNWI0M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTQyLDE0ICs0MiwyMSBAQCBJREJE
YXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgU2VjdXJpdAogICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgpKTsK
IH0KIAotSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK0lEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZp
ZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIg
aWRlbnRpZmllcjsKLQogICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFiYXNl
TmFtZS5pc29sYXRlZENvcHkoKTsKICAgICBpZGVudGlmaWVyLm1fb3JpZ2luID0gbV9vcmlnaW4u
aXNvbGF0ZWRDb3B5KCk7CiAgICAgaWRlbnRpZmllci5tX2lzVHJhbnNpZW50ID0gbV9pc1RyYW5z
aWVudDsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KIAorSURCRGF0YWJhc2VJZGVudGlmaWVy
IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1l
ID0gV1RGTW92ZShtX2RhdGFiYXNlTmFtZSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWRlbnRpZmll
ci5tX29yaWdpbiA9IFdURk1vdmUobV9vcmlnaW4pLmlzb2xhdGVkQ29weSgpOworICAgIGlkZW50
aWZpZXIubV9pc1RyYW5zaWVudCA9IG1faXNUcmFuc2llbnQ7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggZjgzZjE5NWE1NmRlZmQyYjNmMGVjZDhlOWQ2
NzE0ZDI5NDBkMGEyMi4uMjcxZGVkNGRlZThiODg4ZDMxZTRjNGMxMWUxZDFmYzg4OWRiYTZhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgSURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBtYWluRnJhbWVPcmlnaW4sIGJvb2wgaXNUcmFuc2llbnQgPSBmYWxzZSk7CiAKLSAgICBJREJE
YXRhYmFzZUlkZW50aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5jcHAKaW5kZXggNTQ3OWQ2MWYxZjAzYTlmMmYyZmUzOTNjZjcyZGMyOTUy
MmQ1NGY1Mi4uYWI1NjcyMjMxZjJiYjQyNDMyYTI5YjIwNzRmYTBhMDY3YmMzNDUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgSURCR2V0UmVzdWx0Ojppc29sYXRlZENvcHkoY29uc3QgSURC
R2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluCiAgICAgZGVzdGluYXRpb24u
bV9wcmltYXJ5S2V5RGF0YSA9IHNvdXJjZS5tX3ByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgp
OwogICAgIGRlc3RpbmF0aW9uLm1fa2V5UGF0aCA9IGNyb3NzVGhyZWFkQ29weShzb3VyY2UubV9r
ZXlQYXRoKTsKICAgICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJjZS5tX2lzRGVmaW5l
ZDsKLSAgICBkZXN0aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNvcmRzID0gc291cmNlLm1fcHJlZmV0
Y2hlZFJlY29yZHMuaXNvbGF0ZWRDb3B5KCk7CisgICAgZGVzdGluYXRpb24ubV9wcmVmZXRjaGVk
UmVjb3JkcyA9IGNyb3NzVGhyZWFkQ29weShzb3VyY2UubV9wcmVmZXRjaGVkUmVjb3Jkcyk7CiB9
CiAKIHZvaWQgSURCR2V0UmVzdWx0OjpzZXRWYWx1ZShJREJWYWx1ZSYmIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGNlODY3YjFiN2U2ZDZmMTU0OWVjZDcyNjEyN2RjYzc2OTk1YTlkMDYuLjc3M2U1YjJkM2Fh
NWQyOGViZWJhODM2Zjk3NzJjODdkNTQ2ODI2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTkzMiw3ICs5MzIsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9y
ZVJlY29yZHMoSURCT2JqZWN0U3RvcmUmCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJ
REIgZ2V0IGFsbCBvYmplY3Qgc3RvcmUgcmVjb3JkcyBvcGVyYXRpb246ICVzIiwgZ2V0QWxsUmVj
b3Jkc0RhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHNjaGVkdWxlT3Bl
cmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMs
IHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0g
KGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRBbGxS
ZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKLSAgICB9LCBbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0Rh
dGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNEYXRhID0gV1RGTW92ZShnZXRBbGxS
ZWNvcmRzRGF0YSkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVyKG9wZXJhdGlvbiwgZ2V0QWxsUmVj
b3Jkc0RhdGEpOwogICAgIH0pKTsKIApAQCAtOTU0LDcgKzk1NCw3IEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYgaW5k
ZXgsIGNvbnN0CiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZ2V0IGFsbCBpbmRl
eCByZWNvcmRzIG9wZXJhdGlvbjogJXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEdldEFsbFJlY29yZHNPblNlcnZlcihyZXF1ZXN0
LmdldCgpLCByZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Z2V0QWxsUmVjb3Jkc0RhdGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1
dG8mIG9wZXJhdGlvbikgeworICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Z2V0QWxsUmVjb3Jkc0RhdGEgPSBXVEZNb3ZlKGdldEFsbFJlY29yZHNEYXRhKS5pc29sYXRlZENv
cHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRBbGxS
ZWNvcmRzT25TZXJ2ZXIob3BlcmF0aW9uLCBnZXRBbGxSZWNvcmRzRGF0YSk7CiAgICAgfSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCBjOWRkMWQwMzZlN2MxOTRhOWNjYjE0NmMw
NWEwNzYzMWFkM2RkYjNjLi43ZWY5ZDBhMzg3ZjcyN2Q4NWVjMGRlZWY2ZDNjYWUwZGVkMDE1OGNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBJREJFcnJv
ciBNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlzdGluZ1JlY29yZHMoTWVt
b3J5SW5kZXgmIGluZGV4KQogCiAgICAgICAgICAgICBJbmRleEtleSBpbmRleEtleTsKICAgICAg
ICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShnbG9iYWxPYmplY3QsIGluZGV4SW5mbywg
anNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5UGF0aCgpLCBrZXkpOwotICAgICAgICAgICAgcmVz
dWx0SW5kZXhLZXkgPSBpbmRleEtleS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgICAgIHJlc3Vs
dEluZGV4S2V5ID0gV1RGTW92ZShpbmRleEtleSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIGlmICghcmVzdWx0SW5kZXhLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDkyMWFhMmIwYjg4MDliM2E0ZGNmNzMyMTg5ZGI5MDlhNDYwYWIxOGYu
LmI1M2U4YmE5NjJmNmZiNzcyMjNkY2EzYmQ0ZTYyYjYxYjU5N2I1NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xODg2LDcgKzE4ODYsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKElEQk9iamVjdFN0
b3JlSW5mbyYgbwogCiAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwogICAgICAgICBnZW5lcmF0
ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwg
b2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKLSAgICAgICAgcmVzdWx0SW5kZXhLZXkg
PSBpbmRleEtleS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgcmVzdWx0SW5kZXhLZXkgPSBXVEZN
b3ZlKGluZGV4S2V5KS5pc29sYXRlZENvcHkoKTsKICAgICB9KTsKIAogICAgIGlmICghcmVzdWx0
SW5kZXhLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAppbmRleCBmNGM3
NWUwZTI3YTY5MDYzZDQ3NmRjY2I5ZGQ3OGM1YzhkZGE2MmFhLi5jNzFkMDdmNjljM2RiYjQ3MGQ2
MTE3NzYzZWRiZDlkODQxMDM3NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uLmgKQEAgLTM2LDcgKzM2LDggQEAgc3RydWN0IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24g
ewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBuYW1lLmlzb2xh
dGVkQ29weSgpLCB2ZXJzaW9uIH07IH0KKyAgICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
dmVyc2lvbiB9OyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTksOSArNjAs
NCBAQCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb246OmRlY29kZShEZWNvZAogICAgIHJldHVybiBpbmZvOwogfQogCi1pbmxp
bmUgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpp
c29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IG5hbWUuaXNvbGF0ZWRDb3B5KCks
IHZlcnNpb24gfTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKaW5kZXggMmUw
YTU3YWM2NjdiNjJjYzZjZmJkYmU0Y2Y2ZjE1MTg5OWIyMThhYi4uMThlZDdlMjFiMzU1MGQzOTk0
MjI4ZWUwYWE3ZGE0OGU5ODFmNjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCkBAIC0zNiwxMSArMzYsNiBAQCBJREJF
cnJvcjo6SURCRXJyb3Ioc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBjb2RlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiB9CiAKLUlEQkVycm9yIElEQkVycm9yOjppc29sYXRlZENvcHko
KSBjb25zdAotewotICAgIHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgbV9tZXNzYWdlLmlzb2xh
dGVkQ29weSgpIH07Ci19Ci0KIFN0cmluZyBJREJFcnJvcjo6bmFtZSgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2NvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5oCmluZGV4IGIzMGFkMzkxNzZmMDNmZjBkNmM5Mzk4ZDZiM2VkMTljZDJl
OTkyMWQuLjMyOTY1NmNlOWY0Mjg4N2YzZDBiZjcwOGM5YjBjNjNhOTE1ZTAxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBA
IC01NCw3ICs1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NvZGU7IH0KICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsK
KyAgICBJREJFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIElEQkVycm9yIHsg
bV9jb2RlLCBtX21lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIElEQkVycm9yIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIElEQkVycm9yIHsgbV9jb2RlLCBXVEZNb3ZlKG1fbWVzc2Fn
ZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIElEQkVycm9yJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
SW5kZXhJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJJbmRleEluZm8uY3BwCmluZGV4IDAxNWFjZjcyNzY5NDUzNzRjNGFkYjhhZDI0MzRiYTNiNzk5
YWFmZGEuLmU3MWQyZWJmMjFjNGFkZmVmMjhhMmJkYWZhMWZmODRiM2Y3ZjAzOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRl
eEluZm8uY3BwCkBAIC00NSwxMSArNDUsMTYgQEAgSURCSW5kZXhJbmZvOjpJREJJbmRleEluZm8o
dWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLAogewog
fQogCi1JREJJbmRleEluZm8gSURCSW5kZXhJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAorSURC
SW5kZXhJbmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJl
dHVybiB7IG1faWRlbnRpZmllciwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIsIG1fbmFtZS5pc29s
YXRlZENvcHkoKSwgY3Jvc3NUaHJlYWRDb3B5KG1fa2V5UGF0aCksIG1fdW5pcXVlLCBtX211bHRp
RW50cnkgfTsKIH0KIAorSURCSW5kZXhJbmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkg
JiYKK3sKKyAgICByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBXVEZNb3ZlKG1fbmFtZSkuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KG1fa2V5UGF0aCkpLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5IH07Cit9CisKICNpZiAhTE9HX0RJ
U0FCTEVECiAKIFN0cmluZyBJREJJbmRleEluZm86OmxvZ2dpbmdTdHJpbmcoaW50IGluZGVudCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uaAppbmRleCA5ZjFlYjlhMGExMDE0NDM4Y2IyMzg2M2FhY2EyMTRiN2Nm
NDFiY2U2Li5hMTBmOGY1MmYzNDIxYTE3OWUwZGNhZDlhYWI5N2YyZmMxYThlZGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4
SW5mby5oCkBAIC0zNSw3ICszNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJJ
bmRleEluZm8oKTsKICAgICBJREJJbmRleEluZm8odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIElEQktleVBhdGgm
JiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBJ
REJJbmRleEluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURC
SW5kZXhJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgSURC
SW5kZXhJbmZvIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2Jq
ZWN0U3RvcmVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCmluZGV4IDEwYzFhNGM1MTVlMmVhZWY4MDkzOTQyYmIz
NmM1ZDhkNTIzNGMwY2MuLjFlOGI4ZGVhNDBiZjhiZDM2YmQyNzIzZTkyMDAxMDYwNmFkNTYwNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJP
YmplY3RTdG9yZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCkBAIC05MiwxMyArOTIsMTcgQEAgSURCSW5k
ZXhJbmZvKiBJREJPYmplY3RTdG9yZUluZm86OmluZm9Gb3JFeGlzdGluZ0luZGV4KHVpbnQ2NF90
IGlkZW50aWZpZXIpCiAgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7CiB9CiAKLUlEQk9iamVj
dFN0b3JlSW5mbyBJREJPYmplY3RTdG9yZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CitJREJP
YmplY3RTdG9yZUluZm8gSURCT2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAm
CiB7CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIHJlc3VsdCA9IHsgbV9pZGVudGlmaWVyLCBtX25h
bWUuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhyZWFkQ29weShtX2tleVBhdGgpLCBtX2F1dG9JbmNy
ZW1lbnQgfTsKKyAgICByZXN1bHQubV9pbmRleE1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2luZGV4
TWFwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCi0gICAgZm9yIChhdXRvJiBpdGVyYXRvciA6
IG1faW5kZXhNYXApCi0gICAgICAgIHJlc3VsdC5tX2luZGV4TWFwLnNldChpdGVyYXRvci5rZXks
IGl0ZXJhdG9yLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLQorSURCT2JqZWN0U3RvcmVJbmZvIElE
Qk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBJREJPYmplY3RTdG9y
ZUluZm8gcmVzdWx0ID0geyBtX2lkZW50aWZpZXIsIFdURk1vdmUobV9uYW1lKS5pc29sYXRlZENv
cHkoKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9rZXlQYXRoKSksIG1fYXV0b0luY3JlbWVu
dCB9OworICAgIHJlc3VsdC5tX2luZGV4TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9p
bmRleE1hcCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8u
aAppbmRleCA0MDNmZDQwNTk4NmJjNWQ5MjdiNGU2M2FkZjBjOTVmZWYxYWU5Njk5Li5lM2EwM2Jm
NzU2NTgzMWE3NTA4MzU5ZDU4YzI2ZWE5MTJlNzE4MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5m
by5oCkBAIC00NCw3ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVuYW1lKGNvbnN0IFN0
cmluZyYgbmV3TmFtZSkgeyBtX25hbWUgPSBuZXdOYW1lOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBJREJPYmplY3RTdG9yZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSURCT2JqZWN0U3RvcmVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VC
Q09SRV9FWFBPUlQgSURCT2JqZWN0U3RvcmVJbmZvIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAg
SURCSW5kZXhJbmZvIGNyZWF0ZU5ld0luZGV4KHVpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCS2V5UGF0aCYmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKICAg
ICB2b2lkIGFkZEV4aXN0aW5nSW5kZXgoY29uc3QgSURCSW5kZXhJbmZvJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBz
aG90LmgKaW5kZXggNDQyYzMwM2QyYTg3NGUyOTQzZWY3YWM1ZjYyZmNlMzYwMGYyZTc1YS4uMjcw
N2Y3MTYyZjlkZDBhMzE5MDVhMjg0NGQ3MDZjNDZmMjIxMzEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3Qu
aApAQCAtMzcsNyArMzcsOCBAQCBzdHJ1Y3QgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCB7CiAgICAg
ICAgIFdlYkxvY2tNb2RlIG1vZGUgeyBXZWJMb2NrTW9kZTo6RXhjbHVzaXZlIH07CiAgICAgICAg
IFN0cmluZyBjbGllbnRJZDsKIAotICAgICAgICBJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgbW9kZSwgY2xpZW50SWQuaXNvbGF0ZWRDb3B5
KCkgfTsgfQorICAgICAgICBJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBu
YW1lLmlzb2xhdGVkQ29weSgpLCBtb2RlLCBjbGllbnRJZC5pc29sYXRlZENvcHkoKSB9OyB9Cisg
ICAgICAgIEluZm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpLCBtb2RlLCBXVEZNb3ZlKGNsaWVudElkKS5pc29sYXRlZENvcHkoKSB9OyB9
CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IG5hbWUgPDwgbW9kZSA8PCBjbGllbnRJZDsgfQog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDYsNyArNDcsOCBAQCBzdHJ1Y3QgV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdCB7CiAgICAgVmVjdG9yPEluZm8+IGhlbGQ7CiAgICAgVmVjdG9yPEluZm8+IHBl
bmRpbmc7CiAKLSAgICBXZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGhlbGQpLCBjcm9zc1RocmVhZENvcHkocGVuZGlu
ZykgfTsgfQorICAgIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShoZWxkKSwgY3Jvc3NUaHJlYWRDb3B5KHBlbmRp
bmcpIH07IH0KKyAgICBXZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpICYmIHsg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoaGVsZCkpLCBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShwZW5kaW5nKSkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IGhlbGQgPDwgcGVu
ZGluZzsgfQogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkxvY2tNYW5hZ2VyU25hcHNob3Q+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgKaW5k
ZXggMWVkNmNkZTcyOWVmOTM1NzcwYmE5NjM3ZDNhZmE1ZjAyYThkODY0ZS4uNWRlNTRmOGIzMDNk
MjRjOTg2YjQ1YjFlNGNkMGZjYTlhM2IwMjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaApAQCAtNDIsMTYgKzQy
LDggQEAgc3RydWN0IEF1ZGlvUGFyYW1EZXNjcmlwdG9yIHsKICAgICBmbG9hdCBtYXhWYWx1ZSB7
IDMuNDAyODIzNWUzOCB9OwogICAgIEF1dG9tYXRpb25SYXRlIGF1dG9tYXRpb25SYXRlIHsgQXV0
b21hdGlvblJhdGU6OkFSYXRlIH07CiAKLSAgICBBdWRpb1BhcmFtRGVzY3JpcHRvciBpc29sYXRl
ZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG5hbWUu
aXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBkZWZhdWx0VmFsdWUsCi0gICAgICAgICAgICBt
aW5WYWx1ZSwKLSAgICAgICAgICAgIG1heFZhbHVlLAotICAgICAgICAgICAgYXV0b21hdGlvblJh
dGUKLSAgICAgICAgfTsKLSAgICB9CisgICAgQXVkaW9QYXJhbURlc2NyaXB0b3IgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRlZmF1bHRWYWx1
ZSwgbWluVmFsdWUsIG1heFZhbHVlLCBhdXRvbWF0aW9uUmF0ZSB9OyB9CisgICAgQXVkaW9QYXJh
bURlc2NyaXB0b3IgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlv
blJhdGUgfTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAppbmRleCAzZTczOWMxY2Y5MDllZjcyOWY1YjlmMGE5YWZjOGMwZmZlYzJjYWI4Li44YTUx
MzBkYjk3MGZiZjYyYzE4NDUyMDlhNDAzYTJhNDkyMWU0MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8CiAgICAgaWYg
KCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCAiQSBwcm9jZXNzb3Igd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIHRo
aXMgbmFtZSJfcyB9OwogCi0gICAgdGhyZWFkKCkubWVzc2FnaW5nUHJveHkoKS5wb3N0VGFza1Rv
QXVkaW9Xb3JrbGV0KFtuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgcGFyYW1ldGVyRGVzY3Jp
cHRvcnMgPSBjcm9zc1RocmVhZENvcHkocGFyYW1ldGVyRGVzY3JpcHRvcnMpXShBdWRpb1dvcmts
ZXQmIHdvcmtsZXQpIG11dGFibGUgeworICAgIHRocmVhZCgpLm1lc3NhZ2luZ1Byb3h5KCkucG9z
dFRhc2tUb0F1ZGlvV29ya2xldChbbmFtZSA9IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCks
IHBhcmFtZXRlckRlc2NyaXB0b3JzID0gY3Jvc3NUaHJlYWRDb3B5KHBhcmFtZXRlckRlc2NyaXB0
b3JzKV0oQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGF1ZGlvQ29udGV4dCA9IHdvcmtsZXQu
YXVkaW9Db250ZXh0KCkpCiAgICAgICAgICAgICBhdWRpb0NvbnRleHQtPmFkZEF1ZGlvUGFyYW1E
ZXNjcmlwdG9ycyhuYW1lLCBXVEZNb3ZlKHBhcmFtZXRlckRlc2NyaXB0b3JzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5j
cHAKaW5kZXggNmEwYmU5NjQ0NzczZDgyMzgyMzZkNjc5MzIxODFhNjM3ZGQyNWEzMC4uNTRhYzA4
Y2Q0OGRmM2NjY2MzY2U0YzAzZTdjOWVmMzIxYjAyYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMzcs
MTAgKzM3LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9Xb3JrbGV0VGhyZWFk
OjpBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3NhZ2lu
Z1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK0F1ZGlvV29ya2xl
dFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBt
ZXNzYWdpbmdQcm94eSwgV29ya2xldFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogV29y
a2VyT3JXb3JrbGV0VGhyZWFkKHBhcmFtZXRlcnMuaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSkK
ICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCi0gICAgLCBtX3BhcmFtZXRl
cnMocGFyYW1ldGVycy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3Zl
KHBhcmFtZXRlcnMpLmlzb2xhdGVkQ29weSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCBmNmU3MTU1
NmNlMGM5NGZhZDRkMjY5NzUzMjY4NjU4MjA0MTM1MjcyLi5iMzRlZTk5ODk4ZjlkZGQxZDBhN2Iz
ODIwZjFiNWNjYTJlZjdmZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk7CiAKIGNsYXNzIEF1ZGlvV29ya2xldFRocmVhZCA6IHB1
YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVk
aW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3Nh
Z2luZ1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICBzdGF0
aWMgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5JiBtZXNzYWdpbmdQcm94eSwgV29ya2xldFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0VGhyZWFkKG1lc3Nh
Z2luZ1Byb3h5LCBwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvV29ya2xldFRocmVhZChtZXNzYWdpbmdQcm94eSwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwog
ICAgIH0KICAgICB+QXVkaW9Xb3JrbGV0VGhyZWFkKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsg
cmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KIAogcHJpdmF0ZToKLSAgICBBdWRpb1dvcmtsZXRU
aHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVy
cyYpOworICAgIEF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYs
IFdvcmtsZXRQYXJhbWV0ZXJzJiYpOwogCiAgICAgLy8gV29ya2VyT3JXb3JrbGV0VGhyZWFkLgog
ICAgIFJlZjxUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCmluZGV4IGJlZjAzOWUx
NWU4MjU2NTA3MGYwZTM3ZjlmMzM5ZjVhNGZhMTM1MjQuLjNlYWU5NjEwNDg3MWVhYTI4OWI1MDA0
NGFiMTdiMzkxNTIzODIwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgRGF0YWJhc2VPcGVu
VGFzazo6RGF0YWJhc2VPcGVuVGFzayhEYXRhYmFzZSYgZGF0YWJhc2UsIGJvb2wgc2V0VmVyc2lv
bkluTmV3RGF0YWIKIAogdm9pZCBEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZvcm1UYXNrKCkKIHsK
LSAgICBtX3Jlc3VsdCA9IGlzb2xhdGVkQ29weShkYXRhYmFzZSgpLnBlcmZvcm1PcGVuQW5kVmVy
aWZ5KG1fc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpKTsKKyAgICBtX3Jlc3VsdCA9IGNyb3NzVGhy
ZWFkQ29weShkYXRhYmFzZSgpLnBlcmZvcm1PcGVuQW5kVmVyaWZ5KG1fc2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UpKTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBhZTY2
MGMwMjFmN2E4ZDIwZDRjMTFiYTRiZDlhMzQyZWZmZjczNjQ5Li4wNjdmZDM5MTM5MGM4NWRjMmQ0
OWRmNDA4MDE2MmI0M2M0ZjQyM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zNzIsOCArMzcyLDEwIEBA
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucygpCiAK
ICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgIGludCBzdGVwUmVz
dWx0OwotICAgIHdoaWxlICgoc3RlcFJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKQotICAgICAgICBvcmlnaW5zLmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKS0+aXNvbGF0ZWRDb3B5
KCkpOworICAgIHdoaWxlICgoc3RlcFJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CisgICAgICAgIGlmIChhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbURhdGFiYXNlSWRlbnRpZmllcihzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpKQorICAgICAg
ICAgICAgb3JpZ2lucy5hcHBlbmQoV1RGTW92ZShvcmlnaW4pLnZhbHVlKCkuaXNvbGF0ZWRDb3B5
KCkpOworICAgIH0KICAgICBvcmlnaW5zLnNocmlua1RvRml0KCk7CiAKICAgICBpZiAoc3RlcFJl
c3VsdCAhPSBTUUxJVEVfRE9ORSkKQEAgLTUzNyw3ICs1MzksNiBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKICAgICAgICAgbV9vcGVu
RGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0
byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwotCiAgICAgYXV0byogbmFtZU1h
cCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVNYXApIHsK
ICAgICAgICAgbmFtZU1hcCA9IG5ldyBEYXRhYmFzZU5hbWVNYXA7CkBAIC01OTgsMTQgKzU5OSwx
MyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBk
YXRhYmFzZSkKIFJlZjxPcmlnaW5Mb2NrPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3Io
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgTG9ja2VyIGxvY2tEYXRh
YmFzZSB7IG1fZGF0YWJhc2VHdWFyZCB9OwotICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIg
PSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAKICAgICAvLyBUaGUgb3JpZ2luTG9ja01h
cCBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIERhdGFiYXNlVGhyZWFkcyBzaW5jZQogICAgIC8v
IGRpZmZlcmVudCBzY3JpcHQgY29udGV4dHMgY2FuIGJlIHdyaXRpbmcgdG8gZGlmZmVyZW50IGRh
dGFiYXNlcyBmcm9tCiAgICAgLy8gdGhlIHNhbWUgb3JpZ2luLiBIZW5jZSwgdGhlIGRhdGFiYXNl
SWRlbnRpZmllciBrZXkgbmVlZHMgdG8gYmUgYW4KICAgICAvLyBpc29sYXRlZCBjb3B5LiBBbiBp
c29sYXRlZCBjb3B5IGdpdmVzIHVzIGEgdmFsdWUgd2hvc2UgcmVmQ291bnRpbmcgaXMKICAgICAv
LyB0aHJlYWQtc2FmZSwgc2luY2Ugb3VyIGNvcHkgaXMgZ3VhcmRlZCBieSB0aGUgbV9kYXRhYmFz
ZUd1YXJkIG11dGV4LgotICAgIGRhdGFiYXNlSWRlbnRpZmllciA9IGRhdGFiYXNlSWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgcmV0dXJuIG1fb3Jp
Z2luTG9ja01hcC5lbnN1cmUoZGF0YWJhc2VJZGVudGlmaWVyLCBbJl0gewogICAgICAgICByZXR1
cm4gT3JpZ2luTG9jazo6Y3JlYXRlKG9yaWdpblBhdGgob3JpZ2luKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5MzM0YzU1MWM0NGU0MTUzMWUwZDU2
NmYyMmI1Mjk2OWQ0NjEwZDgyLi5iYTFiNDAyNjEyYTM5NDE2ODMzMWI2NTFhNWQzZjJkOTE1MzA4
OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2
NCw3ICsyNjQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRDb25uZWN0KCkKIAogICAgIFN0cmluZyBzdWJwcm90b2NvbCA9IG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPnN1YnByb3RvY29sKCk7CiAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX21haW5X
ZWJTb2NrZXRDaGFubmVsLT5leHRlbnNpb25zKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29sLmlzb2xh
dGVkQ29weSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRX
cmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IFdURk1vdmUoc3Vi
cHJvdG9jb2wpLmlzb2xhdGVkQ29weSgpLCBleHRlbnNpb25zID0gV1RGTW92ZShleHRlbnNpb25z
KS5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJvdG9jb2wpOwogICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVuc2lvbnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAzYTM1ZTI2MDVlMDNlNjI5NzliMjI5ZDgyNmZlNmU3M2JlMjk0MmRmLi4wMDQ1YzI3
ZDMxYjEwN2NkZjdhM2RhYzhkNmI0MTU5ZmNhZGYxMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtOTcx
LDcgKzk3MSw2IEBAIGRvbS9FdmVudE5hbWVzLmNwcAogZG9tL0V2ZW50UGF0aC5jcHAKIGRvbS9F
dmVudFRhcmdldC5jcHAKIGRvbS9FdmVudFRhcmdldENvbmNyZXRlLmNwcAotZG9tL0V4Y2VwdGlv
bkRhdGEuY3BwCiBkb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCiBkb20vRm9jdXNFdmVudC5j
cHAKIGRvbS9Gb3JtRGF0YUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFhMjI3ZDU5OGU0MjlkODU1YmIzZGVlZGE5
YjFkNDcyODBkNjI0M2IuLmM1MmI1ZjcwNzlhYjFiNmUwZDVlNThmMmNlZmVjNmQ2ZTk0NWU5YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwMDU1LDcgKzEwMDU1LDYgQEAKIAkJNTFGNjQ1OTQxRjRBNjg0RjAwQjU0REVEIC8q
IFNXU2VydmVyUmVnaXN0cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNXU2VydmVyUmVnaXN0cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RjY0NTk1MUY0QTY4NjEwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NUEwMUY0QkY1MTYwMEI1NERFRCAv
KiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRjY0NUEzMUY0QzAwMEMwMEI1NERFRCAv
KiBFeGNlcHRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEV4Y2VwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVE
MjFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aWZpZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzc0lk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1REUxRkY0NTk0QjAw
QjU0REVEIC8qIE1lc3NhZ2VQb3J0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXNzYWdlUG9ydElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMyNTY1LDcgKzMyNTY0LDYgQEAKIAkJCQlDRENFNUNEMDE0NjMzQkM5MDBENDdD
Q0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovLAogCQkJCTkzRDE5NjMyMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyog
RXhjZXB0aW9uQ29kZS5oICovLAotCQkJCTUxRjY0NUEzMUY0QzAwMEMwMEI1NERFRCAvKiBFeGNl
cHRpb25EYXRhLmNwcCAqLywKIAkJCQk1MUY2NDU2MDFGNDUzOThCMDBCNTRERUQgLyogRXhjZXB0
aW9uRGF0YS5oICovLAogCQkJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25P
ci5oICovLAogCQkJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKaW5kZXggZDU5NmRhNDA4Yjc4N2Mx
ZGY2NjE5MzZjYzBjMjFlNDgzOTllMmY4Ny4uMWIyZjJmZTBjZjMxMDdmYmNjOTlhNDBhMDc3MjJm
OTA3YjA0OGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcApAQCAtMTE0LDEyICsxMTQsMTQg
QEAgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBNb2RpZnlI
ZWFkZXJzQWN0aW9uOjpwYXJzZShjb25zdAogICAgIHJldHVybiBNb2RpZnlIZWFkZXJzQWN0aW9u
IHsgV1RGTW92ZSgqcmVxdWVzdEhlYWRlcnMpLCBXVEZNb3ZlKCpyZXNwb25zZUhlYWRlcnMpIH07
CiB9CiAKLU1vZGlmeUhlYWRlcnNBY3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKK01vZGlmeUhlYWRlcnNBY3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShyZXF1ZXN0SGVhZGVycyksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weShyZXNwb25zZUhl
YWRlcnMpCi0gICAgfTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkocmVxdWVzdEhlYWRl
cnMpLCBjcm9zc1RocmVhZENvcHkocmVzcG9uc2VIZWFkZXJzKSB9OworfQorCitNb2RpZnlIZWFk
ZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVxdWVzdEhlYWRlcnMpKSwgY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUocmVzcG9uc2VIZWFkZXJzKSkgfTsKIH0KIAogYm9vbCBNb2RpZnlI
ZWFkZXJzQWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mIG90aGVy
KSBjb25zdApAQCAtMjIyLDExICsyMjQsMTQgQEAgYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpN
b2RpZnlIZWFkZXJJbmZvOjpwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYgaW5mb1ZhbHVlKQogICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Nb2RpZnlI
ZWFkZXJzSW52YWxpZE9wZXJhdGlvbik7CiB9CiAKLWF1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gTW9kaWZ5SGVhZGVySW5m
bworYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENv
cHkoKSBjb25zdCAmIC0+IE1vZGlmeUhlYWRlckluZm8KIHsKLSAgICByZXR1cm4gewotICAgICAg
ICBjcm9zc1RocmVhZENvcHkob3BlcmF0aW9uKQotICAgIH07CisgICAgcmV0dXJuIHsgY3Jvc3NU
aHJlYWRDb3B5KG9wZXJhdGlvbikgfTsKK30KKworYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpN
b2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENvcHkoKSAmJiAtPiBNb2RpZnlIZWFkZXJJbmZvCit7
CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUob3BlcmF0aW9uKSkgfTsKIH0K
IAogYm9vbCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpvcGVyYXRvcj09
KGNvbnN0IE1vZGlmeUhlYWRlckluZm8mIG90aGVyKSBjb25zdApAQCAtMzE0LDExICszMTksMTQg
QEAgRXhwZWN0ZWQ8UmVkaXJlY3RBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gUmVkaXJlY3RBY3Rp
b246OnBhcnNlKGNvbnN0IEpTT046Ok9iamUKICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29u
dGVudEV4dGVuc2lvbkVycm9yOjpKU09OUmVkaXJlY3RJbnZhbGlkVHlwZSk7CiB9CiAKLVJlZGly
ZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAorUmVkaXJlY3RB
Y3Rpb24gUmVkaXJlY3RBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1
cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkoYWN0aW9uKQotICAgIH07CisgICAgcmV0dXJu
IHsgY3Jvc3NUaHJlYWRDb3B5KGFjdGlvbikgfTsKK30KKworUmVkaXJlY3RBY3Rpb24gUmVkaXJl
Y3RBY3Rpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoYWN0aW9uKSkgfTsKIH0KIAogYm9vbCBSZWRpcmVjdEFjdGlvbjo6b3BlcmF0
b3I9PShjb25zdCBSZWRpcmVjdEFjdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC00MzIsMTggKzQ0MCwx
NiBAQCBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OnBhcnNlKGNvbnN0
IEpTT046Ok9iamVjdCYgdHJhbnNmb3JtKSAtPgogICAgIHJldHVybiBhY3Rpb247CiB9CiAKLWF1
dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zv
cm1BY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCiB7
Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGZyYWdtZW50KSwKLSAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KGhvc3QpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocGFzc3dv
cmQpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocGF0aCksCi0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShwb3J0KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHF1ZXJ5VHJhbnNmb3JtKSwKLSAg
ICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjaGVtZSksCi0gICAgICAgIGNyb3NzVGhyZWFkQ29weSh1
c2VybmFtZSkKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShmcmFnbWVudCks
IGNyb3NzVGhyZWFkQ29weShob3N0KSwgY3Jvc3NUaHJlYWRDb3B5KHBhc3N3b3JkKSwgY3Jvc3NU
aHJlYWRDb3B5KHBhdGgpLCBjcm9zc1RocmVhZENvcHkocG9ydCksIGNyb3NzVGhyZWFkQ29weShx
dWVyeVRyYW5zZm9ybSksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY2hlbWUpLCBjcm9zc1Ro
cmVhZENvcHkodXNlcm5hbWUpIH07Cit9CisKK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCit7Cisg
ICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZnJhZ21lbnQpKSwgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUoaG9zdCkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXNzd29yZCkp
LCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXRoKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KHBvcnQpKSwKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocXVlcnlUcmFuc2Zvcm0p
KSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoc2NoZW1lKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHVzZXJuYW1lKSkgfTsKIH0KIAogYm9vbCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3Jt
QWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFVSTFRyYW5zZm9ybUFjdGlvbiYgb3RoZXIpIGNvbnN0
CkBAIC02OTksMTIgKzcwNSwxNCBAQCB2b2lkIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1B
Y3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjphcHBseVRvVVJMKFVSTCYgdXJsKSBjbwogICAgIHVybC5z
ZXRRdWVyeSh0cmFuc2Zvcm1lZFF1ZXJ5KTsKIH0KIAotYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4g
UXVlcnlUcmFuc2Zvcm0KK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6
UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYgLT4gUXVlcnlUcmFuc2Zvcm0K
IHsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkoYWRkT3JSZXBsYWNlUGFy
YW1zKSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHJlbW92ZVBhcmFtcykKLSAgICB9OworICAg
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShhZGRPclJlcGxhY2VQYXJhbXMpLCBjcm9zc1RocmVh
ZENvcHkocmVtb3ZlUGFyYW1zKSB9OworfQorCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFu
c2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkoKSAmJiAtPiBRdWVyeVRy
YW5zZm9ybQoreworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFkZE9yUmVw
bGFjZVBhcmFtcykpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZW1vdmVQYXJhbXMpKSB9Owog
fQogCiBib29sIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNm
b3JtOjpvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5VHJhbnNmb3JtJiBvdGhlcikgY29uc3QKQEAgLTc3
OSwxNSArNzg3LDYgQEAgYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpR
dWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlWYWx1ZTo6cGFyc2UoY28KICAgICByZXR1cm4geyB7IFdU
Rk1vdmUoa2V5KSwgcmVwbGFjZU9ubHksIFdURk1vdmUodmFsdWUpIH0gfTsKIH0KIAotYXV0byBS
ZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6UXVlcnlL
ZXlWYWx1ZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gUXVlcnlLZXlWYWx1ZQotewotICAgIHJl
dHVybiB7Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShrZXkpLAotICAgICAgICBjcm9zc1RocmVh
ZENvcHkocmVwbGFjZU9ubHkpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkodmFsdWUpCi0gICAg
fTsKLX0KLQogYm9vbCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRy
YW5zZm9ybTo6UXVlcnlLZXlWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBRdWVyeUtleVZhbHVlJiBv
dGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gb3RoZXIua2V5ID09IHRoaXMtPmtleQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmgKaW5kZXggNDZlMDU4MGM5YzZlNTQwZjNiOGIxMDk2MDkwYzU3YWIxYjAzZmMw
OS4uYjBjYzBlZDFmNWM4MTQzMWNhNmI0ZTlmODE3NjUzNmYwMmQ3ODI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
QWN0aW9ucy5oCkBAIC01MCw4ICs1MCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
Y3Rpb25XaXRob3V0TWV0YWRhdGEgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSB7Ci0gICAgY29uc3QgU3RyaW5nIHN0cmluZzsKLSAg
ICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgeyBzdHJpbmcuaXNvbGF0ZWRDb3B5
KCkgfSB9OyB9CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyB7IHN0cmluZy5pc29sYXRlZENvcHkoKSB9IH07IH0KKyAgICBUIGlzb2xh
dGVkQ29weSgpICYmIHsgcmV0dXJuIHsgeyBXVEZNb3ZlKHN0cmluZykuaXNvbGF0ZWRDb3B5KCkg
fSB9OyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0
YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnN0cmluZyA9PSB0aGlzLT5zdHJpbmc7IH0K
ICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QgeyBzZXJp
YWxpemVTdHJpbmcodmVjdG9yLCBzdHJpbmcpOyB9CiAgICAgc3RhdGljIFQgZGVzZXJpYWxpemUo
U3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmco
c3BhbikgfSB9OyB9CkBAIC03MSwyNyArNzIsMzEgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIE1v
ZGlmeUhlYWRlcnNBY3Rpb24gewogICAgICAgICAgICAgU3RyaW5nIGhlYWRlcjsKICAgICAgICAg
ICAgIFN0cmluZyB2YWx1ZTsKIAotICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICBBcHBlbmRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5
KCkgY29uc3QgJiB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgp
ICYmIHsgcmV0dXJuIHsgV1RGTW92ZShoZWFkZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHZh
bHVlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQXBwZW5kT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuaGVhZGVyID09
IHRoaXMtPmhlYWRlciAmJiBvdGhlci52YWx1ZSA9PSB0aGlzLT52YWx1ZTsgfQogICAgICAgICB9
OwogICAgICAgICBzdHJ1Y3QgU2V0T3BlcmF0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFk
ZXI7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWU7CiAKLSAgICAgICAgICAgIFNldE9wZXJhdGlv
biBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwg
dmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgU2V0T3BlcmF0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVl
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFNldE9wZXJhdGlvbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92
ZSh2YWx1ZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNldE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9
PSB0aGlzLT5oZWFkZXIgJiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7IH0KICAgICAgICAg
fTsKICAgICAgICAgc3RydWN0IFJlbW92ZU9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcg
aGVhZGVyOwogCi0gICAgICAgICAgICBSZW1vdmVPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgUmVt
b3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBoZWFkZXIuaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICAgICAgUmVtb3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShoZWFkZXIpLmlzb2xhdGVkQ29weSgpIH07IH0KICAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW1vdmVPcGVyYXRpb24mIG90aGVyKSBj
b25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVhZGVyOyB9CiAgICAgICAgIH07
CiAgICAgICAgIHVzaW5nIE9wZXJhdGlvblZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8QXBwZW5kT3Bl
cmF0aW9uLCBTZXRPcGVyYXRpb24sIFJlbW92ZU9wZXJhdGlvbj47CiAgICAgICAgIE9wZXJhdGlv
blZhcmlhbnQgb3BlcmF0aW9uOwogCiAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxNb2RpZnlIZWFk
ZXJJbmZvLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046OlZhbHVlJik7Ci0gICAg
ICAgIE1vZGlmeUhlYWRlckluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIE1vZGlm
eUhlYWRlckluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgTW9kaWZ5SGVhZGVy
SW5mbyBpc29sYXRlZENvcHkoKSAmJjsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1v
ZGlmeUhlYWRlckluZm8mKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVp
bnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBNb2RpZnlIZWFkZXJJbmZvIGRlc2VyaWFs
aXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTE1LDcgKzEyMCw4IEBAIHN0cnVjdCBXRUJD
T1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0aW9uIHsKICAgICBib29sIGlzRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gaGFzaFRhYmxlVHlwZSA9PSBIYXNoVGFibGVUeXBlOjpEZWxldGVk
OyB9CiAKICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwgc3RkOjplcnJv
cl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICBNb2RpZnlIZWFkZXJzQWN0
aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIE1vZGlmeUhlYWRlcnNBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgp
ICYmOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJikgY29u
c3Q7CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgc3Rh
dGljIE1vZGlmeUhlYWRlcnNBY3Rpb24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7
CkBAIC0xMjcsMTMgKzEzMywxNSBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rp
b24gewogICAgIHN0cnVjdCBFeHRlbnNpb25QYXRoQWN0aW9uIHsKICAgICAgICAgU3RyaW5nIGV4
dGVuc2lvblBhdGg7CiAKLSAgICAgICAgRXh0ZW5zaW9uUGF0aEFjdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiB7IGV4dGVuc2lvblBhdGguaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBFeHRlbnNpb25QYXRoQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRXh0ZW5zaW9uUGF0
aEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZXh0ZW5zaW9uUGF0
aCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXh0
ZW5zaW9uUGF0aEFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmV4dGVuc2lvblBh
dGggPT0gdGhpcy0+ZXh0ZW5zaW9uUGF0aDsgfQogICAgIH07CiAgICAgc3RydWN0IFJlZ2V4U3Vi
c3RpdHV0aW9uQWN0aW9uIHsKICAgICAgICAgU3RyaW5nIHJlZ2V4U3Vic3RpdHV0aW9uOwogCi0g
ICAgICAgIFJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgcmVnZXhTdWJzdGl0dXRpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBSZWdl
eFN1YnN0aXR1dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgcmVn
ZXhTdWJzdGl0dXRpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBSZWdleFN1YnN0aXR1
dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUocmVnZXhTdWJz
dGl0dXRpb24pLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIu
cmVnZXhTdWJzdGl0dXRpb24gPT0gdGhpcy0+cmVnZXhTdWJzdGl0dXRpb247IH0KICAgICB9Owog
ICAgIHN0cnVjdCBVUkxUcmFuc2Zvcm1BY3Rpb24gewpAQCAtMTQ0LDcgKzE1Miw4IEBAIHN0cnVj
dCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICAgICAgU3RyaW5n
IHZhbHVlOwogCiAgICAgICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1ZXJ5S2V5VmFsdWUs
IHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmKTsKLSAgICAgICAgICAg
ICAgICBRdWVyeUtleVZhbHVlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICAgICAgICAg
IFF1ZXJ5S2V5VmFsdWUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGtleS5pc29s
YXRlZENvcHkoKSwgcmVwbGFjZU9ubHksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgICAgICAgICBRdWVyeUtleVZhbHVlIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RG
TW92ZShrZXkpLmlzb2xhdGVkQ29weSgpLCByZXBsYWNlT25seSwgV1RGTW92ZSh2YWx1ZSkuaXNv
bGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR
dWVyeUtleVZhbHVlJikgY29uc3Q7CiAgICAgICAgICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVj
dG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgICAgICAgICAgc3RhdGljIFF1ZXJ5S2V5VmFs
dWUgZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xNTUsNyArMTY0LDggQEAg
c3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHJlbW92ZVBhcmFtczsKIAogICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1
ZXJ5VHJhbnNmb3JtLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYp
OwotICAgICAgICAgICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
ICAgICAgICBRdWVyeVRyYW5zZm9ybSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICAg
ICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQg
c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICAgICAgc3RhdGljIFF1
ZXJ5VHJhbnNmb3JtIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTc0LDcg
KzE4NCw4IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAg
IFN0cmluZyB1c2VybmFtZTsKIAogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8VVJMVHJhbnNmb3Jt
QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYpOwotICAg
ICAgICBVUkxUcmFuc2Zvcm1BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFVS
TFRyYW5zZm9ybUFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBVUkxUcmFu
c2Zvcm1BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUo
VmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBVUkxUcmFuc2Zvcm1BY3Rp
b24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xODQsNyArMTk1LDggQEAg
c3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICBzdHJ1Y3QgVVJMQWN0
aW9uIHsKICAgICAgICAgU3RyaW5nIHVybDsKIAotICAgICAgICBVUkxBY3Rpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBV
UkxBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHVybC5pc29sYXRlZENv
cHkoKSB9OyB9CisgICAgICAgIFVSTEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7
IFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBVUkxBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci51cmwgPT0gdGhp
cy0+dXJsOyB9CiAgICAgfTsKIApAQCAtMjAzLDcgKzIxNSw4IEBAIHN0cnVjdCBXRUJDT1JFX0VY
UE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGhhc2hUYWJsZVR5cGUgPT0gSGFzaFRhYmxlVHlwZTo6RGVsZXRlZDsgfQogCiAgICAg
c3RhdGljIEV4cGVjdGVkPFJlZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNv
bnN0IEpTT046Ok9iamVjdCYpOwotICAgIFJlZGlyZWN0QWN0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgIFJlZGlyZWN0QWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgUmVk
aXJlY3RBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlZGlyZWN0QWN0aW9uJikgY29uc3Q7CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4
X3Q+JikgY29uc3Q7CiAgICAgc3RhdGljIFJlZGlyZWN0QWN0aW9uIGRlc2VyaWFsaXplKFNwYW48
Y29uc3QgdWludDhfdD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKaW5kZXggZDcxMjY5Nzdm
NjEwZGZiMTFlNDRiZWU3MjQ4ZjdjM2I4YzA0OTAzMy4uMDM1ZTI4NjdkNDcyNWQ2OGIwZGY5ODc4
NjdkMzdjYjAxMTU1Mzg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCkBAIC0yNzEsNyAr
MjcxLDcgQEAgc3RhdGljIGJvb2wgY29tcGlsZVRvQnl0ZWNvZGUoQ29tYmluZWRVUkxGaWx0ZXJz
JiYgZmlsdGVycywgVW5pdmVyc2FsQWN0aW9uU2V0JiYKIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
ZyYmIHJ1bGVKU09OLCBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiYgcGFyc2VkUnVsZUxp
c3QpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBjYWxsT25NYWluVGhyZWFkKFtydWxlSlNP
TiA9IHJ1bGVKU09OLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlTGlzdCA9IHBhcnNlZFJ1bGVM
aXN0Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBX
VEZNb3ZlKHJ1bGVKU09OKS5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShwYXJzZWRSdWxlTGlzdCkpXSB7CiAgICAgICAgIEFTU0VSVChwYXJz
ZVJ1bGVMaXN0KHJ1bGVKU09OKS52YWx1ZSgpID09IHBhcnNlZFJ1bGVMaXN0KTsKICAgICB9KTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCBiMzMzOWZmNjQ3NGM1N2FmZTRkMTNj
YmYwMzRkNGI1ODJmNDQ4YjA0Li44ODI0MDJjN2I4NTNjMWU1YmM1N2ZlNmFlN2Q1MzdiMDk2Y2Zm
NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBF
eHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046
Ok9iamVjdCYgcnVsZU9iCiAgICAgaWYgKGF1dG8gZXJyb3IgPSBjaGVja0NvbmRpdGlvbigiaWYt
ZnJhbWUtdXJsIl9zLCBnZXRTdHJpbmdMaXN0LCBBY3Rpb25Db25kaXRpb246OklmRnJhbWVVUkwp
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwogCisgICAgdHJpZ2dlci5j
aGVja1ZhbGlkaXR5KCk7CiAgICAgcmV0dXJuIHRyaWdnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNw
cAppbmRleCAzYjRmYTMzOTAxMzAwN2YzNTQyNzg4YTI0NTk1Mjg1MTcwYjM1MzIzLi42MmU0Y2U4
ZDg0N2I2NjQ0MDAwYTY0YjQ4YjI0NmEzN2IyZmI4NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCkBA
IC05NSwyMyArOTUsMjYgQEAgc2l6ZV90IERlc2VyaWFsaXplZEFjdGlvbjo6c2VyaWFsaXplZExl
bmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNlcmlhbGl6ZWRBY3Rpb24KICAgICByZXR1cm4gMSAr
IFZhcmlhbnREZXNlcmlhbGl6ZXI8QWN0aW9uRGF0YT46OnNlcmlhbGl6ZWRMZW5ndGgoc2VyaWFs
aXplZEFjdGlvbnMuc3Vic3Bhbihsb2NhdGlvbiArIDEpLCBzZXJpYWxpemVkQWN0aW9uc1tsb2Nh
dGlvbl0pOwogfQogCi1UcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitUcmln
Z2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gewotICAg
ICAgICB1cmxGaWx0ZXIuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIHVybEZpbHRlcklzQ2FzZVNl
bnNpdGl2ZSwKLSAgICAgICAgdG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLAotICAgICAgICBm
cmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgZmxhZ3MsCi0gICAgICAgIGNv
bmRpdGlvbnMuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OworICAgIHJldHVybiB7IHVybEZpbHRlci5p
c29sYXRlZENvcHkoKSwgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCB0b3BVUkxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUsIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmbGFncywgY3Jvc3NU
aHJlYWRDb3B5KGNvbmRpdGlvbnMpIH07CiB9CiAKLUFjdGlvbiBBY3Rpb246Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CitUcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0
dXJuIHsgV1RGTW92ZSh1cmxGaWx0ZXIpLmlzb2xhdGVkQ29weSgpLCB1cmxGaWx0ZXJJc0Nhc2VT
ZW5zaXRpdmUsIHRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgZnJhbWVVUkxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUsIGZsYWdzLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjb25kaXRpb25zKSkg
fTsKK30KKworQWN0aW9uIEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJl
dHVybiB7IGNyb3NzVGhyZWFkQ29weShtX2RhdGEpIH07CiB9CiAKK0FjdGlvbiBBY3Rpb246Omlz
b2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bV9kYXRhKSkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaApp
bmRleCA3ZTM4ZDBhMmY1NDM0ZTVjOWFmNDNkNTJmYTE5MDFkNDdjODkyN2UzLi43ODdkYmQ3MDU0
NDNhYjUwMjI1NGMwMmVlYThkYzg3MTU2ZGFjYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKQEAgLTQ3LDkg
KzQ3LDEwIEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICBSZXNvdXJjZUZsYWdzIGZsYWdzIHsgMCB9
OwogICAgIFZlY3RvcjxTdHJpbmc+IGNvbmRpdGlvbnM7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBU
cmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFRyaWdnZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xh
dGVkQ29weSgpICYmOwogICAgIAotICAgIH5UcmlnZ2VyKCkKKyAgICB2b2lkIGNoZWNrVmFsaWRp
dHkoKQogICAgIHsKICAgICAgICAgYXV0byBhY3Rpb25Db25kaXRpb24gPSBzdGF0aWNfY2FzdDxB
Y3Rpb25Db25kaXRpb24+KGZsYWdzICYgQWN0aW9uQ29uZGl0aW9uTWFzayk7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYWN0aW9uQ29uZGl0aW9uLCBjb25kaXRpb25zLmlzRW1wdHkoKSA9PSAoYWN0
aW9uQ29uZGl0aW9uID09IEFjdGlvbkNvbmRpdGlvbjo6Tm9uZSkpOwpAQCAtMTMxLDEwICsxMzIs
MTEgQEAgc3RydWN0IEFjdGlvbiB7CiAKICAgICBjb25zdCBBY3Rpb25EYXRhJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgpICYmOwog
CiBwcml2YXRlOgotICAgIGNvbnN0IEFjdGlvbkRhdGEgbV9kYXRhOworICAgIEFjdGlvbkRhdGEg
bV9kYXRhOwogfTsKIAogc3RydWN0IERlc2VyaWFsaXplZEFjdGlvbiA6IHB1YmxpYyBBY3Rpb24g
ewpAQCAtMTU4LDE4ICsxNjAsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFRyaWdnZXImIHRyaWdn
ZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXI7IH0KICAgICBjb25zdCBBY3Rpb24mIGFjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CiAKLSAgICBDb250ZW50RXh0ZW5zaW9uUnVs
ZSBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgbV90cmlnZ2Vy
Lmlzb2xhdGVkQ29weSgpLCBtX2FjdGlvbi5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KKyAgICBD
b250ZW50RXh0ZW5zaW9uUnVsZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbV90
cmlnZ2VyLmlzb2xhdGVkQ29weSgpLCBtX2FjdGlvbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAg
Q29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3Zl
KG1fdHJpZ2dlcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUobV9hY3Rpb24pLmlzb2xhdGVkQ29w
eSgpIH07IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUm
IG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHJpZ2dlciA9PSBvdGhlci5t
X3RyaWdnZXIgJiYgbV9hY3Rpb24gPT0gb3RoZXIubV9hY3Rpb247CiAgICAgfQogCiBwcml2YXRl
OgotICAgIGNvbnN0IFRyaWdnZXIgbV90cmlnZ2VyOwotICAgIGNvbnN0IEFjdGlvbiBtX2FjdGlv
bjsKKyAgICBUcmlnZ2VyIG1fdHJpZ2dlcjsKKyAgICBBY3Rpb24gbV9hY3Rpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bi5oCmluZGV4IGUxZTdhZGI5ODZjYWFkNjcyMTU5YjFlM2MyODBhODlkN2FjMTc5MGYuLjIxZjNj
MWZiMzA3NjI2Y2Y1YjZjNTQ2N2VmNDJhNzBhNGMzN2JjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
LmgKQEAgLTM5LDI3ICszOSwxOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAgU3RyaW5nJiYgcmVsZWFzZU1lc3Nh
Z2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fbWVzc2FnZSk7IH0KIAotICAgIEV4Y2VwdGlvbiBpc29s
YXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29k
ZSwgbV9tZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07Ci0gICAgfQorICAgIEV4Y2VwdGlvbiBpc29s
YXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgbV9tZXNzYWdl
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyBy
ZXR1cm4gRXhjZXB0aW9uIHsgbV9jb2RlLCBXVEZNb3ZlKG1fbWVzc2FnZSkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQogCiBwcml2YXRlOgogICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOwogICAgIFN0cmlu
ZyBtX21lc3NhZ2U7CiB9OwogCi1FeGNlcHRpb24gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbiYmKTsK
LQogaW5saW5lIEV4Y2VwdGlvbjo6RXhjZXB0aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSwgU3RyaW5n
IG1lc3NhZ2UpCiAgICAgOiBtX2NvZGUgeyBjb2RlIH0KICAgICAsIG1fbWVzc2FnZSB7IFdURk1v
dmUobWVzc2FnZSkgfQogewogfQogCi1pbmxpbmUgRXhjZXB0aW9uIGlzb2xhdGVkQ29weShFeGNl
cHRpb24mJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgdmFsdWUuY29kZSgpLCB2
YWx1ZS5yZWxlYXNlTWVzc2FnZSgpLmlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRhLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmMTZjMzI1ODVlNGE4MWQ2YTg1NzI0MjFiYWJhYzc4YjQy
NDlmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV4Y2Vw
dGlvbkRhdGEuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FeGNlcHRpb25EYXRhIEV4Y2Vw
dGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgRXhjZXB0aW9uRGF0YSByZXN1
bHQ7Ci0gICAgcmVzdWx0LmNvZGUgPSBjb2RlOwotICAgIHJlc3VsdC5tZXNzYWdlID0gbWVzc2Fn
ZS5pc29sYXRlZENvcHkoKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oCmluZGV4IGZjNzk4YjM2NGQz
YTc4ZjcxYTNjMDk5YWQ5ZWRmZWIyMWMwNDQ2YWQuLjk4NTMzNzZmMWM0ZGRjZmQxYTUxYWQ0YWVh
YzlkMDY0ZWU5OWY1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuaApAQCAtMzQsNyAr
MzQsOCBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGF0YSB7CiAgICAgRXhjZXB0aW9uQ29kZSBjb2RlOwog
ICAgIFN0cmluZyBtZXNzYWdlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uRGF0YSBp
c29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBFeGNlcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBjb2RlLCBtZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBF
eGNlcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgY29kZSwgV1RGTW92ZSht
ZXNzYWdlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKaW5kZXggYmJmZDk2Njg1MDE2MzFmNTEyMmI5NDBkOWIw
MDA0MjJlOTllZDA1Yy4uMWExOWIwZWU5YTJhNDUyYmY1Nzc0MGEyYWJmZGJkZGJjMjMzOGFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTkwLDggKzkwLDYgQEAgcHJpdmF0ZToKICNl
bmRpZgogfTsKIAotRXhjZXB0aW9uT3I8dm9pZD4gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbk9yPHZv
aWQ+JiYpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9u
T3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKICAgICA6
IG1fdmFsdWUobWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShleGNlcHRpb24pKSkKIHsKQEAgLTE5Mywx
MyArMTkxLDYgQEAgaW5saW5lIEV4Y2VwdGlvbiBFeGNlcHRpb25Pcjx2b2lkPjo6cmVsZWFzZUV4
Y2VwdGlvbigpCiAgICAgcmV0dXJuIFdURk1vdmUobV92YWx1ZS5lcnJvcigpKTsKIH0KIAotaW5s
aW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IGlzb2xhdGVkQ29weShFeGNlcHRpb25Pcjx2b2lkPiYmIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGlz
b2xhdGVkQ29weSh2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgIHJldHVybiB7IH07Ci19
Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSXNFeGNlcHRp
b25PciA9IFdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VD4sIEV4Y2VwdGlvbk9yPjo6dmFs
dWU7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzRXhjZXB0aW9uT3IgPSBJc0V4Y2Vw
dGlvbk9yPFQ+PiBzdHJ1Y3QgVHlwZU9yRXhjZXB0aW9uT3JVbmRlcmx5aW5nVHlwZUltcGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5k
ZXggOTg1ZjdhNjJmMGMxZjM5NzU1ODJlYjNmOWI5ODk3NTE1NjE1NjY3Ny4uZTVhYTI0ZWExZjlk
MmE3ODZkN2JlNmRjM2Q0MTQxZDlmZDE5M2EzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtNDQsMTAgKzQ0LDggQEAgc3RydWN0
IEZpbGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aDsKICAgICBTdHJpbmcg
ZGlzcGxheU5hbWU7CiAKLSAgICBGaWxlSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBGaWxlSW5mb3JtYXRpb24geyBwYXRoLmlzb2xhdGVkQ29w
eSgpLCByZWxhdGl2ZVBhdGguaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29w
eSgpIH07Ci0gICAgfQorICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAm
IHsgcmV0dXJuIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29w
eSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRmlsZUluZm9ybWF0aW9u
IGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShwYXRoKS5pc29sYXRlZENvcHko
KSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGRpc3BsYXlOYW1lKS5pc29s
YXRlZENvcHkoKSB9OyB9CiB9OwogCiBzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3Rv
cjxGaWxlSW5mb3JtYXRpb24+JiBmaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IGVhN2RmYWNmNjJiNzgyNTU5ZDY1ZTNiZmI2YjNkMGNjZGZlMjUyMWMuLmEyOTA2
ZDdjZTdhNjVlMWFjNGNlYWY4ZTY0MjZlMWQwMTM0NjllNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtNDk1LDEzICs0OTUsMTMgQEAgYm9vbCBGaWxlSW5wdXRUeXBl
OjpyZWNlaXZlRHJvcHBlZEZpbGVzV2l0aEltYWdlVHJhbnNjb2RpbmcoY29uc3QgVmVjdG9yPFN0
cmluZz4KICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZmlsZXNDaG9zZW4ocGF0aHMsIHJlcGxhY2Vt
ZW50UGF0aHMpOwogICAgIH07CiAKLSAgICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5k
aXNwYXRjaChbY2FsbEZpbGVzQ2hvc2VuID0gV1RGTW92ZShjYWxsRmlsZXNDaG9zZW4pLCB0cmFu
c2NvZGluZ1BhdGhzID0gdHJhbnNjb2RpbmdQYXRocy5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2Rp
bmdVVEkgPSB0cmFuc2NvZGluZ1VUSS5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNp
b24gPSB0cmFuc2NvZGluZ0V4dGVuc2lvbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRjaChbY2FsbEZpbGVzQ2hvc2Vu
ID0gV1RGTW92ZShjYWxsRmlsZXNDaG9zZW4pLCB0cmFuc2NvZGluZ1BhdGhzID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUodHJhbnNjb2RpbmdQYXRocykpLCB0cmFuc2NvZGluZ1VUSSA9IFdURk1v
dmUodHJhbnNjb2RpbmdVVEkpLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9
IFdURk1vdmUodHJhbnNjb2RpbmdFeHRlbnNpb24pLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBhdXRvIHJl
cGxhY2VtZW50UGF0aHMgPSB0cmFuc2NvZGVJbWFnZXModHJhbnNjb2RpbmdQYXRocywgdHJhbnNj
b2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKICAgICAgICAgQVNTRVJUKHRyYW5zY29k
aW5nUGF0aHMuc2l6ZSgpID09IHJlcGxhY2VtZW50UGF0aHMuc2l6ZSgpKTsKIAotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1vdmUoY2FsbEZp
bGVzQ2hvc2VuKSwgcmVwbGFjZW1lbnRQYXRocyA9IHJlcGxhY2VtZW50UGF0aHMuaXNvbGF0ZWRD
b3B5KCldKCkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0No
b3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwgcmVwbGFjZW1lbnRQYXRocyA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlcGxhY2VtZW50UGF0aHMpKV0gewogICAgICAgICAgICAgY2Fs
bEZpbGVzQ2hvc2VuKHJlcGxhY2VtZW50UGF0aHMpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmlu
ZGV4IGZhOTlhNjBkNmEyNzhkZDlkODJmZmJlOWVlMjhhNzcxMzZkMzIwMTUuLjI4OTYyOGFlYTg5
NWJiMjhjZDA2MzI2NWI1ZTQ1YjY1M2E1MDU4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIHZv
aWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBIVE1M
VG9rZW4mIHRva2VuLCBib29sIHNoCiAgICAgICAgIHJldHVybjsKICAgICBVUkwgdGVtcCB7IG1f
ZG9jdW1lbnRVUkwsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhTdHJpbmdJbXBs
OjpjcmVhdGU4Qml0SWZQb3NzaWJsZShocmVmQXR0cmlidXRlLT52YWx1ZSkpIH07CiAgICAgaWYg
KCFzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVzIHx8IFNlY3VyaXR5UG9saWN5Ojppc0Jhc2VV
UkxTY2hlbWVBbGxvd2VkKHRlbXApKQotICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJM
ID0gdGVtcC5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVS
TCA9IFdURk1vdmUodGVtcCkuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIEhUTUxQcmVsb2FkU2Nhbm5l
cjo6SFRNTFByZWxvYWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCmluZGV4IGNl
ZTU3NmI4M2U0OGQyZmU3YTQzYzQwNzc3ZGQ5YzAxNGEyNWExOGQuLjc0YmQxMjlmMWM4MTIwZDM2
Y2FjNjFlMjc4ZjBhOGRiYzYwNWVlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcApAQCAtMTYxLDE0ICsxNjEsMTQgQEAgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmUKICAgICByZXR1cm4gcG9saWN5OwogfQogCi1Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeSBDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Ojppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgdmFsdWUsCi0gICAgICAg
IHJlcG9ydGluZ0VuZHBvaW50Lmlzb2xhdGVkQ29weSgpLAotICAgICAgICByZXBvcnRPbmx5VmFs
dWUsCi0gICAgICAgIHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHkoKQot
ICAgIH07CisgICAgcmV0dXJuIHsgdmFsdWUsIHJlcG9ydGluZ0VuZHBvaW50Lmlzb2xhdGVkQ29w
eSgpLCByZXBvcnRPbmx5VmFsdWUsIHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludC5pc29sYXRl
ZENvcHkoKSB9OworfQorCitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBDcm9zc09yaWdpbk9wZW5l
clBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyB2YWx1ZSwgV1RGTW92
ZShyZXBvcnRpbmdFbmRwb2ludCkuaXNvbGF0ZWRDb3B5KCksIHJlcG9ydE9ubHlWYWx1ZSwgV1RG
TW92ZShyZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQpLmlzb2xhdGVkQ29weSgpIH07CiB9CiAK
IHZvaWQgYWRkQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lIZWFkZXJzKFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgY29vcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmgKaW5kZXggNTIyMTA2
OTg2NDhlMDgzZmEwZDlmMjljZWZmMDczMWY5ZWU0OThjZC4uMjBlYzUzYjhlYzdlZWJmNGQyYTY5
YWFjNTgwMzU2MmY3MDg1ODRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luT3BlbmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmgKQEAgLTYwLDcgKzYwLDggQEAgc3RydWN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5IHsKICAgICBjb25zdCBTdHJpbmcmIHJlcG9ydGluZ0VuZHBvaW50Rm9yRGlz
cG9zaXRpb24oQ09PUERpc3Bvc2l0aW9uKSBjb25zdDsKICAgICBib29sIGhhc1JlcG9ydGluZ0Vu
ZHBvaW50KENPT1BEaXNwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBDcm9zc09yaWdpbk9wZW5lclBv
bGljeSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBp
c29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGlzb2xh
dGVkQ29weSgpICYmOwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gZGVjb2RlKERlY29kZXImKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyMGRkZWZkZTQyODFi
ZWFjNmJlOTczZjE4NTM0ZGVmOGE1NTlkMWI5Li5mMThkYjg2OTViMzk3YzFiMmEzYmQzMDMxMTFk
ZWI5ZTU1ZTQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTI0NDEsNyArMjQ0MSw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRs
ZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhCiB7CiAgICAgdW5i
bG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewotICAgICAg
ICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxl
ciA9IFdlYWtQdHIgeyBmcmFtZSgpLT5zY3JpcHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAg
dW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIg
PSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gV1RGTW92ZSh1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAg
ICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCAmJiBzY3JpcHRDb250cm9sbGVyKQogICAgICAgICAg
ICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihz
Y3JpcHQpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
ZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRl
eCA4OGMwMzZkMjY0NTFjZjE3NGZiZmY4YzAwMGUyMDVjMWRmZjdkZjY2Li41YWNlMDE1YmQ1ZWY3
MjkzYjYwZWExZTZhNmRlMWU4Y2Y4MWU4OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0
aW9ucy5oCkBAIC00NSw3ICs0NSw4IEBAIHN0cnVjdCBGZXRjaE9wdGlvbnMgewogCiAgICAgRmV0
Y2hPcHRpb25zKCkgPSBkZWZhdWx0OwogICAgIEZldGNoT3B0aW9ucyhEZXN0aW5hdGlvbiwgTW9k
ZSwgQ3JlZGVudGlhbHMsIENhY2hlLCBSZWRpcmVjdCwgUmVmZXJyZXJQb2xpY3ksIFN0cmluZyYm
LCBib29sKTsKLSAgICBGZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
eyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJy
ZXJQb2xpY3ksIGludGVncml0eS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0KKyAgICBG
ZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGRlc3RpbmF0aW9u
LCBtb2RlLCBjcmVkZW50aWFscywgY2FjaGUsIHJlZGlyZWN0LCByZWZlcnJlclBvbGljeSwgaW50
ZWdyaXR5Lmlzb2xhdGVkQ29weSgpLCBrZWVwQWxpdmUgfTsgfQorICAgIEZldGNoT3B0aW9ucyBp
c29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGRlc3RpbmF0aW9uLCBtb2RlLCBjcmVkZW50aWFs
cywgY2FjaGUsIHJlZGlyZWN0LCByZWZlcnJlclBvbGljeSwgV1RGTW92ZShpbnRlZ3JpdHkpLmlz
b2xhdGVkQ29weSgpLCBrZWVwQWxpdmUgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGVQZXJzaXN0ZW50KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGVyc2lz
dGVudChEZWNvZGVyJiwgRmV0Y2hPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q29udGFpbmVyLmgKaW5kZXggNDMxY2YxYzViMmJkMWY5MDNkMTZiZWFmNzcxMjBkNzFhNjEwNTlj
ZC4uOGMwYWQwZjkwNzM3NTk2MDZlYjhjNjk0NjIzMjc2NmVlZjg1MzBmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDb250YWluZXIuaApAQCAtMzYsNyArMzYsOCBAQCBzdHJ1Y3QgUG9s
aWN5Q29udGFpbmVyIHsKICAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBjcm9zc09yaWdpbk9w
ZW5lclBvbGljeTsKICAgICAvLyBGSVhNRTogQ1NQIGxpc3QgYW5kIHJlZmVycmVyIHBvbGljeSBz
aG91bGQgYmUgcGFydCBvZiB0aGUgUG9saWN5Q29udGFpbmVyLgogCi0gICAgUG9saWN5Q29udGFp
bmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENv
cHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRl
ZENvcHkoKSwgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
IFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoY3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UG9saWN5Q29udGFpbmVyPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKQEAgLTQ2LDE0ICs0Nyw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgUG9saWN5Q29udGFpbmVyJiBhLCBjb25zdCBQb2xpY3lDb250YWluZXImIGIpCiAgICAgcmV0
dXJuIGEuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA9PSBiLmNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kgJiYgYS5jcm9zc09yaWdpbk9wZW5lclBvbGljeSA9PSBiLmNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OwogfQogCi1pbmxpbmUgUG9saWN5Q29udGFpbmVyIFBvbGljeUNvbnRhaW5lcjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLAotICAgICAgICBjcm9zc09yaWdpbk9wZW5lclBv
bGljeS5pc29sYXRlZENvcHkoKQotICAgIH07Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIFBvbGljeUNvbnRhaW5lcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cAppbmRleCAwNTc4ZjYzYmViZWIxYTg3ZjQwYWY0N2I5NDMyYjYyZTViZGM0YzIyLi5iM2E5Zjgw
YWY2MDI4M2I5MjRkNDc1OTg2ZTBmNGVmYTZjZDAxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTYwLDUzICs2MCwyNyBA
QCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc1ZhbGlkKCkgY29uc3QKICAgICAgICAg
JiYgKG1fdGltZXNUb1NlbmQuc291cmNlRWFybGllc3RUaW1lVG9TZW5kIHx8IG1fdGltZXNUb1Nl
bmQuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpOwogfQogCi1Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2Vu
Ojppc29sYXRlZENvcHkoKSBjb25zdAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2Fi
bGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgdG9rZW5CYXNlNjRVUkwu
aXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIHNpZ25hdHVyZUJhc2U2NFVSTC5pc29sYXRlZENvcHko
KSwKLSAgICAgICAga2V5SURCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgICAgIGJsaW5kZXIsIHdhaXRpbmdUb2tlbiwgcmVhZHlUb2tlbiwKKyNlbmRp
ZgorICAgICAgICB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKQogICAgIH07CiB9CiAKLVBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAg
IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVw
aGVtZXJhbE5vbmNlOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IG5vbmNl
Lmlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmth
YmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkg
JiYKIHsKICAgICByZXR1cm4gewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBibGluZGVy
LAotICAgICAgICB3YWl0aW5nVG9rZW4sCi0gICAgICAgIHJlYWR5VG9rZW4sCisgICAgICAgIGJs
aW5kZXIsIHdhaXRpbmdUb2tlbiwgcmVhZHlUb2tlbiwKICNlbmRpZgotICAgICAgICB2YWx1ZUJh
c2U2NFVSTC5pc29sYXRlZENvcHkoKQorICAgICAgICBXVEZNb3ZlKHZhbHVlQmFzZTY0VVJMKS5p
c29sYXRlZENvcHkoKQogICAgIH07CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2Fi
bGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSgpIH07Ci19Ci0KLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGlu
YXRpb25VbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K1ByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY29weSB7CiAg
ICAgICAgIG1fc291cmNlSUQsCkBAIC0xMjQsNiArOTgsMjQgQEAgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
cmV0dXJuIGNvcHk7CiB9CiAKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01l
YXN1cmVtZW50Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IGNvcHkgeworICAgICAgICBtX3NvdXJjZUlELAorICAgICAgICBXVEZNb3ZlKG1fc291cmNl
U2l0ZSkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9kZXN0aW5hdGlvblNpdGUp
Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1fc291cmNlQXBwbGljYXRpb25CdW5k
bGVJRCkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV90aW1lT2ZBZENsaWNrKS5p
c29sYXRlZENvcHkoKSwKKyAgICAgICAgbV9pc0VwaGVtZXJhbCwKKyAgICB9OworICAgIGNvcHku
bV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShtX2F0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpOworICAgIGNvcHkubV90aW1lc1RvU2VuZCA9IFdURk1vdmUobV90aW1lc1RvU2VuZCk7Cisg
ICAgY29weS5tX2VwaGVtZXJhbFNvdXJjZU5vbmNlID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bV9lcGhlbWVyYWxTb3VyY2VOb25jZSkpOworICAgIGNvcHkubV9zb3VyY2VVbmxpbmthYmxlVG9r
ZW4gPSBXVEZNb3ZlKG1fc291cmNlVW5saW5rYWJsZVRva2VuKS5pc29sYXRlZENvcHkoKTsKKyAg
ICBjb3B5Lm1fc291cmNlU2VjcmV0VG9rZW4gPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3Nv
dXJjZVNlY3JldFRva2VuKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIGJvb2wgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OmlzTmVpdGhlclNhbWVTaXRlTm9yQ3Jvc3NTaXRlVHJpZ2dlcmluZ0V2
ZW50KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5VVJMLCBjb25zdCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKQogewogICAgIGF1dG8gaXNTYW1lU2l0ZVRyaWdnZXJpbmdFdmVudCA9IHJlZGly
ZWN0RG9tYWluLm1hdGNoZXMoZmlyc3RQYXJ0eVVSTCkgJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0
YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggMDFmODczNDhhYjZhMjFhMDJlNjAzNmIyNThl
ODkyNzI2MGUzZTcxOC4uMWU3ODFhOWRlZGE5MDZhZjMxZWQwYjIwOWI1NTlhNGMxZDRhMjU3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgK
QEAgLTc3LDcgKzc3LDggQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNvdXJjZVNpdGUgeyBy
ZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVNpdGUg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBTb3VyY2VTaXRlIHsgcmVnaXN0cmFibGVE
b21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIFNvdXJjZVNpdGUgeyBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKS5p
c29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJj
ZVNpdGUmIG90aGVyKSBjb25zdAogICAgICAgICB7CkBAIC0xMjMsNyArMTI0LDggQEAgcHVibGlj
OgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgQXR0
cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29w
eSgpIH07IH0KKyAgICAgICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhlcikgY29uc3QKICAgICAg
ICAgewpAQCAtMTcxLDcgKzE3Myw4IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgRXBoZW1lcmFsTm9u
Y2UgewogICAgICAgICBTdHJpbmcgbm9uY2U7CiAKLSAgICAgICAgRXBoZW1lcmFsTm9uY2UgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIEVwaGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyBub25jZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEVw
aGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgpICYmICB7IHJldHVybiB7IFdURk1vdmUobm9uY2Up
Lmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFs
aWQoKSBjb25zdDsKIApAQCAtMTg3LDMxICsxOTAsMzcgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
ICAgIFN0cmluZyB2YWx1ZUJhc2U2NFVSTDsKICAgICAgICAgCi0gICAgICAgIFVubGlua2FibGVU
b2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgVW5saW5rYWJsZVRva2VuIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHko
KSAmJjsKICAgICB9OwogCiAgICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tlbiA6IFVubGlu
a2FibGVUb2tlbiB7Ci0gICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KKyAg
ICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsg
VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAogICAgIHN0cnVj
dCBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiA6IFVubGlua2FibGVUb2tlbiB7Ci0gICAgICAg
IERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAg
ICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0
dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIERlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgVW5saW5r
YWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBTZWNy
ZXRUb2tlbiB7CiAgICAgICAgIFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKICAgICAgICAgU3RyaW5n
IHNpZ25hdHVyZUJhc2U2NFVSTDsKICAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOwotICAg
ICAgICBTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgU2VjcmV0VG9r
ZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHRva2VuQmFzZTY0VVJMLmlzb2xh
dGVkQ29weSgpLCBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksIGtleUlEQmFzZTY0
VVJMLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHRva2VuQmFzZTY0VVJMKS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShzaWduYXR1cmVCYXNlNjRVUkwpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGtleUlE
QmFzZTY0VVJMKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0OwogICAgIH07CiAKICAgICBzdHJ1Y3QgU291cmNlU2VjcmV0VG9rZW4gOiBTZWNyZXRUb2tl
biB7Ci0gICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAg
ICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsg
U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgU291cmNlU2VjcmV0VG9r
ZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5
KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRGVzdGluYXRpb25TZWNyZXRUb2tlbiA6IFNl
Y3JldFRva2VuIHsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRGVzdGluYXRpb25TZWNyZXRUb2tl
biBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29w
eSgpIH07IH0KKyAgICAgICAgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsKQEAgLTQyOSw3ICs0MzgsOCBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBpc29s
YXRlZENvcHkoKSAmJjsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgRXhwZWN0ZWQ8QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KGNvbnN0
IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAKaW5kZXggNmFl
ZTllYmJhNDI3YzI2NzZkNDRlYjBkZTFmYzA0ZDE0ODNjYjA2NS4uZmE2Yzk2ZGU0NThlMDBlMDhi
YTViNDkwMWVjYWE5MjMwODVkMTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VU
aW1pbmcuY3BwCkBAIC02OCwxNSArNjgsMjYgQEAgVmVjdG9yPFJlZjxQZXJmb3JtYW5jZVNlcnZl
clRpbWluZz4+IFJlc291cmNlVGltaW5nOjpwb3B1bGF0ZVNlcnZlclRpbWluZygpIGNvbnMKICAg
ICB9KTsKIH0KIAotUmVzb3VyY2VUaW1pbmcgUmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CitSZXNvdXJjZVRpbWluZyBSZXNvdXJjZVRpbWluZzo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QgJgogewotICAgIHJldHVybiBSZXNvdXJjZVRpbWluZygKKyAgICByZXR1cm4gUmVzb3VyY2VU
aW1pbmcgewogICAgICAgICBtX3VybC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9pbml0aWF0
b3IuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkVGltaW5nLmlzb2xhdGVk
Q29weSgpLAogICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwKICAg
ICAgICAgY3Jvc3NUaHJlYWRDb3B5KG1fc2VydmVyVGltaW5nKQotICAgICk7CisgICAgfTsKK30K
KworUmVzb3VyY2VUaW1pbmcgUmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSgpICYmCit7Cisg
ICAgcmV0dXJuIFJlc291cmNlVGltaW5nIHsKKyAgICAgICAgV1RGTW92ZShtX3VybCkuaXNvbGF0
ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9pbml0aWF0b3IpLmlzb2xhdGVkQ29weSgpLAor
ICAgICAgICBXVEZNb3ZlKG1fcmVzb3VyY2VMb2FkVGltaW5nKS5pc29sYXRlZENvcHkoKSwKKyAg
ICAgICAgV1RGTW92ZShtX25ldHdvcmtMb2FkTWV0cmljcykuaXNvbGF0ZWRDb3B5KCksCisgICAg
ICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fc2VydmVyVGltaW5nKSkKKyAgICB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWlu
Zy5oCmluZGV4IDkwNWZjNjY5MGIxYTc3YzBmNzA5YjcwM2NhNDljZjA4Y2Q3OGExOWMuLjgxMDk2
MmZjNGRhNmEyNzRiOWJmNDdiM2NiNmIxZTZmZjg1NjcwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZVRpbWluZy5oCkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1f
bmV0d29ya0xvYWRNZXRyaWNzOyB9CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MoKSB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogICAgIFZlY3RvcjxS
ZWY8UGVyZm9ybWFuY2VTZXJ2ZXJUaW1pbmc+PiBwb3B1bGF0ZVNlcnZlclRpbWluZygpIGNvbnN0
OwotICAgIFJlc291cmNlVGltaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFJlc291cmNl
VGltaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgUmVzb3VyY2VUaW1pbmcgaXNvbGF0
ZWRDb3B5KCkgJiY7CiAKICAgICB2b2lkIG92ZXJyaWRlSW5pdGlhdG9yTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpIHsgbV9pbml0aWF0b3IgPSBuYW1lOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Nl
cnZlclRpbWluZy5jcHAKaW5kZXggY2UxNzY3MGQ0NzlhYTgxOTAzODJlYWQ5ZDU5M2MwMTkxYTg1
OTVhZS4uYzA5OTBjMWFjZjQ1OTdhZDgwOTcyYzYxMGI2MDZlOTNjOGYyNDJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5jcHAKQEAgLTQ2LDkgKzQ2LDE0IEBAIHZvaWQgU2Vy
dmVyVGltaW5nOjpzZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgIH0KIH0KIAotU2VydmVyVGltaW5nIFNlcnZlclRpbWluZzo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKK1NlcnZlclRpbWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNv
bnN0ICYKIHsKLSAgICByZXR1cm4gU2VydmVyVGltaW5nKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGR1
cmF0aW9uLCBkZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0
aW9uU2V0KTsKKyAgICByZXR1cm4gU2VydmVyVGltaW5nIHsgbmFtZS5pc29sYXRlZENvcHkoKSwg
ZHVyYXRpb24sIGRlc2NyaXB0aW9uLmlzb2xhdGVkQ29weSgpLCBkdXJhdGlvblNldCwgZGVzY3Jp
cHRpb25TZXQgfTsKK30KKworU2VydmVyVGltaW5nIFNlcnZlclRpbWluZzo6aXNvbGF0ZWRDb3B5
KCkgJiYKK3sKKyAgICByZXR1cm4gU2VydmVyVGltaW5nIHsgV1RGTW92ZShuYW1lKS5pc29sYXRl
ZENvcHkoKSwgZHVyYXRpb24sIFdURk1vdmUoZGVzY3JpcHRpb24pLmlzb2xhdGVkQ29weSgpLCBk
dXJhdGlvblNldCwgZGVzY3JpcHRpb25TZXQgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZy5oCmluZGV4IDY3YjQxMDhlZjk0NTkzOWQ4
ZjdmMTNjYmQxYTBjZjBlNjg0Y2I0NDYuLjhiYmU4NTdkNGIyMGM2MjYxZGQ2NDMxMDYwODU1Mzgy
YmE4OGNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmgKQEAgLTQyLDcgKzQy
LDggQEAgc3RydWN0IFNlcnZlclRpbWluZyB7CiAgICAgU2VydmVyVGltaW5nKFN0cmluZyYmIG5h
bWUsIGRvdWJsZSBkdXJhdGlvbiwgU3RyaW5nJiYgZGVzY3JpcHRpb24sIGJvb2wgZHVyYXRpb25T
ZXQsIGJvb2wgZGVzY3JpcHRpb25TZXQpOwogCiAgICAgdm9pZCBzZXRQYXJhbWV0ZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgU2VydmVyVGltaW5nIGlzb2xhdGVkQ29weSgp
IGNvbnN0OworICAgIFNlcnZlclRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFNl
cnZlclRpbWluZyBpc29sYXRlZENvcHkoKSAmJjsKIH07CiAKIGlubGluZSBTZXJ2ZXJUaW1pbmc6
OlNlcnZlclRpbWluZyhTdHJpbmcmJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDUxZmZhNjkzNTJlNWYzMjAwNWNhZmVh
MDlkYzk0Y2EyZmY4ZDQzY2QuLmUyOTU4OWMyZmYyNDAwNDI1MzVjM2MwMzk2ZmM4YjQ3NjI0NDJh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBy
ZXF1ZXN0KTsKIAogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiBy
LXZhbHVlIHRvIGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3Qu
aXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNl
Y3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSksIGNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lDb3B5ID0gV1RGTW92ZShjcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCkuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5
KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weSksIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lDb3B5ID0gV1RGTW92ZShjcm9zc09y
aWdpbkVtYmVkZGVyUG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGVlNDdjYWFhOGQwZGRlM2Y4OTE3OWE3NTYzMWVhMzRj
YmUzNjMxMmIuLjYyMDQwMTBmYWZjZTAzNjNlN2MwZWJiNGQ2MTZjZWZiMTA0MjBhOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtNDIsNyArNDIsOCBAQCBzdHJ1Y3QgQ2xpZW50
T3JpZ2luIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q2xpZW50T3JpZ2luPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgQ2xpZW50T3JpZ2luIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRPcmlnaW4uaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSAmJiB7IHJl
dHVybiB7IFdURk1vdmUodG9wT3JpZ2luKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShjbGllbnRP
cmlnaW4pLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICBib29sIGlzUmVsYXRlZChjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiB0b3BPcmlnaW4gPT0gb3RoZXIg
fHwgY2xpZW50T3JpZ2luID09IG90aGVyOyB9CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiBjbGll
bnRSZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChjbGllbnRPcmlnaW4uaG9zdCk7IH0KQEAgLTYxLDExICs2
Miw2IEBAIGlubGluZSBib29sIENsaWVudE9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBDbGllbnRP
cmlnaW4mIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0b3BPcmlnaW4gPT0gb3RoZXIudG9wT3Jp
Z2luICYmIGNsaWVudE9yaWdpbiA9PSBvdGhlci5jbGllbnRPcmlnaW47CiB9CiAKLWlubGluZSBD
bGllbnRPcmlnaW4gQ2xpZW50T3JpZ2luOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJl
dHVybiB7IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgY2xpZW50T3JpZ2luLmlzb2xhdGVkQ29w
eSgpIH07Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIENsaWVudE9y
aWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCB0
b3BPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmluZGV4IGVjODBh
ZTQzYWJlNzkxMzY5NzhjN2ZkMDAzOTBjMjE2YjY5Yjc3MzguLmRmYTNlODJhNjI4NGJiZGExMDQy
Mzg2MmU2NWUyYjhiZDBmZmVjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJv
Y2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcu
Y3BwCkBAIC04OSw5ICs4OSw5IEBAIFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiBQcm9jZXNz
V2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpCiAgICAgcmV0dXJuIHsgRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIH07CiB9
CiAKLXZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24oY29uc3QgUHJl
d2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mbykKK3ZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdh
cm1XaXRoSW5mb3JtYXRpb24oUHJld2FybUluZm9ybWF0aW9uJiYgcHJld2FybUluZm8pCiB7Ci0g
ICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHJld2FybShwcmV3YXJtSW5mby5mb250
Q2FjaGUpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0oV1RGTW92
ZShwcmV3YXJtSW5mby5mb250Q2FjaGUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNz
V2FybWluZy5oCmluZGV4IGNmMTdlYWExZDlkMGI2ZTNkODE3YjNiMWEyMjRkNWRjYzcwMjAwNGUu
LjRkM2M3ZTExODg1N2E4ZjcwNDVlMmEzMzA3ZGU4YWNjMzVlMDk5MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Byb2Nlc3NXYXJtaW5nLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHByZXdhcm1HbG9iYWxseSgpOwogCiAgICAgc3RhdGljIFByZXdhcm1JbmZvcm1hdGlv
biBjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgcHJld2FybVdp
dGhJbmZvcm1hdGlvbihjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKKyAgICBzdGF0aWMgdm9p
ZCBwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFByZXdhcm1JbmZvcm1hdGlvbiYmKTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwCmluZGV4IGEwOTM0ZDdmNTM1NTdmOTY1ZjBi
NTJkZDM2ODM4ZGQ2YTQ2OTM5ZmYuLjJiM2JmNDcyYzBmMTIwMjMxMmI5M2IyN2Y0NWIxYTk0NmYz
ODZjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcApAQCAtNDUsNyArNDUsNyBA
QCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyhjb25zdAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpOwogfQogCi1Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHko
KSBjb25zdAorQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHk7CiAgICAg
aXNvbGF0ZWRDb3B5Lm1faGVhZGVycyA9IGNyb3NzVGhyZWFkQ29weShtX2hlYWRlcnMpOwpAQCAt
NTMsNCArNTMsMTIgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGEKICAgICByZXR1cm4gaXNvbGF0
ZWRDb3B5OwogfQogCitDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkoKSAmJgoreworICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHk7CisgICAg
aXNvbGF0ZWRDb3B5Lm1faGVhZGVycyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1faGVhZGVy
cykpOworICAgIGlzb2xhdGVkQ29weS5tX2h0dHBTdGF0dXNDb2RlID0gbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICByZXR1cm4gaXNvbGF0ZWRDb3B5OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCmluZGV4IDk0OGQ4Y2M4NzQyOGRlODlhMGZjODA5
OWM2NWJkMDNhY2FjZDVkYjMuLmQ2MDU4ZThjZjk5YzVkYTNkOWM5MmQyZTg2YjZmYjI0OGQ0Y2E4
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCkBAIC00Myw3ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoKSA9IGRlZmF1bHQ7
CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5KCkgJiY7
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGRlY29kZShEZWNvZGVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCBhYjY4ZGFjYmZhNzQwY2E0OGVj
MWMzNDUyYTg2MDIxMTY2ZDk3MTMwLi5mYTIyNDBmZTg2ZDQwNGY4ZjM0NzFlNDFhNjhiNzQ2MTU5
MDFkOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTQ2LDE0ICs0
NiwxMiBAQCBjbGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNzIEljb247CiAKIHN0cnVjdCBGaWxlQ2hv
b3NlckZpbGVJbmZvIHsKLSAgICBGaWxlQ2hvb3NlckZpbGVJbmZvIGlzb2xhdGVkQ29weSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4geyBwYXRoLmlzb2xhdGVkQ29weSgpLCByZXBsYWNl
bWVudFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpIH07Ci0g
ICAgfQotCi0gICAgY29uc3QgU3RyaW5nIHBhdGg7Ci0gICAgY29uc3QgU3RyaW5nIHJlcGxhY2Vt
ZW50UGF0aDsKLSAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWU7CisgICAgRmlsZUNob29zZXJG
aWxlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgcGF0aC5pc29sYXRlZENv
cHkoKSwgcmVwbGFjZW1lbnRQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgRmlsZUNob29zZXJGaWxlSW5mbyBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IFdURk1vdmUocGF0aCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUocmVwbGFjZW1l
bnRQYXRoKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShkaXNwbGF5TmFtZSkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQorCisgICAgU3RyaW5nIHBhdGg7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aDsK
KyAgICBTdHJpbmcgZGlzcGxheU5hbWU7CiB9OwogCiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5n
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9w
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaApp
bmRleCA0MjhiZmUwZTYyYzc4Y2NjMjg5MDUyOGIwMTg1ODlhYjQ4MmUzOThiLi44NWMwMDg1MGNl
Y2M0YzAxNjc2NjA3NzFjOWVhZDJkZDY5NzU1ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmgKQEAgLTQzLDYgKzQzLDkgQEAgc3RydWN0IE1l
ZGlhU2VsZWN0aW9uT3B0aW9uIHsKICAgICB7CiAgICAgfQogCisgICAgTWVkaWFTZWxlY3Rpb25P
cHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpLCB0eXBlIH07IH0KKyAgICBNZWRpYVNlbGVjdGlvbk9wdGlvbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZGlzcGxheU5hbWUpLmlzb2xhdGVkQ29weSgpLCB0
eXBlIH07IH0KKwogICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBUeXBlIHR5cGUgeyBUeXBl
OjpSZWd1bGFyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVn
aXN0cmFibGVEb21haW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9t
YWluLmgKaW5kZXggN2NlM2Y2MTM2YzMxN2RhM2ZiZWMyMjQwMWY1YmYyODAxNjQ5NWM2MC4uYmNl
OGM0MzAzNDBmZTY3MGJjMjQ5Y2RmMTdiOTg2OWE0NGFiODYyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBAIC02Nyw3ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1hdGNoZXMob3JpZ2luLmhvc3QpOwogICAgIH0KIAotICAgIFJlZ2lz
dHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9t
YWluIHsgbV9yZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0
cmFibGVEb21haW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBSZWdpc3RyYWJsZURv
bWFpbiB7IG1fcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIFJlZ2lz
dHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgV1RGTW92ZShtX3JlZ2lzdHJhYmxlRG9tYWluKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAg
ICBSZWdpc3RyYWJsZURvbWFpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAg
ICAgIDogbV9yZWdpc3RyYWJsZURvbWFpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRl
eCAxYmZhM2ZkNWYyYjNhMjZhOWE0YWVlOTU1M2I2MmI2ODZlYmUyMjQxLi4xMmNlM2U5NmRkMzEy
YzYxM2Q2MTgyYjA5ZDI3OTE1OGJiZjY5ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEZvbnRD
YWNoZTo6cHJld2FybUdsb2JhbGx5KCkKIHsKIH0KIAotdm9pZCBGb250Q2FjaGU6OnByZXdhcm0o
Y29uc3QgUHJld2FybUluZm9ybWF0aW9uJikKK3ZvaWQgRm9udENhY2hlOjpwcmV3YXJtKFByZXdh
cm1JbmZvcm1hdGlvbiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg5YjRlMTkyN2E3OGUwM2YzNDgzNWE4NmNjOTAyYjFhMjY3
YWEyNjkuLjQ5ZDMwZDY0NjlhZGYxZjRhZTA4ODZlZGNmZTI0ZjJlZWQ0N2QyNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxsaW1p
dHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hGdW5jdGlvbnMuaD4KQEAgLTM1NiwxMyArMzU3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2s7CiAKICAgICAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0gICAgICAgIFByZXdhcm1JbmZvcm1hdGlvbiBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICAgICAgUHJld2FybUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoc2VlbkZhbWlsaWVzKSwgY3Jvc3NU
aHJlYWRDb3B5KGZvbnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrKSB9OyB9CisgICAgICAg
IFByZXdhcm1JbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHNlZW5GYW1pbGllcykpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShm
b250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjaykpIH07IH0KIAogICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByZXdhcm1JbmZvcm1h
dGlvbj4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogICAgIFByZXdhcm1JbmZvcm1hdGlvbiBj
b2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBwcmV3YXJtKGNvbnN0
IFByZXdhcm1JbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcHJld2FybShQcmV3YXJtSW5mb3JtYXRp
b24mJik7CiAgICAgc3RhdGljIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7CiAKIHByaXZhdGU6CkBA
IC00MzEsMTEgKzQzMyw2IEBAIGlubGluZSBib29sIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0
aW9uOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gc2VlbkZhbWlsaWVzLmlzRW1wdHkoKSAm
JiBmb250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjay5pc0VtcHR5KCk7CiB9CiAKLWlubGlu
ZSBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1h
dGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBzZWVuRmFtaWxpZXMu
aXNvbGF0ZWRDb3B5KCksIGZvbnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrLmlzb2xhdGVk
Q29weSgpIH07Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRDYWNoZTo6
UHJld2FybUluZm9ybWF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNG
YW1pbGllcy5jcHAKaW5kZXggYjBiM2Q0NTJkNTYxOWM2OThhOWIyNTlhYWFmMjUzZTQxM2QwMzIz
My4uMGM0NWIyMDVjOWE4Y2YwZmM1OTc5NTUwOGZmNjA0OTYyM2EzYjRhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGll
cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
b250R2VuZXJpY0ZhbWlsaWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIu
aD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
OTIsMjMgKzkzLDI5IEBAIEZvbnRHZW5lcmljRmFtaWxpZXM6OkZvbnRHZW5lcmljRmFtaWxpZXMo
KQogICAgIH0pOwogfQogCi1Gb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFtaWxpZXM6
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitGb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFt
aWxpZXM6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBGb250R2VuZXJpY0ZhbWlsaWVz
IGNvcHk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc3RhbmRhcmRGb250RmFtaWx5TWFw
KQotICAgICAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXks
IGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVl
IDogbV9zZXJpZkZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9zZXJpZkZvbnRGYW1pbHlN
YXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAg
IGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZpeGVkRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29w
eS5tX2ZpeGVkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5p
c29sYXRlZENvcHkoKSk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc2Fuc1NlcmlmRm9u
dEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXAuYWRkKGtl
eVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0
byAma2V5VmFsdWUgOiBtX2N1cnNpdmVGb250RmFtaWx5TWFwKQotICAgICAgICBjb3B5Lm1fY3Vy
c2l2ZUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0
ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZhbnRhc3lGb250RmFtaWx5
TWFwKQotICAgICAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtl
eSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAma2V5VmFs
dWUgOiBtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKQotICAgICAgICBjb3B5Lm1fcGljdG9ncmFw
aEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRD
b3B5KCkpOworICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENv
cHkobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9zZXJpZkZvbnRGYW1pbHlN
YXAgPSBjcm9zc1RocmVhZENvcHkobV9zZXJpZkZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9m
aXhlZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkobV9maXhlZEZvbnRGYW1pbHlNYXAp
OworICAgIGNvcHkubV9zYW5zU2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1f
c2Fuc1NlcmlmRm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFw
ID0gY3Jvc3NUaHJlYWRDb3B5KG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXApOworICAgIGNvcHkubV9m
YW50YXN5Rm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2ZhbnRhc3lGb250RmFtaWx5
TWFwKTsKKyAgICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENv
cHkobV9waWN0b2dyYXBoRm9udEZhbWlseU1hcCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK0Zv
bnRHZW5lcmljRmFtaWxpZXMgRm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KCkgJiYK
K3sKKyAgICBGb250R2VuZXJpY0ZhbWlsaWVzIGNvcHk7CisgICAgY29weS5tX3N0YW5kYXJkRm9u
dEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fc3RhbmRhcmRGb250RmFtaWx5
TWFwKSk7CisgICAgY29weS5tX3NlcmlmRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKG1fc2VyaWZGb250RmFtaWx5TWFwKSk7CisgICAgY29weS5tX2ZpeGVkRm9udEZhbWls
eU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZml4ZWRGb250RmFtaWx5TWFwKSk7Cisg
ICAgY29weS5tX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApKTsKKyAgICBjb3B5Lm1fY3Vyc2l2ZUZvbnRGYW1p
bHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2N1cnNpdmVGb250RmFtaWx5TWFwKSk7
CisgICAgY29weS5tX2ZhbnRhc3lGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUobV9mYW50YXN5Rm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9waWN0b2dyYXBoRm9udEZh
bWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fcGljdG9ncmFwaEZvbnRGYW1pbHlN
YXApKTsKICAgICByZXR1cm4gY29weTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oCmluZGV4IDYwNzcwY2Q2NGMz
OTE4YjAwMDUxZTc0NTdiYmVmNDM3NGYyYWVjMjQuLmVlNDdkZGNjM2M0YzJjNDA4OTc1ZGI3NDk5
NjRkNDczMWQ2Y2Y1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3MgRm9u
dEdlbmVyaWNGYW1pbGllcyB7CiBwdWJsaWM6CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcygpOwog
Ci0gICAgRm9udEdlbmVyaWNGYW1pbGllcyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBGb250
R2VuZXJpY0ZhbWlsaWVzIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgRm9udEdlbmVyaWNG
YW1pbGllcyBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIGNvbnN0IFN0cmluZyYgc3RhbmRhcmRG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogICAgIGNvbnN0
IFN0cmluZyYgZml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCmluZGV4IGYyYzk2NDBkNDZkM2E5MzU2MTE0ZjMzYWIxNDA1MmM3ZmVjMjc3OGMuLjRiM2E1
ZTE0Mjg3YjU3M2MzMjk0YWEwYWE2YzZhYjJlYzIzMDI0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM3Myw3ICszNzMsNyBA
QCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAg
ICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJhdGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFt
ZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2Fj
aGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVy
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBX
VEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdR
dWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gV1RGTW92ZShzb3VyY2VVUkwpLmlz
b2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJh
bWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcXVldWUgbWF5
IGhhdmUgYmVlbiBjbG9zZWQgaWYgYWZ0ZXIgd2UgZ290IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSwg
c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpIHdhcyBjYWxsZWQuCiAgICAgICAgICAgICAgICAgaWYg
KHByb3RlY3RlZERlY29kaW5nUXVldWUucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGlu
Z1F1ZXVlICYmIHByb3RlY3RlZERlY29kZXIucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNv
ZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1l
Q29tbWl0UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IGFkOWEyMzdhYTljNjA0ODU0NzQ1NTFjMjQ1ODZkMmNhOGE1NzYzMDIuLmU2MTc3
OTgxZjFlNTgzZThmNGQ3MWIxMzFlYjE2MjcyYTU4ZTY3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTk1Niw3ICs5NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0oKTsKIAogICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNMb2NrIH07Ci0g
ICAgICAgIHJldHVybiAqbV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnMuYWRkKGZvbGRlZC5p
c29sYXRlZENvcHkoKSwgV1RGTW92ZShpbnN0YWxsZWRGb250RmFtaWx5KSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICByZXR1cm4gKm1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmFkZChX
VEZNb3ZlKGZvbGRlZCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaW5zdGFsbGVkRm9udEZhbWls
eSkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKICAgICBjb25zdCBJbnN0YWxsZWRGb250JiBm
b250Rm9yUG9zdFNjcmlwdE5hbWUoY29uc3QgQXRvbVN0cmluZyYgcG9zdFNjcmlwdE5hbWUpCkBA
IC0xNjMwLDcgKzE2MzAsNyBAQCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250Q2Fj
aGU6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdAogICAgIHJldHVybiB7IGNvcHlU
b1ZlY3RvcihtX3NlZW5GYW1pbGllc0ZvclByZXdhcm1pbmcpLCBjb3B5VG9WZWN0b3IobV9mb250
TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFja0ZvclByZXdhcm1pbmcpIH07CiB9CiAKLXZvaWQg
Rm9udENhY2hlOjpwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9y
bWF0aW9uKQordm9pZCBGb250Q2FjaGU6OnByZXdhcm0oUHJld2FybUluZm9ybWF0aW9uJiYgcHJl
d2FybUluZm9ybWF0aW9uKQogewogICAgIGlmIChwcmV3YXJtSW5mb3JtYXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CkBAIC0xNjQwLDcgKzE2NDAsNyBAQCB2b2lkIEZvbnRDYWNoZTo6
cHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKIAog
ICAgIGF1dG8mIGRhdGFiYXNlID0gRm9udERhdGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1Vz
ZXJJbnN0YWxsZWRGb250cygpOwogCi0gICAgbV9wcmV3YXJtUXVldWUtPmRpc3BhdGNoKFsmZGF0
YWJhc2UsIHByZXdhcm1JbmZvcm1hdGlvbiA9IHByZXdhcm1JbmZvcm1hdGlvbi5pc29sYXRlZENv
cHkoKV0geworICAgIG1fcHJld2FybVF1ZXVlLT5kaXNwYXRjaChbJmRhdGFiYXNlLCBwcmV3YXJt
SW5mb3JtYXRpb24gPSBXVEZNb3ZlKHByZXdhcm1JbmZvcm1hdGlvbikuaXNvbGF0ZWRDb3B5KCld
IHsKICAgICAgICAgZm9yIChhdXRvJiBmYW1pbHkgOiBwcmV3YXJtSW5mb3JtYXRpb24uc2VlbkZh
bWlsaWVzKQogICAgICAgICAgICAgZGF0YWJhc2UuY29sbGVjdGlvbkZvckZhbWlseShmYW1pbHkp
OwogCkBAIC0xNjgyLDcgKzE2ODIsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHJld2FybUdsb2JhbGx5
KCkKIAogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvOwogICAg
IHByZXdhcm1JbmZvLnNlZW5GYW1pbGllcyA9IFdURk1vdmUoZmFtaWxpZXMpOwotICAgIEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0ocHJld2FybUluZm8pOworICAgIEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0oV1RGTW92ZShwcmV3YXJtSW5mbykpOwog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDExNzI4OTRm
ZWQyNWI4ZjRmNWMzMzMwYWYzMmUyNDI4OGE3YzU4NjMuLmEwYzU3MTA3NTg5NmQ2NDU0N2U3Mjk4
NGRmMWEwODMxOGQ4NGRlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAt
NDMsNiArNDMsNyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1w
b3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgorI2ltcG9ydCA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW1wb3J0IDx3dGYvV29y
a1F1ZXVlLmg+CiAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgpAQCAtNDgyLDE5
ICs0ODMsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxh
eUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXlGYXMKICAgICAgICAgY2xpZW50LT5jYW5Q
bGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9CiAKLXN0YXRpYyBW
ZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGlzb2xhdGVkQ29weShjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zKQotewotICAgIFZlY3RvcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj4gb3B0aW9uc0NvcHk7Ci0gICAgb3B0aW9uc0NvcHkucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShvcHRpb25zLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBvcHRpb24gOiBvcHRpb25zKQot
ICAgICAgICBvcHRpb25zQ29weS51bmNoZWNrZWRBcHBlbmQoeyBvcHRpb24uZGlzcGxheU5hbWUu
aXNvbGF0ZWRDb3B5KCksIG9wdGlvbi50eXBlIH0pOwotICAgIHJldHVybiBvcHRpb25zQ29weTsK
LX0KLQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYgKFdlYlRocmVhZElz
Q3VycmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNl
bGVjdGVkSW5kZXhdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3B0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShvcHRpb25z
KSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTA3LDcgKzQ5OSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChjb25zdCBWCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25P
cHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIGlmIChXZWJU
aHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlv
bnMpLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHko
b3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24u
aAppbmRleCA2ZTFlOGQxZmNiYTc4OTBkOTY0NzYwZTg0MzYxYTU1ZjEwOThiNzlmLi5kYjgzM2Yz
MGJiZTdlNjE0ZDIxOWU3ZTMxNTc2MzJjMmYwYTNmMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3Vy
YXRpb24uaApAQCAtMzYsMTcgKzM2LDIzIEBAIHN0cnVjdCBBdWRpb0NvbmZpZ3VyYXRpb24gewog
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7CiAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzcGF0aWFsUmVuZGVyaW5nOwogCi0gICAgQXVkaW9Db25maWd1cmF0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBj
b25zdCAmOworICAgIEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdWRpb0NvbmZp
Z3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgQXVkaW9Db25maWd1cmF0
aW9uIEF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK2lubGluZSBBdWRp
b0NvbmZpZ3VyYXRpb24gQXVkaW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAm
CiB7CiAgICAgcmV0dXJuIHsgY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCksIGNoYW5uZWxzLmlz
b2xhdGVkQ29weSgpLCBiaXRyYXRlLCBzYW1wbGVyYXRlLCBzcGF0aWFsUmVuZGVyaW5nIH07CiB9
CiAKK2lubGluZSBBdWRpb0NvbmZpZ3VyYXRpb24gQXVkaW9Db25maWd1cmF0aW9uOjppc29sYXRl
ZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUoY29udGVudFR5cGUpLmlzb2xhdGVk
Q29weSgpLCBXVEZNb3ZlKGNoYW5uZWxzKS5pc29sYXRlZENvcHkoKSwgYml0cmF0ZSwgc2FtcGxl
cmF0ZSwgc3BhdGlhbFJlbmRlcmluZyB9OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBBdWRpb0NvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAppbmRleCBlZmFjNGM3OTRkY2ZlYjQ3MzE1NmJk
M2Y0NWZkZTU5Y2ZmZjA4NTM4Li45NDNiOTA1YjY4NTI5YTY3MzY3Y2FhM2I4NDc0YTg5YWJlMDRj
NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaApAQCAtMzUsMTcgKzM1LDIzIEBAIHN0
cnVjdCBNZWRpYUNvbmZpZ3VyYXRpb24gewogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1
cmF0aW9uPiB2aWRlbzsKICAgICBzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmlndXJhdGlvbj4gYXVk
aW87CiAKLSAgICBNZWRpYUNvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
TWVkaWFDb25maWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgTWVkaWFDb25m
aWd1cmF0aW9uIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKLWlubGluZSBNZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0aW9u
Ojppc29sYXRlZENvcHkoKSBjb25zdAoraW5saW5lIE1lZGlhQ29uZmlndXJhdGlvbiBNZWRpYUNv
bmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBjcm9z
c1RocmVhZENvcHkodmlkZW8pLCAgY3Jvc3NUaHJlYWRDb3B5KGF1ZGlvKSB9OwogfQogCitpbmxp
bmUgTWVkaWFDb25maWd1cmF0aW9uIE1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkg
JiYKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh2aWRlbykpLCAgY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoYXVkaW8pKSB9OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBNZWRpYUNvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaAppbmRleCBlODYzMWYyY2YxNzY3ZWFm
Yjg1ZDU1NmEwZGU3YjI1NGMwNWIyYjg3Li4xMzAxZWM2NjNkM2I5NmIzMzJjODk3NTg2YjBhM2Ez
YWI5ZTc1NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaApAQCAtNDMsMTcgKzQzLDIz
IEBAIHN0cnVjdCBWaWRlb0NvbmZpZ3VyYXRpb24gewogICAgIHN0ZDo6b3B0aW9uYWw8SGRyTWV0
YWRhdGFUeXBlPiBoZHJNZXRhZGF0YVR5cGU7CiAgICAgc3RkOjpvcHRpb25hbDxUcmFuc2ZlckZ1
bmN0aW9uPiB0cmFuc2ZlckZ1bmN0aW9uOwogCi0gICAgVmlkZW9Db25maWd1cmF0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBj
b25zdCAmOworICAgIFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWaWRlb0NvbmZp
Z3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgVmlkZW9Db25maWd1cmF0
aW9uIFZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK2lubGluZSBWaWRl
b0NvbmZpZ3VyYXRpb24gVmlkZW9Db25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAm
CiB7CiAgICAgcmV0dXJuIHsgY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCksIHdpZHRoLCBoZWln
aHQsIGJpdHJhdGUsIGZyYW1lcmF0ZSwgYWxwaGFDaGFubmVsLCBjb2xvckdhbXV0LCBoZHJNZXRh
ZGF0YVR5cGUsIHRyYW5zZmVyRnVuY3Rpb24gfTsKIH0KIAoraW5saW5lIFZpZGVvQ29uZmlndXJh
dGlvbiBWaWRlb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJu
IHsgV1RGTW92ZShjb250ZW50VHlwZSkuaXNvbGF0ZWRDb3B5KCksIHdpZHRoLCBoZWlnaHQsIGJp
dHJhdGUsIGZyYW1lcmF0ZSwgYWxwaGFDaGFubmVsLCBjb2xvckdhbXV0LCBoZHJNZXRhZGF0YVR5
cGUsIHRyYW5zZmVyRnVuY3Rpb24gfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgVmlkZW9Db25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNmEzYWE4N2Q4OTMxYzRiODBjYTBkZWE3MzgwNmI1
NzBjODY3OGU1OC4uMzRlMzAyNWY3NDFjNmE5ZTlmMjNjNDRiNDc4OTMxYjc4ZDgwOTU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTQyLDE5ICs0MiwyNyBAQCBzdHJ1Y3QgUlRDRGF0YUNo
YW5uZWxJbml0IHsKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKICAgICBS
VENQcmlvcml0eVR5cGUgcHJpb3JpdHkgeyBSVENQcmlvcml0eVR5cGU6OkxvdyB9OwogCi0gICAg
UlRDRGF0YUNoYW5uZWxJbml0IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFJUQ0RhdGFDaGFu
bmVsSW5pdCBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBp
c29sYXRlZENvcHkoKSAmJjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSVENEYXRhQ2hhbm5lbEluaXQ+IGRlY29kZShEZWNvZGVyJik7CiB9Owog
Ci1pbmxpbmUgUlRDRGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKK2lubGluZSBSVENEYXRhQ2hhbm5lbEluaXQgUlRDRGF0YUNoYW5uZWxJbml0
Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgYXV0byBjb3B5ID0gKnRoaXM7CiAgICAg
Y29weS5wcm90b2NvbCA9IHByb3RvY29sLmlzb2xhdGVkQ29weSgpOwogICAgIHJldHVybiBjb3B5
OwogfQogCitpbmxpbmUgUlRDRGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNv
bGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBhdXRvIGNvcHkgPSBXVEZNb3ZlKCp0aGlzKTsKKyAgICBj
b3B5LnByb3RvY29sID0gV1RGTW92ZShjb3B5LnByb3RvY29sKS5pc29sYXRlZENvcHkoKTsKKyAg
ICByZXR1cm4gY29weTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBSVENEYXRh
Q2hhbm5lbEluaXQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZCA8PCBtYXhQYWNrZXRMaWZlVGltZSA8PCBtYXhSZXRyYW5zbWl0cyA8PCBw
cm90b2NvbCA8PCBuZWdvdGlhdGVkIDw8IGlkIDw8IHByaW9yaXR5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCA4OGNhMjdlYWI4
NTAxZTQ0ZGIwNzViZThhYTFkZTUyZTZkZWYyMGJkLi5lYjZmOWFmZmFlNzgzODU0YTUwM2ZjNWM5
ZDhjYjgwNzc1MjVmNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKQogICAg
IG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmXSB7CiAgICAgICAgIG5ld0F1ZGlvRGV2
aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXMoKTsKICAgICB9KTsKLSAg
ICBzZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKS5pc29sYXRl
ZENvcHkoKSk7CisgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShuZXdBdWRpb0RldmljZXMpKSk7CiB9CiAKIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25I
YW5kbGVyCiAKICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVk
aW9EZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwotICAgICAg
ICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRy
KFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2Vz
ID0gV1RGTW92ZShuZXdBdWRpb0RldmljZXMpLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKG1ha2VC
bG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiksIG5ld0F1ZGlv
RGV2aWNlcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdB
dWRpb0RldmljZXMpKTsKICAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKICAgICAgICAgfSkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCA4ZTM3NThmZTY2YWI4
NmE2NmFiMmQ3MDk3ZDRjZjU0ZjI5N2MwZmI5Li4zZTUxZmUxNTY3NWQ3MzNiY2NlZjY5Y2M5OGE1
MDM3Y2U2Y2Q1NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMTgw
LDcgKzE4MCw3IEBAIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpyZXRyaWV2ZUNhcHR1cmVEZXZpY2VzKCkKIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
cmVmcmVzaENhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRldmljZUxpc3QgPSBy
ZXRyaWV2ZUNhcHR1cmVEZXZpY2VzKCkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7ICAgICAg
ICAgICAgCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGV2aWNlTGlzdCA9IGNyb3NzVGhyZWFkQ29weShyZXRyaWV2
ZUNhcHR1cmVEZXZpY2VzKCkpXSgpIG11dGFibGUgewogICAgICAgICAgICAgYm9vbCBkZXZpY2VI
YXNDaGFuZ2VkID0gbV9kZXZpY2VzLnNpemUoKSAhPSBkZXZpY2VMaXN0LnNpemUoKTsKICAgICAg
ICAgICAgIGlmICghZGV2aWNlSGFzQ2hhbmdlZCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGNwdHIgPSAwOyBjcHRyIDwgZGV2aWNlTGlzdC5zaXplKCk7ICsrY3B0cikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXgg
ZDgwYzViZDZjMDNkZjUyYWQxMTM5Y2U0MzRjNGE0YTUzMzgxNGVhNy4uYmQ1MTZjZjZjNjVmMmRi
NDA1MThmMGNkMWQ3ZTk3ZThmNzRlMzg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC00Miw3ICs0Miw3IEBAIEhUVFBIZWFk
ZXJNYXA6OkhUVFBIZWFkZXJNYXAoKQogewogfQogCi1IVFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJN
YXA6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitIVFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJNYXA6Omlz
b2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBIVFRQSGVhZGVyTWFwIG1hcDsKICAgICBtYXAu
bV9jb21tb25IZWFkZXJzID0gY3Jvc3NUaHJlYWRDb3B5KG1fY29tbW9uSGVhZGVycyk7CkBAIC01
MCw2ICs1MCwxNCBAQCBIVFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1hcDsKIH0KIAorSFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFw
Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIEhUVFBIZWFkZXJNYXAgbWFwOworICAgIG1hcC5t
X2NvbW1vbkhlYWRlcnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2NvbW1vbkhlYWRlcnMp
KTsKKyAgICBtYXAubV91bmNvbW1vbkhlYWRlcnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSht
X3VuY29tbW9uSGVhZGVycykpOworICAgIHJldHVybiBtYXA7Cit9CisKIFN0cmluZyBIVFRQSGVh
ZGVyTWFwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIEhUVFBIZWFkZXJO
YW1lIGhlYWRlck5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oCmluZGV4IGZhMDM3ZmNmOTY4MTczYzBjYTkzZDQ3MWMzZGQ0MWRjNDg3MGIw
Y2IuLjFmZTE5ZDMxMThiMTNiYWE4YjljYjA0YjNmN2RlNjk5YmQ4MGZmN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC00MCw3ICs0
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgSFRUUEhlYWRlck5hbWUga2V5OwogICAgICAgICBTdHJp
bmcgdmFsdWU7CiAKLSAgICAgICAgQ29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIHsga2V5ICwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBDb21tb25I
ZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGtleSAsIHZhbHVlLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICAgICAgQ29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpICYmIHsg
cmV0dXJuIHsga2V5ICwgV1RGTW92ZSh2YWx1ZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29t
bW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOwogCkBAIC01MSw3ICs1Miw4IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIGtleTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgIFVu
Y29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsga2V5Lmlzb2xhdGVk
Q29weSgpICwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBVbmNvbW1vbkhlYWRl
ciBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpICwg
dmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBVbmNvbW1vbkhlYWRlciBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoa2V5KS5pc29sYXRlZENvcHkoKSAsIFdURk1v
dmUodmFsdWUpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVuY29tbW9uSGVhZGVyPiBkZWNvZGUo
RGVjb2RlciYpOwogCkBAIC0xMzQsNyArMTM2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIEhUVFBIZWFkZXJNYXAoKTsKIAogICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1
aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgotICAgIFdFQkNPUkVfRVhQT1JU
IEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
SFRUUEhlYWRlck1hcCBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JU
IEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2NvbW1vbkhlYWRlcnMuaXNFbXB0eSgpICYmIG1fdW5jb21tb25IZWFk
ZXJzLmlzRW1wdHkoKTsgfQogICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25I
ZWFkZXJzLnNpemUoKSArIG1fdW5jb21tb25IZWFkZXJzLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAK
aW5kZXggNmU0NWFhMTc2ZDA3ZjIyOTFiYmUyMzU1MDc3NjViYWI1ODhhYzFmNC4uMzg0ZGM3MTQ3
MmJiNjAxMWQ2Y2RlMDMxYWE4ZTgyYzVhMjJjMWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xhaW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERlZmVycmVkUHIKICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdICgpIG11dGFibGUgewog
ICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCk7CiAgICAgICAgIGNvbm5lY3Rpb24tPmNsYWltKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJv
bWlzZVBvaW50ZXIsIHJlc3VsdCA9IGlzb2xhdGVkQ29weShXVEZNb3ZlKHJlc3VsdCkpXShhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3By
b21pc2VQb2ludGVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0o
YXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIHByb21pc2Ug
PSBzY29wZS5jbGllbnRzKCkubV9wZW5kaW5nUHJvbWlzZXMudGFrZShwcm9taXNlUG9pbnRlcikp
IHsKICAgICAgICAgICAgICAgICAgICAgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+IHBlbmRpbmdQ
cm9taXNlIHsgcHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpIH07CiAgICAgICAgICAgICAgICAgICAg
IHBlbmRpbmdQcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcAppbmRleCA0NTY3MWNmMjdhMzQxZWM3NTkxMmM1ZjAxNDI5M2IxNGVkOGZhYjhm
Li5lNjI4ZWYwZWE0NzBmYTI2ZTY1YWUzNDk2ZWZmZmJkMWUxNzY0NTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnNjaGVkdWxlUHVzaENoYW5nZXMoVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YT4mCiAgICAgICAgICAgICB1cGRhdGVkUmVnaXN0cmF0aW9ucy5jbGVhcigpOwogICAgICAgICAg
ICAgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuY2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgc3VjY2VzcywgcHVzaENvdW50ZXIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zID0gV1RGTW92ZSh1
cGRhdGVkUmVnaXN0cmF0aW9ucykuaXNvbGF0ZWRDb3B5KCksIHJlbW92ZWRSZWdpc3RyYXRpb25z
ID0gV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucykuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBzdWNjZXNzLCBwdXNoQ291bnRlciwgdXBkYXRlZFJlZ2lzdHJhdGlvbnMgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZSh1cGRhdGVkUmVnaXN0cmF0aW9ucykpLCByZW1vdmVkUmVn
aXN0cmF0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlbW92ZWRSZWdpc3RyYXRpb25z
KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MgJiYgKHB1c2hDb3VudGVyICsgMSkgPT0g
bV9wdXNoQ291bnRlcikgewogICAgICAgICAgICAgICAgIC8vIFdlIHJldHJ5IHdyaXRpbmcgb25j
ZSBpZiBubyBvdGhlciBjaGFuZ2Ugd2FzIHB1c2hlZC4KICAgICAgICAgICAgICAgICBzY2hlZHVs
ZVB1c2hDaGFuZ2VzKFdURk1vdmUodXBkYXRlZFJlZ2lzdHJhdGlvbnMpLCBXVEZNb3ZlKHJlbW92
ZWRSZWdpc3RyYXRpb25zKSwgU2hvdWxkUmV0cnk6Ok5vLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAppbmRl
eCBlYTVjYTZkYjM0NmE2MjE3ODIwNzI2MzFhMzRmMjAxNzI2Yzc3NTY4Li4zMzZmZWE4NmViOGJi
NzhjYTM2ZmM0MzI5ODRlZWE0YzIyYjNiYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRQYXJhbWV0ZXJzLmgKQEAgLTM5LDE3ICszOSw4IEBAIHN0cnVjdCBXb3JrbGV0UGFy
YW1ldGVycyB7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBzZXR0aW5nc1ZhbHVlczsKICAgICBib29s
IGlzQXVkaW9Db250ZXh0UmVhbFRpbWU7CiAKLSAgICBXb3JrbGV0UGFyYW1ldGVycyBpc29sYXRl
ZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHdpbmRv
d1VSTC5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgICAgIGpzUnVudGltZUZsYWdzLAotICAgICAg
ICAgICAgc2FtcGxlUmF0ZSwKLSAgICAgICAgICAgIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
Ci0gICAgICAgICAgICBzZXR0aW5nc1ZhbHVlcy5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgICAg
IGlzQXVkaW9Db250ZXh0UmVhbFRpbWUKLSAgICAgICAgfTsKLSAgICB9CisgICAgV29ya2xldFBh
cmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHdpbmRvd1VSTC5pc29s
YXRlZENvcHkoKSwganNSdW50aW1lRmxhZ3MsIHNhbXBsZVJhdGUsIGlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCksIHNldHRpbmdzVmFsdWVzLmlzb2xhdGVkQ29weSgpLCBpc0F1ZGlvQ29udGV4dFJl
YWxUaW1lIH07IH0KKyAgICBXb3JrbGV0UGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSAmJiB7IHJl
dHVybiB7IFdURk1vdmUod2luZG93VVJMKS5pc29sYXRlZENvcHkoKSwganNSdW50aW1lRmxhZ3Ms
IHNhbXBsZVJhdGUsIFdURk1vdmUoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
c2V0dGluZ3NWYWx1ZXMpLmlzb2xhdGVkQ29weSgpLCBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lIH07
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGNjZDFmMTEyNWZlNjg5
NjY2OThhOGY1ZjZkN2IwZjQxZjBlNTEzNTUuLmE1NTI5NWYzMDU1MGRmMjc0MDRiY2U0Mjk5ZDJm
ZTM3OWIwZTQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNDU1LDE1ICs0NTUsMTUgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb1BDTURhdGFiYXNlSWZOZWNl
c3NhcnkoKQogICAgIH0KIAogICAgIGlmICghdW5hdHRyaWJ1dGVkLmlzRW1wdHkoKSB8fCAhYXR0
cmlidXRlZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgdW5hdHRyaWJ1dGVkID0gdW5hdHRyaWJ1dGVkLmlzb2xh
dGVkQ29weSgpLCBhdHRyaWJ1dGVkID0gYXR0cmlidXRlZC5pc29sYXRlZENvcHkoKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBz
dG9yZSgpIH0sIHVuYXR0cmlidXRlZCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHVuYXR0cmli
dXRlZCkpLCBhdHRyaWJ1dGVkID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoYXR0cmlidXRlZCkp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RvcmUt
Pm5ldHdvcmtTZXNzaW9uKCk7CiAgICAgICAgICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byYgbWFuYWdlciA9IG5ldHdv
cmtTZXNzaW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgICAgICAgICAgZm9yIChh
dXRvJiBwY20gOiBXVEZNb3ZlKGF0dHJpYnV0ZWQpKQorICAgICAgICAgICAgZm9yIChhdXRvJiYg
cGNtIDogV1RGTW92ZShhdHRyaWJ1dGVkKSkKICAgICAgICAgICAgICAgICBtYW5hZ2VyLm1pZ3Jh
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdURk1vdmUocGNtKSwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpOwotICAg
ICAgICAgICAgZm9yIChhdXRvJiBwY20gOiBXVEZNb3ZlKHVuYXR0cmlidXRlZCkpCisgICAgICAg
ICAgICBmb3IgKGF1dG8mJiBwY20gOiBXVEZNb3ZlKHVuYXR0cmlidXRlZCkpCiAgICAgICAgICAg
ICAgICAgbWFuYWdlci5taWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3Rv
cmFnZShXVEZNb3ZlKHBjbSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpVbmF0dHJpYnV0ZWQpOwogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDY2MWIxNTYzZWM2NGI2NmU3OGYxZjhkNTU0YzZk
OWRmMzczMWFlNmIuLmM1Y2Q5ZjE0ZGZhMjY3NjZkZTMxMTAyY2RjNDI0MWNmYTY5MWE0NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpA
QCAtNzYsMTQgKzc3LDE2IEBAIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CiAgICAgSGFzaE1h
cDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+IGRvbWFpbnNXaXRoU3RvcmFnZUFj
Y2VzczsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5p
c29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc29sYXRlZENv
cHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5
KCksIGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcyB9OyB9CisgICAgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IpLCBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciksIGNyb3NzVGhyZWFkQ29weShk
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSksIGNyb3NzVGhyZWFkQ29weShk
b21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpIH07IH0KKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29w
eShXVEZNb3ZlKGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcikpLCBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKSksIGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KSks
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNXaXRoU3RvcmFnZUFjY2VzcykpIH07IH0K
IH07CiBzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURh
dGFGb3IgewogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1Rv
RGVsZXRlQWxsQ29va2llc0ZvcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcjsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yOwogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9t
YWluc1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWlu
c1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5pc29sYXRlZENvcHkoKSwgZG9tYWlu
c1RvRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBpc29sYXRlZENv
cHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFs
bENvb2tpZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9u
bHlDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0
ZVN0cmljdEZvcikgfTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmlj
dFdlYnNpdGVEYXRhRm9yIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0ZvcikpLCBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IpKSwgY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURh
dGFGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRW5mb3JjZVNhbWVTaXRl
U3RyaWN0Rm9yKSkgfTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGRvbWFp
bnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1
dEh0dHBPbmx5Q29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29v
a2llV2Vic2l0ZURhdGFGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0
cmljdEZvci5pc0VtcHR5KCk7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmluZGV4IGE3YWI5MzgwOWNj
YjdmNjVmNDhiMWE1MTljZDk2N2FkYWI1YzZkNTguLjBhMDRhZWU0NWZhYmI2M2RlYzJmNzk3NmI3
NjFkMzY2MTcwMTYwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cgogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbkRh
dGFzID0gb3JpZ2luRGF0YXMuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldICgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgb3JpZ2luRGF0YXMgPSBjcm9zc1RocmVhZENvcHkob3JpZ2luRGF0YXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcAppbmRleCA1NTRmZDJkOGYwZGQxYjlj
Nzk4ZTA2ODU2MTJkMWI4ZDhmMDZjN2UyLi5kNTJhZDZhNDkyNjlmY2MwYWU0MTI0N2U4MTZmZmRk
YjBkMWUzZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcApAQCAtMjYsMTYgKzI2LDI4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWJ1Z0luZm8uaCIKIAorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorCiBuYW1l
c3BhY2UgV2ViS2l0OjpQQ00gewogCi1EZWJ1Z0luZm8gRGVidWdJbmZvOjppc29sYXRlZENvcHko
KSBjb25zdAorRGVidWdJbmZvIERlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgorewor
ICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShtZXNzYWdlcykgfTsKK30KKworRGVidWdJbmZv
IERlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYKIHsKLSAgICByZXR1cm4geyBtZXNzYWdlcy5p
c29sYXRlZENvcHkoKSB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1l
c3NhZ2VzKSkgfTsKIH0KIAotRGVidWdJbmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0RlYnVnSW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3Nh
Z2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBtZXNzYWdlTGV2ZWws
IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkgfTsKIH0KIAorRGVidWdJbmZvOjpNZXNzYWdlIERlYnVn
SW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBtZXNzYWdl
TGV2ZWwsIFdURk1vdmUobWVzc2FnZSkuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0OjpQQ00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0lu
Zm8uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaAppbmRleCA1MjU3Nzg0YjRlMTlm
MzgwYWEyMDZiYzJhNzY4OGRjOWY1ZWUzZGNmLi4wYjk5ODRjNDY0ZGNlMTlhYTM0ZDVkZThkZjYz
YWJlZTNhMjZmZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oCkBAIC0zNiwxMiArMzYsMTQgQEAg
c3RydWN0IERlYnVnSW5mbyB7CiAgICAgICAgIEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZl
bDsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAKLSAgICAgICAgTWVzc2FnZSBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICAgICAgTWVzc2FnZSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAg
ICAgICBNZXNzYWdlIGlzb2xhdGVkQ29weSgpICYmOwogICAgIH07CiAKICAgICBWZWN0b3I8TWVz
c2FnZT4gbWVzc2FnZXM7CiAKLSAgICBEZWJ1Z0luZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgRGVidWdJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgRGVidWdJbmZvIGlzb2xh
dGVkQ29weSgpICYmOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNw
cAppbmRleCBhYjUwOTQwODE3MjQ0ZDcyOTFiMTk4MTg0MzZlNWQ1MTgyZWE0OTY0Li5iYjQ0Y2Rm
MThhYTgzODY5M2M0MmM4MzBkMWMwODJhZDVlYmFkNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFN0b3JlOjphbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8VwogICAgICAgICBWZWN0b3I8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGNvbnZlcnRlZEF0dHJpYnV0aW9uczsK
ICAgICAgICAgaWYgKG1fZGF0YWJhc2UpCiAgICAgICAgICAgICBjb252ZXJ0ZWRBdHRyaWJ1dGlv
bnMgPSBtX2RhdGFiYXNlLT5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsK
LSAgICAgICAgcG9zdFRhc2tSZXBseShbY29udmVydGVkQXR0cmlidXRpb25zID0gY29udmVydGVk
QXR0cmlidXRpb25zLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBwb3N0VGFza1JlcGx5KFtj
b252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjb252ZXJ0ZWRB
dHRyaWJ1dGlvbnMpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29udmVydGVkQXR0cmlidXRpb25zKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKaW5kZXggYzZkNGJjYjcwMjI5OTkwMmFhODE4NDdhYjk4NmJlOGMzMTlkN2Y5Zi4uNjVjYTRj
MGMxNGY2MWE4YzMyYTk0YzQ0NGJmNDEzNjczYTVhZTBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpA
QCAtNTUxLDcgKzU1Miw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250
ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgaWYgKCFwYXJz
ZWRSdWxlcy5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIsIHBhcnNlZFJ1bGVzLmVycm9yKCkpOwogICAgIAotICAgIG1fY29tcGlsZVF1ZXVlLT5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVu
dGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29uID0ganNvbi5pc29sYXRlZENvcHkoKSwgcGFyc2Vk
UnVsZXMgPSBwYXJzZWRSdWxlcy52YWx1ZSgpLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBt
X3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgbV9jb21waWxlUXVldWUtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCksIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxl
cyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHBhcnNlZFJ1bGVzKS52YWx1ZSgpKSwgc3RvcmVQ
YXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGgg
PSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBmYWxzZSk7CiAKICAgICAg
ICAgYXV0byByZXN1bHQgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24pLCBXVEZNb3ZlKHBh
cnNlZFJ1bGVzKSwgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Nb2RhbENvbnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllci5tbQppbmRleCAy
ZjAzNzQ4YjdjYjE4ZmFhODkyYTljMmVhY2QzYjcxNjU5YTNmY2ExLi45NDEyMWU3Y2YxZGVmZDBh
NTc1MDY4MDY5MjhlNjRkYzEyM2FiNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Nb2RhbENvbnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGFsQ29udGFpbmVyQ29udHJvbENsYXNzaWZpZXIu
bW0KQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGF0aWMgVmVjdG9yPE1vZGFsQ29udGFpbmVyQ29udHJv
bFR5cGU+IGNvbXB1dGVQcmVkaWN0aW9ucyhNTE1vZGVsICptb2RlbCwgVmVjdAogdm9pZCBNb2Rh
bENvbnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyOjpjbGFzc2lmeShWZWN0b3I8U3RyaW5nPiYmIHRl
eHRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNb2RhbENvbnRhaW5lckNvbnRyb2xU
eXBlPiYmKT4mJiBjb21wbGV0aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHRleHRzID0gdGV4dHMuaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSgpIG11dGFibGUgeworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCB0ZXh0cyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRl
eHRzKSksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSgpIG11dGFibGUgewogICAg
ICAgICBsb2FkTW9kZWxJZk5lZWRlZCgpOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBwcmVkaWN0aW9ucyA9IGNvbXB1
dGVQcmVkaWN0aW9ucyhtX21vZGVsLmdldCgpLCBXVEZNb3ZlKHRleHRzKSldKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUocHJlZGljdGlvbnMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmlu
ZGV4IDQzMzkzNDYwMTUzNWEwZDQ2ZTNlODk4N2I4MzY4NDIzODcwNjA1YzcuLjUzYTZiYTQzOTkw
M2NkZDliZmE3MTVjNzAwYTRkZmIzMjdmYWU3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1lZGlhQWNjZXNzaWJpbGl0eVByZWZlcmVuY2Vz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbd2Vh
a1Byb2Nlc3MgPSBXZWFrUHRyIHsgcHJvY2VzcyB9XSB7CiAgICAgICAgIGF1dG8gY2FwdGlvbkRp
c3BsYXlNb2RlID0gV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnBsYXRm
b3JtQ2FwdGlvbkRpc3BsYXlNb2RlKCk7CiAgICAgICAgIGF1dG8gcHJlZmVycmVkTGFuZ3VhZ2Vz
ID0gV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnBsYXRmb3JtUHJlZmVy
cmVkTGFuZ3VhZ2VzKCk7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrUHJvY2Vzcywg
Y2FwdGlvbkRpc3BsYXlNb2RlLCBwcmVmZXJyZWRMYW5ndWFnZXMgPSBXVEZNb3ZlKHByZWZlcnJl
ZExhbmd1YWdlcykuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3dlYWtQcm9jZXNzLCBjYXB0aW9uRGlzcGxheU1vZGUsIHByZWZlcnJlZExhbmd1YWdlcyA9IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKHByZWZlcnJlZExhbmd1YWdlcykpXSB7CiAgICAgICAgICAg
ICBpZiAod2Vha1Byb2Nlc3MpCiAgICAgICAgICAgICAgICAgd2Vha1Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNldE1lZGlhQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKGNhcHRp
b25EaXNwbGF5TW9kZSwgcHJlZmVycmVkTGFuZ3VhZ2VzKSwgMCk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMmZkZGI4NDk1MmQwODg5
YTg4MjU0ZTQ3N2JmZjIzMjBiNjBmMDFkYy4uN2M3YmYxNzI4YzE0YmQzZDhiOGEwNjhlY2IwODFk
NDA4ODU3MDJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03MTk4LDEzICs3MTk4LDEzIEBAIGJvb2wgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTCiAgICAgYXV0byB0
cmFuc2NvZGluZ1VUSSA9IFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSh0cmFuc2NvZGluZ01JTUVU
eXBlKTsKICAgICBhdXRvIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gV2ViQ29yZTo6TUlNRVR5cGVS
ZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUodHJhbnNjb2RpbmdNSU1FVHlw
ZSk7CiAKLSAgICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZpbGVVUkxzID0gZmlsZVVSTHMuaXNvbGF0
ZWRDb3B5KCksIHRyYW5zY29kaW5nVVJMcyA9IHRyYW5zY29kaW5nVVJMcy5pc29sYXRlZENvcHko
KSwgdHJhbnNjb2RpbmdVVEkgPSB0cmFuc2NvZGluZ1VUSS5pc29sYXRlZENvcHkoKSwgdHJhbnNj
b2RpbmdFeHRlbnNpb24gPSB0cmFuc2NvZGluZ0V4dGVuc2lvbi5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKKyAgICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZpbGVVUkxzID0gY3Jvc3NUaHJlYWRD
b3B5KGZpbGVVUkxzKSwgdHJhbnNjb2RpbmdVUkxzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dHJhbnNjb2RpbmdVUkxzKSksIHRyYW5zY29kaW5nVVRJID0gV1RGTW92ZSh0cmFuc2NvZGluZ1VU
SSkuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gV1RGTW92ZSh0cmFuc2Nv
ZGluZ0V4dGVuc2lvbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgICAgIGF1dG8gdHJhbnNjb2RlZFVSTHMgPSB0
cmFuc2NvZGVJbWFnZXModHJhbnNjb2RpbmdVUkxzLCB0cmFuc2NvZGluZ1VUSSwgdHJhbnNjb2Rp
bmdFeHRlbnNpb24pOwogICAgICAgICBBU1NFUlQodHJhbnNjb2RpbmdVUkxzLnNpemUoKSA9PSB0
cmFuc2NvZGVkVVJMcy5zaXplKCkpOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVVUkxz
ID0gZmlsZVVSTHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlZFVS
THMuaXNvbGF0ZWRDb3B5KCldKCkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlVVJMcyA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZpbGVVUkxzKSksIHRyYW5zY29kZWRVUkxzID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUodHJhbnNjb2RlZFVSTHMpKV0oKSB7CiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRl
bnNpb25GaWxlczsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZVVS
THMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IGU5NzhiOWQ5MDliYWRlYzY0NDlhNjUzMWU1Yzc1ODNhZTcxOGM3YWMuLjQ4
MjE5ODczOWNmZGE1ZmNlNjYyMTA3YzRlMjdlMzUxZDM4NDcyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTY5NSw5ICs2OTUsOSBAQCB2b2lkIFdlYlByb2Nl
c3M6OnByZXdhcm1HbG9iYWxseSgpCiAgICAgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdh
cm1HbG9iYWxseSgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9tYWluSW5m
b3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mb3Jt
YXRpb24pCit2b2lkIFdlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oV2Vi
Q29yZTo6UHJld2FybUluZm9ybWF0aW9uJiYgcHJld2FybUluZm9ybWF0aW9uKQogewotICAgIFdl
YkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKHByZXdhcm1JbmZv
cm1hdGlvbik7CisgICAgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3Jt
YXRpb24oV1RGTW92ZShwcmV3YXJtSW5mb3JtYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcmIHVybFNjaGVt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDk2ZTZjZWUyMjE4ZjZh
OWIwMDUzZGQ5ZmZhMGQ1ZDgzY2QzYjY0YzUuLjY2ODgzMTBkOTYxNTk3YWU3NjY5ODhkYTZhM2E4
ZWI3ODU1OWU0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDEx
LDcgKzQxMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9p
ZCBwcmV3YXJtR2xvYmFsbHkoKTsKLSAgICB2b2lkIHByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRp
b24oY29uc3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uJik7CisgICAgdm9pZCBwcmV3YXJt
V2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYmKTsKIAog
I2lmIFVTRShPU19TVEFURSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlvbmFs
U3RhdGVGb3JEaWFnbm9zdGljUmVwb3J0KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDBjYWRiNTA0
MmJhMTYxMDc3Zjk0NDlhOTczZGNmOTgzMmQzNzAyYWUuLjc3NDNkNTA4ODUyNGJjZTVkN2QzZjM0
OTJmYzc3MTdhODdhYTEwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXIKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4mIGRhdGFiYXNlcykKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMg
PSBkYXRhYmFzZXMuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hUYXNr
UmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRp
ZmllciwgZGF0YWJhc2VzID0gY3Jvc3NUaHJlYWRDb3B5KGRhdGFiYXNlcyldKCkgbXV0YWJsZSB7
CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoZGF0YWJhc2VzKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZGJjYmNmNDUxN2JmYWJkNDExM2QzZDIyNWQ1MTY3YzMxYjUzOTA5NC4uNGVjYmY5OWEzZjcwZGRj
MTM4ODFhZGIxMzIxYThiNDg4NmNjZGI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAzLTA1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcg
b2YgZGF0YSBhY3Jvc3MgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwYW5kIHRlc3QgY292ZXJhZ2UgZm9yIGNyb3NzVGhyZWFkQ29weSgp
IGFuZCBtYWtlIHN1cmUgdGhlIG9wdGltaXphdGlvbnMgYXJlIHdvcmtpbmcKKyAgICAgICAgd2hl
biBjYWxsZWQgb24gYSByLXZhbHVlIHJlZmVyZW5jZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wMy0wNCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbnVsbCBjaGVjayBmb3IgcGF0
aCBpbiBtYWtlQWxsRGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAppbmRleCBjZDRkYzIzYzdiNmFlZmI0Yzk5ZmY1
MDg0MDMzMjIxMTMzM2Q4ZGViLi40ZDY0NzUwNjhjM2RhYmRkMjRjMzFmYzEwZGQ4Yjg0MGIxMDRi
ZDNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVh
ZENvcGllci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC04
NSw0ICs4OCwxMTggQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIENvcHlSVk9wdGlvbmFs
U3RyaW5nSGF2aW5nVHdvUmVmKQogICAgIEVYUEVDVF9UUlVFKGNvcHktPmltcGwoKS0+aGFzT25l
UmVmKCkpOwogfQogCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgUGFpcikKK3sKKyAgICBz
dGQ6OnBhaXIgcGFpcjEgeyAiZm9vIl9zdHIsICJiYXIiX3N0ciB9OworICAgIGF1dG8qIGZpcnN0
U3RyaW5nSW1wbCA9IHBhaXIxLmZpcnN0LmltcGwoKTsKKyAgICBhdXRvKiBzZWNvbmRTdHJpbmdJ
bXBsID0gcGFpcjEuc2Vjb25kLmltcGwoKTsKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENv
cHkocGFpcjEpOworICAgIEVYUEVDVF9FUShjb3B5LCBwYWlyMSk7CisgICAgRVhQRUNUX05FKGNv
cHkuZmlyc3QuaW1wbCgpLCBmaXJzdFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9ORShjb3B5LnNl
Y29uZC5pbXBsKCksIHNlY29uZFN0cmluZ0ltcGwpOworCisgICAgc3RkOjpwYWlyIHBhaXIyIHsg
ImZvbyJfc3RyLCAiYmFyIl9zdHIgfTsKKyAgICBmaXJzdFN0cmluZ0ltcGwgPSBwYWlyMi5maXJz
dC5pbXBsKCk7CisgICAgc2Vjb25kU3RyaW5nSW1wbCA9IHBhaXIyLnNlY29uZC5pbXBsKCk7Cisg
ICAgY29weSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHBhaXIyKSk7CisgICAgRVhQRUNUX0VR
KGNvcHksIHBhaXIxKTsKKyAgICBFWFBFQ1RfRVEoY29weS5maXJzdC5pbXBsKCksIGZpcnN0U3Ry
aW5nSW1wbCk7CisgICAgRVhQRUNUX0VRKGNvcHkuc2Vjb25kLmltcGwoKSwgc2Vjb25kU3RyaW5n
SW1wbCk7CisgICAgRVhQRUNUX1RSVUUocGFpcjIuZmlyc3QuaXNOdWxsKCkpOworICAgIEVYUEVD
VF9UUlVFKHBhaXIyLnNlY29uZC5pc051bGwoKSk7Cit9CisKK1RFU1QoV1RGX0Nyb3NzVGhyZWFk
Q29waWVyLCBWYXJpYW50KQoreworICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFVSTD4gdmFyaWFu
dDsKKyAgICB2YXJpYW50ID0gImZvbyJfc3RyOworICAgIGF1dG8qIGltcGwgPSBzdGQ6OmdldDxT
dHJpbmc+KHZhcmlhbnQpLmltcGwoKTsKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHko
dmFyaWFudCk7CisgICAgQVNTRVJUX0VRKGNvcHksIHZhcmlhbnQpOworICAgIEVYUEVDVF9ORShz
dGQ6OmdldDxTdHJpbmc+KGNvcHkpLmltcGwoKSwgaW1wbCk7CisKKyAgICB2YXJpYW50ID0gVVJM
IHsgImJhciJfc3RyIH07CisgICAgaW1wbCA9IHN0ZDo6Z2V0PFVSTD4odmFyaWFudCkuc3RyaW5n
KCkuaW1wbCgpOworICAgIGNvcHkgPSBjcm9zc1RocmVhZENvcHkodmFyaWFudCk7CisgICAgQVNT
RVJUX0VRKGNvcHksIHZhcmlhbnQpOworICAgIEVYUEVDVF9ORShzdGQ6OmdldDxVUkw+KGNvcHkp
LnN0cmluZygpLmltcGwoKSwgaW1wbCk7CisKKyAgICB2YXJpYW50ID0gImZvbyJfc3RyOworICAg
IGltcGwgPSBzdGQ6OmdldDxTdHJpbmc+KHZhcmlhbnQpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUodmFyaWFudCkpOworICAgIEFTU0VSVF9FUShzdGQ6OmdldDxT
dHJpbmc+KGNvcHkpLCAiZm9vIl9zdHIpOworICAgIEVYUEVDVF9FUShzdGQ6OmdldDxTdHJpbmc+
KGNvcHkpLmltcGwoKSwgaW1wbCk7CisKKyAgICB2YXJpYW50ID0gVVJMIHsgImJhciJfc3RyIH07
CisgICAgaW1wbCA9IHN0ZDo6Z2V0PFVSTD4odmFyaWFudCkuc3RyaW5nKCkuaW1wbCgpOworICAg
IGNvcHkgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh2YXJpYW50KSk7CisgICAgQVNTRVJUX0VR
KHN0ZDo6Z2V0PFVSTD4oY29weSksIFVSTCB7ICJiYXIiX3N0ciB9KTsKKyAgICBFWFBFQ1RfRVEo
c3RkOjpnZXQ8VVJMPihjb3B5KS5zdHJpbmcoKS5pbXBsKCksIGltcGwpOworfQorCitURVNUKFdU
Rl9Dcm9zc1RocmVhZENvcGllciwgSGFzaE1hcCkKK3sKKyAgICBIYXNoTWFwPENTdHJpbmcsIFN0
cmluZ0ltcGwqPiBpbXBsczsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcDsKKyAg
ICBtYXAuYWRkKCJmb28iX3N0ciwgImZvb1ZhbHVlIl9zdHIpOworICAgIG1hcC5hZGQoImJhciJf
c3RyLCAiYmFyVmFsdWUiX3N0cik7CisgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBtYXAp
IHsKKyAgICAgICAgaW1wbHMuYWRkKGtleS51dGY4KCksIGtleS5pbXBsKCkpOworICAgICAgICBp
bXBscy5hZGQodmFsdWUudXRmOCgpLCB2YWx1ZS5pbXBsKCkpOworICAgIH0KKworICAgIGF1dG8g
Y29weSA9IGNyb3NzVGhyZWFkQ29weShtYXApOworICAgIEVYUEVDVF9FUShjb3B5LCBtYXApOwor
ICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogY29weSkgeworICAgICAgICBFWFBFQ1RfTkUo
a2V5LmltcGwoKSwgaW1wbHMuZ2V0KGtleS51dGY4KCkpKTsKKyAgICAgICAgRVhQRUNUX05FKHZh
bHVlLmltcGwoKSwgaW1wbHMuZ2V0KHZhbHVlLnV0ZjgoKSkpOworICAgIH0KKworICAgIGF1dG8g
Y29weTIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtYXApKTsKKyAgICBFWFBFQ1RfRVEoY29w
eTIsIGNvcHkpOworICAgIEVYUEVDVF9UUlVFKG1hcC5pc0VtcHR5KCkpOworICAgIGZvciAoYXV0
byYgW2tleSwgdmFsdWVdIDogY29weTIpIHsKKyAgICAgICAgRVhQRUNUX0VRKGtleS5pbXBsKCks
IGltcGxzLmdldChrZXkudXRmOCgpKSk7CisgICAgICAgIEVYUEVDVF9FUSh2YWx1ZS5pbXBsKCks
IGltcGxzLmdldCh2YWx1ZS51dGY4KCkpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0Nyb3NzVGhy
ZWFkQ29waWVyLCBIYXNoU2V0KQoreworICAgIEhhc2hNYXA8Q1N0cmluZywgU3RyaW5nSW1wbCo+
IGltcGxzOworCisgICAgSGFzaFNldDxTdHJpbmc+IHNldDsKKyAgICBzZXQuYWRkKCJmb28iX3N0
cik7CisgICAgc2V0LmFkZCgiYmFyIl9zdHIpOworICAgIGZvciAoYXV0byYgaXRlbSA6IHNldCkK
KyAgICAgICAgaW1wbHMuYWRkKGl0ZW0udXRmOCgpLCBpdGVtLmltcGwoKSk7CisKKyAgICBhdXRv
IGNvcHkgPSBjcm9zc1RocmVhZENvcHkoc2V0KTsKKyAgICBFWFBFQ1RfRVEoY29weSwgc2V0KTsK
KyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBjb3B5KQorICAgICAgICBFWFBFQ1RfTkUoaXRlbS5pbXBs
KCksIGltcGxzLmdldChpdGVtLnV0ZjgoKSkpOworCisgICAgYXV0byBjb3B5MiA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHNldCkpOworICAgIEVYUEVDVF9FUShjb3B5MiwgY29weSk7CisgICAg
RVhQRUNUX1RSVUUoc2V0LmlzRW1wdHkoKSk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogY29weTIp
CisgICAgICAgIEVYUEVDVF9FUShpdGVtLmltcGwoKSwgaW1wbHMuZ2V0KGl0ZW0udXRmOCgpKSk7
Cit9CisKK1RFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBPcHRpb25hbCkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gb3B0aW9uYWw7CisgICAgb3B0aW9uYWwgPSAiZm9vIl9zdHI7Cisg
ICAgYXV0byogaW1wbCA9IG9wdGlvbmFsLT5pbXBsKCk7CisKKyAgICBhdXRvIGNvcHkgPSBjcm9z
c1RocmVhZENvcHkob3B0aW9uYWwpOworICAgIEVYUEVDVF9FUShjb3B5LCBvcHRpb25hbCk7Cisg
ICAgRVhQRUNUX05FKGNvcHktPmltcGwoKSwgaW1wbCk7CisKKyAgICBhdXRvIGNvcHkyID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUob3B0aW9uYWwpKTsKKyAgICBFWFBFQ1RfRVEoY29weTIsIGNv
cHkpOworICAgIEVYUEVDVF9FUShjb3B5Mi0+aW1wbCgpLCBpbXBsKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5j
cHAKaW5kZXggNWQ0NmMzY2JlOTNhY2NlMzZkYTlmNmUyYzBhNTQ3M2VmZTliYjA1ZC4uMGIxNjY3
MGE0MjIxYzBkN2UyYmQ0ZGVhY2MyZWQ1ZDc3ZTM2ZDRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpbmNsdWRlICJNb3ZlT25seS5oIgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTEyOCw3ICsxMjksNyBAQCBURVNU
KFdURl9WZWN0b3IsIENvbnN0cnVjdFdpdGhGcm9tU3RyaW5nKQogICAgIEVYUEVDVF9UUlVFKHMz
LmlzTnVsbCgpKTsKIH0KIAotVEVTVChXVEZfVmVjdG9yLCBJc29sYXRlQ29weSkKK1RFU1QoV1RG
X1ZlY3RvciwgSXNvbGF0ZWRDb3B5KQogewogICAgIFN0cmluZyBzMSA9ICJzMSI7CiAgICAgU3Ry
aW5nIHMyID0gInMyIjsKQEAgLTE0MCw3ICsxNDEsNyBAQCBURVNUKFdURl9WZWN0b3IsIElzb2xh
dGVDb3B5KQogICAgIGF1dG8qIGRhdGExID0gdmVjdG9yMVswXS5pbXBsKCk7CiAgICAgYXV0byog
ZGF0YTIgPSB2ZWN0b3IxWzFdLmltcGwoKTsKIAotICAgIGF1dG8gdmVjdG9yMiA9IHZlY3RvcjEu
aXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0byB2ZWN0b3IyID0gY3Jvc3NUaHJlYWRDb3B5KHZlY3Rv
cjEpOwogCiAgICAgRVhQRUNUX1RSVUUoInMxIiA9PSB2ZWN0b3IyWzBdKTsKICAgICBFWFBFQ1Rf
VFJVRSgiczIiID09IHZlY3RvcjJbMV0pOwpAQCAtMTQ4LDcgKzE0OSw3IEBAIFRFU1QoV1RGX1Zl
Y3RvciwgSXNvbGF0ZUNvcHkpCiAgICAgRVhQRUNUX0ZBTFNFKGRhdGExID09IHZlY3RvcjJbMF0u
aW1wbCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoZGF0YTIgPT0gdmVjdG9yMlsxXS5pbXBsKCkpOwog
Ci0gICAgYXV0byB2ZWN0b3IzID0gV1RGTW92ZSh2ZWN0b3IxKS5pc29sYXRlZENvcHkoKTsKKyAg
ICBhdXRvIHZlY3RvcjMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh2ZWN0b3IxKSk7CiAgICAg
RVhQRUNUX0VRKDBVLCB2ZWN0b3IxLnNpemUoKSk7CiAKICAgICBFWFBFQ1RfVFJVRSgiczEiID09
IHZlY3RvcjNbMF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453922</attachid>
            <date>2022-03-05 16:14:20 -0800</date>
            <delta_ts>2022-03-05 18:40:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220305161419.patch</filename>
            <type>text/plain</type>
            <size>163125</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyZGM0ODMzNTA2MzNiNWEyYzJhNjFk
ZWVkZDY3ODE5NWIxMjlhYzEuLjYzYzlmMjI3NDAxZTVlZjIwM2Q0MjMxMDczZjEwNjQ2NzYyNTZm
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9z
cyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEcm9wIGlzb2xhdGVkQ29weSgpIG9uIFZlY3RvciBzaW5jZSBDcm9zc1RocmVhZENvcGllciBh
bHJlYWR5IGhhcyBsb2dpYyB0bworICAgICAgICBpc29sYXRlLWNvcHkgYSBWZWN0b3IuIFRoZSBs
b2dpYyBpbiBDcm9zc1RocmVhZENvcGllciBoYXMgdGhlIGJlbmVmaXQgb2YKKyAgICAgICAgd29y
a2luZyBvbiB0eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgaXNvbGF0ZWRDb3B5KCkgKGUuZy4g
YSBWZWN0b3Igb2YKKyAgICAgICAgc3RkOjpvcHRpb25hbCBvciBhIFZlY3RvciBvZiBzdGQ6OnZh
cmlhbnQpLgorCisgICAgICAgIEltcHJvdmUgdGhlIENyb3NzVGhyZWFkQ29waWVyIHRvIG9wdGlt
aXplIHRoZSBjYXNlIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpCisgICAgICAgIGlzIGNhbGxlZCBv
biBhIHItdmFsdWUgcmVmZXJlbmNlIGluIG1vcmUgY2FzZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBs
b2dpYworICAgICAgICBmb3IgVmVjdG9yLCBIYXNoU2V0LCBIYXNoTWFwLCBzdGQ6OnBhaXIsIHN0
ZDo6dmFyaWFudCB3YXMgaW1wcm92ZWQuIEkKKyAgICAgICAgYWxzbyBhZGRlZCBBUEkgdGVzdCBj
b3ZlcmFnZSBmb3IgdGhvc2UuCisKKyAgICAgICAgVGhlIEFQSSB0ZXN0cyBhbHNvIGZvdW5kIGEg
YnVnIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpIHdhcyBpbmNvcnJlY3RseQorICAgICAgICBtb3Zp
bmcgdGhlIHNvdXJjZSB3aGVuIGNhbGxlZCBvbiBhIHN0ZDo6dmFyaWFudCB0aGF0IHdhcyBub3Qg
YSByLXZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4gVGhpcyBidWcgaXMgZml4ZWQgaW4gdGhpcyBw
YXRjaCB0b28uCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4g
bWFrZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNWZmM2UyM2M3MzkxYjhkNTQwY2Fm
YTBlZTM1ODAyY2NhNjk2ZS4uZGE2YjZjMTQ3YzMxZTIzMTUyOTE2NzE5YWNiYjBlNTk2ZWY4NGQ4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRh
dGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBtb3JlIGlzb2xhdGVkQ29weSgpIG92ZXJsb2FkcyB0aGF0IHdvcmsgb24g
ci12YWx1ZSByZWZlcmVuY2VzIHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhbiBi
ZSBvcHRpbWl6ZWQuIEFsc28gY2FsbCBpc29sYXRlZENvcHkoKSAvIGNyb3NzVGhyZWFkQ29weSgp
IG9uIGEgci12YWx1ZSByZWZlcmVuY2UKKyAgICAgICAgd2hlbmV2ZXIgcG9zc2libGUgdG8gbGV2
ZXJhZ2UgdGhlc2Ugb3B0aW1pemF0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZUNhY2hlSW5mbyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvczo6
aXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm9zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXRy
aWV2ZVJlY29yZHNPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmV0cmlldmVSZWNvcmRzT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVP
cGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRS
ZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3Jk
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJFcnJvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkVycm9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJ
bmZvLmg6CisgICAgICAgICogTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hv
dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdDo6SW5mbzo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNo
b3Q6OkluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdl
clNuYXBzaG90Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9j
a01hbmFnZXJTbmFwc2hvdDo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFt
RGVzY3JpcHRvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
UGFyYW1EZXNjcmlwdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29y
a2xldFRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZv
cm1UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZENvbm5lY3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRl
cnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5
SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJl
Y3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVS
TFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xhdGVk
Q29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29t
cGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2Fk
VHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
VHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1bGU6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvblJ1bGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6VHJpZ2dlcjo6flRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YkNvcmU6Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkRh
dGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZENvcHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRyYW5zY29kaW5nKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIv
UG9saWN5Q29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29s
YXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2Vu
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
VGltaW5nOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VU
aW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmg6
CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5o
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAg
ICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZWxlY3Rpb25PcHRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoaXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpV
bmNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmNsYWltKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0UGFy
YW1ldGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0
ZWRDb3B5KToKKwogMjAyMi0wMy0wNSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIG5vbi1zdGFuZGFyZCBkaXNwbGF5OmJsb2NrIFVBIHN0eWxlc2hlZXQg
cnVsZSBmb3IgPGxheWVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNDU4MGQ2YjRlZDFhMTk5ZWY0YmE0YzI1OTYx
NDc1MjBjM2Q4MDQxLi5hMDFhOWMxNjQ4ZDBhMjQ3YzQ1ZDc1MjAzMjdhYjE1ZDI5YmY2OTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jv
c3MgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG1vcmUgaXNvbGF0ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVl
IHJlZmVyZW5jZXMgd2hlbiB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGlt
aXplZC4gQWxzbyBjYWxsIGlzb2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSBy
LXZhbHVlIHJlZmVyZW5jZQorICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0
aGVzZSBvcHRpbWl6YXRpb25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvUENN
RGF0YWJhc2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29s
YXRlZENvcHkpOgorICAgICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9y
UmVzdHJpY3RXZWJzaXRlRGF0YUZvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3I6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklE
QlNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkRlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdJbmZvLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1
bGVMaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9s
Q2xhc3NpZmllci5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kYWxDb250YWluZXJDb250cm9sQ2xh
c3NpZmllcjo6Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TWVkaWFB
Y2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsV2l0aEltYWdlVHJhbnNjb2RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9t
YWluSW5mb3JtYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAy
MDIyLTAzLTA0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0
b3Agc2V0dGluZyBOU1VSTElzRXhjbHVkZWRGcm9tQmFja3VwS2V5IGF0dHJpYnV0ZSBmb3IgbG9j
YWxTb3JhZ2VEaXJlY3RvcnkgaW4gVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBm
NmI4ODllMmVmZWJhYWVmYmJmZTViNWM5ODg3MmI5ZmY4Yzc2NjFhLi4xM2FjOGRlOWZkZDg3NDQw
YzQxNjM4MDRmNGFhOTIwNTE2Y2Q5ODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgaXNvbGF0
ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVlIHJlZmVyZW5jZXMgd2hlbiB0
aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGltaXplZC4gQWxzbyBjYWxsIGlz
b2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSByLXZhbHVlIHJlZmVyZW5jZQor
ICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0aGVzZSBvcHRpbWl6YXRpb25z
LgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgor
CiAyMDIyLTAzLTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvcHkgV2ViS2l0IGZyYW1ld29ya3MgYW5kIFhQQyBwcm9jZXNzZXMgdG8gU2Vjb25kYXJ5
IFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9T
b3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDAxZDJhNzc2MzNiMGIwMmNm
NGRmNTI1MGZmZDIzNGNiZjAzOTdiODcuLjQxZTExYjM2NTc3ZGExOGJhNzA5ZmYxNGRiNDBmM2Qy
ZjYzYjkxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTQyLDYgKzE0Miwx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgICAgICAgICAgZGVzdGluYXRpb24udW5j
aGVja2VkQXBwZW5kKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KG9iamVjdCkpOwogICAgICAg
ICByZXR1cm4gZGVzdGluYXRpb247CiAgICAgfQorICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlwZSYm
IHNvdXJjZSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHNvdXJjZS5iZWdp
bigpLCBpdGVyYXRvckVuZCA9IHNvdXJjZS5lbmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsg
KytpdGVyYXRvcikKKyAgICAgICAgICAgICppdGVyYXRvciA9IENyb3NzVGhyZWFkQ29waWVyPFQ+
Ojpjb3B5KFdURk1vdmUoKml0ZXJhdG9yKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHNvdXJj
ZSk7CisgICAgfQogfTsKICAgICAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhhc2hT
ZXRzIG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xhc3NlcwpAQCAtMTU0LDI2ICsxNjAsNDMgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIEhhc2hTZXQ8VD4gPiB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NU
aHJlYWRDb3BpZXI8VD46OmNvcHkob2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlv
bjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAg
ICAgICAgVHlwZSBkZXN0aW5hdGlvbjsKKyAgICAgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzb3VyY2Uuc2l6ZSgpKTsKKyAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0
eSgpKQorICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpj
b3B5KHNvdXJjZS50YWtlQW55KCkpKTsKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAg
IH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhhc2hNYXBzIG9mIENyb3Nz
VGhyZWFkQ29weWFibGUgY2xhc3NlcwotdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4g
c3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hNYXA8SywgVj4g
PiB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEssIFY+IFR5cGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHR5cGVuYW1lIFRhYmxlVHJhaXRz
QXJnPgorc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hNYXA8
S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJn
LCBUYWJsZVRyYWl0c0FyZz4+IHsKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0c0Fy
Zz4gVHlwZTsKICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFR5cGUmIHNvdXJjZSkKICAgICB7
CiAgICAgICAgIFR5cGUgZGVzdGluYXRpb247Ci0gICAgICAgIGZvciAoYXV0byYga2V5VmFsdWUg
OiBzb3VyY2UpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8
Sz46OmNvcHkoa2V5VmFsdWUua2V5KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8Vj46OmNvcHkoa2V5VmFs
dWUudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBzb3VyY2UpCisg
ICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6Y29w
eShrZXkpLCBDcm9zc1RocmVhZENvcGllcjxNYXBwZWRBcmc+Ojpjb3B5KHZhbHVlKSk7CiAgICAg
ICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBl
JiYgc291cmNlKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gc291cmNlLmJl
Z2luKCksIGVuZCA9IHNvdXJjZS5lbmQoKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7
CisgICAgICAgICAgICBpdGVyYXRvci0+a2V5ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6
Y29weShXVEZNb3ZlKGl0ZXJhdG9yLT5rZXkpKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZSA9IENyb3NzVGhyZWFkQ29waWVyPE1hcHBlZEFyZz46OmNvcHkoV1RGTW92ZShpdGVyYXRvci0+
dmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworICAg
IH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIHBhaXJzIG9mIENyb3NzVGhy
ZWFkQ29weWFibGUgY2xhc3NlcwogdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgUz4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6cGFpcjxGLCBTPiA+
IHsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxGLCBTPiBUeXBlOwotICAgIHN0YXRpYyBUeXBlIGNv
cHkoY29uc3QgVHlwZSYgc291cmNlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBU
eXBlIGNvcHkoVSYmIHNvdXJjZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShzb3VyY2UuZmlyc3QpLCBDcm9zc1RocmVhZENv
cGllcjxTPjo6Y29weShzb3VyY2Uuc2Vjb25kKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShzdGQ6OmdldDwwPihzdGQ6OmZvcndhcmQ8
VT4oc291cmNlKSkpLCBDcm9zc1RocmVhZENvcGllcjxTPjo6Y29weShzdGQ6OmdldDwxPihzdGQ6
OmZvcndhcmQ8VT4oc291cmNlKSkpKTsKICAgICB9CiB9OwogCkBAIC0xODksMTEgKzIxMiwxOCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgc3RkOjpvcHRpb25hbDxUPgogCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZv
ciBzdGQ6OnZhcmlhbnQgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzLgogdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
c3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShVJiYgc291cmNlKQorICAgIHVzaW5n
IFR5cGUgPSBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+OworICAgIHN0YXRpYyBzdGQ6OnZhcmlhbnQ8
VHlwZXMuLi4+IGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6dmlzaXQoW10gKGF1dG8mIHR5cGUpIC0+IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gewog
ICAgICAgICAgICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUodHlwZSk+Pj46OmNvcHkodHlwZSk7Ci0g
ICAgICAgIH0sIHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKTsKKyAgICAgICAgfSwgc291cmNlKTsK
KyAgICB9CisgICAgc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShUeXBlJiYgc291
cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQoW10gKGF1dG8mJiB0eXBlKSAt
PiBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IHsKKyAgICAgICAgICAgIHJldHVybiBDcm9zc1RocmVh
ZENvcGllcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0
eXBlKHR5cGUpPj4+Ojpjb3B5KFdURk1vdmUodHlwZSkpOworICAgICAgICB9LCBXVEZNb3ZlKHNv
dXJjZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
IGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggYzZiZGFlOWU3MjU3OGMxZTUzMDNmMWNh
Mjg2ZjhlNjhlYTljYjllNS4uNDY3OWExOGRmMDE0NWQyNDVlMTcyNDFjNzlmYzZkN2JhYWExYjI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvVmVjdG9yLmgKQEAgLTc3Niw5ICs3NzYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFy
KCkgeyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+
IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSBjb25zdCAmOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5KCkgJiY7Ci0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVlKSB7IGFwcGVuZDxWYWx1ZVR5cGU+KHN0ZDo6
Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBB
TFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFUmJiB1KSB7IGFwcGVuZDxGYWlsdXJlQWN0aW9uOjpD
cmFzaCwgVT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IEFMV0FZU19JTkxJTkUgYm9vbCB0cnlBcHBlbmQoVSYmIHUpIHsgcmV0dXJuIGFwcGVuZDxGYWls
dXJlQWN0aW9uOjpSZXBvcnQsIFU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KQEAgLTE2NTksMjYg
KzE2NTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0b3I8
VD4+IHsKIH07CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWlu
bGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCi17Ci0gICAgVmVj
dG9yPFU+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKnRoaXMpCi0gICAgICAgIGNvcHkudW5jaGVj
a2VkQXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5KCkpOwotICAgIHJldHVybiBjb3B5OwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1w
bGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFZlY3RvcjxVPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omlzb2xhdGVkQ29weSgp
ICYmCi17Ci0gICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oKSwgaXRlcmF0b3JFbmQgPSBl
bmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgKytpdGVyYXRvcikKLSAgICAgICAgKml0ZXJh
dG9yID0gV1RGTW92ZSgqaXRlcmF0b3IpLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiBXVEZN
b3ZlKCp0aGlzKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUg
RnVuYz4KIHNpemVfdCByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKFZlY3RvclR5cGUmIHZlY3Rvciwg
Y29uc3QgRnVuYyYgZnVuYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxl
U3lzdGVtTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5kZXgg
YmI2MmRhYTMzODM0YzMyOGQwZTUxOWQ2ZjI1ZjRjYjlmZmI5MTc4Ni4uMmZiMWE1ZjI1NjE3ZWZi
MDM2YWE5NGYxN2JkNTM1Zjc0ZWJiNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbWFj
L0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMu
bW0KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIKICAgICAgICAgdXJs
U3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CiAKICAgICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBv
biBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCi0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJp
bmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVl
KERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0
ZWRDb3B5KCksIHVybFN0cmluZyA9IFdURk1vdmUodXJsU3RyaW5nKS5pc29sYXRlZENvcHkoKSwg
cmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBhdXRvIGl0ZW0g
PSBhZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5o
CmluZGV4IDAxZmRjOTM3Yzc1MTgxNTNlMDBiY2NiN2VkNTkxYTU4MTE0NGYyZGUuLmNmMWE2NzQ5
Nzk3OGQyMjM0YWY0Y2Q2MzkyZGVmYzViNmFiMjJhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zIHsKLSAgICBDYWNo
ZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGlnbm9yZVNlYXJj
aCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsg
fQorICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBXVEZNb3Zl
KGNhY2hlTmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgYm9vbCBpZ25vcmVTZWFyY2gg
eyBmYWxzZSB9OwogICAgIGJvb2wgaWdub3JlTWV0aG9kIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNi4uYjQyODI2NWMxMjc4MjU0N2MxYTBkZTQy
ZjlhNmYyMmNlNDM4ZGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKQEAgLTE1NCwxNiArMTU0LDYgQEAgUmVjb3JkIFJlY29yZDo6Y29w
eSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlY29yZCB7IGlkZW50aWZpZXIsIHVwZGF0ZVJlc3BvbnNl
Q291bnRlciwgcmVxdWVzdEhlYWRlcnNHdWFyZCwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIs
IHJlc3BvbnNlSGVhZGVyc0d1YXJkLCByZXNwb25zZSwgY29weVJlc3BvbnNlQm9keShyZXNwb25z
ZUJvZHkpLCByZXNwb25zZUJvZHlTaXplIH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ2FjaGVJbmZv
IGlzb2xhdGVDYWNoZUluZm8oY29uc3QgQ2FjaGVJbmZvJiBpbmZvKQotewotICAgIHJldHVybiBD
YWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8ubmFtZS5pc29sYXRlZENvcHkoKSB9Owot
fQotCi1DYWNoZUluZm9zIENhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSgpCi17Ci0gICAgcmV0dXJu
IHsgV1RGOjptYXAoaW5mb3MsIGlzb2xhdGVDYWNoZUluZm8pLCB1cGRhdGVDb3VudGVyIH07Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRl
eCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5iZTVjMmMxZTM1NDBj
NzZmZWM3N2VkNWM0ZjZlYTBhYjQyMjk3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC04MiwxNiArODIsMjAgQEAgc3RydWN0IFJlY29y
ZCB7CiBzdHJ1Y3QgQ2FjaGVJbmZvIHsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwogICAgIFN0
cmluZyBuYW1lOworCisgICAgQ2FjaGVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1
cm4geyBpZGVudGlmaWVyLCBuYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDYWNoZUluZm8g
aXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBpZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpIH07IH0KIH07CiAKIHN0cnVjdCBDYWNoZUluZm9zIHsKLSAgICBDYWNoZUlu
Zm9zIGlzb2xhdGVkQ29weSgpOworICAgIFZlY3RvcjxDYWNoZUluZm8+IGluZm9zOworICAgIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXI7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJbmZvcz4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFZl
Y3RvcjxDYWNoZUluZm8+IGluZm9zOwotICAgIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7CisgICAg
Q2FjaGVJbmZvcyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KGluZm9zKSwgdXBkYXRlQ291bnRlciB9OyB9CisgICAgQ2FjaGVJbmZvcyBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGluZm9zKSksIHVwZGF0
ZUNvdW50ZXIgfTsgfQogfTsKIAogc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3Vs
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVj
b3Jkc09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNv
cmRzT3B0aW9ucy5oCmluZGV4IDBmYTAyYmJiZGMzMzkxY2RiZGJjZmQ4YWJlNmFmZmY0YWZjYTE1
MGYuLjc1NjA0NTk0N2Y2ZWU1MTg0ZWJkMDg5YTVkNmZiMmNjMjhmNDU1MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5o
CkBAIC0zMyw3ICszMyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSZXRyaWV2
ZVJlY29yZHNPcHRpb25zIHsKLSAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIHsgcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291cmNlT3JpZ2luLT5pc29sYXRlZENvcHko
KSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIHNob3VsZFByb3ZpZGVS
ZXNwb25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBpc29sYXRlZENvcHkoKSBj
b25zdCAmIHsgcmV0dXJuIHsgcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291cmNlT3JpZ2luLT5pc29sYXRlZENvcHkoKSwg
aWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIHNob3VsZFByb3ZpZGVSZXNw
b25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IFdURk1vdmUocmVxdWVzdCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSkuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZU9yaWdpbi0+aXNvbGF0
ZWRDb3B5KCksIGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBzaG91bGRQ
cm92aWRlUmVzcG9uc2UgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJldHJpZXZlUmVjb3Jkc09wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA0NmZmN2NlY2QzZTIyMzI5ZDY3NWRlMjVl
MmU2YmQ3OWM1NGI5MTJjLi5iZDIwNGE5Yzc5ZjQ1MTRjZjkwMDNlY2UzNjZkYTM0Y2YxY2VjNWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aQogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSByZXN1bHQudmFsdWUo
KS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KS52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgICAgICAgICB3b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1
bHQgPSBXVEZNb3ZlKGlzb2xhdGVkUmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKS5yZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShyZXN1bHQpKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllcgogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0
SWRlbnRpZmllcjsKICAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChy
ZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS50aHJlYWQoKSB9LCBtYWluVGhyZWFk
Q29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25z
ID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLnRocmVhZCgpIH0sIG1haW5UaHJlYWRD
b25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMg
PSBXVEZNb3ZlKG9wdGlvbnMpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBt
YWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVy
LCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpLCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3Jr
ZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5kZWxldGVSZWNv
cmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDAxNmQxNzE3Mjg3NWQyYTUzOWM2YzJhMjk1ZThkNTJjNDY4NTE4NDAuLjk4MmU1YjU4Mzdm
NWM1ZTUyODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDggQEAg
c3RydWN0IExpc3RlZENoaWxkIHsKICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgRmlsZVN5c3Rl
bTo6RmlsZVR5cGUgdHlwZTsKIAotICAgIExpc3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIHR5cGUgfTsgfQorICAgIExpc3Rl
ZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBmaWxlbmFtZS5pc29sYXRl
ZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTGlzdGVkQ2hpbGQgaXNvbGF0ZWRDb3B5KCkgJiYgeyBy
ZXR1cm4geyBXVEZNb3ZlKGZpbGVuYW1lKS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CiB9Owog
CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25v
cmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCkBAIC0yNTYsNyArMjU3LDcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKIAogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBSZWYgeyBjb250ZXh0IH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZ1bGxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkoZGlyZWN0b3J5VmlydHVhbFBhdGgpXSgpIG11dGFibGUgewogICAgICAgICBh
dXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0YShmdWxsUGF0aCk7
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4gPSBjcm9zc1RocmVh
ZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeVZp
cnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9
IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobGlzdGVk
Q2hpbGRyZW4pKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHRvRmlsZVN5c3RlbUVudHJpZXMoY29udGV4dCwgcHJvdGVjdGVkVGhpcywgV1RGTW92ZShsaXN0
ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTM1NTBmYTdkOWExNTlmZTFmOWY3ZTc3NmUzZGRl
NmZhNTI3ZDRmNy4uZDhmODU2NzRjZDExMGIzMTA5ZjZhOWU0OGY3OWM2ZDdmZjViNDNkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuY3BwCkBAIC00MiwxNCArNDIsMjEgQEAgSURCRGF0YWJhc2VJZGVudGlm
aWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNl
Y3VyaXQKICAgICBBU1NFUlQoIWRhdGFiYXNlTmFtZS5pc051bGwoKSk7CiB9CiAKLUlEQkRhdGFi
YXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CitJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENv
cHkoKSBjb25zdCAmCiB7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0K
ICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1lID0gbV9kYXRhYmFzZU5hbWUuaXNvbGF0ZWRD
b3B5KCk7CiAgICAgaWRlbnRpZmllci5tX29yaWdpbiA9IG1fb3JpZ2luLmlzb2xhdGVkQ29weSgp
OwogICAgIGlkZW50aWZpZXIubV9pc1RyYW5zaWVudCA9IG1faXNUcmFuc2llbnQ7CisgICAgcmV0
dXJuIGlkZW50aWZpZXI7Cit9CiAKK0lEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlk
ZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IGlkZW50aWZpZXI7CisgICAgaWRlbnRpZmllci5tX2RhdGFiYXNlTmFtZSA9IFdURk1vdmUobV9k
YXRhYmFzZU5hbWUpLmlzb2xhdGVkQ29weSgpOworICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBX
VEZNb3ZlKG1fb3JpZ2luKS5pc29sYXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1faXNUcmFu
c2llbnQgPSBtX2lzVHJhbnNpZW50OwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5oCmluZGV4IGY4M2YxOTVhNTZkZWZkMmIzZjBlY2Q4ZTlkNjcxNGQyOTQwZDBhMjIu
LjI3MWRlZDRkZWU4Yjg4OGQzMWU0YzRjMTFlMWQxZmM4ODlkYmE2YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkRh
dGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3Jp
Z2luLCBib29sIGlzVHJhbnNpZW50ID0gZmFsc2UpOwogCi0gICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRlZENv
cHkoKSAmJjsKIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQu
Y3BwCmluZGV4IDU0NzlkNjFmMWYwM2E5ZjJmMmZlMzkzY2Y3MmRjMjk1MjJkNTRmNTIuLmFiNTY3
MjIzMWYyYmI0MjQzMmEyOWIyMDc0ZmEwYTA2N2JjMzQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtNTAsNyArNTAsNyBA
QCB2b2lkIElEQkdldFJlc3VsdDo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQkdldFJlc3VsdCYgc291
cmNlLCBJREJHZXRSZXN1bHQmIGRlc3RpbgogICAgIGRlc3RpbmF0aW9uLm1fcHJpbWFyeUtleURh
dGEgPSBzb3VyY2UubV9wcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKTsKICAgICBkZXN0aW5h
dGlvbi5tX2tleVBhdGggPSBjcm9zc1RocmVhZENvcHkoc291cmNlLm1fa2V5UGF0aCk7CiAgICAg
ZGVzdGluYXRpb24ubV9pc0RlZmluZWQgPSBzb3VyY2UubV9pc0RlZmluZWQ7Ci0gICAgZGVzdGlu
YXRpb24ubV9wcmVmZXRjaGVkUmVjb3JkcyA9IHNvdXJjZS5tX3ByZWZldGNoZWRSZWNvcmRzLmlz
b2xhdGVkQ29weSgpOworICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBjcm9z
c1RocmVhZENvcHkoc291cmNlLm1fcHJlZmV0Y2hlZFJlY29yZHMpOwogfQogCiB2b2lkIElEQkdl
dFJlc3VsdDo6c2V0VmFsdWUoSURCVmFsdWUmJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTg2N2IxYjdl
NmQ2ZjE1NDllY2Q3MjYxMjdkY2M3Njk5NWE5ZDA2Li43NzNlNWIyZDNhYTVkMjhlYmViYTgzNmY5
NzcyYzg3ZDU0NjgyNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05MzIsNyArOTMyLDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKElEQk9i
amVjdFN0b3JlJgogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgb2Jq
ZWN0IHN0b3JlIHJlY29yZHMgb3BlcmF0aW9uOiAlcyIsIGdldEFsbFJlY29yZHNEYXRhLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgp
LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RdIChjb25zdCBhdXRvJiBy
ZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVy
KHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29w
eSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IFdURk1vdmUoZ2V0QWxsUmVjb3Jkc0RhdGEpLmlz
b2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmdldEFsbFJlY29yZHNPblNlcnZlcihvcGVyYXRpb24sIGdldEFsbFJlY29yZHNEYXRhKTsKICAg
ICB9KSk7CiAKQEAgLTk1NCw3ICs5NTQsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSURCSW5kZXgmIGluZGV4LCBjb25zdAogICAg
IExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgaW5kZXggcmVjb3JkcyBvcGVy
YXRpb246ICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0
KTsKLSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNE
YXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24p
IHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNE
YXRhID0gV1RGTW92ZShnZXRBbGxSZWNvcmRzRGF0YSkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBv
cGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVy
KG9wZXJhdGlvbiwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0pKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggYzlkZDFkMDM2ZTdjMTk0YTljY2IxNDZjMDVhMDc2MzFhZDNkZGIz
Yy4uN2VmOWQwYTM4N2Y3MjdkODVlYzBkZWVmNmQzY2FlMGRlZDAxNThjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCkBAIC0zNDQsNyArMzQ0LDcgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0
U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4JiBpbmRl
eCkKIAogICAgICAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7CiAgICAgICAgICAgICBnZW5lcmF0
ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmRleEluZm8sIGpzVmFsdWUsIGluZGV4
S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKLSAgICAgICAgICAgIHJlc3VsdEluZGV4S2V5ID0g
aW5kZXhLZXkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgICAgICByZXN1bHRJbmRleEtleSA9IFdU
Rk1vdmUoaW5kZXhLZXkpLmlzb2xhdGVkQ29weSgpOwogICAgICAgICB9KTsKIAogICAgICAgICBp
ZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA5MjFhYTJiMGI4ODA5YjNhNGRjZjczMjE4OWRiOTA5YTQ2MGFiMThmLi5iNTNlOGJhOTYyZjZm
Yjc3MjIzZGNhM2JkNGU2MmI2MWI1OTdiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMTg4Niw3ICsxODg2LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29yZChJREJPYmplY3RTdG9yZUluZm8mIG8KIAog
ICAgICAgICBJbmRleEtleSBpbmRleEtleTsKICAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZh
bHVlKGdsb2JhbE9iamVjdCwgaW5mbywganNWYWx1ZSwgaW5kZXhLZXksIG9iamVjdFN0b3JlSW5m
by5rZXlQYXRoKCksIGtleSk7Ci0gICAgICAgIHJlc3VsdEluZGV4S2V5ID0gaW5kZXhLZXkuaXNv
bGF0ZWRDb3B5KCk7CisgICAgICAgIHJlc3VsdEluZGV4S2V5ID0gV1RGTW92ZShpbmRleEtleSku
aXNvbGF0ZWRDb3B5KCk7CiAgICAgfSk7CiAKICAgICBpZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKaW5kZXggZjRjNzVlMGUyN2E2OTA2M2Q0
NzZkY2NiOWRkNzhjNWM4ZGRhNjJhYS4uYzcxZDA3ZjY5YzNkYmI0NzBkNjExNzc2M2VkYmQ5ZDg0
MTAzNzY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCkBAIC0zNiw3
ICszNiw4IEBAIHN0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgdmVy
c2lvbiB9OyB9CisgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIHZlcnNpb24gfTsgfQog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU5LDkgKzYwLDQgQEAgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
OjpkZWNvZGUoRGVjb2QKICAgICByZXR1cm4gaW5mbzsKIH0KIAotaW5saW5lIElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb24gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCB2ZXJzaW9uIH07Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDJlMGE1N2FjNjY3YjYyY2M2
Y2ZiZGJlNGNmNmYxNTE4OTliMjE4YWIuLjE4ZWQ3ZTIxYjM1NTBkMzk5NDIyOGVlMGFhN2RhNDhl
OTgxZjY0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAgSURCRXJyb3I6OklEQkVycm9y
KHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogfQogCi1JREJFcnJvciBJREJFcnJvcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gSURCRXJyb3IgeyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9Owot
fQotCiBTdHJpbmcgSURCRXJyb3I6Om5hbWUoKSBjb25zdAogewogICAgIGlmICghbV9jb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
aAppbmRleCBiMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkLi4zMjk2NTZj
ZTlmNDI4ODdmM2QwYmY3MDhjOWIwYzYzYTkxNWUwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTQsNyArNTQsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jb2RlOyB9CiAg
ICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgSURCRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRXJyb3Ig
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgbV9tZXNz
YWdlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBJREJFcnJvciBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgV1RGTW92ZShtX21lc3NhZ2UpLmlzb2xhdGVkQ29w
eSgpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBJREJFcnJvciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNw
cAppbmRleCAwMTVhY2Y3Mjc2OTQ1Mzc0YzRhZGI4YWQyNDM0YmEzYjc5OWFhZmRhLi5lNzFkMmVi
ZjIxYzRhZGZlZjI4YTJiZGFmYTFmZjg0YjNmN2YwMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcApAQCAt
NDUsMTEgKzQ1LDE2IEBAIElEQkluZGV4SW5mbzo6SURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwKIHsKIH0KIAotSURCSW5kZXhJ
bmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0lEQkluZGV4SW5mbyBJREJJ
bmRleEluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBtX2lkZW50
aWZpZXIsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBtX25hbWUuaXNvbGF0ZWRDb3B5KCksIGNy
b3NzVGhyZWFkQ29weShtX2tleVBhdGgpLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5IH07CiB9CiAK
K0lEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0
dXJuIHsgbV9pZGVudGlmaWVyLCBtX29iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShtX25h
bWUpLmlzb2xhdGVkQ29weSgpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2tleVBhdGgpKSwg
bV91bmlxdWUsIG1fbXVsdGlFbnRyeSB9OworfQorCiAjaWYgIUxPR19ESVNBQkxFRAogCiBTdHJp
bmcgSURCSW5kZXhJbmZvOjpsb2dnaW5nU3RyaW5nKGludCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmgKaW5kZXggOWYxZWI5YTBhMTAxNDQzOGNiMjM4NjNhYWNhMjE0YjdjZjQxYmNlNi4uYTEwZjhm
NTJmMzQyMWExNzllMGRjYWQ5YWFiOTdmMmZjMWE4ZWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaApAQCAtMzUs
NyArMzUsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCSW5kZXhJbmZvKCk7CiAg
ICAgSURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCSW5kZXhJbmZvIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4SW5mbyBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4SW5mbyBpc29s
YXRlZENvcHkoKSAmJjsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3Rv
cmVJbmZvLmNwcAppbmRleCAxMGMxYTRjNTE1ZTJlYWVmODA5Mzk0MmJiMzZjNWQ4ZDUyMzRjMGNj
Li4xZThiOGRlYTQwYmY4YmQzNmJkMjcyM2U5MjAwMTA2MDZhZDU2MDQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2Jq
ZWN0U3RvcmVJbmZvLmNwcApAQCAtOTIsMTMgKzkyLDE3IEBAIElEQkluZGV4SW5mbyogSURCT2Jq
ZWN0U3RvcmVJbmZvOjppbmZvRm9yRXhpc3RpbmdJbmRleCh1aW50NjRfdCBpZGVudGlmaWVyKQog
ICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCi1JREJPYmplY3RTdG9yZUluZm8gSURC
T2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAorSURCT2JqZWN0U3RvcmVJbmZv
IElEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIElEQk9i
amVjdFN0b3JlSW5mbyByZXN1bHQgPSB7IG1faWRlbnRpZmllciwgbV9uYW1lLmlzb2xhdGVkQ29w
eSgpLCBjcm9zc1RocmVhZENvcHkobV9rZXlQYXRoKSwgbV9hdXRvSW5jcmVtZW50IH07CisgICAg
cmVzdWx0Lm1faW5kZXhNYXAgPSBjcm9zc1RocmVhZENvcHkobV9pbmRleE1hcCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KIAotICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX2luZGV4TWFwKQot
ICAgICAgICByZXN1bHQubV9pbmRleE1hcC5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1
ZS5pc29sYXRlZENvcHkoKSk7Ci0KK0lEQk9iamVjdFN0b3JlSW5mbyBJREJPYmplY3RTdG9yZUlu
Zm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgSURCT2JqZWN0U3RvcmVJbmZvIHJlc3VsdCA9
IHsgbV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1fbmFtZSkuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKG1fa2V5UGF0aCkpLCBtX2F1dG9JbmNyZW1lbnQgfTsKKyAgICByZXN1
bHQubV9pbmRleE1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1faW5kZXhNYXApKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKaW5kZXggNDAzZmQ0
MDU5ODZiYzVkOTI3YjRlNjNhZGYwYzk1ZmVmMWFlOTY5OS4uZTNhMDNiZjc1NjU4MzFhNzUwODM1
OWQ1OGMyNmVhOTEyZTcxODFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaApAQCAtNDQsNyAr
NDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbmFtZShjb25zdCBTdHJpbmcmIG5ld05hbWUp
IHsgbV9uYW1lID0gbmV3TmFtZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCT2JqZWN0U3Rv
cmVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVj
dFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIElE
Qk9iamVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIElEQkluZGV4SW5mbyBj
cmVhdGVOZXdJbmRleCh1aW50NjRfdCBpbmRleElELCBjb25zdCBTdHJpbmcmIG5hbWUsIElEQktl
eVBhdGgmJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAgICAgdm9pZCBhZGRFeGlz
dGluZ0luZGV4KGNvbnN0IElEQkluZGV4SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCmluZGV4IDQ0
MmMzMDNkMmE4NzRlMjk0M2VmN2FjNWY2MmZjZTM2MDBmMmU3NWEuLjI3MDdmNzE2MmY5ZGQwYTMx
OTA1YTI4NDRkNzA2YzQ2ZjIyMTMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90LmgKQEAgLTM3LDcgKzM3
LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgewogICAgICAgICBXZWJMb2NrTW9k
ZSBtb2RlIHsgV2ViTG9ja01vZGU6OkV4Y2x1c2l2ZSB9OwogICAgICAgICBTdHJpbmcgY2xpZW50
SWQ7CiAKLSAgICAgICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IG5hbWUu
aXNvbGF0ZWRDb3B5KCksIG1vZGUsIGNsaWVudElkLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENv
cHkoKSwgbW9kZSwgY2xpZW50SWQuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbmZvIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
bW9kZSwgV1RGTW92ZShjbGllbnRJZCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
IHsgZW5jb2RlciA8PCBuYW1lIDw8IG1vZGUgPDwgY2xpZW50SWQ7IH0KICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5mbz4gZGVjb2RlKERlY29k
ZXImKTsKQEAgLTQ2LDcgKzQ3LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25hcHNob3Qgewog
ICAgIFZlY3RvcjxJbmZvPiBoZWxkOwogICAgIFZlY3RvcjxJbmZvPiBwZW5kaW5nOwogCi0gICAg
V2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShoZWxkKSwgY3Jvc3NUaHJlYWRDb3B5KHBlbmRpbmcpIH07IH0KKyAgICBX
ZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBj
cm9zc1RocmVhZENvcHkoaGVsZCksIGNyb3NzVGhyZWFkQ29weShwZW5kaW5nKSB9OyB9CisgICAg
V2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGhlbGQpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGVuZGlu
ZykpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0IHsgZW5jb2RlciA8PCBoZWxkIDw8IHBlbmRpbmc7IH0KICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJMb2NrTWFuYWdl
clNuYXBzaG90PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oCmluZGV4IDFlZDZjZGU3Mjll
ZjkzNTc3MGJhOTYzN2QzYWZhNWYwMmE4ZDg2NGUuLjVkZTU0ZjhiMzAzZDI0Yzk4NmI0NWIxZTRj
ZDBmY2E5YTNiMDI5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgKQEAgLTQyLDE2ICs0Miw4IEBAIHN0cnVjdCBB
dWRpb1BhcmFtRGVzY3JpcHRvciB7CiAgICAgZmxvYXQgbWF4VmFsdWUgeyAzLjQwMjgyMzVlMzgg
fTsKICAgICBBdXRvbWF0aW9uUmF0ZSBhdXRvbWF0aW9uUmF0ZSB7IEF1dG9tYXRpb25SYXRlOjpB
UmF0ZSB9OwogCi0gICAgQXVkaW9QYXJhbURlc2NyaXB0b3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBuYW1lLmlzb2xhdGVkQ29weSgp
LAotICAgICAgICAgICAgZGVmYXVsdFZhbHVlLAotICAgICAgICAgICAgbWluVmFsdWUsCi0gICAg
ICAgICAgICBtYXhWYWx1ZSwKLSAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlCi0gICAgICAgIH07
Ci0gICAgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBt
YXhWYWx1ZSwgYXV0b21hdGlvblJhdGUgfTsgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
ZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlIH07IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggM2U3
MzljMWNmOTA5ZWY3MjlmNWI5ZjBhOWFmYzhjMGZmZWMyY2FiOC4uOGE1MTMwZGI5NzBmYmY2MmMx
ODQ1MjA5YTQwM2EyYTQ5MjFlNDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwgUmVmPAogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwg
IkEgcHJvY2Vzc29yIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsK
IAotICAgIHRocmVhZCgpLm1lc3NhZ2luZ1Byb3h5KCkucG9zdFRhc2tUb0F1ZGlvV29ya2xldChb
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBhcmFtZXRlckRlc2NyaXB0b3JzID0gY3Jvc3NU
aHJlYWRDb3B5KHBhcmFtZXRlckRlc2NyaXB0b3JzKV0oQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KSBt
dXRhYmxlIHsKKyAgICB0aHJlYWQoKS5tZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRpb1dv
cmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNj
cmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29weShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29y
a2xldCYgd29ya2xldCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIGlmIChhdXRvKiBhdWRpb0NvbnRleHQgPSB3b3JrbGV0LmF1ZGlvQ29udGV4dCgp
KQogICAgICAgICAgICAgYXVkaW9Db250ZXh0LT5hZGRBdWRpb1BhcmFtRGVzY3JpcHRvcnMobmFt
ZSwgV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9ycykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IDZhMGJl
OTY0NDc3M2Q4MjM4MjM2ZDY3OTMyMTgxYTYzN2RkMjVhMzAuLjU0YWMwOGNkNDhkZjNjY2NjM2Nl
NGMwM2U3YzllZjMyMWIwMmFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKQEAgLTM3LDEwICszNywxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0
VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3Qg
V29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitBdWRpb1dvcmtsZXRUaHJlYWQ6OkF1ZGlv
V29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHks
IFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IFdvcmtlck9yV29ya2xldFRo
cmVhZChwYXJhbWV0ZXJzLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX21lc3Nh
Z2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQotICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMu
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKS5p
c29sYXRlZENvcHkoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKaW5kZXggZjZlNzE1NTZjZTBjOTRmYWQ0ZDI2
OTc1MzI2ODY1ODIwNDEzNTI3Mi4uYjM0ZWU5OTg5OGY5ZGRkMWQwYTdiMzgyMGYxYjVjY2EyZWY3
ZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5OwogCiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgV29ya2VyT3JX
b3JrbGV0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFRocmVh
ZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29u
c3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIFJlZjxBdWRpb1dv
cmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5n
UHJveHksIFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldFRocmVhZChtZXNzYWdpbmdQcm94eSwgcGFy
YW1ldGVycykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJl
YWQobWVzc2FnaW5nUHJveHksIFdURk1vdmUocGFyYW1ldGVycykpKTsKICAgICB9CiAgICAgfkF1
ZGlvV29ya2xldFRocmVhZCgpOwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHkoKSB7IHJldHVybiBtX21lc3Nh
Z2luZ1Byb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKKyAgICBBdWRp
b1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmLCBXb3JrbGV0UGFyYW1l
dGVycyYmKTsKIAogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBSZWY8VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAppbmRleCBiZWYwMzllMTVlODI1NjUwNzBmMGUz
N2Y5ZjMzOWY1YTRmYTEzNTI0Li4zZWFlOTYxMDQ4NzFlYWEyODliNTAwNDRhYjE3YjM5MTUyMzgy
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRhc2suY3BwCkBAIC05NSw3ICs5NSw3IEBAIERhdGFiYXNlT3BlblRhc2s6OkRhdGFiYXNl
T3BlblRhc2soRGF0YWJhc2UmIGRhdGFiYXNlLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiCiAK
IHZvaWQgRGF0YWJhc2VPcGVuVGFzazo6ZG9QZXJmb3JtVGFzaygpCiB7Ci0gICAgbV9yZXN1bHQg
PSBpc29sYXRlZENvcHkoZGF0YWJhc2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3NldFZlcnNp
b25Jbk5ld0RhdGFiYXNlKSk7CisgICAgbV9yZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoZGF0YWJh
c2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3NldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSk7CiB9
CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggYWU2NjBjMDIxZjdhOGQyMGQ0
YzExYmE0YmQ5YTM0MmVmZmY3MzY0OS4uMDY3ZmQzOTEzOTBjODVkYzJkNDlkZjQwODAxNjJiNDNj
NGY0MjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzcyLDggKzM3MiwxMCBAQCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKQogCiAgICAgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICBpbnQgc3RlcFJlc3VsdDsKLSAgICB3aGls
ZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKLSAgICAg
ICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSktPmlzb2xhdGVkQ29weSgpKTsKKyAgICB3aGls
ZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgeworICAg
ICAgICBpZiAoYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSkKKyAgICAgICAgICAgIG9yaWdpbnMu
YXBwZW5kKFdURk1vdmUob3JpZ2luKS52YWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICB9CiAg
ICAgb3JpZ2lucy5zaHJpbmtUb0ZpdCgpOwogCiAgICAgaWYgKHN0ZXBSZXN1bHQgIT0gU1FMSVRF
X0RPTkUpCkBAIC01MzcsNyArNTM5LDYgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0g
bWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKIAogICAgIGF1dG8gb3JpZ2luID0gZGF0
YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKLQogICAgIGF1dG8qIG5hbWVNYXAgPSBtX29wZW5EYXRh
YmFzZU1hcC0+Z2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lTWFwKSB7CiAgICAgICAgIG5hbWVN
YXAgPSBuZXcgRGF0YWJhc2VOYW1lTWFwOwpAQCAtNTk4LDE0ICs1OTksMTMgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiBSZWY8
T3JpZ2luTG9jaz4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2RhdGFi
YXNlR3VhcmQgfTsKLSAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3JpZ2luLmRhdGFi
YXNlSWRlbnRpZmllcigpOwogCiAgICAgLy8gVGhlIG9yaWdpbkxvY2tNYXAgaXMgYWNjZXNzZWQg
ZnJvbSBtdWx0aXBsZSBEYXRhYmFzZVRocmVhZHMgc2luY2UKICAgICAvLyBkaWZmZXJlbnQgc2Ny
aXB0IGNvbnRleHRzIGNhbiBiZSB3cml0aW5nIHRvIGRpZmZlcmVudCBkYXRhYmFzZXMgZnJvbQog
ICAgIC8vIHRoZSBzYW1lIG9yaWdpbi4gSGVuY2UsIHRoZSBkYXRhYmFzZUlkZW50aWZpZXIga2V5
IG5lZWRzIHRvIGJlIGFuCiAgICAgLy8gaXNvbGF0ZWQgY29weS4gQW4gaXNvbGF0ZWQgY29weSBn
aXZlcyB1cyBhIHZhbHVlIHdob3NlIHJlZkNvdW50aW5nIGlzCiAgICAgLy8gdGhyZWFkLXNhZmUs
IHNpbmNlIG91ciBjb3B5IGlzIGd1YXJkZWQgYnkgdGhlIG1fZGF0YWJhc2VHdWFyZCBtdXRleC4K
LSAgICBkYXRhYmFzZUlkZW50aWZpZXIgPSBkYXRhYmFzZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5
KCk7CisgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50
aWZpZXIoKS5pc29sYXRlZENvcHkoKTsKIAogICAgIHJldHVybiBtX29yaWdpbkxvY2tNYXAuZW5z
dXJlKGRhdGFiYXNlSWRlbnRpZmllciwgWyZdIHsKICAgICAgICAgcmV0dXJuIE9yaWdpbkxvY2s6
OmNyZWF0ZShvcmlnaW5QYXRoKG9yaWdpbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggOTMzNGM1NTFjNDRlNDE1MzFlMGQ1NjZmMjJiNTI5NjlkNDYx
MGQ4Mi4uYmExYjQwMjYxMmEzOTQxNjgzMzFiNjUxYTVkM2YyZDkxNTMwODkwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgp
CiAKICAgICBTdHJpbmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJw
cm90b2NvbCgpOwogICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+ZXh0ZW5zaW9ucygpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBzdWJwcm90b2NvbC5pc29sYXRlZENvcHkoKSwgZXh0
ZW5zaW9ucyA9IGV4dGVuc2lvbnMuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBXVEZNb3ZlKHN1YnByb3RvY29sKS5pc29s
YXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IFdURk1vdmUoZXh0ZW5zaW9ucykuaXNvbGF0ZWRDb3B5
KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3Jh
cHBlci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggM2EzNWUy
NjA1ZTAzZTYyOTc5YjIyOWQ4MjZmZTZlNzNiZTI5NDJkZi4uMDA0NWMyN2QzMWIxMDdjZGY3YTNk
YWM4ZDZiNDE1OWZjYWRmMTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTk3MSw3ICs5NzEsNiBAQCBk
b20vRXZlbnROYW1lcy5jcHAKIGRvbS9FdmVudFBhdGguY3BwCiBkb20vRXZlbnRUYXJnZXQuY3Bw
CiBkb20vRXZlbnRUYXJnZXRDb25jcmV0ZS5jcHAKLWRvbS9FeGNlcHRpb25EYXRhLmNwcAogZG9t
L0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAogZG9tL0ZvY3VzRXZlbnQuY3BwCiBkb20vRm9ybURh
dGFFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhYTIyN2Q1OThlNDI5ZDg1NWJiM2RlZWRhOWIxZDQ3MjgwZDYyNDNi
Li5jNTJiNWY3MDc5YWIxYjZlMGQ1ZTU4ZjJjZWZlYzZkNmU5NDVlOWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDA1NSw3
ICsxMDA1NSw2IEBACiAJCTUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lz
dHJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclJlZ2lz
dHJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDU5NTFGNEE2ODYx
MDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUY2NDVBMDFGNEJGNTE2MDBCNTRERUQgLyogU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyogRXhjZXB0aW9uRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25EYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1RDIxRkVDREJDODAwQjU0
REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFGNjQ1RDMxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NURFMUZGNDU5NEIwMEI1NERFRCAvKiBNZXNz
YWdlUG9ydElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVz
c2FnZVBvcnRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjU2
NSw3ICszMjU2NCw2IEBACiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFy
Z2V0RmFjdG9yeS5pbiAqLywKIAkJCQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0
aW9uLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUu
aCAqLywKLQkJCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyogRXhjZXB0aW9uRGF0YS5jcHAg
Ki8sCiAJCQkJNTFGNjQ1NjAxRjQ1Mzk4QjAwQjU0REVEIC8qIEV4Y2VwdGlvbkRhdGEuaCAqLywK
IAkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCAqLywKIAkJCQlF
NDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IGQ1OTZkYTQwOGI3ODdjMWRmNjYxOTM2Y2MwYzIx
ZTQ4Mzk5ZTJmODcuLjFiMmYyZmUwY2YzMTA3ZmJjYzk5YTQwYTA3NzIyZjkwN2IwNDhiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKQEAgLTExNCwxMiArMTE0LDE0IEBAIEV4cGVjdGVkPE1v
ZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
cGFyc2UoY29uc3QKICAgICByZXR1cm4gTW9kaWZ5SGVhZGVyc0FjdGlvbiB7IFdURk1vdmUoKnJl
cXVlc3RIZWFkZXJzKSwgV1RGTW92ZSgqcmVzcG9uc2VIZWFkZXJzKSB9OwogfQogCi1Nb2RpZnlI
ZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0CitN
b2RpZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNv
bnN0ICYKIHsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVxdWVzdEhl
YWRlcnMpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVzcG9uc2VIZWFkZXJzKQotICAgIH07
CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHJlcXVlc3RIZWFkZXJzKSwgY3Jvc3NUaHJl
YWRDb3B5KHJlc3BvbnNlSGVhZGVycykgfTsKK30KKworTW9kaWZ5SGVhZGVyc0FjdGlvbiBNb2Rp
ZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlc3BvbnNlSGVhZGVycykpIH07CiB9CiAKIGJvb2wgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
b3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJiBvdGhlcikgY29uc3QKQEAgLTIy
MiwxMSArMjI0LDE0IEBAIGF1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5m
bzo6cGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmIGluZm9WYWx1ZSkKICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTW9kaWZ5SGVhZGVyc0ludmFsaWRP
cGVyYXRpb24pOwogfQogCi1hdXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlcklu
Zm86Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IE1vZGlmeUhlYWRlckluZm8KK2F1dG8gTW9kaWZ5
SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiAt
PiBNb2RpZnlIZWFkZXJJbmZvCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRD
b3B5KG9wZXJhdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShvcGVy
YXRpb24pIH07Cit9CisKK2F1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5m
bzo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gTW9kaWZ5SGVhZGVySW5mbworeworICAgIHJldHVybiB7
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wZXJhdGlvbikpIH07CiB9CiAKIGJvb2wgTW9kaWZ5
SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6b3BlcmF0b3I9PShjb25zdCBNb2RpZnlI
ZWFkZXJJbmZvJiBvdGhlcikgY29uc3QKQEAgLTMxNCwxMSArMzE5LDE0IEBAIEV4cGVjdGVkPFJl
ZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IFJlZGlyZWN0QWN0aW9uOjpwYXJzZShjb25z
dCBKU09OOjpPYmplCiAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25F
cnJvcjo6SlNPTlJlZGlyZWN0SW52YWxpZFR5cGUpOwogfQogCi1SZWRpcmVjdEFjdGlvbiBSZWRp
cmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1JlZGlyZWN0QWN0aW9uIFJlZGlyZWN0
QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
Y3Jvc3NUaHJlYWRDb3B5KGFjdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFk
Q29weShhY3Rpb24pIH07Cit9CisKK1JlZGlyZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjppc29s
YXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFj
dGlvbikpIH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246Om9wZXJhdG9yPT0oY29uc3QgUmVk
aXJlY3RBY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNDMyLDE4ICs0NDAsMTYgQEAgYXV0byBSZWRp
cmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmplY3Qm
IHRyYW5zZm9ybSkgLT4KICAgICByZXR1cm4gYWN0aW9uOwogfQogCi1hdXRvIFJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFVSTFRyYW5z
Zm9ybUFjdGlvbgorYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjppc29s
YXRlZENvcHkoKSBjb25zdCAmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgogewotICAgIHJldHVybiB7
Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShmcmFnbWVudCksCi0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShob3N0KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHBhc3N3b3JkKSwKLSAgICAgICAg
Y3Jvc3NUaHJlYWRDb3B5KHBhdGgpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocG9ydCksCi0g
ICAgICAgIGNyb3NzVGhyZWFkQ29weShxdWVyeVRyYW5zZm9ybSksCi0gICAgICAgIGNyb3NzVGhy
ZWFkQ29weShzY2hlbWUpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkodXNlcm5hbWUpCi0gICAg
fTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZnJhZ21lbnQpLCBjcm9zc1RocmVhZENv
cHkoaG9zdCksIGNyb3NzVGhyZWFkQ29weShwYXNzd29yZCksIGNyb3NzVGhyZWFkQ29weShwYXRo
KSwgY3Jvc3NUaHJlYWRDb3B5KHBvcnQpLCBjcm9zc1RocmVhZENvcHkocXVlcnlUcmFuc2Zvcm0p
LAorICAgICAgICBjcm9zc1RocmVhZENvcHkoc2NoZW1lKSwgY3Jvc3NUaHJlYWRDb3B5KHVzZXJu
YW1lKSB9OworfQorCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlz
b2xhdGVkQ29weSgpICYmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgoreworICAgIHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGZyYWdtZW50KSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGhvc3QpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGFzc3dvcmQpKSwgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUocGF0aCkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwb3J0KSksCisgICAg
ICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHF1ZXJ5VHJhbnNmb3JtKSksIGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKHNjaGVtZSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh1c2VybmFtZSkp
IH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6b3BlcmF0
b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNjk5LDEyICs3
MDUsMTQgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRy
YW5zZm9ybTo6YXBwbHlUb1VSTChVUkwmIHVybCkgY28KICAgICB1cmwuc2V0UXVlcnkodHJhbnNm
b3JtZWRRdWVyeSk7CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5VHJhbnNmb3Jt
CithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3Jt
Ojppc29sYXRlZENvcHkoKSBjb25zdCAmIC0+IFF1ZXJ5VHJhbnNmb3JtCiB7Ci0gICAgcmV0dXJu
IHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGFkZE9yUmVwbGFjZVBhcmFtcyksCi0gICAgICAg
IGNyb3NzVGhyZWFkQ29weShyZW1vdmVQYXJhbXMpCi0gICAgfTsKKyAgICByZXR1cm4geyBjcm9z
c1RocmVhZENvcHkoYWRkT3JSZXBsYWNlUGFyYW1zKSwgY3Jvc3NUaHJlYWRDb3B5KHJlbW92ZVBh
cmFtcykgfTsKK30KKworYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpR
dWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gUXVlcnlUcmFuc2Zvcm0KK3sKKyAg
ICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShhZGRPclJlcGxhY2VQYXJhbXMpKSwg
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVtb3ZlUGFyYW1zKSkgfTsKIH0KIAogYm9vbCBSZWRp
cmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6b3BlcmF0b3I9
PShjb25zdCBRdWVyeVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0CkBAIC03NzksMTUgKzc4Nyw2IEBA
IGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06
OlF1ZXJ5S2V5VmFsdWU6OnBhcnNlKGNvCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGtleSksIHJl
cGxhY2VPbmx5LCBXVEZNb3ZlKHZhbHVlKSB9IH07CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246
OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xh
dGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5S2V5VmFsdWUKLXsKLSAgICByZXR1cm4gewotICAgICAg
ICBjcm9zc1RocmVhZENvcHkoa2V5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHJlcGxhY2VP
bmx5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHZhbHVlKQotICAgIH07Ci19Ci0KIGJvb2wg
UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5
S2V5VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG90aGVyLmtleSA9PSB0aGlzLT5rZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCmlu
ZGV4IDQ2ZTA1ODBjOWM2ZTU0MGYzYjhiMTA5NjA5MGM1N2FiMWIwM2ZjMDkuLmIwY2MwZWQxZjVj
ODE0MzFjYTZiNGU5ZjgxNzY1MzZmMDJkNzgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaApAQCAt
NTAsOCArNTAsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0aW9uV2l0aG91dE1l
dGFkYXRhIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRoU3Ry
aW5nTWV0YWRhdGEgewotICAgIGNvbnN0IFN0cmluZyBzdHJpbmc7Ci0gICAgVCBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IHsgc3RyaW5nLmlzb2xhdGVkQ29weSgpIH0gfTsgfQorICAg
IFN0cmluZyBzdHJpbmc7CisgICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsg
eyBzdHJpbmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9CisgICAgVCBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IHsgV1RGTW92ZShzdHJpbmcpLmlzb2xhdGVkQ29weSgpIH0gfTsgfQogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEmIG90aGVyKSBjb25z
dCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5nOyB9CiAgICAgdm9pZCBzZXJp
YWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0IHsgc2VyaWFsaXplU3RyaW5nKHZl
Y3Rvciwgc3RyaW5nKTsgfQogICAgIHN0YXRpYyBUIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikgeyByZXR1cm4geyB7IGRlc2VyaWFsaXplU3RyaW5nKHNwYW4pIH0gfTsgfQpA
QCAtNzEsMjcgKzcyLDMxIEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0
aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFkZXI7CiAgICAgICAgICAgICBTdHJpbmcgdmFs
dWU7CiAKLSAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsg
fQorICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0K
KyAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7
IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZSh2YWx1ZSkuaXNvbGF0ZWRD
b3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFwcGVuZE9wZXJh
dGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlzLT5oZWFkZXIg
JiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7IH0KICAgICAgICAgfTsKICAgICAgICAgc3Ry
dWN0IFNldE9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyOwogICAgICAgICAg
ICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICAgICAgICAgIFNldE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHko
KSB9OyB9CisgICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1
cm4geyBXVEZNb3ZlKGhlYWRlcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUodmFsdWUpLmlzb2xh
dGVkQ29weSgpIH07IH0KICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXRPcGVy
YXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVhZGVy
ICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CiAgICAgICAgIH07CiAgICAgICAgIHN0
cnVjdCBSZW1vdmVPcGVyYXRpb24gewogICAgICAgICAgICAgU3RyaW5nIGhlYWRlcjsKIAotICAg
ICAgICAgICAgUmVtb3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsg
aGVhZGVyLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpIH07
IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVy
biB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVtb3ZlT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
b3RoZXIuaGVhZGVyID09IHRoaXMtPmhlYWRlcjsgfQogICAgICAgICB9OwogICAgICAgICB1c2lu
ZyBPcGVyYXRpb25WYXJpYW50ID0gc3RkOjp2YXJpYW50PEFwcGVuZE9wZXJhdGlvbiwgU2V0T3Bl
cmF0aW9uLCBSZW1vdmVPcGVyYXRpb24+OwogICAgICAgICBPcGVyYXRpb25WYXJpYW50IG9wZXJh
dGlvbjsKIAogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVySW5mbywgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwotICAgICAgICBNb2RpZnlIZWFk
ZXJJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBNb2RpZnlIZWFkZXJJbmZvIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIE1vZGlmeUhlYWRlckluZm8gaXNvbGF0ZWRD
b3B5KCkgJiY7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJJbmZv
JikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0
OwogICAgICAgICBzdGF0aWMgTW9kaWZ5SGVhZGVySW5mbyBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0
IHVpbnQ4X3Q+KTsKQEAgLTExNSw3ICsxMjAsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9k
aWZ5SGVhZGVyc0FjdGlvbiB7CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGhhc2hUYWJsZVR5cGUgPT0gSGFzaFRhYmxlVHlwZTo6RGVsZXRlZDsgfQogCiAgICAgc3Rh
dGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2Uo
Y29uc3QgSlNPTjo6T2JqZWN0Jik7Ci0gICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICY7CisgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiYpIGNvbnN0OwogICAgIHZvaWQg
c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgIHN0YXRpYyBNb2RpZnlIZWFk
ZXJzQWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTI3LDEzICsx
MzMsMTUgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICBzdHJ1
Y3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiB7CiAgICAgICAgIFN0cmluZyBleHRlbnNpb25QYXRoOwog
Ci0gICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4geyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRXh0ZW5zaW9u
UGF0aEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgZXh0ZW5zaW9uUGF0
aC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGV4dGVuc2lvblBhdGgpLmlzb2xhdGVkQ29w
eSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4dGVuc2lvblBhdGhBY3Rp
b24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5leHRlbnNpb25QYXRoID09IHRoaXMtPmV4
dGVuc2lvblBhdGg7IH0KICAgICB9OwogICAgIHN0cnVjdCBSZWdleFN1YnN0aXR1dGlvbkFjdGlv
biB7CiAgICAgICAgIFN0cmluZyByZWdleFN1YnN0aXR1dGlvbjsKIAotICAgICAgICBSZWdleFN1
YnN0aXR1dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHJlZ2V4U3Vi
c3RpdHV0aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJzdGl0dXRpb25B
Y3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHJlZ2V4U3Vic3RpdHV0aW9u
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24gaXNv
bGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHJlZ2V4U3Vic3RpdHV0aW9uKS5pc29s
YXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdleFN1YnN0
aXR1dGlvbkFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnJlZ2V4U3Vic3RpdHV0
aW9uID09IHRoaXMtPnJlZ2V4U3Vic3RpdHV0aW9uOyB9CiAgICAgfTsKICAgICBzdHJ1Y3QgVVJM
VHJhbnNmb3JtQWN0aW9uIHsKQEAgLTE0NCw3ICsxNTIsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKIAogICAg
ICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeUtleVZhbHVlLCBzdGQ6OmVycm9yX2Nv
ZGU+IHBhcnNlKGNvbnN0IEpTT046OlZhbHVlJik7Ci0gICAgICAgICAgICAgICAgUXVlcnlLZXlW
YWx1ZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgICAgICAgICBRdWVyeUtleVZhbHVl
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBrZXkuaXNvbGF0ZWRDb3B5KCksIHJl
cGxhY2VPbmx5LCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICAgICAgUXVl
cnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoa2V5KS5pc29s
YXRlZENvcHkoKSwgcmVwbGFjZU9ubHksIFdURk1vdmUodmFsdWUpLmlzb2xhdGVkQ29weSgpIH07
IH0KICAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYp
IGNvbnN0OwogICAgICAgICAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYp
IGNvbnN0OwogICAgICAgICAgICAgICAgIHN0YXRpYyBRdWVyeUtleVZhbHVlIGRlc2VyaWFsaXpl
KFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTU1LDcgKzE2NCw4IEBAIHN0cnVjdCBXRUJDT1JF
X0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZW1v
dmVQYXJhbXM7CiAKICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeVRyYW5zZm9ybSwg
c3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICAgICAgICAg
IFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICAgICAgUXVlcnlU
cmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgICAgIFF1ZXJ5VHJhbnNm
b3JtIGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFF1ZXJ5VHJhbnNmb3JtJikgY29uc3Q7CiAgICAgICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0
b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRpYyBRdWVyeVRyYW5zZm9ybSBk
ZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE3NCw3ICsxODQsOCBAQCBzdHJ1
Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICBTdHJpbmcgdXNlcm5h
bWU7CiAKICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFVSTFRyYW5zZm9ybUFjdGlvbiwgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICAgICAgVVJMVHJhbnNm
b3JtQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBVUkxUcmFuc2Zvcm1BY3Rp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgVVJMVHJhbnNmb3JtQWN0aW9uIGlz
b2xhdGVkQ29weSgpICYmOwogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMVHJhbnNm
b3JtQWN0aW9uJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90
PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgVVJMVHJhbnNmb3JtQWN0aW9uIGRlc2VyaWFsaXpl
KFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTg0LDcgKzE5NSw4IEBAIHN0cnVjdCBXRUJDT1JF
X0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgc3RydWN0IFVSTEFjdGlvbiB7CiAgICAgICAg
IFN0cmluZyB1cmw7CiAKLSAgICAgICAgVVJMQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIHsgdXJsLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgVVJMQWN0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBVUkxBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHVybCku
aXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMQWN0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIudXJsID09IHRoaXMtPnVybDsgfQogICAg
IH07CiAKQEAgLTIwMyw3ICsyMTUsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RB
Y3Rpb24gewogICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBoYXNoVGFi
bGVUeXBlID09IEhhc2hUYWJsZVR5cGU6OkRlbGV0ZWQ7IH0KIAogICAgIHN0YXRpYyBFeHBlY3Rl
ZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmpl
Y3QmKTsKLSAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBSZWRp
cmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFJlZGlyZWN0QWN0aW9uIGlz
b2xhdGVkQ29weSgpICYmOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWRpcmVjdEFjdGlv
biYpIGNvbnN0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0Owog
ICAgIHN0YXRpYyBSZWRpcmVjdEFjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IGQ3MTI2OTc3ZjYxMGRmYjExZTQ0YmVl
NzI0OGY3YzNiOGMwNDkwMzMuLjUxZWY5YmYwMjAyYThlNjQ4MzNiMTk0MzU2OGY4NzAxZjZkYWFm
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRp
YyBib29sIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMsIFVu
aXZlcnNhbEFjdGlvblNldCYmCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRl
bnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTiwg
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewogI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgY2FsbE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBydWxlSlNPTi5p
c29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBwYXJzZWRSdWxlTGlzdC5pc29sYXRlZENv
cHkoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVKU09OID0gcnVsZUpTT04uaXNvbGF0
ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGFyc2Vk
UnVsZUxpc3QpKV0gewogICAgICAgICBBU1NFUlQocGFyc2VSdWxlTGlzdChydWxlSlNPTikudmFs
dWUoKSA9PSBwYXJzZWRSdWxlTGlzdCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNl
ci5jcHAKaW5kZXggYjMzMzlmZjY0NzRjNTdhZmU0ZDEzY2JmMDM0ZDRiNTgyZjQ0OGIwNC4uODgy
NDAyYzdiODUzYzFlNWJjNTdmZTZhZTdkNTM3YjA5NmNmZjViYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNl
ci5jcHAKQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjpl
cnJvcl9jb2RlPiBsb2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYgogICAgIGlm
IChhdXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24oImlmLWZyYW1lLXVybCJfcywgZ2V0U3RyaW5n
TGlzdCwgQWN0aW9uQ29uZGl0aW9uOjpJZkZyYW1lVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGVycm9yKTsKIAorICAgIHRyaWdnZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgIHJl
dHVybiB0cmlnZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKaW5kZXggM2I0ZmEzMzkwMTMwMDdm
MzU0Mjc4OGEyNDU5NTI4NTE3MGIzNTMyMy4uNjJlNGNlOGQ4NDdiNjY0NDAwMGE2NGI0OGIyNDZh
MzdiMmZiODcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcApAQCAtOTUsMjMgKzk1LDI2IEBAIHNpemVf
dCBEZXNlcmlhbGl6ZWRBY3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90
PiBzZXJpYWxpemVkQWN0aW9uCiAgICAgcmV0dXJuIDEgKyBWYXJpYW50RGVzZXJpYWxpemVyPEFj
dGlvbkRhdGE+OjpzZXJpYWxpemVkTGVuZ3RoKHNlcmlhbGl6ZWRBY3Rpb25zLnN1YnNwYW4obG9j
YXRpb24gKyAxKSwgc2VyaWFsaXplZEFjdGlvbnNbbG9jYXRpb25dKTsKIH0KIAotVHJpZ2dlciBU
cmlnZ2VyOjppc29sYXRlZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENv
cHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgdXJsRmlsdGVyLmlzb2xhdGVk
Q29weSgpLAotICAgICAgICB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCi0gICAgICAgIHRvcFVS
TEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgZnJhbWVVUkxGaWx0ZXJJc0Nhc2VTZW5z
aXRpdmUsCi0gICAgICAgIGZsYWdzLAotICAgICAgICBjb25kaXRpb25zLmlzb2xhdGVkQ29weSgp
Ci0gICAgfTsKKyAgICByZXR1cm4geyB1cmxGaWx0ZXIuaXNvbGF0ZWRDb3B5KCksIHVybEZpbHRl
cklzQ2FzZVNlbnNpdGl2ZSwgdG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmcmFtZVVSTEZp
bHRlcklzQ2FzZVNlbnNpdGl2ZSwgZmxhZ3MsIGNyb3NzVGhyZWFkQ29weShjb25kaXRpb25zKSB9
OwogfQogCi1BY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmln
Z2VyOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUodXJsRmlsdGVy
KS5pc29sYXRlZENvcHkoKSwgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCB0b3BVUkxGaWx0ZXJJ
c0Nhc2VTZW5zaXRpdmUsIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmbGFncywgY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoY29uZGl0aW9ucykpIH07Cit9CisKK0FjdGlvbiBBY3Rpb246
Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHko
bV9kYXRhKSB9OwogfQogCitBY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAg
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZGF0YSkpIH07Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKaW5kZXggN2UzOGQwYTJmNTQzNGU1Yzlh
ZjQzZDUyZmExOTAxZDQ3Yzg5MjdlMy4uNzg3ZGJkNzA1NDQzYWI1MDIyNTRjMDJlZWE4ZGM4NzE1
NmRhY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCkBAIC00Nyw5ICs0NywxMCBAQCBzdHJ1Y3QgVHJpZ2dl
ciB7CiAgICAgUmVzb3VyY2VGbGFncyBmbGFncyB7IDAgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBj
b25kaXRpb25zOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7
CisgICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSAmJjsKICAgICAKLSAg
ICB+VHJpZ2dlcigpCisgICAgdm9pZCBjaGVja1ZhbGlkaXR5KCkKICAgICB7CiAgICAgICAgIGF1
dG8gYWN0aW9uQ29uZGl0aW9uID0gc3RhdGljX2Nhc3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFncyAm
IEFjdGlvbkNvbmRpdGlvbk1hc2spOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFjdGlvbkNvbmRp
dGlvbiwgY29uZGl0aW9ucy5pc0VtcHR5KCkgPT0gKGFjdGlvbkNvbmRpdGlvbiA9PSBBY3Rpb25D
b25kaXRpb246Ok5vbmUpKTsKQEAgLTEzMSwxMCArMTMyLDExIEBAIHN0cnVjdCBBY3Rpb24gewog
CiAgICAgY29uc3QgQWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVf
RVhQT1JUIEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBB
Y3Rpb25EYXRhIG1fZGF0YTsKKyAgICBBY3Rpb25EYXRhIG1fZGF0YTsKIH07CiAKIHN0cnVjdCBE
ZXNlcmlhbGl6ZWRBY3Rpb24gOiBwdWJsaWMgQWN0aW9uIHsKQEAgLTE1OCwxOCArMTYwLDE2IEBA
IHB1YmxpYzoKICAgICBjb25zdCBUcmlnZ2VyJiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90
cmlnZ2VyOyB9CiAgICAgY29uc3QgQWN0aW9uJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Fj
dGlvbjsgfQogCi0gICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rp
b24uaXNvbGF0ZWRDb3B5KCkgfTsKLSAgICB9CisgICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwg
bV9hY3Rpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShtX3RyaWdnZXIpLmlzb2xhdGVkQ29w
eSgpLCBXVEZNb3ZlKG1fYWN0aW9uKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBvdGhlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3RyaWdnZXIgPT0gb3RoZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09
IG90aGVyLm1fYWN0aW9uOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBUcmlnZ2VyIG1f
dHJpZ2dlcjsKLSAgICBjb25zdCBBY3Rpb24gbV9hY3Rpb247CisgICAgVHJpZ2dlciBtX3RyaWdn
ZXI7CisgICAgQWN0aW9uIG1fYWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaAppbmRleCBlMWU3YWRiOTg2Y2Fh
ZDY3MjE1OWIxZTNjMjgwYTg5ZDdhYzE3OTBmLi4yMWYzYzFmYjMwNzYyNmNmNWI2YzU0NjdlZjQy
YTcwYTRjMzdiYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0zOSwyNyArMzksMTggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZTsgfQogICAgIFN0cmluZyYmIHJlbGVhc2VNZXNzYWdlKCkgeyByZXR1cm4gV1RGTW92ZSht
X21lc3NhZ2UpOyB9CiAKLSAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENv
cHkoKSB9OwotICAgIH0KKyAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJl
dHVybiBFeGNlcHRpb24geyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OyB9Cisg
ICAgRXhjZXB0aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29k
ZSwgV1RGTW92ZShtX21lc3NhZ2UpLmlzb2xhdGVkQ29weSgpIH07IH0KIAogcHJpdmF0ZToKICAg
ICBFeGNlcHRpb25Db2RlIG1fY29kZTsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwogfTsKIAotRXhj
ZXB0aW9uIGlzb2xhdGVkQ29weShFeGNlcHRpb24mJik7Ci0KIGlubGluZSBFeGNlcHRpb246OkV4
Y2VwdGlvbihFeGNlcHRpb25Db2RlIGNvZGUsIFN0cmluZyBtZXNzYWdlKQogICAgIDogbV9jb2Rl
IHsgY29kZSB9CiAgICAgLCBtX21lc3NhZ2UgeyBXVEZNb3ZlKG1lc3NhZ2UpIH0KIHsKIH0KIAot
aW5saW5lIEV4Y2VwdGlvbiBpc29sYXRlZENvcHkoRXhjZXB0aW9uJiYgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IHZhbHVlLmNvZGUoKSwgdmFsdWUucmVsZWFzZU1lc3NhZ2UoKS5p
c29sYXRlZENvcHkoKSB9OwotfQotCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYy
ZjE2YzMyNTg1ZTRhODFkNmE4NTcyNDIxYmFiYWM3OGI0MjQ5ZjkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bkRhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotRXhjZXB0aW9uRGF0YSBFeGNlcHRpb25EYXRhOjppc29sYXRlZENvcHko
KSBjb25zdAotewotICAgIEV4Y2VwdGlvbkRhdGEgcmVzdWx0OwotICAgIHJlc3VsdC5jb2RlID0g
Y29kZTsKLSAgICByZXN1bHQubWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V4Y2VwdGlvbkRhdGEuaAppbmRleCBmYzc5OGIzNjRkM2E3OGY3MWEzYzA5OWFkOWVkZmViMjFj
MDQ0NmFkLi45ODUzMzc2ZjFjNGRkY2ZkMWE1MWFkNGFlYWM5ZDA2NGVlOTlmNTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FeGNlcHRpb25EYXRhLmgKQEAgLTM0LDcgKzM0LDggQEAgc3RydWN0IEV4Y2VwdGlv
bkRhdGEgewogICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKICAgICBTdHJpbmcgbWVzc2FnZTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgRXhjZXB0aW9uRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY29kZSwg
bWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRXhjZXB0aW9uRGF0YSBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IGNvZGUsIFdURk1vdmUobWVzc2FnZSkuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5o
CmluZGV4IGJiZmQ5NjY4NTAxNjMxZjUxMjJiOTQwZDliMDAwNDIyZTk5ZWQwNWMuLjFhMTliMGVl
OWEyYTQ1MmJmNTc3NDBhMmFiZmRiZGRiYzIzMzhhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oCkBAIC05MCw4ICs5MCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IGlzb2xhdGVkQ29weShFeGNlcHRpb25Pcjx2b2lkPiYmKTsKLQogdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpFeGNlcHRp
b25PcihFeGNlcHRpb24mJiBleGNlcHRpb24pCiAgICAgOiBtX3ZhbHVlKG1ha2VVbmV4cGVjdGVk
KFdURk1vdmUoZXhjZXB0aW9uKSkpCiB7CkBAIC0xOTMsMTMgKzE5MSw2IEBAIGlubGluZSBFeGNl
cHRpb24gRXhjZXB0aW9uT3I8dm9pZD46OnJlbGVhc2VFeGNlcHRpb24oKQogICAgIHJldHVybiBX
VEZNb3ZlKG1fdmFsdWUuZXJyb3IoKSk7CiB9CiAKLWlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBp
c29sYXRlZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4mJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUu
aGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBpc29sYXRlZENvcHkodmFsdWUucmVsZWFz
ZUV4Y2VwdGlvbigpKTsKLSAgICByZXR1cm4geyB9OwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gaW5saW5lIGNvbnN0ZXhwciBib29sIElzRXhjZXB0aW9uT3IgPSBXVEY6OklzVGVtcGxhdGU8
c3RkOjpkZWNheV90PFQ+LCBFeGNlcHRpb25Pcj46OnZhbHVlOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgYm9vbCBpc0V4Y2VwdGlvbk9yID0gSXNFeGNlcHRpb25PcjxUPj4gc3RydWN0IFR5cGVP
ckV4Y2VwdGlvbk9yVW5kZXJseWluZ1R5cGVJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDk4NWY3YTYyZjBjMWYzOTc1NTgy
ZWIzZjliOTg5NzUxNTYxNTY2NzcuLmU1YWEyNGVhMWY5ZDJhNzg2ZDdiZTZkYzNkNDE0MWQ5ZmQx
OTNhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3Jl
YXRvci5jcHAKQEAgLTQ0LDEwICs0NCw4IEBAIHN0cnVjdCBGaWxlSW5mb3JtYXRpb24gewogICAg
IFN0cmluZyByZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogCi0gICAgRmls
ZUluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
RmlsZUluZm9ybWF0aW9uIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KKyAgICBGaWxl
SW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHBhdGguaXNvbGF0
ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJl
dHVybiB7IFdURk1vdmUocGF0aCkuaXNvbGF0ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRl
ZENvcHkoKSwgV1RGTW92ZShkaXNwbGF5TmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAog
c3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnks
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiYgZmls
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBlYTdkZmFjZjYyYjc4
MjU1OWQ2NWUzYmZiNmIzZDBjY2RmZTI1MjFjLi5hMjkwNmQ3Y2U3YTY1ZTFhYzRjZWFmOGU2NDI2
ZTFkMDEzNDY5ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTQ5
NSwxMyArNDk1LDEzIEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlc1dp
dGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmZpbGVzQ2hvc2VuKHBhdGhzLCByZXBsYWNlbWVudFBhdGhzKTsKICAgICB9OwogCi0g
ICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3Nl
biA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwgdHJhbnNjb2RpbmdQYXRocyA9IHRyYW5zY29k
aW5nUGF0aHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEku
aXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNp
b24uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGlu
Z1F1ZXVlKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hv
c2VuKSwgdHJhbnNjb2RpbmdQYXRocyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29k
aW5nUGF0aHMpKSwgdHJhbnNjb2RpbmdVVEkgPSBXVEZNb3ZlKHRyYW5zY29kaW5nVVRJKS5pc29s
YXRlZENvcHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNpb24gPSBXVEZNb3ZlKHRyYW5zY29kaW5nRXh0
ZW5zaW9uKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICAgICAgYXV0byByZXBsYWNlbWVudFBhdGhzID0gdHJhbnNj
b2RlSW1hZ2VzKHRyYW5zY29kaW5nUGF0aHMsIHRyYW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4
dGVuc2lvbik7CiAgICAgICAgIEFTU0VSVCh0cmFuc2NvZGluZ1BhdGhzLnNpemUoKSA9PSByZXBs
YWNlbWVudFBhdGhzLnNpemUoKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsRmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3NlbiksIHJlcGxhY2VtZW50
UGF0aHMgPSByZXBsYWNlbWVudFBhdGhzLmlzb2xhdGVkQ29weSgpXSgpIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsRmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxl
c0Nob3NlbiksIHJlcGxhY2VtZW50UGF0aHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXBs
YWNlbWVudFBhdGhzKSldIHsKICAgICAgICAgICAgIGNhbGxGaWxlc0Nob3NlbihyZXBsYWNlbWVu
dFBhdGhzKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCBmYTk5YTYwZDZhMjc4ZGQ5ZDgy
ZmZiZTllZTI4YTc3MTM2ZDMyMDE1Li4yODk2MjhhZWE4OTViYjI4Y2QwNjMyNjViNWU0NWI2NTNh
NTA1OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6
OnVwZGF0ZVByZWRpY3RlZEJhc2VVUkwoY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgYm9vbCBzaAog
ICAgICAgICByZXR1cm47CiAgICAgVVJMIHRlbXAgeyBtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUo
aHJlZkF0dHJpYnV0ZS0+dmFsdWUpKSB9OwogICAgIGlmICghc2hvdWxkUmVzdHJpY3RCYXNlVVJM
U2NoZW1lcyB8fCBTZWN1cml0eVBvbGljeTo6aXNCYXNlVVJMU2NoZW1lQWxsb3dlZCh0ZW1wKSkK
LSAgICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IHRlbXAuaXNvbGF0ZWRDb3B5KCk7
CisgICAgICAgIG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSBXVEZNb3ZlKHRlbXApLmlzb2xh
dGVkQ29weSgpOwogfQogCiBIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihj
b25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAppbmRleCBjZWU1NzZiODNlNDhkMmZlN2E0M2M0MDc3
N2RkOWMwMTRhMjVhMThkLi43NGJkMTI5ZjFjODEyMGQzNmNhYzYxZTI3OGYwYThkYmM2MDVlZTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGlj
eS5jcHAKQEAgLTE2MSwxNCArMTYxLDE0IEBAIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG9idGFp
bkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAg
cmV0dXJuIHBvbGljeTsKIH0KIAotQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitDcm9zc09yaWdpbk9wZW5lclBvbGlj
eSBDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAg
IHJldHVybiB7Ci0gICAgICAgIHZhbHVlLAotICAgICAgICByZXBvcnRpbmdFbmRwb2ludC5pc29s
YXRlZENvcHkoKSwKLSAgICAgICAgcmVwb3J0T25seVZhbHVlLAotICAgICAgICByZXBvcnRPbmx5
UmVwb3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OworICAgIHJldHVybiB7IHZh
bHVlLCByZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHkoKSwgcmVwb3J0T25seVZhbHVlLCBy
ZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSgp
ICYmCit7CisgICAgcmV0dXJuIHsgdmFsdWUsIFdURk1vdmUocmVwb3J0aW5nRW5kcG9pbnQpLmlz
b2xhdGVkQ29weSgpLCByZXBvcnRPbmx5VmFsdWUsIFdURk1vdmUocmVwb3J0T25seVJlcG9ydGlu
Z0VuZHBvaW50KS5pc29sYXRlZENvcHkoKSB9OwogfQogCiB2b2lkIGFkZENyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5SGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kmIGNvb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbk9wZW5lclBvbGljeS5oCmluZGV4IDUyMjEwNjk4NjQ4ZTA4M2ZhMGQ5ZjI5Y2VmZjA3
MzFmOWVlNDk4Y2QuLjIwZWM1M2I4ZWM3ZWViZjRkMmE2OWFhYzU4MDM1NjJmNzA4NTg0YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCkBA
IC02MCw3ICs2MCw4IEBAIHN0cnVjdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSB7CiAgICAgY29u
c3QgU3RyaW5nJiByZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bvc2l0aW9uKENPT1BEaXNwb3NpdGlv
bikgY29uc3Q7CiAgICAgYm9vbCBoYXNSZXBvcnRpbmdFbmRwb2ludChDT09QRGlzcG9zaXRpb24p
IGNvbnN0OwogCi0gICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsK
KyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBpc29sYXRlZENvcHkoKSAmJjsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3k+IGRlY29kZShEZWNvZGVyJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKaW5kZXggMjBkZGVmZGU0MjgxYmVhYzZiZTk3M2YxODUzNGRlZjhhNTU5
ZDFiOS4uZjE4ZGI4Njk1YjM5N2MxYjJhM2JkMzAzMTExZGViOWU1NWU0OTQ0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBS
ZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYQogewogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hh
YmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdp
dGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+
c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRD
b3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRo
RGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNj
cmlwdCgpIH0sIHNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpLmlz
b2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2Nr
ZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKICAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVy
LT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggODhjMDM2ZDI2NDUxY2YxNzRmYmZm
OGMwMDBlMjA1YzFkZmY3ZGY2Ni4uNWFjZTAxNWJkNWVmNzI5M2I2MGVhMWU2YTZkZTFlOGNmODFl
ODlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNDUsNyArNDUsOCBA
QCBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKIAogICAgIEZldGNoT3B0aW9ucygpID0gZGVmYXVsdDsK
ICAgICBGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24sIE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwg
UmVkaXJlY3QsIFJlZmVycmVyUG9saWN5LCBTdHJpbmcmJiwgYm9vbCk7Ci0gICAgRmV0Y2hPcHRp
b25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZGVzdGluYXRpb24sIG1vZGUsIGNy
ZWRlbnRpYWxzLCBjYWNoZSwgcmVkaXJlY3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNv
bGF0ZWRDb3B5KCksIGtlZXBBbGl2ZSB9OyB9CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYgeyByZXR1cm4geyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNh
Y2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ksIGludGVncml0eS5pc29sYXRlZENvcHkoKSwg
a2VlcEFsaXZlIH07IH0KKyAgICBGZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1
cm4geyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVm
ZXJyZXJQb2xpY3ksIFdURk1vdmUoaW50ZWdyaXR5KS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZl
IH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlUGVyc2lzdGVu
dChFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBlcnNpc3RlbnQoRGVjb2RlciYsIEZldGNoT3B0
aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5l
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCmluZGV4IDQzMWNm
MWM1YjJiZDFmOTAzZDE2YmVhZjc3MTIwZDcxYTYxMDU5Y2QuLjhjMGFkMGY5MDczNzU5NjA2ZWI4
YzY5NDYyMzI3NjZlZWY4NTMwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFp
bmVyLmgKQEAgLTM2LDcgKzM2LDggQEAgc3RydWN0IFBvbGljeUNvbnRhaW5lciB7CiAgICAgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CiAgICAgLy8gRklY
TUU6IENTUCBsaXN0IGFuZCByZWZlcnJlciBwb2xpY3kgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIFBv
bGljeUNvbnRhaW5lci4KIAotICAgIFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7
IGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0
ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kp
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KS5pc29sYXRl
ZENvcHkoKSB9OyB9CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFBvbGljeUNvbnRhaW5lcj4gZGVjb2RlKERlY29kZXImKTsKIH07CkBAIC00NiwxNCAr
NDcsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvbGljeUNvbnRhaW5lciYgYSwg
Y29uc3QgUG9saWN5Q29udGFpbmVyJiBiKQogICAgIHJldHVybiBhLmNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kgPT0gYi5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5ICYmIGEuY3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kgPT0gYi5jcm9zc09yaWdpbk9wZW5lclBvbGljeTsKIH0KIAotaW5saW5lIFBv
bGljeUNvbnRhaW5lciBQb2xpY3lDb250YWluZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENv
cHkoKSwKLSAgICAgICAgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCkKLSAg
ICB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBQb2xpY3lDb250YWluZXI6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggMDU3OGY2M2JlYmViMWE4
N2Y0MGFmNDdiOTQzMmI2MmU1YmRjNGMyMi4uYjNhOWY4MGFmNjAyODNiOTI0ZDQ3NTk4NmUwZjRl
ZmE2Y2QwMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuY3BwCkBAIC02MCw1MyArNjAsMjcgQEAgYm9vbCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICYmIChtX3RpbWVzVG9TZW5kLnNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZCB8fCBtX3RpbWVzVG9TZW5kLmRlc3RpbmF0aW9uRWFybGllc3RU
aW1lVG9TZW5kKTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IHJldHVybiB7Ci0gICAgICAgIHRva2VuQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAotICAgICAg
ICBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIGtleUlEQmFzZTY0
VVJMLmlzb2xhdGVkQ29weSgpLAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBibGluZGVy
LCB3YWl0aW5nVG9rZW4sIHJlYWR5VG9rZW4sCisjZW5kaWYKKyAgICAgICAgdmFsdWVCYXNlNjRV
UkwuaXNvbGF0ZWRDb3B5KCkKICAgICB9OwogfQogCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRv
a2VuOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFNlY3JldFRva2VuOjpp
c29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRp
b25TZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBTZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJh
bE5vbmNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBub25jZS5pc29sYXRlZENvcHkoKSB9OwotfQot
Ci1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpICYmCiB7CiAgICAgcmV0dXJuIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgYmxpbmRlciwKLSAgICAgICAgd2FpdGluZ1Rva2Vu
LAotICAgICAgICByZWFkeVRva2VuLAorICAgICAgICBibGluZGVyLCB3YWl0aW5nVG9rZW4sIHJl
YWR5VG9rZW4sCiAjZW5kaWYKLSAgICAgICAgdmFsdWVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCkK
KyAgICAgICAgV1RGTW92ZSh2YWx1ZUJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCkKICAgICB9Owog
fQogCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9
OwotfQotCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9r
ZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjpp
c29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IFByaXZhdGVDbGlja01lYXN1cmVtZW50IGNvcHkgewogICAgICAgICBtX3NvdXJjZUlELApAQCAt
MTI0LDYgKzk4LDI0IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1
cmVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBjb3B5OwogfQogCitQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5
KCkgJiYKK3sKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjb3B5IHsKKyAgICAgICAgbV9z
b3VyY2VJRCwKKyAgICAgICAgV1RGTW92ZShtX3NvdXJjZVNpdGUpLmlzb2xhdGVkQ29weSgpLAor
ICAgICAgICBXVEZNb3ZlKG1fZGVzdGluYXRpb25TaXRlKS5pc29sYXRlZENvcHkoKSwKKyAgICAg
ICAgV1RGTW92ZShtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpLmlzb2xhdGVkQ29weSgpLAor
ICAgICAgICBXVEZNb3ZlKG1fdGltZU9mQWRDbGljaykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAg
IG1faXNFcGhlbWVyYWwsCisgICAgfTsKKyAgICBjb3B5Lm1fYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSA9IFdURk1vdmUobV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKKyAgICBjb3B5Lm1fdGltZXNU
b1NlbmQgPSBXVEZNb3ZlKG1fdGltZXNUb1NlbmQpOworICAgIGNvcHkubV9lcGhlbWVyYWxTb3Vy
Y2VOb25jZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZXBoZW1lcmFsU291cmNlTm9uY2Up
KTsKKyAgICBjb3B5Lm1fc291cmNlVW5saW5rYWJsZVRva2VuID0gV1RGTW92ZShtX3NvdXJjZVVu
bGlua2FibGVUb2tlbikuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5tX3NvdXJjZVNlY3JldFRv
a2VuID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zb3VyY2VTZWNyZXRUb2tlbikpOworICAg
IHJldHVybiBjb3B5OworfQorCiBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05laXRo
ZXJTYW1lU2l0ZU5vckNyb3NzU2l0ZVRyaWdnZXJpbmdFdmVudChjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgQXR0
cmlidXRpb25UcmlnZ2VyRGF0YSYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKICAgICBhdXRv
IGlzU2FtZVNpdGVUcmlnZ2VyaW5nRXZlbnQgPSByZWRpcmVjdERvbWFpbi5tYXRjaGVzKGZpcnN0
UGFydHlVUkwpICYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21h
aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5o
CmluZGV4IDAxZjg3MzQ4YWI2YTIxYTAyZTYwMzZiMjU4ZTg5MjcyNjBlM2U3MTguLjFlNzgxYTlk
ZWRhOTA2YWYzMWVkMGIyMDliNTU5YTRjMWQ0YTI1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC03Nyw3ICs3Nyw4IEBAIHB1Ymxp
YzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlU2l0ZSBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiBTb3VyY2VTaXRlIHsgcmVnaXN0cmFibGVEb21haW4uaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgICAgICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4gU291cmNlU2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07
IH0KKyAgICAgICAgU291cmNlU2l0ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiBTb3VyY2VT
aXRlIHsgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VTaXRlJiBvdGhlcikgY29uc3QKICAg
ICAgICAgewpAQCAtMTIzLDcgKzEyNCw4IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyByZWdpc3RyYWJsZURvbWFp
bi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRl
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNp
dGUgeyByZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIEF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlIHsgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRD
b3B5KCkgfTsgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTE3MSw3ICsxNzMsOCBA
QCBwdWJsaWM6CiAgICAgc3RydWN0IEVwaGVtZXJhbE5vbmNlIHsKICAgICAgICAgU3RyaW5nIG5v
bmNlOwogCi0gICAgICAgIEVwaGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAg
ICAgICBFcGhlbWVyYWxOb25jZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbm9u
Y2UuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBFcGhlbWVyYWxOb25jZSBpc29sYXRlZENv
cHkoKSAmJiAgeyByZXR1cm4geyBXVEZNb3ZlKG5vbmNlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAK
ICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKQEAgLTE4Nywz
MSArMTkwLDM3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRV
Ukw7CiAgICAgICAgIAotICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CisgICAgICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAg
ICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgfTsKIAogICAgIHN0
cnVjdCBTb3VyY2VVbmxpbmthYmxlVG9rZW4gOiBVbmxpbmthYmxlVG9rZW4gewotICAgICAgICBT
b3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFNvdXJj
ZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgVW5saW5r
YWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVVubGlua2FibGVU
b2tlbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRGVzdGluYXRpb25VbmxpbmthYmxl
VG9rZW4gOiBVbmxpbmthYmxlVG9rZW4gewotICAgICAgICBEZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgRGVzdGluYXRpb25VbmxpbmthYmxl
VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6
aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBp
c29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5
KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgU2VjcmV0VG9rZW4gewogICAgICAgICBTdHJp
bmcgdG9rZW5CYXNlNjRVUkw7CiAgICAgICAgIFN0cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7CiAg
ICAgICAgIFN0cmluZyBrZXlJREJhc2U2NFVSTDsKLSAgICAgICAgU2VjcmV0VG9rZW4gaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyB0b2tlbkJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSwgc2lnbmF0dXJlQmFz
ZTY0VVJMLmlzb2xhdGVkQ29weSgpLCBrZXlJREJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSB9OyB9
CisgICAgICAgIFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92
ZSh0b2tlbkJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoc2lnbmF0dXJlQmFzZTY0
VVJMKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShrZXlJREJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICB9OwogCiAgICAgc3Ry
dWN0IFNvdXJjZVNlY3JldFRva2VuIDogU2VjcmV0VG9rZW4gewotICAgICAgICBTb3VyY2VTZWNy
ZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgU291cmNlU2VjcmV0VG9rZW4g
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENv
cHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsg
cmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KICAgICB9OwogCiAgICAg
c3RydWN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBTZWNyZXRUb2tlbiB7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CisgICAgICAgIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7
IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIERlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBTZWNyZXRUb2tl
bjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSB7CkBAIC00MjksNyArNDM4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01l
YXN1cmVtZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFByaXZh
dGVDbGlja01lYXN1cmVtZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9F
WFBPUlQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKIHByaXZh
dGU6CiAgICAgc3RhdGljIEV4cGVjdGVkPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4g
cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3RRdWVyeShjb25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4IDZhZWU5ZWJiYTQyN2MyNjc2ZDQ0ZWIwZGUx
ZmMwNGQxNDgzY2IwNjUuLmZhNmM5NmRlNDU4ZTAwZTA4YmE1YjQ5MDFlY2FhOTIzMDg1ZDE5OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcApAQCAtNjgsMTUgKzY4
LDI2IEBAIFZlY3RvcjxSZWY8UGVyZm9ybWFuY2VTZXJ2ZXJUaW1pbmc+PiBSZXNvdXJjZVRpbWlu
Zzo6cG9wdWxhdGVTZXJ2ZXJUaW1pbmcoKSBjb25zCiAgICAgfSk7CiB9CiAKLVJlc291cmNlVGlt
aW5nIFJlc291cmNlVGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdAorUmVzb3VyY2VUaW1pbmcg
UmVzb3VyY2VUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VUaW1pbmcoCisgICAgcmV0dXJuIFJlc291cmNlVGltaW5nIHsKICAgICAgICAgbV91cmwu
aXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIG1faW5pdGlhdG9yLmlzb2xhdGVkQ29weSgpLAogICAg
ICAgICBtX3Jlc291cmNlTG9hZFRpbWluZy5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9uZXR3
b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGNyb3NzVGhyZWFkQ29weSht
X3NlcnZlclRpbWluZykKLSAgICApOworICAgIH07Cit9CisKK1Jlc291cmNlVGltaW5nIFJlc291
cmNlVGltaW5nOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiBSZXNvdXJjZVRpbWlu
ZyB7CisgICAgICAgIFdURk1vdmUobV91cmwpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZN
b3ZlKG1faW5pdGlhdG9yKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShtX3Jlc291
cmNlTG9hZFRpbWluZykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9uZXR3b3Jr
TG9hZE1ldHJpY3MpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShtX3NlcnZlclRpbWluZykpCisgICAgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAppbmRleCA5MDVmYzY2OTBiMWE3
N2MwZjcwOWI3MDNjYTQ5Y2YwOGNkNzhhMTljLi44MTA5NjJmYzRkYTZhMjc0YjliZjQ3YjNjYjZi
MWU2ZmY4NTY3MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VU
aW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaApAQCAt
NTEsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQog
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9u
ZXR3b3JrTG9hZE1ldHJpY3M7IH0KICAgICBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGlt
aW5nPj4gcG9wdWxhdGVTZXJ2ZXJUaW1pbmcoKSBjb25zdDsKLSAgICBSZXNvdXJjZVRpbWluZyBp
c29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRlZENvcHkoKSBj
b25zdCAmOworICAgIFJlc291cmNlVGltaW5nIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdm9p
ZCBvdmVycmlkZUluaXRpYXRvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9y
ID0gbmFtZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGlt
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwCmluZGV4IGNl
MTc2NzBkNDc5YWE4MTkwMzgyZWFkOWQ1OTNjMDE5MWE4NTk1YWUuLmMwOTkwYzFhY2Y0NTk3YWQ4
MDk3MmM2MTBiNjA2ZTkzYzhmMjQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TZXJ2ZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1p
bmcuY3BwCkBAIC00Niw5ICs0NiwxNCBAQCB2b2lkIFNlcnZlclRpbWluZzo6c2V0UGFyYW1ldGVy
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB9CiB9CiAKLVNl
cnZlclRpbWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitTZXJ2ZXJUaW1p
bmcgU2VydmVyVGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIFNl
cnZlclRpbWluZyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkdXJhdGlvbiwgZGVzY3JpcHRpb24uaXNv
bGF0ZWRDb3B5KCksIGR1cmF0aW9uU2V0LCBkZXNjcmlwdGlvblNldCk7CisgICAgcmV0dXJuIFNl
cnZlclRpbWluZyB7IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBkZXNjcmlwdGlvbi5p
c29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9uU2V0IH07Cit9CisKK1NlcnZl
clRpbWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIFNl
cnZlclRpbWluZyB7IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBXVEZN
b3ZlKGRlc2NyaXB0aW9uKS5pc29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9u
U2V0IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2
ZXJUaW1pbmcuaAppbmRleCA2N2I0MTA4ZWY5NDU5MzlkOGY3ZjEzY2JkMWEwY2YwZTY4NGNiNDQ2
Li44YmJlODU3ZDRiMjBjNjI2MWRkNjQzMTA2MDg1NTM4MmJhODhjZWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NlcnZlclRpbWluZy5oCkBAIC00Miw3ICs0Miw4IEBAIHN0cnVjdCBTZXJ2ZXJUaW1p
bmcgewogICAgIFNlcnZlclRpbWluZyhTdHJpbmcmJiBuYW1lLCBkb3VibGUgZHVyYXRpb24sIFN0
cmluZyYmIGRlc2NyaXB0aW9uLCBib29sIGR1cmF0aW9uU2V0LCBib29sIGRlc2NyaXB0aW9uU2V0
KTsKIAogICAgIHZvaWQgc2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OwotICAgIFNlcnZlclRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBTZXJ2ZXJUaW1p
bmcgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBTZXJ2ZXJUaW1pbmcgaXNvbGF0ZWRDb3B5
KCkgJiY7CiB9OwogCiBpbmxpbmUgU2VydmVyVGltaW5nOjpTZXJ2ZXJUaW1pbmcoU3RyaW5nJiYg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcAppbmRleCA1MWZmYTY5MzUyZTVmMzIwMDVjYWZlYTA5ZGM5NGNhMmZmOGQ0M2NkLi5lMjk1
ODljMmZmMjQwMDQyNTM1YzNjMDM5NmZjOGI0NzYyNDQyYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcg
QEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJy
aWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNj
b3BlKSwgbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4g
d2UgYmVuZWZpdCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBl
ZmZpY2llbnRseSBpdHMgaXNvbGF0ZWQgY29weT8KLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25z
ID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZN
b3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
Q29weSA9IFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkpXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLmlzb2xhdGVkQ29w
eSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5Q29weSA9IFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRl
eCBlZTQ3Y2FhYThkMGRkZTNmODkxNzlhNzU2MzFlYTM0Y2JlMzYzMTJiLi42MjA0MDEwZmFmY2Uw
MzYzZTdjMGViYjRkNjE2Y2VmYjEwNDIwYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2lu
LmgKQEAgLTQyLDcgKzQyLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gZGVjb2Rl
KERlY29kZXImKTsKIAotICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHRvcE9yaWdp
bi5pc29sYXRlZENvcHkoKSwgY2xpZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBD
bGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHRvcE9yaWdp
bikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY2xpZW50T3JpZ2luKS5pc29sYXRlZENvcHkoKSB9
OyB9CiAgICAgYm9vbCBpc1JlbGF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBvdGhl
cjsgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW4gY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
Y2xpZW50T3JpZ2luLmhvc3QpOyB9CkBAIC02MSwxMSArNjIsNiBAQCBpbmxpbmUgYm9vbCBDbGll
bnRPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyLnRvcE9yaWdpbiAmJiBjbGllbnRPcmlnaW4gPT0g
b3RoZXIuY2xpZW50T3JpZ2luOwogfQogCi1pbmxpbmUgQ2xpZW50T3JpZ2luIENsaWVudE9yaWdp
bjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyB0b3BPcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGNsaWVudE9yaWdpbi5pc29sYXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDbGllbnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdG9wT3JpZ2luOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBlYzgwYWU0M2FiZTc5MTM2OTc4YzdmZDAwMzkw
YzIxNmI2OWI3NzM4Li5kZmEzZTgyYTYyODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApAQCAtODksOSArODksOSBAQCBX
ZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24gUHJvY2Vzc1dhcm1pbmc6OmNvbGxlY3RQcmV3YXJt
SW5mb3JtYXRpb24oKQogICAgIHJldHVybiB7IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgp
LmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OwogfQogCi12b2lkIFByb2Nlc3NXYXJtaW5n
OjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2Fy
bUluZm8pCit2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFByZXdh
cm1JbmZvcm1hdGlvbiYmIHByZXdhcm1JbmZvKQogewotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCgpLnByZXdhcm0ocHJld2FybUluZm8uZm9udENhY2hlKTsKKyAgICBGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJtKFdURk1vdmUocHJld2FybUluZm8uZm9udENhY2hl
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1p
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaAppbmRleCBjZjE3ZWFh
MWQ5ZDBiNmUzZDgxN2IzYjFhMjI0ZDVkY2M3MDIwMDRlLi40ZDNjN2UxMTg4NTdhOGY3MDQ1ZTJh
MzMwN2RlOGFjYzM1ZTA5OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nl
c3NXYXJtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oCkBA
IC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBwcmV3YXJtR2xvYmFsbHko
KTsKIAogICAgIHN0YXRpYyBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbigpOwotICAgIHN0YXRpYyB2b2lkIHByZXdhcm1XaXRoSW5mb3JtYXRpb24oY29uc3QgUHJl
d2FybUluZm9ybWF0aW9uJik7CisgICAgc3RhdGljIHZvaWQgcHJld2FybVdpdGhJbmZvcm1hdGlv
bihQcmV3YXJtSW5mb3JtYXRpb24mJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmNwcAppbmRleCBhMDkzNGQ3ZjUzNTU3Zjk2NWYwYjUyZGQzNjgzOGRkNmE0NjkzOWZmLi4y
YjNiZjQ3MmMwZjEyMDIzMTJiOTNiMjdmNDViMWE5NDZmMzg2Y2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoY29u
c3QKICAgICBtX2h0dHBTdGF0dXNDb2RlID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKIH0K
IAotQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5OwogICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMg
PSBjcm9zc1RocmVhZENvcHkobV9oZWFkZXJzKTsKQEAgLTUzLDQgKzUzLDEyIEBAIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnM6Omlzb2xhCiAgICAgcmV0dXJuIGlzb2xhdGVkQ29weTsKIH0KIAorQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRDb3B5OworICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2hlYWRlcnMpKTsKKyAgICBpc29sYXRlZENvcHku
bV9odHRwU3RhdHVzQ29kZSA9IG1faHR0cFN0YXR1c0NvZGU7CisgICAgcmV0dXJuIGlzb2xhdGVk
Q29weTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaAppbmRleCA5NDhkOGNjODc0MjhkZTg5YTBmYzgwOTljNjViZDAzYWNhY2Q1ZGIzLi5kNjA1
OGU4Y2Y5OWM1ZGEzZDljOTJkMmU4NmI2ZmIyNDhkNGNhOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMuaApAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzKCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVD
aG9vc2VyLmgKaW5kZXggYWI2OGRhY2JmYTc0MGNhNDhlYzFjMzQ1MmE4NjAyMTE2NmQ5NzEzMC4u
ZmEyMjQwZmU4NmQ0MDRmOGYzNDcxZTQxYTY4Yjc0NjE1OTAxZDk4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC00NiwxNCArNDYsMTIgQEAgY2xhc3MgRmlsZUNob29z
ZXI7CiBjbGFzcyBJY29uOwogCiBzdHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbyB7Ci0gICAgRmls
ZUNob29zZXJGaWxlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVwbGFjZW1lbnRQYXRoLmlzb2xhdGVkQ29weSgp
LCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KLQotICAgIGNvbnN0IFN0cmlu
ZyBwYXRoOwotICAgIGNvbnN0IFN0cmluZyByZXBsYWNlbWVudFBhdGg7Ci0gICAgY29uc3QgU3Ry
aW5nIGRpc3BsYXlOYW1lOworICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJiB7IHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlcGxhY2VtZW50UGF0aC5p
c29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIEZpbGVD
aG9vc2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHBhdGgp
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHJlcGxhY2VtZW50UGF0aCkuaXNvbGF0ZWRDb3B5KCks
IFdURk1vdmUoZGlzcGxheU5hbWUpLmlzb2xhdGVkQ29weSgpIH07IH0KKworICAgIFN0cmluZyBw
YXRoOworICAgIFN0cmluZyByZXBsYWNlbWVudFBhdGg7CisgICAgU3RyaW5nIGRpc3BsYXlOYW1l
OwogfTsKIAogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmgKaW5kZXggNDI4YmZlMGU2MmM3OGNjYzI4
OTA1MjhiMDE4NTg5YWI0ODJlMzk4Yi4uODVjMDA4NTBjZWNjNGMwMTY3NjYwNzcxYzllYWQyZGQ2
OTc1NWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rp
b25PcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9w
dGlvbi5oCkBAIC00Myw2ICs0Myw5IEBAIHN0cnVjdCBNZWRpYVNlbGVjdGlvbk9wdGlvbiB7CiAg
ICAgewogICAgIH0KIAorICAgIE1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9Cisg
ICAgTWVkaWFTZWxlY3Rpb25PcHRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZN
b3ZlKGRpc3BsYXlOYW1lKS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisKICAgICBTdHJpbmcg
ZGlzcGxheU5hbWU7CiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6UmVndWxhciB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IDdjZTNmNjEzNmMz
MTdkYTNmYmVjMjI0MDFmNWJmMjgwMTY0OTVjNjAuLmJjZThjNDMwMzQwZmU2NzBiYzI0OWNkZjE3
Yjk4NjlhNDRhYjg2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lz
dHJhYmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVE
b21haW4uaApAQCAtNjcsNyArNjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXRjaGVz
KG9yaWdpbi5ob3N0KTsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IG1fcmVnaXN0cmFibGVEb21h
aW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluIGlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBtX3JlZ2lzdHJhYmxlRG9t
YWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBSZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IFdURk1vdmUobV9yZWdpc3RyYWJs
ZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW4oV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fcmVnaXN0cmFibGVEb21h
aW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMWJmYTNmZDVmMmIzYTI2YTlhNGFl
ZTk1NTNiNjJiNjg2ZWJlMjI0MS4uMTJjZTNlOTZkZDMxMmM2MTNkNjE4MmIwOWQyNzkxNThiYmY2
OWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgp
CiB7CiB9CiAKLXZvaWQgRm9udENhY2hlOjpwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlv
biYpCit2b2lkIEZvbnRDYWNoZTo6cHJld2FybShQcmV3YXJtSW5mb3JtYXRpb24mJikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA4
OWI0ZTE5MjdhNzhlMDNmMzQ4MzVhODZjYzkwMmIxYTI2N2FhMjY5Li40OWQzMGQ2NDY5YWRmMWY0
YWUwODg2ZWRjZmUyNGYyZWVkNDdkMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0zNTYs
MTMgKzM1NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZvbnROYW1lc1Jl
cXVpcmluZ1N5c3RlbUZhbGxiYWNrOwogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owot
ICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAg
IFByZXdhcm1JbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jv
c3NUaHJlYWRDb3B5KHNlZW5GYW1pbGllcyksIGNyb3NzVGhyZWFkQ29weShmb250TmFtZXNSZXF1
aXJpbmdTeXN0ZW1GYWxsYmFjaykgfTsgfQorICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNv
bGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZWVuRmFt
aWxpZXMpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVt
RmFsbGJhY2spKSB9OyB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgfTsKICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlv
bigpIGNvbnN0OwotICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsK
KyAgICB2b2lkIHByZXdhcm0oUHJld2FybUluZm9ybWF0aW9uJiYpOwogICAgIHN0YXRpYyB2b2lk
IHByZXdhcm1HbG9iYWxseSgpOwogCiBwcml2YXRlOgpAQCAtNDMxLDExICs0MzMsNiBAQCBpbmxp
bmUgYm9vbCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6aXNFbXB0eSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHNlZW5GYW1pbGllcy5pc0VtcHR5KCkgJiYgZm9udE5hbWVzUmVxdWlyaW5nU3lz
dGVtRmFsbGJhY2suaXNFbXB0eSgpOwogfQogCi1pbmxpbmUgRm9udENhY2hlOjpQcmV3YXJtSW5m
b3JtYXRpb24gRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHsgc2VlbkZhbWlsaWVzLmlzb2xhdGVkQ29weSgpLCBmb250TmFt
ZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFjay5pc29sYXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCmluZGV4IGIwYjNk
NDUyZDU2MTljNjk4YTliMjU5YWFhZjI1M2U0MTNkMDMyMzMuLjBjNDViMjA1YzlhOGNmMGZjNTk3
OTU1MDhmZjYwNDk2MjNhM2I0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgog
CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1
YWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkyLDIzICs5MywyOSBAQCBGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkKICAgICB9KTsKIH0KIAotRm9udEdl
bmVyaWNGYW1pbGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdAor
Rm9udEdlbmVyaWNGYW1pbGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBj
b25zdCAmCiB7CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcyBjb3B5OwotICAgIGZvciAoYXV0byAm
a2V5VmFsdWUgOiBtX3N0YW5kYXJkRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3N0YW5k
YXJkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRl
ZENvcHkoKSk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc2VyaWZGb250RmFtaWx5TWFw
KQotICAgICAgICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtl
eVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDog
bV9maXhlZEZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAu
YWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZv
ciAoYXV0byAma2V5VmFsdWUgOiBtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNv
cHkubV9zYW5zU2VyaWZGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZh
bHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9jdXJzaXZl
Rm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFwLmFkZChr
ZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1
dG8gJmtleVZhbHVlIDogbV9mYW50YXN5Rm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX2Zh
bnRhc3lGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xh
dGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9waWN0b2dyYXBoRm9udEZh
bWlseU1hcCkKLSAgICAgICAgY29weS5tX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLmFkZChrZXlW
YWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAgICBjb3B5Lm1fc3Rh
bmRhcmRGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fc3RhbmRhcmRGb250RmFtaWx5
TWFwKTsKKyAgICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1f
c2VyaWZGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fZml4ZWRGb250RmFtaWx5TWFwID0gY3Jv
c3NUaHJlYWRDb3B5KG1fZml4ZWRGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fc2Fuc1Nlcmlm
Rm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXAp
OworICAgIGNvcHkubV9jdXJzaXZlRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2N1
cnNpdmVGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAgPSBj
cm9zc1RocmVhZENvcHkobV9mYW50YXN5Rm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX3BpY3Rv
Z3JhcGhGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fcGljdG9ncmFwaEZvbnRGYW1p
bHlNYXApOworICAgIHJldHVybiBjb3B5OworfQorCitGb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRH
ZW5lcmljRmFtaWxpZXM6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgRm9udEdlbmVyaWNGYW1p
bGllcyBjb3B5OworICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShtX3N0YW5kYXJkRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9zZXJp
ZkZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3NlcmlmRm9udEZhbWls
eU1hcCkpOworICAgIGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShtX2ZpeGVkRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9zYW5zU2VyaWZGb250
RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zYW5zU2VyaWZGb250RmFtaWx5
TWFwKSk7CisgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUobV9jdXJzaXZlRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9mYW50YXN5Rm9u
dEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZmFudGFzeUZvbnRGYW1pbHlN
YXApKTsKKyAgICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKSk7CiAgICAgcmV0dXJuIGNvcHk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRH
ZW5lcmljRmFtaWxpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRH
ZW5lcmljRmFtaWxpZXMuaAppbmRleCA2MDc3MGNkNjRjMzkxOGIwMDA1MWU3NDU3YmJlZjQzNzRm
MmFlYzI0Li5lZTQ3ZGRjYzNjNGMyYzQwODk3NWRiNzQ5OTY0ZDQ3MzFkNmNmNWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1p
bGllcy5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXMgewogcHVi
bGljOgogICAgIEZvbnRHZW5lcmljRmFtaWxpZXMoKTsKIAotICAgIEZvbnRHZW5lcmljRmFtaWxp
ZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgRm9udEdlbmVyaWNGYW1pbGllcyBpc29sYXRl
ZENvcHkoKSBjb25zdCAmOworICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkg
JiY7CiAKICAgICBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9
IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIGZpeGVkRm9udEZhbWls
eShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmMmM5NjQwZDQ2ZDNh
OTM1NjExNGYzM2FiMTQwNTJjN2ZlYzI3NzhjLi40YjNhNWUxNDI4N2I1NzNjMzI5NGFhMGFhNmM2
YWIyZWMyMzAyNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3Rh
cnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5n
RHVyYXRpb24gLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAg
ICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJl
YWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhy
ZWFkLgotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVj
dGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291cmNlVVJM
Lmlzb2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwg
ZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIs
IHNvdXJjZVVSTCA9IFdURk1vdmUoc291cmNlVVJMKS5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1J
bWFnZSA9IFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFm
dGVyIHdlIGdvdCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUo
KSB3YXMgY2FsbGVkLgogICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVl
LnB0cigpID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNv
ZGVyLnB0cigpID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQocHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0g
ZnJhbWVSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBhZDlhMjM3YWE5YzYw
NDg1NDc0NTUxYzI0NTg2ZDJjYThhNTc2MzAyLi5lNjE3Nzk4MWYxZTU4M2U4ZjRkNzFiMTMxZWIx
NjI3MmE1OGU2N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC05NTYsNyArOTU2LDcg
QEAgcHVibGljOgogICAgICAgICB9KCk7CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZmFt
aWx5TmFtZVRvRm9udERlc2NyaXB0b3JzTG9jayB9OwotICAgICAgICByZXR1cm4gKm1fZmFtaWx5
TmFtZVRvRm9udERlc2NyaXB0b3JzLmFkZChmb2xkZWQuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
aW5zdGFsbGVkRm9udEZhbWlseSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuICpt
X2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoV1RGTW92ZShmb2xkZWQpLmlzb2xhdGVk
Q29weSgpLCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgfQogCiAgICAgY29uc3QgSW5zdGFsbGVkRm9udCYgZm9udEZvclBvc3RTY3JpcHROYW1lKGNv
bnN0IEF0b21TdHJpbmcmIHBvc3RTY3JpcHROYW1lKQpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgRm9u
dENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gRm9udENhY2hlOjpjb2xsZWN0UHJld2FybUluZm9y
bWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4geyBjb3B5VG9WZWN0b3IobV9zZWVuRmFtaWxpZXNG
b3JQcmV3YXJtaW5nKSwgY29weVRvVmVjdG9yKG1fZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFs
bGJhY2tGb3JQcmV3YXJtaW5nKSB9OwogfQogCi12b2lkIEZvbnRDYWNoZTo6cHJld2FybShjb25z
dCBQcmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKK3ZvaWQgRm9udENhY2hl
OjpwcmV3YXJtKFByZXdhcm1JbmZvcm1hdGlvbiYmIHByZXdhcm1JbmZvcm1hdGlvbikKIHsKICAg
ICBpZiAocHJld2FybUluZm9ybWF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm0oY29uc3QgUHJld2FybUlu
Zm9ybWF0aW9uJiBwcmV3YXJtSW5mb3JtYXRpb24pCiAKICAgICBhdXRvJiBkYXRhYmFzZSA9IEZv
bnREYXRhYmFzZTo6c2luZ2xldG9uRGlzYWxsb3dpbmdVc2VySW5zdGFsbGVkRm9udHMoKTsKIAot
ICAgIG1fcHJld2FybVF1ZXVlLT5kaXNwYXRjaChbJmRhdGFiYXNlLCBwcmV3YXJtSW5mb3JtYXRp
b24gPSBwcmV3YXJtSW5mb3JtYXRpb24uaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBtX3ByZXdhcm1R
dWV1ZS0+ZGlzcGF0Y2goWyZkYXRhYmFzZSwgcHJld2FybUluZm9ybWF0aW9uID0gV1RGTW92ZShw
cmV3YXJtSW5mb3JtYXRpb24pLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGZvciAoYXV0byYg
ZmFtaWx5IDogcHJld2FybUluZm9ybWF0aW9uLnNlZW5GYW1pbGllcykKICAgICAgICAgICAgIGRh
dGFiYXNlLmNvbGxlY3Rpb25Gb3JGYW1pbHkoZmFtaWx5KTsKIApAQCAtMTY4Miw3ICsxNjgyLDcg
QEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiAKICAgICBGb250Q2FjaGU6OlBy
ZXdhcm1JbmZvcm1hdGlvbiBwcmV3YXJtSW5mbzsKICAgICBwcmV3YXJtSW5mby5zZWVuRmFtaWxp
ZXMgPSBXVEZNb3ZlKGZhbWlsaWVzKTsKLSAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5wcmV3YXJtKHByZXdhcm1JbmZvKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5wcmV3YXJtKFdURk1vdmUocHJld2FybUluZm8pKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCAxMTcyODk0ZmVkMjViOGY0ZjVjMzMzMGFmMzJlMjQy
ODhhN2M1ODYzLi5hMGM1NzEwNzU4OTZkNjQ1NDdlNzI5ODRkZjFhMDgzMThkODRkZWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Dcm9z
c1RocmVhZENvcGllci5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaW1wb3J0IDxw
YWwvaW9zL1VJS2l0U29mdExpbmsuaD4KQEAgLTQ4MiwxOSArNDgzLDEwIEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9v
bCBjYW5QbGF5RmFzCiAgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChj
YW5QbGF5RmFzdFJldmVyc2UpOwogfQogCi1zdGF0aWMgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0
aW9uPiBpc29sYXRlZENvcHkoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0
aW9ucykKLXsKLSAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnNDb3B5Owot
ICAgIG9wdGlvbnNDb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3B0aW9ucy5zaXplKCkpOwot
ICAgIGZvciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykKLSAgICAgICAgb3B0aW9uc0NvcHkudW5j
aGVja2VkQXBwZW5kKHsgb3B0aW9uLmRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBvcHRpb24u
dHlwZSB9KTsKLSAgICByZXR1cm4gb3B0aW9uc0NvcHk7Ci19Ci0KIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChj
b25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBv
cHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG9wdGlvbnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTUwNyw3ICs0OTksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVgogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0gewor
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4
XSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKaW5kZXggNmUxZThkMWZjYmE3ODkw
ZDk2NDc2MGU4NDM2MWE1NWYxMDk4Yjc5Zi4uZGI4MzNmMzBiYmU3ZTYxNGQyMTllN2UzMTU3NjMy
YzJmMGEzZjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKQEAgLTM2LDE3ICszNiwy
MyBAQCBzdHJ1Y3QgQXVkaW9Db25maWd1cmF0aW9uIHsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBzYW1wbGVyYXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3BhdGlhbFJlbmRlcmlu
ZzsKIAotICAgIEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBB
dWRpb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBBdWRpb0NvbmZp
Z3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAotaW5saW5lIEF1ZGlvQ29uZmlndXJhdGlvbiBBdWRpb0NvbmZpZ3VyYXRpb246
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgQXVkaW9Db25maWd1cmF0aW9uIEF1ZGlvQ29u
ZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNvbnRl
bnRUeXBlLmlzb2xhdGVkQ29weSgpLCBjaGFubmVscy5pc29sYXRlZENvcHkoKSwgYml0cmF0ZSwg
c2FtcGxlcmF0ZSwgc3BhdGlhbFJlbmRlcmluZyB9OwogfQogCitpbmxpbmUgQXVkaW9Db25maWd1
cmF0aW9uIEF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1
cm4geyBXVEZNb3ZlKGNvbnRlbnRUeXBlKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShjaGFubmVs
cykuaXNvbGF0ZWRDb3B5KCksIGJpdHJhdGUsIHNhbXBsZXJhdGUsIHNwYXRpYWxSZW5kZXJpbmcg
fTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXVkaW9Db25maWd1cmF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0
aW9uLmgKaW5kZXggZWZhYzRjNzk0ZGNmZWI0NzMxNTZiZDNmNDVmZGU1OWNmZmYwODUzOC4uOTQz
YjkwNWI2ODUyOWE2NzM2N2NhYTNiODQ3NGE4OWFiZTA0YzQ5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25m
aWd1cmF0aW9uLmgKQEAgLTM1LDE3ICszNSwyMyBAQCBzdHJ1Y3QgTWVkaWFDb25maWd1cmF0aW9u
IHsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW87CiAgICAgc3Rk
OjpvcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwogCi0gICAgTWVkaWFDb25maWd1
cmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHko
KSAmJjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxNZWRpYUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgTWVk
aWFDb25maWd1cmF0aW9uIE1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K2lubGluZSBNZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0aW9uOjppc29sYXRlZENv
cHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHZpZGVvKSwgIGNy
b3NzVGhyZWFkQ29weShhdWRpbykgfTsKIH0KIAoraW5saW5lIE1lZGlhQ29uZmlndXJhdGlvbiBN
ZWRpYUNvbmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUodmlkZW8pKSwgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGF1
ZGlvKSkgfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTWVkaWFDb25maWd1
cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25m
aWd1cmF0aW9uLmgKaW5kZXggZTg2MzFmMmNmMTc2N2VhZmI4NWQ1NTZhMGRlN2IyNTRjMDViMmI4
Ny4uMTMwMWVjNjYzZDNiOTZiMzMyYzg5NzU4NmIwYTNhM2FiOWU3NTc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlk
ZW9Db25maWd1cmF0aW9uLmgKQEAgLTQzLDE3ICs0MywyMyBAQCBzdHJ1Y3QgVmlkZW9Db25maWd1
cmF0aW9uIHsKICAgICBzdGQ6Om9wdGlvbmFsPEhkck1ldGFkYXRhVHlwZT4gaGRyTWV0YWRhdGFU
eXBlOwogICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4gdHJhbnNmZXJGdW5jdGlv
bjsKIAotICAgIFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBW
aWRlb0NvbmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBWaWRlb0NvbmZp
Z3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAotaW5saW5lIFZpZGVvQ29uZmlndXJhdGlvbiBWaWRlb0NvbmZpZ3VyYXRpb246
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgVmlkZW9Db25maWd1cmF0aW9uIFZpZGVvQ29u
ZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNvbnRl
bnRUeXBlLmlzb2xhdGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBmcmFtZXJhdGUs
IGFscGhhQ2hhbm5lbCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFuc2ZlckZ1bmN0
aW9uIH07CiB9CiAKK2lubGluZSBWaWRlb0NvbmZpZ3VyYXRpb24gVmlkZW9Db25maWd1cmF0aW9u
Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUoY29udGVudFR5cGUp
Lmlzb2xhdGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBmcmFtZXJhdGUsIGFscGhh
Q2hhbm5lbCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFuc2ZlckZ1bmN0aW9uIH07
Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFZpZGVvQ29uZmlndXJhdGlvbjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmlu
ZGV4IDZhM2FhODdkODkzMWM0YjgwY2EwZGVhNzM4MDZiNTcwYzg2NzhlNTguLjM0ZTMwMjVmNzQx
YzZhOWU5ZjIzYzQ0YjQ3ODkzMWI3OGQ4MDk1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBA
IC00MiwxOSArNDIsMjcgQEAgc3RydWN0IFJUQ0RhdGFDaGFubmVsSW5pdCB7CiAgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQ7CiAgICAgUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5
IHsgUlRDUHJpb3JpdHlUeXBlOjpMb3cgfTsKIAotICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBpc29s
YXRlZENvcHkoKSBjb25zdDsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJjsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNo
YW5uZWxJbml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIFJUQ0RhdGFDaGFubmVs
SW5pdCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgUlRD
RGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JgogewogICAgIGF1dG8gY29weSA9ICp0aGlzOwogICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2Nv
bC5pc29sYXRlZENvcHkoKTsKICAgICByZXR1cm4gY29weTsKIH0KIAoraW5saW5lIFJUQ0RhdGFD
aGFubmVsSW5pdCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
YXV0byBjb3B5ID0gV1RGTW92ZSgqdGhpcyk7CisgICAgY29weS5wcm90b2NvbCA9IFdURk1vdmUo
Y29weS5wcm90b2NvbCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUlRDRGF0YUNoYW5uZWxJbml0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWQgPDwgbWF4UGFj
a2V0TGlmZVRpbWUgPDwgbWF4UmV0cmFuc21pdHMgPDwgcHJvdG9jb2wgPDwgbmVnb3RpYXRlZCA8
PCBpZCA8PCBwcmlvcml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KaW5kZXggODhjYTI3ZWFiODUwMWU0NGRiMDc1YmU4YWExZGU1MmU2
ZGVmMjBiZC4uZWI2ZjlhZmZhZTc4Mzg1NGE1MDNmYzVjOWQ4Y2I4MDc3NTI1Zjc1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAg
LTIwMSw3ICsyMDEsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6
OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3Bh
dGNoU3luYyhbJl0gewogICAgICAgICBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VzKCk7CiAgICAgfSk7Ci0gICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNl
cyhXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykuaXNvbGF0ZWRDb3B5KCkpOworICAgIHNldEF1ZGlv
Q2FwdHVyZURldmljZXMoY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSkp
OwogfQogCiB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVD
YXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbikKQEAg
LTIxNiw3ICsyMTYsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6
OmNvbXB1dGVDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcgogCiAgICAgbV9kaXNwYXRj
aFF1ZXVlLT5kaXNwYXRjaChbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
ICgpIG11dGFibGUgewogICAgICAgICBhdXRvIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZXMoKTsKLSAgICAgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNw
YXRjaEFzeW5jT25NYWluVGhyZWFkKG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbiksIG5ld0F1ZGlvRGV2aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZp
Y2VzKS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbldlYlRocmVh
ZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBz
ZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KaW5kZXggOGUzNzU4ZmU2NmFiODZhNjZhYjJkNzA5N2Q0Y2Y1NGYyOTdj
MGZiOS4uM2U1MWZlMTU2NzVkNzMzYmNjZWY2OWNjOThhNTAzN2NlNmNkNTc1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTE4MCw3ICsxODAsNyBAQCBWZWN0b3I8Q2Fw
dHVyZURldmljZT4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmV0cmlldmVDYXB0dXJlRGV2aWNl
cygpCiB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9kaXNwYXRjaFF1
ZXVlLT5kaXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBkZXZpY2VMaXN0ID0gcmV0cmlldmVDYXB0dXJlRGV2aWNlcygp
Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeyAgICAgICAgICAgIAorICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRl
dmljZUxpc3QgPSBjcm9zc1RocmVhZENvcHkocmV0cmlldmVDYXB0dXJlRGV2aWNlcygpKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGJvb2wgZGV2aWNlSGFzQ2hhbmdlZCA9IG1fZGV2aWNlcy5z
aXplKCkgIT0gZGV2aWNlTGlzdC5zaXplKCk7CiAgICAgICAgICAgICBpZiAoIWRldmljZUhhc0No
YW5nZWQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IGRl
dmljZUxpc3Quc2l6ZSgpOyArK2NwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IGQ4MGM1YmQ2YzAzZGY1MmFkMTEzOWNl
NDM0YzRhNGE1MzM4MTRlYTcuLmJkNTE2Y2Y2YzY1ZjJkYjQwNTE4ZjBjZDFkN2U5N2U4Zjc0ZTM4
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVy
TWFwLmNwcApAQCAtNDIsNyArNDIsNyBAQCBIVFRQSGVhZGVyTWFwOjpIVFRQSGVhZGVyTWFwKCkK
IHsKIH0KIAotSFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25z
dAorSFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7
CiAgICAgSFRUUEhlYWRlck1hcCBtYXA7CiAgICAgbWFwLm1fY29tbW9uSGVhZGVycyA9IGNyb3Nz
VGhyZWFkQ29weShtX2NvbW1vbkhlYWRlcnMpOwpAQCAtNTAsNiArNTAsMTQgQEAgSFRUUEhlYWRl
ck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBtYXA7
CiB9CiAKK0hUVFBIZWFkZXJNYXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sK
KyAgICBIVFRQSGVhZGVyTWFwIG1hcDsKKyAgICBtYXAubV9jb21tb25IZWFkZXJzID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUobV9jb21tb25IZWFkZXJzKSk7CisgICAgbWFwLm1fdW5jb21tb25I
ZWFkZXJzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV91bmNvbW1vbkhlYWRlcnMpKTsKKyAg
ICByZXR1cm4gbWFwOworfQorCiBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKIHsKICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBmYTAz
N2ZjZjk2ODE3M2MwY2E5M2Q0NzFjM2RkNDFkYzQ4NzBiMGNiLi4xZmUxOWQzMTE4YjEzYmFhOGI5
Y2IwNGIzZjdkZTY5OWJkODBmZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNDAsNyArNDAsOCBAQCBwdWJsaWM6CiAgICAgICAg
IEhUVFBIZWFkZXJOYW1lIGtleTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgIENv
bW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGtleSAsIHZhbHVlLmlz
b2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgQ29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAg
IENvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGtleSAsIFdURk1vdmUo
dmFsdWUpLmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29k
ZXImKTsKIApAQCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBrZXk7CiAg
ICAgICAgIFN0cmluZyB2YWx1ZTsKIAotICAgICAgICBVbmNvbW1vbkhlYWRlciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiB7IHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07
IH0KKyAgICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBX
VEZNb3ZlKGtleSkuaXNvbGF0ZWRDb3B5KCkgLCBXVEZNb3ZlKHZhbHVlKS5pc29sYXRlZENvcHko
KSB9OyB9CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxVbmNvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsKIApAQCAtMTM0LDcg
KzEzNiw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwKCk7CiAK
ICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBh
bm90aGVyIHRocmVhZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVk
Q29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVk
Q29weSgpICYmOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25I
ZWFkZXJzLmlzRW1wdHkoKSAmJiBtX3VuY29tbW9uSGVhZGVycy5pc0VtcHR5KCk7IH0KICAgICBp
bnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbW9uSGVhZGVycy5zaXplKCkgKyBtX3VuY29t
bW9uSGVhZGVycy5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IDZlNDVhYTE3NmQwN2YyMjkx
YmJlMjM1NTA3NzY1YmFiNTg4YWMxZjQuLjM4NGRjNzE0NzJiYjYwMTFkNmNkZTAzMWFhOGU4MmM1
YTIyYzFkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNsaWVudHM6OmNsYWltKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZjxEZWZlcnJlZFByCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb25uZWN0aW9u
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwogICAgICAgICBj
b25uZWN0aW9uLT5jbGFpbShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCByZXN1bHQgPSBp
c29sYXRlZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAg
ICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VX
b3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgcmVzdWx0ID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLm1fcGVu
ZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAg
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiBwZW5kaW5nUHJvbWlzZSB7IHByb21pc2UucmVsZWFz
ZU5vbk51bGwoKSB9OwogICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS5zZXR0bGUo
V1RGTW92ZShyZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNDU2NzFj
ZjI3YTM0MWVjNzU5MTJjNWYwMTQyOTNiMTRlZDhmYWI4Zi4uZTYyOGVmMGVhNDcwZmEyNmU2NWFl
MzQ5NmVmZmZiZDFlMTc2NDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTM3
OCw3ICszNzgsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY2hlZHVsZVB1c2hDaGFu
Z2VzKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgdXBkYXRl
ZFJlZ2lzdHJhdGlvbnMuY2xlYXIoKTsKICAgICAgICAgICAgIHJlbW92ZWRSZWdpc3RyYXRpb25z
LmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHN1Y2Nlc3MsIHB1c2hDb3VudGVy
LCB1cGRhdGVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUodXBkYXRlZFJlZ2lzdHJhdGlvbnMpLmlz
b2xhdGVkQ29weSgpLCByZW1vdmVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUocmVtb3ZlZFJlZ2lz
dHJhdGlvbnMpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc3VjY2VzcywgcHVz
aENvdW50ZXIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dXBkYXRlZFJlZ2lzdHJhdGlvbnMpKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucykpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCFzdWNjZXNzICYmIChwdXNoQ291bnRlciArIDEpID09IG1fcHVzaENvdW50ZXIpIHsKICAgICAg
ICAgICAgICAgICAvLyBXZSByZXRyeSB3cml0aW5nIG9uY2UgaWYgbm8gb3RoZXIgY2hhbmdlIHdh
cyBwdXNoZWQuCiAgICAgICAgICAgICAgICAgc2NoZWR1bGVQdXNoQ2hhbmdlcyhXVEZNb3ZlKHVw
ZGF0ZWRSZWdpc3RyYXRpb25zKSwgV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucyksIFNob3Vs
ZFJldHJ5OjpObywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXggZWE1Y2E2ZGIzNDZhNjIxNzgyMDcy
NjMxYTM0ZjIwMTcyNmM3NzU2OC4uMzM2ZmVhODZlYjhiYjc4Y2EzNmZjNDMyOTg0ZWVhNGMyMmIz
YmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBA
IC0zOSwxNyArMzksOCBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAgIFNldHRpbmdz
OjpWYWx1ZXMgc2V0dGluZ3NWYWx1ZXM7CiAgICAgYm9vbCBpc0F1ZGlvQ29udGV4dFJlYWxUaW1l
OwogCi0gICAgV29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksCi0g
ICAgICAgICAgICBqc1J1bnRpbWVGbGFncywKLSAgICAgICAgICAgIHNhbXBsZVJhdGUsCi0gICAg
ICAgICAgICBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLAotICAgICAgICAgICAgc2V0dGluZ3NW
YWx1ZXMuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBpc0F1ZGlvQ29udGV4dFJlYWxUaW1l
Ci0gICAgICAgIH07Ci0gICAgfQorICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksIGpzUnVudGltZUZs
YWdzLCBzYW1wbGVSYXRlLCBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzZXR0aW5nc1ZhbHVl
cy5pc29sYXRlZENvcHkoKSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CisgICAgV29ya2xl
dFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHdpbmRvd1VS
TCkuaXNvbGF0ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKGlk
ZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNldHRpbmdzVmFsdWVzKS5pc29sYXRl
ZENvcHkoKSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAppbmRleCBjY2QxZjExMjVmZTY4OTY2Njk4YThmNWY2ZDdiMGY0MWYwZTUx
MzU1Li5hNTUyOTVmMzA1NTBkZjI3NDA0YmNlNDI5OWQyZmUzNzliMGU0OWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAg
LTQ1NSwxNSArNDU1LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKICAgICB9CiAKICAgICBp
ZiAoIXVuYXR0cmlidXRlZC5pc0VtcHR5KCkgfHwgIWF0dHJpYnV0ZWQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0s
IHVuYXR0cmlidXRlZCA9IHVuYXR0cmlidXRlZC5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9
IGF0dHJpYnV0ZWQuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCB1bmF0dHJpYnV0ZWQg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh1bmF0dHJpYnV0ZWQpKSwgYXR0cmlidXRlZCA9IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGF0dHJpYnV0ZWQpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0b3JlLT5uZXR3b3JrU2Vzc2lvbigpOwogICAg
ICAgICAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgICAgIGF1dG8mIG1hbmFnZXIgPSBuZXR3b3JrU2Vzc2lvbi0+cHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RGTW92ZShhdHRy
aWJ1dGVkKSkKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHBjbSA6IFdURk1vdmUoYXR0cmlidXRl
ZCkpCiAgICAgICAgICAgICAgICAgbWFuYWdlci5taWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGcm9tTGVnYWN5U3RvcmFnZShXVEZNb3ZlKHBjbSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNt
IDogV1RGTW92ZSh1bmF0dHJpYnV0ZWQpKQorICAgICAgICAgICAgZm9yIChhdXRvJiYgcGNtIDog
V1RGTW92ZSh1bmF0dHJpYnV0ZWQpKQogICAgICAgICAgICAgICAgIG1hbmFnZXIubWlncmF0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV1RGTW92ZShwY20pLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKICAgICAg
ICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCA2NjFiMTU2M2VjNjRiNjZlNzhmMWY4ZDU1NGM2ZDlkZjM3MzFhZTZiLi5jNWNkOWYxNGRm
YTI2NzY2ZGUzMTEwMmNkYzQyNDFjZmE2OTFhNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc2LDE0ICs3NywxNiBAQCBzdHJ1
Y3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgewogICAgIFZlY3RvcjxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsK
ICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uQXNGaXJzdFBhcnR5OwogICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJl
c291cmNlRG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3M7Ci0gICAgUmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBk
b21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNU
b0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFN0b3JhZ2VB
Y2Nlc3MgfTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxv
Y2tBbmREZWxldGVDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b25Bc0ZpcnN0UGFydHkpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNz
KSB9OyB9CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1Rv
QmxvY2tCdXRLZWVwQ29va2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MpKSB9OyB9CiB9Owogc3RydWN0IFJlZ2lzdHJhYmxl
RG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3I7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxC
dXRIdHRwT25seUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcjsKICAgICBWZWN0
b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0
cmljdEZvcjsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0RlbGV0ZUFs
bENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5
Q29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vi
c2l0ZURhdGFGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmlj
dEZvci5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVP
clJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7
IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSwgY3Jvc3NUaHJl
YWRDb3B5KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvciksIGNyb3NzVGhy
ZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciksIGNyb3Nz
VGhyZWFkQ29weShkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IpIH07IH0KKyAgICBS
ZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0Rl
bGV0ZUFsbENvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVs
ZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSksIGNyb3NzVGhyZWFkQ29w
eShXVEZNb3ZlKGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcikpIH07IH0KICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9y
LmlzRW1wdHkoKSAmJiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IuaXNF
bXB0eSgpICYmIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1w
dHkoKSAmJiBkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IuaXNFbXB0eSgpOyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmNwcAppbmRleCBhN2FiOTM4MDljY2I3ZjY1ZjQ4YjFhNTE5Y2Q5NjdhZGFi
NWM2ZDU4Li4wYTA0YWVlNDVmYWJiNjNkZWMyZjc5NzZiNzYxZDM2NjE3MDE2MDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNl
cnZlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVs
ZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW5EYXRhcyA9IG9yaWdpbkRhdGFzLmlzb2xh
dGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbkRh
dGFzID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnSW5mby5jcHAKaW5kZXggNTU0ZmQyZDhmMGRkMWI5Yzc5OGUwNjg1NjEyZDFiOGQ4ZjA2Yzdl
Mi4uZDUyYWQ2YTQ5MjY5ZmNjMGFlNDEyNDdlODE2ZmZkZGIwZDFlM2Y5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlYnVnSW5mby5jcHAKQEAgLTI2LDE2ICsyNiwyOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgiCiAKKyNpbmNsdWRl
IDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdDo6UENNIHsKIAot
RGVidWdJbmZvIERlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0RlYnVnSW5mbyBEZWJ1
Z0luZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVh
ZENvcHkobWVzc2FnZXMpIH07Cit9CisKK0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29w
eSgpICYmCiB7Ci0gICAgcmV0dXJuIHsgbWVzc2FnZXMuaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICBy
ZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtZXNzYWdlcykpIH07CiB9CiAKLURlYnVn
SW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitE
ZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHkoKSBjb25z
dCAmCiB7CiAgICAgcmV0dXJuIHsgbWVzc2FnZUxldmVsLCBtZXNzYWdlLmlzb2xhdGVkQ29weSgp
IH07CiB9CiAKK0RlYnVnSW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVk
Q29weSgpICYmCit7CisgICAgcmV0dXJuIHsgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKG1lc3NhZ2Up
Lmlzb2xhdGVkQ29weSgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6UENNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmgKaW5kZXggNTI1Nzc4NGI0ZTE5ZjM4MGFhMjA2YmMyYTc2ODhkYzlmNWVl
M2RjZi4uMGI5OTg0YzQ2NGRjZTE5YWEzNGQ1ZGU4ZGY2M2FiZWUzYTI2ZmRlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z0luZm8uaApAQCAtMzYsMTIgKzM2LDE0IEBAIHN0cnVjdCBEZWJ1Z0luZm8gewogICAg
ICAgICBKU0M6Ok1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWw7CiAgICAgICAgIFN0cmluZyBtZXNz
YWdlOwogCi0gICAgICAgIE1lc3NhZ2UgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIE1l
c3NhZ2UgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgTWVzc2FnZSBpc29sYXRlZENv
cHkoKSAmJjsKICAgICB9OwogCiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwogCi0gICAg
RGVidWdJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIERlYnVnSW5mbyBpc29sYXRlZENv
cHkoKSBjb25zdCAmOworICAgIERlYnVnSW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKaW5kZXggYWI1MDk0MDgxNzI0NGQ3
MjkxYjE5ODE4NDM2ZTVkNTE4MmVhNDk2NC4uYmI0NGNkZjE4YWE4Mzg2OTNjNDJjODMwZDFjMDgy
YWQ1ZWJhZDU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBT
dG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFcKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CiAgICAgICAgIGlmIChtX2RhdGFiYXNl
KQogICAgICAgICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0gbV9kYXRhYmFzZS0+YWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHko
W2NvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IGNvbnZlcnRlZEF0dHJpYnV0aW9ucy5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbY29udmVydGVkQXR0cmlidXRpb25zID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29udmVydGVkQXR0cmlidXRpb25zKSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucykp
OwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IGM2ZDRiY2I3MDIyOTk5
MDJhYTgxODQ3YWI5ODZiZThjMzE5ZDdmOWYuLjY1Y2E0YzBjMTRmNjFhOGMzMmE5NGM0NDRiZjQx
MzY3M2E1YWUwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5o
PgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU1MSw3ICs1NTIsNyBAQCB2b2lk
IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLAogICAgIGlmICghcGFyc2VkUnVsZXMuaGFzX3ZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBwYXJzZWRSdWxlcy5lcnJv
cigpKTsKICAgICAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwg
anNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFs
dWUoKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgeworICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29u
ID0ganNvbi5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZXMgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShwYXJzZWRSdWxlcykudmFsdWUoKSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3Jl
UGF0aCwgaWRlbnRpZmllciwgZmFsc2UpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gY29tcGls
ZWRUb0ZpbGUoV1RGTW92ZShqc29uKSwgV1RGTW92ZShwYXJzZWRSdWxlcyksIHBhdGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250
cm9sQ2xhc3NpZmllci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGFsQ29u
dGFpbmVyQ29udHJvbENsYXNzaWZpZXIubW0KaW5kZXggMmYwMzc0OGI3Y2IxOGZhYTg5MmE5YzJl
YWNkM2I3MTY1OWEzZmNhMS4uOTQxMjFlN2NmMWRlZmQwYTU3NTA2ODA2OTI4ZTY0ZGMxMjNhYjU1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWlu
ZXJDb250cm9sQ2xhc3NpZmllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Nb2RhbENvbnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCkBAIC0yMDcsNyArMjA3LDcgQEAg
c3RhdGljIFZlY3RvcjxNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBlPiBjb21wdXRlUHJlZGljdGlv
bnMoTUxNb2RlbCAqbW9kZWwsIFZlY3QKIHZvaWQgTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3Np
Zmllcjo6Y2xhc3NpZnkoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYgY29tcGxldGlvbikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCB0ZXh0cyA9IHRleHRzLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
dGV4dHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0ZXh0cykpLCBjb21wbGV0aW9uID0gV1RG
TW92ZShjb21wbGV0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbG9hZE1vZGVsSWZOZWVkZWQo
KTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKSwgcHJlZGljdGlvbnMgPSBjb21wdXRlUHJlZGljdGlvbnMobV9tb2RlbC5n
ZXQoKSwgV1RGTW92ZSh0ZXh0cykpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlv
bihXVEZNb3ZlKHByZWRpY3Rpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA0MzM5MzQ2MDE1MzVhMGQ0NmUz
ZTg5ODdiODM2ODQyMzg3MDYwNWM3Li41M2E2YmE0Mzk5MDNjZGQ5YmZhNzE1YzcwMGE0ZGZiMzI3
ZmFlNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRNZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3dlYWtQcm9jZXNzID0gV2Vha1B0ciB7IHBy
b2Nlc3MgfV0gewogICAgICAgICBhdXRvIGNhcHRpb25EaXNwbGF5TW9kZSA9IFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0Zm9ybUNhcHRpb25EaXNwbGF5TW9kZSgp
OwogICAgICAgICBhdXRvIHByZWZlcnJlZExhbmd1YWdlcyA9IFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpOwotICAgICAg
ICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1Byb2Nlc3MsIGNhcHRpb25EaXNwbGF5TW9kZSwgcHJl
ZmVycmVkTGFuZ3VhZ2VzID0gV1RGTW92ZShwcmVmZXJyZWRMYW5ndWFnZXMpLmlzb2xhdGVkQ29w
eSgpXSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrUHJvY2VzcywgY2FwdGlvbkRp
c3BsYXlNb2RlLCBwcmVmZXJyZWRMYW5ndWFnZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShw
cmVmZXJyZWRMYW5ndWFnZXMpKV0gewogICAgICAgICAgICAgaWYgKHdlYWtQcm9jZXNzKQogICAg
ICAgICAgICAgICAgIHdlYWtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRN
ZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyhjYXB0aW9uRGlzcGxheU1vZGUsIHByZWZlcnJl
ZExhbmd1YWdlcyksIDApOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDJmZGRiODQ5NTJkMDg4OWE4ODI1NGU0NzdiZmYyMzIwYjYwZjAx
ZGMuLjdjN2JmMTcyOGMxNGJkM2Q4YjhhMDY4ZWNiMDgxZDQwODg1NzAyZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE5OCwxMyArNzE5OCwxMyBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFu
c2NvZGluZyhjb25zdCBWZWN0b3I8UwogICAgIGF1dG8gdHJhbnNjb2RpbmdVVEkgPSBXZWJDb3Jl
OjpVVElGcm9tTUlNRVR5cGUodHJhbnNjb2RpbmdNSU1FVHlwZSk7CiAgICAgYXV0byB0cmFuc2Nv
ZGluZ0V4dGVuc2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVu
c2lvbkZvck1JTUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOwogCi0gICAgc2hhcmVkSW1hZ2VU
cmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VS
THMgPSB0cmFuc2NvZGluZ1VSTHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJh
bnNjb2RpbmdVVEkuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNj
b2RpbmdFeHRlbnNpb24uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hhcmVkSW1h
Z2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBmaWxlVVJMcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlVVJMcyksIHRyYW5zY29k
aW5nVVJMcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kaW5nVVJMcykpLCB0cmFu
c2NvZGluZ1VUSSA9IFdURk1vdmUodHJhbnNjb2RpbmdVVEkpLmlzb2xhdGVkQ29weSgpLCB0cmFu
c2NvZGluZ0V4dGVuc2lvbiA9IFdURk1vdmUodHJhbnNjb2RpbmdFeHRlbnNpb24pLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAogICAgICAgICBhdXRvIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlSW1hZ2VzKHRyYW5zY29k
aW5nVVJMcywgdHJhbnNjb2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKICAgICAgICAg
QVNTRVJUKHRyYW5zY29kaW5nVVJMcy5zaXplKCkgPT0gdHJhbnNjb2RlZFVSTHMuc2l6ZSgpKTsK
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVkQ29w
eSgpLCB0cmFuc2NvZGVkVVJMcyA9IHRyYW5zY29kZWRVUkxzLmlzb2xhdGVkQ29weSgpXSgpIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZmlsZVVSTHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShmaWxlVVJMcykpLCB0cmFuc2NvZGVkVVJMcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRy
YW5zY29kZWRVUkxzKSldKCkgewogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAg
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzYW5kYm94RXh0ZW5zaW9uRmlsZXM7CiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsgaSA8IHNpemU7ICsr
aSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlOTc4YjlkOTA5
YmFkZWM2NDQ5YTY1MzFlNWM3NTgzYWU3MThjN2FjLi40ODIxOTg3MzljZmRhNWZjZTY2MjEwN2M0
ZTI3ZTM1MWQzODQ3MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC02OTUsOSArNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmV3YXJtR2xvYmFsbHkoKQog
ICAgIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzOjpwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6
OlByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9ybWF0aW9uKQordm9pZCBXZWJQcm9jZXNz
OjpwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlv
biYmIHByZXdhcm1JbmZvcm1hdGlvbikKIHsKLSAgICBXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6
cHJld2FybVdpdGhJbmZvcm1hdGlvbihwcmV3YXJtSW5mb3JtYXRpb24pOworICAgIFdlYkNvcmU6
OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFdURk1vdmUocHJld2FybUlu
Zm9ybWF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Vt
cHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCA5NmU2Y2VlMjIxOGY2YTliMDA1M2RkOWZmYTBkNWQ4M2NkM2I2
NGM1Li42Njg4MzEwZDk2MTU5N2FlNzY2OTg4ZGE2YTNhOGViNzg1NTllNGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQxMSw3ICs0MTEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGxhdGZvcm1TZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7Ci0g
ICAgdm9pZCBwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlByZXdh
cm1JbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihX
ZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24mJik7CiAKICNpZiBVU0UoT1NfU1RBVEUpCiAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gYWRkaXRpb25hbFN0YXRlRm9yRGlhZ25vc3RpY1JlcG9y
dCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcAppbmRleCAwY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3M2RjZjk4
MzJkMzcwMmFlLi43NzQzZDUwODg1MjRiY2U1ZDdkM2YzNDkyZmM3NzE3YTg3YWExMDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyCiAKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMpCiB7
Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCByZXF1ZXN0SWRlbnRpZmllciwgZGF0YWJhc2VzID0gZGF0YWJhc2VzLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgeworICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyA9IGNyb3Nz
VGhyZWFkQ29weShkYXRhYmFzZXMpXSgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKGRhdGFiYXNlcykpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRiY2JjZjQ1MTdiZmFiZDQxMTNkM2Qy
MjVkNTE2N2MzMWI1MzkwOTQuLjRlY2JmOTlhM2Y3MGRkYzEzODgxYWRiMTMyMWE4YjQ4ODZjY2Ri
OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzUwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZCB0
ZXN0IGNvdmVyYWdlIGZvciBjcm9zc1RocmVhZENvcHkoKSBhbmQgbWFrZSBzdXJlIHRoZSBvcHRp
bWl6YXRpb25zIGFyZSB3b3JraW5nCisgICAgICAgIHdoZW4gY2FsbGVkIG9uIGEgci12YWx1ZSBy
ZWZlcmVuY2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVh
ZENvcGllci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4gbWFrZUFsbERpcmVjdG9yaWVz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENv
cGllci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGll
ci5jcHAKaW5kZXggY2Q0ZGMyM2M3YjZhZWZiNGM5OWZmNTA4NDAzMzIyMTEzMzNkOGRlYi4uNGQ2
NDc1MDY4YzNkYWJkZDI0YzMxZmMxMGRkOGI4NDBiMTA0YmQzZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtMjcsNiAr
MjcsOSBAQAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogCiAjaW5jbHVkZSAi
VGVzdC5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtODUsNCArODgsMTE4IEBAIFRFU1QoV1RG
X0Nyb3NzVGhyZWFkQ29waWVyLCBDb3B5UlZPcHRpb25hbFN0cmluZ0hhdmluZ1R3b1JlZikKICAg
ICBFWFBFQ1RfVFJVRShjb3B5LT5pbXBsKCktPmhhc09uZVJlZigpKTsKIH0KIAorVEVTVChXVEZf
Q3Jvc3NUaHJlYWRDb3BpZXIsIFBhaXIpCit7CisgICAgc3RkOjpwYWlyIHBhaXIxIHsgImZvbyJf
c3RyLCAiYmFyIl9zdHIgfTsKKyAgICBhdXRvKiBmaXJzdFN0cmluZ0ltcGwgPSBwYWlyMS5maXJz
dC5pbXBsKCk7CisgICAgYXV0byogc2Vjb25kU3RyaW5nSW1wbCA9IHBhaXIxLnNlY29uZC5pbXBs
KCk7CisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHBhaXIxKTsKKyAgICBFWFBFQ1Rf
RVEoY29weSwgcGFpcjEpOworICAgIEVYUEVDVF9ORShjb3B5LmZpcnN0LmltcGwoKSwgZmlyc3RT
dHJpbmdJbXBsKTsKKyAgICBFWFBFQ1RfTkUoY29weS5zZWNvbmQuaW1wbCgpLCBzZWNvbmRTdHJp
bmdJbXBsKTsKKworICAgIHN0ZDo6cGFpciBwYWlyMiB7ICJmb28iX3N0ciwgImJhciJfc3RyIH07
CisgICAgZmlyc3RTdHJpbmdJbXBsID0gcGFpcjIuZmlyc3QuaW1wbCgpOworICAgIHNlY29uZFN0
cmluZ0ltcGwgPSBwYWlyMi5zZWNvbmQuaW1wbCgpOworICAgIGNvcHkgPSBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShwYWlyMikpOworICAgIEVYUEVDVF9FUShjb3B5LCBwYWlyMSk7CisgICAgRVhQ
RUNUX0VRKGNvcHkuZmlyc3QuaW1wbCgpLCBmaXJzdFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9F
UShjb3B5LnNlY29uZC5pbXBsKCksIHNlY29uZFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9UUlVF
KHBhaXIyLmZpcnN0LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShwYWlyMi5zZWNvbmQuaXNO
dWxsKCkpOworfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgVmFyaWFudCkKK3sKKyAg
ICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBVUkw+IHZhcmlhbnQ7CisgICAgdmFyaWFudCA9ICJmb28i
X3N0cjsKKyAgICBhdXRvKiBpbXBsID0gc3RkOjpnZXQ8U3RyaW5nPih2YXJpYW50KS5pbXBsKCk7
CisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9F
UShjb3B5LCB2YXJpYW50KTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5p
bXBsKCksIGltcGwpOworCisgICAgdmFyaWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGlt
cGwgPSBzdGQ6OmdldDxVUkw+KHZhcmlhbnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0g
Y3Jvc3NUaHJlYWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9FUShjb3B5LCB2YXJpYW50KTsK
KyAgICBFWFBFQ1RfTkUoc3RkOjpnZXQ8VVJMPihjb3B5KS5zdHJpbmcoKS5pbXBsKCksIGltcGwp
OworCisgICAgdmFyaWFudCA9ICJmb28iX3N0cjsKKyAgICBpbXBsID0gc3RkOjpnZXQ8U3RyaW5n
Pih2YXJpYW50KS5pbXBsKCk7CisgICAgY29weSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZh
cmlhbnQpKTsKKyAgICBBU1NFUlRfRVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KSwgImZvbyJfc3Ry
KTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBsKCksIGltcGwpOwor
CisgICAgdmFyaWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGltcGwgPSBzdGQ6OmdldDxV
Ukw+KHZhcmlhbnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUodmFyaWFudCkpOworICAgIEFTU0VSVF9FUShzdGQ6OmdldDxVUkw+KGNvcHkpLCBV
UkwgeyAiYmFyIl9zdHIgfSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6Z2V0PFVSTD4oY29weSkuc3Ry
aW5nKCkuaW1wbCgpLCBpbXBsKTsKK30KKworVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIEhh
c2hNYXApCit7CisgICAgSGFzaE1hcDxDU3RyaW5nLCBTdHJpbmdJbXBsKj4gaW1wbHM7CisKKyAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtYXA7CisgICAgbWFwLmFkZCgiZm9vIl9zdHIsICJm
b29WYWx1ZSJfc3RyKTsKKyAgICBtYXAuYWRkKCJiYXIiX3N0ciwgImJhclZhbHVlIl9zdHIpOwor
ICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogbWFwKSB7CisgICAgICAgIGltcGxzLmFkZChr
ZXkudXRmOCgpLCBrZXkuaW1wbCgpKTsKKyAgICAgICAgaW1wbHMuYWRkKHZhbHVlLnV0ZjgoKSwg
dmFsdWUuaW1wbCgpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHko
bWFwKTsKKyAgICBFWFBFQ1RfRVEoY29weSwgbWFwKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZh
bHVlXSA6IGNvcHkpIHsKKyAgICAgICAgRVhQRUNUX05FKGtleS5pbXBsKCksIGltcGxzLmdldChr
ZXkudXRmOCgpKSk7CisgICAgICAgIEVYUEVDVF9ORSh2YWx1ZS5pbXBsKCksIGltcGxzLmdldCh2
YWx1ZS51dGY4KCkpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvcHkyID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUobWFwKSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1Rf
VFJVRShtYXAuaXNFbXB0eSgpKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6IGNvcHky
KSB7CisgICAgICAgIEVYUEVDVF9FUShrZXkuaW1wbCgpLCBpbXBscy5nZXQoa2V5LnV0ZjgoKSkp
OworICAgICAgICBFWFBFQ1RfRVEodmFsdWUuaW1wbCgpLCBpbXBscy5nZXQodmFsdWUudXRmOCgp
KSk7CisgICAgfQorfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgSGFzaFNldCkKK3sK
KyAgICBIYXNoTWFwPENTdHJpbmcsIFN0cmluZ0ltcGwqPiBpbXBsczsKKworICAgIEhhc2hTZXQ8
U3RyaW5nPiBzZXQ7CisgICAgc2V0LmFkZCgiZm9vIl9zdHIpOworICAgIHNldC5hZGQoImJhciJf
c3RyKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzZXQpCisgICAgICAgIGltcGxzLmFkZChpdGVt
LnV0ZjgoKSwgaXRlbS5pbXBsKCkpOworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5
KHNldCk7CisgICAgRVhQRUNUX0VRKGNvcHksIHNldCk7CisgICAgZm9yIChhdXRvJiBpdGVtIDog
Y29weSkKKyAgICAgICAgRVhQRUNUX05FKGl0ZW0uaW1wbCgpLCBpbXBscy5nZXQoaXRlbS51dGY4
KCkpKTsKKworICAgIGF1dG8gY29weTIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZXQpKTsK
KyAgICBFWFBFQ1RfRVEoY29weTIsIGNvcHkpOworICAgIEVYUEVDVF9UUlVFKHNldC5pc0VtcHR5
KCkpOworICAgIGZvciAoYXV0byYgaXRlbSA6IGNvcHkyKQorICAgICAgICBFWFBFQ1RfRVEoaXRl
bS5pbXBsKCksIGltcGxzLmdldChpdGVtLnV0ZjgoKSkpOworfQorCitURVNUKFdURl9Dcm9zc1Ro
cmVhZENvcGllciwgT3B0aW9uYWwpCit7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9wdGlv
bmFsOworICAgIG9wdGlvbmFsID0gImZvbyJfc3RyOworICAgIGF1dG8qIGltcGwgPSBvcHRpb25h
bC0+aW1wbCgpOworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbmFsKTsK
KyAgICBFWFBFQ1RfRVEoY29weSwgb3B0aW9uYWwpOworICAgIEVYUEVDVF9ORShjb3B5LT5pbXBs
KCksIGltcGwpOworCisgICAgYXV0byBjb3B5MiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9w
dGlvbmFsKSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfRVEoY29w
eTItPmltcGwoKSwgaW1wbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCmluZGV4IDVkNDZjM2NiZTkzYWNj
ZTM2ZGE5ZjZlMmMwYTU0NzNlZmU5YmIwNWQuLjBiMTY2NzBhNDIyMWMwZDdlMmJkNGRlYWNjMmVk
NWQ3N2UzNmQ0YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Zl
Y3Rvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTW92ZU9u
bHkuaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+CkBAIC0xMjgsNyArMTI5LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb25zdHJ1Y3RX
aXRoRnJvbVN0cmluZykKICAgICBFWFBFQ1RfVFJVRShzMy5pc051bGwoKSk7CiB9CiAKLVRFU1Qo
V1RGX1ZlY3RvciwgSXNvbGF0ZUNvcHkpCitURVNUKFdURl9WZWN0b3IsIElzb2xhdGVkQ29weSkK
IHsKICAgICBTdHJpbmcgczEgPSAiczEiOwogICAgIFN0cmluZyBzMiA9ICJzMiI7CkBAIC0xNDAs
NyArMTQxLDcgQEAgVEVTVChXVEZfVmVjdG9yLCBJc29sYXRlQ29weSkKICAgICBhdXRvKiBkYXRh
MSA9IHZlY3RvcjFbMF0uaW1wbCgpOwogICAgIGF1dG8qIGRhdGEyID0gdmVjdG9yMVsxXS5pbXBs
KCk7CiAKLSAgICBhdXRvIHZlY3RvcjIgPSB2ZWN0b3IxLmlzb2xhdGVkQ29weSgpOworICAgIGF1
dG8gdmVjdG9yMiA9IGNyb3NzVGhyZWFkQ29weSh2ZWN0b3IxKTsKIAogICAgIEVYUEVDVF9UUlVF
KCJzMSIgPT0gdmVjdG9yMlswXSk7CiAgICAgRVhQRUNUX1RSVUUoInMyIiA9PSB2ZWN0b3IyWzFd
KTsKQEAgLTE0OCw3ICsxNDksNyBAQCBURVNUKFdURl9WZWN0b3IsIElzb2xhdGVDb3B5KQogICAg
IEVYUEVDVF9GQUxTRShkYXRhMSA9PSB2ZWN0b3IyWzBdLmltcGwoKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGRhdGEyID09IHZlY3RvcjJbMV0uaW1wbCgpKTsKIAotICAgIGF1dG8gdmVjdG9yMyA9IFdU
Rk1vdmUodmVjdG9yMSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0byB2ZWN0b3IzID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUodmVjdG9yMSkpOwogICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yMS5z
aXplKCkpOwogCiAgICAgRVhQRUNUX1RSVUUoInMxIiA9PSB2ZWN0b3IzWzBdKTsK
</data>
<flag name="commit-queue"
          id="481441"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453926</attachid>
            <date>2022-03-05 18:21:23 -0800</date>
            <delta_ts>2022-03-07 12:05:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220305182122.patch</filename>
            <type>text/plain</type>
            <size>163116</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyZGM0ODMzNTA2MzNiNWEyYzJhNjFk
ZWVkZDY3ODE5NWIxMjlhYzEuLjYzYzlmMjI3NDAxZTVlZjIwM2Q0MjMxMDczZjEwNjQ2NzYyNTZm
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9z
cyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEcm9wIGlzb2xhdGVkQ29weSgpIG9uIFZlY3RvciBzaW5jZSBDcm9zc1RocmVhZENvcGllciBh
bHJlYWR5IGhhcyBsb2dpYyB0bworICAgICAgICBpc29sYXRlLWNvcHkgYSBWZWN0b3IuIFRoZSBs
b2dpYyBpbiBDcm9zc1RocmVhZENvcGllciBoYXMgdGhlIGJlbmVmaXQgb2YKKyAgICAgICAgd29y
a2luZyBvbiB0eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgaXNvbGF0ZWRDb3B5KCkgKGUuZy4g
YSBWZWN0b3Igb2YKKyAgICAgICAgc3RkOjpvcHRpb25hbCBvciBhIFZlY3RvciBvZiBzdGQ6OnZh
cmlhbnQpLgorCisgICAgICAgIEltcHJvdmUgdGhlIENyb3NzVGhyZWFkQ29waWVyIHRvIG9wdGlt
aXplIHRoZSBjYXNlIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpCisgICAgICAgIGlzIGNhbGxlZCBv
biBhIHItdmFsdWUgcmVmZXJlbmNlIGluIG1vcmUgY2FzZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBs
b2dpYworICAgICAgICBmb3IgVmVjdG9yLCBIYXNoU2V0LCBIYXNoTWFwLCBzdGQ6OnBhaXIsIHN0
ZDo6dmFyaWFudCB3YXMgaW1wcm92ZWQuIEkKKyAgICAgICAgYWxzbyBhZGRlZCBBUEkgdGVzdCBj
b3ZlcmFnZSBmb3IgdGhvc2UuCisKKyAgICAgICAgVGhlIEFQSSB0ZXN0cyBhbHNvIGZvdW5kIGEg
YnVnIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpIHdhcyBpbmNvcnJlY3RseQorICAgICAgICBtb3Zp
bmcgdGhlIHNvdXJjZSB3aGVuIGNhbGxlZCBvbiBhIHN0ZDo6dmFyaWFudCB0aGF0IHdhcyBub3Qg
YSByLXZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4gVGhpcyBidWcgaXMgZml4ZWQgaW4gdGhpcyBw
YXRjaCB0b28uCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4g
bWFrZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNWZmM2UyM2M3MzkxYjhkNTQwY2Fm
YTBlZTM1ODAyY2NhNjk2ZS4uZGE2YjZjMTQ3YzMxZTIzMTUyOTE2NzE5YWNiYjBlNTk2ZWY4NGQ4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRh
dGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBtb3JlIGlzb2xhdGVkQ29weSgpIG92ZXJsb2FkcyB0aGF0IHdvcmsgb24g
ci12YWx1ZSByZWZlcmVuY2VzIHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhbiBi
ZSBvcHRpbWl6ZWQuIEFsc28gY2FsbCBpc29sYXRlZENvcHkoKSAvIGNyb3NzVGhyZWFkQ29weSgp
IG9uIGEgci12YWx1ZSByZWZlcmVuY2UKKyAgICAgICAgd2hlbmV2ZXIgcG9zc2libGUgdG8gbGV2
ZXJhZ2UgdGhlc2Ugb3B0aW1pemF0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZUNhY2hlSW5mbyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvczo6
aXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm9zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXRy
aWV2ZVJlY29yZHNPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmV0cmlldmVSZWNvcmRzT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVP
cGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRS
ZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3Jk
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJFcnJvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkVycm9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJ
bmZvLmg6CisgICAgICAgICogTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hv
dC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdDo6SW5mbzo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNo
b3Q6OkluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdl
clNuYXBzaG90Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9j
a01hbmFnZXJTbmFwc2hvdDo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFt
RGVzY3JpcHRvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
UGFyYW1EZXNjcmlwdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29y
a2xldFRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZv
cm1UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZENvbm5lY3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRl
cnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5
SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJl
Y3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVS
TFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xhdGVk
Q29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29t
cGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2Fk
VHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
VHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1bGU6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvblJ1bGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6VHJpZ2dlcjo6flRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YkNvcmU6Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkRh
dGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZENvcHkpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRyYW5zY29kaW5nKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTCk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIv
UG9saWN5Q29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxl
VG9rZW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29s
YXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0
aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2Vu
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
VGltaW5nOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VU
aW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmg6
CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5o
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAg
ICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29s
YXRlZENvcHkpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZWxlY3Rpb25PcHRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoaXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpV
bmNvbW1vbkhlYWRlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmNsYWltKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0UGFy
YW1ldGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0
ZWRDb3B5KToKKwogMjAyMi0wMy0wNSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIG5vbi1zdGFuZGFyZCBkaXNwbGF5OmJsb2NrIFVBIHN0eWxlc2hlZXQg
cnVsZSBmb3IgPGxheWVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNDU4MGQ2YjRlZDFhMTk5ZWY0YmE0YzI1OTYx
NDc1MjBjM2Q4MDQxLi5hMDFhOWMxNjQ4ZDBhMjQ3YzQ1ZDc1MjAzMjdhYjE1ZDI5YmY2OTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jv
c3MgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG1vcmUgaXNvbGF0ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVl
IHJlZmVyZW5jZXMgd2hlbiB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGlt
aXplZC4gQWxzbyBjYWxsIGlzb2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSBy
LXZhbHVlIHJlZmVyZW5jZQorICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0
aGVzZSBvcHRpbWl6YXRpb25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvUENN
RGF0YWJhc2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29s
YXRlZENvcHkpOgorICAgICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9y
UmVzdHJpY3RXZWJzaXRlRGF0YUZvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3I6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklE
QlNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkRlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdJbmZvLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1
bGVMaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9s
Q2xhc3NpZmllci5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kYWxDb250YWluZXJDb250cm9sQ2xh
c3NpZmllcjo6Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TWVkaWFB
Y2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsV2l0aEltYWdlVHJhbnNjb2RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9t
YWluSW5mb3JtYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAy
MDIyLTAzLTA0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0
b3Agc2V0dGluZyBOU1VSTElzRXhjbHVkZWRGcm9tQmFja3VwS2V5IGF0dHJpYnV0ZSBmb3IgbG9j
YWxTb3JhZ2VEaXJlY3RvcnkgaW4gVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBm
NmI4ODllMmVmZWJhYWVmYmJmZTViNWM5ODg3MmI5ZmY4Yzc2NjFhLi4xM2FjOGRlOWZkZDg3NDQw
YzQxNjM4MDRmNGFhOTIwNTE2Y2Q5ODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgaXNvbGF0
ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVlIHJlZmVyZW5jZXMgd2hlbiB0
aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGltaXplZC4gQWxzbyBjYWxsIGlz
b2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSByLXZhbHVlIHJlZmVyZW5jZQor
ICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0aGVzZSBvcHRpbWl6YXRpb25z
LgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgor
CiAyMDIyLTAzLTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvcHkgV2ViS2l0IGZyYW1ld29ya3MgYW5kIFhQQyBwcm9jZXNzZXMgdG8gU2Vjb25kYXJ5
IFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9T
b3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDAxZDJhNzc2MzNiMGIwMmNm
NGRmNTI1MGZmZDIzNGNiZjAzOTdiODcuLjQxZTExYjM2NTc3ZGExOGJhNzA5ZmYxNGRiNDBmM2Qy
ZjYzYjkxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTQyLDYgKzE0Miwx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgICAgICAgICAgZGVzdGluYXRpb24udW5j
aGVja2VkQXBwZW5kKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KG9iamVjdCkpOwogICAgICAg
ICByZXR1cm4gZGVzdGluYXRpb247CiAgICAgfQorICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlwZSYm
IHNvdXJjZSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHNvdXJjZS5iZWdp
bigpLCBpdGVyYXRvckVuZCA9IHNvdXJjZS5lbmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsg
KytpdGVyYXRvcikKKyAgICAgICAgICAgICppdGVyYXRvciA9IENyb3NzVGhyZWFkQ29waWVyPFQ+
Ojpjb3B5KFdURk1vdmUoKml0ZXJhdG9yKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHNvdXJj
ZSk7CisgICAgfQogfTsKICAgICAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhhc2hT
ZXRzIG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xhc3NlcwpAQCAtMTU0LDI2ICsxNjAsNDMgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIEhhc2hTZXQ8VD4gPiB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NU
aHJlYWRDb3BpZXI8VD46OmNvcHkob2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlv
bjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAg
ICAgICAgVHlwZSBkZXN0aW5hdGlvbjsKKyAgICAgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzb3VyY2Uuc2l6ZSgpKTsKKyAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0
eSgpKQorICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpj
b3B5KHNvdXJjZS50YWtlQW55KCkpKTsKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAg
IH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhhc2hNYXBzIG9mIENyb3Nz
VGhyZWFkQ29weWFibGUgY2xhc3NlcwotdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4g
c3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hNYXA8SywgVj4g
PiB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEssIFY+IFR5cGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHR5cGVuYW1lIFRhYmxlVHJhaXRz
QXJnPgorc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hNYXA8
S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJn
LCBUYWJsZVRyYWl0c0FyZz4+IHsKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0c0Fy
Zz4gVHlwZTsKICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFR5cGUmIHNvdXJjZSkKICAgICB7
CiAgICAgICAgIFR5cGUgZGVzdGluYXRpb247Ci0gICAgICAgIGZvciAoYXV0byYga2V5VmFsdWUg
OiBzb3VyY2UpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8
Sz46OmNvcHkoa2V5VmFsdWUua2V5KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8Vj46OmNvcHkoa2V5VmFs
dWUudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBzb3VyY2UpCisg
ICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6Y29w
eShrZXkpLCBDcm9zc1RocmVhZENvcGllcjxNYXBwZWRBcmc+Ojpjb3B5KHZhbHVlKSk7CiAgICAg
ICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBl
JiYgc291cmNlKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gc291cmNlLmJl
Z2luKCksIGVuZCA9IHNvdXJjZS5lbmQoKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7
CisgICAgICAgICAgICBpdGVyYXRvci0+a2V5ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6
Y29weShXVEZNb3ZlKGl0ZXJhdG9yLT5rZXkpKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZSA9IENyb3NzVGhyZWFkQ29waWVyPE1hcHBlZEFyZz46OmNvcHkoV1RGTW92ZShpdGVyYXRvci0+
dmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworICAg
IH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIHBhaXJzIG9mIENyb3NzVGhy
ZWFkQ29weWFibGUgY2xhc3NlcwogdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgUz4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6cGFpcjxGLCBTPiA+
IHsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxGLCBTPiBUeXBlOwotICAgIHN0YXRpYyBUeXBlIGNv
cHkoY29uc3QgVHlwZSYgc291cmNlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBU
eXBlIGNvcHkoVSYmIHNvdXJjZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShzb3VyY2UuZmlyc3QpLCBDcm9zc1RocmVhZENv
cGllcjxTPjo6Y29weShzb3VyY2Uuc2Vjb25kKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShzdGQ6OmdldDwwPihzdGQ6OmZvcndhcmQ8
VT4oc291cmNlKSkpLCBDcm9zc1RocmVhZENvcGllcjxTPjo6Y29weShzdGQ6OmdldDwxPihzdGQ6
OmZvcndhcmQ8VT4oc291cmNlKSkpKTsKICAgICB9CiB9OwogCkBAIC0xODksMTEgKzIxMiwxOCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgc3RkOjpvcHRpb25hbDxUPgogCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZv
ciBzdGQ6OnZhcmlhbnQgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzLgogdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
c3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShVJiYgc291cmNlKQorICAgIHVzaW5n
IFR5cGUgPSBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+OworICAgIHN0YXRpYyBzdGQ6OnZhcmlhbnQ8
VHlwZXMuLi4+IGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0ZDo6dmlzaXQoW10gKGF1dG8mIHR5cGUpIC0+IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gewog
ICAgICAgICAgICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUodHlwZSk+Pj46OmNvcHkodHlwZSk7Ci0g
ICAgICAgIH0sIHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKTsKKyAgICAgICAgfSwgc291cmNlKTsK
KyAgICB9CisgICAgc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShUeXBlJiYgc291
cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQoW10gKGF1dG8mJiB0eXBlKSAt
PiBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IHsKKyAgICAgICAgICAgIHJldHVybiBDcm9zc1RocmVh
ZENvcGllcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0
eXBlKHR5cGUpPj4+Ojpjb3B5KFdURk1vdmUodHlwZSkpOworICAgICAgICB9LCBXVEZNb3ZlKHNv
dXJjZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
IGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggYzZiZGFlOWU3MjU3OGMxZTUzMDNmMWNh
Mjg2ZjhlNjhlYTljYjllNS4uNDY3OWExOGRmMDE0NWQyNDVlMTcyNDFjNzlmYzZkN2JhYWExYjI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvVmVjdG9yLmgKQEAgLTc3Niw5ICs3NzYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFy
KCkgeyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+
IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSBjb25zdCAmOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5KCkgJiY7Ci0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVlKSB7IGFwcGVuZDxWYWx1ZVR5cGU+KHN0ZDo6
Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBB
TFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFUmJiB1KSB7IGFwcGVuZDxGYWlsdXJlQWN0aW9uOjpD
cmFzaCwgVT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IEFMV0FZU19JTkxJTkUgYm9vbCB0cnlBcHBlbmQoVSYmIHUpIHsgcmV0dXJuIGFwcGVuZDxGYWls
dXJlQWN0aW9uOjpSZXBvcnQsIFU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KQEAgLTE2NTksMjYg
KzE2NTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0b3I8
VD4+IHsKIH07CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLWlu
bGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCi17Ci0gICAgVmVj
dG9yPFU+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKnRoaXMpCi0gICAgICAgIGNvcHkudW5jaGVj
a2VkQXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5KCkpOwotICAgIHJldHVybiBjb3B5OwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10ZW1w
bGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFZlY3RvcjxVPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omlzb2xhdGVkQ29weSgp
ICYmCi17Ci0gICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oKSwgaXRlcmF0b3JFbmQgPSBl
bmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgKytpdGVyYXRvcikKLSAgICAgICAgKml0ZXJh
dG9yID0gV1RGTW92ZSgqaXRlcmF0b3IpLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiBXVEZN
b3ZlKCp0aGlzKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUg
RnVuYz4KIHNpemVfdCByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKFZlY3RvclR5cGUmIHZlY3Rvciwg
Y29uc3QgRnVuYyYgZnVuYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9GaWxl
U3lzdGVtTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5kZXgg
YmI2MmRhYTMzODM0YzMyOGQwZTUxOWQ2ZjI1ZjRjYjlmZmI5MTc4Ni4uMmZiMWE1ZjI1NjE3ZWZi
MDM2YWE5NGYxN2JkNTM1Zjc0ZWJiNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbWFj
L0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMu
bW0KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIKICAgICAgICAgdXJs
U3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CiAKICAgICAvLyBDYWxsIE1ldGFkYXRhIEFQSSBv
biBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCi0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJp
bmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVl
KERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNvbGF0
ZWRDb3B5KCksIHVybFN0cmluZyA9IFdURk1vdmUodXJsU3RyaW5nKS5pc29sYXRlZENvcHkoKSwg
cmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBhdXRvIGl0ZW0g
PSBhZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5o
CmluZGV4IDAxZmRjOTM3Yzc1MTgxNTNlMDBiY2NiN2VkNTkxYTU4MTE0NGYyZGUuLmNmMWE2NzQ5
Nzk3OGQyMjM0YWY0Y2Q2MzkyZGVmYzViNmFiMjJhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zIHsKLSAgICBDYWNo
ZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGlnbm9yZVNlYXJj
aCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsg
fQorICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBXVEZNb3Zl
KGNhY2hlTmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgYm9vbCBpZ25vcmVTZWFyY2gg
eyBmYWxzZSB9OwogICAgIGJvb2wgaWdub3JlTWV0aG9kIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNi4uYjQyODI2NWMxMjc4MjU0N2MxYTBkZTQy
ZjlhNmYyMmNlNDM4ZGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKQEAgLTE1NCwxNiArMTU0LDYgQEAgUmVjb3JkIFJlY29yZDo6Y29w
eSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlY29yZCB7IGlkZW50aWZpZXIsIHVwZGF0ZVJlc3BvbnNl
Q291bnRlciwgcmVxdWVzdEhlYWRlcnNHdWFyZCwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIs
IHJlc3BvbnNlSGVhZGVyc0d1YXJkLCByZXNwb25zZSwgY29weVJlc3BvbnNlQm9keShyZXNwb25z
ZUJvZHkpLCByZXNwb25zZUJvZHlTaXplIH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ2FjaGVJbmZv
IGlzb2xhdGVDYWNoZUluZm8oY29uc3QgQ2FjaGVJbmZvJiBpbmZvKQotewotICAgIHJldHVybiBD
YWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8ubmFtZS5pc29sYXRlZENvcHkoKSB9Owot
fQotCi1DYWNoZUluZm9zIENhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSgpCi17Ci0gICAgcmV0dXJu
IHsgV1RGOjptYXAoaW5mb3MsIGlzb2xhdGVDYWNoZUluZm8pLCB1cGRhdGVDb3VudGVyIH07Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRl
eCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5iZTVjMmMxZTM1NDBj
NzZmZWM3N2VkNWM0ZjZlYTBhYjQyMjk3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC04MiwxNiArODIsMjAgQEAgc3RydWN0IFJlY29y
ZCB7CiBzdHJ1Y3QgQ2FjaGVJbmZvIHsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwogICAgIFN0
cmluZyBuYW1lOworCisgICAgQ2FjaGVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1
cm4geyBpZGVudGlmaWVyLCBuYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDYWNoZUluZm8g
aXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBpZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLmlz
b2xhdGVkQ29weSgpIH07IH0KIH07CiAKIHN0cnVjdCBDYWNoZUluZm9zIHsKLSAgICBDYWNoZUlu
Zm9zIGlzb2xhdGVkQ29weSgpOworICAgIFZlY3RvcjxDYWNoZUluZm8+IGluZm9zOworICAgIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXI7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJbmZvcz4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFZl
Y3RvcjxDYWNoZUluZm8+IGluZm9zOwotICAgIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7CisgICAg
Q2FjaGVJbmZvcyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KGluZm9zKSwgdXBkYXRlQ291bnRlciB9OyB9CisgICAgQ2FjaGVJbmZvcyBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGluZm9zKSksIHVwZGF0
ZUNvdW50ZXIgfTsgfQogfTsKIAogc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3Vs
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVj
b3Jkc09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNv
cmRzT3B0aW9ucy5oCmluZGV4IDBmYTAyYmJiZGMzMzkxY2RiZGJjZmQ4YWJlNmFmZmY0YWZjYTE1
MGYuLjc1NjA0NTk0N2Y2ZWU1MTg0ZWJkMDg5YTVkNmZiMmNjMjhmNDU1MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5o
CkBAIC0zMyw3ICszMyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSZXRyaWV2
ZVJlY29yZHNPcHRpb25zIHsKLSAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIHsgcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291cmNlT3JpZ2luLT5pc29sYXRlZENvcHko
KSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIHNob3VsZFByb3ZpZGVS
ZXNwb25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBpc29sYXRlZENvcHkoKSBj
b25zdCAmIHsgcmV0dXJuIHsgcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291cmNlT3JpZ2luLT5pc29sYXRlZENvcHkoKSwg
aWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIHNob3VsZFByb3ZpZGVSZXNw
b25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IFdURk1vdmUocmVxdWVzdCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSkuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZU9yaWdpbi0+aXNvbGF0
ZWRDb3B5KCksIGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBzaG91bGRQ
cm92aWRlUmVzcG9uc2UgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJldHJpZXZlUmVjb3Jkc09wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA0NmZmN2NlY2QzZTIyMzI5ZDY3NWRlMjVl
MmU2YmQ3OWM1NGI5MTJjLi5iZDIwNGE5Yzc5ZjQ1MTRjZjkwMDNlY2UzNjZkYTM0Y2YxY2VjNWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luLCB1aQogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSByZXN1bHQudmFsdWUo
KS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KS52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgICAgICAgICB3b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1
bHQgPSBXVEZNb3ZlKGlzb2xhdGVkUmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKS5yZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShyZXN1bHQpKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllcgogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0
SWRlbnRpZmllcjsKICAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChy
ZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS50aHJlYWQoKSB9LCBtYWluVGhyZWFk
Q29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25z
ID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLnRocmVhZCgpIH0sIG1haW5UaHJlYWRD
b25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMg
PSBXVEZNb3ZlKG9wdGlvbnMpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBt
YWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVy
LCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpLCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3Jr
ZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5kZWxldGVSZWNv
cmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDAxNmQxNzE3Mjg3NWQyYTUzOWM2YzJhMjk1ZThkNTJjNDY4NTE4NDAuLjk4MmU1YjU4Mzdm
NWM1ZTUyODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDggQEAg
c3RydWN0IExpc3RlZENoaWxkIHsKICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgRmlsZVN5c3Rl
bTo6RmlsZVR5cGUgdHlwZTsKIAotICAgIExpc3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIHR5cGUgfTsgfQorICAgIExpc3Rl
ZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBmaWxlbmFtZS5pc29sYXRl
ZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTGlzdGVkQ2hpbGQgaXNvbGF0ZWRDb3B5KCkgJiYgeyBy
ZXR1cm4geyBXVEZNb3ZlKGZpbGVuYW1lKS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CiB9Owog
CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25v
cmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCkBAIC0yNTYsNyArMjU3LDcg
QEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKIAogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBSZWYgeyBjb250ZXh0IH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZ1bGxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkoZGlyZWN0b3J5VmlydHVhbFBhdGgpXSgpIG11dGFibGUgewogICAgICAgICBh
dXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0YShmdWxsUGF0aCk7
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4gPSBjcm9zc1RocmVh
ZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeVZp
cnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9
IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobGlzdGVk
Q2hpbGRyZW4pKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHRvRmlsZVN5c3RlbUVudHJpZXMoY29udGV4dCwgcHJvdGVjdGVkVGhpcywgV1RGTW92ZShsaXN0
ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTM1NTBmYTdkOWExNTlmZTFmOWY3ZTc3NmUzZGRl
NmZhNTI3ZDRmNy4uZDhmODU2NzRjZDExMGIzMTA5ZjZhOWU0OGY3OWM2ZDdmZjViNDNkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuY3BwCkBAIC00MiwxNCArNDIsMjEgQEAgSURCRGF0YWJhc2VJZGVudGlm
aWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNl
Y3VyaXQKICAgICBBU1NFUlQoIWRhdGFiYXNlTmFtZS5pc051bGwoKSk7CiB9CiAKLUlEQkRhdGFi
YXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CitJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENv
cHkoKSBjb25zdCAmCiB7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0K
ICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1lID0gbV9kYXRhYmFzZU5hbWUuaXNvbGF0ZWRD
b3B5KCk7CiAgICAgaWRlbnRpZmllci5tX29yaWdpbiA9IG1fb3JpZ2luLmlzb2xhdGVkQ29weSgp
OwogICAgIGlkZW50aWZpZXIubV9pc1RyYW5zaWVudCA9IG1faXNUcmFuc2llbnQ7CisgICAgcmV0
dXJuIGlkZW50aWZpZXI7Cit9CiAKK0lEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlk
ZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IGlkZW50aWZpZXI7CisgICAgaWRlbnRpZmllci5tX2RhdGFiYXNlTmFtZSA9IFdURk1vdmUobV9k
YXRhYmFzZU5hbWUpLmlzb2xhdGVkQ29weSgpOworICAgIGlkZW50aWZpZXIubV9vcmlnaW4gPSBX
VEZNb3ZlKG1fb3JpZ2luKS5pc29sYXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1faXNUcmFu
c2llbnQgPSBtX2lzVHJhbnNpZW50OwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5oCmluZGV4IGY4M2YxOTVhNTZkZWZkMmIzZjBlY2Q4ZTlkNjcxNGQyOTQwZDBhMjIu
LjI3MWRlZDRkZWU4Yjg4OGQzMWU0YzRjMTFlMWQxZmM4ODlkYmE2YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQkRh
dGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1lT3Jp
Z2luLCBib29sIGlzVHJhbnNpZW50ID0gZmFsc2UpOwogCi0gICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRlZENv
cHkoKSAmJjsKIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQu
Y3BwCmluZGV4IDU0NzlkNjFmMWYwM2E5ZjJmMmZlMzkzY2Y3MmRjMjk1MjJkNTRmNTIuLmFiNTY3
MjIzMWYyYmI0MjQzMmEyOWIyMDc0ZmEwYTA2N2JjMzQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtNTAsNyArNTAsNyBA
QCB2b2lkIElEQkdldFJlc3VsdDo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQkdldFJlc3VsdCYgc291
cmNlLCBJREJHZXRSZXN1bHQmIGRlc3RpbgogICAgIGRlc3RpbmF0aW9uLm1fcHJpbWFyeUtleURh
dGEgPSBzb3VyY2UubV9wcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKTsKICAgICBkZXN0aW5h
dGlvbi5tX2tleVBhdGggPSBjcm9zc1RocmVhZENvcHkoc291cmNlLm1fa2V5UGF0aCk7CiAgICAg
ZGVzdGluYXRpb24ubV9pc0RlZmluZWQgPSBzb3VyY2UubV9pc0RlZmluZWQ7Ci0gICAgZGVzdGlu
YXRpb24ubV9wcmVmZXRjaGVkUmVjb3JkcyA9IHNvdXJjZS5tX3ByZWZldGNoZWRSZWNvcmRzLmlz
b2xhdGVkQ29weSgpOworICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBjcm9z
c1RocmVhZENvcHkoc291cmNlLm1fcHJlZmV0Y2hlZFJlY29yZHMpOwogfQogCiB2b2lkIElEQkdl
dFJlc3VsdDo6c2V0VmFsdWUoSURCVmFsdWUmJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTg2N2IxYjdl
NmQ2ZjE1NDllY2Q3MjYxMjdkY2M3Njk5NWE5ZDA2Li43NzNlNWIyZDNhYTVkMjhlYmViYTgzNmY5
NzcyYzg3ZDU0NjgyNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05MzIsNyArOTMyLDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKElEQk9i
amVjdFN0b3JlJgogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgb2Jq
ZWN0IHN0b3JlIHJlY29yZHMgb3BlcmF0aW9uOiAlcyIsIGdldEFsbFJlY29yZHNEYXRhLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgp
LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RdIChjb25zdCBhdXRvJiBy
ZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVy
KHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29w
eSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IFdURk1vdmUoZ2V0QWxsUmVjb3Jkc0RhdGEpLmlz
b2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmdldEFsbFJlY29yZHNPblNlcnZlcihvcGVyYXRpb24sIGdldEFsbFJlY29yZHNEYXRhKTsKICAg
ICB9KSk7CiAKQEAgLTk1NCw3ICs5NTQsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSURCSW5kZXgmIGluZGV4LCBjb25zdAogICAg
IExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgaW5kZXggcmVjb3JkcyBvcGVy
YXRpb246ICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0
KTsKLSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNE
YXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24p
IHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29yZHNE
YXRhID0gV1RGTW92ZShnZXRBbGxSZWNvcmRzRGF0YSkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBv
cGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2VydmVy
KG9wZXJhdGlvbiwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0pKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggYzlkZDFkMDM2ZTdjMTk0YTljY2IxNDZjMDVhMDc2MzFhZDNkZGIz
Yy4uN2VmOWQwYTM4N2Y3MjdkODVlYzBkZWVmNmQzY2FlMGRlZDAxNThjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCkBAIC0zNDQsNyArMzQ0LDcgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0
U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4JiBpbmRl
eCkKIAogICAgICAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7CiAgICAgICAgICAgICBnZW5lcmF0
ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmRleEluZm8sIGpzVmFsdWUsIGluZGV4
S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKLSAgICAgICAgICAgIHJlc3VsdEluZGV4S2V5ID0g
aW5kZXhLZXkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgICAgICByZXN1bHRJbmRleEtleSA9IFdU
Rk1vdmUoaW5kZXhLZXkpLmlzb2xhdGVkQ29weSgpOwogICAgICAgICB9KTsKIAogICAgICAgICBp
ZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA5MjFhYTJiMGI4ODA5YjNhNGRjZjczMjE4OWRiOTA5YTQ2MGFiMThmLi5iNTNlOGJhOTYyZjZm
Yjc3MjIzZGNhM2JkNGU2MmI2MWI1OTdiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMTg4Niw3ICsxODg2LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29yZChJREJPYmplY3RTdG9yZUluZm8mIG8KIAog
ICAgICAgICBJbmRleEtleSBpbmRleEtleTsKICAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZh
bHVlKGdsb2JhbE9iamVjdCwgaW5mbywganNWYWx1ZSwgaW5kZXhLZXksIG9iamVjdFN0b3JlSW5m
by5rZXlQYXRoKCksIGtleSk7Ci0gICAgICAgIHJlc3VsdEluZGV4S2V5ID0gaW5kZXhLZXkuaXNv
bGF0ZWRDb3B5KCk7CisgICAgICAgIHJlc3VsdEluZGV4S2V5ID0gV1RGTW92ZShpbmRleEtleSku
aXNvbGF0ZWRDb3B5KCk7CiAgICAgfSk7CiAKICAgICBpZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKaW5kZXggZjRjNzVlMGUyN2E2OTA2M2Q0
NzZkY2NiOWRkNzhjNWM4ZGRhNjJhYS4uYzcxZDA3ZjY5YzNkYmI0NzBkNjExNzc2M2VkYmQ5ZDg0
MTAzNzY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCkBAIC0zNiw3
ICszNiw4IEBAIHN0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwgdmVy
c2lvbiB9OyB9CisgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIHZlcnNpb24gfTsgfQog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU5LDkgKzYwLDQgQEAgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
OjpkZWNvZGUoRGVjb2QKICAgICByZXR1cm4gaW5mbzsKIH0KIAotaW5saW5lIElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb24gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCB2ZXJzaW9uIH07Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDJlMGE1N2FjNjY3YjYyY2M2
Y2ZiZGJlNGNmNmYxNTE4OTliMjE4YWIuLjE4ZWQ3ZTIxYjM1NTBkMzk5NDIyOGVlMGFhN2RhNDhl
OTgxZjY0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAgSURCRXJyb3I6OklEQkVycm9y
KHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogfQogCi1JREJFcnJvciBJREJFcnJvcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gSURCRXJyb3IgeyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9Owot
fQotCiBTdHJpbmcgSURCRXJyb3I6Om5hbWUoKSBjb25zdAogewogICAgIGlmICghbV9jb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
aAppbmRleCBiMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkLi4zMjk2NTZj
ZTlmNDI4ODdmM2QwYmY3MDhjOWIwYzYzYTkxNWUwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTQsNyArNTQsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jb2RlOyB9CiAg
ICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgSURCRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRXJyb3Ig
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgbV9tZXNz
YWdlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBJREJFcnJvciBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgV1RGTW92ZShtX21lc3NhZ2UpLmlzb2xhdGVkQ29w
eSgpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBJREJFcnJvciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNw
cAppbmRleCAwMTVhY2Y3Mjc2OTQ1Mzc0YzRhZGI4YWQyNDM0YmEzYjc5OWFhZmRhLi5lNzFkMmVi
ZjIxYzRhZGZlZjI4YTJiZGFmYTFmZjg0YjNmN2YwMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcApAQCAt
NDUsMTEgKzQ1LDE2IEBAIElEQkluZGV4SW5mbzo6SURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwKIHsKIH0KIAotSURCSW5kZXhJ
bmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0lEQkluZGV4SW5mbyBJREJJ
bmRleEluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBtX2lkZW50
aWZpZXIsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBtX25hbWUuaXNvbGF0ZWRDb3B5KCksIGNy
b3NzVGhyZWFkQ29weShtX2tleVBhdGgpLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5IH07CiB9CiAK
K0lEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0
dXJuIHsgbV9pZGVudGlmaWVyLCBtX29iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShtX25h
bWUpLmlzb2xhdGVkQ29weSgpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2tleVBhdGgpKSwg
bV91bmlxdWUsIG1fbXVsdGlFbnRyeSB9OworfQorCiAjaWYgIUxPR19ESVNBQkxFRAogCiBTdHJp
bmcgSURCSW5kZXhJbmZvOjpsb2dnaW5nU3RyaW5nKGludCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmgKaW5kZXggOWYxZWI5YTBhMTAxNDQzOGNiMjM4NjNhYWNhMjE0YjdjZjQxYmNlNi4uYTEwZjhm
NTJmMzQyMWExNzllMGRjYWQ5YWFiOTdmMmZjMWE4ZWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaApAQCAtMzUs
NyArMzUsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCSW5kZXhJbmZvKCk7CiAg
ICAgSURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCSW5kZXhJbmZvIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4SW5mbyBpc29s
YXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4SW5mbyBpc29s
YXRlZENvcHkoKSAmJjsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3Rv
cmVJbmZvLmNwcAppbmRleCAxMGMxYTRjNTE1ZTJlYWVmODA5Mzk0MmJiMzZjNWQ4ZDUyMzRjMGNj
Li4xZThiOGRlYTQwYmY4YmQzNmJkMjcyM2U5MjAwMTA2MDZhZDU2MDQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2Jq
ZWN0U3RvcmVJbmZvLmNwcApAQCAtOTIsMTMgKzkyLDE3IEBAIElEQkluZGV4SW5mbyogSURCT2Jq
ZWN0U3RvcmVJbmZvOjppbmZvRm9yRXhpc3RpbmdJbmRleCh1aW50NjRfdCBpZGVudGlmaWVyKQog
ICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCi1JREJPYmplY3RTdG9yZUluZm8gSURC
T2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAorSURCT2JqZWN0U3RvcmVJbmZv
IElEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIElEQk9i
amVjdFN0b3JlSW5mbyByZXN1bHQgPSB7IG1faWRlbnRpZmllciwgbV9uYW1lLmlzb2xhdGVkQ29w
eSgpLCBjcm9zc1RocmVhZENvcHkobV9rZXlQYXRoKSwgbV9hdXRvSW5jcmVtZW50IH07CisgICAg
cmVzdWx0Lm1faW5kZXhNYXAgPSBjcm9zc1RocmVhZENvcHkobV9pbmRleE1hcCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KIAotICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX2luZGV4TWFwKQot
ICAgICAgICByZXN1bHQubV9pbmRleE1hcC5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1
ZS5pc29sYXRlZENvcHkoKSk7Ci0KK0lEQk9iamVjdFN0b3JlSW5mbyBJREJPYmplY3RTdG9yZUlu
Zm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgSURCT2JqZWN0U3RvcmVJbmZvIHJlc3VsdCA9
IHsgbV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1fbmFtZSkuaXNvbGF0ZWRDb3B5KCksIGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKG1fa2V5UGF0aCkpLCBtX2F1dG9JbmNyZW1lbnQgfTsKKyAgICByZXN1
bHQubV9pbmRleE1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1faW5kZXhNYXApKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKaW5kZXggNDAzZmQ0
MDU5ODZiYzVkOTI3YjRlNjNhZGYwYzk1ZmVmMWFlOTY5OS4uZTNhMDNiZjc1NjU4MzFhNzUwODM1
OWQ1OGMyNmVhOTEyZTcxODFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaApAQCAtNDQsNyAr
NDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbmFtZShjb25zdCBTdHJpbmcmIG5ld05hbWUp
IHsgbV9uYW1lID0gbmV3TmFtZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCT2JqZWN0U3Rv
cmVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVj
dFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIElE
Qk9iamVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIElEQkluZGV4SW5mbyBj
cmVhdGVOZXdJbmRleCh1aW50NjRfdCBpbmRleElELCBjb25zdCBTdHJpbmcmIG5hbWUsIElEQktl
eVBhdGgmJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAgICAgdm9pZCBhZGRFeGlz
dGluZ0luZGV4KGNvbnN0IElEQkluZGV4SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCmluZGV4IDQ0
MmMzMDNkMmE4NzRlMjk0M2VmN2FjNWY2MmZjZTM2MDBmMmU3NWEuLjI3MDdmNzE2MmY5ZGQwYTMx
OTA1YTI4NDRkNzA2YzQ2ZjIyMTMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90LmgKQEAgLTM3LDcgKzM3
LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgewogICAgICAgICBXZWJMb2NrTW9k
ZSBtb2RlIHsgV2ViTG9ja01vZGU6OkV4Y2x1c2l2ZSB9OwogICAgICAgICBTdHJpbmcgY2xpZW50
SWQ7CiAKLSAgICAgICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IG5hbWUu
aXNvbGF0ZWRDb3B5KCksIG1vZGUsIGNsaWVudElkLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENv
cHkoKSwgbW9kZSwgY2xpZW50SWQuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbmZvIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
bW9kZSwgV1RGTW92ZShjbGllbnRJZCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
IHsgZW5jb2RlciA8PCBuYW1lIDw8IG1vZGUgPDwgY2xpZW50SWQ7IH0KICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5mbz4gZGVjb2RlKERlY29k
ZXImKTsKQEAgLTQ2LDcgKzQ3LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25hcHNob3Qgewog
ICAgIFZlY3RvcjxJbmZvPiBoZWxkOwogICAgIFZlY3RvcjxJbmZvPiBwZW5kaW5nOwogCi0gICAg
V2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShoZWxkKSwgY3Jvc3NUaHJlYWRDb3B5KHBlbmRpbmcpIH07IH0KKyAgICBX
ZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBj
cm9zc1RocmVhZENvcHkoaGVsZCksIGNyb3NzVGhyZWFkQ29weShwZW5kaW5nKSB9OyB9CisgICAg
V2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGhlbGQpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGVuZGlu
ZykpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0IHsgZW5jb2RlciA8PCBoZWxkIDw8IHBlbmRpbmc7IH0KICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJMb2NrTWFuYWdl
clNuYXBzaG90PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oCmluZGV4IDFlZDZjZGU3Mjll
ZjkzNTc3MGJhOTYzN2QzYWZhNWYwMmE4ZDg2NGUuLjVkZTU0ZjhiMzAzZDI0Yzk4NmI0NWIxZTRj
ZDBmY2E5YTNiMDI5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgKQEAgLTQyLDE2ICs0Miw4IEBAIHN0cnVjdCBB
dWRpb1BhcmFtRGVzY3JpcHRvciB7CiAgICAgZmxvYXQgbWF4VmFsdWUgeyAzLjQwMjgyMzVlMzgg
fTsKICAgICBBdXRvbWF0aW9uUmF0ZSBhdXRvbWF0aW9uUmF0ZSB7IEF1dG9tYXRpb25SYXRlOjpB
UmF0ZSB9OwogCi0gICAgQXVkaW9QYXJhbURlc2NyaXB0b3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBuYW1lLmlzb2xhdGVkQ29weSgp
LAotICAgICAgICAgICAgZGVmYXVsdFZhbHVlLAotICAgICAgICAgICAgbWluVmFsdWUsCi0gICAg
ICAgICAgICBtYXhWYWx1ZSwKLSAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlCi0gICAgICAgIH07
Ci0gICAgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBt
YXhWYWx1ZSwgYXV0b21hdGlvblJhdGUgfTsgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
ZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlIH07IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggM2U3
MzljMWNmOTA5ZWY3MjlmNWI5ZjBhOWFmYzhjMGZmZWMyY2FiOC4uOGE1MTMwZGI5NzBmYmY2MmMx
ODQ1MjA5YTQwM2EyYTQ5MjFlNDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwgUmVmPAogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwg
IkEgcHJvY2Vzc29yIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsK
IAotICAgIHRocmVhZCgpLm1lc3NhZ2luZ1Byb3h5KCkucG9zdFRhc2tUb0F1ZGlvV29ya2xldChb
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBhcmFtZXRlckRlc2NyaXB0b3JzID0gY3Jvc3NU
aHJlYWRDb3B5KHBhcmFtZXRlckRlc2NyaXB0b3JzKV0oQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KSBt
dXRhYmxlIHsKKyAgICB0aHJlYWQoKS5tZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRpb1dv
cmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNj
cmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29weShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29y
a2xldCYgd29ya2xldCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIGlmIChhdXRvKiBhdWRpb0NvbnRleHQgPSB3b3JrbGV0LmF1ZGlvQ29udGV4dCgp
KQogICAgICAgICAgICAgYXVkaW9Db250ZXh0LT5hZGRBdWRpb1BhcmFtRGVzY3JpcHRvcnMobmFt
ZSwgV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9ycykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IDZhMGJl
OTY0NDc3M2Q4MjM4MjM2ZDY3OTMyMTgxYTYzN2RkMjVhMzAuLjU0YWMwOGNkNDhkZjNjY2NjM2Nl
NGMwM2U3YzllZjMyMWIwMmFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKQEAgLTM3LDEwICszNywxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0
VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3Qg
V29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitBdWRpb1dvcmtsZXRUaHJlYWQ6OkF1ZGlv
V29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHks
IFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IFdvcmtlck9yV29ya2xldFRo
cmVhZChwYXJhbWV0ZXJzLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX21lc3Nh
Z2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQotICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMu
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKS5p
c29sYXRlZENvcHkoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKaW5kZXggZjZlNzE1NTZjZTBjOTRmYWQ0ZDI2
OTc1MzI2ODY1ODIwNDEzNTI3Mi4uYjM0ZWU5OTg5OGY5ZGRkMWQwYTdiMzgyMGYxYjVjY2EyZWY3
ZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5OwogCiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgV29ya2VyT3JX
b3JrbGV0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFRocmVh
ZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29u
c3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIFJlZjxBdWRpb1dv
cmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5n
UHJveHksIFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldFRocmVhZChtZXNzYWdpbmdQcm94eSwgcGFy
YW1ldGVycykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJl
YWQobWVzc2FnaW5nUHJveHksIFdURk1vdmUocGFyYW1ldGVycykpKTsKICAgICB9CiAgICAgfkF1
ZGlvV29ya2xldFRocmVhZCgpOwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHkoKSB7IHJldHVybiBtX21lc3Nh
Z2luZ1Byb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKKyAgICBBdWRp
b1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmLCBXb3JrbGV0UGFyYW1l
dGVycyYmKTsKIAogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBSZWY8VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAppbmRleCBiZWYwMzllMTVlODI1NjUwNzBmMGUz
N2Y5ZjMzOWY1YTRmYTEzNTI0Li4zZWFlOTYxMDQ4NzFlYWEyODliNTAwNDRhYjE3YjM5MTUyMzgy
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRhc2suY3BwCkBAIC05NSw3ICs5NSw3IEBAIERhdGFiYXNlT3BlblRhc2s6OkRhdGFiYXNl
T3BlblRhc2soRGF0YWJhc2UmIGRhdGFiYXNlLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiCiAK
IHZvaWQgRGF0YWJhc2VPcGVuVGFzazo6ZG9QZXJmb3JtVGFzaygpCiB7Ci0gICAgbV9yZXN1bHQg
PSBpc29sYXRlZENvcHkoZGF0YWJhc2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3NldFZlcnNp
b25Jbk5ld0RhdGFiYXNlKSk7CisgICAgbV9yZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoZGF0YWJh
c2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3NldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSk7CiB9
CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggYWU2NjBjMDIxZjdhOGQyMGQ0
YzExYmE0YmQ5YTM0MmVmZmY3MzY0OS4uMDY3ZmQzOTEzOTBjODVkYzJkNDlkZjQwODAxNjJiNDNj
NGY0MjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzcyLDggKzM3MiwxMCBAQCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKQogCiAgICAgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICBpbnQgc3RlcFJlc3VsdDsKLSAgICB3aGls
ZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKLSAgICAg
ICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSktPmlzb2xhdGVkQ29weSgpKTsKKyAgICB3aGls
ZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgeworICAg
ICAgICBpZiAoYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSkKKyAgICAgICAgICAgIG9yaWdpbnMu
YXBwZW5kKFdURk1vdmUob3JpZ2luKS52YWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICB9CiAg
ICAgb3JpZ2lucy5zaHJpbmtUb0ZpdCgpOwogCiAgICAgaWYgKHN0ZXBSZXN1bHQgIT0gU1FMSVRF
X0RPTkUpCkBAIC01MzcsNyArNTM5LDYgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0g
bWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKIAogICAgIGF1dG8gb3JpZ2luID0gZGF0
YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKLQogICAgIGF1dG8qIG5hbWVNYXAgPSBtX29wZW5EYXRh
YmFzZU1hcC0+Z2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lTWFwKSB7CiAgICAgICAgIG5hbWVN
YXAgPSBuZXcgRGF0YWJhc2VOYW1lTWFwOwpAQCAtNTk4LDE0ICs1OTksMTMgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiBSZWY8
T3JpZ2luTG9jaz4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2RhdGFi
YXNlR3VhcmQgfTsKLSAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3JpZ2luLmRhdGFi
YXNlSWRlbnRpZmllcigpOwogCiAgICAgLy8gVGhlIG9yaWdpbkxvY2tNYXAgaXMgYWNjZXNzZWQg
ZnJvbSBtdWx0aXBsZSBEYXRhYmFzZVRocmVhZHMgc2luY2UKICAgICAvLyBkaWZmZXJlbnQgc2Ny
aXB0IGNvbnRleHRzIGNhbiBiZSB3cml0aW5nIHRvIGRpZmZlcmVudCBkYXRhYmFzZXMgZnJvbQog
ICAgIC8vIHRoZSBzYW1lIG9yaWdpbi4gSGVuY2UsIHRoZSBkYXRhYmFzZUlkZW50aWZpZXIga2V5
IG5lZWRzIHRvIGJlIGFuCiAgICAgLy8gaXNvbGF0ZWQgY29weS4gQW4gaXNvbGF0ZWQgY29weSBn
aXZlcyB1cyBhIHZhbHVlIHdob3NlIHJlZkNvdW50aW5nIGlzCiAgICAgLy8gdGhyZWFkLXNhZmUs
IHNpbmNlIG91ciBjb3B5IGlzIGd1YXJkZWQgYnkgdGhlIG1fZGF0YWJhc2VHdWFyZCBtdXRleC4K
LSAgICBkYXRhYmFzZUlkZW50aWZpZXIgPSBkYXRhYmFzZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5
KCk7CisgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50
aWZpZXIoKS5pc29sYXRlZENvcHkoKTsKIAogICAgIHJldHVybiBtX29yaWdpbkxvY2tNYXAuZW5z
dXJlKGRhdGFiYXNlSWRlbnRpZmllciwgWyZdIHsKICAgICAgICAgcmV0dXJuIE9yaWdpbkxvY2s6
OmNyZWF0ZShvcmlnaW5QYXRoKG9yaWdpbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggOTMzNGM1NTFjNDRlNDE1MzFlMGQ1NjZmMjJiNTI5NjlkNDYx
MGQ4Mi4uYmExYjQwMjYxMmEzOTQxNjgzMzFiNjUxYTVkM2YyZDkxNTMwODkwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgp
CiAKICAgICBTdHJpbmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJw
cm90b2NvbCgpOwogICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+ZXh0ZW5zaW9ucygpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBzdWJwcm90b2NvbC5pc29sYXRlZENvcHkoKSwgZXh0
ZW5zaW9ucyA9IGV4dGVuc2lvbnMuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBXVEZNb3ZlKHN1YnByb3RvY29sKS5pc29s
YXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IFdURk1vdmUoZXh0ZW5zaW9ucykuaXNvbGF0ZWRDb3B5
KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3Jh
cHBlci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggM2EzNWUy
NjA1ZTAzZTYyOTc5YjIyOWQ4MjZmZTZlNzNiZTI5NDJkZi4uMDA0NWMyN2QzMWIxMDdjZGY3YTNk
YWM4ZDZiNDE1OWZjYWRmMTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTk3MSw3ICs5NzEsNiBAQCBk
b20vRXZlbnROYW1lcy5jcHAKIGRvbS9FdmVudFBhdGguY3BwCiBkb20vRXZlbnRUYXJnZXQuY3Bw
CiBkb20vRXZlbnRUYXJnZXRDb25jcmV0ZS5jcHAKLWRvbS9FeGNlcHRpb25EYXRhLmNwcAogZG9t
L0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAogZG9tL0ZvY3VzRXZlbnQuY3BwCiBkb20vRm9ybURh
dGFFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhYTIyN2Q1OThlNDI5ZDg1NWJiM2RlZWRhOWIxZDQ3MjgwZDYyNDNi
Li5jNTJiNWY3MDc5YWIxYjZlMGQ1ZTU4ZjJjZWZlYzZkNmU5NDVlOWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDA1NSw3
ICsxMDA1NSw2IEBACiAJCTUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lz
dHJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclJlZ2lz
dHJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDU5NTFGNEE2ODYx
MDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUY2NDVBMDFGNEJGNTE2MDBCNTRERUQgLyogU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyogRXhjZXB0aW9uRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25EYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1RDIxRkVDREJDODAwQjU0
REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFGNjQ1RDMxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NURFMUZGNDU5NEIwMEI1NERFRCAvKiBNZXNz
YWdlUG9ydElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVz
c2FnZVBvcnRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjU2
NSw3ICszMjU2NCw2IEBACiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFy
Z2V0RmFjdG9yeS5pbiAqLywKIAkJCQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0
aW9uLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUu
aCAqLywKLQkJCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyogRXhjZXB0aW9uRGF0YS5jcHAg
Ki8sCiAJCQkJNTFGNjQ1NjAxRjQ1Mzk4QjAwQjU0REVEIC8qIEV4Y2VwdGlvbkRhdGEuaCAqLywK
IAkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCAqLywKIAkJCQlF
NDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IGQ1OTZkYTQwOGI3ODdjMWRmNjYxOTM2Y2MwYzIx
ZTQ4Mzk5ZTJmODcuLjFiMmYyZmUwY2YzMTA3ZmJjYzk5YTQwYTA3NzIyZjkwN2IwNDhiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKQEAgLTExNCwxMiArMTE0LDE0IEBAIEV4cGVjdGVkPE1v
ZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
cGFyc2UoY29uc3QKICAgICByZXR1cm4gTW9kaWZ5SGVhZGVyc0FjdGlvbiB7IFdURk1vdmUoKnJl
cXVlc3RIZWFkZXJzKSwgV1RGTW92ZSgqcmVzcG9uc2VIZWFkZXJzKSB9OwogfQogCi1Nb2RpZnlI
ZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0CitN
b2RpZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNv
bnN0ICYKIHsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVxdWVzdEhl
YWRlcnMpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVzcG9uc2VIZWFkZXJzKQotICAgIH07
CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHJlcXVlc3RIZWFkZXJzKSwgY3Jvc3NUaHJl
YWRDb3B5KHJlc3BvbnNlSGVhZGVycykgfTsKK30KKworTW9kaWZ5SGVhZGVyc0FjdGlvbiBNb2Rp
ZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlc3BvbnNlSGVhZGVycykpIH07CiB9CiAKIGJvb2wgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
b3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJiBvdGhlcikgY29uc3QKQEAgLTIy
MiwxMSArMjI0LDE0IEBAIGF1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5m
bzo6cGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmIGluZm9WYWx1ZSkKICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTW9kaWZ5SGVhZGVyc0ludmFsaWRP
cGVyYXRpb24pOwogfQogCi1hdXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlcklu
Zm86Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IE1vZGlmeUhlYWRlckluZm8KK2F1dG8gTW9kaWZ5
SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiAt
PiBNb2RpZnlIZWFkZXJJbmZvCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRD
b3B5KG9wZXJhdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShvcGVy
YXRpb24pIH07Cit9CisKK2F1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5m
bzo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gTW9kaWZ5SGVhZGVySW5mbworeworICAgIHJldHVybiB7
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wZXJhdGlvbikpIH07CiB9CiAKIGJvb2wgTW9kaWZ5
SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6b3BlcmF0b3I9PShjb25zdCBNb2RpZnlI
ZWFkZXJJbmZvJiBvdGhlcikgY29uc3QKQEAgLTMxNCwxMSArMzE5LDE0IEBAIEV4cGVjdGVkPFJl
ZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IFJlZGlyZWN0QWN0aW9uOjpwYXJzZShjb25z
dCBKU09OOjpPYmplCiAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25F
cnJvcjo6SlNPTlJlZGlyZWN0SW52YWxpZFR5cGUpOwogfQogCi1SZWRpcmVjdEFjdGlvbiBSZWRp
cmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1JlZGlyZWN0QWN0aW9uIFJlZGlyZWN0
QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
Y3Jvc3NUaHJlYWRDb3B5KGFjdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFk
Q29weShhY3Rpb24pIH07Cit9CisKK1JlZGlyZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjppc29s
YXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFj
dGlvbikpIH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246Om9wZXJhdG9yPT0oY29uc3QgUmVk
aXJlY3RBY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNDMyLDE4ICs0NDAsMTYgQEAgYXV0byBSZWRp
cmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmplY3Qm
IHRyYW5zZm9ybSkgLT4KICAgICByZXR1cm4gYWN0aW9uOwogfQogCi1hdXRvIFJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFVSTFRyYW5z
Zm9ybUFjdGlvbgorYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjppc29s
YXRlZENvcHkoKSBjb25zdCAmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgogewotICAgIHJldHVybiB7
Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShmcmFnbWVudCksCi0gICAgICAgIGNyb3NzVGhyZWFk
Q29weShob3N0KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHBhc3N3b3JkKSwKLSAgICAgICAg
Y3Jvc3NUaHJlYWRDb3B5KHBhdGgpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocG9ydCksCi0g
ICAgICAgIGNyb3NzVGhyZWFkQ29weShxdWVyeVRyYW5zZm9ybSksCi0gICAgICAgIGNyb3NzVGhy
ZWFkQ29weShzY2hlbWUpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkodXNlcm5hbWUpCi0gICAg
fTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZnJhZ21lbnQpLCBjcm9zc1RocmVhZENv
cHkoaG9zdCksIGNyb3NzVGhyZWFkQ29weShwYXNzd29yZCksIGNyb3NzVGhyZWFkQ29weShwYXRo
KSwgY3Jvc3NUaHJlYWRDb3B5KHBvcnQpLCBjcm9zc1RocmVhZENvcHkocXVlcnlUcmFuc2Zvcm0p
LAorICAgICAgICBjcm9zc1RocmVhZENvcHkoc2NoZW1lKSwgY3Jvc3NUaHJlYWRDb3B5KHVzZXJu
YW1lKSB9OworfQorCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlz
b2xhdGVkQ29weSgpICYmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgoreworICAgIHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGZyYWdtZW50KSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGhvc3QpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGFzc3dvcmQpKSwgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUocGF0aCkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwb3J0KSksCisgICAg
ICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHF1ZXJ5VHJhbnNmb3JtKSksIGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKHNjaGVtZSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh1c2VybmFtZSkp
IH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6b3BlcmF0
b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNjk5LDEyICs3
MDUsMTQgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRy
YW5zZm9ybTo6YXBwbHlUb1VSTChVUkwmIHVybCkgY28KICAgICB1cmwuc2V0UXVlcnkodHJhbnNm
b3JtZWRRdWVyeSk7CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5VHJhbnNmb3Jt
CithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3Jt
Ojppc29sYXRlZENvcHkoKSBjb25zdCAmIC0+IFF1ZXJ5VHJhbnNmb3JtCiB7Ci0gICAgcmV0dXJu
IHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGFkZE9yUmVwbGFjZVBhcmFtcyksCi0gICAgICAg
IGNyb3NzVGhyZWFkQ29weShyZW1vdmVQYXJhbXMpCi0gICAgfTsKKyAgICByZXR1cm4geyBjcm9z
c1RocmVhZENvcHkoYWRkT3JSZXBsYWNlUGFyYW1zKSwgY3Jvc3NUaHJlYWRDb3B5KHJlbW92ZVBh
cmFtcykgfTsKK30KKworYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpR
dWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gUXVlcnlUcmFuc2Zvcm0KK3sKKyAg
ICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShhZGRPclJlcGxhY2VQYXJhbXMpKSwg
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVtb3ZlUGFyYW1zKSkgfTsKIH0KIAogYm9vbCBSZWRp
cmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6b3BlcmF0b3I9
PShjb25zdCBRdWVyeVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0CkBAIC03NzksMTUgKzc4Nyw2IEBA
IGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06
OlF1ZXJ5S2V5VmFsdWU6OnBhcnNlKGNvCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGtleSksIHJl
cGxhY2VPbmx5LCBXVEZNb3ZlKHZhbHVlKSB9IH07CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246
OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xh
dGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5S2V5VmFsdWUKLXsKLSAgICByZXR1cm4gewotICAgICAg
ICBjcm9zc1RocmVhZENvcHkoa2V5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHJlcGxhY2VP
bmx5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHZhbHVlKQotICAgIH07Ci19Ci0KIGJvb2wg
UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5
S2V5VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG90aGVyLmtleSA9PSB0aGlzLT5rZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCmlu
ZGV4IDQ2ZTA1ODBjOWM2ZTU0MGYzYjhiMTA5NjA5MGM1N2FiMWIwM2ZjMDkuLmIwY2MwZWQxZjVj
ODE0MzFjYTZiNGU5ZjgxNzY1MzZmMDJkNzgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaApAQCAt
NTAsOCArNTAsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0aW9uV2l0aG91dE1l
dGFkYXRhIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRoU3Ry
aW5nTWV0YWRhdGEgewotICAgIGNvbnN0IFN0cmluZyBzdHJpbmc7Ci0gICAgVCBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IHsgc3RyaW5nLmlzb2xhdGVkQ29weSgpIH0gfTsgfQorICAg
IFN0cmluZyBzdHJpbmc7CisgICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsg
eyBzdHJpbmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9CisgICAgVCBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IHsgV1RGTW92ZShzdHJpbmcpLmlzb2xhdGVkQ29weSgpIH0gfTsgfQogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEmIG90aGVyKSBjb25z
dCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5nOyB9CiAgICAgdm9pZCBzZXJp
YWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0IHsgc2VyaWFsaXplU3RyaW5nKHZl
Y3Rvciwgc3RyaW5nKTsgfQogICAgIHN0YXRpYyBUIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikgeyByZXR1cm4geyB7IGRlc2VyaWFsaXplU3RyaW5nKHNwYW4pIH0gfTsgfQpA
QCAtNzEsMjcgKzcyLDMxIEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0
aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFkZXI7CiAgICAgICAgICAgICBTdHJpbmcgdmFs
dWU7CiAKLSAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsg
fQorICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0K
KyAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7
IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZSh2YWx1ZSkuaXNvbGF0ZWRD
b3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFwcGVuZE9wZXJh
dGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlzLT5oZWFkZXIg
JiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7IH0KICAgICAgICAgfTsKICAgICAgICAgc3Ry
dWN0IFNldE9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyOwogICAgICAgICAg
ICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICAgICAgICAgIFNldE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25z
dCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHko
KSB9OyB9CisgICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1
cm4geyBXVEZNb3ZlKGhlYWRlcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUodmFsdWUpLmlzb2xh
dGVkQ29weSgpIH07IH0KICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXRPcGVy
YXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVhZGVy
ICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CiAgICAgICAgIH07CiAgICAgICAgIHN0
cnVjdCBSZW1vdmVPcGVyYXRpb24gewogICAgICAgICAgICAgU3RyaW5nIGhlYWRlcjsKIAotICAg
ICAgICAgICAgUmVtb3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsg
aGVhZGVyLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBp
c29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpIH07
IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVy
biB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVtb3ZlT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
b3RoZXIuaGVhZGVyID09IHRoaXMtPmhlYWRlcjsgfQogICAgICAgICB9OwogICAgICAgICB1c2lu
ZyBPcGVyYXRpb25WYXJpYW50ID0gc3RkOjp2YXJpYW50PEFwcGVuZE9wZXJhdGlvbiwgU2V0T3Bl
cmF0aW9uLCBSZW1vdmVPcGVyYXRpb24+OwogICAgICAgICBPcGVyYXRpb25WYXJpYW50IG9wZXJh
dGlvbjsKIAogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVySW5mbywgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwotICAgICAgICBNb2RpZnlIZWFk
ZXJJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBNb2RpZnlIZWFkZXJJbmZvIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIE1vZGlmeUhlYWRlckluZm8gaXNvbGF0ZWRD
b3B5KCkgJiY7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJJbmZv
JikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0
OwogICAgICAgICBzdGF0aWMgTW9kaWZ5SGVhZGVySW5mbyBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0
IHVpbnQ4X3Q+KTsKQEAgLTExNSw3ICsxMjAsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9k
aWZ5SGVhZGVyc0FjdGlvbiB7CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGhhc2hUYWJsZVR5cGUgPT0gSGFzaFRhYmxlVHlwZTo6RGVsZXRlZDsgfQogCiAgICAgc3Rh
dGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2Uo
Y29uc3QgSlNPTjo6T2JqZWN0Jik7Ci0gICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICY7CisgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiYpIGNvbnN0OwogICAgIHZvaWQg
c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgIHN0YXRpYyBNb2RpZnlIZWFk
ZXJzQWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTI3LDEzICsx
MzMsMTUgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICBzdHJ1
Y3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiB7CiAgICAgICAgIFN0cmluZyBleHRlbnNpb25QYXRoOwog
Ci0gICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4geyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRXh0ZW5zaW9u
UGF0aEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgZXh0ZW5zaW9uUGF0
aC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGV4dGVuc2lvblBhdGgpLmlzb2xhdGVkQ29w
eSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4dGVuc2lvblBhdGhBY3Rp
b24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5leHRlbnNpb25QYXRoID09IHRoaXMtPmV4
dGVuc2lvblBhdGg7IH0KICAgICB9OwogICAgIHN0cnVjdCBSZWdleFN1YnN0aXR1dGlvbkFjdGlv
biB7CiAgICAgICAgIFN0cmluZyByZWdleFN1YnN0aXR1dGlvbjsKIAotICAgICAgICBSZWdleFN1
YnN0aXR1dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHJlZ2V4U3Vi
c3RpdHV0aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJzdGl0dXRpb25B
Y3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHJlZ2V4U3Vic3RpdHV0aW9u
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24gaXNv
bGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHJlZ2V4U3Vic3RpdHV0aW9uKS5pc29s
YXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdleFN1YnN0
aXR1dGlvbkFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnJlZ2V4U3Vic3RpdHV0
aW9uID09IHRoaXMtPnJlZ2V4U3Vic3RpdHV0aW9uOyB9CiAgICAgfTsKICAgICBzdHJ1Y3QgVVJM
VHJhbnNmb3JtQWN0aW9uIHsKQEAgLTE0NCw3ICsxNTIsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKIAogICAg
ICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeUtleVZhbHVlLCBzdGQ6OmVycm9yX2Nv
ZGU+IHBhcnNlKGNvbnN0IEpTT046OlZhbHVlJik7Ci0gICAgICAgICAgICAgICAgUXVlcnlLZXlW
YWx1ZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgICAgICAgICBRdWVyeUtleVZhbHVl
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBrZXkuaXNvbGF0ZWRDb3B5KCksIHJl
cGxhY2VPbmx5LCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICAgICAgUXVl
cnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoa2V5KS5pc29s
YXRlZENvcHkoKSwgcmVwbGFjZU9ubHksIFdURk1vdmUodmFsdWUpLmlzb2xhdGVkQ29weSgpIH07
IH0KICAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYp
IGNvbnN0OwogICAgICAgICAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYp
IGNvbnN0OwogICAgICAgICAgICAgICAgIHN0YXRpYyBRdWVyeUtleVZhbHVlIGRlc2VyaWFsaXpl
KFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTU1LDcgKzE2NCw4IEBAIHN0cnVjdCBXRUJDT1JF
X0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZW1v
dmVQYXJhbXM7CiAKICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeVRyYW5zZm9ybSwg
c3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICAgICAgICAg
IFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICAgICAgUXVlcnlU
cmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgICAgIFF1ZXJ5VHJhbnNm
b3JtIGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFF1ZXJ5VHJhbnNmb3JtJikgY29uc3Q7CiAgICAgICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0
b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRpYyBRdWVyeVRyYW5zZm9ybSBk
ZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE3NCw3ICsxODQsOCBAQCBzdHJ1
Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICBTdHJpbmcgdXNlcm5h
bWU7CiAKICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFVSTFRyYW5zZm9ybUFjdGlvbiwgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICAgICAgVVJMVHJhbnNm
b3JtQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBVUkxUcmFuc2Zvcm1BY3Rp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgVVJMVHJhbnNmb3JtQWN0aW9uIGlz
b2xhdGVkQ29weSgpICYmOwogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMVHJhbnNm
b3JtQWN0aW9uJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90
PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgVVJMVHJhbnNmb3JtQWN0aW9uIGRlc2VyaWFsaXpl
KFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTg0LDcgKzE5NSw4IEBAIHN0cnVjdCBXRUJDT1JF
X0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgc3RydWN0IFVSTEFjdGlvbiB7CiAgICAgICAg
IFN0cmluZyB1cmw7CiAKLSAgICAgICAgVVJMQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIHsgdXJsLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgVVJMQWN0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBVUkxBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHVybCku
aXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMQWN0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIudXJsID09IHRoaXMtPnVybDsgfQogICAg
IH07CiAKQEAgLTIwMyw3ICsyMTUsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RB
Y3Rpb24gewogICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBoYXNoVGFi
bGVUeXBlID09IEhhc2hUYWJsZVR5cGU6OkRlbGV0ZWQ7IH0KIAogICAgIHN0YXRpYyBFeHBlY3Rl
ZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmpl
Y3QmKTsKLSAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBSZWRp
cmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFJlZGlyZWN0QWN0aW9uIGlz
b2xhdGVkQ29weSgpICYmOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWRpcmVjdEFjdGlv
biYpIGNvbnN0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0Owog
ICAgIHN0YXRpYyBSZWRpcmVjdEFjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IGQ3MTI2OTc3ZjYxMGRmYjExZTQ0YmVl
NzI0OGY3YzNiOGMwNDkwMzMuLmNmZWJmNWMzMDc4YTk0MWQxOWM3OWEyOTJjNDcwYzllYmJmMjgy
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRp
YyBib29sIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMsIFVu
aXZlcnNhbEFjdGlvblNldCYmCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRl
bnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTiwg
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewogI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgY2FsbE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBydWxlSlNPTi5p
c29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBwYXJzZWRSdWxlTGlzdC5pc29sYXRlZENv
cHkoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVKU09OID0gcnVsZUpTT04uaXNvbGF0
ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gY3Jvc3NUaHJlYWRDb3B5KHBhcnNlZFJ1bGVMaXN0
KV0gewogICAgICAgICBBU1NFUlQocGFyc2VSdWxlTGlzdChydWxlSlNPTikudmFsdWUoKSA9PSBw
YXJzZWRSdWxlTGlzdCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5k
ZXggYjMzMzlmZjY0NzRjNTdhZmU0ZDEzY2JmMDM0ZDRiNTgyZjQ0OGIwNC4uODgyNDAyYzdiODUz
YzFlNWJjNTdmZTZhZTdkNTM3YjA5NmNmZjViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAg
LTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2Rl
PiBsb2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYgogICAgIGlmIChhdXRvIGVy
cm9yID0gY2hlY2tDb25kaXRpb24oImlmLWZyYW1lLXVybCJfcywgZ2V0U3RyaW5nTGlzdCwgQWN0
aW9uQ29uZGl0aW9uOjpJZkZyYW1lVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGVycm9yKTsKIAorICAgIHRyaWdnZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgIHJldHVybiB0cmln
Z2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKaW5kZXggM2I0ZmEzMzkwMTMwMDdmMzU0Mjc4OGEy
NDU5NTI4NTE3MGIzNTMyMy4uNjJlNGNlOGQ4NDdiNjY0NDAwMGE2NGI0OGIyNDZhMzdiMmZiODcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25SdWxlLmNwcApAQCAtOTUsMjMgKzk1LDI2IEBAIHNpemVfdCBEZXNlcmlh
bGl6ZWRBY3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxp
emVkQWN0aW9uCiAgICAgcmV0dXJuIDEgKyBWYXJpYW50RGVzZXJpYWxpemVyPEFjdGlvbkRhdGE+
OjpzZXJpYWxpemVkTGVuZ3RoKHNlcmlhbGl6ZWRBY3Rpb25zLnN1YnNwYW4obG9jYXRpb24gKyAx
KSwgc2VyaWFsaXplZEFjdGlvbnNbbG9jYXRpb25dKTsKIH0KIAotVHJpZ2dlciBUcmlnZ2VyOjpp
c29sYXRlZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENvcHkoKSBjb25z
dCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29weSgpLAot
ICAgICAgICB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCi0gICAgICAgIHRvcFVSTEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgZnJhbWVVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCi0g
ICAgICAgIGZsYWdzLAotICAgICAgICBjb25kaXRpb25zLmlzb2xhdGVkQ29weSgpCi0gICAgfTsK
KyAgICByZXR1cm4geyB1cmxGaWx0ZXIuaXNvbGF0ZWRDb3B5KCksIHVybEZpbHRlcklzQ2FzZVNl
bnNpdGl2ZSwgdG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmcmFtZVVSTEZpbHRlcklzQ2Fz
ZVNlbnNpdGl2ZSwgZmxhZ3MsIGNyb3NzVGhyZWFkQ29weShjb25kaXRpb25zKSB9OwogfQogCi1B
Y3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmlnZ2VyOjppc29s
YXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUodXJsRmlsdGVyKS5pc29sYXRl
ZENvcHkoKSwgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCB0b3BVUkxGaWx0ZXJJc0Nhc2VTZW5z
aXRpdmUsIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmbGFncywgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoY29uZGl0aW9ucykpIH07Cit9CisKK0FjdGlvbiBBY3Rpb246Omlzb2xhdGVk
Q29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkobV9kYXRhKSB9
OwogfQogCitBY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZGF0YSkpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKaW5kZXggN2UzOGQwYTJmNTQzNGU1YzlhZjQzZDUyZmEx
OTAxZDQ3Yzg5MjdlMy4uNzg3ZGJkNzA1NDQzYWI1MDIyNTRjMDJlZWE4ZGM4NzE1NmRhY2E0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUnVsZS5oCkBAIC00Nyw5ICs0NywxMCBAQCBzdHJ1Y3QgVHJpZ2dlciB7CiAgICAg
UmVzb3VyY2VGbGFncyBmbGFncyB7IDAgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb25kaXRpb25z
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VC
Q09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSAmJjsKICAgICAKLSAgICB+VHJpZ2dl
cigpCisgICAgdm9pZCBjaGVja1ZhbGlkaXR5KCkKICAgICB7CiAgICAgICAgIGF1dG8gYWN0aW9u
Q29uZGl0aW9uID0gc3RhdGljX2Nhc3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFncyAmIEFjdGlvbkNv
bmRpdGlvbk1hc2spOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFjdGlvbkNvbmRpdGlvbiwgY29u
ZGl0aW9ucy5pc0VtcHR5KCkgPT0gKGFjdGlvbkNvbmRpdGlvbiA9PSBBY3Rpb25Db25kaXRpb246
Ok5vbmUpKTsKQEAgLTEzMSwxMCArMTMyLDExIEBAIHN0cnVjdCBBY3Rpb24gewogCiAgICAgY29u
c3QgQWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIEFj
dGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBBY3Rpb25EYXRh
IG1fZGF0YTsKKyAgICBBY3Rpb25EYXRhIG1fZGF0YTsKIH07CiAKIHN0cnVjdCBEZXNlcmlhbGl6
ZWRBY3Rpb24gOiBwdWJsaWMgQWN0aW9uIHsKQEAgLTE1OCwxOCArMTYwLDE2IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBUcmlnZ2VyJiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2VyOyB9
CiAgICAgY29uc3QgQWN0aW9uJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQog
Ci0gICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rpb24uaXNvbGF0
ZWRDb3B5KCkgfTsKLSAgICB9CisgICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5
KCkgY29uc3QgJiB7IHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rpb24u
aXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlIGlzb2xhdGVkQ29w
eSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShtX3RyaWdnZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZN
b3ZlKG1fYWN0aW9uKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX3RyaWdnZXIgPT0gb3RoZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09IG90aGVyLm1f
YWN0aW9uOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBUcmlnZ2VyIG1fdHJpZ2dlcjsK
LSAgICBjb25zdCBBY3Rpb24gbV9hY3Rpb247CisgICAgVHJpZ2dlciBtX3RyaWdnZXI7CisgICAg
QWN0aW9uIG1fYWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaAppbmRleCBlMWU3YWRiOTg2Y2FhZDY3MjE1OWIx
ZTNjMjgwYTg5ZDdhYzE3OTBmLi4yMWYzYzFmYjMwNzYyNmNmNWI2YzU0NjdlZjQyYTcwYTRjMzdi
YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0zOSwyNyArMzksMTggQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQog
ICAgIFN0cmluZyYmIHJlbGVhc2VNZXNzYWdlKCkgeyByZXR1cm4gV1RGTW92ZShtX21lc3NhZ2Up
OyB9CiAKLSAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9Owot
ICAgIH0KKyAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBFeGNl
cHRpb24geyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRXhjZXB0
aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgV1RGTW92
ZShtX21lc3NhZ2UpLmlzb2xhdGVkQ29weSgpIH07IH0KIAogcHJpdmF0ZToKICAgICBFeGNlcHRp
b25Db2RlIG1fY29kZTsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwogfTsKIAotRXhjZXB0aW9uIGlz
b2xhdGVkQ29weShFeGNlcHRpb24mJik7Ci0KIGlubGluZSBFeGNlcHRpb246OkV4Y2VwdGlvbihF
eGNlcHRpb25Db2RlIGNvZGUsIFN0cmluZyBtZXNzYWdlKQogICAgIDogbV9jb2RlIHsgY29kZSB9
CiAgICAgLCBtX21lc3NhZ2UgeyBXVEZNb3ZlKG1lc3NhZ2UpIH0KIHsKIH0KIAotaW5saW5lIEV4
Y2VwdGlvbiBpc29sYXRlZENvcHkoRXhjZXB0aW9uJiYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IHZhbHVlLmNvZGUoKSwgdmFsdWUucmVsZWFzZU1lc3NhZ2UoKS5pc29sYXRlZENv
cHkoKSB9OwotfQotCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZjE2YzMyNTg1
ZTRhODFkNmE4NTcyNDIxYmFiYWM3OGI0MjQ5ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotRXhjZXB0aW9uRGF0YSBFeGNlcHRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAot
ewotICAgIEV4Y2VwdGlvbkRhdGEgcmVzdWx0OwotICAgIHJlc3VsdC5jb2RlID0gY29kZTsKLSAg
ICByZXN1bHQubWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bkRhdGEuaAppbmRleCBmYzc5OGIzNjRkM2E3OGY3MWEzYzA5OWFkOWVkZmViMjFjMDQ0NmFkLi45
ODUzMzc2ZjFjNGRkY2ZkMWE1MWFkNGFlYWM5ZDA2NGVlOTlmNTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
eGNlcHRpb25EYXRhLmgKQEAgLTM0LDcgKzM0LDggQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGEgewog
ICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKICAgICBTdHJpbmcgbWVzc2FnZTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgRXhjZXB0
aW9uRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY29kZSwgbWVzc2FnZS5p
c29sYXRlZENvcHkoKSB9OyB9CisgICAgRXhjZXB0aW9uRGF0YSBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiB7IGNvZGUsIFdURk1vdmUobWVzc2FnZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IGJi
ZmQ5NjY4NTAxNjMxZjUxMjJiOTQwZDliMDAwNDIyZTk5ZWQwNWMuLjFhMTliMGVlOWEyYTQ1MmJm
NTc3NDBhMmFiZmRiZGRiYzIzMzhhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
eGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC05
MCw4ICs5MCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IGlz
b2xhdGVkQ29weShFeGNlcHRpb25Pcjx2b2lkPiYmKTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgUmV0
dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihFeGNl
cHRpb24mJiBleGNlcHRpb24pCiAgICAgOiBtX3ZhbHVlKG1ha2VVbmV4cGVjdGVkKFdURk1vdmUo
ZXhjZXB0aW9uKSkpCiB7CkBAIC0xOTMsMTMgKzE5MSw2IEBAIGlubGluZSBFeGNlcHRpb24gRXhj
ZXB0aW9uT3I8dm9pZD46OnJlbGVhc2VFeGNlcHRpb24oKQogICAgIHJldHVybiBXVEZNb3ZlKG1f
dmFsdWUuZXJyb3IoKSk7CiB9CiAKLWlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENv
cHkoRXhjZXB0aW9uT3I8dm9pZD4mJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaGFzRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBpc29sYXRlZENvcHkodmFsdWUucmVsZWFzZUV4Y2VwdGlv
bigpKTsKLSAgICByZXR1cm4geyB9OwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IGNvbnN0ZXhwciBib29sIElzRXhjZXB0aW9uT3IgPSBXVEY6OklzVGVtcGxhdGU8c3RkOjpkZWNh
eV90PFQ+LCBFeGNlcHRpb25Pcj46OnZhbHVlOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9v
bCBpc0V4Y2VwdGlvbk9yID0gSXNFeGNlcHRpb25PcjxUPj4gc3RydWN0IFR5cGVPckV4Y2VwdGlv
bk9yVW5kZXJseWluZ1R5cGVJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
aXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3Rv
cnlGaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDk4NWY3YTYyZjBjMWYzOTc1NTgyZWIzZjliOTg5
NzUxNTYxNTY2NzcuLmU1YWEyNGVhMWY5ZDJhNzg2ZDdiZTZkYzNkNDE0MWQ5ZmQxOTNhM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAK
QEAgLTQ0LDEwICs0NCw4IEBAIHN0cnVjdCBGaWxlSW5mb3JtYXRpb24gewogICAgIFN0cmluZyBy
ZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogCi0gICAgRmlsZUluZm9ybWF0
aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gRmlsZUluZm9y
bWF0aW9uIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KKyAgICBGaWxlSW5mb3JtYXRp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5KCks
IHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkg
fTsgfQorICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdU
Rk1vdmUocGF0aCkuaXNvbGF0ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShkaXNwbGF5TmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAogc3RhdGljIHZv
aWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiYgZmlsZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBlYTdkZmFjZjYyYjc4MjU1OWQ2NWUz
YmZiNmIzZDBjY2RmZTI1MjFjLi5hMjkwNmQ3Y2U3YTY1ZTFhYzRjZWFmOGU2NDI2ZTFkMDEzNDY5
ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTQ5NSwxMyArNDk1
LDEzIEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRy
YW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmZp
bGVzQ2hvc2VuKHBhdGhzLCByZXBsYWNlbWVudFBhdGhzKTsKICAgICB9OwogCi0gICAgc2hhcmVk
SW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1v
dmUoY2FsbEZpbGVzQ2hvc2VuKSwgdHJhbnNjb2RpbmdQYXRocyA9IHRyYW5zY29kaW5nUGF0aHMu
aXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEkuaXNvbGF0ZWRD
b3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNpb24uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCku
ZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwgdHJh
bnNjb2RpbmdQYXRocyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kaW5nUGF0aHMp
KSwgdHJhbnNjb2RpbmdVVEkgPSBXVEZNb3ZlKHRyYW5zY29kaW5nVVRJKS5pc29sYXRlZENvcHko
KSwgdHJhbnNjb2RpbmdFeHRlbnNpb24gPSBXVEZNb3ZlKHRyYW5zY29kaW5nRXh0ZW5zaW9uKS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICAgICAgYXV0byByZXBsYWNlbWVudFBhdGhzID0gdHJhbnNjb2RlSW1hZ2Vz
KHRyYW5zY29kaW5nUGF0aHMsIHRyYW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4dGVuc2lvbik7
CiAgICAgICAgIEFTU0VSVCh0cmFuc2NvZGluZ1BhdGhzLnNpemUoKSA9PSByZXBsYWNlbWVudFBh
dGhzLnNpemUoKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsRmls
ZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3NlbiksIHJlcGxhY2VtZW50UGF0aHMgPSBy
ZXBsYWNlbWVudFBhdGhzLmlzb2xhdGVkQ29weSgpXSgpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjYWxsRmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3Nlbiks
IHJlcGxhY2VtZW50UGF0aHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXBsYWNlbWVudFBh
dGhzKSldIHsKICAgICAgICAgICAgIGNhbGxGaWxlc0Nob3NlbihyZXBsYWNlbWVudFBhdGhzKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCBmYTk5YTYwZDZhMjc4ZGQ5ZDgyZmZiZTllZTI4
YTc3MTM2ZDMyMDE1Li4yODk2MjhhZWE4OTViYjI4Y2QwNjMyNjViNWU0NWI2NTNhNTA1OGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnVwZGF0ZVBy
ZWRpY3RlZEJhc2VVUkwoY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgYm9vbCBzaAogICAgICAgICBy
ZXR1cm47CiAgICAgVVJMIHRlbXAgeyBtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMoU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaHJlZkF0dHJp
YnV0ZS0+dmFsdWUpKSB9OwogICAgIGlmICghc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1lcyB8
fCBTZWN1cml0eVBvbGljeTo6aXNCYXNlVVJMU2NoZW1lQWxsb3dlZCh0ZW1wKSkKLSAgICAgICAg
bV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IHRlbXAuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAg
IG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSBXVEZNb3ZlKHRlbXApLmlzb2xhdGVkQ29weSgp
OwogfQogCiBIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1M
UGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5LmNwcAppbmRleCBjZWU1NzZiODNlNDhkMmZlN2E0M2M0MDc3N2RkOWMwMTRh
MjVhMThkLi43NGJkMTI5ZjFjODEyMGQzNmNhYzYxZTI3OGYwYThkYmM2MDVlZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKQEAg
LTE2MSwxNCArMTYxLDE0IEBAIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIHBv
bGljeTsKIH0KIAotQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3k6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBDcm9zc09y
aWdpbk9wZW5lclBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7
Ci0gICAgICAgIHZhbHVlLAotICAgICAgICByZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHko
KSwKLSAgICAgICAgcmVwb3J0T25seVZhbHVlLAotICAgICAgICByZXBvcnRPbmx5UmVwb3J0aW5n
RW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OworICAgIHJldHVybiB7IHZhbHVlLCByZXBv
cnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHkoKSwgcmVwb3J0T25seVZhbHVlLCByZXBvcnRPbmx5
UmVwb3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSgpICYmCit7Cisg
ICAgcmV0dXJuIHsgdmFsdWUsIFdURk1vdmUocmVwb3J0aW5nRW5kcG9pbnQpLmlzb2xhdGVkQ29w
eSgpLCByZXBvcnRPbmx5VmFsdWUsIFdURk1vdmUocmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50
KS5pc29sYXRlZENvcHkoKSB9OwogfQogCiB2b2lkIGFkZENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
SGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kmIGNvb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5oCmluZGV4IDUyMjEwNjk4NjQ4ZTA4M2ZhMGQ5ZjI5Y2VmZjA3MzFmOWVlNDk4
Y2QuLjIwZWM1M2I4ZWM3ZWViZjRkMmE2OWFhYzU4MDM1NjJmNzA4NTg0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCkBAIC02MCw3ICs2
MCw4IEBAIHN0cnVjdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSB7CiAgICAgY29uc3QgU3RyaW5n
JiByZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bvc2l0aW9uKENPT1BEaXNwb3NpdGlvbikgY29uc3Q7
CiAgICAgYm9vbCBoYXNSZXBvcnRpbmdFbmRwb2ludChDT09QRGlzcG9zaXRpb24pIGNvbnN0Owog
Ci0gICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBDcm9z
c09yaWdpbk9wZW5lclBvbGljeSBpc29sYXRlZENvcHkoKSAmJjsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+
IGRlY29kZShEZWNvZGVyJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggMjBkZGVmZGU0MjgxYmVhYzZiZTk3M2YxODUzNGRlZjhhNTU5ZDFiOS4uZjE4
ZGI4Njk1YjM5N2MxYjJhM2JkMzAzMTExZGViOWU1NWU0OTQ0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBSZXNvdXJjZUVy
cm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZp
bHRlclVuYmxvY2tIYQogewogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRv
Y3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0
eSgpICYmIGZyYW1lKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lv
bkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkg
fSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJv
b2wgdW5ibG9ja2VkKSB7CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25I
YW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0s
IHNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpLmlzb2xhdGVkQ29w
eSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYgc2Ny
aXB0Q29udHJvbGxlcikKICAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggODhjMDM2ZDI2NDUxY2YxNzRmYmZmOGMwMDBlMjA1
YzFkZmY3ZGY2Ni4uNWFjZTAxNWJkNWVmNzI5M2I2MGVhMWU2YTZkZTFlOGNmODFlODlhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNDUsNyArNDUsOCBAQCBzdHJ1Y3Qg
RmV0Y2hPcHRpb25zIHsKIAogICAgIEZldGNoT3B0aW9ucygpID0gZGVmYXVsdDsKICAgICBGZXRj
aE9wdGlvbnMoRGVzdGluYXRpb24sIE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJlY3Qs
IFJlZmVycmVyUG9saWN5LCBTdHJpbmcmJiwgYm9vbCk7Ci0gICAgRmV0Y2hPcHRpb25zIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxz
LCBjYWNoZSwgcmVkaXJlY3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNvbGF0ZWRDb3B5
KCksIGtlZXBBbGl2ZSB9OyB9CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRp
cmVjdCwgcmVmZXJyZXJQb2xpY3ksIGludGVncml0eS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZl
IH07IH0KKyAgICBGZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBkZXN0
aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQb2xp
Y3ksIFdURk1vdmUoaW50ZWdyaXR5KS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlUGVyc2lzdGVudChFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVBlcnNpc3RlbnQoRGVjb2RlciYsIEZldGNoT3B0aW9ucyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCmluZGV4IDQzMWNmMWM1YjJiZDFm
OTAzZDE2YmVhZjc3MTIwZDcxYTYxMDU5Y2QuLjhjMGFkMGY5MDczNzU5NjA2ZWI4YzY5NDYyMzI3
NjZlZWY4NTMwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmgKQEAg
LTM2LDcgKzM2LDggQEAgc3RydWN0IFBvbGljeUNvbnRhaW5lciB7CiAgICAgQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CiAgICAgLy8gRklYTUU6IENTUCBs
aXN0IGFuZCByZWZlcnJlciBwb2xpY3kgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIFBvbGljeUNvbnRh
aW5lci4KIAotICAgIFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBQ
b2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5KCkg
JiYgeyByZXR1cm4geyBXVEZNb3ZlKGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpLmlzb2xhdGVk
Q29weSgpLCBXVEZNb3ZlKGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KS5pc29sYXRlZENvcHkoKSB9
OyB9CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBv
bGljeUNvbnRhaW5lcj4gZGVjb2RlKERlY29kZXImKTsKIH07CkBAIC00NiwxNCArNDcsNiBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvbGljeUNvbnRhaW5lciYgYSwgY29uc3QgUG9s
aWN5Q29udGFpbmVyJiBiKQogICAgIHJldHVybiBhLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kg
PT0gYi5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5ICYmIGEuY3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kgPT0gYi5jcm9zc09yaWdpbk9wZW5lclBvbGljeTsKIH0KIAotaW5saW5lIFBvbGljeUNvbnRh
aW5lciBQb2xpY3lDb250YWluZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHsKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwKLSAg
ICAgICAgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OwotfQot
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBQb2xpY3lDb250YWluZXI6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggMDU3OGY2M2JlYmViMWE4N2Y0MGFmNDdi
OTQzMmI2MmU1YmRjNGMyMi4uYjNhOWY4MGFmNjAyODNiOTI0ZDQ3NTk4NmUwZjRlZmE2Y2QwMThj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuY3BwCkBAIC02MCw1MyArNjAsMjcgQEAgYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICYmIChtX3RpbWVzVG9TZW5kLnNvdXJjZUVhcmxpZXN0
VGltZVRvU2VuZCB8fCBtX3RpbWVzVG9TZW5kLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5k
KTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7
Ci0gICAgICAgIHRva2VuQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAotICAgICAgICBzaWduYXR1
cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIGtleUlEQmFzZTY0VVJMLmlzb2xh
dGVkQ29weSgpLAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBibGluZGVyLCB3YWl0aW5n
VG9rZW4sIHJlYWR5VG9rZW4sCisjZW5kaWYKKyAgICAgICAgdmFsdWVCYXNlNjRVUkwuaXNvbGF0
ZWRDb3B5KCkKICAgICB9OwogfQogCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2Vj
cmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc29s
YXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENv
cHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRU
b2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0ZWRD
b3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKLXsKLSAgICByZXR1cm4geyBub25jZS5pc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6VW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmth
YmxlVG9rZW46Omlzb2xhdGVkQ29weSgpICYmCiB7CiAgICAgcmV0dXJuIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgYmxpbmRlciwKLSAgICAgICAgd2FpdGluZ1Rva2VuLAotICAgICAg
ICByZWFkeVRva2VuLAorICAgICAgICBibGluZGVyLCB3YWl0aW5nVG9rZW4sIHJlYWR5VG9rZW4s
CiAjZW5kaWYKLSAgICAgICAgdmFsdWVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCkKKyAgICAgICAg
V1RGTW92ZSh2YWx1ZUJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCkKICAgICB9OwogfQogCi1Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQotCi1Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENv
cHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5
KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIFByaXZhdGVD
bGlja01lYXN1cmVtZW50IGNvcHkgewogICAgICAgICBtX3NvdXJjZUlELApAQCAtMTI0LDYgKzk4
LDI0IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpp
c29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBjb3B5OwogfQogCitQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sK
KyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjb3B5IHsKKyAgICAgICAgbV9zb3VyY2VJRCwK
KyAgICAgICAgV1RGTW92ZShtX3NvdXJjZVNpdGUpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBX
VEZNb3ZlKG1fZGVzdGluYXRpb25TaXRlKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92
ZShtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBX
VEZNb3ZlKG1fdGltZU9mQWRDbGljaykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faXNFcGhl
bWVyYWwsCisgICAgfTsKKyAgICBjb3B5Lm1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1v
dmUobV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKKyAgICBjb3B5Lm1fdGltZXNUb1NlbmQgPSBX
VEZNb3ZlKG1fdGltZXNUb1NlbmQpOworICAgIGNvcHkubV9lcGhlbWVyYWxTb3VyY2VOb25jZSA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZXBoZW1lcmFsU291cmNlTm9uY2UpKTsKKyAgICBj
b3B5Lm1fc291cmNlVW5saW5rYWJsZVRva2VuID0gV1RGTW92ZShtX3NvdXJjZVVubGlua2FibGVU
b2tlbikuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5tX3NvdXJjZVNlY3JldFRva2VuID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUobV9zb3VyY2VTZWNyZXRUb2tlbikpOworICAgIHJldHVybiBj
b3B5OworfQorCiBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05laXRoZXJTYW1lU2l0
ZU5vckNyb3NzU2l0ZVRyaWdnZXJpbmdFdmVudChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVk
aXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKICAgICBhdXRvIGlzU2FtZVNp
dGVUcmlnZ2VyaW5nRXZlbnQgPSByZWRpcmVjdERvbWFpbi5tYXRjaGVzKGZpcnN0UGFydHlVUkwp
ICYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmluZGV4IDAx
Zjg3MzQ4YWI2YTIxYTAyZTYwMzZiMjU4ZTg5MjcyNjBlM2U3MTguLjFlNzgxYTlkZWRhOTA2YWYz
MWVkMGIyMDliNTU5YTRjMWQ0YTI1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC03Nyw3ICs3Nyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlU2l0ZSBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiBTb3VyY2VTaXRlIHsgcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5KCkg
fTsgfQorICAgICAgICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
U291cmNlU2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgU291cmNlU2l0ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiBTb3VyY2VTaXRlIHsgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VTaXRlJiBvdGhlcikgY29uc3QKICAgICAgICAgewpA
QCAtMTIzLDcgKzEyNCw4IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyByZWdpc3RyYWJsZURvbWFpbi5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIGlzb2xhdGVk
Q29weSgpIGNvbnN0ICYgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyByZWdp
c3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIEF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlIHsgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsg
fQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTE3MSw3ICsxNzMsOCBAQCBwdWJsaWM6
CiAgICAgc3RydWN0IEVwaGVtZXJhbE5vbmNlIHsKICAgICAgICAgU3RyaW5nIG5vbmNlOwogCi0g
ICAgICAgIEVwaGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBFcGhl
bWVyYWxOb25jZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbm9uY2UuaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgICAgICBFcGhlbWVyYWxOb25jZSBpc29sYXRlZENvcHkoKSAmJiAg
eyByZXR1cm4geyBXVEZNb3ZlKG5vbmNlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKQEAgLTE4NywzMSArMTkwLDM3
IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7CiAgICAg
ICAgIAotICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
ICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBVbmxp
bmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgfTsKIAogICAgIHN0cnVjdCBTb3Vy
Y2VVbmxpbmthYmxlVG9rZW4gOiBVbmxpbmthYmxlVG9rZW4gewotICAgICAgICBTb3VyY2VVbmxp
bmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFNvdXJjZVVubGlua2Fi
bGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgVW5saW5rYWJsZVRva2Vu
Ojppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29s
YXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkg
fTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gOiBV
bmxpbmthYmxlVG9rZW4gewotICAgICAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29s
YXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gaXNv
bGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRD
b3B5KCkgfTsgfQorICAgICAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29sYXRlZENv
cHkoKSAmJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsgfQog
ICAgIH07CiAKICAgICBzdHJ1Y3QgU2VjcmV0VG9rZW4gewogICAgICAgICBTdHJpbmcgdG9rZW5C
YXNlNjRVUkw7CiAgICAgICAgIFN0cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7CiAgICAgICAgIFN0
cmluZyBrZXlJREJhc2U2NFVSTDsKLSAgICAgICAgU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CisgICAgICAgIFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1
cm4geyB0b2tlbkJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSwgc2lnbmF0dXJlQmFzZTY0VVJMLmlz
b2xhdGVkQ29weSgpLCBrZXlJREJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAg
IFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZSh0b2tlbkJh
c2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoc2lnbmF0dXJlQmFzZTY0VVJMKS5pc29s
YXRlZENvcHkoKSwgV1RGTW92ZShrZXlJREJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQog
ICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICB9OwogCiAgICAgc3RydWN0IFNvdXJj
ZVNlY3JldFRva2VuIDogU2VjcmV0VG9rZW4gewotICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgU291cmNlU2VjcmV0VG9rZW4gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9
CisgICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsg
U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KICAgICB9OwogCiAgICAgc3RydWN0IERl
c3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBTZWNyZXRUb2tlbiB7Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAg
IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7
IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIERlc3RpbmF0aW9uU2Vj
cmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0
ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSB7CkBAIC00MjksNyArNDM4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gZGVjb2Rl
KERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01lYXN1cmVtZW50
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01l
YXN1cmVtZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIEV4cGVjdGVkPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gcGFyc2VBdHRy
aWJ1dGlvblJlcXVlc3RRdWVyeShjb25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VUaW1pbmcuY3BwCmluZGV4IDZhZWU5ZWJiYTQyN2MyNjc2ZDQ0ZWIwZGUxZmMwNGQxNDgz
Y2IwNjUuLmZhNmM5NmRlNDU4ZTAwZTA4YmE1YjQ5MDFlY2FhOTIzMDg1ZDE5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcApAQCAtNjgsMTUgKzY4LDI2IEBAIFZl
Y3RvcjxSZWY8UGVyZm9ybWFuY2VTZXJ2ZXJUaW1pbmc+PiBSZXNvdXJjZVRpbWluZzo6cG9wdWxh
dGVTZXJ2ZXJUaW1pbmcoKSBjb25zCiAgICAgfSk7CiB9CiAKLVJlc291cmNlVGltaW5nIFJlc291
cmNlVGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdAorUmVzb3VyY2VUaW1pbmcgUmVzb3VyY2VU
aW1pbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VUaW1p
bmcoCisgICAgcmV0dXJuIFJlc291cmNlVGltaW5nIHsKICAgICAgICAgbV91cmwuaXNvbGF0ZWRD
b3B5KCksCiAgICAgICAgIG1faW5pdGlhdG9yLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBtX3Jl
c291cmNlTG9hZFRpbWluZy5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9uZXR3b3JrTG9hZE1l
dHJpY3MuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShtX3NlcnZlclRp
bWluZykKLSAgICApOworICAgIH07Cit9CisKK1Jlc291cmNlVGltaW5nIFJlc291cmNlVGltaW5n
Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiBSZXNvdXJjZVRpbWluZyB7CisgICAg
ICAgIFdURk1vdmUobV91cmwpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1faW5p
dGlhdG9yKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShtX3Jlc291cmNlTG9hZFRp
bWluZykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9uZXR3b3JrTG9hZE1ldHJp
Y3MpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3Nl
cnZlclRpbWluZykpCisgICAgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAppbmRleCA5MDVmYzY2OTBiMWE3N2MwZjcwOWI3
MDNjYTQ5Y2YwOGNkNzhhMTljLi44MTA5NjJmYzRkYTZhMjc0YjliZjQ3YjNjYjZiMWU2ZmY4NTY3
MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaApAQCAtNTEsNyArNTEs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogICAgIE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7IH0KICAgICBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGltaW5nPj4gcG9w
dWxhdGVTZXJ2ZXJUaW1pbmcoKSBjb25zdDsKLSAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdCAmOwor
ICAgIFJlc291cmNlVGltaW5nIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdm9pZCBvdmVycmlk
ZUluaXRpYXRvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yID0gbmFtZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwCmluZGV4IGNlMTc2NzBkNDc5
YWE4MTkwMzgyZWFkOWQ1OTNjMDE5MWE4NTk1YWUuLmMwOTkwYzFhY2Y0NTk3YWQ4MDk3MmM2MTBi
NjA2ZTkzYzhmMjQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJU
aW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwCkBA
IC00Niw5ICs0NiwxNCBAQCB2b2lkIFNlcnZlclRpbWluZzo6c2V0UGFyYW1ldGVyKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB9CiB9CiAKLVNlcnZlclRpbWlu
ZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitTZXJ2ZXJUaW1pbmcgU2VydmVy
VGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIFNlcnZlclRpbWlu
ZyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkdXJhdGlvbiwgZGVzY3JpcHRpb24uaXNvbGF0ZWRDb3B5
KCksIGR1cmF0aW9uU2V0LCBkZXNjcmlwdGlvblNldCk7CisgICAgcmV0dXJuIFNlcnZlclRpbWlu
ZyB7IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBkZXNjcmlwdGlvbi5pc29sYXRlZENv
cHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9uU2V0IH07Cit9CisKK1NlcnZlclRpbWluZyBT
ZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIFNlcnZlclRpbWlu
ZyB7IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBXVEZNb3ZlKGRlc2Ny
aXB0aW9uKS5pc29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9uU2V0IH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TZXJ2ZXJUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcu
aAppbmRleCA2N2I0MTA4ZWY5NDU5MzlkOGY3ZjEzY2JkMWEwY2YwZTY4NGNiNDQ2Li44YmJlODU3
ZDRiMjBjNjI2MWRkNjQzMTA2MDg1NTM4MmJhODhjZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Nl
cnZlclRpbWluZy5oCkBAIC00Miw3ICs0Miw4IEBAIHN0cnVjdCBTZXJ2ZXJUaW1pbmcgewogICAg
IFNlcnZlclRpbWluZyhTdHJpbmcmJiBuYW1lLCBkb3VibGUgZHVyYXRpb24sIFN0cmluZyYmIGRl
c2NyaXB0aW9uLCBib29sIGR1cmF0aW9uU2V0LCBib29sIGRlc2NyaXB0aW9uU2V0KTsKIAogICAg
IHZvaWQgc2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotICAgIFNl
cnZlclRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBTZXJ2ZXJUaW1pbmcgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBTZXJ2ZXJUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgJiY7CiB9
OwogCiBpbmxpbmUgU2VydmVyVGltaW5nOjpTZXJ2ZXJUaW1pbmcoU3RyaW5nJiYgbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCA1MWZmYTY5MzUyZTVmMzIwMDVjYWZlYTA5ZGM5NGNhMmZmOGQ0M2NkLi5lMjk1ODljMmZmMjQw
MDQyNTM1YzNjMDM5NmZjOGI0NzYyNDQyYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJl
YWRhYmxlTG9hZGVyQ2xpZW4KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
U2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwgbV93
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVuZWZp
dCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRs
eSBpdHMgaXNvbGF0ZWQgY29weT8KLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
W3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Q29weSA9IFdU
Rk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLmlzb2xhdGVkQ29weSgpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBX
VEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5Q29weSA9IFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkpXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9y
aWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCBlZTQ3Y2Fh
YThkMGRkZTNmODkxNzlhNzU2MzFlYTM0Y2JlMzYzMTJiLi42MjA0MDEwZmFmY2UwMzYzZTdjMGVi
YjRkNjE2Y2VmYjEwNDIwYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVu
dE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTQy
LDcgKzQyLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gZGVjb2RlKERlY29kZXIm
KTsKIAotICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDbGllbnRP
cmlnaW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHRvcE9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgY2xpZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDbGllbnRPcmln
aW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHRvcE9yaWdpbikuaXNvbGF0
ZWRDb3B5KCksIFdURk1vdmUoY2xpZW50T3JpZ2luKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAg
Ym9vbCBpc1JlbGF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gdG9wT3JpZ2luID09IG90aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBvdGhlcjsgfQogCiAg
ICAgUmVnaXN0cmFibGVEb21haW4gY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJl
dHVybiBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoY2xpZW50T3Jp
Z2luLmhvc3QpOyB9CkBAIC02MSwxMSArNjIsNiBAQCBpbmxpbmUgYm9vbCBDbGllbnRPcmlnaW46
Om9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
dG9wT3JpZ2luID09IG90aGVyLnRvcE9yaWdpbiAmJiBjbGllbnRPcmlnaW4gPT0gb3RoZXIuY2xp
ZW50T3JpZ2luOwogfQogCi1pbmxpbmUgQ2xpZW50T3JpZ2luIENsaWVudE9yaWdpbjo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCks
IGNsaWVudE9yaWdpbi5pc29sYXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiBpbmxpbmUgdm9pZCBDbGllbnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgdG9wT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nl
c3NXYXJtaW5nLmNwcAppbmRleCBlYzgwYWU0M2FiZTc5MTM2OTc4YzdmZDAwMzkwYzIxNmI2OWI3
NzM4Li5kZmEzZTgyYTYyODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApAQCAtODksOSArODksOSBAQCBXZWJDb3JlOjpQ
cmV3YXJtSW5mb3JtYXRpb24gUHJvY2Vzc1dhcm1pbmc6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRp
b24oKQogICAgIHJldHVybiB7IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNvbGxlY3RQ
cmV3YXJtSW5mb3JtYXRpb24oKSB9OwogfQogCi12b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJt
V2l0aEluZm9ybWF0aW9uKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm8pCit2
b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFByZXdhcm1JbmZvcm1h
dGlvbiYmIHByZXdhcm1JbmZvKQogewotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgp
LnByZXdhcm0ocHJld2FybUluZm8uZm9udENhY2hlKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5wcmV3YXJtKFdURk1vdmUocHJld2FybUluZm8uZm9udENhY2hlKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaAppbmRleCBjZjE3ZWFhMWQ5ZDBiNmUz
ZDgxN2IzYjFhMjI0ZDVkY2M3MDIwMDRlLi40ZDNjN2UxMTg4NTdhOGY3MDQ1ZTJhMzMwN2RlOGFj
YzM1ZTA5OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oCkBAIC0zNSw3ICsz
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBwcmV3YXJtR2xvYmFsbHkoKTsKIAogICAg
IHN0YXRpYyBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpOwot
ICAgIHN0YXRpYyB2b2lkIHByZXdhcm1XaXRoSW5mb3JtYXRpb24oY29uc3QgUHJld2FybUluZm9y
bWF0aW9uJik7CisgICAgc3RhdGljIHZvaWQgcHJld2FybVdpdGhJbmZvcm1hdGlvbihQcmV3YXJt
SW5mb3JtYXRpb24mJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcApp
bmRleCBhMDkzNGQ3ZjUzNTU3Zjk2NWYwYjUyZGQzNjgzOGRkNmE0NjkzOWZmLi4yYjNiZjQ3MmMw
ZjEyMDIzMTJiOTNiMjdmNDViMWE5NDZmMzg2Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoY29uc3QKICAgICBt
X2h0dHBTdGF0dXNDb2RlID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKIH0KIAotQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlzb2xh
dGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgaXNvbGF0ZWRDb3B5OwogICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMgPSBjcm9zc1Ro
cmVhZENvcHkobV9oZWFkZXJzKTsKQEAgLTUzLDQgKzUzLDEyIEBAIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6
Omlzb2xhCiAgICAgcmV0dXJuIGlzb2xhdGVkQ29weTsKIH0KIAorQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6
aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgaXNvbGF0ZWRDb3B5OworICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShtX2hlYWRlcnMpKTsKKyAgICBpc29sYXRlZENvcHkubV9odHRwU3Rh
dHVzQ29kZSA9IG1faHR0cFN0YXR1c0NvZGU7CisgICAgcmV0dXJuIGlzb2xhdGVkQ29weTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAppbmRl
eCA5NDhkOGNjODc0MjhkZTg5YTBmYzgwOTljNjViZDAzYWNhY2Q1ZGIzLi5kNjA1OGU4Y2Y5OWM1
ZGEzZDljOTJkMmU4NmI2ZmIyNDhkNGNhOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMu
aApAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzKCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgK
aW5kZXggYWI2OGRhY2JmYTc0MGNhNDhlYzFjMzQ1MmE4NjAyMTE2NmQ5NzEzMC4uZmEyMjQwZmU4
NmQ0MDRmOGYzNDcxZTQxYTY4Yjc0NjE1OTAxZDk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5oCkBAIC00NiwxNCArNDYsMTIgQEAgY2xhc3MgRmlsZUNob29zZXI7CiBjbGFz
cyBJY29uOwogCiBzdHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbyB7Ci0gICAgRmlsZUNob29zZXJG
aWxlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0
aC5pc29sYXRlZENvcHkoKSwgcmVwbGFjZW1lbnRQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5
TmFtZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyBwYXRoOwot
ICAgIGNvbnN0IFN0cmluZyByZXBsYWNlbWVudFBhdGg7Ci0gICAgY29uc3QgU3RyaW5nIGRpc3Bs
YXlOYW1lOworICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7
IHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlcGxhY2VtZW50UGF0aC5pc29sYXRlZENv
cHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIEZpbGVDaG9vc2VyRmls
ZUluZm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHBhdGgpLmlzb2xhdGVk
Q29weSgpLCBXVEZNb3ZlKHJlcGxhY2VtZW50UGF0aCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
ZGlzcGxheU5hbWUpLmlzb2xhdGVkQ29weSgpIH07IH0KKworICAgIFN0cmluZyBwYXRoOworICAg
IFN0cmluZyByZXBsYWNlbWVudFBhdGg7CisgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogfTsKIAog
c3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lZGlhU2VsZWN0aW9uT3B0aW9uLmgKaW5kZXggNDI4YmZlMGU2MmM3OGNjYzI4OTA1MjhiMDE4
NTg5YWI0ODJlMzk4Yi4uODVjMDA4NTBjZWNjNGMwMTY3NjYwNzcxYzllYWQyZGQ2OTc1NWQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCkBA
IC00Myw2ICs0Myw5IEBAIHN0cnVjdCBNZWRpYVNlbGVjdGlvbk9wdGlvbiB7CiAgICAgewogICAg
IH0KIAorICAgIE1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTWVkaWFT
ZWxlY3Rpb25PcHRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGRpc3Bs
YXlOYW1lKS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisKICAgICBTdHJpbmcgZGlzcGxheU5h
bWU7CiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6UmVndWxhciB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IDdjZTNmNjEzNmMzMTdkYTNmYmVj
MjI0MDFmNWJmMjgwMTY0OTVjNjAuLmJjZThjNDMwMzQwZmU2NzBiYzI0OWNkZjE3Yjk4NjlhNDRh
Yjg2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9t
YWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaApA
QCAtNjcsNyArNjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXRjaGVzKG9yaWdpbi5o
b3N0KTsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IG1fcmVnaXN0cmFibGVEb21haW4uaXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBtX3JlZ2lzdHJhYmxlRG9tYWluLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICBSZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENvcHkoKSAmJiB7
IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IFdURk1vdmUobV9yZWdpc3RyYWJsZURvbWFpbiku
aXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW4oV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fcmVnaXN0cmFibGVEb21haW4oV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMWJmYTNmZDVmMmIzYTI2YTlhNGFlZTk1NTNiNjJi
Njg2ZWJlMjI0MS4uMTJjZTNlOTZkZDMxMmM2MTNkNjE4MmIwOWQyNzkxNThiYmY2OWY2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC01
MDgsNyArNTA4LDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiB7CiB9CiAK
LXZvaWQgRm9udENhY2hlOjpwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYpCit2b2lk
IEZvbnRDYWNoZTo6cHJld2FybShQcmV3YXJtSW5mb3JtYXRpb24mJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA4OWI0ZTE5Mjdh
NzhlMDNmMzQ4MzVhODZjYzkwMmIxYTI2N2FhMjY5Li40OWQzMGQ2NDY5YWRmMWY0YWUwODg2ZWRj
ZmUyNGYyZWVkNDdkMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0zNTYsMTMgKzM1Nywx
NCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZvbnROYW1lc1JlcXVpcmluZ1N5
c3RlbUZhbGxiYWNrOwogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotICAgICAgICBQ
cmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFByZXdhcm1J
bmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KHNlZW5GYW1pbGllcyksIGNyb3NzVGhyZWFkQ29weShmb250TmFtZXNSZXF1aXJpbmdTeXN0
ZW1GYWxsYmFjaykgfTsgfQorICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZWVuRmFtaWxpZXMpKSwg
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2sp
KSB9OyB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsK
ICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIGNvbnN0
OwotICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKKyAgICB2b2lk
IHByZXdhcm0oUHJld2FybUluZm9ybWF0aW9uJiYpOwogICAgIHN0YXRpYyB2b2lkIHByZXdhcm1H
bG9iYWxseSgpOwogCiBwcml2YXRlOgpAQCAtNDMxLDExICs0MzMsNiBAQCBpbmxpbmUgYm9vbCBG
b250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJu
IHNlZW5GYW1pbGllcy5pc0VtcHR5KCkgJiYgZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJh
Y2suaXNFbXB0eSgpOwogfQogCi1pbmxpbmUgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24g
Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHsgc2VlbkZhbWlsaWVzLmlzb2xhdGVkQ29weSgpLCBmb250TmFtZXNSZXF1aXJp
bmdTeXN0ZW1GYWxsYmFjay5pc29sYXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCmluZGV4IGIwYjNkNDUyZDU2MTlj
Njk4YTliMjU5YWFhZjI1M2U0MTNkMDMyMzMuLjBjNDViMjA1YzlhOGNmMGZjNTk3OTU1MDhmZjYw
NDk2MjNhM2I0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogCisjaW5jbHVk
ZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkyLDIzICs5MywyOSBAQCBGb250R2VuZXJpY0ZhbWls
aWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkKICAgICB9KTsKIH0KIAotRm9udEdlbmVyaWNGYW1p
bGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdAorRm9udEdlbmVy
aWNGYW1pbGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7
CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcyBjb3B5OwotICAgIGZvciAoYXV0byAma2V5VmFsdWUg
OiBtX3N0YW5kYXJkRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3N0YW5kYXJkRm9udEZh
bWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7
Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc2VyaWZGb250RmFtaWx5TWFwKQotICAgICAg
ICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZh
bHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9maXhlZEZv
bnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAuYWRkKGtleVZh
bHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0byAm
a2V5VmFsdWUgOiBtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9zYW5z
U2VyaWZGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xh
dGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9jdXJzaXZlRm9udEZhbWls
eU1hcCkKLSAgICAgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5r
ZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZh
bHVlIDogbV9mYW50YXN5Rm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX2ZhbnRhc3lGb250
RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgp
KTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9waWN0b2dyYXBoRm9udEZhbWlseU1hcCkK
LSAgICAgICAgY29weS5tX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXks
IGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAgICBjb3B5Lm1fc3RhbmRhcmRGb250
RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwKTsKKyAg
ICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fc2VyaWZGb250
RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fZml4ZWRGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRD
b3B5KG1fZml4ZWRGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fc2Fuc1NlcmlmRm9udEZhbWls
eU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApOworICAgIGNv
cHkubV9jdXJzaXZlRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2N1cnNpdmVGb250
RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVh
ZENvcHkobV9mYW50YXN5Rm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX3BpY3RvZ3JhcGhGb250
RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXApOwor
ICAgIHJldHVybiBjb3B5OworfQorCitGb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFt
aWxpZXM6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgRm9udEdlbmVyaWNGYW1pbGllcyBjb3B5
OworICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShtX3N0YW5kYXJkRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9zZXJpZkZvbnRGYW1p
bHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3NlcmlmRm9udEZhbWlseU1hcCkpOwor
ICAgIGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSht
X2ZpeGVkRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9zYW5zU2VyaWZGb250RmFtaWx5TWFw
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zYW5zU2VyaWZGb250RmFtaWx5TWFwKSk7Cisg
ICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bV9jdXJzaXZlRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9mYW50YXN5Rm9udEZhbWlseU1h
cCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZmFudGFzeUZvbnRGYW1pbHlNYXApKTsKKyAg
ICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuaAppbmRleCA2MDc3MGNkNjRjMzkxOGIwMDA1MWU3NDU3YmJlZjQzNzRmMmFlYzI0Li5l
ZTQ3ZGRjYzNjNGMyYzQwODk3NWRiNzQ5OTY0ZDQ3MzFkNmNmNWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oCkBA
IC00OSw3ICs0OSw4IEBAIGNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXMgewogcHVibGljOgogICAg
IEZvbnRHZW5lcmljRmFtaWxpZXMoKTsKIAotICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgRm9udEdlbmVyaWNGYW1pbGllcyBpc29sYXRlZENvcHkoKSBj
b25zdCAmOworICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAg
ICBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0
Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmMmM5NjQwZDQ2ZDNhOTM1NjExNGYz
M2FiMTQwNTJjN2ZlYzI3NzhjLi40YjNhNWUxNDI4N2I1NzNjMzI5NGFhMGFhNmM2YWIyZWMyMzAy
NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0Rl
Y29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5nRHVyYXRpb24g
LSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAgICAgICAgICAg
Ly8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJlYWQgdG8gYXZv
aWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgotICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2Rp
bmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVk
Q29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1
ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVS
TCA9IFdURk1vdmUoc291cmNlVVJMKS5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdU
Rk1vdmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdv
dCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2Fs
bGVkLgogICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09
IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigp
ID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1
ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBhZDlhMjM3YWE5YzYwNDg1NDc0NTUx
YzI0NTg2ZDJjYThhNTc2MzAyLi5lNjE3Nzk4MWYxZTU4M2U4ZjRkNzFiMTMxZWIxNjI3MmE1OGU2
N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC05NTYsNyArOTU2LDcgQEAgcHVibGlj
OgogICAgICAgICB9KCk7CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZmFtaWx5TmFtZVRv
Rm9udERlc2NyaXB0b3JzTG9jayB9OwotICAgICAgICByZXR1cm4gKm1fZmFtaWx5TmFtZVRvRm9u
dERlc2NyaXB0b3JzLmFkZChmb2xkZWQuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaW5zdGFsbGVk
Rm9udEZhbWlseSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuICptX2ZhbWlseU5h
bWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoV1RGTW92ZShmb2xkZWQpLmlzb2xhdGVkQ29weSgpLCBX
VEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCiAg
ICAgY29uc3QgSW5zdGFsbGVkRm9udCYgZm9udEZvclBvc3RTY3JpcHROYW1lKGNvbnN0IEF0b21T
dHJpbmcmIHBvc3RTY3JpcHROYW1lKQpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgRm9udENhY2hlOjpQ
cmV3YXJtSW5mb3JtYXRpb24gRm9udENhY2hlOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4geyBjb3B5VG9WZWN0b3IobV9zZWVuRmFtaWxpZXNGb3JQcmV3YXJt
aW5nKSwgY29weVRvVmVjdG9yKG1fZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2tGb3JQ
cmV3YXJtaW5nKSB9OwogfQogCi12b2lkIEZvbnRDYWNoZTo6cHJld2FybShjb25zdCBQcmV3YXJt
SW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKK3ZvaWQgRm9udENhY2hlOjpwcmV3YXJt
KFByZXdhcm1JbmZvcm1hdGlvbiYmIHByZXdhcm1JbmZvcm1hdGlvbikKIHsKICAgICBpZiAocHJl
d2FybUluZm9ybWF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY0MCw3ICsx
NjQwLDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm0oY29uc3QgUHJld2FybUluZm9ybWF0aW9u
JiBwcmV3YXJtSW5mb3JtYXRpb24pCiAKICAgICBhdXRvJiBkYXRhYmFzZSA9IEZvbnREYXRhYmFz
ZTo6c2luZ2xldG9uRGlzYWxsb3dpbmdVc2VySW5zdGFsbGVkRm9udHMoKTsKIAotICAgIG1fcHJl
d2FybVF1ZXVlLT5kaXNwYXRjaChbJmRhdGFiYXNlLCBwcmV3YXJtSW5mb3JtYXRpb24gPSBwcmV3
YXJtSW5mb3JtYXRpb24uaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBtX3ByZXdhcm1RdWV1ZS0+ZGlz
cGF0Y2goWyZkYXRhYmFzZSwgcHJld2FybUluZm9ybWF0aW9uID0gV1RGTW92ZShwcmV3YXJtSW5m
b3JtYXRpb24pLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGZvciAoYXV0byYgZmFtaWx5IDog
cHJld2FybUluZm9ybWF0aW9uLnNlZW5GYW1pbGllcykKICAgICAgICAgICAgIGRhdGFiYXNlLmNv
bGxlY3Rpb25Gb3JGYW1pbHkoZmFtaWx5KTsKIApAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBG
b250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiAKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZv
cm1hdGlvbiBwcmV3YXJtSW5mbzsKICAgICBwcmV3YXJtSW5mby5zZWVuRmFtaWxpZXMgPSBXVEZN
b3ZlKGZhbWlsaWVzKTsKLSAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJt
KHByZXdhcm1JbmZvKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3YXJt
KFdURk1vdmUocHJld2FybUluZm8pKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQppbmRleCAxMTcyODk0ZmVkMjViOGY0ZjVjMzMzMGFmMzJlMjQyODhhN2M1ODYz
Li5hMGM1NzEwNzU4OTZkNjQ1NDdlNzI5ODRkZjFhMDgzMThkODRkZWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNv
cmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaW1wb3J0IDxwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaD4KQEAgLTQ4MiwxOSArNDgzLDEwIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBjYW5QbGF5
RmFzCiAgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFz
dFJldmVyc2UpOwogfQogCi1zdGF0aWMgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBpc29s
YXRlZENvcHkoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucykKLXsK
LSAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnNDb3B5OwotICAgIG9wdGlv
bnNDb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3B0aW9ucy5zaXplKCkpOwotICAgIGZvciAo
YXV0byYgb3B0aW9uIDogb3B0aW9ucykKLSAgICAgICAgb3B0aW9uc0NvcHkudW5jaGVja2VkQXBw
ZW5kKHsgb3B0aW9uLmRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBvcHRpb24udHlwZSB9KTsK
LSAgICByZXR1cm4gb3B0aW9uc0NvcHk7Ci19Ci0KIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0
b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcHRpb25zID0g
aXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMg
PSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTUwNyw3
ICs0OTksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29u
c3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3B0
aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0geworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBv
cHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1
ZGlvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKaW5kZXggNmUxZThkMWZjYmE3ODkwZDk2NDc2MGU4
NDM2MWE1NWYxMDk4Yjc5Zi4uZGI4MzNmMzBiYmU3ZTYxNGQyMTllN2UzMTU3NjMyYzJmMGEzZjA1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
QXVkaW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKQEAgLTM2LDE3ICszNiwyMyBAQCBzdHJ1
Y3QgQXVkaW9Db25maWd1cmF0aW9uIHsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzYW1w
bGVyYXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3BhdGlhbFJlbmRlcmluZzsKIAotICAg
IEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBBdWRpb0NvbmZp
Z3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBBdWRpb0NvbmZpZ3VyYXRpb24g
aXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAotaW5saW5lIEF1ZGlvQ29uZmlndXJhdGlvbiBBdWRpb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVk
Q29weSgpIGNvbnN0CitpbmxpbmUgQXVkaW9Db25maWd1cmF0aW9uIEF1ZGlvQ29uZmlndXJhdGlv
bjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNvbnRlbnRUeXBlLmlz
b2xhdGVkQ29weSgpLCBjaGFubmVscy5pc29sYXRlZENvcHkoKSwgYml0cmF0ZSwgc2FtcGxlcmF0
ZSwgc3BhdGlhbFJlbmRlcmluZyB9OwogfQogCitpbmxpbmUgQXVkaW9Db25maWd1cmF0aW9uIEF1
ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBXVEZN
b3ZlKGNvbnRlbnRUeXBlKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShjaGFubmVscykuaXNvbGF0
ZWRDb3B5KCksIGJpdHJhdGUsIHNhbXBsZXJhdGUsIHNwYXRpYWxSZW5kZXJpbmcgfTsKK30KKwog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXVkaW9Db25maWd1cmF0aW9uOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKaW5k
ZXggZWZhYzRjNzk0ZGNmZWI0NzMxNTZiZDNmNDVmZGU1OWNmZmYwODUzOC4uOTQzYjkwNWI2ODUy
OWE2NzM2N2NhYTNiODQ3NGE4OWFiZTA0YzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9u
LmgKQEAgLTM1LDE3ICszNSwyMyBAQCBzdHJ1Y3QgTWVkaWFDb25maWd1cmF0aW9uIHsKICAgICBz
dGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW87CiAgICAgc3RkOjpvcHRpb25h
bDxBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwogCi0gICAgTWVkaWFDb25maWd1cmF0aW9uIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdCAmOworICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYUNv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgTWVkaWFDb25maWd1
cmF0aW9uIE1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK2lubGluZSBN
ZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBjb25z
dCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHZpZGVvKSwgIGNyb3NzVGhyZWFk
Q29weShhdWRpbykgfTsKIH0KIAoraW5saW5lIE1lZGlhQ29uZmlndXJhdGlvbiBNZWRpYUNvbmZp
Z3VyYXRpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUodmlkZW8pKSwgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGF1ZGlvKSkgfTsK
K30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTWVkaWFDb25maWd1cmF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9u
LmgKaW5kZXggZTg2MzFmMmNmMTc2N2VhZmI4NWQ1NTZhMGRlN2IyNTRjMDViMmI4Ny4uMTMwMWVj
NjYzZDNiOTZiMzMyYzg5NzU4NmIwYTNhM2FiOWU3NTc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1
cmF0aW9uLmgKQEAgLTQzLDE3ICs0MywyMyBAQCBzdHJ1Y3QgVmlkZW9Db25maWd1cmF0aW9uIHsK
ICAgICBzdGQ6Om9wdGlvbmFsPEhkck1ldGFkYXRhVHlwZT4gaGRyTWV0YWRhdGFUeXBlOwogICAg
IHN0ZDo6b3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4gdHJhbnNmZXJGdW5jdGlvbjsKIAotICAg
IFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBWaWRlb0NvbmZp
Z3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBWaWRlb0NvbmZpZ3VyYXRpb24g
aXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAotaW5saW5lIFZpZGVvQ29uZmlndXJhdGlvbiBWaWRlb0NvbmZpZ3VyYXRpb246Omlzb2xhdGVk
Q29weSgpIGNvbnN0CitpbmxpbmUgVmlkZW9Db25maWd1cmF0aW9uIFZpZGVvQ29uZmlndXJhdGlv
bjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNvbnRlbnRUeXBlLmlz
b2xhdGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBmcmFtZXJhdGUsIGFscGhhQ2hh
bm5lbCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFuc2ZlckZ1bmN0aW9uIH07CiB9
CiAKK2lubGluZSBWaWRlb0NvbmZpZ3VyYXRpb24gVmlkZW9Db25maWd1cmF0aW9uOjppc29sYXRl
ZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUoY29udGVudFR5cGUpLmlzb2xhdGVk
Q29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBmcmFtZXJhdGUsIGFscGhhQ2hhbm5lbCwg
Y29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFuc2ZlckZ1bmN0aW9uIH07Cit9CisKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFZpZGVvQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDZhM2Fh
ODdkODkzMWM0YjgwY2EwZGVhNzM4MDZiNTcwYzg2NzhlNTguLjM0ZTMwMjVmNzQxYzZhOWU5ZjIz
YzQ0YjQ3ODkzMWI3OGQ4MDk1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC00MiwxOSAr
NDIsMjcgQEAgc3RydWN0IFJUQ0RhdGFDaGFubmVsSW5pdCB7CiAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZCBzaG9ydD4gaWQ7CiAgICAgUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5IHsgUlRDUHJp
b3JpdHlUeXBlOjpMb3cgfTsKIAotICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsK
KyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJbml0
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIFJUQ0RhdGFDaGFubmVsSW5pdCBSVENE
YXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgUlRDRGF0YUNoYW5u
ZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAg
IGF1dG8gY29weSA9ICp0aGlzOwogICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29sYXRl
ZENvcHkoKTsKICAgICByZXR1cm4gY29weTsKIH0KIAoraW5saW5lIFJUQ0RhdGFDaGFubmVsSW5p
dCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgYXV0byBjb3B5
ID0gV1RGTW92ZSgqdGhpcyk7CisgICAgY29weS5wcm90b2NvbCA9IFdURk1vdmUoY29weS5wcm90
b2NvbCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgUlRDRGF0YUNoYW5uZWxJbml0OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWQgPDwgbWF4UGFja2V0TGlmZVRp
bWUgPDwgbWF4UmV0cmFuc21pdHMgPDwgcHJvdG9jb2wgPDwgbmVnb3RpYXRlZCA8PCBpZCA8PCBw
cmlvcml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIubW0KaW5kZXggODhjYTI3ZWFiODUwMWU0NGRiMDc1YmU4YWExZGU1MmU2ZGVmMjBiZC4u
ZWI2ZjlhZmZhZTc4Mzg1NGE1MDNmYzVjOWQ4Y2I4MDc3NTI1Zjc1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTIwMSw3ICsy
MDEsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoU3luYyhb
Jl0gewogICAgICAgICBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VzKCk7CiAgICAgfSk7Ci0gICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3Zl
KG5ld0F1ZGlvRGV2aWNlcykuaXNvbGF0ZWRDb3B5KCkpOworICAgIHNldEF1ZGlvQ2FwdHVyZURl
dmljZXMoY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSkpOwogfQogCiB2
b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJlRGV2
aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbikKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVD
YXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcgogCiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5k
aXNwYXRjaChbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFi
bGUgewogICAgICAgICBhdXRvIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZXMoKTsKLSAgICAgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5j
T25NYWluVGhyZWFkKG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29t
cGxldGlvbiksIG5ld0F1ZGlvRGV2aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKS5pc29s
YXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0
Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShuZXdBdWRpb0RldmljZXMpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzZXRBdWRpb0Nh
cHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CiAgICAgICAgICAgICBjb21w
bGV0aW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggOGUzNzU4ZmU2NmFiODZhNjZhYjJkNzA5N2Q0Y2Y1NGYyOTdjMGZiOS4uM2U1
MWZlMTU2NzVkNzMzYmNjZWY2OWNjOThhNTAzN2NlNmNkNTc1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KQEAgLTE4MCw3ICsxODAsNyBAQCBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmV0cmlldmVDYXB0dXJlRGV2aWNlcygpCiB2b2lk
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNw
YXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBkZXZpY2VMaXN0ID0gcmV0cmlldmVDYXB0dXJlRGV2aWNlcygpLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeyAgICAgICAgICAgIAorICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRldmljZUxpc3Qg
PSBjcm9zc1RocmVhZENvcHkocmV0cmlldmVDYXB0dXJlRGV2aWNlcygpKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGJvb2wgZGV2aWNlSGFzQ2hhbmdlZCA9IG1fZGV2aWNlcy5zaXplKCkgIT0g
ZGV2aWNlTGlzdC5zaXplKCk7CiAgICAgICAgICAgICBpZiAoIWRldmljZUhhc0NoYW5nZWQpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IGRldmljZUxpc3Qu
c2l6ZSgpOyArK2NwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IGQ4MGM1YmQ2YzAzZGY1MmFkMTEzOWNlNDM0YzRhNGE1
MzM4MTRlYTcuLmJkNTE2Y2Y2YzY1ZjJkYjQwNTE4ZjBjZDFkN2U5N2U4Zjc0ZTM4NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBIVFRQSGVhZGVyTWFwOjpIVFRQSGVhZGVyTWFwKCkKIHsKIH0KIAot
SFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAorSFRUUEhl
YWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgSFRU
UEhlYWRlck1hcCBtYXA7CiAgICAgbWFwLm1fY29tbW9uSGVhZGVycyA9IGNyb3NzVGhyZWFkQ29w
eShtX2NvbW1vbkhlYWRlcnMpOwpAQCAtNTAsNiArNTAsMTQgQEAgSFRUUEhlYWRlck1hcCBIVFRQ
SGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBtYXA7CiB9CiAKK0hU
VFBIZWFkZXJNYXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBIVFRQ
SGVhZGVyTWFwIG1hcDsKKyAgICBtYXAubV9jb21tb25IZWFkZXJzID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUobV9jb21tb25IZWFkZXJzKSk7CisgICAgbWFwLm1fdW5jb21tb25IZWFkZXJzID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV91bmNvbW1vbkhlYWRlcnMpKTsKKyAgICByZXR1cm4g
bWFwOworfQorCiBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3QKIHsKICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBmYTAzN2ZjZjk2ODE3
M2MwY2E5M2Q0NzFjM2RkNDFkYzQ4NzBiMGNiLi4xZmUxOWQzMTE4YjEzYmFhOGI5Y2IwNGIzZjdk
ZTY5OWJkODBmZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBIZWFkZXJNYXAuaApAQCAtNDAsNyArNDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIEhUVFBIZWFk
ZXJOYW1lIGtleTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgIENvbW1vbkhlYWRl
ciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGtleSAsIHZhbHVlLmlzb2xhdGVkQ29w
eSgpIH07IH0KKyAgICAgICAgQ29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIENvbW1vbkhl
YWRlciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGtleSAsIFdURk1vdmUodmFsdWUpLmlz
b2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsKIApA
QCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBrZXk7CiAgICAgICAgIFN0
cmluZyB2YWx1ZTsKIAotICAgICAgICBVbmNvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07
IH0KKyAgICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVy
biB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAg
ICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGtl
eSkuaXNvbGF0ZWRDb3B5KCkgLCBXVEZNb3ZlKHZhbHVlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAg
ICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxVbmNvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsKIApAQCAtMTM0LDcgKzEzNiw4IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwKCk7CiAKICAgICAvLyBH
ZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRo
cmVhZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgpICYm
OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFkZXJzLmlz
RW1wdHkoKSAmJiBtX3VuY29tbW9uSGVhZGVycy5pc0VtcHR5KCk7IH0KICAgICBpbnQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tbW9uSGVhZGVycy5zaXplKCkgKyBtX3VuY29tbW9uSGVhZGVy
cy5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IDZlNDVhYTE3NmQwN2YyMjkxYmJlMjM1NTA3
NzY1YmFiNTg4YWMxZjQuLjM4NGRjNzE0NzJiYjYwMTFkNmNkZTAzMWFhOGU4MmM1YTIyYzFkM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRzLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNs
aWVudHM6OmNsYWltKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxEZWZlcnJl
ZFByCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9u
LT5jbGFpbShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCByZXN1bHQgPSBpc29sYXRlZENv
cHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAg
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgcmVzdWx0ID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLm1fcGVuZGluZ1Byb21p
c2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiBwZW5kaW5nUHJvbWlzZSB7IHByb21pc2UucmVsZWFzZU5vbk51bGwo
KSB9OwogICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS5zZXR0bGUoV1RGTW92ZShy
ZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNDU2NzFjZjI3YTM0MWVj
NzU5MTJjNWYwMTQyOTNiMTRlZDhmYWI4Zi4uZTYyOGVmMGVhNDcwZmEyNmU2NWFlMzQ5NmVmZmZi
ZDFlMTc2NDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTM3OCw3ICszNzgs
NyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKFZlY3Rv
cjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgdXBkYXRlZFJlZ2lzdHJh
dGlvbnMuY2xlYXIoKTsKICAgICAgICAgICAgIHJlbW92ZWRSZWdpc3RyYXRpb25zLmNsZWFyKCk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHN1Y2Nlc3MsIHB1c2hDb3VudGVyLCB1cGRhdGVk
UmVnaXN0cmF0aW9ucyA9IFdURk1vdmUodXBkYXRlZFJlZ2lzdHJhdGlvbnMpLmlzb2xhdGVkQ29w
eSgpLCByZW1vdmVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUocmVtb3ZlZFJlZ2lzdHJhdGlvbnMp
Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc3VjY2VzcywgcHVzaENvdW50ZXIs
IHVwZGF0ZWRSZWdpc3RyYXRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodXBkYXRlZFJl
Z2lzdHJhdGlvbnMpKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucykpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFzdWNjZXNz
ICYmIChwdXNoQ291bnRlciArIDEpID09IG1fcHVzaENvdW50ZXIpIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSByZXRyeSB3cml0aW5nIG9uY2UgaWYgbm8gb3RoZXIgY2hhbmdlIHdhcyBwdXNoZWQu
CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVQdXNoQ2hhbmdlcyhXVEZNb3ZlKHVwZGF0ZWRSZWdp
c3RyYXRpb25zKSwgV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucyksIFNob3VsZFJldHJ5OjpO
bywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXggZWE1Y2E2ZGIzNDZhNjIxNzgyMDcyNjMxYTM0ZjIw
MTcyNmM3NzU2OC4uMzM2ZmVhODZlYjhiYjc4Y2EzNmZjNDMyOTg0ZWVhNGMyMmIzYmM1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBAIC0zOSwxNyAr
MzksOCBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAgIFNldHRpbmdzOjpWYWx1ZXMg
c2V0dGluZ3NWYWx1ZXM7CiAgICAgYm9vbCBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lOwogCi0gICAg
V29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAg
ICBqc1J1bnRpbWVGbGFncywKLSAgICAgICAgICAgIHNhbXBsZVJhdGUsCi0gICAgICAgICAgICBp
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLAotICAgICAgICAgICAgc2V0dGluZ3NWYWx1ZXMuaXNv
bGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lCi0gICAgICAg
IH07Ci0gICAgfQorICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBzYW1w
bGVSYXRlLCBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzZXR0aW5nc1ZhbHVlcy5pc29sYXRl
ZENvcHkoKSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CisgICAgV29ya2xldFBhcmFtZXRl
cnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHdpbmRvd1VSTCkuaXNvbGF0
ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKGlkZW50aWZpZXIp
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNldHRpbmdzVmFsdWVzKS5pc29sYXRlZENvcHkoKSwg
aXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAppbmRleCBjY2QxZjExMjVmZTY4OTY2Njk4YThmNWY2ZDdiMGY0MWYwZTUxMzU1Li5hNTUy
OTVmMzA1NTBkZjI3NDA0YmNlNDI5OWQyZmUzNzliMGU0OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTQ1NSwxNSAr
NDU1LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3Jh
dGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKICAgICB9CiAKICAgICBpZiAoIXVuYXR0
cmlidXRlZC5pc0VtcHR5KCkgfHwgIWF0dHJpYnV0ZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHVuYXR0cmli
dXRlZCA9IHVuYXR0cmlidXRlZC5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9IGF0dHJpYnV0
ZWQuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCB1bmF0dHJpYnV0ZWQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZSh1bmF0dHJpYnV0ZWQpKSwgYXR0cmlidXRlZCA9IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKGF0dHJpYnV0ZWQpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHN0b3JlLT5uZXR3b3JrU2Vzc2lvbigpOwogICAgICAgICAgICAg
aWYgKCFuZXR3b3JrU2Vzc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIGF1dG8mIG1hbmFnZXIgPSBuZXR3b3JrU2Vzc2lvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RGTW92ZShhdHRyaWJ1dGVkKSkK
KyAgICAgICAgICAgIGZvciAoYXV0byYmIHBjbSA6IFdURk1vdmUoYXR0cmlidXRlZCkpCiAgICAg
ICAgICAgICAgICAgbWFuYWdlci5taWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZShXVEZNb3ZlKHBjbSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlOjpBdHRyaWJ1dGVkKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RGTW92
ZSh1bmF0dHJpYnV0ZWQpKQorICAgICAgICAgICAgZm9yIChhdXRvJiYgcGNtIDogV1RGTW92ZSh1
bmF0dHJpYnV0ZWQpKQogICAgICAgICAgICAgICAgIG1hbmFnZXIubWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV1RGTW92ZShwY20pLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKICAgICAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA2NjFi
MTU2M2VjNjRiNjZlNzhmMWY4ZDU1NGM2ZDlkZjM3MzFhZTZiLi5jNWNkOWYxNGRmYTI2NzY2ZGUz
MTEwMmNkYzQyNDFjZmE2OTFhNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc2LDE0ICs3NywxNiBAQCBzdHJ1Y3QgUmVnaXN0
cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgewogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBWZWN0
b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5OwogICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNlRG9t
YWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3M7Ci0gICAgUmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgfTsg
fQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgp
IGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tp
ZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0
UGFydHkpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKSB9OyB9Cisg
ICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgJiYg
eyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5z
V2l0aFN0b3JhZ2VBY2Nlc3MpKSB9OyB9CiB9Owogc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3I7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25s
eUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcjsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcjsK
LSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBp
c29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNG
b3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0Zv
ci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFG
b3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvci5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0
V2Vic2l0ZURhdGFGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3NzVGhy
ZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRv
bWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvciksIGNyb3NzVGhyZWFkQ29weShk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciksIGNyb3NzVGhyZWFkQ29w
eShkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IpIH07IH0KKyAgICBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZUFsbENv
b2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxsQnV0
SHR0cE9ubHlDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcikpIH07IH0KICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yLmlzRW1wdHko
KSAmJiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IuaXNFbXB0eSgpICYm
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSAmJiBk
b21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IuaXNFbXB0eSgpOyB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyLmNwcAppbmRleCBhN2FiOTM4MDljY2I3ZjY1ZjQ4YjFhNTE5Y2Q5NjdhZGFiNWM2ZDU4Li4w
YTA0YWVlNDVmYWJiNjNkZWMyZjc5NzZiNzYxZDM2NjE3MDE2MDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBvcmlnaW5EYXRhcyA9IG9yaWdpbkRhdGFzLmlzb2xhdGVkQ29weSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbkRhdGFzID0gY3Jv
c3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5j
cHAKaW5kZXggNTU0ZmQyZDhmMGRkMWI5Yzc5OGUwNjg1NjEyZDFiOGQ4ZjA2YzdlMi4uZDUyYWQ2
YTQ5MjY5ZmNjMGFlNDEyNDdlODE2ZmZkZGIwZDFlM2Y5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5m
by5jcHAKQEAgLTI2LDE2ICsyNiwyOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmgiCiAKKyNpbmNsdWRlIDx3dGYvQ3Jv
c3NUaHJlYWRDb3BpZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdDo6UENNIHsKIAotRGVidWdJbmZv
IERlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlz
b2xhdGVkQ29weSgpIGNvbnN0ICYKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkobWVz
c2FnZXMpIH07Cit9CisKK0RlYnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpICYmCiB7
Ci0gICAgcmV0dXJuIHsgbWVzc2FnZXMuaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICByZXR1cm4geyBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShtZXNzYWdlcykpIH07CiB9CiAKLURlYnVnSW5mbzo6TWVz
c2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitEZWJ1Z0luZm86
Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAg
ICAgcmV0dXJuIHsgbWVzc2FnZUxldmVsLCBtZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07CiB9CiAK
K0RlYnVnSW5mbzo6TWVzc2FnZSBEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSgpICYm
Cit7CisgICAgcmV0dXJuIHsgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKG1lc3NhZ2UpLmlzb2xhdGVk
Q29weSgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6UENNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJ
bmZvLmgKaW5kZXggNTI1Nzc4NGI0ZTE5ZjM4MGFhMjA2YmMyYTc2ODhkYzlmNWVlM2RjZi4uMGI5
OTg0YzQ2NGRjZTE5YWEzNGQ1ZGU4ZGY2M2FiZWUzYTI2ZmRlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0lu
Zm8uaApAQCAtMzYsMTIgKzM2LDE0IEBAIHN0cnVjdCBEZWJ1Z0luZm8gewogICAgICAgICBKU0M6
Ok1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWw7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwogCi0g
ICAgICAgIE1lc3NhZ2UgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIE1lc3NhZ2UgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgTWVzc2FnZSBpc29sYXRlZENvcHkoKSAmJjsK
ICAgICB9OwogCiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwogCi0gICAgRGVidWdJbmZv
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIERlYnVnSW5mbyBpc29sYXRlZENvcHkoKSBjb25z
dCAmOworICAgIERlYnVnSW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKaW5kZXggYWI1MDk0MDgxNzI0NGQ3MjkxYjE5ODE4
NDM2ZTVkNTE4MmVhNDk2NC4uYmI0NGNkZjE4YWE4Mzg2OTNjNDJjODMwZDFjMDgyYWQ1ZWJhZDU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBTdG9yZTo6YWxs
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFcKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
PiBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnM7CiAgICAgICAgIGlmIChtX2RhdGFiYXNlKQogICAgICAg
ICAgICAgY29udmVydGVkQXR0cmlidXRpb25zID0gbV9kYXRhYmFzZS0+YWxsQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KCk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRl
ZEF0dHJpYnV0aW9ucyA9IGNvbnZlcnRlZEF0dHJpYnV0aW9ucy5pc29sYXRlZENvcHkoKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgcG9zdFRhc2tSZXBseShbY29udmVydGVkQXR0cmlidXRpb25zID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUoY29udmVydGVkQXR0cmlidXRpb25zKSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucykpOwogICAgICAg
ICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IGM2ZDRiY2I3MDIyOTk5MDJhYTgxODQ3
YWI5ODZiZThjMzE5ZDdmOWYuLjY1Y2E0YzBjMTRmNjFhOGMzMmE5NGM0NDRiZjQxMzY3M2E1YWUw
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU1MSw3ICs1NTIsNyBAQCB2b2lkIENvbnRlbnRS
dWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLAogICAgIGlmICghcGFyc2VkUnVsZXMuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBwYXJzZWRSdWxlcy5lcnJvcigpKTsKICAg
ICAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9IGpz
b24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFsdWUoKS5pc29s
YXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29uID0ganNvbi5p
c29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXJz
ZWRSdWxlcykudmFsdWUoKSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRl
bnRpZmllciwgZmFsc2UpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gY29tcGlsZWRUb0ZpbGUo
V1RGTW92ZShqc29uKSwgV1RGTW92ZShwYXJzZWRSdWxlcyksIHBhdGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3Np
Zmllci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGFsQ29udGFpbmVyQ29u
dHJvbENsYXNzaWZpZXIubW0KaW5kZXggMmYwMzc0OGI3Y2IxOGZhYTg5MmE5YzJlYWNkM2I3MTY1
OWEzZmNhMS4uOTQxMjFlN2NmMWRlZmQwYTU3NTA2ODA2OTI4ZTY0ZGMxMjNhYjU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9s
Q2xhc3NpZmllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RhbENv
bnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIFZl
Y3RvcjxNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBlPiBjb21wdXRlUHJlZGljdGlvbnMoTUxNb2Rl
bCAqbW9kZWwsIFZlY3QKIHZvaWQgTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllcjo6Y2xh
c3NpZnkoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYgY29tcGxldGlvbikKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCB0
ZXh0cyA9IHRleHRzLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgdGV4dHMgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZSh0ZXh0cykpLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbG9hZE1vZGVsSWZOZWVkZWQoKTsKICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKSwgcHJlZGljdGlvbnMgPSBjb21wdXRlUHJlZGljdGlvbnMobV9tb2RlbC5nZXQoKSwgV1RG
TW92ZSh0ZXh0cykpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbihXVEZNb3Zl
KHByZWRpY3Rpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA0MzM5MzQ2MDE1MzVhMGQ0NmUzZTg5ODdiODM2
ODQyMzg3MDYwNWM3Li41M2E2YmE0Mzk5MDNjZGQ5YmZhNzE1YzcwMGE0ZGZiMzI3ZmFlNzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNZWRp
YUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKSwgW3dlYWtQcm9jZXNzID0gV2Vha1B0ciB7IHByb2Nlc3MgfV0g
ewogICAgICAgICBhdXRvIGNhcHRpb25EaXNwbGF5TW9kZSA9IFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpwbGF0Zm9ybUNhcHRpb25EaXNwbGF5TW9kZSgpOwogICAgICAg
ICBhdXRvIHByZWZlcnJlZExhbmd1YWdlcyA9IFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpwbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpOwotICAgICAgICBjYWxsT25N
YWluUnVuTG9vcChbd2Vha1Byb2Nlc3MsIGNhcHRpb25EaXNwbGF5TW9kZSwgcHJlZmVycmVkTGFu
Z3VhZ2VzID0gV1RGTW92ZShwcmVmZXJyZWRMYW5ndWFnZXMpLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrUHJvY2VzcywgY2FwdGlvbkRpc3BsYXlNb2Rl
LCBwcmVmZXJyZWRMYW5ndWFnZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwcmVmZXJyZWRM
YW5ndWFnZXMpKV0gewogICAgICAgICAgICAgaWYgKHdlYWtQcm9jZXNzKQogICAgICAgICAgICAg
ICAgIHdlYWtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRNZWRpYUFjY2Vz
c2liaWxpdHlQcmVmZXJlbmNlcyhjYXB0aW9uRGlzcGxheU1vZGUsIHByZWZlcnJlZExhbmd1YWdl
cyksIDApOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDJmZGRiODQ5NTJkMDg4OWE4ODI1NGU0NzdiZmYyMzIwYjYwZjAxZGMuLjdjN2Jm
MTcyOGMxNGJkM2Q4YjhhMDY4ZWNiMDgxZDQwODg1NzAyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE5OCwxMyArNzE5OCwxMyBAQCBib29sIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhj
b25zdCBWZWN0b3I8UwogICAgIGF1dG8gdHJhbnNjb2RpbmdVVEkgPSBXZWJDb3JlOjpVVElGcm9t
TUlNRVR5cGUodHJhbnNjb2RpbmdNSU1FVHlwZSk7CiAgICAgYXV0byB0cmFuc2NvZGluZ0V4dGVu
c2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOwogCi0gICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGlu
Z1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBm
aWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VSTHMgPSB0cmFu
c2NvZGluZ1VSTHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdV
VEkuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRl
bnNpb24uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hhcmVkSW1hZ2VUcmFuc2Nv
ZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBmaWxlVVJMcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlVVJMcyksIHRyYW5zY29kaW5nVVJMcyA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kaW5nVVJMcykpLCB0cmFuc2NvZGluZ1VU
SSA9IFdURk1vdmUodHJhbnNjb2RpbmdVVEkpLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ0V4
dGVuc2lvbiA9IFdURk1vdmUodHJhbnNjb2RpbmdFeHRlbnNpb24pLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAg
ICBhdXRvIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlSW1hZ2VzKHRyYW5zY29kaW5nVVJMcywg
dHJhbnNjb2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKICAgICAgICAgQVNTRVJUKHRy
YW5zY29kaW5nVVJMcy5zaXplKCkgPT0gdHJhbnNjb2RlZFVSTHMuc2l6ZSgpKTsKIAotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFu
c2NvZGVkVVJMcyA9IHRyYW5zY29kZWRVUkxzLmlzb2xhdGVkQ29weSgpXSgpIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZmlsZVVSTHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShmaWxlVVJM
cykpLCB0cmFuc2NvZGVkVVJMcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kZWRV
UkxzKSldKCkgewogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBzYW5kYm94RXh0ZW5zaW9uRmlsZXM7CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlOTc4YjlkOTA5YmFkZWM2NDQ5
YTY1MzFlNWM3NTgzYWU3MThjN2FjLi40ODIxOTg3MzljZmRhNWZjZTY2MjEwN2M0ZTI3ZTM1MWQz
ODQ3MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02OTUs
OSArNjk1LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmV3YXJtR2xvYmFsbHkoKQogICAgIFdlYkNv
cmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzOjpwcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlByZXdhcm1J
bmZvcm1hdGlvbiYgcHJld2FybUluZm9ybWF0aW9uKQordm9pZCBXZWJQcm9jZXNzOjpwcmV3YXJt
V2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYmIHByZXdh
cm1JbmZvcm1hdGlvbikKIHsKLSAgICBXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybVdp
dGhJbmZvcm1hdGlvbihwcmV3YXJtSW5mb3JtYXRpb24pOworICAgIFdlYkNvcmU6OlByb2Nlc3NX
YXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFdURk1vdmUocHJld2FybUluZm9ybWF0aW9u
KSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1l
bnQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCA5NmU2Y2VlMjIxOGY2YTliMDA1M2RkOWZmYTBkNWQ4M2NkM2I2NGM1Li42Njg4
MzEwZDk2MTU5N2FlNzY2OTg4ZGE2YTNhOGViNzg1NTllNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQxMSw3ICs0MTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1TZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7Ci0gICAgdm9pZCBw
cmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1h
dGlvbiYpOworICAgIHZvaWQgcHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihXZWJDb3JlOjpQ
cmV3YXJtSW5mb3JtYXRpb24mJik7CiAKICNpZiBVU0UoT1NfU1RBVEUpCiAgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gYWRkaXRpb25hbFN0YXRlRm9yRGlhZ25vc3RpY1JlcG9ydCgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAppbmRleCAwY2FkYjUwNDJiYTE2MTA3N2Y5NDQ5YTk3M2RjZjk4MzJkMzcwMmFl
Li43NzQzZDUwODg1MjRiY2U1ZDdkM2YzNDkyZmM3NzE3YTg3YWExMDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNDg2
LDcgKzQ4Niw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyCiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMpCiB7Ci0gICAgZGlz
cGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1
ZXN0SWRlbnRpZmllciwgZGF0YWJhc2VzID0gZGF0YWJhc2VzLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgeworICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyA9IGNyb3NzVGhyZWFkQ29w
eShkYXRhYmFzZXMpXSgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZN
b3ZlKGRhdGFiYXNlcykpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRiY2JjZjQ1MTdiZmFiZDQxMTNkM2QyMjVkNTE2N2Mz
MWI1MzkwOTQuLjRlY2JmOTlhM2Y3MGRkYzEzODgxYWRiMTMyMWE4YjQ4ODZjY2RiOGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzUwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZCB0ZXN0IGNvdmVy
YWdlIGZvciBjcm9zc1RocmVhZENvcHkoKSBhbmQgbWFrZSBzdXJlIHRoZSBvcHRpbWl6YXRpb25z
IGFyZSB3b3JraW5nCisgICAgICAgIHdoZW4gY2FsbGVkIG9uIGEgci12YWx1ZSByZWZlcmVuY2Uu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4gbWFrZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5k
ZXggY2Q0ZGMyM2M3YjZhZWZiNGM5OWZmNTA4NDAzMzIyMTEzMzNkOGRlYi4uNGQ2NDc1MDY4YzNk
YWJkZDI0YzMxZmMxMGRkOGI4NDBiMTA0YmQzZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtMjcsNiArMjcsOSBAQAog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogCiAjaW5jbHVkZSAiVGVzdC5oIgor
I2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtODUsNCArODgsMTE4IEBAIFRFU1QoV1RGX0Nyb3NzVGhy
ZWFkQ29waWVyLCBDb3B5UlZPcHRpb25hbFN0cmluZ0hhdmluZ1R3b1JlZikKICAgICBFWFBFQ1Rf
VFJVRShjb3B5LT5pbXBsKCktPmhhc09uZVJlZigpKTsKIH0KIAorVEVTVChXVEZfQ3Jvc3NUaHJl
YWRDb3BpZXIsIFBhaXIpCit7CisgICAgc3RkOjpwYWlyIHBhaXIxIHsgImZvbyJfc3RyLCAiYmFy
Il9zdHIgfTsKKyAgICBhdXRvKiBmaXJzdFN0cmluZ0ltcGwgPSBwYWlyMS5maXJzdC5pbXBsKCk7
CisgICAgYXV0byogc2Vjb25kU3RyaW5nSW1wbCA9IHBhaXIxLnNlY29uZC5pbXBsKCk7CisgICAg
YXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHBhaXIxKTsKKyAgICBFWFBFQ1RfRVEoY29weSwg
cGFpcjEpOworICAgIEVYUEVDVF9ORShjb3B5LmZpcnN0LmltcGwoKSwgZmlyc3RTdHJpbmdJbXBs
KTsKKyAgICBFWFBFQ1RfTkUoY29weS5zZWNvbmQuaW1wbCgpLCBzZWNvbmRTdHJpbmdJbXBsKTsK
KworICAgIHN0ZDo6cGFpciBwYWlyMiB7ICJmb28iX3N0ciwgImJhciJfc3RyIH07CisgICAgZmly
c3RTdHJpbmdJbXBsID0gcGFpcjIuZmlyc3QuaW1wbCgpOworICAgIHNlY29uZFN0cmluZ0ltcGwg
PSBwYWlyMi5zZWNvbmQuaW1wbCgpOworICAgIGNvcHkgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShwYWlyMikpOworICAgIEVYUEVDVF9FUShjb3B5LCBwYWlyMSk7CisgICAgRVhQRUNUX0VRKGNv
cHkuZmlyc3QuaW1wbCgpLCBmaXJzdFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9FUShjb3B5LnNl
Y29uZC5pbXBsKCksIHNlY29uZFN0cmluZ0ltcGwpOworICAgIEVYUEVDVF9UUlVFKHBhaXIyLmZp
cnN0LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShwYWlyMi5zZWNvbmQuaXNOdWxsKCkpOwor
fQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgVmFyaWFudCkKK3sKKyAgICBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBVUkw+IHZhcmlhbnQ7CisgICAgdmFyaWFudCA9ICJmb28iX3N0cjsKKyAg
ICBhdXRvKiBpbXBsID0gc3RkOjpnZXQ8U3RyaW5nPih2YXJpYW50KS5pbXBsKCk7CisgICAgYXV0
byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9FUShjb3B5LCB2
YXJpYW50KTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBsKCksIGlt
cGwpOworCisgICAgdmFyaWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGltcGwgPSBzdGQ6
OmdldDxVUkw+KHZhcmlhbnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJl
YWRDb3B5KHZhcmlhbnQpOworICAgIEFTU0VSVF9FUShjb3B5LCB2YXJpYW50KTsKKyAgICBFWFBF
Q1RfTkUoc3RkOjpnZXQ8VVJMPihjb3B5KS5zdHJpbmcoKS5pbXBsKCksIGltcGwpOworCisgICAg
dmFyaWFudCA9ICJmb28iX3N0cjsKKyAgICBpbXBsID0gc3RkOjpnZXQ8U3RyaW5nPih2YXJpYW50
KS5pbXBsKCk7CisgICAgY29weSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZhcmlhbnQpKTsK
KyAgICBBU1NFUlRfRVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KSwgImZvbyJfc3RyKTsKKyAgICBF
WFBFQ1RfRVEoc3RkOjpnZXQ8U3RyaW5nPihjb3B5KS5pbXBsKCksIGltcGwpOworCisgICAgdmFy
aWFudCA9IFVSTCB7ICJiYXIiX3N0ciB9OworICAgIGltcGwgPSBzdGQ6OmdldDxVUkw+KHZhcmlh
bnQpLnN0cmluZygpLmltcGwoKTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dmFyaWFudCkpOworICAgIEFTU0VSVF9FUShzdGQ6OmdldDxVUkw+KGNvcHkpLCBVUkwgeyAiYmFy
Il9zdHIgfSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6Z2V0PFVSTD4oY29weSkuc3RyaW5nKCkuaW1w
bCgpLCBpbXBsKTsKK30KKworVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIEhhc2hNYXApCit7
CisgICAgSGFzaE1hcDxDU3RyaW5nLCBTdHJpbmdJbXBsKj4gaW1wbHM7CisKKyAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBtYXA7CisgICAgbWFwLmFkZCgiZm9vIl9zdHIsICJmb29WYWx1ZSJf
c3RyKTsKKyAgICBtYXAuYWRkKCJiYXIiX3N0ciwgImJhclZhbHVlIl9zdHIpOworICAgIGZvciAo
YXV0byYgW2tleSwgdmFsdWVdIDogbWFwKSB7CisgICAgICAgIGltcGxzLmFkZChrZXkudXRmOCgp
LCBrZXkuaW1wbCgpKTsKKyAgICAgICAgaW1wbHMuYWRkKHZhbHVlLnV0ZjgoKSwgdmFsdWUuaW1w
bCgpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkobWFwKTsKKyAg
ICBFWFBFQ1RfRVEoY29weSwgbWFwKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6IGNv
cHkpIHsKKyAgICAgICAgRVhQRUNUX05FKGtleS5pbXBsKCksIGltcGxzLmdldChrZXkudXRmOCgp
KSk7CisgICAgICAgIEVYUEVDVF9ORSh2YWx1ZS5pbXBsKCksIGltcGxzLmdldCh2YWx1ZS51dGY4
KCkpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvcHkyID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
bWFwKSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfVFJVRShtYXAu
aXNFbXB0eSgpKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6IGNvcHkyKSB7CisgICAg
ICAgIEVYUEVDVF9FUShrZXkuaW1wbCgpLCBpbXBscy5nZXQoa2V5LnV0ZjgoKSkpOworICAgICAg
ICBFWFBFQ1RfRVEodmFsdWUuaW1wbCgpLCBpbXBscy5nZXQodmFsdWUudXRmOCgpKSk7CisgICAg
fQorfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgSGFzaFNldCkKK3sKKyAgICBIYXNo
TWFwPENTdHJpbmcsIFN0cmluZ0ltcGwqPiBpbXBsczsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBz
ZXQ7CisgICAgc2V0LmFkZCgiZm9vIl9zdHIpOworICAgIHNldC5hZGQoImJhciJfc3RyKTsKKyAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBzZXQpCisgICAgICAgIGltcGxzLmFkZChpdGVtLnV0ZjgoKSwg
aXRlbS5pbXBsKCkpOworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KHNldCk7Cisg
ICAgRVhQRUNUX0VRKGNvcHksIHNldCk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogY29weSkKKyAg
ICAgICAgRVhQRUNUX05FKGl0ZW0uaW1wbCgpLCBpbXBscy5nZXQoaXRlbS51dGY4KCkpKTsKKwor
ICAgIGF1dG8gY29weTIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZXQpKTsKKyAgICBFWFBF
Q1RfRVEoY29weTIsIGNvcHkpOworICAgIEVYUEVDVF9UUlVFKHNldC5pc0VtcHR5KCkpOworICAg
IGZvciAoYXV0byYgaXRlbSA6IGNvcHkyKQorICAgICAgICBFWFBFQ1RfRVEoaXRlbS5pbXBsKCks
IGltcGxzLmdldChpdGVtLnV0ZjgoKSkpOworfQorCitURVNUKFdURl9Dcm9zc1RocmVhZENvcGll
ciwgT3B0aW9uYWwpCit7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsOworICAg
IG9wdGlvbmFsID0gImZvbyJfc3RyOworICAgIGF1dG8qIGltcGwgPSBvcHRpb25hbC0+aW1wbCgp
OworCisgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbmFsKTsKKyAgICBFWFBF
Q1RfRVEoY29weSwgb3B0aW9uYWwpOworICAgIEVYUEVDVF9ORShjb3B5LT5pbXBsKCksIGltcGwp
OworCisgICAgYXV0byBjb3B5MiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wdGlvbmFsKSk7
CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsKKyAgICBFWFBFQ1RfRVEoY29weTItPmltcGwo
KSwgaW1wbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCmluZGV4IDVkNDZjM2NiZTkzYWNjZTM2ZGE5ZjZl
MmMwYTU0NzNlZmU5YmIwNWQuLjBiMTY2NzBhNDIyMWMwZDdlMmJkNGRlYWNjMmVkNWQ3N2UzNmQ0
YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNp
bmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CkBAIC0xMjgsNyArMTI5LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb25zdHJ1Y3RXaXRoRnJvbVN0
cmluZykKICAgICBFWFBFQ1RfVFJVRShzMy5pc051bGwoKSk7CiB9CiAKLVRFU1QoV1RGX1ZlY3Rv
ciwgSXNvbGF0ZUNvcHkpCitURVNUKFdURl9WZWN0b3IsIElzb2xhdGVkQ29weSkKIHsKICAgICBT
dHJpbmcgczEgPSAiczEiOwogICAgIFN0cmluZyBzMiA9ICJzMiI7CkBAIC0xNDAsNyArMTQxLDcg
QEAgVEVTVChXVEZfVmVjdG9yLCBJc29sYXRlQ29weSkKICAgICBhdXRvKiBkYXRhMSA9IHZlY3Rv
cjFbMF0uaW1wbCgpOwogICAgIGF1dG8qIGRhdGEyID0gdmVjdG9yMVsxXS5pbXBsKCk7CiAKLSAg
ICBhdXRvIHZlY3RvcjIgPSB2ZWN0b3IxLmlzb2xhdGVkQ29weSgpOworICAgIGF1dG8gdmVjdG9y
MiA9IGNyb3NzVGhyZWFkQ29weSh2ZWN0b3IxKTsKIAogICAgIEVYUEVDVF9UUlVFKCJzMSIgPT0g
dmVjdG9yMlswXSk7CiAgICAgRVhQRUNUX1RSVUUoInMyIiA9PSB2ZWN0b3IyWzFdKTsKQEAgLTE0
OCw3ICsxNDksNyBAQCBURVNUKFdURl9WZWN0b3IsIElzb2xhdGVDb3B5KQogICAgIEVYUEVDVF9G
QUxTRShkYXRhMSA9PSB2ZWN0b3IyWzBdLmltcGwoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGRhdGEy
ID09IHZlY3RvcjJbMV0uaW1wbCgpKTsKIAotICAgIGF1dG8gdmVjdG9yMyA9IFdURk1vdmUodmVj
dG9yMSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0byB2ZWN0b3IzID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUodmVjdG9yMSkpOwogICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yMS5zaXplKCkpOwog
CiAgICAgRVhQRUNUX1RSVUUoInMxIiA9PSB2ZWN0b3IzWzBdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454010</attachid>
            <date>2022-03-07 12:05:12 -0800</date>
            <delta_ts>2022-03-07 12:29:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237502-20220307120512.patch</filename>
            <type>text/plain</type>
            <size>162241</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwOTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyZGM0ODMzNTA2MzNiNWEyYzJhNjFk
ZWVkZDY3ODE5NWIxMjlhYzEuLmQxZTI4ZDAyNzgwMTY4YmI3NDEyZjI0YTEyYmE0ZTZjM2E5NTg1
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9z
cyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBE
cm9wIGlzb2xhdGVkQ29weSgpIG9uIFZlY3RvciBzaW5jZSBDcm9zc1RocmVhZENvcGllciBhbHJl
YWR5IGhhcyBsb2dpYyB0bworICAgICAgICBpc29sYXRlLWNvcHkgYSBWZWN0b3IuIFRoZSBsb2dp
YyBpbiBDcm9zc1RocmVhZENvcGllciBoYXMgdGhlIGJlbmVmaXQgb2YKKyAgICAgICAgd29ya2lu
ZyBvbiB0eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgaXNvbGF0ZWRDb3B5KCkgKGUuZy4gYSBW
ZWN0b3Igb2YKKyAgICAgICAgc3RkOjpvcHRpb25hbCBvciBhIFZlY3RvciBvZiBzdGQ6OnZhcmlh
bnQpLgorCisgICAgICAgIEltcHJvdmUgdGhlIENyb3NzVGhyZWFkQ29waWVyIHRvIG9wdGltaXpl
IHRoZSBjYXNlIHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpCisgICAgICAgIGlzIGNhbGxlZCBvbiBh
IHItdmFsdWUgcmVmZXJlbmNlIGluIG1vcmUgY2FzZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBsb2dp
YworICAgICAgICBmb3IgVmVjdG9yLCBIYXNoU2V0LCBIYXNoTWFwLCBzdGQ6OnBhaXIsIHN0ZDo6
dmFyaWFudCB3YXMgaW1wcm92ZWQuIEkKKyAgICAgICAgYWxzbyBhZGRlZCBBUEkgdGVzdCBjb3Zl
cmFnZSBmb3IgdGhvc2UuCisKKyAgICAgICAgVGhlIEFQSSB0ZXN0cyBhbHNvIGZvdW5kIGEgYnVn
IHdoZXJlIGNyb3NzVGhyZWFkQ29weSgpIHdhcyBpbmNvcnJlY3RseQorICAgICAgICBtb3Zpbmcg
dGhlIHNvdXJjZSB3aGVuIGNhbGxlZCBvbiBhIHN0ZDo6dmFyaWFudCB0aGF0IHdhcyBub3QgYSBy
LXZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4gVGhpcyBidWcgaXMgZml4ZWQgaW4gdGhpcyBwYXRj
aCB0b28uCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKiB3
dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQu
CisgICAgICAgICogd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtOjpzZXRNZXRhZGF0YVVSTCk6CisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG51bGwgY2hlY2sgZm9yIHBhdGggaW4gbWFr
ZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFhZjdmMTYwYWQxNmE0NmVkMTY2ZmUwZjNh
YTZhMmJiMzU2MDE5NC4uNzc3M2MyOGFkMzQyZjcyODBlYmU0YjQ4YTFhMzBhYzA4ODExNTQ5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0wNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIHRoZSBwYXNzaW5nIG9mIGRhdGEg
YWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAg
ICAgIEFkZCBtb3JlIGlzb2xhdGVkQ29weSgpIG92ZXJsb2FkcyB0aGF0IHdvcmsgb24gci12YWx1
ZSByZWZlcmVuY2VzIHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGNhbiBiZSBvcHRp
bWl6ZWQuIEFsc28gY2FsbCBpc29sYXRlZENvcHkoKSAvIGNyb3NzVGhyZWFkQ29weSgpIG9uIGEg
ci12YWx1ZSByZWZlcmVuY2UKKyAgICAgICAgd2hlbmV2ZXIgcG9zc2libGUgdG8gbGV2ZXJhZ2Ug
dGhlc2Ugb3B0aW1pemF0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVRdWVy
eU9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZUNhY2hlSW5mbyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvczo6aXNvbGF0
ZWRDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
bzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm9zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXRyaWV2ZVJl
Y29yZHNPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmV0
cmlldmVSZWNvcmRzT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRp
b24pOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxP
YmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJl
cXVlc3RHZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3Jkcyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRXJyb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJFcnJvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkVycm9y
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJ
bmRleEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdDo6SW5mbzo6aXNvbGF0ZWRD
b3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNob3Q6Oklu
Zm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBz
aG90Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTG9ja01hbmFn
ZXJTbmFwc2hvdDo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtRGVzY3Jp
cHRvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1E
ZXNjcmlwdG9yOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmts
ZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRo
cmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFz
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZvcm1UYXNr
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5l
Y3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
TW9kaWZ5SGVhZGVyc0FjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rp
b246Ok1vZGlmeUhlYWRlckluZm86Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVy
SW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNm
b3JtQWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVk
Q29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rp
b246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246
OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlzb2xhdGVkQ29weSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkFjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25XaXRoU3RyaW5nTWV0YWRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1
bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dl
cik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dl
cjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6VHJpZ2dlcjo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1bGU6Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1
bGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
VHJpZ2dlcjo6flRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
Omlzb2xhdGVkQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkRhdGEuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRXhjZXB0aW9uRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RXhjZXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogZG9tL0V4
Y2VwdGlvbk9yLmg6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZENvcHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBodG1sL0Zp
bGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6cmVjZWl2
ZURyb3BwZWRGaWxlc1dpdGhJbWFnZVRyYW5zY29kaW5nKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2Fk
U2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTCk6CisgICAgICAgICogbG9hZGVyL0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVy
RGlkQmxvY2spOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5
Q29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDb250YWluZXI6Omlzb2xhdGVk
Q29weSk6CisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW46
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0
ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29sYXRlZENv
cHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVk
Q29weSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5h
dGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVGltaW5n
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VUaW1pbmc6
Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nLmg6CisgICAg
ICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJU
aW1pbmc6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJUaW1p
bmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZy5oOgorICAg
ICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdl
L0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjppc29sYXRlZENv
cHkpOgorICAgICAgICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24pOgorICAgICAgICAqIHBh
Z2UvUHJvY2Vzc1dhcm1pbmcuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjppc29sYXRlZENv
cHkpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycy5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZWxlY3Rpb25PcHRpb246Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlbGVjdGlvbk9wdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9S
ZWdpc3RyYWJsZURvbWFpbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcmV3YXJtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6UHJld2FybUluZm9ybWF0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpwcmV3YXJtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQpOgorICAgICAgICAoaXNvbGF0ZWRDb3B5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hD
YXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjppc29sYXRlZENvcHkp
OgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpVbmNvbW1v
bkhlYWRlcjo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dHM6OmNsYWltKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpz
Y2hlZHVsZVB1c2hDaGFuZ2VzKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVy
cy5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5
KToKKwogMjAyMi0wMy0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1ha2UgInRydWUiIGNvdW50IGFzIHRydXRoeSBpbiB3aW5kb3cub3BlbigpJ3MgYm9vbGVh
biBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NWJiYjBlZTJiNTMwM2YzOWY3MTEyODAwNWUwOTg4NDU0
NjMxN2I4Li4yZDcwZjUxNmRlOGJjNGIwYWYyNmEzYTcyNDcyZDZkYmMxZmY0NGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhy
ZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgQWRkIG1v
cmUgaXNvbGF0ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVlIHJlZmVyZW5j
ZXMgd2hlbiB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGltaXplZC4gQWxz
byBjYWxsIGlzb2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSByLXZhbHVlIHJl
ZmVyZW5jZQorICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0aGVzZSBvcHRp
bWl6YXRpb25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvUENNRGF0YWJhc2VJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZXNGb3I6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRlZENvcHkp
OgorICAgICAgICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3I6Omlzb2xhdGVk
Q29weSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFz
ZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RGVidWdJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRlYnVnSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpEZWJ1Z0luZm86Ok1lc3NhZ2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBDTTo6U3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAg
ICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmll
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllcjo6
Y2xhc3NpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TWVkaWFBY2Nlc3NpYmls
aXR5UHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
V2l0aEltYWdlVHJhbnNjb2RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZXdhcm1XaXRoRG9tYWluSW5mb3Jt
YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAzLTA3
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIERlbGV0ZSBXZWJJ
REJTZXJ2ZXIgYW5kIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpp
bmRleCBmNmI4ODllMmVmZWJhYWVmYmJmZTViNWM5ODg3MmI5ZmY4Yzc2NjFhLi43MTgxYWZiYzU2
N2Q2M2ZjYjJlOGIwODVhNTY5ODQ2M2U0YTk1ZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIyLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgT3B0aW1pemUgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgQWRkIG1vcmUgaXNv
bGF0ZWRDb3B5KCkgb3ZlcmxvYWRzIHRoYXQgd29yayBvbiByLXZhbHVlIHJlZmVyZW5jZXMgd2hl
biB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgY2FuIGJlIG9wdGltaXplZC4gQWxzbyBjYWxs
IGlzb2xhdGVkQ29weSgpIC8gY3Jvc3NUaHJlYWRDb3B5KCkgb24gYSByLXZhbHVlIHJlZmVyZW5j
ZQorICAgICAgICB3aGVuZXZlciBwb3NzaWJsZSB0byBsZXZlcmFnZSB0aGVzZSBvcHRpbWl6YXRp
b25zLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMp
OgorCiAyMDIyLTAzLTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAg
ICAgICAgIENvcHkgV2ViS2l0IGZyYW1ld29ya3MgYW5kIFhQQyBwcm9jZXNzZXMgdG8gU2Vjb25k
YXJ5IFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDAxZDJhNzc2MzNiMGIw
MmNmNGRmNTI1MGZmZDIzNGNiZjAzOTdiODcuLjQxZTExYjM2NTc3ZGExOGJhNzA5ZmYxNGRiNDBm
M2QyZjYzYjkxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVy
LmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTQyLDYgKzE0
MiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgICAgICAgICAgZGVzdGluYXRpb24u
dW5jaGVja2VkQXBwZW5kKENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KG9iamVjdCkpOwogICAg
ICAgICByZXR1cm4gZGVzdGluYXRpb247CiAgICAgfQorICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlw
ZSYmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHNvdXJjZS5i
ZWdpbigpLCBpdGVyYXRvckVuZCA9IHNvdXJjZS5lbmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVu
ZDsgKytpdGVyYXRvcikKKyAgICAgICAgICAgICppdGVyYXRvciA9IENyb3NzVGhyZWFkQ29waWVy
PFQ+Ojpjb3B5KFdURk1vdmUoKml0ZXJhdG9yKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHNv
dXJjZSk7CisgICAgfQogfTsKICAgICAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhh
c2hTZXRzIG9mIENyb3NzVGhyZWFkQ29weWFibGUgY2xhc3NlcwpAQCAtMTU0LDI2ICsxNjAsNDMg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIEhhc2hTZXQ8VD4gPiB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jv
c3NUaHJlYWRDb3BpZXI8VD46OmNvcHkob2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBkZXN0aW5h
dGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsK
KyAgICAgICAgVHlwZSBkZXN0aW5hdGlvbjsKKyAgICAgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzb3VyY2Uuc2l6ZSgpKTsKKyAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNF
bXB0eSgpKQorICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKENyb3NzVGhyZWFkQ29waWVyPFQ+
Ojpjb3B5KHNvdXJjZS50YWtlQW55KCkpKTsKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwor
ICAgIH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIEhhc2hNYXBzIG9mIENy
b3NzVGhyZWFkQ29weWFibGUgY2xhc3NlcwotdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUg
Vj4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hNYXA8Sywg
Vj4gPiB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEssIFY+IFR5cGU7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUg
S2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHR5cGVuYW1lIFRhYmxlVHJh
aXRzQXJnPgorc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEhhc2hN
YXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRz
QXJnLCBUYWJsZVRyYWl0c0FyZz4+IHsKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5QXJnLCBNYXBw
ZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBUYWJsZVRyYWl0
c0FyZz4gVHlwZTsKICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFR5cGUmIHNvdXJjZSkKICAg
ICB7CiAgICAgICAgIFR5cGUgZGVzdGluYXRpb247Ci0gICAgICAgIGZvciAoYXV0byYga2V5VmFs
dWUgOiBzb3VyY2UpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3Bp
ZXI8Sz46OmNvcHkoa2V5VmFsdWUua2V5KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8Vj46OmNvcHkoa2V5
VmFsdWUudmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBzb3VyY2Up
CisgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoQ3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJnPjo6
Y29weShrZXkpLCBDcm9zc1RocmVhZENvcGllcjxNYXBwZWRBcmc+Ojpjb3B5KHZhbHVlKSk7CiAg
ICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShU
eXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gc291cmNl
LmJlZ2luKCksIGVuZCA9IHNvdXJjZS5lbmQoKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9y
KSB7CisgICAgICAgICAgICBpdGVyYXRvci0+a2V5ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8S2V5QXJn
Pjo6Y29weShXVEZNb3ZlKGl0ZXJhdG9yLT5rZXkpKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT52
YWx1ZSA9IENyb3NzVGhyZWFkQ29waWVyPE1hcHBlZEFyZz46OmNvcHkoV1RGTW92ZShpdGVyYXRv
ci0+dmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOwor
ICAgIH0KIH07CiAKIC8vIERlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9yIHBhaXJzIG9mIENyb3Nz
VGhyZWFkQ29weWFibGUgY2xhc3NlcwogdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgUz4g
c3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIHN0ZDo6cGFpcjxGLCBT
PiA+IHsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxGLCBTPiBUeXBlOwotICAgIHN0YXRpYyBUeXBl
IGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRp
YyBUeXBlIGNvcHkoVSYmIHNvdXJjZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShzb3VyY2UuZmlyc3QpLCBDcm9zc1RocmVh
ZENvcGllcjxTPjo6Y29weShzb3VyY2Uuc2Vjb25kKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29weShzdGQ6OmdldDwwPihzdGQ6OmZvcndh
cmQ8VT4oc291cmNlKSkpLCBDcm9zc1RocmVhZENvcGllcjxTPjo6Y29weShzdGQ6OmdldDwxPihz
dGQ6OmZvcndhcmQ8VT4oc291cmNlKSkpKTsKICAgICB9CiB9OwogCkBAIC0xODksMTEgKzIxMiwx
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZh
bHNlLCBmYWxzZSwgc3RkOjpvcHRpb25hbDxUPgogCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9u
IGZvciBzdGQ6OnZhcmlhbnQgb2YgQ3Jvc3NUaHJlYWRDb3B5YWJsZSBjbGFzc2VzLgogdGVtcGxh
dGU8dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2Us
IGZhbHNlLCBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShVJiYgc291cmNlKQorICAgIHVz
aW5nIFR5cGUgPSBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+OworICAgIHN0YXRpYyBzdGQ6OnZhcmlh
bnQ8VHlwZXMuLi4+IGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHN0ZDo6dmlzaXQoW10gKGF1dG8mIHR5cGUpIC0+IHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4g
ewogICAgICAgICAgICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPHN0ZDo6cmVtb3ZlX2NvbnN0
X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUodHlwZSk+Pj46OmNvcHkodHlwZSk7
Ci0gICAgICAgIH0sIHN0ZDo6Zm9yd2FyZDxVPihzb3VyY2UpKTsKKyAgICAgICAgfSwgc291cmNl
KTsKKyAgICB9CisgICAgc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gY29weShUeXBlJiYg
c291cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQoW10gKGF1dG8mJiB0eXBl
KSAtPiBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IHsKKyAgICAgICAgICAgIHJldHVybiBDcm9zc1Ro
cmVhZENvcGllcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRl
Y2x0eXBlKHR5cGUpPj4+Ojpjb3B5KFdURk1vdmUodHlwZSkpOworICAgICAgICB9LCBXVEZNb3Zl
KHNvdXJjZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggYzZiZGFlOWU3MjU3OGMxZTUzMDNm
MWNhMjg2ZjhlNjhlYTljYjllNS4uNDY3OWExOGRmMDE0NWQyNDVlMTcyNDFjNzlmYzZkN2JhYWEx
YjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTc3Niw5ICs3NzYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyKCkgeyBzaHJpbmtDYXBhY2l0eSgwKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IFQ+IFZlY3RvcjxVPiBpc29sYXRlZENvcHkoKSBjb25zdCAmOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5KCkgJiY7Ci0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVlKSB7IGFwcGVuZDxWYWx1ZVR5cGU+KHN0
ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFUmJiB1KSB7IGFwcGVuZDxGYWlsdXJlQWN0aW9u
OjpDcmFzaCwgVT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IEFMV0FZU19JTkxJTkUgYm9vbCB0cnlBcHBlbmQoVSYmIHUpIHsgcmV0dXJuIGFwcGVuZDxG
YWlsdXJlQWN0aW9uOjpSZXBvcnQsIFU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7IH0KQEAgLTE2NTks
MjYgKzE2NTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0
b3I8VD4+IHsKIH07CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgotdGVtcGxhdGU8dHlwZW5hbWUgVT4K
LWlubGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCi17Ci0gICAg
VmVjdG9yPFU+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKnRoaXMpCi0gICAgICAgIGNvcHkudW5j
aGVja2VkQXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5KCkpOwotICAgIHJldHVybiBjb3B5Owot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFZlY3RvcjxVPiBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omlzb2xhdGVkQ29w
eSgpICYmCi17Ci0gICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oKSwgaXRlcmF0b3JFbmQg
PSBlbmQoKTsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgKytpdGVyYXRvcikKLSAgICAgICAgKml0
ZXJhdG9yID0gV1RGTW92ZSgqaXRlcmF0b3IpLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiBX
VEZNb3ZlKCp0aGlzKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5h
bWUgRnVuYz4KIHNpemVfdCByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKFZlY3RvclR5cGUmIHZlY3Rv
ciwgY29uc3QgRnVuYyYgZnVuYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9G
aWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5k
ZXggYmI2MmRhYTMzODM0YzMyOGQwZTUxOWQ2ZjI1ZjRjYjlmZmI5MTc4Ni4uMmZiMWE1ZjI1NjE3
ZWZiMDM2YWE5NGYxN2JkNTM1Zjc0ZWJiNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFjL0ZpbGVTeXN0ZW1N
YWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIKICAgICAgICAg
dXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CiAKICAgICAvLyBDYWxsIE1ldGFkYXRhIEFQ
SSBvbiBhIGJhY2tncm91bmQgcXVldWUgYmVjYXVzZSBpdCBjYW4gdGFrZSBzb21lIHRpbWUuCi0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVV
RV9QUklPUklUWV9ERUZBVUxULCAwKSwgW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCB1cmxT
dHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbcGF0aCA9IHBhdGguaXNv
bGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IFdURk1vdmUodXJsU3RyaW5nKS5pc29sYXRlZENvcHko
KSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBhdXRvIGl0
ZW0gPSBhZG9wdENGKE1ESXRlbUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9u
cy5oCmluZGV4IDAxZmRjOTM3Yzc1MTgxNTNlMDBiY2NiN2VkNTkxYTU4MTE0NGYyZGUuLmNmMWE2
NzQ5Nzk3OGQyMjM0YWY0Y2Q2MzkyZGVmYzViNmFiMjJhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zIHsKLSAgICBD
YWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGlnbm9yZVNl
YXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkg
fTsgfQorICAgIENhY2hlUXVlcnlPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1
cm4geyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgY2FjaGVOYW1lLmlz
b2xhdGVkQ29weSgpIH07IH0KKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBXVEZN
b3ZlKGNhY2hlTmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgYm9vbCBpZ25vcmVTZWFy
Y2ggeyBmYWxzZSB9OwogICAgIGJvb2wgaWdub3JlTWV0aG9kIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggYzBmODAz
MmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNi4uYjQyODI2NWMxMjc4MjU0N2MxYTBk
ZTQyZjlhNmYyMmNlNDM4ZGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTE1NCwxNiArMTU0LDYgQEAgUmVjb3JkIFJlY29yZDo6
Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlY29yZCB7IGlkZW50aWZpZXIsIHVwZGF0ZVJlc3Bv
bnNlQ291bnRlciwgcmVxdWVzdEhlYWRlcnNHdWFyZCwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJy
ZXIsIHJlc3BvbnNlSGVhZGVyc0d1YXJkLCByZXNwb25zZSwgY29weVJlc3BvbnNlQm9keShyZXNw
b25zZUJvZHkpLCByZXNwb25zZUJvZHlTaXplIH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ2FjaGVJ
bmZvIGlzb2xhdGVDYWNoZUluZm8oY29uc3QgQ2FjaGVJbmZvJiBpbmZvKQotewotICAgIHJldHVy
biBDYWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8ubmFtZS5pc29sYXRlZENvcHkoKSB9
OwotfQotCi1DYWNoZUluZm9zIENhY2hlSW5mb3M6Omlzb2xhdGVkQ29weSgpCi17Ci0gICAgcmV0
dXJuIHsgV1RGOjptYXAoaW5mb3MsIGlzb2xhdGVDYWNoZUluZm8pLCB1cGRhdGVDb3VudGVyIH07
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApp
bmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5iZTVjMmMxZTM1
NDBjNzZmZWM3N2VkNWM0ZjZlYTBhYjQyMjk3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC04MiwxNiArODIsMjAgQEAgc3RydWN0IFJl
Y29yZCB7CiBzdHJ1Y3QgQ2FjaGVJbmZvIHsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwogICAg
IFN0cmluZyBuYW1lOworCisgICAgQ2FjaGVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyBpZGVudGlmaWVyLCBuYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDYWNoZUlu
Zm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBpZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUp
Lmlzb2xhdGVkQ29weSgpIH07IH0KIH07CiAKIHN0cnVjdCBDYWNoZUluZm9zIHsKLSAgICBDYWNo
ZUluZm9zIGlzb2xhdGVkQ29weSgpOworICAgIFZlY3RvcjxDYWNoZUluZm8+IGluZm9zOworICAg
IHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJbmZvcz4gZGVjb2RlKERlY29kZXImKTsKIAotICAg
IFZlY3RvcjxDYWNoZUluZm8+IGluZm9zOwotICAgIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7Cisg
ICAgQ2FjaGVJbmZvcyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJl
YWRDb3B5KGluZm9zKSwgdXBkYXRlQ291bnRlciB9OyB9CisgICAgQ2FjaGVJbmZvcyBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGluZm9zKSksIHVw
ZGF0ZUNvdW50ZXIgfTsgfQogfTsKIAogc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJl
c3VsdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZl
UmVjb3Jkc09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVS
ZWNvcmRzT3B0aW9ucy5oCmluZGV4IDBmYTAyYmJiZGMzMzkxY2RiZGJjZmQ4YWJlNmFmZmY0YWZj
YTE1MGYuLjc1NjA0NTk0N2Y2ZWU1MTg0ZWJkMDg5YTVkNmZiMmNjMjhmNDU1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9u
cy5oCkBAIC0zMyw3ICszMyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSZXRy
aWV2ZVJlY29yZHNPcHRpb25zIHsKLSAgICBSZXRyaWV2ZVJlY29yZHNPcHRpb25zIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIHsgcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291cmNlT3JpZ2luLT5pc29sYXRlZENv
cHkoKSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIHNob3VsZFByb3Zp
ZGVSZXNwb25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBpc29sYXRlZENvcHko
KSBjb25zdCAmIHsgcmV0dXJuIHsgcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc291cmNlT3JpZ2luLT5pc29sYXRlZENvcHko
KSwgaWdub3JlU2VhcmNoLCBpZ25vcmVNZXRob2QsIGlnbm9yZVZhcnksIHNob3VsZFByb3ZpZGVS
ZXNwb25zZSB9OyB9CisgICAgUmV0cmlldmVSZWNvcmRzT3B0aW9ucyBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IFdURk1vdmUocmVxdWVzdCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoY3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSkuaXNvbGF0ZWRDb3B5KCksIHNvdXJjZU9yaWdpbi0+aXNv
bGF0ZWRDb3B5KCksIGlnbm9yZVNlYXJjaCwgaWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBzaG91
bGRQcm92aWRlUmVzcG9uc2UgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHJpZXZlUmVjb3Jkc09wdGlvbnM+IGRlY29kZShEZWNvZGVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA0NmZmN2NlY2QzZTIyMzI5ZDY3NWRl
MjVlMmU2YmQ3OWM1NGI5MTJjLi5iZDIwNGE5Yzc5ZjQ1MTRjZjkwMDNlY2UzNjZkYTM0Y2YxY2Vj
NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lk
IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luLCB1aQogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSByZXN1bHQudmFs
dWUoKS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdU
Rk1vdmUocmVzdWx0KS52YWx1ZSgpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgICAgICAgICB3b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCBy
ZXN1bHQgPSBXVEZNb3ZlKGlzb2xhdGVkUmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKS5yZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgV1RGTW92ZShyZXN1bHQpKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFdvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcgogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1
ZXN0SWRlbnRpZmllcjsKICAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFp
blRocmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS50aHJlYWQoKSB9LCBtYWluVGhy
ZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRp
b25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLnRocmVhZCgpIH0sIG1haW5UaHJl
YWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlv
bnMgPSBXVEZNb3ZlKG9wdGlvbnMpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAg
ICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24oY2FjaGVJZGVudGlm
aWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpLCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3
b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9y
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5kZWxldGVS
ZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDAxNmQxNzE3Mjg3NWQyYTUzOWM2YzJhMjk1ZThkNTJjNDY4NTE4NDAuLjk4MmU1YjU4
MzdmNWM1ZTUyODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDgg
QEAgc3RydWN0IExpc3RlZENoaWxkIHsKICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgRmlsZVN5
c3RlbTo6RmlsZVR5cGUgdHlwZTsKIAotICAgIExpc3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIHR5cGUgfTsgfQorICAgIExp
c3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBmaWxlbmFtZS5pc29s
YXRlZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTGlzdGVkQ2hpbGQgaXNvbGF0ZWRDb3B5KCkgJiYg
eyByZXR1cm4geyBXVEZNb3ZlKGZpbGVuYW1lKS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CiB9
OwogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJ
Z25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCkBAIC0yNTYsNyArMjU3
LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKIAogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBSZWYgeyBjb250ZXh0
IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZ1bGxQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBj
cm9zc1RocmVhZENvcHkoZGlyZWN0b3J5VmlydHVhbFBhdGgpXSgpIG11dGFibGUgewogICAgICAg
ICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0YShmdWxsUGF0
aCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4gPSBjcm9zc1Ro
cmVhZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9y
eVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4
dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobGlz
dGVkQ2hpbGRyZW4pKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0
aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoY29udGV4dCwgcHJvdGVjdGVkVGhpcywgV1RGTW92ZShs
aXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CiAgICAgICAgIH0pOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTM1NTBmYTdkOWExNTlmZTFmOWY3ZTc3NmUz
ZGRlNmZhNTI3ZDRmNy4uZDhmODU2NzRjZDExMGIzMTA5ZjZhOWU0OGY3OWM2ZDdmZjViNDNkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC00MiwxNCArNDIsMjEgQEAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUs
IFNlY3VyaXQKICAgICBBU1NFUlQoIWRhdGFiYXNlTmFtZS5pc051bGwoKSk7CiB9CiAKLUlEQkRh
dGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CitJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRl
ZENvcHkoKSBjb25zdCAmCiB7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlkZW50aWZpZXI7
Ci0KICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1lID0gbV9kYXRhYmFzZU5hbWUuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgaWRlbnRpZmllci5tX29yaWdpbiA9IG1fb3JpZ2luLmlzb2xhdGVkQ29w
eSgpOwogICAgIGlkZW50aWZpZXIubV9pc1RyYW5zaWVudCA9IG1faXNUcmFuc2llbnQ7CisgICAg
cmV0dXJuIGlkZW50aWZpZXI7Cit9CiAKK0lEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIGlkZW50aWZpZXI7CisgICAgaWRlbnRpZmllci5tX2RhdGFiYXNlTmFtZSA9IFdURk1vdmUo
bV9kYXRhYmFzZU5hbWUpLmlzb2xhdGVkQ29weSgpOworICAgIGlkZW50aWZpZXIubV9vcmlnaW4g
PSBXVEZNb3ZlKG1fb3JpZ2luKS5pc29sYXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1faXNU
cmFuc2llbnQgPSBtX2lzVHJhbnNpZW50OwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
SWRlbnRpZmllci5oCmluZGV4IGY4M2YxOTVhNTZkZWZkMmIzZjBlY2Q4ZTlkNjcxNGQyOTQwZDBh
MjIuLjI3MWRlZDRkZWU4Yjg4OGQzMWU0YzRjMTFlMWQxZmM4ODlkYmE2YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRp
Zmllci5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIElE
QkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgU2VjdXJpdHlP
cmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgbWFpbkZyYW1l
T3JpZ2luLCBib29sIGlzVHJhbnNpZW50ID0gZmFsc2UpOwogCi0gICAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBp
c29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpc29sYXRl
ZENvcHkoKSAmJjsKIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdl
dFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1
bHQuY3BwCmluZGV4IDU0NzlkNjFmMWYwM2E5ZjJmMmZlMzkzY2Y3MmRjMjk1MjJkNTRmNTIuLmFi
NTY3MjIzMWYyYmI0MjQzMmEyOWIyMDc0ZmEwYTA2N2JjMzQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtNTAsNyArNTAs
NyBAQCB2b2lkIElEQkdldFJlc3VsdDo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQkdldFJlc3VsdCYg
c291cmNlLCBJREJHZXRSZXN1bHQmIGRlc3RpbgogICAgIGRlc3RpbmF0aW9uLm1fcHJpbWFyeUtl
eURhdGEgPSBzb3VyY2UubV9wcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKTsKICAgICBkZXN0
aW5hdGlvbi5tX2tleVBhdGggPSBjcm9zc1RocmVhZENvcHkoc291cmNlLm1fa2V5UGF0aCk7CiAg
ICAgZGVzdGluYXRpb24ubV9pc0RlZmluZWQgPSBzb3VyY2UubV9pc0RlZmluZWQ7Ci0gICAgZGVz
dGluYXRpb24ubV9wcmVmZXRjaGVkUmVjb3JkcyA9IHNvdXJjZS5tX3ByZWZldGNoZWRSZWNvcmRz
Lmlzb2xhdGVkQ29weSgpOworICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBj
cm9zc1RocmVhZENvcHkoc291cmNlLm1fcHJlZmV0Y2hlZFJlY29yZHMpOwogfQogCiB2b2lkIElE
QkdldFJlc3VsdDo6c2V0VmFsdWUoSURCVmFsdWUmJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTg2N2Ix
YjdlNmQ2ZjE1NDllY2Q3MjYxMjdkY2M3Njk5NWE5ZDA2Li43NzNlNWIyZDNhYTVkMjhlYmViYTgz
NmY5NzcyYzg3ZDU0NjgyNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05MzIsNyArOTMyLDcgQEAgUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKElE
Qk9iamVjdFN0b3JlJgogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwg
b2JqZWN0IHN0b3JlIHJlY29yZHMgb3BlcmF0aW9uOiAlcyIsIGdldEFsbFJlY29yZHNEYXRhLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0Lmdl
dCgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RdIChjb25zdCBhdXRv
JiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVk
Q29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IFdURk1vdmUoZ2V0QWxsUmVjb3Jkc0RhdGEp
Lmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmdldEFsbFJlY29yZHNPblNlcnZlcihvcGVyYXRpb24sIGdldEFsbFJlY29yZHNEYXRhKTsK
ICAgICB9KSk7CiAKQEAgLTk1NCw3ICs5NTQsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSURCSW5kZXgmIGluZGV4LCBjb25zdAog
ICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBhbGwgaW5kZXggcmVjb3JkcyBv
cGVyYXRpb246ICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVz
dWx0KTsKLSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29y
ZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRp
b24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGdldEFsbFJlY29y
ZHNEYXRhID0gV1RGTW92ZShnZXRBbGxSZWNvcmRzRGF0YSkuaXNvbGF0ZWRDb3B5KCldIChhdXRv
JiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Z2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKG9wZXJhdGlvbiwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0pKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKaW5kZXggYzlkZDFkMDM2ZTdjMTk0YTljY2IxNDZjMDVhMDc2MzFhZDNk
ZGIzYy4uN2VmOWQwYTM4N2Y3MjdkODVlYzBkZWVmNmQzY2FlMGRlZDAxNThjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0zNDQsNyArMzQ0LDcgQEAgSURCRXJyb3IgTWVtb3J5T2Jq
ZWN0U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4JiBp
bmRleCkKIAogICAgICAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7CiAgICAgICAgICAgICBnZW5l
cmF0ZUluZGV4S2V5Rm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCBpbmRleEluZm8sIGpzVmFsdWUsIGlu
ZGV4S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKLSAgICAgICAgICAgIHJlc3VsdEluZGV4S2V5
ID0gaW5kZXhLZXkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgICAgICByZXN1bHRJbmRleEtleSA9
IFdURk1vdmUoaW5kZXhLZXkpLmlzb2xhdGVkQ29weSgpOwogICAgICAgICB9KTsKIAogICAgICAg
ICBpZiAoIXJlc3VsdEluZGV4S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCA5MjFhYTJiMGI4ODA5YjNhNGRjZjczMjE4OWRiOTA5YTQ2MGFiMThmLi5iNTNlOGJhOTYy
ZjZmYjc3MjIzZGNhM2JkNGU2MmI2MWI1OTdiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtMTg4Niw3ICsxODg2LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29yZChJREJPYmplY3RTdG9yZUluZm8mIG8K
IAogICAgICAgICBJbmRleEtleSBpbmRleEtleTsKICAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZv
clZhbHVlKGdsb2JhbE9iamVjdCwgaW5mbywganNWYWx1ZSwgaW5kZXhLZXksIG9iamVjdFN0b3Jl
SW5mby5rZXlQYXRoKCksIGtleSk7Ci0gICAgICAgIHJlc3VsdEluZGV4S2V5ID0gaW5kZXhLZXku
aXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIHJlc3VsdEluZGV4S2V5ID0gV1RGTW92ZShpbmRleEtl
eSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgfSk7CiAKICAgICBpZiAoIXJlc3VsdEluZGV4S2V5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKaW5kZXggZjRjNzVlMGUyN2E2OTA2
M2Q0NzZkY2NiOWRkNzhjNWM4ZGRhNjJhYS4uYzcxZDA3ZjY5YzNkYmI0NzBkNjExNzc2M2VkYmQ5
ZDg0MTAzNzY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCkBAIC0z
Niw3ICszNiw4IEBAIHN0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lv
biBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRlZENvcHkoKSwg
dmVyc2lvbiB9OyB9CisgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbiBpc29sYXRlZENvcHko
KSAmJiB7IHJldHVybiB7IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIHZlcnNpb24gfTsg
fQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU5LDkgKzYwLDQgQEAgc3RkOjpv
cHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uOjpkZWNvZGUoRGVjb2QKICAgICByZXR1cm4gaW5mbzsKIH0KIAotaW5saW5lIElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24gSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbjo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCB2ZXJzaW9uIH07
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDJlMGE1N2FjNjY3YjYy
Y2M2Y2ZiZGJlNGNmNmYxNTE4OTliMjE4YWIuLjE4ZWQ3ZTIxYjM1NTBkMzk5NDIyOGVlMGFhN2Rh
NDhlOTgxZjY0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAgSURCRXJyb3I6OklEQkVy
cm9yKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogfQogCi1JREJFcnJvciBJREJFcnJvcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gSURCRXJyb3IgeyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9
OwotfQotCiBTdHJpbmcgSURCRXJyb3I6Om5hbWUoKSBjb25zdAogewogICAgIGlmICghbV9jb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJy
b3IuaAppbmRleCBiMzBhZDM5MTc2ZjAzZmYwZDZjOTM5OGQ2YjNlZDE5Y2QyZTk5MjFkLi4zMjk2
NTZjZTlmNDI4ODdmM2QwYmY3MDhjOWIwYzYzYTkxNWUwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtNTQsNyArNTQs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jb2RlOyB9
CiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgSURCRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgSURCRXJy
b3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgbV9t
ZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBJREJFcnJvciBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiBJREJFcnJvciB7IG1fY29kZSwgV1RGTW92ZShtX21lc3NhZ2UpLmlzb2xhdGVk
Q29weSgpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBJREJFcnJvciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZv
LmNwcAppbmRleCAwMTVhY2Y3Mjc2OTQ1Mzc0YzRhZGI4YWQyNDM0YmEzYjc5OWFhZmRhLi5lNzFk
MmViZjIxYzRhZGZlZjI4YTJiZGFmYTFmZjg0YjNmN2YwMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcApA
QCAtNDUsMTEgKzQ1LDE2IEBAIElEQkluZGV4SW5mbzo6SURCSW5kZXhJbmZvKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwKIHsKIH0KIAotSURCSW5k
ZXhJbmZvIElEQkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0lEQkluZGV4SW5mbyBJ
REJJbmRleEluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBtX2lk
ZW50aWZpZXIsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBtX25hbWUuaXNvbGF0ZWRDb3B5KCks
IGNyb3NzVGhyZWFkQ29weShtX2tleVBhdGgpLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5IH07CiB9
CiAKK0lEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX29iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZSht
X25hbWUpLmlzb2xhdGVkQ29weSgpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX2tleVBhdGgp
KSwgbV91bmlxdWUsIG1fbXVsdGlFbnRyeSB9OworfQorCiAjaWYgIUxPR19ESVNBQkxFRAogCiBT
dHJpbmcgSURCSW5kZXhJbmZvOjpsb2dnaW5nU3RyaW5nKGludCBpbmRlbnQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJ
bmZvLmgKaW5kZXggOWYxZWI5YTBhMTAxNDQzOGNiMjM4NjNhYWNhMjE0YjdjZjQxYmNlNi4uYTEw
ZjhmNTJmMzQyMWExNzllMGRjYWQ5YWFiOTdmMmZjMWE4ZWRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaApAQCAt
MzUsNyArMzUsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCSW5kZXhJbmZvKCk7
CiAgICAgSURCSW5kZXhJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYsIGJvb2wgdW5p
cXVlLCBib29sIG11bHRpRW50cnkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCSW5kZXhJbmZv
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4SW5mbyBp
c29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JUIElEQkluZGV4SW5mbyBp
c29sYXRlZENvcHkoKSAmJjsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5m
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0
U3RvcmVJbmZvLmNwcAppbmRleCAxMGMxYTRjNTE1ZTJlYWVmODA5Mzk0MmJiMzZjNWQ4ZDUyMzRj
MGNjLi4xZThiOGRlYTQwYmY4YmQzNmJkMjcyM2U5MjAwMTA2MDZhZDU2MDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
T2JqZWN0U3RvcmVJbmZvLmNwcApAQCAtOTIsMTMgKzkyLDE3IEBAIElEQkluZGV4SW5mbyogSURC
T2JqZWN0U3RvcmVJbmZvOjppbmZvRm9yRXhpc3RpbmdJbmRleCh1aW50NjRfdCBpZGVudGlmaWVy
KQogICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCi1JREJPYmplY3RTdG9yZUluZm8g
SURCT2JqZWN0U3RvcmVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAorSURCT2JqZWN0U3RvcmVJ
bmZvIElEQk9iamVjdFN0b3JlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIElE
Qk9iamVjdFN0b3JlSW5mbyByZXN1bHQgPSB7IG1faWRlbnRpZmllciwgbV9uYW1lLmlzb2xhdGVk
Q29weSgpLCBjcm9zc1RocmVhZENvcHkobV9rZXlQYXRoKSwgbV9hdXRvSW5jcmVtZW50IH07Cisg
ICAgcmVzdWx0Lm1faW5kZXhNYXAgPSBjcm9zc1RocmVhZENvcHkobV9pbmRleE1hcCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KIAotICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX2luZGV4TWFw
KQotICAgICAgICByZXN1bHQubV9pbmRleE1hcC5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52
YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0KK0lEQk9iamVjdFN0b3JlSW5mbyBJREJPYmplY3RTdG9y
ZUluZm86Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgSURCT2JqZWN0U3RvcmVJbmZvIHJlc3Vs
dCA9IHsgbV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1fbmFtZSkuaXNvbGF0ZWRDb3B5KCksIGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKG1fa2V5UGF0aCkpLCBtX2F1dG9JbmNyZW1lbnQgfTsKKyAgICBy
ZXN1bHQubV9pbmRleE1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1faW5kZXhNYXApKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKaW5kZXggNDAz
ZmQ0MDU5ODZiYzVkOTI3YjRlNjNhZGYwYzk1ZmVmMWFlOTY5OS4uZTNhMDNiZjc1NjU4MzFhNzUw
ODM1OWQ1OGMyNmVhOTEyZTcxODFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaApAQCAtNDQs
NyArNDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbmFtZShjb25zdCBTdHJpbmcmIG5ld05h
bWUpIHsgbV9uYW1lID0gbmV3TmFtZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgSURCT2JqZWN0
U3RvcmVJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQk9i
amVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JU
IElEQk9iamVjdFN0b3JlSW5mbyBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIElEQkluZGV4SW5m
byBjcmVhdGVOZXdJbmRleCh1aW50NjRfdCBpbmRleElELCBjb25zdCBTdHJpbmcmIG5hbWUsIElE
QktleVBhdGgmJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAgICAgdm9pZCBhZGRF
eGlzdGluZ0luZGV4KGNvbnN0IElEQkluZGV4SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCmluZGV4
IDQ0MmMzMDNkMmE4NzRlMjk0M2VmN2FjNWY2MmZjZTM2MDBmMmU3NWEuLjI3MDdmNzE2MmY5ZGQw
YTMxOTA1YTI4NDRkNzA2YzQ2ZjIyMTMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlclNuYXBzaG90LmgKQEAgLTM3LDcg
KzM3LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25hcHNob3QgewogICAgICAgICBXZWJMb2Nr
TW9kZSBtb2RlIHsgV2ViTG9ja01vZGU6OkV4Y2x1c2l2ZSB9OwogICAgICAgICBTdHJpbmcgY2xp
ZW50SWQ7CiAKLSAgICAgICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IG5h
bWUuaXNvbGF0ZWRDb3B5KCksIG1vZGUsIGNsaWVudElkLmlzb2xhdGVkQ29weSgpIH07IH0KKyAg
ICAgICAgSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbmFtZS5pc29sYXRl
ZENvcHkoKSwgbW9kZSwgY2xpZW50SWQuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbmZv
IGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHko
KSwgbW9kZSwgV1RGTW92ZShjbGllbnRJZCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0IHsgZW5jb2RlciA8PCBuYW1lIDw8IG1vZGUgPDwgY2xpZW50SWQ7IH0KICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5mbz4gZGVjb2RlKERl
Y29kZXImKTsKQEAgLTQ2LDcgKzQ3LDggQEAgc3RydWN0IFdlYkxvY2tNYW5hZ2VyU25hcHNob3Qg
ewogICAgIFZlY3RvcjxJbmZvPiBoZWxkOwogICAgIFZlY3RvcjxJbmZvPiBwZW5kaW5nOwogCi0g
ICAgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7
IGNyb3NzVGhyZWFkQ29weShoZWxkKSwgY3Jvc3NUaHJlYWRDb3B5KHBlbmRpbmcpIH07IH0KKyAg
ICBXZWJMb2NrTWFuYWdlclNuYXBzaG90IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4g
eyBjcm9zc1RocmVhZENvcHkoaGVsZCksIGNyb3NzVGhyZWFkQ29weShwZW5kaW5nKSB9OyB9Cisg
ICAgV2ViTG9ja01hbmFnZXJTbmFwc2hvdCBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGhlbGQpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGVu
ZGluZykpIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0IHsgZW5jb2RlciA8PCBoZWxkIDw8IHBlbmRpbmc7IH0KICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJMb2NrTWFu
YWdlclNuYXBzaG90PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtRGVzY3JpcHRvci5oCmluZGV4IDFlZDZjZGU3
MjllZjkzNTc3MGJhOTYzN2QzYWZhNWYwMmE4ZDg2NGUuLjVkZTU0ZjhiMzAzZDI0Yzk4NmI0NWIx
ZTRjZDBmY2E5YTNiMDI5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW1EZXNjcmlwdG9yLmgKQEAgLTQyLDE2ICs0Miw4IEBAIHN0cnVj
dCBBdWRpb1BhcmFtRGVzY3JpcHRvciB7CiAgICAgZmxvYXQgbWF4VmFsdWUgeyAzLjQwMjgyMzVl
MzggfTsKICAgICBBdXRvbWF0aW9uUmF0ZSBhdXRvbWF0aW9uUmF0ZSB7IEF1dG9tYXRpb25SYXRl
OjpBUmF0ZSB9OwogCi0gICAgQXVkaW9QYXJhbURlc2NyaXB0b3IgaXNvbGF0ZWRDb3B5KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBuYW1lLmlzb2xhdGVkQ29w
eSgpLAotICAgICAgICAgICAgZGVmYXVsdFZhbHVlLAotICAgICAgICAgICAgbWluVmFsdWUsCi0g
ICAgICAgICAgICBtYXhWYWx1ZSwKLSAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlCi0gICAgICAg
IH07Ci0gICAgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9yIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyBuYW1lLmlzb2xhdGVkQ29weSgpLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVl
LCBtYXhWYWx1ZSwgYXV0b21hdGlvblJhdGUgfTsgfQorICAgIEF1ZGlvUGFyYW1EZXNjcmlwdG9y
IGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHko
KSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlIH07IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXgg
M2U3MzljMWNmOTA5ZWY3MjlmNWI5ZjBhOWFmYzhjMGZmZWMyY2FiOC4uOGE1MTMwZGI5NzBmYmY2
MmMxODQ1MjA5YTQwM2EyYTQ5MjFlNDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEx
Niw3ICsxMTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6
cmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwgUmVmPAogICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciwgIkEgcHJvY2Vzc29yIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5hbWUiX3Mg
fTsKIAotICAgIHRocmVhZCgpLm1lc3NhZ2luZ1Byb3h5KCkucG9zdFRhc2tUb0F1ZGlvV29ya2xl
dChbbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBhcmFtZXRlckRlc2NyaXB0b3JzID0gY3Jv
c3NUaHJlYWRDb3B5KHBhcmFtZXRlckRlc2NyaXB0b3JzKV0oQXVkaW9Xb3JrbGV0JiB3b3JrbGV0
KSBtdXRhYmxlIHsKKyAgICB0aHJlYWQoKS5tZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRp
b1dvcmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJE
ZXNjcmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29weShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlv
V29ya2xldCYgd29ya2xldCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIGlmIChhdXRvKiBhdWRpb0NvbnRleHQgPSB3b3JrbGV0LmF1ZGlvQ29udGV4
dCgpKQogICAgICAgICAgICAgYXVkaW9Db250ZXh0LT5hZGRBdWRpb1BhcmFtRGVzY3JpcHRvcnMo
bmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9ycykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IDZh
MGJlOTY0NDc3M2Q4MjM4MjM2ZDY3OTMyMTgxYTYzN2RkMjVhMzAuLjU0YWMwOGNkNDhkZjNjY2Nj
M2NlNGMwM2U3YzllZjMyMWIwMmFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKQEAgLTM3LDEwICszNywxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3Jr
bGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29u
c3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitBdWRpb1dvcmtsZXRUaHJlYWQ6OkF1
ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJv
eHksIFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IFdvcmtlck9yV29ya2xl
dFRocmVhZChwYXJhbWV0ZXJzLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX21l
c3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQotICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRl
cnMuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJz
KS5pc29sYXRlZENvcHkoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKaW5kZXggZjZlNzE1NTZjZTBjOTRmYWQ0
ZDI2OTc1MzI2ODY1ODIwNDEzNTI3Mi4uYjM0ZWU5OTg5OGY5ZGRkMWQwYTdiMzgyMGYxYjVjY2Ey
ZWY3ZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFRocmVhZC5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIEF1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5OwogCiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFRo
cmVhZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwg
Y29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIFJlZjxBdWRp
b1dvcmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2Fn
aW5nUHJveHksIFdvcmtsZXRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldFRocmVhZChtZXNzYWdpbmdQcm94eSwg
cGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRU
aHJlYWQobWVzc2FnaW5nUHJveHksIFdURk1vdmUocGFyYW1ldGVycykpKTsKICAgICB9CiAgICAg
fkF1ZGlvV29ya2xldFRocmVhZCgpOwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHkoKSB7IHJldHVybiBtX21l
c3NhZ2luZ1Byb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKKyAgICBB
dWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmLCBXb3JrbGV0UGFy
YW1ldGVycyYmKTsKIAogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBSZWY8VGhy
ZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAppbmRleCBiZWYwMzllMTVlODI1NjUwNzBm
MGUzN2Y5ZjMzOWY1YTRmYTEzNTI0Li4zZWFlOTYxMDQ4NzFlYWEyODliNTAwNDRhYjE3YjM5MTUy
MzgyMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRhc2suY3BwCkBAIC05NSw3ICs5NSw3IEBAIERhdGFiYXNlT3BlblRhc2s6OkRhdGFi
YXNlT3BlblRhc2soRGF0YWJhc2UmIGRhdGFiYXNlLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFi
CiAKIHZvaWQgRGF0YWJhc2VPcGVuVGFzazo6ZG9QZXJmb3JtVGFzaygpCiB7Ci0gICAgbV9yZXN1
bHQgPSBpc29sYXRlZENvcHkoZGF0YWJhc2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3NldFZl
cnNpb25Jbk5ld0RhdGFiYXNlKSk7CisgICAgbV9yZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoZGF0
YWJhc2UoKS5wZXJmb3JtT3BlbkFuZFZlcmlmeShtX3NldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSk7
CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggYWU2NjBjMDIxZjdhOGQy
MGQ0YzExYmE0YmQ5YTM0MmVmZmY3MzY0OS4uMDY3ZmQzOTEzOTBjODVkYzJkNDlkZjQwODAxNjJi
NDNjNGY0MjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzcyLDggKzM3MiwxMCBAQCBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKQogCiAgICAgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICBpbnQgc3RlcFJlc3VsdDsKLSAgICB3
aGlsZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKLSAg
ICAgICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSktPmlzb2xhdGVkQ29weSgpKTsKKyAgICB3
aGlsZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewor
ICAgICAgICBpZiAoYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFz
ZUlkZW50aWZpZXIoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSkKKyAgICAgICAgICAgIG9yaWdp
bnMuYXBwZW5kKFdURk1vdmUob3JpZ2luKS52YWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICB9
CiAgICAgb3JpZ2lucy5zaHJpbmtUb0ZpdCgpOwogCiAgICAgaWYgKHN0ZXBSZXN1bHQgIT0gU1FM
SVRFX0RPTkUpCkBAIC01MzcsNyArNTM5LDYgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
ID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKIAogICAgIGF1dG8gb3JpZ2luID0g
ZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKLQogICAgIGF1dG8qIG5hbWVNYXAgPSBtX29wZW5E
YXRhYmFzZU1hcC0+Z2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lTWFwKSB7CiAgICAgICAgIG5h
bWVNYXAgPSBuZXcgRGF0YWJhc2VOYW1lTWFwOwpAQCAtNTk4LDE0ICs1OTksMTMgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiBS
ZWY8T3JpZ2luTG9jaz4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2Rh
dGFiYXNlR3VhcmQgfTsKLSAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3JpZ2luLmRh
dGFiYXNlSWRlbnRpZmllcigpOwogCiAgICAgLy8gVGhlIG9yaWdpbkxvY2tNYXAgaXMgYWNjZXNz
ZWQgZnJvbSBtdWx0aXBsZSBEYXRhYmFzZVRocmVhZHMgc2luY2UKICAgICAvLyBkaWZmZXJlbnQg
c2NyaXB0IGNvbnRleHRzIGNhbiBiZSB3cml0aW5nIHRvIGRpZmZlcmVudCBkYXRhYmFzZXMgZnJv
bQogICAgIC8vIHRoZSBzYW1lIG9yaWdpbi4gSGVuY2UsIHRoZSBkYXRhYmFzZUlkZW50aWZpZXIg
a2V5IG5lZWRzIHRvIGJlIGFuCiAgICAgLy8gaXNvbGF0ZWQgY29weS4gQW4gaXNvbGF0ZWQgY29w
eSBnaXZlcyB1cyBhIHZhbHVlIHdob3NlIHJlZkNvdW50aW5nIGlzCiAgICAgLy8gdGhyZWFkLXNh
ZmUsIHNpbmNlIG91ciBjb3B5IGlzIGd1YXJkZWQgYnkgdGhlIG1fZGF0YWJhc2VHdWFyZCBtdXRl
eC4KLSAgICBkYXRhYmFzZUlkZW50aWZpZXIgPSBkYXRhYmFzZUlkZW50aWZpZXIuaXNvbGF0ZWRD
b3B5KCk7CisgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi5kYXRhYmFzZUlk
ZW50aWZpZXIoKS5pc29sYXRlZENvcHkoKTsKIAogICAgIHJldHVybiBtX29yaWdpbkxvY2tNYXAu
ZW5zdXJlKGRhdGFiYXNlSWRlbnRpZmllciwgWyZdIHsKICAgICAgICAgcmV0dXJuIE9yaWdpbkxv
Y2s6OmNyZWF0ZShvcmlnaW5QYXRoKG9yaWdpbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTMzNGM1NTFjNDRlNDE1MzFlMGQ1NjZmMjJiNTI5Njlk
NDYxMGQ4Mi4uYmExYjQwMjYxMmEzOTQxNjgzMzFiNjUxYTVkM2YyZDkxNTMwODkwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNjQsNyArMjY0LDcg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVj
dCgpCiAKICAgICBTdHJpbmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5z
dWJwcm90b2NvbCgpOwogICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hh
bm5lbC0+ZXh0ZW5zaW9ucygpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBzdWJwcm90b2NvbC5pc29sYXRlZENvcHkoKSwg
ZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBXVEZNb3ZlKHN1YnByb3RvY29sKS5p
c29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IFdURk1vdmUoZXh0ZW5zaW9ucykuaXNvbGF0ZWRD
b3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8
IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjFk
ODU0YzBjOWQzZWJlYjQ4YTE3NjhlZjc4NzAyMTA0MDhiYzZjYy4uMjVkMzI2ZTM5OGIzZmFlYzUz
MDg3NzlmMjc5NTYyNWM2YzdmMWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTk3MSw3ICs5NzEsNiBA
QCBkb20vRXZlbnROYW1lcy5jcHAKIGRvbS9FdmVudFBhdGguY3BwCiBkb20vRXZlbnRUYXJnZXQu
Y3BwCiBkb20vRXZlbnRUYXJnZXRDb25jcmV0ZS5jcHAKLWRvbS9FeGNlcHRpb25EYXRhLmNwcAog
ZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAogZG9tL0ZvY3VzRXZlbnQuY3BwCiBkb20vRm9y
bURhdGFFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxMjkwN2IwYjQyZDFjMmM2YjYzZGI4NWUyYjMyMDE5YmY5ODM4
NDE3Li42ODMyNDA1Y2U3OTc4ODQ5NDljYjM0MzAyM2I5MDAxYWJlZWI2M2Y1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDA1
Nyw3ICsxMDA1Nyw2IEBACiAJCTUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJl
Z2lzdHJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclJl
Z2lzdHJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDU5NTFGNEE2
ODYxMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUY2NDVBMDFGNEJGNTE2MDBCNTRERUQgLyogU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyogRXhjZXB0aW9u
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1RDIxRkVDREJDODAw
QjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFGNjQ1RDMxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjY0NURFMUZGNDU5NEIwMEI1NERFRCAvKiBN
ZXNzYWdlUG9ydElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVzc2FnZVBvcnRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MjU2Nyw3ICszMjU2Niw2IEBACiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50
VGFyZ2V0RmFjdG9yeS5pbiAqLywKIAkJCQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhj
ZXB0aW9uLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNv
ZGUuaCAqLywKLQkJCQk1MUY2NDVBMzFGNEMwMDBDMDBCNTRERUQgLyogRXhjZXB0aW9uRGF0YS5j
cHAgKi8sCiAJCQkJNTFGNjQ1NjAxRjQ1Mzk4QjAwQjU0REVEIC8qIEV4Y2VwdGlvbkRhdGEuaCAq
LywKIAkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCAqLywKIAkJ
CQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IGQ1OTZkYTQwOGI3ODdjMWRmNjYxOTM2Y2Mw
YzIxZTQ4Mzk5ZTJmODcuLjFiMmYyZmUwY2YzMTA3ZmJjYzk5YTQwYTA3NzIyZjkwN2IwNDhiYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKQEAgLTExNCwxMiArMTE0LDE0IEBAIEV4cGVjdGVk
PE1vZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gTW9kaWZ5SGVhZGVyc0FjdGlv
bjo6cGFyc2UoY29uc3QKICAgICByZXR1cm4gTW9kaWZ5SGVhZGVyc0FjdGlvbiB7IFdURk1vdmUo
KnJlcXVlc3RIZWFkZXJzKSwgV1RGTW92ZSgqcmVzcG9uc2VIZWFkZXJzKSB9OwogfQogCi1Nb2Rp
ZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0
CitNb2RpZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgp
IGNvbnN0ICYKIHsKLSAgICByZXR1cm4gewotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVxdWVz
dEhlYWRlcnMpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocmVzcG9uc2VIZWFkZXJzKQotICAg
IH07CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHJlcXVlc3RIZWFkZXJzKSwgY3Jvc3NU
aHJlYWRDb3B5KHJlc3BvbnNlSGVhZGVycykgfTsKK30KKworTW9kaWZ5SGVhZGVyc0FjdGlvbiBN
b2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSksIGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKHJlc3BvbnNlSGVhZGVycykpIH07CiB9CiAKIGJvb2wgTW9kaWZ5SGVhZGVyc0FjdGlv
bjo6b3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJiBvdGhlcikgY29uc3QKQEAg
LTIyMiwxMSArMjI0LDE0IEBAIGF1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVy
SW5mbzo6cGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmIGluZm9WYWx1ZSkKICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTW9kaWZ5SGVhZGVyc0ludmFs
aWRPcGVyYXRpb24pOwogfQogCi1hdXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRl
ckluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IE1vZGlmeUhlYWRlckluZm8KK2F1dG8gTW9k
aWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiAtPiBNb2RpZnlIZWFkZXJJbmZvCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KG9wZXJhdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShv
cGVyYXRpb24pIH07Cit9CisKK2F1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVy
SW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gTW9kaWZ5SGVhZGVySW5mbworeworICAgIHJldHVy
biB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9wZXJhdGlvbikpIH07CiB9CiAKIGJvb2wgTW9k
aWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6b3BlcmF0b3I9PShjb25zdCBNb2Rp
ZnlIZWFkZXJJbmZvJiBvdGhlcikgY29uc3QKQEAgLTMxNCwxMSArMzE5LDE0IEBAIEV4cGVjdGVk
PFJlZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IFJlZGlyZWN0QWN0aW9uOjpwYXJzZShj
b25zdCBKU09OOjpPYmplCiAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNp
b25FcnJvcjo6SlNPTlJlZGlyZWN0SW52YWxpZFR5cGUpOwogfQogCi1SZWRpcmVjdEFjdGlvbiBS
ZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1JlZGlyZWN0QWN0aW9uIFJlZGly
ZWN0QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KGFjdGlvbikKLSAgICB9OworICAgIHJldHVybiB7IGNyb3NzVGhy
ZWFkQ29weShhY3Rpb24pIH07Cit9CisKK1JlZGlyZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjpp
c29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGFjdGlvbikpIH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246Om9wZXJhdG9yPT0oY29uc3Qg
UmVkaXJlY3RBY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNDMyLDE4ICs0NDAsMTYgQEAgYXV0byBS
ZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmpl
Y3QmIHRyYW5zZm9ybSkgLT4KICAgICByZXR1cm4gYWN0aW9uOwogfQogCi1hdXRvIFJlZGlyZWN0
QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFVSTFRy
YW5zZm9ybUFjdGlvbgorYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpp
c29sYXRlZENvcHkoKSBjb25zdCAmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgogewotICAgIHJldHVy
biB7Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShmcmFnbWVudCksCi0gICAgICAgIGNyb3NzVGhy
ZWFkQ29weShob3N0KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHBhc3N3b3JkKSwKLSAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KHBhdGgpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkocG9ydCks
Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShxdWVyeVRyYW5zZm9ybSksCi0gICAgICAgIGNyb3Nz
VGhyZWFkQ29weShzY2hlbWUpLAotICAgICAgICBjcm9zc1RocmVhZENvcHkodXNlcm5hbWUpCi0g
ICAgfTsKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZnJhZ21lbnQpLCBjcm9zc1RocmVh
ZENvcHkoaG9zdCksIGNyb3NzVGhyZWFkQ29weShwYXNzd29yZCksIGNyb3NzVGhyZWFkQ29weShw
YXRoKSwgY3Jvc3NUaHJlYWRDb3B5KHBvcnQpLCBjcm9zc1RocmVhZENvcHkocXVlcnlUcmFuc2Zv
cm0pLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoc2NoZW1lKSwgY3Jvc3NUaHJlYWRDb3B5KHVz
ZXJuYW1lKSB9OworfQorCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246
Omlzb2xhdGVkQ29weSgpICYmIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgoreworICAgIHJldHVybiB7
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZyYWdtZW50KSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGhvc3QpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGFzc3dvcmQpKSwgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUocGF0aCkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwb3J0KSksCisg
ICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHF1ZXJ5VHJhbnNmb3JtKSksIGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHNjaGVtZSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh1c2VybmFt
ZSkpIH07CiB9CiAKIGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6b3Bl
cmF0b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mIG90aGVyKSBjb25zdApAQCAtNjk5LDEy
ICs3MDUsMTQgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVy
eVRyYW5zZm9ybTo6YXBwbHlUb1VSTChVUkwmIHVybCkgY28KICAgICB1cmwuc2V0UXVlcnkodHJh
bnNmb3JtZWRRdWVyeSk7CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFj
dGlvbjo6UXVlcnlUcmFuc2Zvcm06Omlzb2xhdGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5VHJhbnNm
b3JtCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNm
b3JtOjppc29sYXRlZENvcHkoKSBjb25zdCAmIC0+IFF1ZXJ5VHJhbnNmb3JtCiB7Ci0gICAgcmV0
dXJuIHsKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGFkZE9yUmVwbGFjZVBhcmFtcyksCi0gICAg
ICAgIGNyb3NzVGhyZWFkQ29weShyZW1vdmVQYXJhbXMpCi0gICAgfTsKKyAgICByZXR1cm4geyBj
cm9zc1RocmVhZENvcHkoYWRkT3JSZXBsYWNlUGFyYW1zKSwgY3Jvc3NUaHJlYWRDb3B5KHJlbW92
ZVBhcmFtcykgfTsKK30KKworYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9u
OjpRdWVyeVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgJiYgLT4gUXVlcnlUcmFuc2Zvcm0KK3sK
KyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShhZGRPclJlcGxhY2VQYXJhbXMp
KSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVtb3ZlUGFyYW1zKSkgfTsKIH0KIAogYm9vbCBS
ZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6b3BlcmF0
b3I9PShjb25zdCBRdWVyeVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0CkBAIC03NzksMTUgKzc4Nyw2
IEBAIGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zv
cm06OlF1ZXJ5S2V5VmFsdWU6OnBhcnNlKGNvCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGtleSks
IHJlcGxhY2VPbmx5LCBXVEZNb3ZlKHZhbHVlKSB9IH07CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rp
b246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Omlz
b2xhdGVkQ29weSgpIGNvbnN0IC0+IFF1ZXJ5S2V5VmFsdWUKLXsKLSAgICByZXR1cm4gewotICAg
ICAgICBjcm9zc1RocmVhZENvcHkoa2V5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHJlcGxh
Y2VPbmx5KSwKLSAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHZhbHVlKQotICAgIH07Ci19Ci0KIGJv
b2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1
ZXJ5S2V5VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYgb3RoZXIpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG90aGVyLmtleSA9PSB0aGlzLT5rZXkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5o
CmluZGV4IDQ2ZTA1ODBjOWM2ZTU0MGYzYjhiMTA5NjA5MGM1N2FiMWIwM2ZjMDkuLmIwY2MwZWQx
ZjVjODE0MzFjYTZiNGU5ZjgxNzY1MzZmMDJkNzgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaApA
QCAtNTAsOCArNTAsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0aW9uV2l0aG91
dE1ldGFkYXRhIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRo
U3RyaW5nTWV0YWRhdGEgewotICAgIGNvbnN0IFN0cmluZyBzdHJpbmc7Ci0gICAgVCBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHsgc3RyaW5nLmlzb2xhdGVkQ29weSgpIH0gfTsgfQor
ICAgIFN0cmluZyBzdHJpbmc7CisgICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJu
IHsgeyBzdHJpbmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9CisgICAgVCBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IHsgV1RGTW92ZShzdHJpbmcpLmlzb2xhdGVkQ29weSgpIH0gfTsgfQogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEmIG90aGVyKSBj
b25zdCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5nOyB9CiAgICAgdm9pZCBz
ZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0IHsgc2VyaWFsaXplU3RyaW5n
KHZlY3Rvciwgc3RyaW5nKTsgfQogICAgIHN0YXRpYyBUIGRlc2VyaWFsaXplKFNwYW48Y29uc3Qg
dWludDhfdD4gc3BhbikgeyByZXR1cm4geyB7IGRlc2VyaWFsaXplU3RyaW5nKHNwYW4pIH0gfTsg
fQpAQCAtNzEsMjcgKzcyLDMxIEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJz
QWN0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFkZXI7CiAgICAgICAgICAgICBTdHJpbmcg
dmFsdWU7CiAKLSAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiB7IGhlYWRlci5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkg
fTsgfQorICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07
IH0KKyAgICAgICAgICAgIEFwcGVuZE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVy
biB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZSh2YWx1ZSkuaXNvbGF0
ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFwcGVuZE9w
ZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlzLT5oZWFk
ZXIgJiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7IH0KICAgICAgICAgfTsKICAgICAgICAg
c3RydWN0IFNldE9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyOwogICAgICAg
ICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFNldE9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSBj
b25zdCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENv
cHkoKSB9OyB9CisgICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyBy
ZXR1cm4geyBXVEZNb3ZlKGhlYWRlcikuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUodmFsdWUpLmlz
b2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXRP
cGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVh
ZGVyICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CiAgICAgICAgIH07CiAgICAgICAg
IHN0cnVjdCBSZW1vdmVPcGVyYXRpb24gewogICAgICAgICAgICAgU3RyaW5nIGhlYWRlcjsKIAot
ICAgICAgICAgICAgUmVtb3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlv
biBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgp
IH07IH0KKyAgICAgICAgICAgIFJlbW92ZU9wZXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJl
dHVybiB7IFdURk1vdmUoaGVhZGVyKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVtb3ZlT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gb3RoZXIuaGVhZGVyID09IHRoaXMtPmhlYWRlcjsgfQogICAgICAgICB9OwogICAgICAgICB1
c2luZyBPcGVyYXRpb25WYXJpYW50ID0gc3RkOjp2YXJpYW50PEFwcGVuZE9wZXJhdGlvbiwgU2V0
T3BlcmF0aW9uLCBSZW1vdmVPcGVyYXRpb24+OwogICAgICAgICBPcGVyYXRpb25WYXJpYW50IG9w
ZXJhdGlvbjsKIAogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVySW5mbywgc3Rk
OjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwotICAgICAgICBNb2RpZnlI
ZWFkZXJJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBNb2RpZnlIZWFkZXJJbmZv
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIE1vZGlmeUhlYWRlckluZm8gaXNvbGF0
ZWRDb3B5KCkgJiY7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJJ
bmZvJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNv
bnN0OwogICAgICAgICBzdGF0aWMgTW9kaWZ5SGVhZGVySW5mbyBkZXNlcmlhbGl6ZShTcGFuPGNv
bnN0IHVpbnQ4X3Q+KTsKQEAgLTExNSw3ICsxMjAsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQg
TW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGhhc2hUYWJsZVR5cGUgPT0gSGFzaFRhYmxlVHlwZTo6RGVsZXRlZDsgfQogCiAgICAg
c3RhdGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24sIHN0ZDo6ZXJyb3JfY29kZT4gcGFy
c2UoY29uc3QgSlNPTjo6T2JqZWN0Jik7Ci0gICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICY7CisgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiYpIGNvbnN0OwogICAgIHZv
aWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgIHN0YXRpYyBNb2RpZnlI
ZWFkZXJzQWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTI3LDEz
ICsxMzMsMTUgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICBz
dHJ1Y3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiB7CiAgICAgICAgIFN0cmluZyBleHRlbnNpb25QYXRo
OwogCi0gICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4geyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgRXh0ZW5z
aW9uUGF0aEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgZXh0ZW5zaW9u
UGF0aC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNv
bGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGV4dGVuc2lvblBhdGgpLmlzb2xhdGVk
Q29weSgpIH07IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4dGVuc2lvblBhdGhB
Y3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5leHRlbnNpb25QYXRoID09IHRoaXMt
PmV4dGVuc2lvblBhdGg7IH0KICAgICB9OwogICAgIHN0cnVjdCBSZWdleFN1YnN0aXR1dGlvbkFj
dGlvbiB7CiAgICAgICAgIFN0cmluZyByZWdleFN1YnN0aXR1dGlvbjsKIAotICAgICAgICBSZWdl
eFN1YnN0aXR1dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHJlZ2V4
U3Vic3RpdHV0aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJzdGl0dXRp
b25BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHJlZ2V4U3Vic3RpdHV0
aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24g
aXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHJlZ2V4U3Vic3RpdHV0aW9uKS5p
c29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdleFN1
YnN0aXR1dGlvbkFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnJlZ2V4U3Vic3Rp
dHV0aW9uID09IHRoaXMtPnJlZ2V4U3Vic3RpdHV0aW9uOyB9CiAgICAgfTsKICAgICBzdHJ1Y3Qg
VVJMVHJhbnNmb3JtQWN0aW9uIHsKQEAgLTE0NCw3ICsxNTIsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9F
WFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKIAog
ICAgICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeUtleVZhbHVlLCBzdGQ6OmVycm9y
X2NvZGU+IHBhcnNlKGNvbnN0IEpTT046OlZhbHVlJik7Ci0gICAgICAgICAgICAgICAgUXVlcnlL
ZXlWYWx1ZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgICAgICAgICBRdWVyeUtleVZh
bHVlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBrZXkuaXNvbGF0ZWRDb3B5KCks
IHJlcGxhY2VPbmx5LCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgICAgICAgICAg
UXVlcnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoa2V5KS5p
c29sYXRlZENvcHkoKSwgcmVwbGFjZU9ubHksIFdURk1vdmUodmFsdWUpLmlzb2xhdGVkQ29weSgp
IH07IH0KICAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1
ZSYpIGNvbnN0OwogICAgICAgICAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90
PiYpIGNvbnN0OwogICAgICAgICAgICAgICAgIHN0YXRpYyBRdWVyeUtleVZhbHVlIGRlc2VyaWFs
aXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTU1LDcgKzE2NCw4IEBAIHN0cnVjdCBXRUJD
T1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBy
ZW1vdmVQYXJhbXM7CiAKICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeVRyYW5zZm9y
bSwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICAgICAg
ICAgIFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICAgICAgUXVl
cnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgICAgIFF1ZXJ5VHJh
bnNmb3JtIGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFF1ZXJ5VHJhbnNmb3JtJikgY29uc3Q7CiAgICAgICAgICAgICB2b2lkIHNlcmlhbGl6ZShW
ZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRpYyBRdWVyeVRyYW5zZm9y
bSBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE3NCw3ICsxODQsOCBAQCBz
dHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICBTdHJpbmcgdXNl
cm5hbWU7CiAKICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFVSTFRyYW5zZm9ybUFjdGlvbiwgc3Rk
OjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKLSAgICAgICAgVVJMVHJh
bnNmb3JtQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBVUkxUcmFuc2Zvcm1B
Y3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICAgICAgVVJMVHJhbnNmb3JtQWN0aW9u
IGlzb2xhdGVkQ29weSgpICYmOwogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMVHJh
bnNmb3JtQWN0aW9uJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50
OF90PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgVVJMVHJhbnNmb3JtQWN0aW9uIGRlc2VyaWFs
aXplKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTg0LDcgKzE5NSw4IEBAIHN0cnVjdCBXRUJD
T1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgc3RydWN0IFVSTEFjdGlvbiB7CiAgICAg
ICAgIFN0cmluZyB1cmw7CiAKLSAgICAgICAgVVJMQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgdXJsLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgVVJMQWN0aW9uIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsgfQor
ICAgICAgICBVUkxBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHVy
bCkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
QWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIudXJsID09IHRoaXMtPnVybDsgfQog
ICAgIH07CiAKQEAgLTIwMyw3ICsyMTUsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJl
Y3RBY3Rpb24gewogICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBoYXNo
VGFibGVUeXBlID09IEhhc2hUYWJsZVR5cGU6OkRlbGV0ZWQ7IH0KIAogICAgIHN0YXRpYyBFeHBl
Y3RlZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpP
YmplY3QmKTsKLSAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBS
ZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFJlZGlyZWN0QWN0aW9u
IGlzb2xhdGVkQ29weSgpICYmOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWRpcmVjdEFj
dGlvbiYpIGNvbnN0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0
OwogICAgIHN0YXRpYyBSZWRpcmVjdEFjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4
X3Q+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IGQ3MTI2OTc3ZjYxMGRmYjExZTQ0
YmVlNzI0OGY3YzNiOGMwNDkwMzMuLmNmZWJmNWMzMDc4YTk0MWQxOWM3OWEyOTJjNDcwYzllYmJm
MjgyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0
YXRpYyBib29sIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMs
IFVuaXZlcnNhbEFjdGlvblNldCYmCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENv
bnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNP
TiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewogI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgY2FsbE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBydWxlSlNP
Ti5pc29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBwYXJzZWRSdWxlTGlzdC5pc29sYXRl
ZENvcHkoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVKU09OID0gcnVsZUpTT04uaXNv
bGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gY3Jvc3NUaHJlYWRDb3B5KHBhcnNlZFJ1bGVM
aXN0KV0gewogICAgICAgICBBU1NFUlQocGFyc2VSdWxlTGlzdChydWxlSlNPTikudmFsdWUoKSA9
PSBwYXJzZWRSdWxlTGlzdCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAK
aW5kZXggYjMzMzlmZjY0NzRjNTdhZmU0ZDEzY2JmMDM0ZDRiNTgyZjQ0OGIwNC4uODgyNDAyYzdi
ODUzYzFlNWJjNTdmZTZhZTdkNTM3YjA5NmNmZjViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAK
QEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9j
b2RlPiBsb2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYgogICAgIGlmIChhdXRv
IGVycm9yID0gY2hlY2tDb25kaXRpb24oImlmLWZyYW1lLXVybCJfcywgZ2V0U3RyaW5nTGlzdCwg
QWN0aW9uQ29uZGl0aW9uOjpJZkZyYW1lVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGVycm9yKTsKIAorICAgIHRyaWdnZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgIHJldHVybiB0
cmlnZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKaW5kZXggM2I0ZmEzMzkwMTMwMDdmMzU0Mjc4
OGEyNDU5NTI4NTE3MGIzNTMyMy4uNjJlNGNlOGQ4NDdiNjY0NDAwMGE2NGI0OGIyNDZhMzdiMmZi
ODcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcApAQCAtOTUsMjMgKzk1LDI2IEBAIHNpemVfdCBEZXNl
cmlhbGl6ZWRBY3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzZXJp
YWxpemVkQWN0aW9uCiAgICAgcmV0dXJuIDEgKyBWYXJpYW50RGVzZXJpYWxpemVyPEFjdGlvbkRh
dGE+OjpzZXJpYWxpemVkTGVuZ3RoKHNlcmlhbGl6ZWRBY3Rpb25zLnN1YnNwYW4obG9jYXRpb24g
KyAxKSwgc2VyaWFsaXplZEFjdGlvbnNbbG9jYXRpb25dKTsKIH0KIAotVHJpZ2dlciBUcmlnZ2Vy
Ojppc29sYXRlZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENvcHkoKSBj
b25zdCAmCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29weSgp
LAotICAgICAgICB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCi0gICAgICAgIHRvcFVSTEZpbHRl
cklzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgZnJhbWVVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUs
Ci0gICAgICAgIGZsYWdzLAotICAgICAgICBjb25kaXRpb25zLmlzb2xhdGVkQ29weSgpCi0gICAg
fTsKKyAgICByZXR1cm4geyB1cmxGaWx0ZXIuaXNvbGF0ZWRDb3B5KCksIHVybEZpbHRlcklzQ2Fz
ZVNlbnNpdGl2ZSwgdG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmcmFtZVVSTEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSwgZmxhZ3MsIGNyb3NzVGhyZWFkQ29weShjb25kaXRpb25zKSB9OwogfQog
Ci1BY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAorVHJpZ2dlciBUcmlnZ2VyOjpp
c29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUodXJsRmlsdGVyKS5pc29s
YXRlZENvcHkoKSwgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCB0b3BVUkxGaWx0ZXJJc0Nhc2VT
ZW5zaXRpdmUsIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBmbGFncywgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUoY29uZGl0aW9ucykpIH07Cit9CisKK0FjdGlvbiBBY3Rpb246Omlzb2xh
dGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkobV9kYXRh
KSB9OwogfQogCitBY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVy
biB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZGF0YSkpIH07Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKaW5kZXggN2UzOGQwYTJmNTQzNGU1YzlhZjQzZDUy
ZmExOTAxZDQ3Yzg5MjdlMy4uNzg3ZGJkNzA1NDQzYWI1MDIyNTRjMDJlZWE4ZGM4NzE1NmRhY2E0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUnVsZS5oCkBAIC00Nyw5ICs0NywxMCBAQCBzdHJ1Y3QgVHJpZ2dlciB7CiAg
ICAgUmVzb3VyY2VGbGFncyBmbGFncyB7IDAgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb25kaXRp
b25zOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAg
V0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHkoKSAmJjsKICAgICAKLSAgICB+VHJp
Z2dlcigpCisgICAgdm9pZCBjaGVja1ZhbGlkaXR5KCkKICAgICB7CiAgICAgICAgIGF1dG8gYWN0
aW9uQ29uZGl0aW9uID0gc3RhdGljX2Nhc3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFncyAmIEFjdGlv
bkNvbmRpdGlvbk1hc2spOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFjdGlvbkNvbmRpdGlvbiwg
Y29uZGl0aW9ucy5pc0VtcHR5KCkgPT0gKGFjdGlvbkNvbmRpdGlvbiA9PSBBY3Rpb25Db25kaXRp
b246Ok5vbmUpKTsKQEAgLTEzMSwxMCArMTMyLDExIEBAIHN0cnVjdCBBY3Rpb24gewogCiAgICAg
Y29uc3QgQWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdFQkNPUkVfRVhQT1JU
IEFjdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBBY3Rpb25E
YXRhIG1fZGF0YTsKKyAgICBBY3Rpb25EYXRhIG1fZGF0YTsKIH07CiAKIHN0cnVjdCBEZXNlcmlh
bGl6ZWRBY3Rpb24gOiBwdWJsaWMgQWN0aW9uIHsKQEAgLTE1OCwxOCArMTYwLDE2IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBUcmlnZ2VyJiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2Vy
OyB9CiAgICAgY29uc3QgQWN0aW9uJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsg
fQogCi0gICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rpb24uaXNv
bGF0ZWRDb3B5KCkgfTsKLSAgICB9CisgICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rp
b24uaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIENvbnRlbnRFeHRlbnNpb25SdWxlIGlzb2xhdGVk
Q29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZShtX3RyaWdnZXIpLmlzb2xhdGVkQ29weSgpLCBX
VEZNb3ZlKG1fYWN0aW9uKS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3RyaWdnZXIgPT0gb3RoZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09IG90aGVy
Lm1fYWN0aW9uOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBUcmlnZ2VyIG1fdHJpZ2dl
cjsKLSAgICBjb25zdCBBY3Rpb24gbV9hY3Rpb247CisgICAgVHJpZ2dlciBtX3RyaWdnZXI7Cisg
ICAgQWN0aW9uIG1fYWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaAppbmRleCBlMWU3YWRiOTg2Y2FhZDY3MjE1
OWIxZTNjMjgwYTg5ZDdhYzE3OTBmLi4yMWYzYzFmYjMwNzYyNmNmNWI2YzU0NjdlZjQyYTcwYTRj
MzdiYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0zOSwyNyArMzksMTggQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsg
fQogICAgIFN0cmluZyYmIHJlbGVhc2VNZXNzYWdlKCkgeyByZXR1cm4gV1RGTW92ZShtX21lc3Nh
Z2UpOyB9CiAKLSAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9
OwotICAgIH0KKyAgICBFeGNlcHRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiBF
eGNlcHRpb24geyBtX2NvZGUsIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRXhj
ZXB0aW9uIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgV1RG
TW92ZShtX21lc3NhZ2UpLmlzb2xhdGVkQ29weSgpIH07IH0KIAogcHJpdmF0ZToKICAgICBFeGNl
cHRpb25Db2RlIG1fY29kZTsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwogfTsKIAotRXhjZXB0aW9u
IGlzb2xhdGVkQ29weShFeGNlcHRpb24mJik7Ci0KIGlubGluZSBFeGNlcHRpb246OkV4Y2VwdGlv
bihFeGNlcHRpb25Db2RlIGNvZGUsIFN0cmluZyBtZXNzYWdlKQogICAgIDogbV9jb2RlIHsgY29k
ZSB9CiAgICAgLCBtX21lc3NhZ2UgeyBXVEZNb3ZlKG1lc3NhZ2UpIH0KIHsKIH0KIAotaW5saW5l
IEV4Y2VwdGlvbiBpc29sYXRlZENvcHkoRXhjZXB0aW9uJiYgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IHZhbHVlLmNvZGUoKSwgdmFsdWUucmVsZWFzZU1lc3NhZ2UoKS5pc29sYXRl
ZENvcHkoKSB9OwotfQotCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXhjZXB0aW9uRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZjE2YzMy
NTg1ZTRhODFkNmE4NTcyNDIxYmFiYWM3OGI0MjQ5ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkRhdGEu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotRXhjZXB0aW9uRGF0YSBFeGNlcHRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25z
dAotewotICAgIEV4Y2VwdGlvbkRhdGEgcmVzdWx0OwotICAgIHJlc3VsdC5jb2RlID0gY29kZTsK
LSAgICByZXN1bHQubWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkRhdGEuaAppbmRleCBmYzc5OGIzNjRkM2E3OGY3MWEzYzA5OWFkOWVkZmViMjFjMDQ0NmFk
Li45ODUzMzc2ZjFjNGRkY2ZkMWE1MWFkNGFlYWM5ZDA2NGVlOTlmNTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FeGNlcHRpb25EYXRhLmgKQEAgLTM0LDcgKzM0LDggQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGEg
ewogICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKICAgICBTdHJpbmcgbWVzc2FnZTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgRXhj
ZXB0aW9uRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY29kZSwgbWVzc2Fn
ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgRXhjZXB0aW9uRGF0YSBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiB7IGNvZGUsIFdURk1vdmUobWVzc2FnZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4
IGJiZmQ5NjY4NTAxNjMxZjUxMjJiOTQwZDliMDAwNDIyZTk5ZWQwNWMuLjFhMTliMGVlOWEyYTQ1
MmJmNTc3NDBhMmFiZmRiZGRiYzIzMzhhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBA
IC05MCw4ICs5MCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+
IGlzb2xhdGVkQ29weShFeGNlcHRpb25Pcjx2b2lkPiYmKTsKLQogdGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihF
eGNlcHRpb24mJiBleGNlcHRpb24pCiAgICAgOiBtX3ZhbHVlKG1ha2VVbmV4cGVjdGVkKFdURk1v
dmUoZXhjZXB0aW9uKSkpCiB7CkBAIC0xOTMsMTMgKzE5MSw2IEBAIGlubGluZSBFeGNlcHRpb24g
RXhjZXB0aW9uT3I8dm9pZD46OnJlbGVhc2VFeGNlcHRpb24oKQogICAgIHJldHVybiBXVEZNb3Zl
KG1fdmFsdWUuZXJyb3IoKSk7CiB9CiAKLWlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRl
ZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4mJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaGFzRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBpc29sYXRlZENvcHkodmFsdWUucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKLSAgICByZXR1cm4geyB9OwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIGNvbnN0ZXhwciBib29sIElzRXhjZXB0aW9uT3IgPSBXVEY6OklzVGVtcGxhdGU8c3RkOjpk
ZWNheV90PFQ+LCBFeGNlcHRpb25Pcj46OnZhbHVlOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
Ym9vbCBpc0V4Y2VwdGlvbk9yID0gSXNFeGNlcHRpb25PcjxUPj4gc3RydWN0IFR5cGVPckV4Y2Vw
dGlvbk9yVW5kZXJseWluZ1R5cGVJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJl
Y3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDk4NWY3YTYyZjBjMWYzOTc1NTgyZWIzZjli
OTg5NzUxNTYxNTY2NzcuLmU1YWEyNGVhMWY5ZDJhNzg2ZDdiZTZkYzNkNDE0MWQ5ZmQxOTNhM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5j
cHAKQEAgLTQ0LDEwICs0NCw4IEBAIHN0cnVjdCBGaWxlSW5mb3JtYXRpb24gewogICAgIFN0cmlu
ZyByZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogCi0gICAgRmlsZUluZm9y
bWF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gRmlsZUlu
Zm9ybWF0aW9uIHsgcGF0aC5pc29sYXRlZENvcHkoKSwgcmVsYXRpdmVQYXRoLmlzb2xhdGVkQ29w
eSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KKyAgICBGaWxlSW5mb3Jt
YXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5
KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5
KCkgfTsgfQorICAgIEZpbGVJbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7
IFdURk1vdmUocGF0aCkuaXNvbGF0ZWRDb3B5KCksIHJlbGF0aXZlUGF0aC5pc29sYXRlZENvcHko
KSwgV1RGTW92ZShkaXNwbGF5TmFtZSkuaXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAogc3RhdGlj
IHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiYgZmlsZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBlYTdkZmFjZjYyYjc4MjU1OWQ2
NWUzYmZiNmIzZDBjY2RmZTI1MjFjLi5hMjkwNmQ3Y2U3YTY1ZTFhYzRjZWFmOGU2NDI2ZTFkMDEz
NDY5ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTQ5NSwxMyAr
NDk1LDEzIEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlc1dpdGhJbWFn
ZVRyYW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmZpbGVzQ2hvc2VuKHBhdGhzLCByZXBsYWNlbWVudFBhdGhzKTsKICAgICB9OwogCi0gICAgc2hh
cmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdU
Rk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwgdHJhbnNjb2RpbmdQYXRocyA9IHRyYW5zY29kaW5nUGF0
aHMuaXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEkuaXNvbGF0
ZWRDb3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNpb24uaXNv
bGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVl
KCkuZGlzcGF0Y2goW2NhbGxGaWxlc0Nob3NlbiA9IFdURk1vdmUoY2FsbEZpbGVzQ2hvc2VuKSwg
dHJhbnNjb2RpbmdQYXRocyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRyYW5zY29kaW5nUGF0
aHMpKSwgdHJhbnNjb2RpbmdVVEkgPSBXVEZNb3ZlKHRyYW5zY29kaW5nVVRJKS5pc29sYXRlZENv
cHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNpb24gPSBXVEZNb3ZlKHRyYW5zY29kaW5nRXh0ZW5zaW9u
KS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICAgICAgYXV0byByZXBsYWNlbWVudFBhdGhzID0gdHJhbnNjb2RlSW1h
Z2VzKHRyYW5zY29kaW5nUGF0aHMsIHRyYW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4dGVuc2lv
bik7CiAgICAgICAgIEFTU0VSVCh0cmFuc2NvZGluZ1BhdGhzLnNpemUoKSA9PSByZXBsYWNlbWVu
dFBhdGhzLnNpemUoKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxs
RmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3NlbiksIHJlcGxhY2VtZW50UGF0aHMg
PSByZXBsYWNlbWVudFBhdGhzLmlzb2xhdGVkQ29weSgpXSgpIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsRmlsZXNDaG9zZW4gPSBXVEZNb3ZlKGNhbGxGaWxlc0Nob3Nl
biksIHJlcGxhY2VtZW50UGF0aHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXBsYWNlbWVu
dFBhdGhzKSldIHsKICAgICAgICAgICAgIGNhbGxGaWxlc0Nob3NlbihyZXBsYWNlbWVudFBhdGhz
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCBmYTk5YTYwZDZhMjc4ZGQ5ZDgyZmZiZTll
ZTI4YTc3MTM2ZDMyMDE1Li4yODk2MjhhZWE4OTViYjI4Y2QwNjMyNjViNWU0NWI2NTNhNTA1OGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnVwZGF0
ZVByZWRpY3RlZEJhc2VVUkwoY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgYm9vbCBzaAogICAgICAg
ICByZXR1cm47CiAgICAgVVJMIHRlbXAgeyBtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaHJlZkF0
dHJpYnV0ZS0+dmFsdWUpKSB9OwogICAgIGlmICghc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1l
cyB8fCBTZWN1cml0eVBvbGljeTo6aXNCYXNlVVJMU2NoZW1lQWxsb3dlZCh0ZW1wKSkKLSAgICAg
ICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IHRlbXAuaXNvbGF0ZWRDb3B5KCk7CisgICAg
ICAgIG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSBXVEZNb3ZlKHRlbXApLmlzb2xhdGVkQ29w
eSgpOwogfQogCiBIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBI
VE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmNwcAppbmRleCBjZWU1NzZiODNlNDhkMmZlN2E0M2M0MDc3N2RkOWMw
MTRhMjVhMThkLi43NGJkMTI5ZjFjODEyMGQzNmNhYzYxZTI3OGYwYThkYmM2MDVlZTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAK
QEAgLTE2MSwxNCArMTYxLDE0IEBAIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJu
IHBvbGljeTsKIH0KIAotQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3k6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBDcm9z
c09yaWdpbk9wZW5lclBvbGljeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVy
biB7Ci0gICAgICAgIHZhbHVlLAotICAgICAgICByZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENv
cHkoKSwKLSAgICAgICAgcmVwb3J0T25seVZhbHVlLAotICAgICAgICByZXBvcnRPbmx5UmVwb3J0
aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCkKLSAgICB9OworICAgIHJldHVybiB7IHZhbHVlLCBy
ZXBvcnRpbmdFbmRwb2ludC5pc29sYXRlZENvcHkoKSwgcmVwb3J0T25seVZhbHVlLCByZXBvcnRP
bmx5UmVwb3J0aW5nRW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6Omlzb2xhdGVkQ29weSgpICYmCit7
CisgICAgcmV0dXJuIHsgdmFsdWUsIFdURk1vdmUocmVwb3J0aW5nRW5kcG9pbnQpLmlzb2xhdGVk
Q29weSgpLCByZXBvcnRPbmx5VmFsdWUsIFdURk1vdmUocmVwb3J0T25seVJlcG9ydGluZ0VuZHBv
aW50KS5pc29sYXRlZENvcHkoKSB9OwogfQogCiB2b2lkIGFkZENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5SGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kmIGNvb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bk9wZW5lclBvbGljeS5oCmluZGV4IDUyMjEwNjk4NjQ4ZTA4M2ZhMGQ5ZjI5Y2VmZjA3MzFmOWVl
NDk4Y2QuLjIwZWM1M2I4ZWM3ZWViZjRkMmE2OWFhYzU4MDM1NjJmNzA4NTg0YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oCkBAIC02MCw3
ICs2MCw4IEBAIHN0cnVjdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSB7CiAgICAgY29uc3QgU3Ry
aW5nJiByZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bvc2l0aW9uKENPT1BEaXNwb3NpdGlvbikgY29u
c3Q7CiAgICAgYm9vbCBoYXNSZXBvcnRpbmdFbmRwb2ludChDT09QRGlzcG9zaXRpb24pIGNvbnN0
OwogCi0gICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBD
cm9zc09yaWdpbk9wZW5lclBvbGljeSBpc29sYXRlZENvcHkoKSAmJjsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3k+IGRlY29kZShEZWNvZGVyJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggMjBkZGVmZGU0MjgxYmVhYzZiZTk3M2YxODUzNGRlZjhhNTU5ZDFiOS4u
ZjE4ZGI4Njk1YjM5N2MxYjJhM2JkMzAzMTExZGViOWU1NWU0OTQ0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBSZXNvdXJj
ZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYQogewogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJM
KGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNF
bXB0eSgpICYmIGZyYW1lKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNp
c2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0
KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCld
KGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNp
b25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgp
IH0sIHNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpLmlzb2xhdGVk
Q29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYg
c2NyaXB0Q29udHJvbGxlcikKICAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVj
dXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggODhjMDM2ZDI2NDUxY2YxNzRmYmZmOGMwMDBl
MjA1YzFkZmY3ZGY2Ni4uNWFjZTAxNWJkNWVmNzI5M2I2MGVhMWU2YTZkZTFlOGNmODFlODlhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNDUsNyArNDUsOCBAQCBzdHJ1
Y3QgRmV0Y2hPcHRpb25zIHsKIAogICAgIEZldGNoT3B0aW9ucygpID0gZGVmYXVsdDsKICAgICBG
ZXRjaE9wdGlvbnMoRGVzdGluYXRpb24sIE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJl
Y3QsIFJlZmVycmVyUG9saWN5LCBTdHJpbmcmJiwgYm9vbCk7Ci0gICAgRmV0Y2hPcHRpb25zIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRp
YWxzLCBjYWNoZSwgcmVkaXJlY3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNvbGF0ZWRD
b3B5KCksIGtlZXBBbGl2ZSB9OyB9CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4geyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCBy
ZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ksIGludGVncml0eS5pc29sYXRlZENvcHkoKSwga2VlcEFs
aXZlIH07IH0KKyAgICBGZXRjaE9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBk
ZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQ
b2xpY3ksIFdURk1vdmUoaW50ZWdyaXR5KS5pc29sYXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlUGVyc2lzdGVudChFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVBlcnNpc3RlbnQoRGVjb2RlciYsIEZldGNoT3B0aW9ucyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCmluZGV4IDQzMWNmMWM1YjJi
ZDFmOTAzZDE2YmVhZjc3MTIwZDcxYTYxMDU5Y2QuLjhjMGFkMGY5MDczNzU5NjA2ZWI4YzY5NDYy
MzI3NjZlZWY4NTMwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmgK
QEAgLTM2LDcgKzM2LDggQEAgc3RydWN0IFBvbGljeUNvbnRhaW5lciB7CiAgICAgQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CiAgICAgLy8gRklYTUU6IENT
UCBsaXN0IGFuZCByZWZlcnJlciBwb2xpY3kgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIFBvbGljeUNv
bnRhaW5lci4KIAotICAgIFBvbGljeUNvbnRhaW5lciBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGNyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5Lmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5
KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KS5pc29sYXRlZENvcHko
KSB9OyB9CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBvbGljeUNvbnRhaW5lcj4gZGVjb2RlKERlY29kZXImKTsKIH07CkBAIC00NiwxNCArNDcsNiBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvbGljeUNvbnRhaW5lciYgYSwgY29uc3Qg
UG9saWN5Q29udGFpbmVyJiBiKQogICAgIHJldHVybiBhLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3kgPT0gYi5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5ICYmIGEuY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kgPT0gYi5jcm9zc09yaWdpbk9wZW5lclBvbGljeTsKIH0KIAotaW5saW5lIFBvbGljeUNv
bnRhaW5lciBQb2xpY3lDb250YWluZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHsKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRlZENvcHkoKSwK
LSAgICAgICAgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCkKLSAgICB9Owot
fQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBQb2xpY3lDb250YWluZXI6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggMDU3OGY2M2JlYmViMWE4N2Y0MGFm
NDdiOTQzMmI2MmU1YmRjNGMyMi4uYjNhOWY4MGFmNjAyODNiOTI0ZDQ3NTk4NmUwZjRlZmE2Y2Qw
MThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwCkBAIC02MCw1MyArNjAsMjcgQEAgYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICYmIChtX3RpbWVzVG9TZW5kLnNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZCB8fCBtX3RpbWVzVG9TZW5kLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kKTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuIFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVy
biB7Ci0gICAgICAgIHRva2VuQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpLAotICAgICAgICBzaWdu
YXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIGtleUlEQmFzZTY0VVJMLmlz
b2xhdGVkQ29weSgpLAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBibGluZGVyLCB3YWl0
aW5nVG9rZW4sIHJlYWR5VG9rZW4sCisjZW5kaWYKKyAgICAgICAgdmFsdWVCYXNlNjRVUkwuaXNv
bGF0ZWRDb3B5KCkKICAgICB9OwogfQogCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjpp
c29sYXRlZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkoKSB9OwotfQotCi1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNy
ZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNvbGF0
ZWRDb3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNl
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4geyBub25jZS5pc29sYXRlZENvcHkoKSB9OwotfQotCi1Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxp
bmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpICYmCiB7CiAgICAgcmV0dXJuIHsKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgYmxpbmRlciwKLSAgICAgICAgd2FpdGluZ1Rva2VuLAotICAg
ICAgICByZWFkeVRva2VuLAorICAgICAgICBibGluZGVyLCB3YWl0aW5nVG9rZW4sIHJlYWR5VG9r
ZW4sCiAjZW5kaWYKLSAgICAgICAgdmFsdWVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCkKKyAgICAg
ICAgV1RGTW92ZSh2YWx1ZUJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCkKICAgICB9OwogfQogCi1Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSB9OwotfQot
Ci1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjppc29sYXRl
ZENvcHkoKSBjb25zdAotewotICAgIHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRD
b3B5KCkgfTsKLX0KLQotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIFByaXZh
dGVDbGlja01lYXN1cmVtZW50IGNvcHkgewogICAgICAgICBtX3NvdXJjZUlELApAQCAtMTI0LDYg
Kzk4LDI0IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50
Ojppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBjb3B5OwogfQogCitQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNvbGF0ZWRDb3B5KCkgJiYK
K3sKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBjb3B5IHsKKyAgICAgICAgbV9zb3VyY2VJ
RCwKKyAgICAgICAgV1RGTW92ZShtX3NvdXJjZVNpdGUpLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICBXVEZNb3ZlKG1fZGVzdGluYXRpb25TaXRlKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RG
TW92ZShtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICBXVEZNb3ZlKG1fdGltZU9mQWRDbGljaykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faXNF
cGhlbWVyYWwsCisgICAgfTsKKyAgICBjb3B5Lm1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdU
Rk1vdmUobV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKKyAgICBjb3B5Lm1fdGltZXNUb1NlbmQg
PSBXVEZNb3ZlKG1fdGltZXNUb1NlbmQpOworICAgIGNvcHkubV9lcGhlbWVyYWxTb3VyY2VOb25j
ZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZXBoZW1lcmFsU291cmNlTm9uY2UpKTsKKyAg
ICBjb3B5Lm1fc291cmNlVW5saW5rYWJsZVRva2VuID0gV1RGTW92ZShtX3NvdXJjZVVubGlua2Fi
bGVUb2tlbikuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5tX3NvdXJjZVNlY3JldFRva2VuID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zb3VyY2VTZWNyZXRUb2tlbikpOworICAgIHJldHVy
biBjb3B5OworfQorCiBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05laXRoZXJTYW1l
U2l0ZU5vckNyb3NzU2l0ZVRyaWdnZXJpbmdFdmVudChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgQXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKICAgICBhdXRvIGlzU2Ft
ZVNpdGVUcmlnZ2VyaW5nRXZlbnQgPSByZWRpcmVjdERvbWFpbi5tYXRjaGVzKGZpcnN0UGFydHlV
UkwpICYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmluZGV4
IDAxZjg3MzQ4YWI2YTIxYTAyZTYwMzZiMjU4ZTg5MjcyNjBlM2U3MTguLjFlNzgxYTlkZWRhOTA2
YWYzMWVkMGIyMDliNTU5YTRjMWQ0YTI1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC03Nyw3ICs3Nyw4IEBAIHB1YmxpYzoKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlU2l0ZSBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBTb3VyY2VTaXRlIHsgcmVnaXN0cmFibGVEb21haW4uaXNvbGF0ZWRDb3B5
KCkgfTsgfQorICAgICAgICBTb3VyY2VTaXRlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1
cm4gU291cmNlU2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KKyAg
ICAgICAgU291cmNlU2l0ZSBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiBTb3VyY2VTaXRlIHsg
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VTaXRlJiBvdGhlcikgY29uc3QKICAgICAgICAg
ewpAQCAtMTIzLDcgKzEyNCw4IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyByZWdpc3RyYWJsZURvbWFpbi5pc29s
YXRlZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIGlzb2xh
dGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBy
ZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIEF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlIHsgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uU2l0ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTE3MSw3ICsxNzMsOCBAQCBwdWJs
aWM6CiAgICAgc3RydWN0IEVwaGVtZXJhbE5vbmNlIHsKICAgICAgICAgU3RyaW5nIG5vbmNlOwog
Ci0gICAgICAgIEVwaGVtZXJhbE5vbmNlIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBF
cGhlbWVyYWxOb25jZSBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgbm9uY2UuaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBFcGhlbWVyYWxOb25jZSBpc29sYXRlZENvcHkoKSAm
JiAgeyByZXR1cm4geyBXVEZNb3ZlKG5vbmNlKS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKQEAgLTE4NywzMSArMTkw
LDM3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7CiAg
ICAgICAgIAotICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBV
bmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgfTsKIAogICAgIHN0cnVjdCBT
b3VyY2VVbmxpbmthYmxlVG9rZW4gOiBVbmxpbmthYmxlVG9rZW4gewotICAgICAgICBTb3VyY2VV
bmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFNvdXJjZVVubGlu
a2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgVW5saW5rYWJsZVRv
a2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBp
c29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5
KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4g
OiBVbmxpbmthYmxlVG9rZW4gewotICAgICAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4g
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5KCkgfTsgfQorICAgICAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBpc29sYXRl
ZENvcHkoKSAmJiB7IHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgfTsg
fQogICAgIH07CiAKICAgICBzdHJ1Y3QgU2VjcmV0VG9rZW4gewogICAgICAgICBTdHJpbmcgdG9r
ZW5CYXNlNjRVUkw7CiAgICAgICAgIFN0cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7CiAgICAgICAg
IFN0cmluZyBrZXlJREJhc2U2NFVSTDsKLSAgICAgICAgU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CisgICAgICAgIFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyBy
ZXR1cm4geyB0b2tlbkJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSwgc2lnbmF0dXJlQmFzZTY0VVJM
Lmlzb2xhdGVkQ29weSgpLCBrZXlJREJhc2U2NFVSTC5pc29sYXRlZENvcHkoKSB9OyB9CisgICAg
ICAgIFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIHsgV1RGTW92ZSh0b2tl
bkJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoc2lnbmF0dXJlQmFzZTY0VVJMKS5p
c29sYXRlZENvcHkoKSwgV1RGTW92ZShrZXlJREJhc2U2NFVSTCkuaXNvbGF0ZWRDb3B5KCkgfTsg
fQogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICB9OwogCiAgICAgc3RydWN0IFNv
dXJjZVNlY3JldFRva2VuIDogU2VjcmV0VG9rZW4gewotICAgICAgICBTb3VyY2VTZWNyZXRUb2tl
biBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgU291cmNlU2VjcmV0VG9rZW4gaXNvbGF0
ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9
OyB9CisgICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpICYmIHsgcmV0dXJu
IHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07IH0KICAgICB9OwogCiAgICAgc3RydWN0
IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBTZWNyZXRUb2tlbiB7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
ICAgIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVy
biB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIERlc3RpbmF0aW9u
U2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBTZWNyZXRUb2tlbjo6aXNv
bGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSB7CkBAIC00MjksNyArNDM4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gZGVj
b2RlKERlY29kZXImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV0VCQ09SRV9FWFBPUlQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIEV4cGVjdGVkPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gcGFyc2VB
dHRyaWJ1dGlvblJlcXVlc3RRdWVyeShjb25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4IDZhZWU5ZWJiYTQyN2MyNjc2ZDQ0ZWIwZGUxZmMwNGQx
NDgzY2IwNjUuLmZhNmM5NmRlNDU4ZTAwZTA4YmE1YjQ5MDFlY2FhOTIzMDg1ZDE5OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmNwcApAQCAtNjgsMTUgKzY4LDI2IEBA
IFZlY3RvcjxSZWY8UGVyZm9ybWFuY2VTZXJ2ZXJUaW1pbmc+PiBSZXNvdXJjZVRpbWluZzo6cG9w
dWxhdGVTZXJ2ZXJUaW1pbmcoKSBjb25zCiAgICAgfSk7CiB9CiAKLVJlc291cmNlVGltaW5nIFJl
c291cmNlVGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdAorUmVzb3VyY2VUaW1pbmcgUmVzb3Vy
Y2VUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VU
aW1pbmcoCisgICAgcmV0dXJuIFJlc291cmNlVGltaW5nIHsKICAgICAgICAgbV91cmwuaXNvbGF0
ZWRDb3B5KCksCiAgICAgICAgIG1faW5pdGlhdG9yLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBt
X3Jlc291cmNlTG9hZFRpbWluZy5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV9uZXR3b3JrTG9h
ZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShtX3NlcnZl
clRpbWluZykKLSAgICApOworICAgIH07Cit9CisKK1Jlc291cmNlVGltaW5nIFJlc291cmNlVGlt
aW5nOjppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiBSZXNvdXJjZVRpbWluZyB7Cisg
ICAgICAgIFdURk1vdmUobV91cmwpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBXVEZNb3ZlKG1f
aW5pdGlhdG9yKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgV1RGTW92ZShtX3Jlc291cmNlTG9h
ZFRpbWluZykuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIFdURk1vdmUobV9uZXR3b3JrTG9hZE1l
dHJpY3MpLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSht
X3NlcnZlclRpbWluZykpCisgICAgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAppbmRleCA5MDVmYzY2OTBiMWE3N2MwZjcw
OWI3MDNjYTQ5Y2YwOGNkNzhhMTljLi44MTA5NjJmYzRkYTZhMjc0YjliZjQ3YjNjYjZiMWU2ZmY4
NTY3MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaApAQCAtNTEsNyAr
NTEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogICAgIE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3Jr
TG9hZE1ldHJpY3M7IH0KICAgICBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGltaW5nPj4g
cG9wdWxhdGVTZXJ2ZXJUaW1pbmcoKSBjb25zdDsKLSAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICBSZXNvdXJjZVRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdCAm
OworICAgIFJlc291cmNlVGltaW5nIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdm9pZCBvdmVy
cmlkZUluaXRpYXRvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yID0gbmFt
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3BwCmluZGV4IGNlMTc2NzBk
NDc5YWE4MTkwMzgyZWFkOWQ1OTNjMDE5MWE4NTk1YWUuLmMwOTkwYzFhY2Y0NTk3YWQ4MDk3MmM2
MTBiNjA2ZTkzYzhmMjQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2
ZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1pbmcuY3Bw
CkBAIC00Niw5ICs0NiwxNCBAQCB2b2lkIFNlcnZlclRpbWluZzo6c2V0UGFyYW1ldGVyKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB9CiB9CiAKLVNlcnZlclRp
bWluZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitTZXJ2ZXJUaW1pbmcgU2Vy
dmVyVGltaW5nOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIFNlcnZlclRp
bWluZyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkdXJhdGlvbiwgZGVzY3JpcHRpb24uaXNvbGF0ZWRD
b3B5KCksIGR1cmF0aW9uU2V0LCBkZXNjcmlwdGlvblNldCk7CisgICAgcmV0dXJuIFNlcnZlclRp
bWluZyB7IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBkZXNjcmlwdGlvbi5pc29sYXRl
ZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9uU2V0IH07Cit9CisKK1NlcnZlclRpbWlu
ZyBTZXJ2ZXJUaW1pbmc6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIFNlcnZlclRp
bWluZyB7IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIGR1cmF0aW9uLCBXVEZNb3ZlKGRl
c2NyaXB0aW9uKS5pc29sYXRlZENvcHkoKSwgZHVyYXRpb25TZXQsIGRlc2NyaXB0aW9uU2V0IH07
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TZXJ2ZXJUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TZXJ2ZXJUaW1p
bmcuaAppbmRleCA2N2I0MTA4ZWY5NDU5MzlkOGY3ZjEzY2JkMWEwY2YwZTY4NGNiNDQ2Li44YmJl
ODU3ZDRiMjBjNjI2MWRkNjQzMTA2MDg1NTM4MmJhODhjZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1NlcnZlclRpbWluZy5oCkBAIC00Miw3ICs0Miw4IEBAIHN0cnVjdCBTZXJ2ZXJUaW1pbmcgewog
ICAgIFNlcnZlclRpbWluZyhTdHJpbmcmJiBuYW1lLCBkb3VibGUgZHVyYXRpb24sIFN0cmluZyYm
IGRlc2NyaXB0aW9uLCBib29sIGR1cmF0aW9uU2V0LCBib29sIGRlc2NyaXB0aW9uU2V0KTsKIAog
ICAgIHZvaWQgc2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotICAg
IFNlcnZlclRpbWluZyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBTZXJ2ZXJUaW1pbmcgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBTZXJ2ZXJUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgJiY7
CiB9OwogCiBpbmxpbmUgU2VydmVyVGltaW5nOjpTZXJ2ZXJUaW1pbmcoU3RyaW5nJiYgbmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCA1MWZmYTY5MzUyZTVmMzIwMDVjYWZlYTA5ZGM5NGNhMmZmOGQ0M2NkLi5lMjk1ODljMmZm
MjQwMDQyNTM1YzNjMDM5NmZjOGI0NzYyNDQyYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShU
aHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwg
bV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVu
ZWZpdCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2ll
bnRseSBpdHMgaXNvbGF0ZWQgY29weT8KLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RG
TW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNv
bnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Q29weSA9
IFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9M
b2FkZXIoW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLmlzb2xhdGVkQ29weSgpLCBv
cHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkg
PSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBjcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5Q29weSA9IFdURk1vdmUoY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeUNvcHkpXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVu
dE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCBlZTQ3
Y2FhYThkMGRkZTNmODkxNzlhNzU2MzFlYTM0Y2JlMzYzMTJiLi42MjA0MDEwZmFmY2UwMzYzZTdj
MGViYjRkNjE2Y2VmYjEwNDIwYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ns
aWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAg
LTQyLDcgKzQyLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gZGVjb2RlKERlY29k
ZXImKTsKIAotICAgIENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBDbGll
bnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IHRvcE9yaWdpbi5pc29s
YXRlZENvcHkoKSwgY2xpZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBDbGllbnRP
cmlnaW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHRvcE9yaWdpbikuaXNv
bGF0ZWRDb3B5KCksIFdURk1vdmUoY2xpZW50T3JpZ2luKS5pc29sYXRlZENvcHkoKSB9OyB9CiAg
ICAgYm9vbCBpc1JlbGF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBvdGhlcjsgfQog
CiAgICAgUmVnaXN0cmFibGVEb21haW4gY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7
IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoY2xpZW50
T3JpZ2luLmhvc3QpOyB9CkBAIC02MSwxMSArNjIsNiBAQCBpbmxpbmUgYm9vbCBDbGllbnRPcmln
aW46Om9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJiBvdGhlcikgY29uc3QKICAgICByZXR1
cm4gdG9wT3JpZ2luID09IG90aGVyLnRvcE9yaWdpbiAmJiBjbGllbnRPcmlnaW4gPT0gb3RoZXIu
Y2xpZW50T3JpZ2luOwogfQogCi1pbmxpbmUgQ2xpZW50T3JpZ2luIENsaWVudE9yaWdpbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4geyB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5
KCksIGNsaWVudE9yaWdpbi5pc29sYXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiBpbmxpbmUgdm9pZCBDbGllbnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdG9wT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
b2Nlc3NXYXJtaW5nLmNwcAppbmRleCBlYzgwYWU0M2FiZTc5MTM2OTc4YzdmZDAwMzkwYzIxNmI2
OWI3NzM4Li5kZmEzZTgyYTYyODRiYmRhMTA0MjM4NjJlNjVlMmI4YmQwZmZlY2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcApAQCAtODksOSArODksOSBAQCBXZWJDb3Jl
OjpQcmV3YXJtSW5mb3JtYXRpb24gUHJvY2Vzc1dhcm1pbmc6OmNvbGxlY3RQcmV3YXJtSW5mb3Jt
YXRpb24oKQogICAgIHJldHVybiB7IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNvbGxl
Y3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OwogfQogCi12b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3
YXJtV2l0aEluZm9ybWF0aW9uKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm8p
Cit2b2lkIFByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKFByZXdhcm1JbmZv
cm1hdGlvbiYmIHByZXdhcm1JbmZvKQogewotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLnByZXdhcm0ocHJld2FybUluZm8uZm9udENhY2hlKTsKKyAgICBGb250Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKS5wcmV3YXJtKFdURk1vdmUocHJld2FybUluZm8uZm9udENhY2hlKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuaAppbmRleCBjZjE3ZWFhMWQ5ZDBi
NmUzZDgxN2IzYjFhMjI0ZDVkY2M3MDIwMDRlLi40ZDNjN2UxMTg4NTdhOGY3MDQ1ZTJhMzMwN2Rl
OGFjYzM1ZTA5OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJt
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5oCkBAIC0zNSw3
ICszNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBwcmV3YXJtR2xvYmFsbHkoKTsKIAog
ICAgIHN0YXRpYyBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigp
OwotICAgIHN0YXRpYyB2b2lkIHByZXdhcm1XaXRoSW5mb3JtYXRpb24oY29uc3QgUHJld2FybUlu
Zm9ybWF0aW9uJik7CisgICAgc3RhdGljIHZvaWQgcHJld2FybVdpdGhJbmZvcm1hdGlvbihQcmV3
YXJtSW5mb3JtYXRpb24mJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNw
cAppbmRleCBhMDkzNGQ3ZjUzNTU3Zjk2NWYwYjUyZGQzNjgzOGRkNmE0NjkzOWZmLi4yYjNiZjQ3
MmMwZjEyMDIzMTJiOTNiMjdmNDViMWE5NDZmMzg2Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoY29uc3QKICAg
ICBtX2h0dHBTdGF0dXNDb2RlID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKIH0KIAotQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVyczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6Omlz
b2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgaXNvbGF0ZWRDb3B5OwogICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMgPSBjcm9z
c1RocmVhZENvcHkobV9oZWFkZXJzKTsKQEAgLTUzLDQgKzUzLDEyIEBAIENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnM6Omlzb2xhCiAgICAgcmV0dXJuIGlzb2xhdGVkQ29weTsKIH0KIAorQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
czo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgaXNvbGF0ZWRDb3B5OworICAgIGlzb2xhdGVkQ29weS5tX2hlYWRlcnMgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShtX2hlYWRlcnMpKTsKKyAgICBpc29sYXRlZENvcHkubV9odHRw
U3RhdHVzQ29kZSA9IG1faHR0cFN0YXR1c0NvZGU7CisgICAgcmV0dXJuIGlzb2xhdGVkQ29weTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaApp
bmRleCA5NDhkOGNjODc0MjhkZTg5YTBmYzgwOTljNjViZDAzYWNhY2Q1ZGIzLi5kNjA1OGU4Y2Y5
OWM1ZGEzZDljOTJkMmU4NmI2ZmIyNDhkNGNhOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaApAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzKCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmgKaW5kZXggYWI2OGRhY2JmYTc0MGNhNDhlYzFjMzQ1MmE4NjAyMTE2NmQ5NzEzMC4uZmEyMjQw
ZmU4NmQ0MDRmOGYzNDcxZTQxYTY4Yjc0NjE1OTAxZDk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5oCkBAIC00NiwxNCArNDYsMTIgQEAgY2xhc3MgRmlsZUNob29zZXI7CiBj
bGFzcyBJY29uOwogCiBzdHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbyB7Ci0gICAgRmlsZUNob29z
ZXJGaWxlSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsg
cGF0aC5pc29sYXRlZENvcHkoKSwgcmVwbGFjZW1lbnRQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXNw
bGF5TmFtZS5pc29sYXRlZENvcHkoKSB9OwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyBwYXRo
OwotICAgIGNvbnN0IFN0cmluZyByZXBsYWNlbWVudFBhdGg7Ci0gICAgY29uc3QgU3RyaW5nIGRp
c3BsYXlOYW1lOworICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JiB7IHJldHVybiB7IHBhdGguaXNvbGF0ZWRDb3B5KCksIHJlcGxhY2VtZW50UGF0aC5pc29sYXRl
ZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgIEZpbGVDaG9vc2Vy
RmlsZUluZm8gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHBhdGgpLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKHJlcGxhY2VtZW50UGF0aCkuaXNvbGF0ZWRDb3B5KCksIFdURk1v
dmUoZGlzcGxheU5hbWUpLmlzb2xhdGVkQ29weSgpIH07IH0KKworICAgIFN0cmluZyBwYXRoOwor
ICAgIFN0cmluZyByZXBsYWNlbWVudFBhdGg7CisgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogfTsK
IAogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmgKaW5kZXggNDI4YmZlMGU2MmM3OGNjYzI4OTA1Mjhi
MDE4NTg5YWI0ODJlMzk4Yi4uODVjMDA4NTBjZWNjNGMwMTY3NjYwNzcxYzllYWQyZGQ2OTc1NWQ4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5o
CkBAIC00Myw2ICs0Myw5IEBAIHN0cnVjdCBNZWRpYVNlbGVjdGlvbk9wdGlvbiB7CiAgICAgewog
ICAgIH0KIAorICAgIE1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisgICAgTWVk
aWFTZWxlY3Rpb25PcHRpb24gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKGRp
c3BsYXlOYW1lKS5pc29sYXRlZENvcHkoKSwgdHlwZSB9OyB9CisKICAgICBTdHJpbmcgZGlzcGxh
eU5hbWU7CiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6UmVndWxhciB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IDdjZTNmNjEzNmMzMTdkYTNm
YmVjMjI0MDFmNWJmMjgwMTY0OTVjNjAuLmJjZThjNDMwMzQwZmU2NzBiYzI0OWNkZjE3Yjk4Njlh
NDRhYjg2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxl
RG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4u
aApAQCAtNjcsNyArNjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXRjaGVzKG9yaWdp
bi5ob3N0KTsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IG1fcmVnaXN0cmFibGVEb21haW4uaXNv
bGF0ZWRDb3B5KCkgfTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluIGlzb2xhdGVkQ29weSgpIGNv
bnN0ICYgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBtX3JlZ2lzdHJhYmxlRG9tYWluLmlz
b2xhdGVkQ29weSgpIH07IH0KKyAgICBSZWdpc3RyYWJsZURvbWFpbiBpc29sYXRlZENvcHkoKSAm
JiB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IFdURk1vdmUobV9yZWdpc3RyYWJsZURvbWFp
bikuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW4oV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fcmVnaXN0cmFibGVEb21haW4oV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMWJmYTNmZDVmMmIzYTI2YTlhNGFlZTk1NTNi
NjJiNjg2ZWJlMjI0MS4uMTJjZTNlOTZkZDMxMmM2MTNkNjE4MmIwOWQyNzkxNThiYmY2OWY2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBA
IC01MDgsNyArNTA4LDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiB7CiB9
CiAKLXZvaWQgRm9udENhY2hlOjpwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYpCit2
b2lkIEZvbnRDYWNoZTo6cHJld2FybShQcmV3YXJtSW5mb3JtYXRpb24mJikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA4OWI0ZTE5
MjdhNzhlMDNmMzQ4MzVhODZjYzkwMmIxYTI2N2FhMjY5Li40OWQzMGQ2NDY5YWRmMWY0YWUwODg2
ZWRjZmUyNGYyZWVkNDdkMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0zNTYsMTMgKzM1
NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZvbnROYW1lc1JlcXVpcmlu
Z1N5c3RlbUZhbGxiYWNrOwogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotICAgICAg
ICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIFByZXdh
cm1JbmZvcm1hdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgY3Jvc3NUaHJl
YWRDb3B5KHNlZW5GYW1pbGllcyksIGNyb3NzVGhyZWFkQ29weShmb250TmFtZXNSZXF1aXJpbmdT
eXN0ZW1GYWxsYmFjaykgfTsgfQorICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzZWVuRmFtaWxpZXMp
KSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJh
Y2spKSB9OyB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
fTsKICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIGNv
bnN0OwotICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKKyAgICB2
b2lkIHByZXdhcm0oUHJld2FybUluZm9ybWF0aW9uJiYpOwogICAgIHN0YXRpYyB2b2lkIHByZXdh
cm1HbG9iYWxseSgpOwogCiBwcml2YXRlOgpAQCAtNDMxLDExICs0MzMsNiBAQCBpbmxpbmUgYm9v
bCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0
dXJuIHNlZW5GYW1pbGllcy5pc0VtcHR5KCkgJiYgZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFs
bGJhY2suaXNFbXB0eSgpOwogfQogCi1pbmxpbmUgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRp
b24gRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHsgc2VlbkZhbWlsaWVzLmlzb2xhdGVkQ29weSgpLCBmb250TmFtZXNSZXF1
aXJpbmdTeXN0ZW1GYWxsYmFjay5pc29sYXRlZENvcHkoKSB9OwotfQotCiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgogdm9pZCBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCmluZGV4IGIwYjNkNDUyZDU2
MTljNjk4YTliMjU5YWFhZjI1M2U0MTNkMDMyMzMuLjBjNDViMjA1YzlhOGNmMGZjNTk3OTU1MDhm
ZjYwNDk2MjNhM2I0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogCisjaW5j
bHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkyLDIzICs5MywyOSBAQCBGb250R2VuZXJpY0Zh
bWlsaWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkKICAgICB9KTsKIH0KIAotRm9udEdlbmVyaWNG
YW1pbGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdAorRm9udEdl
bmVyaWNGYW1pbGllcyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdCAm
CiB7CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcyBjb3B5OwotICAgIGZvciAoYXV0byAma2V5VmFs
dWUgOiBtX3N0YW5kYXJkRm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX3N0YW5kYXJkRm9u
dEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHko
KSk7Ci0gICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc2VyaWZGb250RmFtaWx5TWFwKQotICAg
ICAgICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVl
LnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9maXhl
ZEZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAuYWRkKGtl
eVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGZvciAoYXV0
byAma2V5VmFsdWUgOiBtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApCi0gICAgICAgIGNvcHkubV9z
YW5zU2VyaWZGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlz
b2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9jdXJzaXZlRm9udEZh
bWlseU1hcCkKLSAgICAgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1
ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBmb3IgKGF1dG8gJmtl
eVZhbHVlIDogbV9mYW50YXN5Rm9udEZhbWlseU1hcCkKLSAgICAgICAgY29weS5tX2ZhbnRhc3lG
b250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29w
eSgpKTsKLSAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9waWN0b2dyYXBoRm9udEZhbWlseU1h
cCkKLSAgICAgICAgY29weS5tX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5r
ZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAgICBjb3B5Lm1fc3RhbmRhcmRG
b250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwKTsK
KyAgICBjb3B5Lm1fc2VyaWZGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fc2VyaWZG
b250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fZml4ZWRGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJl
YWRDb3B5KG1fZml4ZWRGb250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fc2Fuc1NlcmlmRm9udEZh
bWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXApOworICAg
IGNvcHkubV9jdXJzaXZlRm9udEZhbWlseU1hcCA9IGNyb3NzVGhyZWFkQ29weShtX2N1cnNpdmVG
b250RmFtaWx5TWFwKTsKKyAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAgPSBjcm9zc1Ro
cmVhZENvcHkobV9mYW50YXN5Rm9udEZhbWlseU1hcCk7CisgICAgY29weS5tX3BpY3RvZ3JhcGhG
b250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAp
OworICAgIHJldHVybiBjb3B5OworfQorCitGb250R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmlj
RmFtaWxpZXM6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgRm9udEdlbmVyaWNGYW1pbGllcyBj
b3B5OworICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShtX3N0YW5kYXJkRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9zZXJpZkZvbnRG
YW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShtX3NlcmlmRm9udEZhbWlseU1hcCkp
OworICAgIGNvcHkubV9maXhlZEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShtX2ZpeGVkRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9zYW5zU2VyaWZGb250RmFtaWx5
TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9zYW5zU2VyaWZGb250RmFtaWx5TWFwKSk7
CisgICAgY29weS5tX2N1cnNpdmVGb250RmFtaWx5TWFwID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUobV9jdXJzaXZlRm9udEZhbWlseU1hcCkpOworICAgIGNvcHkubV9mYW50YXN5Rm9udEZhbWls
eU1hcCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1fZmFudGFzeUZvbnRGYW1pbHlNYXApKTsK
KyAgICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmlj
RmFtaWxpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmlj
RmFtaWxpZXMuaAppbmRleCA2MDc3MGNkNjRjMzkxOGIwMDA1MWU3NDU3YmJlZjQzNzRmMmFlYzI0
Li5lZTQ3ZGRjYzNjNGMyYzQwODk3NWRiNzQ5OTY0ZDQ3MzFkNmNmNWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5o
CkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXMgewogcHVibGljOgog
ICAgIEZvbnRHZW5lcmljRmFtaWxpZXMoKTsKIAotICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgRm9udEdlbmVyaWNGYW1pbGllcyBpc29sYXRlZENvcHko
KSBjb25zdCAmOworICAgIEZvbnRHZW5lcmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgJiY7CiAK
ICAgICBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJ
UFRfQ09NTU9OKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2Ny
aXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmMmM5NjQwZDQ2ZDNhOTM1NjEx
NGYzM2FiMTQwNTJjN2ZlYzI3NzhjLi40YjNhNWUxNDI4N2I1NzNjMzI5NGFhMGFhNmM2YWIyZWMy
MzAyNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3lu
Y0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5nRHVyYXRp
b24gLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAgICAgICAg
ICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJlYWQgdG8g
YXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgot
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVj
b2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVS
ZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJj
ZVVSTCA9IFdURk1vdmUoc291cmNlVVJMKS5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9
IFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdl
IGdvdCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMg
Y2FsbGVkLgogICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigp
ID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0
cigpID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVS
ZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBhZDlhMjM3YWE5YzYwNDg1NDc0
NTUxYzI0NTg2ZDJjYThhNTc2MzAyLi5lNjE3Nzk4MWYxZTU4M2U4ZjRkNzFiMTMxZWIxNjI3MmE1
OGU2N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC05NTYsNyArOTU2LDcgQEAgcHVi
bGljOgogICAgICAgICB9KCk7CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZmFtaWx5TmFt
ZVRvRm9udERlc2NyaXB0b3JzTG9jayB9OwotICAgICAgICByZXR1cm4gKm1fZmFtaWx5TmFtZVRv
Rm9udERlc2NyaXB0b3JzLmFkZChmb2xkZWQuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaW5zdGFs
bGVkRm9udEZhbWlseSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuICptX2ZhbWls
eU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoV1RGTW92ZShmb2xkZWQpLmlzb2xhdGVkQ29weSgp
LCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQog
CiAgICAgY29uc3QgSW5zdGFsbGVkRm9udCYgZm9udEZvclBvc3RTY3JpcHROYW1lKGNvbnN0IEF0
b21TdHJpbmcmIHBvc3RTY3JpcHROYW1lKQpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgRm9udENhY2hl
OjpQcmV3YXJtSW5mb3JtYXRpb24gRm9udENhY2hlOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9u
KCkgY29uc3QKICAgICByZXR1cm4geyBjb3B5VG9WZWN0b3IobV9zZWVuRmFtaWxpZXNGb3JQcmV3
YXJtaW5nKSwgY29weVRvVmVjdG9yKG1fZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2tG
b3JQcmV3YXJtaW5nKSB9OwogfQogCi12b2lkIEZvbnRDYWNoZTo6cHJld2FybShjb25zdCBQcmV3
YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKK3ZvaWQgRm9udENhY2hlOjpwcmV3
YXJtKFByZXdhcm1JbmZvcm1hdGlvbiYmIHByZXdhcm1JbmZvcm1hdGlvbikKIHsKICAgICBpZiAo
cHJld2FybUluZm9ybWF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY0MCw3
ICsxNjQwLDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm0oY29uc3QgUHJld2FybUluZm9ybWF0
aW9uJiBwcmV3YXJtSW5mb3JtYXRpb24pCiAKICAgICBhdXRvJiBkYXRhYmFzZSA9IEZvbnREYXRh
YmFzZTo6c2luZ2xldG9uRGlzYWxsb3dpbmdVc2VySW5zdGFsbGVkRm9udHMoKTsKIAotICAgIG1f
cHJld2FybVF1ZXVlLT5kaXNwYXRjaChbJmRhdGFiYXNlLCBwcmV3YXJtSW5mb3JtYXRpb24gPSBw
cmV3YXJtSW5mb3JtYXRpb24uaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBtX3ByZXdhcm1RdWV1ZS0+
ZGlzcGF0Y2goWyZkYXRhYmFzZSwgcHJld2FybUluZm9ybWF0aW9uID0gV1RGTW92ZShwcmV3YXJt
SW5mb3JtYXRpb24pLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGZvciAoYXV0byYgZmFtaWx5
IDogcHJld2FybUluZm9ybWF0aW9uLnNlZW5GYW1pbGllcykKICAgICAgICAgICAgIGRhdGFiYXNl
LmNvbGxlY3Rpb25Gb3JGYW1pbHkoZmFtaWx5KTsKIApAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9p
ZCBGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSgpCiAKICAgICBGb250Q2FjaGU6OlByZXdhcm1J
bmZvcm1hdGlvbiBwcmV3YXJtSW5mbzsKICAgICBwcmV3YXJtSW5mby5zZWVuRmFtaWxpZXMgPSBX
VEZNb3ZlKGZhbWlsaWVzKTsKLSAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3
YXJtKHByZXdhcm1JbmZvKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wcmV3
YXJtKFdURk1vdmUocHJld2FybUluZm8pKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbQppbmRleCAxMTcyODk0ZmVkMjViOGY0ZjVjMzMzMGFmMzJlMjQyODhhN2M1
ODYzLi5hMGM1NzEwNzU4OTZkNjQ1NDdlNzI5ODRkZjFhMDgzMThkODRkZWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Dcm9zc1RocmVh
ZENvcGllci5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaW1wb3J0IDxwYWwvaW9z
L1VJS2l0U29mdExpbmsuaD4KQEAgLTQ4MiwxOSArNDgzLDEwIEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBjYW5Q
bGF5RmFzCiAgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5
RmFzdFJldmVyc2UpOwogfQogCi1zdGF0aWMgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBp
c29sYXRlZENvcHkoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucykK
LXsKLSAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnNDb3B5OwotICAgIG9w
dGlvbnNDb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3B0aW9ucy5zaXplKCkpOwotICAgIGZv
ciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykKLSAgICAgICAgb3B0aW9uc0NvcHkudW5jaGVja2Vk
QXBwZW5kKHsgb3B0aW9uLmRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBvcHRpb24udHlwZSB9
KTsKLSAgICByZXR1cm4gb3B0aW9uc0NvcHk7Ci19Ci0KIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZElu
ZGV4KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcHRpb25z
ID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlv
bnMgPSBjcm9zc1RocmVhZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRp
b25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTUw
Nyw3ICs0OTksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVgogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
b3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0geworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBvcHRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVz
L0F1ZGlvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKaW5kZXggNmUxZThkMWZjYmE3ODkwZDk2NDc2
MGU4NDM2MWE1NWYxMDk4Yjc5Zi4uZGI4MzNmMzBiYmU3ZTYxNGQyMTllN2UzMTU3NjMyYzJmMGEz
ZjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKQEAgLTM2LDE3ICszNiwyMyBAQCBz
dHJ1Y3QgQXVkaW9Db25maWd1cmF0aW9uIHsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBz
YW1wbGVyYXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3BhdGlhbFJlbmRlcmluZzsKIAot
ICAgIEF1ZGlvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBBdWRpb0Nv
bmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBBdWRpb0NvbmZpZ3VyYXRp
b24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAotaW5saW5lIEF1ZGlvQ29uZmlndXJhdGlvbiBBdWRpb0NvbmZpZ3VyYXRpb246Omlzb2xh
dGVkQ29weSgpIGNvbnN0CitpbmxpbmUgQXVkaW9Db25maWd1cmF0aW9uIEF1ZGlvQ29uZmlndXJh
dGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNvbnRlbnRUeXBl
Lmlzb2xhdGVkQ29weSgpLCBjaGFubmVscy5pc29sYXRlZENvcHkoKSwgYml0cmF0ZSwgc2FtcGxl
cmF0ZSwgc3BhdGlhbFJlbmRlcmluZyB9OwogfQogCitpbmxpbmUgQXVkaW9Db25maWd1cmF0aW9u
IEF1ZGlvQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBX
VEZNb3ZlKGNvbnRlbnRUeXBlKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShjaGFubmVscykuaXNv
bGF0ZWRDb3B5KCksIGJpdHJhdGUsIHNhbXBsZXJhdGUsIHNwYXRpYWxSZW5kZXJpbmcgfTsKK30K
KwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXVkaW9Db25maWd1cmF0aW9uOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgK
aW5kZXggZWZhYzRjNzk0ZGNmZWI0NzMxNTZiZDNmNDVmZGU1OWNmZmYwODUzOC4uOTQzYjkwNWI2
ODUyOWE2NzM2N2NhYTNiODQ3NGE4OWFiZTA0YzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0
aW9uLmgKQEAgLTM1LDE3ICszNSwyMyBAQCBzdHJ1Y3QgTWVkaWFDb25maWd1cmF0aW9uIHsKICAg
ICBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW87CiAgICAgc3RkOjpvcHRp
b25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwogCi0gICAgTWVkaWFDb25maWd1cmF0aW9u
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdCAmOworICAgIE1lZGlhQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSAmJjsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRp
YUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgTWVkaWFDb25m
aWd1cmF0aW9uIE1lZGlhQ29uZmlndXJhdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK2lubGlu
ZSBNZWRpYUNvbmZpZ3VyYXRpb24gTWVkaWFDb25maWd1cmF0aW9uOjppc29sYXRlZENvcHkoKSBj
b25zdCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KHZpZGVvKSwgIGNyb3NzVGhy
ZWFkQ29weShhdWRpbykgfTsKIH0KIAoraW5saW5lIE1lZGlhQ29uZmlndXJhdGlvbiBNZWRpYUNv
bmZpZ3VyYXRpb246Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUodmlkZW8pKSwgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGF1ZGlvKSkg
fTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTWVkaWFDb25maWd1cmF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0
aW9uLmgKaW5kZXggZTg2MzFmMmNmMTc2N2VhZmI4NWQ1NTZhMGRlN2IyNTRjMDViMmI4Ny4uMTMw
MWVjNjYzZDNiOTZiMzMyYzg5NzU4NmIwYTNhM2FiOWU3NTc0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25m
aWd1cmF0aW9uLmgKQEAgLTQzLDE3ICs0MywyMyBAQCBzdHJ1Y3QgVmlkZW9Db25maWd1cmF0aW9u
IHsKICAgICBzdGQ6Om9wdGlvbmFsPEhkck1ldGFkYXRhVHlwZT4gaGRyTWV0YWRhdGFUeXBlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4gdHJhbnNmZXJGdW5jdGlvbjsKIAot
ICAgIFZpZGVvQ29uZmlndXJhdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBWaWRlb0Nv
bmZpZ3VyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBWaWRlb0NvbmZpZ3VyYXRp
b24gaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAotaW5saW5lIFZpZGVvQ29uZmlndXJhdGlvbiBWaWRlb0NvbmZpZ3VyYXRpb246Omlzb2xh
dGVkQ29weSgpIGNvbnN0CitpbmxpbmUgVmlkZW9Db25maWd1cmF0aW9uIFZpZGVvQ29uZmlndXJh
dGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IGNvbnRlbnRUeXBl
Lmlzb2xhdGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBmcmFtZXJhdGUsIGFscGhh
Q2hhbm5lbCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFuc2ZlckZ1bmN0aW9uIH07
CiB9CiAKK2lubGluZSBWaWRlb0NvbmZpZ3VyYXRpb24gVmlkZW9Db25maWd1cmF0aW9uOjppc29s
YXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IFdURk1vdmUoY29udGVudFR5cGUpLmlzb2xh
dGVkQ29weSgpLCB3aWR0aCwgaGVpZ2h0LCBiaXRyYXRlLCBmcmFtZXJhdGUsIGFscGhhQ2hhbm5l
bCwgY29sb3JHYW11dCwgaGRyTWV0YWRhdGFUeXBlLCB0cmFuc2ZlckZ1bmN0aW9uIH07Cit9CisK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFZpZGVvQ29uZmlndXJhdGlvbjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDZh
M2FhODdkODkzMWM0YjgwY2EwZGVhNzM4MDZiNTcwYzg2NzhlNTguLjM0ZTMwMjVmNzQxYzZhOWU5
ZjIzYzQ0YjQ3ODkzMWI3OGQ4MDk1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC00Miwx
OSArNDIsMjcgQEAgc3RydWN0IFJUQ0RhdGFDaGFubmVsSW5pdCB7CiAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZCBzaG9ydD4gaWQ7CiAgICAgUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5IHsgUlRD
UHJpb3JpdHlUeXBlOjpMb3cgfTsKIAotICAgIFJUQ0RhdGFDaGFubmVsSW5pdCBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JjsKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJ
bml0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIFJUQ0RhdGFDaGFubmVsSW5pdCBS
VENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgUlRDRGF0YUNo
YW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewog
ICAgIGF1dG8gY29weSA9ICp0aGlzOwogICAgIGNvcHkucHJvdG9jb2wgPSBwcm90b2NvbC5pc29s
YXRlZENvcHkoKTsKICAgICByZXR1cm4gY29weTsKIH0KIAoraW5saW5lIFJUQ0RhdGFDaGFubmVs
SW5pdCBSVENEYXRhQ2hhbm5lbEluaXQ6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAgYXV0byBj
b3B5ID0gV1RGTW92ZSgqdGhpcyk7CisgICAgY29weS5wcm90b2NvbCA9IFdURk1vdmUoY29weS5w
cm90b2NvbCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgUlRDRGF0YUNoYW5uZWxJbml0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWQgPDwgbWF4UGFja2V0TGlm
ZVRpbWUgPDwgbWF4UmV0cmFuc21pdHMgPDwgcHJvdG9jb2wgPDwgbmVnb3RpYXRlZCA8PCBpZCA8
PCBwcmlvcml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KaW5kZXggODhjYTI3ZWFiODUwMWU0NGRiMDc1YmU4YWExZGU1MmU2ZGVmMjBi
ZC4uZWI2ZjlhZmZhZTc4Mzg1NGE1MDNmYzVjOWQ4Y2I4MDc3NTI1Zjc1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTIwMSw3
ICsyMDEsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJl
c2hBdWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoU3lu
YyhbJl0gewogICAgICAgICBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VzKCk7CiAgICAgfSk7Ci0gICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZN
b3ZlKG5ld0F1ZGlvRGV2aWNlcykuaXNvbGF0ZWRDb3B5KCkpOworICAgIHNldEF1ZGlvQ2FwdHVy
ZURldmljZXMoY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSkpOwogfQog
CiB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJl
RGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbikKQEAgLTIxNiw3
ICsyMTYsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1
dGVDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcgogCiAgICAgbV9kaXNwYXRjaFF1ZXVl
LT5kaXNwYXRjaChbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11
dGFibGUgewogICAgICAgICBhdXRvIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZXMoKTsKLSAgICAgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUo
Y29tcGxldGlvbiksIG5ld0F1ZGlvRGV2aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKS5p
c29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbldlYlRocmVhZE9yRGlz
cGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShuZXdBdWRpb0RldmljZXMpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzZXRBdWRp
b0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CiAgICAgICAgICAgICBj
b21wbGV0aW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW0KaW5kZXggOGUzNzU4ZmU2NmFiODZhNjZhYjJkNzA5N2Q0Y2Y1NGYyOTdjMGZiOS4u
M2U1MWZlMTU2NzVkNzMzYmNjZWY2OWNjOThhNTAzN2NlNmNkNTc1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KQEAgLTE4MCw3ICsxODAsNyBAQCBWZWN0b3I8Q2FwdHVyZURl
dmljZT4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmV0cmlldmVDYXB0dXJlRGV2aWNlcygpCiB2
b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5k
aXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBkZXZpY2VMaXN0ID0gcmV0cmlldmVDYXB0dXJlRGV2aWNlcygpLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgeyAgICAgICAgICAgIAorICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRldmljZUxp
c3QgPSBjcm9zc1RocmVhZENvcHkocmV0cmlldmVDYXB0dXJlRGV2aWNlcygpKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGJvb2wgZGV2aWNlSGFzQ2hhbmdlZCA9IG1fZGV2aWNlcy5zaXplKCkg
IT0gZGV2aWNlTGlzdC5zaXplKCk7CiAgICAgICAgICAgICBpZiAoIWRldmljZUhhc0NoYW5nZWQp
IHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IGRldmljZUxp
c3Quc2l6ZSgpOyArK2NwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IGQ4MGM1YmQ2YzAzZGY1MmFkMTEzOWNlNDM0YzRh
NGE1MzM4MTRlYTcuLmJkNTE2Y2Y2YzY1ZjJkYjQwNTE4ZjBjZDFkN2U5N2U4Zjc0ZTM4NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNw
cApAQCAtNDIsNyArNDIsNyBAQCBIVFRQSGVhZGVyTWFwOjpIVFRQSGVhZGVyTWFwKCkKIHsKIH0K
IAotSFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAorSFRU
UEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAg
SFRUUEhlYWRlck1hcCBtYXA7CiAgICAgbWFwLm1fY29tbW9uSGVhZGVycyA9IGNyb3NzVGhyZWFk
Q29weShtX2NvbW1vbkhlYWRlcnMpOwpAQCAtNTAsNiArNTAsMTQgQEAgSFRUUEhlYWRlck1hcCBI
VFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBtYXA7CiB9CiAK
K0hUVFBIZWFkZXJNYXAgSFRUUEhlYWRlck1hcDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBI
VFRQSGVhZGVyTWFwIG1hcDsKKyAgICBtYXAubV9jb21tb25IZWFkZXJzID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUobV9jb21tb25IZWFkZXJzKSk7CisgICAgbWFwLm1fdW5jb21tb25IZWFkZXJz
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV91bmNvbW1vbkhlYWRlcnMpKTsKKyAgICByZXR1
cm4gbWFwOworfQorCiBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3QKIHsKICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBmYTAzN2ZjZjk2
ODE3M2MwY2E5M2Q0NzFjM2RkNDFkYzQ4NzBiMGNiLi4xZmUxOWQzMTE4YjEzYmFhOGI5Y2IwNGIz
ZjdkZTY5OWJkODBmZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaApAQCAtNDAsNyArNDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIEhUVFBI
ZWFkZXJOYW1lIGtleTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogCi0gICAgICAgIENvbW1vbkhl
YWRlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGtleSAsIHZhbHVlLmlzb2xhdGVk
Q29weSgpIH07IH0KKyAgICAgICAgQ29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYg
eyByZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIENvbW1v
bkhlYWRlciBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IGtleSAsIFdURk1vdmUodmFsdWUp
Lmlzb2xhdGVkQ29weSgpIH07IH0KICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsK
IApAQCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBrZXk7CiAgICAgICAg
IFN0cmluZyB2YWx1ZTsKIAotICAgICAgICBVbmNvbW1vbkhlYWRlciBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgp
IH07IH0KKyAgICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJl
dHVybiB7IGtleS5pc29sYXRlZENvcHkoKSAsIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAg
ICAgICAgVW5jb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3Zl
KGtleSkuaXNvbGF0ZWRDb3B5KCkgLCBXVEZNb3ZlKHZhbHVlKS5pc29sYXRlZENvcHkoKSB9OyB9
CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxVbmNvbW1vbkhlYWRlcj4gZGVjb2RlKERlY29kZXImKTsKIApAQCAtMTM0LDcgKzEzNiw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwKCk7CiAKICAgICAv
LyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVy
IHRocmVhZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJjsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgp
ICYmOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFkZXJz
LmlzRW1wdHkoKSAmJiBtX3VuY29tbW9uSGVhZGVycy5pc0VtcHR5KCk7IH0KICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbW9uSGVhZGVycy5zaXplKCkgKyBtX3VuY29tbW9uSGVh
ZGVycy5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IDZlNDVhYTE3NmQwN2YyMjkxYmJlMjM1
NTA3NzY1YmFiNTg4YWMxZjQuLjM4NGRjNzE0NzJiYjYwMTFkNmNkZTAzMWFhOGU4MmM1YTIyYzFk
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNsaWVudHM6OmNsYWltKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxEZWZl
cnJlZFByCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0
aW9uLT5jbGFpbShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCByZXN1bHQgPSBpc29sYXRl
ZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAg
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLm1fcGVuZGluZ1By
b21pc2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiBwZW5kaW5nUHJvbWlzZSB7IHByb21pc2UucmVsZWFzZU5vbk51
bGwoKSB9OwogICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS5zZXR0bGUoV1RGTW92
ZShyZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNDU2NzFjZjI3YTM0
MWVjNzU5MTJjNWYwMTQyOTNiMTRlZDhmYWI4Zi4uZTYyOGVmMGVhNDcwZmEyNmU2NWFlMzQ5NmVm
ZmZiZDFlMTc2NDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTM3OCw3ICsz
NzgsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKFZl
Y3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgdXBkYXRlZFJlZ2lz
dHJhdGlvbnMuY2xlYXIoKTsKICAgICAgICAgICAgIHJlbW92ZWRSZWdpc3RyYXRpb25zLmNsZWFy
KCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHN1Y2Nlc3MsIHB1c2hDb3VudGVyLCB1cGRh
dGVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUodXBkYXRlZFJlZ2lzdHJhdGlvbnMpLmlzb2xhdGVk
Q29weSgpLCByZW1vdmVkUmVnaXN0cmF0aW9ucyA9IFdURk1vdmUocmVtb3ZlZFJlZ2lzdHJhdGlv
bnMpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc3VjY2VzcywgcHVzaENvdW50
ZXIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodXBkYXRl
ZFJlZ2lzdHJhdGlvbnMpKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucykpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFzdWNj
ZXNzICYmIChwdXNoQ291bnRlciArIDEpID09IG1fcHVzaENvdW50ZXIpIHsKICAgICAgICAgICAg
ICAgICAvLyBXZSByZXRyeSB3cml0aW5nIG9uY2UgaWYgbm8gb3RoZXIgY2hhbmdlIHdhcyBwdXNo
ZWQuCiAgICAgICAgICAgICAgICAgc2NoZWR1bGVQdXNoQ2hhbmdlcyhXVEZNb3ZlKHVwZGF0ZWRS
ZWdpc3RyYXRpb25zKSwgV1RGTW92ZShyZW1vdmVkUmVnaXN0cmF0aW9ucyksIFNob3VsZFJldHJ5
OjpObywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXggZWE1Y2E2ZGIzNDZhNjIxNzgyMDcyNjMxYTM0
ZjIwMTcyNmM3NzU2OC4uMzM2ZmVhODZlYjhiYjc4Y2EzNmZjNDMyOTg0ZWVhNGMyMmIzYmM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBAIC0zOSwx
NyArMzksOCBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAgIFNldHRpbmdzOjpWYWx1
ZXMgc2V0dGluZ3NWYWx1ZXM7CiAgICAgYm9vbCBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lOwogCi0g
ICAgV29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAg
ICAgICBqc1J1bnRpbWVGbGFncywKLSAgICAgICAgICAgIHNhbXBsZVJhdGUsCi0gICAgICAgICAg
ICBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLAotICAgICAgICAgICAgc2V0dGluZ3NWYWx1ZXMu
aXNvbGF0ZWRDb3B5KCksCi0gICAgICAgICAgICBpc0F1ZGlvQ29udGV4dFJlYWxUaW1lCi0gICAg
ICAgIH07Ci0gICAgfQorICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgeyByZXR1cm4geyB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBz
YW1wbGVSYXRlLCBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzZXR0aW5nc1ZhbHVlcy5pc29s
YXRlZENvcHkoKSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CisgICAgV29ya2xldFBhcmFt
ZXRlcnMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZNb3ZlKHdpbmRvd1VSTCkuaXNv
bGF0ZWRDb3B5KCksIGpzUnVudGltZUZsYWdzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKGlkZW50aWZp
ZXIpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNldHRpbmdzVmFsdWVzKS5pc29sYXRlZENvcHko
KSwgaXNBdWRpb0NvbnRleHRSZWFsVGltZSB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAppbmRleCBjY2QxZjExMjVmZTY4OTY2Njk4YThmNWY2ZDdiMGY0MWYwZTUxMzU1Li5h
NTUyOTVmMzA1NTBkZjI3NDA0YmNlNDI5OWQyZmUzNzliMGU0OWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTQ1NSwx
NSArNDU1LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1p
Z3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKICAgICB9CiAKICAgICBpZiAoIXVu
YXR0cmlidXRlZC5pc0VtcHR5KCkgfHwgIWF0dHJpYnV0ZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHVuYXR0
cmlidXRlZCA9IHVuYXR0cmlidXRlZC5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9IGF0dHJp
YnV0ZWQuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCB1bmF0dHJpYnV0ZWQgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZSh1bmF0dHJpYnV0ZWQpKSwgYXR0cmlidXRlZCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKGF0dHJpYnV0ZWQpKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0b3JlLT5uZXR3b3JrU2Vzc2lvbigpOwogICAgICAgICAg
ICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgICAgIGF1dG8mIG1hbmFnZXIgPSBuZXR3b3JrU2Vzc2lvbi0+cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RGTW92ZShhdHRyaWJ1dGVk
KSkKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHBjbSA6IFdURk1vdmUoYXR0cmlidXRlZCkpCiAg
ICAgICAgICAgICAgICAgbWFuYWdlci5taWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9t
TGVnYWN5U3RvcmFnZShXVEZNb3ZlKHBjbSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcGNtIDogV1RG
TW92ZSh1bmF0dHJpYnV0ZWQpKQorICAgICAgICAgICAgZm9yIChhdXRvJiYgcGNtIDogV1RGTW92
ZSh1bmF0dHJpYnV0ZWQpKQogICAgICAgICAgICAgICAgIG1hbmFnZXIubWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV1RGTW92ZShwY20pLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKICAgICAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA2
NjFiMTU2M2VjNjRiNjZlNzhmMWY4ZDU1NGM2ZDlkZjM3MzFhZTZiLi5jNWNkOWYxNGRmYTI2NzY2
ZGUzMTEwMmNkYzQyNDFjZmE2OTFhNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRD
b3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc2LDE0ICs3NywxNiBAQCBzdHJ1Y3QgUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgewogICAgIFZlY3RvcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5OwogICAgIEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNl
RG9tYWluPiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3M7Ci0gICAgUmVnaXN0cmFibGVEb21haW5z
VG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3Mg
fTsgfQorICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2tBbmRE
ZWxldGVDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHkpLCBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzKSB9OyB9
CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkg
JiYgeyByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvQmxvY2tC
dXRLZWVwQ29va2llc0ZvcikpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSkpLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21h
aW5zV2l0aFN0b3JhZ2VBY2Nlc3MpKSB9OyB9CiB9Owogc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3I7CiAgICAgVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRw
T25seUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcjsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZv
cjsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0RlbGV0ZUFsbENvb2tp
ZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2ll
c0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURh
dGFGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvci5p
c29sYXRlZENvcHkoKSB9OyB9CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IGNyb3Nz
VGhyZWFkQ29weShkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSwgY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvciksIGNyb3NzVGhyZWFkQ29w
eShkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciksIGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IpIH07IH0KKyAgICBSZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBpc29sYXRlZENvcHko
KSAmJiB7IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZUFs
bENvb2tpZXNGb3IpKSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1RvRGVsZXRlQWxs
QnV0SHR0cE9ubHlDb29raWVzRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNU
b0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSksIGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGRvbWFpbnNUb0VuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcikpIH07IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBkb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yLmlzRW1w
dHkoKSAmJiBkb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSAm
JiBkb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IuaXNFbXB0eSgpOyB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z0luZm8uY3BwCmluZGV4IDU1NGZkMmQ4ZjBkZDFiOWM3OThlMDY4NTYxMmQx
YjhkOGYwNmM3ZTIuLmQ1MmFkNmE0OTI2OWZjYzBhZTQxMjQ3ZTgxNmZmZGRiMGQxZTNmOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwCkBAIC0yNiwxNiArMjYsMjggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIgog
CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQ6
OlBDTSB7CiAKLURlYnVnSW5mbyBEZWJ1Z0luZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CitEZWJ1
Z0luZm8gRGVidWdJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAmCit7CisgICAgcmV0dXJuIHsg
Y3Jvc3NUaHJlYWRDb3B5KG1lc3NhZ2VzKSB9OworfQorCitEZWJ1Z0luZm8gRGVidWdJbmZvOjpp
c29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7IG1lc3NhZ2VzLmlzb2xhdGVkQ29weSgp
IH07CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobWVzc2FnZXMpKSB9Owog
fQogCi1EZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdlOjppc29sYXRlZENvcHko
KSBjb25zdAorRGVidWdJbmZvOjpNZXNzYWdlIERlYnVnSW5mbzo6TWVzc2FnZTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IG1lc3NhZ2VMZXZlbCwgbWVzc2FnZS5pc29s
YXRlZENvcHkoKSB9OwogfQogCitEZWJ1Z0luZm86Ok1lc3NhZ2UgRGVidWdJbmZvOjpNZXNzYWdl
Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiB7IG1lc3NhZ2VMZXZlbCwgV1RGTW92
ZShtZXNzYWdlKS5pc29sYXRlZENvcHkoKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6
OlBDTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnSW5mby5oCmluZGV4IDUyNTc3ODRiNGUxOWYzODBhYTIwNmJjMmE3
Njg4ZGM5ZjVlZTNkY2YuLjBiOTk4NGM0NjRkY2UxOWFhMzRkNWRlOGRmNjNhYmVlM2EyNmZkZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdJbmZvLmgKQEAgLTM2LDEyICszNiwxNCBAQCBzdHJ1Y3QgRGVidWdJ
bmZvIHsKICAgICAgICAgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsOwogICAgICAgICBT
dHJpbmcgbWVzc2FnZTsKIAotICAgICAgICBNZXNzYWdlIGlzb2xhdGVkQ29weSgpIGNvbnN0Owor
ICAgICAgICBNZXNzYWdlIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgICAgIE1lc3NhZ2Ug
aXNvbGF0ZWRDb3B5KCkgJiY7CiAgICAgfTsKIAogICAgIFZlY3RvcjxNZXNzYWdlPiBtZXNzYWdl
czsKIAotICAgIERlYnVnSW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBEZWJ1Z0luZm8g
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBEZWJ1Z0luZm8gaXNvbGF0ZWRDb3B5KCkgJiY7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCmluZGV4IGFiNTA5
NDA4MTcyNDRkNzI5MWIxOTgxODQzNmU1ZDUxODJlYTQ5NjQuLmJiNDRjZGYxOGFhODM4NjkzYzQy
YzgzMGQxYzA4MmFkNWViYWQ1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIHZvaWQgU3RvcmU6OmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXCiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4gY29udmVydGVkQXR0cmlidXRpb25zOwogICAgICAgICBpZiAo
bV9kYXRhYmFzZSkKICAgICAgICAgICAgIGNvbnZlcnRlZEF0dHJpYnV0aW9ucyA9IG1fZGF0YWJh
c2UtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwotICAgICAgICBwb3N0
VGFza1JlcGx5KFtjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMgPSBjb252ZXJ0ZWRBdHRyaWJ1dGlvbnMu
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbnZlcnRlZEF0dHJp
YnV0aW9ucyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvbnZlcnRlZEF0dHJpYnV0aW9ucykp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb252ZXJ0ZWRBdHRy
aWJ1dGlvbnMpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBjNmQ0
YmNiNzAyMjk5OTAyYWE4MTg0N2FiOTg2YmU4YzMxOWQ3ZjlmLi42NWNhNGMwYzE0ZjYxYThjMzJh
OTRjNDQ0YmY0MTM2NzNhNWFlMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01NTEsNyArNTUy
LDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBpZiAoIXBhcnNlZFJ1bGVzLmhhc192
YWx1ZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgcGFyc2Vk
UnVsZXMuZXJyb3IoKSk7CiAgICAgCi0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCksIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IHBhcnNl
ZFJ1bGVzLnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENv
cHkoKSwganNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUocGFyc2VkUnVsZXMpLnZhbHVlKCkpLCBzdG9yZVBhdGggPSBtX3N0b3Jl
UGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVk
UGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGZhbHNlKTsKIAogICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNvbXBpbGVkVG9GaWxlKFdURk1vdmUoanNvbiksIFdURk1vdmUocGFyc2VkUnVsZXMpLCBw
YXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGFsQ29u
dGFpbmVyQ29udHJvbENsYXNzaWZpZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Nb2RhbENvbnRhaW5lckNvbnRyb2xDbGFzc2lmaWVyLm1tCmluZGV4IDJmMDM3NDhiN2NiMThm
YWE4OTJhOWMyZWFjZDNiNzE2NTlhM2ZjYTEuLjk0MTIxZTdjZjFkZWZkMGE1NzUwNjgwNjkyOGU2
NGRjMTIzYWI1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01v
ZGFsQ29udGFpbmVyQ29udHJvbENsYXNzaWZpZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTW9kYWxDb250YWluZXJDb250cm9sQ2xhc3NpZmllci5tbQpAQCAtMjA3LDcg
KzIwNyw3IEBAIHN0YXRpYyBWZWN0b3I8TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4gY29tcHV0
ZVByZWRpY3Rpb25zKE1MTW9kZWwgKm1vZGVsLCBWZWN0CiB2b2lkIE1vZGFsQ29udGFpbmVyQ29u
dHJvbENsYXNzaWZpZXI6OmNsYXNzaWZ5KFZlY3RvcjxTdHJpbmc+JiYgdGV4dHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPE1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+JiYpPiYmIGNv
bXBsZXRpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgdGV4dHMgPSB0ZXh0cy5pc29sYXRlZENvcHkoKSwgY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHRleHRzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodGV4dHMpKSwgY29tcGxl
dGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgIGxvYWRNb2Rl
bElmTmVlZGVkKCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbiksIHByZWRpY3Rpb25zID0gY29tcHV0ZVByZWRpY3Rpb25z
KG1fbW9kZWwuZ2V0KCksIFdURk1vdmUodGV4dHMpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb24oV1RGTW92ZShwcmVkaWN0aW9ucykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNDMzOTM0NjAx
NTM1YTBkNDZlM2U4OTg3YjgzNjg0MjM4NzA2MDVjNy4uNTNhNmJhNDM5OTAzY2RkOWJmYTcxNWM3
MDBhNGRmYjMyN2ZhZTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0TWVkaWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVl
dWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFt3ZWFrUHJvY2VzcyA9IFdl
YWtQdHIgeyBwcm9jZXNzIH1dIHsKICAgICAgICAgYXV0byBjYXB0aW9uRGlzcGxheU1vZGUgPSBX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1DYXB0aW9uRGlz
cGxheU1vZGUoKTsKICAgICAgICAgYXV0byBwcmVmZXJyZWRMYW5ndWFnZXMgPSBXZWJDb3JlOjpD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6cGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMo
KTsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtQcm9jZXNzLCBjYXB0aW9uRGlzcGxh
eU1vZGUsIHByZWZlcnJlZExhbmd1YWdlcyA9IFdURk1vdmUocHJlZmVycmVkTGFuZ3VhZ2VzKS5p
c29sYXRlZENvcHkoKV0geworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1Byb2Nlc3Ms
IGNhcHRpb25EaXNwbGF5TW9kZSwgcHJlZmVycmVkTGFuZ3VhZ2VzID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUocHJlZmVycmVkTGFuZ3VhZ2VzKSldIHsKICAgICAgICAgICAgIGlmICh3ZWFrUHJv
Y2VzcykKICAgICAgICAgICAgICAgICB3ZWFrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6U2V0TWVkaWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMoY2FwdGlvbkRpc3BsYXlNb2Rl
LCBwcmVmZXJyZWRMYW5ndWFnZXMpLCAwKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyZmRkYjg0OTUyZDA4ODlhODgyNTRlNDc3YmZm
MjMyMGI2MGYwMWRjLi43YzdiZjE3MjhjMTRiZDNkOGI4YTA2OGVjYjA4MWQ0MDg4NTcwMmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcxOTgsMTMgKzcx
OTgsMTMgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0
aEltYWdlVHJhbnNjb2RpbmcoY29uc3QgVmVjdG9yPFMKICAgICBhdXRvIHRyYW5zY29kaW5nVVRJ
ID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOwogICAgIGF1
dG8gdHJhbnNjb2RpbmdFeHRlbnNpb24gPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVm
ZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSh0cmFuc2NvZGluZ01JTUVUeXBlKTsKIAotICAgIHNo
YXJlZEltYWdlVHJhbnNjb2RpbmdRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgZmlsZVVSTHMgPSBmaWxlVVJMcy5pc29sYXRlZENvcHkoKSwgdHJh
bnNjb2RpbmdVUkxzID0gdHJhbnNjb2RpbmdVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGlu
Z1VUSSA9IHRyYW5zY29kaW5nVVRJLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ0V4dGVuc2lv
biA9IHRyYW5zY29kaW5nRXh0ZW5zaW9uLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAg
IHNoYXJlZEltYWdlVHJhbnNjb2RpbmdRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgZmlsZVVSTHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVVSTHMp
LCB0cmFuc2NvZGluZ1VSTHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0cmFuc2NvZGluZ1VS
THMpKSwgdHJhbnNjb2RpbmdVVEkgPSBXVEZNb3ZlKHRyYW5zY29kaW5nVVRJKS5pc29sYXRlZENv
cHkoKSwgdHJhbnNjb2RpbmdFeHRlbnNpb24gPSBXVEZNb3ZlKHRyYW5zY29kaW5nRXh0ZW5zaW9u
KS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICAgICAgYXV0byB0cmFuc2NvZGVkVVJMcyA9IHRyYW5zY29kZUltYWdl
cyh0cmFuc2NvZGluZ1VSTHMsIHRyYW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4dGVuc2lvbik7
CiAgICAgICAgIEFTU0VSVCh0cmFuc2NvZGluZ1VSTHMuc2l6ZSgpID09IHRyYW5zY29kZWRVUkxz
LnNpemUoKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZmlsZVVSTHMgPSBmaWxlVVJMcy5p
c29sYXRlZENvcHkoKSwgdHJhbnNjb2RlZFVSTHMgPSB0cmFuc2NvZGVkVVJMcy5pc29sYXRlZENv
cHkoKV0oKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVVUkxzID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoZmlsZVVSTHMpKSwgdHJhbnNjb2RlZFVSTHMgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZSh0cmFuc2NvZGVkVVJMcykpXSgpIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lvbkZpbGVzOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmaWxlVVJMcy5zaXplKCk7IGkg
PCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
ZTk3OGI5ZDkwOWJhZGVjNjQ0OWE2NTMxZTVjNzU4M2FlNzE4YzdhYy4uNDgyMTk4NzM5Y2ZkYTVm
Y2U2NjIxMDdjNGUyN2UzNTFkMzg0NzJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtNjk1LDkgKzY5NSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJld2FybUds
b2JhbGx5KCkKICAgICBXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KCk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihjb25z
dCBXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24mIHByZXdhcm1JbmZvcm1hdGlvbikKK3ZvaWQg
V2ViUHJvY2Vzczo6cHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihXZWJDb3JlOjpQcmV3YXJt
SW5mb3JtYXRpb24mJiBwcmV3YXJtSW5mb3JtYXRpb24pCiB7Ci0gICAgV2ViQ29yZTo6UHJvY2Vz
c1dhcm1pbmc6OnByZXdhcm1XaXRoSW5mb3JtYXRpb24ocHJld2FybUluZm9ybWF0aW9uKTsKKyAg
ICBXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybVdpdGhJbmZvcm1hdGlvbihXVEZNb3Zl
KHByZXdhcm1JbmZvcm1hdGlvbikpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOTZlNmNlZTIyMThmNmE5YjAwNTNkZDlmZmEw
ZDVkODNjZDNiNjRjNS4uNjY4ODMxMGQ5NjE1OTdhZTc2Njk4OGRhNmEzYThlYjc4NTU5ZTRhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00MTEsNyArNDExLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMo
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHByZXdhcm1HbG9i
YWxseSgpOwotICAgIHZvaWQgcHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihjb25zdCBXZWJD
b3JlOjpQcmV3YXJtSW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHByZXdhcm1XaXRoRG9tYWluSW5m
b3JtYXRpb24oV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uJiYpOwogCiAjaWYgVVNFKE9TX1NU
QVRFKQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGFkZGl0aW9uYWxTdGF0ZUZvckRpYWdu
b3N0aWNSZXBvcnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggMGNhZGI1MDQyYmExNjEwNzdmOTQ0
OWE5NzNkY2Y5ODMyZDM3MDJhZS4uNzc0M2Q1MDg4NTI0YmNlNWQ3ZDNmMzQ5MmZjNzcxN2E4N2Fh
MTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cgog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNp
b25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYgZGF0
YWJhc2VzKQogewotICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyA9IGRhdGFiYXNlcy5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFz
ZXMgPSBjcm9zc1RocmVhZENvcHkoZGF0YWJhc2VzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1
ZXN0SWRlbnRpZmllciwgV1RGTW92ZShkYXRhYmFzZXMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZmExMjQxOGZhMDZk
MmI1MjhmYmQ2YjE2OGQwN2ZlZWIzMTFiZGZjLi5hODUxY2NlZTY5OWNlOTYzYTdhYTVlZDgxMjUx
MzBiZDgxNjMwMzdkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9z
cyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzc1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBF
eHBhbmQgdGVzdCBjb3ZlcmFnZSBmb3IgY3Jvc3NUaHJlYWRDb3B5KCkgYW5kIG1ha2Ugc3VyZSB0
aGUgb3B0aW1pemF0aW9ucyBhcmUgd29ya2luZworICAgICAgICB3aGVuIGNhbGxlZCBvbiBhIHIt
dmFsdWUgcmVmZXJlbmNlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAzLTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gRGVyaXZlIGJyYW5jaCBuYW1lIGZy
b20gYnVnIHRpdGxlIChGb2xsb3ctdXAgZml4KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4IGNkNGRjMjNjN2I2YWVmYjRj
OTlmZjUwODQwMzMyMjExMzMzZDhkZWIuLjRkNjQ3NTA2OGMzZGFiZGQyNGMzMWZjMTBkZDhiODQw
YjEwNGJkM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9z
c1RocmVhZENvcGllci5jcHAKQEAgLTI3LDYgKzI3LDkgQEAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KIAogI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx2YXJpYW50Pgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
QEAgLTg1LDQgKzg4LDExOCBAQCBURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgQ29weVJWT3B0
aW9uYWxTdHJpbmdIYXZpbmdUd29SZWYpCiAgICAgRVhQRUNUX1RSVUUoY29weS0+aW1wbCgpLT5o
YXNPbmVSZWYoKSk7CiB9CiAKK1RFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBQYWlyKQorewor
ICAgIHN0ZDo6cGFpciBwYWlyMSB7ICJmb28iX3N0ciwgImJhciJfc3RyIH07CisgICAgYXV0byog
Zmlyc3RTdHJpbmdJbXBsID0gcGFpcjEuZmlyc3QuaW1wbCgpOworICAgIGF1dG8qIHNlY29uZFN0
cmluZ0ltcGwgPSBwYWlyMS5zZWNvbmQuaW1wbCgpOworICAgIGF1dG8gY29weSA9IGNyb3NzVGhy
ZWFkQ29weShwYWlyMSk7CisgICAgRVhQRUNUX0VRKGNvcHksIHBhaXIxKTsKKyAgICBFWFBFQ1Rf
TkUoY29weS5maXJzdC5pbXBsKCksIGZpcnN0U3RyaW5nSW1wbCk7CisgICAgRVhQRUNUX05FKGNv
cHkuc2Vjb25kLmltcGwoKSwgc2Vjb25kU3RyaW5nSW1wbCk7CisKKyAgICBzdGQ6OnBhaXIgcGFp
cjIgeyAiZm9vIl9zdHIsICJiYXIiX3N0ciB9OworICAgIGZpcnN0U3RyaW5nSW1wbCA9IHBhaXIy
LmZpcnN0LmltcGwoKTsKKyAgICBzZWNvbmRTdHJpbmdJbXBsID0gcGFpcjIuc2Vjb25kLmltcGwo
KTsKKyAgICBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocGFpcjIpKTsKKyAgICBFWFBF
Q1RfRVEoY29weSwgcGFpcjEpOworICAgIEVYUEVDVF9FUShjb3B5LmZpcnN0LmltcGwoKSwgZmly
c3RTdHJpbmdJbXBsKTsKKyAgICBFWFBFQ1RfRVEoY29weS5zZWNvbmQuaW1wbCgpLCBzZWNvbmRT
dHJpbmdJbXBsKTsKKyAgICBFWFBFQ1RfVFJVRShwYWlyMi5maXJzdC5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUocGFpcjIuc2Vjb25kLmlzTnVsbCgpKTsKK30KKworVEVTVChXVEZfQ3Jvc3NU
aHJlYWRDb3BpZXIsIFZhcmlhbnQpCit7CisgICAgc3RkOjp2YXJpYW50PFN0cmluZywgVVJMPiB2
YXJpYW50OworICAgIHZhcmlhbnQgPSAiZm9vIl9zdHI7CisgICAgYXV0byogaW1wbCA9IHN0ZDo6
Z2V0PFN0cmluZz4odmFyaWFudCkuaW1wbCgpOworICAgIGF1dG8gY29weSA9IGNyb3NzVGhyZWFk
Q29weSh2YXJpYW50KTsKKyAgICBBU1NFUlRfRVEoY29weSwgdmFyaWFudCk7CisgICAgRVhQRUNU
X05FKHN0ZDo6Z2V0PFN0cmluZz4oY29weSkuaW1wbCgpLCBpbXBsKTsKKworICAgIHZhcmlhbnQg
PSBVUkwgeyAiYmFyIl9zdHIgfTsKKyAgICBpbXBsID0gc3RkOjpnZXQ8VVJMPih2YXJpYW50KS5z
dHJpbmcoKS5pbXBsKCk7CisgICAgY29weSA9IGNyb3NzVGhyZWFkQ29weSh2YXJpYW50KTsKKyAg
ICBBU1NFUlRfRVEoY29weSwgdmFyaWFudCk7CisgICAgRVhQRUNUX05FKHN0ZDo6Z2V0PFVSTD4o
Y29weSkuc3RyaW5nKCkuaW1wbCgpLCBpbXBsKTsKKworICAgIHZhcmlhbnQgPSAiZm9vIl9zdHI7
CisgICAgaW1wbCA9IHN0ZDo6Z2V0PFN0cmluZz4odmFyaWFudCkuaW1wbCgpOworICAgIGNvcHkg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh2YXJpYW50KSk7CisgICAgQVNTRVJUX0VRKHN0ZDo6
Z2V0PFN0cmluZz4oY29weSksICJmb28iX3N0cik7CisgICAgRVhQRUNUX0VRKHN0ZDo6Z2V0PFN0
cmluZz4oY29weSkuaW1wbCgpLCBpbXBsKTsKKworICAgIHZhcmlhbnQgPSBVUkwgeyAiYmFyIl9z
dHIgfTsKKyAgICBpbXBsID0gc3RkOjpnZXQ8VVJMPih2YXJpYW50KS5zdHJpbmcoKS5pbXBsKCk7
CisgICAgY29weSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZhcmlhbnQpKTsKKyAgICBBU1NF
UlRfRVEoc3RkOjpnZXQ8VVJMPihjb3B5KSwgVVJMIHsgImJhciJfc3RyIH0pOworICAgIEVYUEVD
VF9FUShzdGQ6OmdldDxVUkw+KGNvcHkpLnN0cmluZygpLmltcGwoKSwgaW1wbCk7Cit9CisKK1RF
U1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBIYXNoTWFwKQoreworICAgIEhhc2hNYXA8Q1N0cmlu
ZywgU3RyaW5nSW1wbCo+IGltcGxzOworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFw
OworICAgIG1hcC5hZGQoImZvbyJfc3RyLCAiZm9vVmFsdWUiX3N0cik7CisgICAgbWFwLmFkZCgi
YmFyIl9zdHIsICJiYXJWYWx1ZSJfc3RyKTsKKyAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6
IG1hcCkgeworICAgICAgICBpbXBscy5hZGQoa2V5LnV0ZjgoKSwga2V5LmltcGwoKSk7CisgICAg
ICAgIGltcGxzLmFkZCh2YWx1ZS51dGY4KCksIHZhbHVlLmltcGwoKSk7CisgICAgfQorCisgICAg
YXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KG1hcCk7CisgICAgRVhQRUNUX0VRKGNvcHksIG1h
cCk7CisgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBjb3B5KSB7CisgICAgICAgIEVYUEVD
VF9ORShrZXkuaW1wbCgpLCBpbXBscy5nZXQoa2V5LnV0ZjgoKSkpOworICAgICAgICBFWFBFQ1Rf
TkUodmFsdWUuaW1wbCgpLCBpbXBscy5nZXQodmFsdWUudXRmOCgpKSk7CisgICAgfQorCisgICAg
YXV0byBjb3B5MiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1hcCkpOworICAgIEVYUEVDVF9F
UShjb3B5MiwgY29weSk7CisgICAgRVhQRUNUX1RSVUUobWFwLmlzRW1wdHkoKSk7CisgICAgZm9y
IChhdXRvJiBba2V5LCB2YWx1ZV0gOiBjb3B5MikgeworICAgICAgICBFWFBFQ1RfRVEoa2V5Lmlt
cGwoKSwgaW1wbHMuZ2V0KGtleS51dGY4KCkpKTsKKyAgICAgICAgRVhQRUNUX0VRKHZhbHVlLmlt
cGwoKSwgaW1wbHMuZ2V0KHZhbHVlLnV0ZjgoKSkpOworICAgIH0KK30KKworVEVTVChXVEZfQ3Jv
c3NUaHJlYWRDb3BpZXIsIEhhc2hTZXQpCit7CisgICAgSGFzaE1hcDxDU3RyaW5nLCBTdHJpbmdJ
bXBsKj4gaW1wbHM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIHNldC5hZGQoImZv
byJfc3RyKTsKKyAgICBzZXQuYWRkKCJiYXIiX3N0cik7CisgICAgZm9yIChhdXRvJiBpdGVtIDog
c2V0KQorICAgICAgICBpbXBscy5hZGQoaXRlbS51dGY4KCksIGl0ZW0uaW1wbCgpKTsKKworICAg
IGF1dG8gY29weSA9IGNyb3NzVGhyZWFkQ29weShzZXQpOworICAgIEVYUEVDVF9FUShjb3B5LCBz
ZXQpOworICAgIGZvciAoYXV0byYgaXRlbSA6IGNvcHkpCisgICAgICAgIEVYUEVDVF9ORShpdGVt
LmltcGwoKSwgaW1wbHMuZ2V0KGl0ZW0udXRmOCgpKSk7CisKKyAgICBhdXRvIGNvcHkyID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoc2V0KSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLCBjb3B5KTsK
KyAgICBFWFBFQ1RfVFJVRShzZXQuaXNFbXB0eSgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBj
b3B5MikKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW0uaW1wbCgpLCBpbXBscy5nZXQoaXRlbS51dGY4
KCkpKTsKK30KKworVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIE9wdGlvbmFsKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbDsKKyAgICBvcHRpb25hbCA9ICJmb28iX3N0
cjsKKyAgICBhdXRvKiBpbXBsID0gb3B0aW9uYWwtPmltcGwoKTsKKworICAgIGF1dG8gY29weSA9
IGNyb3NzVGhyZWFkQ29weShvcHRpb25hbCk7CisgICAgRVhQRUNUX0VRKGNvcHksIG9wdGlvbmFs
KTsKKyAgICBFWFBFQ1RfTkUoY29weS0+aW1wbCgpLCBpbXBsKTsKKworICAgIGF1dG8gY29weTIg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvcHRpb25hbCkpOworICAgIEVYUEVDVF9FUShjb3B5
MiwgY29weSk7CisgICAgRVhQRUNUX0VRKGNvcHkyLT5pbXBsKCksIGltcGwpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVj
dG9yLmNwcAppbmRleCA1ZDQ2YzNjYmU5M2FjY2UzNmRhOWY2ZTJjMGE1NDczZWZlOWJiMDVkLi4w
YjE2NjcwYTQyMjFjMGQ3ZTJiZDRkZWFjYzJlZDVkNzdlMzZkNGMyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKIAogI2luY2x1ZGUgIk1vdmVPbmx5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTI4LDcgKzEyOSw3IEBA
IFRFU1QoV1RGX1ZlY3RvciwgQ29uc3RydWN0V2l0aEZyb21TdHJpbmcpCiAgICAgRVhQRUNUX1RS
VUUoczMuaXNOdWxsKCkpOwogfQogCi1URVNUKFdURl9WZWN0b3IsIElzb2xhdGVDb3B5KQorVEVT
VChXVEZfVmVjdG9yLCBJc29sYXRlZENvcHkpCiB7CiAgICAgU3RyaW5nIHMxID0gInMxIjsKICAg
ICBTdHJpbmcgczIgPSAiczIiOwpAQCAtMTQwLDcgKzE0MSw3IEBAIFRFU1QoV1RGX1ZlY3Rvciwg
SXNvbGF0ZUNvcHkpCiAgICAgYXV0byogZGF0YTEgPSB2ZWN0b3IxWzBdLmltcGwoKTsKICAgICBh
dXRvKiBkYXRhMiA9IHZlY3RvcjFbMV0uaW1wbCgpOwogCi0gICAgYXV0byB2ZWN0b3IyID0gdmVj
dG9yMS5pc29sYXRlZENvcHkoKTsKKyAgICBhdXRvIHZlY3RvcjIgPSBjcm9zc1RocmVhZENvcHko
dmVjdG9yMSk7CiAKICAgICBFWFBFQ1RfVFJVRSgiczEiID09IHZlY3RvcjJbMF0pOwogICAgIEVY
UEVDVF9UUlVFKCJzMiIgPT0gdmVjdG9yMlsxXSk7CkBAIC0xNDgsNyArMTQ5LDcgQEAgVEVTVChX
VEZfVmVjdG9yLCBJc29sYXRlQ29weSkKICAgICBFWFBFQ1RfRkFMU0UoZGF0YTEgPT0gdmVjdG9y
MlswXS5pbXBsKCkpOwogICAgIEVYUEVDVF9GQUxTRShkYXRhMiA9PSB2ZWN0b3IyWzFdLmltcGwo
KSk7CiAKLSAgICBhdXRvIHZlY3RvcjMgPSBXVEZNb3ZlKHZlY3RvcjEpLmlzb2xhdGVkQ29weSgp
OworICAgIGF1dG8gdmVjdG9yMyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZlY3RvcjEpKTsK
ICAgICBFWFBFQ1RfRVEoMFUsIHZlY3RvcjEuc2l6ZSgpKTsKIAogICAgIEVYUEVDVF9UUlVFKCJz
MSIgPT0gdmVjdG9yM1swXSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>