<?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>230464</bug_id>
          
          <creation_ts>2021-09-19 11:16:14 -0700</creation_ts>
          <short_desc>Stop using makeRef(*this) / makeRefPtr(this)</short_desc>
          <delta_ts>2021-09-20 10:18:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="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>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794901</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-19 11:16:14 -0700</bug_when>
    <thetext>Stop using makeRef(*this) / makeRefPtr(this) and use Ref { *this } / RefPtr { this } instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794904</commentid>
    <comment_count>1</comment_count>
      <attachid>438604</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-19 11:20:03 -0700</bug_when>
    <thetext>Created attachment 438604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794945</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-19 16:19:31 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795136</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-20 10:17:50 -0700</bug_when>
    <thetext>Committed r282755 (241892@main): &lt;https://commits.webkit.org/241892@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438604.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795137</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-20 10:18:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/83312240&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438604</attachid>
            <date>2021-09-19 11:20:03 -0700</date>
            <delta_ts>2021-09-20 10:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230464-20210919112002.patch</filename>
            <type>text/plain</type>
            <size>643068</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MmRlNjQ2ZmFjNzk3NGFkMzI3ZTJkMzg5YzE4ZmQ3MTdkYmVkZjk1Li41YjBmODE2MTRiMThlNDc3
ZmVmZTcxYjQxMWZmMjJkYzU4MGRlMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wOS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgbWFrZVJlZigqdGhpcykgLyBtYWtlUmVmUHRyKHRoaXMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA0NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdEhvc3Q6OndyYXBwZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQpOgorICAgICAgICAqIHdhc20vV2Fz
bUNvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6Y29tcGlsZUFz
eW5jKToKKyAgICAgICAgKiB3YXNtL1dhc21OYW1lU2VjdGlvbi5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpOYW1lU2VjdGlvbjo6Z2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21TdHJlYW1pbmdDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ0NvbXBpbGVyOjpkaWRSZWNl
aXZlRnVuY3Rpb25EYXRhKToKKwogMjAyMS0wOS0xNyAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlr
aGFpbEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBDZWxsVGFnIGJlaW5nIHNldCAzMiBiaXRz
IGV2ZW4gaWYgdGhlIGJhc2UgaXMgbm90IGEgY2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBiZTVhN2RhYjllZmIzNWU0MTNm
M2Q4OGJlZjA3M2UzZjY4YzAwNjE2Li42ODQ5MjJiZDkwNzAyNGJhODllMjAwZjE4MmE5OGNkMjNi
MjE4ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA5LTE5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBtYWtlUmVmKCp0aGlzKSAvIG1h
a2VSZWZQdHIodGhpcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDQ2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcDoKKyAgICAgICAgKFdURjo6V29y
a1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRl
cik6CisgICAgICAgICogd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
VEY6OlNvY2tldENvbm5lY3Rpb246OlNvY2tldENvbm5lY3Rpb24pOgorICAgICAgICAoV1RGOjpT
b2NrZXRDb25uZWN0aW9uOjp3YWl0Rm9yU29ja2V0V3JpdGFiaWxpdHkpOgorCiAyMDIxLTA5LTE4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
UyBGYW1pbHldIERlbGV0ZSBsZXR0ZXJwcmVzcyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3YjIy
MTBkMTkxN2EzNzc2Njg5YmQ1MTEyMTUzOGJlYWU1Y2ExZS4uNjVkMTY5MjQ2MTM0NWZkOTUxMWNk
YWRjZjE5NmY5N2RjZTI3YzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4NCBAQAorMjAyMS0w
OS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNp
bmcgbWFrZVJlZigqdGhpcykgLyBtYWtlUmVmUHRyKHRoaXMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA0NjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6Ondy
aXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjptYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRk
QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZSk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0RW50cnkpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9FcnJv
ckNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVycm9yQ2FsbGJhY2s6OnNjaGVkdWxl
Q2FsbGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cmll
c0NhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJh
Y2s6OnNjaGVkdWxlQ2FsbGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjphYm9ydElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2FsbFJlc3VsdEZ1bmN0aW9uV2l0aEVycm9y
TGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
Q29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlv
bk9wZXJhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmZvckVhY2hPYnNlcnZlcik6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZW1vdmVUaW1lckZpcmVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXI6Omluc2VydERUTUYpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVh
dGVBbnN3ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnNldExvY2Fs
RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnNldFJl
bW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjph
ZGRJY2VDYW5kaWRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bTo6c2V0VHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXI6OndyaXRhYmxlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnJlcGxhY2VUcmFj
ayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpjcmVhdGVTdGF0c0NvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpPblRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6Ok9uUmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6T25EYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpPbk5lZ290aWF0aW9uTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25TdGFuZGFyZGl6ZWRJY2VDb25uZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlR2F0aGVy
aW5nQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
SWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9u
RGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9u
U3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNl
dFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpPblN0YXRzRGVsaXZlcmVkKToKKyAgICAgICAgKiBNb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpzaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ09wdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OnBheW1lbnRNZXRob2RDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0Ojp1cGRhdGVXaXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0Ojpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQYXltZW50UmVxdWVzdDo6d2hlbkRldGFpbHNTZXR0bGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bW90ZVBsYXliYWNrOjp3YXRjaEF2YWlsYWJpbGl0eSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpz
dGFydFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1heVJlc3Vt
ZVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXli
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRD
aGFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6Zmlu
aXNoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpw
b3N0VGFza1RvQXVkaW9Xb3JrbGV0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0Tm9kZTo6Zmly
ZVByb2Nlc3NvckVycm9yT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0Jhc2VBdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4
dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6c3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0Ojp1cGRhdGVUYWlsUHJvY2Vzc2luZ05v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9kZURl
bGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtl
ZE5vZGVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU6OnNldEZvcm1hdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OnByb2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxs
YmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91
bnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdU
YXNrcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmZhaWxBc3luY2hyb25vdXNseSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJGcmFtZTo6Z2V0Vmlld2VyUG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVmZXJl
bmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzaHV0ZG93bik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6ZW5zdXJlSW1tZXJz
aXZlWFJEZXZpY2VJc1NlbGVjdGVkKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6c2V0RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkFuaW1hdGlvbjo6c2V0VGltZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9u
Ojp1cGRhdGVGaW5pc2hlZFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OmNhbGxG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OndoZW5TZXR0bGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01pY3JvdGFza0NhbGxiYWNrLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU01pY3JvdGFza0NhbGxiYWNrOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJNb2R1bGVTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyOjpub3RpZnlDbGllbnRGaW5pc2hlZCk6Cisg
ICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
R3JhZGllbnRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOgorICAgICAgICAqIGRvbS9B
Ym9ydFNpZ25hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBYm9ydFNpZ25hbDo6c2lnbmFsQWJv
cnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZHJlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVUaXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50T25XaW5kb3cp
OgorICAgICAgICAqIGRvbS9XaW5kb3dFdmVudExvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2luZG93RXZlbnRMb29wOjpkaWRSZWFjaFRpbWVUb1J1bik6CisgICAgICAgIChXZWJDb3JlOjpX
aW5kb3dFdmVudExvb3A6OnF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6YmFja3VwRWxlbWVudFF1ZXVlKToK
KyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlUG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjplbnN1cmVDb21wb3NpdGlvbik6CisgICAgICAg
ICogZWRpdGluZy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFu
ZDo6c2V0U3RhcnRpbmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6
OnNldEVuZGluZ1NlbGVjdGlvbik6CisgICAgICAgICogZmlsZWFwaS9CbG9iQ2FsbGJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYkNhbGxiYWNrOjpzY2hlZHVsZUNhbGxiYWNrKToKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpmaXJlSW5wdXRBbmRD
aGFuZ2VFdmVudHMpOgorICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQpOgor
ICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpkaWRDcmVhdGVGaWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzV2l0aEltYWdlVHJhbnNjb2RpbmcpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpmb2N1c0FuZFNob3dWYWxpZGF0aW9uTWVzc2FnZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6c3VibWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6
cmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpyZXN1bWVG
cm9tRG9jdW1lbnRTdXNwZW5zaW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0QXVkaW9PdXRwdXRE
ZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0U2l6ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxs
c2NyZWVuU3RhbmRieSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNjaGVkdWxlVXBk
YXRlRm9yQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YXBwbHlTdGVwKToKKyAgICAgICAgKiBo
dG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6OnNjaGVkdWxlQ29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtlWFJDb21wYXRpYmxlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjpz
Y2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0Ojp3cmFw
cGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
c3VzcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFzazo6
c2NoZWR1bGVPbmVTaG90KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAg
ICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9G
b2N1c2VkRWxlbWVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OnNjaGVkdWxlVGFza0lmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURp
ZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndpbGxT
dGFydFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OmRpc3BsYXlEaWRSZWZyZXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjppdGVyYXRl
Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpkaWRBZGRDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZEZh
aWxXaXRoRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGlu
YXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcjo6
ZWZmZWN0aXZlUmF0ZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2FtcGxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnByb3ZpZGVNZWRpYURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bi5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6bWF5
YmVCZWNvbWVSZWFkeUZvck1vcmVNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uOjpoYW5kbGVEZWNvbXByZXNzaW9uT3V0cHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6ZW5xdWV1ZURlY29kZWRT
YW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpm
bHVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWRO
b3RpZmllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWM6OmRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgorICAgICAgICAo
Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAg
KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbCk6
CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJl
SW5QaWN0dXJlKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVw
YXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAg
ICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZpbmFsaXplU2V0dXApOgorICAgICAg
ICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0V4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RV
cGRhdGVJbmxpbmVSZWN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OnJldHVyblZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAg
ICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpbGxFeGl0RnVsbHNjcmVl
bik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkRXhpdEZ1
bGxzY3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRp
ZENsZWFudXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZmZXJlZFRpbWVDaGFuZ2Vk
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyYXRlQ2hhbmdl
ZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW9D
aGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp2aWRl
b0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQpOgorICAgICAgICAo
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6Om11dGVkQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAoVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAg
ICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBsYXkp
OgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBhdXNlKToKKyAg
ICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp0b2dnbGVQbGF5U3RhdGUp
OgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnRvZ2dsZU11dGVk
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRNdXRlZCk6
CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Vm9sdW1lKToK
KyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRQbGF5aW5nT25T
ZWNvbmRTY3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNlZWtUb1RpbWUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmZhc3RTZWVrKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjplbmRTY2FubmluZyk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZSk6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UGxheWJhY2tSYXRlKToK
KyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldHVwRnVsbHNjcmVlbik6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpzdGFydFJlbmRlcmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpmb3JFYWNoT2JzZXJ2ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpmb3JFYWNo
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6Ok9uQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZTo6T25DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OmZvckVhY2hPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlOjp1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dHJpZ2dlckRldmljZXNDaGFu
Z2VkT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlOjphcHBseVJvdGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
VmlkZW9Tb3VyY2U6OndoZW5SZWFkeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckNhcHR1cmVyOjpmb3JFYWNoT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hOjpwcmVwYXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYTo6dGljayk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGljayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5v
dGlmeVJlc3BvbnNlT25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhh
bmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2Vu
ZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FsbENsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6aW52b2tlRGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6Omludm9rZUNh
bmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmhhbmRsZURhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1Bs
YXRmb3JtWFJPcGVuWFIuY3BwOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpP
cGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJE
ZXZpY2U6OnN1Ym1pdEZyYW1lKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6
d2FpdFVudGlsU3RvcHBpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpyZXF1ZXN0U3Bh
Y2VPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6
cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhS
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29u
bmVjdGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpzY2hlZHVsZVRvUnVuKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9y
V29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGFi
bGVFdmVudDo6YWRkRXh0ZW5kTGlmZXRpbWVQcm9taXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpyZXNw
b25kV2l0aCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lz
dHJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
UmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZUluc3RhbGxFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVBY3Rp
dmF0ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpw
b3N0VGFza1RvV29ya1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
cmF0aW9uRGF0YWJhc2U6OnNjaGVkdWxlUHVzaENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisKIDIw
MjEtMDktMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFts
RkNdW0ludGVncmF0aW9uXSBFbmFibGUgc29tZSB0ZXh0IHBhaW50aW5nIGZlYXR1cmVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hh
bmdlTG9nCmluZGV4IDE0Njc5MTY0MjExNGZjYTQ3MmE0NjJmMjI0ODgwOTdiOTA1NWNhZGUuLjJk
ZDZmM2I4NDNjNzE3NTE1ZGMxYTBjZDY4ZTQ1ZWNlZDFhMjZmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjggQEAKKzIwMjEtMDktMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBTdG9wIHVzaW5nIG1ha2VSZWYoKnRoaXMpIC8gbWFrZVJlZlB0cih0aGlz
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDY0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Y2xvc2VBbGxUb3BsZXZlbEJy
b3dzaW5nQ29udGV4dHMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjcmVhdGVUb3BM
ZXZlbEJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmhhbmRs
ZVVzZXJQcm9tcHRzKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z28pOgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRDdXJyZW50VVJMKToKKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbjo6YmFjayk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmZvcndhcmQp
OgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpyZWZyZXNoKToKKyAgICAgICAgKFdlYkRy
aXZlcjo6U2Vzc2lvbjo6Z2V0VGl0bGUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpn
ZXRXaW5kb3dIYW5kbGUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjbG9zZVRvcExl
dmVsQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6c3dpdGNo
VG9XaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRXaW5kb3dIYW5kbGVz
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bmV3V2luZG93KToKKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6c3dpdGNoVG9GcmFtZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNl
c3Npb246OnN3aXRjaFRvUGFyZW50RnJhbWUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
OjpnZXRUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFJlY3QpOgorICAgICAgICAoV2ViRHJpdmVyOjpT
ZXNzaW9uOjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bWF4
aW1pemVXaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjptaW5pbWl6ZVdpbmRv
dyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmZ1bGxzY3JlZW5XaW5kb3cpOgorICAg
ICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dCk6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb246OmZpbmRFbGVtZW50cyk6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb246OmdldEFjdGl2ZUVsZW1lbnQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
Ojppc0VsZW1lbnRTZWxlY3RlZCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEVs
ZW1lbnRUZXh0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0RWxlbWVudFRhZ05h
bWUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRFbGVtZW50UmVjdCk6CisgICAg
ICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmlzRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2Vi
RHJpdmVyOjpTZXNzaW9uOjppc0VsZW1lbnREaXNwbGF5ZWQpOgorICAgICAgICAoV2ViRHJpdmVy
OjpTZXNzaW9uOjpnZXRFbGVtZW50QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6Z2V0RWxlbWVudFByb3BlcnR5KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6
Z2V0RWxlbWVudENTU1ZhbHVlKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6d2FpdEZv
ck5hdmlnYXRpb25Ub0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6ZWxl
bWVudElzRmlsZVVwbG9hZCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnNlbGVjdE9w
dGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVtZW50Q2xpY2sp
OgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZSk6CisgICAg
ICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRDbGVhcik6CisgICAgICAgIChXZWJEcml2
ZXI6OlNlc3Npb246OnNldElucHV0RmlsZVVwbG9hZEZpbGVzKToKKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bjo6Z2V0UGFnZVNvdXJjZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmV4ZWN1dGVT
Y3JpcHQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFj
dGlvbik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVy
YWN0aW9ucyk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmdldEFsbENvb2tpZXMpOgor
ICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjphZGRDb29raWUpOgorICAgICAgICAoV2ViRHJp
dmVyOjpTZXNzaW9uOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
OjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6cGVyZm9y
bUFjdGlvbnMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpyZWxlYXNlQWN0aW9ucyk6
CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmRpc21pc3NBbGVydCk6CisgICAgICAgIChX
ZWJEcml2ZXI6OlNlc3Npb246OmFjY2VwdEFsZXJ0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbjo6Z2V0QWxlcnRUZXh0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6c2VuZEFs
ZXJ0VGV4dCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OnRha2VTY3JlZW5zaG90KToK
KwogMjAyMS0wNi0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlZHVjZSB1c2Ugb2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2MzQ1ZjkwY2QzZDgzNTU5YzRiYTIzNzBmODkwZDZkNzQ0ZWVlYTA1Li5kM2Q0MmU5ODk5
MTNiYWY0MTQ0MmE4Mjk0OWE2M2ZiYzY0ZTRhMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3MiBA
QAorMjAyMS0wOS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFN0b3AgdXNpbmcgbWFrZVJlZigqdGhpcykgLyBtYWtlUmVmUHRyKHRoaXMpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA0NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6Y3JlYXRlUmluZ0J1ZmZl
cik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpyZW1vdmVDb2RlZEZy
YW1lcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjbG9zZSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpyZWxlYXNlTGF5ZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpw
b3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6ZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21E
aXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzRXBoZW1lcmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCU2VydmVyOjpXZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXI6OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNsb3Nl
QW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
OnJlbW92ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnJlZ2lz
dGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
cjo6Y2xvc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
QmxvYjo6cmVzdW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVXZWJJREJTZXJ2ZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVu
dHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6c2VuZERhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kSGFuZHNoYWtlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
clNldDo6cmVtb3ZlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6
Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlTG9jYWxTdG9y
YWdlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OnJlbmFtZU9yaWdpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OnJlYWRDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpm
ZXRjaERpcmVjdG9yeUVudHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpzdG9yZU9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjppbml0aWFsaXplU2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2spOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6d3JpdGVSZWNvcmQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0
cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9D
aGFubmVsQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVs
OjpyZWFkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OndyaXRl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxH
TGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRT
eW5jSW5UaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5
bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZW1v
dmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OmZpbmlzaFJlYWRP
cGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OmZpbmlz
aFdyaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdl
Ojp0cmF2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6Y2xl
YXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnNocmluayk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpyZXN1bWUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjp0cnlI
dHRwQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJs
Ojp0cnlQcm94eUF1dGhlbnRpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQ3VybDo6dHJ5U2VydmVyVHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlQXV0aGVudGljYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNlcnZlclRDUFNvY2tl
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlQ2xpZW50VENQ
U29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNv
bHZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6c3RvcFJlc29sdmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1Nv
Y2tldHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5OjpyZWdpc3RlckNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6dW5yZWdpc3RlckNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRD
bG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNv
bm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1
ZUluY29taW5nTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rp
b25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjppbnZva2VSZWFkRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW52b2tlV3JpdGVFdmVudEhhbmRsZXIp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZ2VuZXJh
dGVfbWVzc2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RX
aXRoSWZNZXNzYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlk
UmVjZWl2ZVRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1h
cGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFNlbWFw
aG9yZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFNlbWFw
aG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTdXBlcmNsYXNzOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoU3VwZXJjbGFzczo6ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0
dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAg
ICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkQ29tcG9zaXRvcjo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21w
b3NpdG9yOjpmb3JjZVJlcGFpbnQpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1h
dFJlYWRlcjo6c3RhcnRPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1h
dFJlYWRlcjo6cGFyc2VCeXRlU291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3Rv
cmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlz
dFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyk6CisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KToKKyAg
ICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdCk6
CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RT
b3VyY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoK
KyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6
SFRUUENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJMKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxB
bmRTZXRQYWdlVVJMSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6Omxv
YWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6c2V0SWNv
bkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNsZWFyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25U
b05leHRLZXlGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dzaW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJv
d3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1h
eGltaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6aGlkZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmV4aXRGdWxsc2NyZWVuV2luZG93Rm9yUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsU2hvd0phdmFTY3Jp
cHREaWFsb2cpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2
ZUNoaWxkRnJhbWVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVXaGVlbEludGVyYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUlu
dGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAg
ICAoV2ViS2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3Ry
YXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6RGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6
bG9hZFN0b3JhZ2VGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRT
dG9yYWdlOjpzdG9yZUhhc2hTYWx0VG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmRlbGV0ZUhhc2hTYWx0RnJvbURpc2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z3B1
UHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vz
c0xhdW5jaGVyR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5Ojpqb2luKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVNlZWtUbyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQbGF5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29v
cmRpbmF0ZVBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6Y29vcmRpbmF0ZVNldFRyYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHk6OnVzZUNvbnRleHRNZW51SXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9udEF0dHJpYnV0
ZXNBdFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByaW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aEltYWdlVHJhbnNjb2RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRh
dGVGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25J
bnRlcm5hbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVk
VG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVu
cmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0
VGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEV4Y2Vl
ZENQVUxpbWl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJv
dW5kRG9tYWlucyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRj
aERhdGFBbmRBcHBseSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0
aW9uOjphY3F1aXJlQXN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
Z2V0U2hhcmVNZW51SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlN
YWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6dXNlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBkZlNhdmVUb1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGRmT3Bl
bldpdGhQcmV2aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9z
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RvcFJlbmRlcmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjo6YWRkUHJvdmlkZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjo6cmVtb3ZlUHJvdmlkZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZW1v
dmVDb2RlZEZyYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bFJlc291cmNlTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
Y2tldENoYW5uZWw6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5l
bDo6cmVzdW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbHVnaW5UaHJlYWRBc3luY0NhbGwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGRm
TG9nKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQ
REZTZW50aW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRl
c0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnRyeVJ1blNjcmlwdHNJ
blBERkRvY3VtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6c3RhcnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVySW50ZXJu
YWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50VmlhTWFpblRocmVhZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzdXNwZW5kRm9yUHJvY2Vzc1N3YXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFBl
cmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94
eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
a1Byb3h5OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2tQcm94eTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU3ludGhldGlj
Q2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hDb250ZW50Q2hhbmdl
T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0lt
YWdlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUlucHV0Q29u
dGV4dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudElmTmVlZGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmFkZFNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpyZW1vdmVTb3VyY2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZVJlbW90
ZU1lZGlhU291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZVZpZGVvU291
cmNlOjpjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlk
ZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKwogMjAyMS0w
OS0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVzZSBPYmplY3RJZGVudGlmaWVyIGZvciBSZXNvdXJjZUxvYWRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwppbmRleCA5MjY5YzAxNjUzYmQzOTA1ZWZhMDk4OTU2ZmM0YmYyOGJmNjEyMGRhLi44OTQz
ZjE3NGJjMzEwNjFjYjM4MmI0NTBjMjk2NTkzODBhOGM2YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTA5LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBtYWtlUmVmKCp0aGlzKSAvIG1ha2VSZWZQdHIo
dGhpcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDQ2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpk
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURh
dGFiYXNlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZFJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
Q2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0
ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkR2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0
QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50KToK
KyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0
VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5k
bGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUp
OgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFk
ZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJl
Y29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om5vdGlm
eU9wZW5EQlJlcXVlc3RCbG9ja2VkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0
YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToK
KwogMjAyMS0wOS0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVzZSBPYmplY3RJZGVudGlmaWVyIGZvciBSZXNvdXJjZUxvYWRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQxNzY4OTc4MTFmMmQwYjQxM2EyYWI1MjE0YTdl
YWE2ZTcwM2IxZjYuLjg2M2JlNzVkNTFiYjFlOGQ3N2U2YTE0OTAzY2M5ZGQ0ZjI0ZWNjMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOS0xOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgbWFr
ZVJlZigqdGhpcykgLyBtYWtlUmVmUHRyKHRoaXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA0NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1
Z2luU3RyZWFtLm1tOgorICAgICAgICAoV2ViS2l0OjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bTo6c3RhcnQpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06
CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQpOgorCiAyMDIxLTA5LTE3
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VXNlIE9iamVjdElkZW50aWZpZXIgZm9yIFJlc291cmNlTG9hZGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXgg
YmRkMmYzOTFlNTg1NDFiZWI2MjA4MTFmODU0ZjFiNzAwMjM0ZDFhMy4uZTk2NjZlNzEyYzZmMDlj
M2Q3MjMwZWFjZjRhOWU3MjZlNzU5ZGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNDcsNyArNDcsNyBA
QCBKU1ZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6d3JhcHBlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVj
dCogcHJvdG90eXBlID0gSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZVByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKTsKLSAg
ICBKU0luamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0ID0gSlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBtYWtlUmVmKCp0aGlzKSk7CisgICAgSlNJ
bmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCA9IEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgUmVmIHsgKnRoaXMgfSk7CiAgICAgbV93cmFwcGVy
cy5hZGRXcmFwcGVyKGdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRIb3N0KTsKIAogICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdEhvc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
LmNwcAppbmRleCA0YTBhNmU1YzRmZGIwMWQ5MzAxMjAyMzRmYzJlOWI5YWYwMWMwYzdlLi43ZDA2
ZmFkZWRhYTE0NWZjYWZlODYzYjIwOTE1OWFkN2JmZjc3YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
CiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UoKQogewotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07
CiAgICAgICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCmluZGV4IGIxMDkw
ODJhMDI2ODk5NDgzNDc4Y2ZiMzE5MzEwYjgyZmEzY2MxNmUuLmExZGUxZjUyYzdkZThmN2NkZmQx
MWI3ZDY0YTcxOTNiYTAyOWNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBSZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29s
IGF1dG9tYXRpY2EKIAogICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElk
ZW50aWZpZXIoKS52YWx1ZV9vcigwKTsKIAotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhp
cywgdGFyZ2V0SWRlbnRpZmllciwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBhdXRvbWF0aWNhbGx5
UGF1c2UsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CisgICAgZGlzcGF0Y2hBc3lu
Y09uVGFyZ2V0KFt0aGlzLCB0YXJnZXRJZGVudGlmaWVyLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24s
IGF1dG9tYXRpY2FsbHlQYXVzZSwgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogCiAgICAgICAgIGlmICghbV90
YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVDb250cm9sQWxsb3dlZCgpKSB7CkBAIC0xOTksNyAr
MTk5LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIHsKICAgICBh
dXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3RhcmdldCA/IG1fdGFyZ2V0LT50YXJnZXRJZGVudGlm
aWVyKCkgOiAwOwogICAgIAotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgdGFyZ2V0
SWRlbnRpZmllciwgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKKyAgICBkaXNwYXRj
aEFzeW5jT25UYXJnZXQoW3RoaXMsIHRhcmdldElkZW50aWZpZXIsIHN0cm9uZ1RoaXMgPSBSZWYg
eyAqdGhpcyB9XSgpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsK
ICAgICAgICAgaWYgKG1fdGFyZ2V0KSB7CiAgICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQpCkBA
IC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkK
IAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoTlNT
dHJpbmcgKm1lc3NhZ2UpCiB7Ci0gICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlzLCBzdHJv
bmdNZXNzYWdlID0gcmV0YWluUHRyKG1lc3NhZ2UpLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyldKCkgeworICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgc3Ryb25nTWVzc2FnZSA9
IHJldGFpblB0cihtZXNzYWdlKSwgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgewogICAg
ICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9IG51bGxwdHI7CiAgICAgICAg
IHsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCmluZGV4IDk2MDUyMDE0MDg3
NTZkZTExMmEwMjgwOThjYWFkMzZhOTA4NjQ2YTIuLjIxZWQzMjQyMDE1Nzc3NDY2NjRjNDA3NzFm
M2I5YzhmNzAyZjM4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2Rl
QmxvY2suY3BwCkBAIC0xNDMsMTAgKzE0MywxMCBAQCB2b2lkIENvZGVCbG9jazo6Y29tcGlsZUFz
eW5jKENvbnRleHQqIGNvbnRleHQsIEFzeW5jQ29tcGlsYXRpb25DYWxsYmFjayYmIHRhc2spCiAg
ICAgICAgIC8vIGEgUmVmUHRyIG9uIHRoZSBQbGFuIHVudGlsIHRoZSBwbGFuIGZpbmlzaGVzIG5v
dGlmeWluZyBhbGwgb2YgaXRzIGNhbGxiYWNrcy4KICAgICAgICAgUmVmUHRyPENvZGVCbG9jaz4g
cHJvdGVjdGVkVGhpcyA9IHRoaXM7CiAgICAgICAgIHBsYW4tPmFkZENvbXBsZXRpb25UYXNrKGNv
bnRleHQsIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6Q2FsbGJhY2tUeXBlPihbdGhpcywgdGFzayA9
IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAo
UGxhbiYpIHsKLSAgICAgICAgICAgIHRhc2stPnJ1bihtYWtlUmVmKCp0aGlzKSk7CisgICAgICAg
ICAgICB0YXNrLT5ydW4oUmVmIHsgKnRoaXMgfSk7CiAgICAgICAgIH0pKTsKICAgICB9IGVsc2UK
LSAgICAgICAgdGFzay0+cnVuKG1ha2VSZWYoKnRoaXMpKTsKKyAgICAgICAgdGFzay0+cnVuKFJl
ZiB7ICp0aGlzIH0pOwogfQogCiBib29sIENvZGVCbG9jazo6aXNTYWZlVG9SdW4oTWVtb3J5TW9k
ZSBtZW1vcnlNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU5hbWVTZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rp
b24uaAppbmRleCBmZTYzY2Y1NTQ3MzY2ZmMxNzQwYzFmMGM3MGJhODFiZTc1MzZhODhlLi43MjI3
Mzg1ODdiODM4ZGJmYzMxOTkwZWViYTE3NGY2MDgwMjEyNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+IGdldChz
aXplX3QgZnVuY3Rpb25JbmRleFNwYWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IGZ1bmN0aW9uTmFtZXMuc2l6ZSgpID8gJmZ1bmN0
aW9uTmFtZXNbZnVuY3Rpb25JbmRleFNwYWNlXSA6IG51bGxwdHIsIG1ha2VSZWZQdHIodGhpcykp
OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZnVuY3Rpb25JbmRleFNwYWNlIDwgZnVu
Y3Rpb25OYW1lcy5zaXplKCkgPyAmZnVuY3Rpb25OYW1lc1tmdW5jdGlvbkluZGV4U3BhY2VdIDog
bnVsbHB0ciwgUmVmUHRyIHsgdGhpcyB9KTsKICAgICB9CiAgICAgTmFtZSBtb2R1bGVOYW1lOwog
ICAgIE5hbWUgbW9kdWxlSGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TdHJlYW1pbmdDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU3RyZWFtaW5nQ29tcGlsZXIuY3BwCmluZGV4IGNhZTMwZGVmNmI3ZTk0OGVlNzE4MDFj
OTkxMWE1YmJlZWMyNDQ0ZTIuLjRmYzQ4MTQ3MWUyYmYwOGFmZTRhMGNjNTFlZjg0OGMyNTI2YTcw
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdD
b21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWlu
Z0NvbXBpbGVyLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFN0cmVhbWluZ0NvbXBpbGVyOjpk
aWRSZWNlaXZlRnVuY3Rpb25EYXRhKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFdhcwog
ICAgIH0KIAogICAgIGlmIChtX3RocmVhZGVkQ29tcGlsYXRpb25TdGFydGVkKSB7Ci0gICAgICAg
IFJlZjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBTdHJlYW1pbmdQbGFuKCZtX3ZtLndhc21D
b250ZXh0LCBtX2luZm8uY29weVJlZigpLCAqbV9wbGFuLCBmdW5jdGlvbkluZGV4LCBjcmVhdGVT
aGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW2NvbXBpbGVyID0gbWFrZVJlZigqdGhpcyld
KFBsYW4mIHBsYW4pIHsKKyAgICAgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IFN0
cmVhbWluZ1BsYW4oJm1fdm0ud2FzbUNvbnRleHQsIG1faW5mby5jb3B5UmVmKCksICptX3BsYW4s
IGZ1bmN0aW9uSW5kZXgsIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6Q2FsbGJhY2tUeXBlPihbY29t
cGlsZXIgPSBSZWYgeyAqdGhpcyB9XShQbGFuJiBwbGFuKSB7CiAgICAgICAgICAgICBjb21waWxl
ci0+ZGlkQ29tcGlsZUZ1bmN0aW9uKHN0YXRpY19jYXN0PFN0cmVhbWluZ1BsYW4mPihwbGFuKSk7
CiAgICAgICAgIH0pKSk7CiAgICAgICAgIGVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3Zl
KHBsYW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCAwMzY0
NjlmNzkxOWY5YjU0M2VlOGU2YWQ4ZTM4ZTY1OWU3NWM5OWM1Li4yMjc4ZDAzYjQ4OTZlMTQ2YTkx
YTdhMDgwZWY2ZWE5YjAzZWZkODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCkBAIC01MSwxMiArNTEsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZv
aWQgZGlzcGF0Y2hXb3JrSXRlbSh2b2lkKiBkaXNwYXRjaENvbnRleHQpCiAKIHZvaWQgV29ya1F1
ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0
Y2hfYXN5bmNfZihtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG5ldyBEaXNwYXRjaFdvcmtJdGVtIHsg
bWFrZVJlZigqdGhpcyksIFdURk1vdmUoZnVuY3Rpb24pIH0sIGRpc3BhdGNoV29ya0l0ZW08RGlz
cGF0Y2hXb3JrSXRlbT4pOworICAgIGRpc3BhdGNoX2FzeW5jX2YobV9kaXNwYXRjaFF1ZXVlLmdl
dCgpLCBuZXcgRGlzcGF0Y2hXb3JrSXRlbSB7IFJlZiB7ICp0aGlzIH0sIFdURk1vdmUoZnVuY3Rp
b24pIH0sIGRpc3BhdGNoV29ya0l0ZW08RGlzcGF0Y2hXb3JrSXRlbT4pOwogfQogCiB2b2lkIFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXJfZihkaXNwYXRjaF90aW1lKERJU1BB
VENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5vc2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3Bh
dGNoUXVldWUuZ2V0KCksIG5ldyBEaXNwYXRjaFdvcmtJdGVtIHsgbWFrZVJlZigqdGhpcyksICBX
VEZNb3ZlKGZ1bmN0aW9uKSB9LCBkaXNwYXRjaFdvcmtJdGVtPERpc3BhdGNoV29ya0l0ZW0+KTsK
KyAgICBkaXNwYXRjaF9hZnRlcl9mKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGR1
cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRfdD4oKSksIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwg
bmV3IERpc3BhdGNoV29ya0l0ZW0geyBSZWYgeyAqdGhpcyB9LCAgV1RGTW92ZShmdW5jdGlvbikg
fSwgZGlzcGF0Y2hXb3JrSXRlbTxEaXNwYXRjaFdvcmtJdGVtPik7CiB9CiAKIHZvaWQgV29ya1F1
ZXVlOjpkaXNwYXRjaFN5bmMoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5jcHAKaW5kZXggMTNhNTA0MzI2YWY1ZDE3ZmU1N2U0
NDJlNDUyNDdjOWJiYjQzY2ZjNC4uMWUxMmQ1YjUzYWQwYWZlYjUwMGFiM2FhYzA0N2M0YmI3OTM5
ZjYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9Tb2NrZXRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uY3BwCkBAIC00Myw3
ICs0Myw3IEBAIFNvY2tldENvbm5lY3Rpb246OlNvY2tldENvbm5lY3Rpb24oR1JlZlB0cjxHU29j
a2V0Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBjb25zCiAKICAgICBhdXRvKiBzb2NrZXQgPSBn
X3NvY2tldF9jb25uZWN0aW9uX2dldF9zb2NrZXQobV9jb25uZWN0aW9uLmdldCgpKTsKICAgICBn
X3NvY2tldF9zZXRfYmxvY2tpbmcoc29ja2V0LCBGQUxTRSk7Ci0gICAgbV9yZWFkTW9uaXRvci5z
dGFydChzb2NrZXQsIEdfSU9fSU4sIFJ1bkxvb3A6OmN1cnJlbnQoKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xl
YW4geworICAgIG1fcmVhZE1vbml0b3Iuc3RhcnQoc29ja2V0LCBHX0lPX0lOLCBSdW5Mb29wOjpj
dXJyZW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oR0lPQ29uZGl0
aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICBpZiAoaXNDbG9zZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2
b2lkIFNvY2tldENvbm5lY3Rpb246OndhaXRGb3JTb2NrZXRXcml0YWJpbGl0eSgpCiAgICAgaWYg
KG1fd3JpdGVNb25pdG9yLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd3Jp
dGVNb25pdG9yLnN0YXJ0KGdfc29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3NvY2tldChtX2Nvbm5lY3Rp
b24uZ2V0KCkpLCBHX0lPX09VVCwgUnVuTG9vcDo6Y3VycmVudCgpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xl
YW4geworICAgIG1fd3JpdGVNb25pdG9yLnN0YXJ0KGdfc29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3Nv
Y2tldChtX2Nvbm5lY3Rpb24uZ2V0KCkpLCBHX0lPX09VVCwgUnVuTG9vcDo6Y3VycmVudCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIChHSU9Db25kaXRpb24gY29uZGl0
aW9uKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewog
ICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCB0aGUgbW9uaXRvciBmcm9tIHRoaXMgbGFtYmRh
LCBiZWNhdXNlIHN0b3AgZGVzdHJveXMgdGhlIGxhbWJkYS4KICAgICAgICAgICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpc10gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXgg
ZTlkOGFmZTM2ZGJhOGZmM2Q0YTg4NTJjNDk2NmNhYzA1NTJmN2YzYi4uMTA1NGU5NzY3YmQ0YmRl
NzVlMjcyOGJiZGFjYWJjZDU2ZjM2NmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAg
dm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6OndyaXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xp
cGJvYXJkSXRlbT4+JiBpdGVtcykKICAgICBtX2RhdGFUb1dyaXRlLmZpbGwoc3RkOjpudWxsb3B0
LCBpdGVtcy5zaXplKCkpOwogICAgIG1fcGVuZGluZ0l0ZW1Db3VudCA9IGl0ZW1zLnNpemUoKTsK
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMuc2l6ZSgpOyArK2luZGV4
KSB7Ci0gICAgICAgIGl0ZW1zW2luZGV4XS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKCptX2NsaXBi
b2FyZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5kZXhdIChhdXRv
IGRhdGEpIHsKKyAgICAgICAgaXRlbXNbaW5kZXhdLT5jb2xsZWN0RGF0YUZvcldyaXRpbmcoKm1f
Y2xpcGJvYXJkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGluZGV4XSAo
YXV0byBkYXRhKSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZXREYXRhKFdURk1vdmUo
ZGF0YSksIGluZGV4KTsKICAgICAgICAgICAgIGlmICghLS1tX3BlbmRpbmdJdGVtQ291bnQpCiAg
ICAgICAgICAgICAgICAgZGlkU2V0QWxsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcAppbmRleCA3MTg3ZWVjYTA4ODE3OTExZGI2Nzg3OTI2YzBkN2YyYjBj
OTIwMDAxLi5mM2MwNDI2M2Q4YjA5NzcwNmI1NWVjNzc4Y2FjNDlhNTdiYzQ5YjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBE
T01DYWNoZTo6fkRPTUNhY2hlKCkKIAogdm9pZCBET01DYWNoZTo6bWF0Y2goUmVxdWVzdEluZm8m
JiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIHsKLSAgICBkb01hdGNoKFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9u
cyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXShFeGNlcHRpb25PcjxSZWZQdHI8RmV0Y2hSZXNwb25zZT4+JiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICBkb01hdGNoKFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKEV4Y2VwdGlvbk9yPFJlZlB0cjxGZXRjaFJlc3BvbnNlPj4mJiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgIHJlcXVlc3RzLnVuY2hlY2tlZEFwcGVuZChyZXF1ZXN0T3JFeGNl
cHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIH0KIAotICAgIGF1dG8gdGFza0hhbmRs
ZXIgPSBGZXRjaFRhc2tzSGFuZGxlcjo6Y3JlYXRlKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9u
T3I8VmVjdG9yPFJlY29yZD4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHRhc2tIYW5k
bGVyID0gRmV0Y2hUYXNrc0hhbmRsZXI6OmNyZWF0ZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9u
T3I8VmVjdG9yPFJlY29yZD4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikp
OwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAgICAgRE9NQ2Fj
aGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3Bv
bnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKICAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOwotICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3Bv
bnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiBy
ZXN1bHQpIG11dGFibGUgeworICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgIH0pOwpAQCAtMzg5LDcg
KzM4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRj
aFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwg
cmVzcG9uc2UtPmNvbnN1bWVCb2R5KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVz
cG9uc2UuZ2V0KCksIHJlc3BvbnNlLT5jb25zdW1lQm9keSgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25P
cjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgIH0pOwpA
QCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnJlbW92ZShSZXF1ZXN0SW5mbyYmIGlu
Zm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NUHJvbWlzCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBiYXRjaERlbGV0ZU9wZXJhdGlvbihyZXF1ZXN0T3JFeGNlcHRpb24u
cmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRp
b25Pcjxib29sPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYmF0Y2hEZWxldGVPcGVyYXRpb24o
cmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShFeGNlcHRpb25Pcjxib29sPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IGM0YjY5ODQyZjUxNTI1Yjk4NGJiZDA5N2Y3
OTJkZjIwMTcyYjY0YTIuLjA3OGIzOTQwODUxYTFiYmE3MmZhNzUwNWQzMzIzZGUzZDkxYzllMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoY29uc3QgQnVmZmVyU291cmNlJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgUmVmPAogICAg
IC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogCiAgICAgLy8gNS4x
LiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0ZS4K
LSAgICBtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoYXV0byBzdWNj
ZXNzKSB7CisgICAgbV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92ZShjZXJ0
aWZpY2F0ZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoYXV0
byBzdWNjZXNzKSB7CiAgICAgICAgIC8vIDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxl
ZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCiAgICAgICAgIC8vIDUuMS4gW0Vsc2UsXSBSZXNv
bHZlIHByb21pc2Ugd2l0aCB0cnVlLgogICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1JbnN0YW5j
ZTo6RmFpbGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNGNkMmU3NGU5MDcwMzFjNjliYzIwYWQ1NGVjN2ZkZGFm
YWM0ZDUwNC4uMjU0OWMwNzgxYWVjNWU5ODg3NjBkYmZiNjEzMGUyNDU4MTkwMzU3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZ1bGxQYXRoID0gY3Jvc3NUaHJl
YWRDb3B5KGZ1bGxQYXRoKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHko
ZGlyZWN0b3J5VmlydHVhbFBhdGgpXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBtYWtlUmVmKGNv
bnRleHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBm
dWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIGRpcmVjdG9yeVZpcnR1YWxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGRpcmVjdG9yeVZpcnR1YWxQYXRoKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBsaXN0ZWRDaGlsZHJlbiA9IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoZnVs
bFBhdGgpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jv
c3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJl
Y3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoY29udGV4dCwgcHJvdGVjdGVk
VGhpcywgV1RGTW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CkBA
IC0yNjksNyArMjY5LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUVudHJ5JgogICAgIGF1dG8gdmlydHVh
bFBhdGggPSByZXNvbHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChlbnRyeS52aXJ0dWFsUGF0aCgpLCAi
Li4iKTsKICAgICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKICAgICBhdXRvIGZ1bGxQ
YXRoID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dCA9IG1ha2VSZWYoY29u
dGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGgg
PSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IG1ha2VSZWYo
Y29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBh
dGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gdmFs
aWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShmdWxsUGF0aCwg
V1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwog
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIHZhbGlkYXRlZFZpcnR1YWxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQpAQCAtMzEwLDcgKzMx
MCw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVjdG9yCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KGZ1bGxQYXRoKSwgcmVzb2x2ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShyZXNvbHZl
ZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBmdWxsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHJlc29sdmVkVmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkocmVzb2x2ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBlbnRy
eVR5cGUgPSBmaWxlVHlwZUlnbm9yaW5nSGlkZGVuRmlsZXMoZnVsbFBhdGgpOwogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
Y29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIHJlc29sdmVkVmlydHVhbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkocmVzb2x2ZWRWaXJ0dWFsUGF0aCksIGVudHJ5VHlwZSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKCFlbnRyeVR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9FcnJvckNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9FcnJvckNhbGxiYWNrLmNwcAppbmRleCA4MGY5NmU1OGY2YWQzMmIyNzViNGM2YmZi
N2E5YWY0YmIyYmQyODI5Li41YjgxZWVhMDY1ODZhYmRiMGEyYWY1YmFiNzgyYTFjYzU0NTdlZDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRXJyb3JDYWxs
YmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Vycm9yQ2Fs
bGJhY2suY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBF
cnJvckNhbGxiYWNrOjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZjxET01FeGNlcHRpb24+JiYgZXhjZXB0aW9uKQogewotICAgIGNvbnRleHQucG9z
dFRhc2soW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXhjZXB0aW9uID0gV1RGTW92
ZShleGNlcHRpb24pXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBjb250ZXh0LnBv
c3RUYXNrKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZXhjZXB0aW9uID0gV1RGTW92
ZShleGNlcHRpb24pXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+aGFuZGxlRXZlbnQoZXhjZXB0aW9uKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cmllc0NhbGxi
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50
cmllc0NhbGxiYWNrLmNwcAppbmRleCA5NTVjOTQzMjNkNDNmNTdjOWU4M2JiZWQ3NTc2MzA4MzI4
OThjZjIyLi43NTFhMmFmZDlkMGU3MjcxMTdhMTE4MGY4ZWMxYWRiNDJmNmUwZTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJpZXND
YWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1FbnRyaWVzQ2FsbGJhY2suY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPEZpbGVTeXN0ZW1FbnRyeT4+IGNvcHlWZWN0b3IoY29uc3QgVmVjdG9yPFJlZjxGaWxlU3lz
dGVtRW50cnk+CiAKIHZvaWQgRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjazo6c2NoZWR1bGVDYWxs
YmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UmVmPEZp
bGVTeXN0ZW1FbnRyeT4+JiBlbnRyaWVzKQogewotICAgIGNvbnRleHQucG9zdFRhc2soW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZW50cmllcyA9IGNvcHlWZWN0b3IoZW50cmllcyld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGNvbnRleHQucG9zdFRhc2soW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlbnRyaWVzID0gY29weVZlY3RvcihlbnRyaWVzKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmhhbmRs
ZUV2ZW50KGVudHJpZXMpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGE3YjNkY2Y1OTI0ZGYyM2Q5Nzk3OGE4
Y2U5MTAxMGIyOWEwOTBkOTguLjkzZDZlY2ZhNTI2Y2U0NzFhZmUyMGQ4NGZmNWQ4NWY0YThjZjA0
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50
KEV2ZW50JiBldmVudCkKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpc3BhdGNo
RXZlbnQgKCUiIFBSSXU2NCAiKSAoJXApIiwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCB0aGlzKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0
YShvcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YTo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXgg
MDQxZWM3MjE5YzE2NGIwZTg4ZDY4N2U0NTZlMTAxMjg5YTgzY2U4ZC4uMjM4NjQ0MDhlMDJmYTdj
NTc5Y2Q5ZjUwMWQzNzJlMDc5MzQ4NzVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRo
cmVhZCgpKSk7CiAKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAg
ICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAgICBJREJSZXF1ZXN0OjpkaXNwYXRj
aEV2ZW50KGV2ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcAppbmRleCBjZmIzMzVjMzZlMDAzMGFiOTM2NzA4YmFiMmYwZTVhNDAxNjZi
MWViLi41NGU3OGJhY2JmYjU5YTZiNGQ2YWNjM2IzZGViZGU5N2JiOGEyNmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjk1LDcg
KzI5NSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAg
ICAgQVNTRVJUKG1faGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICBBU1NFUlQoIWlzQ29udGV4dFN0
b3BwZWQoKSk7CiAKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAg
ICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgbV9ldmVudEJlaW5nRGlzcGF0Y2hl
ZCA9ICZldmVudDsKIAogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2Nr
ZWRFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcAppbmRleCAyM2ExY2U4NjI5ZmU0NTI2ODU3ZWM5MjI4OWRkNmIzYTEwNTg1
NDE5Li5iMWI5YzE5ZDE3NjQyNzJmZDk0NWNjNzM2NTc1ZTkwMDY4Yzg3YjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC05Niw3ICs5Niw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJREJEYXRhYmFz
ZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYKICAgICAgICAgYXV0byogY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQp
OwogCi0gICAgICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnJ1bkF0RW5kT2ZNaWNyb3Rhc2tDaGVj
a3BvaW50KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29udGV4
dC0+ZXZlbnRMb29wKCkucnVuQXRFbmRPZk1pY3JvdGFza0NoZWNrcG9pbnQoW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kZWFjdGl2
YXRlKCk7CiAgICAgICAgIH0pOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6YWJvcnRJbnRlcm5hbCgpCiAgICAgbV9hYm9ydFF1ZXVlLnN3YXAobV9wZW5kaW5nVHJh
bnNhY3Rpb25PcGVyYXRpb25RdWV1ZSk7CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywg
IklEQiBhYm9ydC1vbi1zZXJ2ZXIgb3BlcmF0aW9uOiBUcmFuc2FjdGlvbiAlcyIsIGluZm8oKS5p
ZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHNjaGVkdWxl
T3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRo
aXMsIG51bGxwdHIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChhdXRvJiBvcGVy
YXRpb24pIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCBudWxscHRyLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWJv
cnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKG9wZXJhdGlvbik7CiAgICAgfSkpOwogfQpAQCAt
NjI2LDcgKzYyNiw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZlbnQm
IGV2ZW50KQogICAgIEFTU0VSVCghaXNDb250ZXh0U3RvcHBlZCgpKTsKICAgICAKIAotICAgIGF1
dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlz
IHsgKnRoaXMgfTsKIAogICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh7IHRoaXMs
IG1fZGF0YWJhc2UucHRyKCkgfSwgZXZlbnQpOwogICAgIApAQCAtNjY0LDkgKzY2NCw5IEBAIFJl
ZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGlu
Zm8ubmFtZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKICAgICBMT0coSW5kZXhlZERCT3Bl
cmF0aW9ucywgIklEQiBjcmVhdGUgb2JqZWN0IHN0b3JlIG9wZXJhdGlvbjogJXMiLCBpbmZvLmNv
bmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzY2hlZHVsZU9wZXJh
dGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7Cisg
ICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6
OmNyZWF0ZSgqdGhpcywgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoY29uc3QgYXV0
byYgcmVzdWx0KSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZENyZWF0ZU9iamVjdFN0b3Jl
T25TZXJ2ZXIocmVzdWx0KTsKLSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgeworICAgIH0s
IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5
KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlT2Jq
ZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pLCBJc1dyaXRlT3BlcmF0
aW9uOjpZZXMpOwogCkBAIC03MDYsOSArNzA2LDkgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVu
YW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcK
ICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZS5pbmZvKCku
aWRlbnRpZmllcigpOwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgcmVuYW1l
IG9iamVjdCBzdG9yZSBvcGVyYXRpb246ICVzIHRvICVzIiwgb2JqZWN0U3RvcmUuaW5mbygpLmNv
bmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBuZXdOYW1lLnV0ZjgoKS5kYXRh
KCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsOjpjcmVhdGUoKnRoaXMsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChj
b25zdCBhdXRvJiByZXN1bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkUmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSA9
IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFt
ZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olll
cyk7CiAKQEAgLTc0MSw5ICs3NDEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRy
YW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGNy
ZWF0ZSBpbmRleCBvcGVyYXRpb246ICVzIHVuZGVyIG9iamVjdCBzdG9yZSAlcyIsIGluZm8uY29u
ZGVuc2VkTG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG9iamVjdFN0b3JlLmluZm8oKS5j
b25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVy
YXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewor
ICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBs
OjpjcmVhdGUoKnRoaXMsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDcmVhdGVJbmRleE9uU2Vy
dmVyKHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5m
byA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSAo
YXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNyZWF0ZUluZGV4T25T
ZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKICAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsK
IApAQCAtNzk1LDkgKzc5NSw5IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElE
QkluZGV4JiBpbmRleCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogICAgIHVpbnQ2NF90IGluZGV4
SWRlbnRpZmllciA9IGluZGV4LmluZm8oKS5pZGVudGlmaWVyKCk7CiAKICAgICBMT0coSW5kZXhl
ZERCT3BlcmF0aW9ucywgIklEQiByZW5hbWUgaW5kZXggb3BlcmF0aW9uOiAlcyB0byAlcyB1bmRl
ciBvYmplY3Qgc3RvcmUgJSIgUFJJdTY0LCBpbmRleC5pbmZvKCkuY29uZGVuc2VkTG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIG5ld05hbWUudXRmOCgpLmRhdGEoKSwgaW5kZXguaW5mbygp
Lm9iamVjdFN0b3JlSWRlbnRpZmllcigpKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CisgICAgc2NoZWR1bGVP
cGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhp
cywgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsK
LSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCld
IChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lID0gbmV3
TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5yZW5hbWVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9u
OjpZZXMpOwogfQpAQCAtODUxLDkgKzg1MSw5IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlZjxJCiAg
ICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRp
b25zLCAiSURCIG9wZW4gY3Vyc29yIG9wZXJhdGlvbjogJXMiLCBjdXJzb3ItPmluZm8oKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQo
KSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8m
IHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaWRPcGVuQ3Vyc29yT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVz
dWx0KTsKLSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmZvID0gY3Vy
c29yLT5pbmZvKCkuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGluZm8gPSBjdXJzb3ItPmluZm8oKS5pc29s
YXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5v
cGVuQ3Vyc29yT25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKICAgICB9KSk7CiAKQEAgLTg4Niw5
ICs4ODYsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKElEQkN1cnNvciYg
Y3Vyc29yLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YQogICAgIGFkZFJlcXVlc3QoKmN1cnNv
ci5yZXF1ZXN0KCkpOwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgaXRlcmF0
ZSBjdXJzb3Igb3BlcmF0aW9uOiAlcyAlcyIsIGN1cnNvci5pbmZvKCkubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGRhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpj
cmVhdGUoKnRoaXMsICpjdXJzb3IucmVxdWVzdCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0ID0gbWFrZVJlZigqY3Vyc29yLnJlcXVlc3QoKSldIChjb25zdCBhdXRv
JiByZXN1bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCAqY3Vyc29yLnJlcXVlc3QoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0ID0gbWFrZVJlZigqY3Vyc29yLnJlcXVlc3Qo
KSldIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkSXRl
cmF0ZUN1cnNvck9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YSA9IGRhdGEuaXNvbGF0ZWRDb3B5KCldIChh
dXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGRhdGEgPSBkYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPml0ZXJhdGVDdXJzb3JPblNlcnZlcihvcGVyYXRpb24sIGRhdGEpOwog
ICAgIH0pKTsKIH0KQEAgLTk0MCw5ICs5NDAsOSBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpKU0dsb2JhbE9iagog
ICAgIElEQkdldEFsbFJlY29yZHNEYXRhIGdldEFsbFJlY29yZHNEYXRhIHsga2V5UmFuZ2VEYXRh
LCBnZXRBbGxUeXBlLCBjb3VudCwgb2JqZWN0U3RvcmUuaW5mbygpLmlkZW50aWZpZXIoKSwgMCB9
OwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZ2V0IGFsbCBvYmplY3Qgc3Rv
cmUgcmVjb3JkcyBvcGVyYXRpb246ICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQp
IHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7
Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikg
eworICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikg
ewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRBbGxSZWNvcmRzT25TZXJ2ZXIob3BlcmF0aW9u
LCBnZXRBbGxSZWNvcmRzRGF0YSk7CiAgICAgfSkpOwogCkBAIC05NjMsOSArOTYzLDkgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIHMKICAgICBJREJHZXRBbGxSZWNvcmRzRGF0YSBnZXRBbGxSZWNv
cmRzRGF0YSB7IGtleVJhbmdlRGF0YSwgZ2V0QWxsVHlwZSwgY291bnQsIGluZGV4Lm9iamVjdFN0
b3JlKCkuaW5mbygpLmlkZW50aWZpZXIoKSwgaW5kZXguaW5mbygpLmlkZW50aWZpZXIoKSB9Owog
CiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZ2V0IGFsbCBpbmRleCByZWNvcmRz
IG9wZXJhdGlvbjogJXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNj
aGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVh
dGUoKnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
cmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
aWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKLSAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFs
bFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CisgICAgfSwg
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFs
bFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmdldEFsbFJlY29yZHNPblNlcnZlcihvcGVyYXRpb24sIGdldEFsbFJl
Y29yZHNEYXRhKTsKICAgICB9KSk7CiAKQEAgLTEwMjAsOSArMTAyMCw5IEBAIFJlZjxJREJSZXF1
ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChKU0dsb2JhbE9iamVjdCYgc3Rh
dGUsIElEQk9iamVjCiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIExPRyhJ
bmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCByZWNvcmQgb3BlcmF0aW9uOiAlcyAlcyIsIG9i
amVjdFN0b3JlLmluZm8oKS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
Z2V0UmVjb3JkRGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1
bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgq
dGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVx
dWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0
KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8m
IHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRSZWNvcmRPblNlcnZlcihy
ZXF1ZXN0LmdldCgpLCByZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGdldFJlY29yZERhdGEgPSBnZXRSZWNvcmREYXRhLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgb3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBn
ZXRSZWNvcmREYXRhID0gZ2V0UmVjb3JkRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJh
dGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRSZWNvcmRPblNlcnZlcihvcGVyYXRp
b24sIGdldFJlY29yZERhdGEpOwogICAgIH0pKTsKIApAQCAtMTA2MCw5ICsxMDYwLDkgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5kZXhSZWNvcmQoSlNHbG9iYWxP
YmplY3QmIHN0YXRlLCBJREJJbmQKICAgICBJREJHZXRSZWNvcmREYXRhIGdldFJlY29yZERhdGEg
PSB7IHJhbmdlLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUgfTsKIAogICAgIExP
RyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURCIGdldCBpbmRleCByZWNvcmQgb3BlcmF0aW9uOiAl
cyAlcyIsIGluZGV4LmluZm8oKS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgZ2V0UmVjb3JkRGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2No
ZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0
ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3Qu
Z2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRHZXRSZWNvcmRPblNlcnZl
cihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGdldFJlY29yZERhdGEgPSBnZXRSZWNvcmREYXRhLmlzb2xhdGVkQ29weSgpXSAo
YXV0byYgb3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBnZXRSZWNvcmREYXRhID0gZ2V0UmVjb3JkRGF0YS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9w
ZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5nZXRSZWNvcmRPblNlcnZlcihvcGVy
YXRpb24sIGdldFJlY29yZERhdGEpOwogICAgIH0pKTsKIApAQCAtMTEyMyw5ICsxMTIzLDkgQEAg
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBJREJPYmplY3RTdG8KICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgb2JqZWN0IHN0b3JlIGNvdW50IG9w
ZXJhdGlvbjogJXMsIHJhbmdlICVzIiwgb2JqZWN0U3RvcmUuaW5mbygpLmNvbmRlbnNlZExvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByYW5nZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVk
dWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUo
KnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVx
dWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRH
ZXRDb3VudE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmFuZ2UgPSByYW5nZS5pc29sYXRlZENvcHkoKV0gKGF1
dG8mIG9wZXJhdGlvbikgeworICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
cmFuZ2UgPSByYW5nZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5nZXRDb3VudE9uU2VydmVyKG9wZXJhdGlvbiwgcmFuZ2UpOwogICAg
IH0pKTsKIApAQCAtMTE0NSw5ICsxMTQ1LDkgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0Q291bnQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJJbmRleCYgaW4KICAg
ICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlv
bnMsICJJREIgaW5kZXggY291bnQgb3BlcmF0aW9uOiAlcywgcmFuZ2UgJXMiLCBpbmRleC5pbmZv
KCkuY29uZGVuc2VkTG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJhbmdlLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVz
dWx0KSB7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCByZXF1ZXN0XSAoY29uc3QgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpZEdldENvdW50T25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsK
LSAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByYW5nZSA9IHJhbmdlLmlz
b2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCByYW5nZSA9IHJhbmdlLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3Bl
cmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmdldENvdW50T25TZXJ2ZXIob3BlcmF0
aW9uLCByYW5nZSk7CiAgICAgfSkpOwogCkBAIC0xMTg0LDkgKzExODQsOSBAQCBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoSlNHbG9iYWxPYmplY3Qm
IHN0YXRlLCBJREJPYgogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBMT0co
SW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBkZWxldGUgcmVjb3JkIG9wZXJhdGlvbjogJXMsIHJh
bmdlICVzIiwgb2JqZWN0U3RvcmUuaW5mbygpLmNvbmRlbnNlZExvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCByYW5nZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2No
ZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0
ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3Qu
Z2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxldGVSZWNvcmRPblNl
cnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJhbmdlID0gcmFuZ2UuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRp
b24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJhbmdlID0gcmFu
Z2UuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGVsZXRlUmVjb3JkT25TZXJ2ZXIob3BlcmF0aW9uLCByYW5nZSk7CiAgICAgfSksIElz
V3JpdGVPcGVyYXRpb246Olllcyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CkBAIC0xMjIzLDkgKzEy
MjMsOSBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVj
dFN0b3JlKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSQogICAgIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciA9IG9iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCk7CiAKICAgICBMT0co
SW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBjbGVhciBvYmplY3Qgc3RvcmUgb3BlcmF0aW9uOiAl
cyIsIG9iamVjdFN0b3JlLmluZm8oKS5jb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgcmVxdWVzdC5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVk
dWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUo
KnRoaXMsIHJlcXVlc3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVx
dWVzdF0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKLSAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIChh
dXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG9iamVjdFN0b3JlSWRlbnRpZmllcl0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5jbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpOwogICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCkBAIC0xMjYz
LDkgKzEyNjMsOSBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRP
ckFkZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iamVjdAogICAgIGFkZFJlcXVlc3QocmVx
dWVzdC5nZXQoKSk7CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBwdXRPckFk
ZCBvcGVyYXRpb246ICVzIGtleTogJXMiLCBvYmplY3RTdG9yZS5pbmZvKCkuY29uZGVuc2VkTG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGtleSA/IGtleS0+bG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkgOiAiPG51bGwga2V5PiIpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVlc3QuZ2V0
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RdIChjb25zdCBhdXRv
JiByZXN1bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0LmdldCgpLCBbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RdIChjb25zdCBhdXRvJiByZXN1bHQpIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlkUHV0T3JBZGRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1
bHQpOwotICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGtleSwgdmFsdWUg
PSBtYWtlUmVmKHZhbHVlKSwgb3ZlcndyaXRlTW9kZV0gKGF1dG8mIG9wZXJhdGlvbikgeworICAg
IH0sIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwga2V5LCB2YWx1ZSA9IG1ha2VSZWYo
dmFsdWUpLCBvdmVyd3JpdGVNb2RlXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPnB1dE9yQWRkT25TZXJ2ZXIob3BlcmF0aW9uLCBrZXkuZ2V0KCksIHZhbHVlLnB0
cigpLCBvdmVyd3JpdGVNb2RlKTsKICAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIApA
QCAtMTMwNyw3ICsxMzA3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAvLyBzdG9w
IGZ1dHVyZSByZXF1ZXN0cyBmcm9tIGdvaW5nIHRvIHRoZSBzZXJ2ZXIgYWhlYWQgb2YgaXQuCiAg
ICAgb3BlcmF0aW9uLnNldE5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcihmYWxzZSk7CiAKLSAgICB2
YWx1ZS0+d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBSZWY8SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbj4ob3BlcmF0aW9uKSwga2V5RGF0YSA9IElEQktleURhdGEoa2V5Lmdl
dCgpKS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0oSURCVmFsdWUmJiBpZGJWYWx1ZSkg
bXV0YWJsZSB7CisgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBSZWY8
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4ob3BlcmF0aW9uKSwga2V5RGF0YSA9IElE
QktleURhdGEoa2V5LmdldCgpKS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0oSURCVmFs
dWUmJiBpZGJWYWx1ZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFk
QWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSk7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7CkBA
IC0xMzUxLDkgKzEzNTEsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKICAgICB9CiAKICAgICBMT0coSW5kZXhl
ZERCT3BlcmF0aW9ucywgIklEQiBkZWxldGUgb2JqZWN0IHN0b3JlIG9wZXJhdGlvbjogJXMiLCBv
YmplY3RTdG9yZU5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgeworICAgIHNjaGVk
dWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUo
KnRoaXMsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGNvbnN0IGF1dG8mIHJlc3Vs
dCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVy
KHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0
U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0
aW9uKSB7CisgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvYmplY3RTdG9y
ZU5hbWUgPSBvYmplY3RTdG9yZU5hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24p
IHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihvcGVy
YXRpb24sIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7
CiB9CkBAIC0xMzgxLDkgKzEzODEsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRl
eCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaQogICAgIEFT
U0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywg
IklEQiBkZWxldGUgaW5kZXggb3BlcmF0aW9uOiAlcyAoJSIgUFJJdTY0ICIpIiwgaW5kZXhOYW1l
LnV0ZjgoKS5kYXRhKCksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgc2NoZWR1bGVPcGVy
YXRpb24oSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw6OmNyZWF0ZSgqdGhpcywg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewor
ICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBs
OjpjcmVhdGUoKnRoaXMsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGNvbnN0IGF1
dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxldGVJbmRleE9uU2Vy
dmVyKHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUgPSBpbmRleE5hbWUuaXNvbGF0ZWRDb3B5KCld
IChhdXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0gaW5kZXhOYW1lLmlzb2xhdGVk
Q29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRlbGV0
ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFt
ZSk7CiAgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDFhYjBiMjViYjZmZjM0NGE3MDU2ODkzNTA1YmZiMjk0OWY2
MTA4OWMuLjcyNDRkMWZiNzc2YzQ2MGRhZTNlODMwYjUyN2I0NTJjY2M1NTE3M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIElEQkNvbm5lY3Rp
b25Qcm94eSYgSURCQ29ubmVjdGlvblRvU2VydmVyOjpwcm94eSgpCiAKIHZvaWQgSURCQ29ubmVj
dGlvblRvU2VydmVyOjpjYWxsUmVzdWx0RnVuY3Rpb25XaXRoRXJyb3JMYXRlcihSZXN1bHRGdW5j
dGlvbiBmdW5jdGlvbiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllcikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZ1bmN0aW9uLCByZXF1ZXN0SWRlbnRpZmllcl0oKSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZ1bmN0aW9u
LCByZXF1ZXN0SWRlbnRpZmllcl0oKSB7CiAgICAgICAgICh0aGlzLT4qZnVuY3Rpb24pKElEQlJl
c3VsdERhdGE6OmVycm9yKHJlcXVlc3RJZGVudGlmaWVyLCBJREJFcnJvcjo6c2VydmVyQ29ubmVj
dGlvbkxvc3RFcnJvcigpKSk7CiAgICAgfSk7CiB9CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnMKICAgICBpZiAobV9zZXJ2ZXJDb25uZWN0aW9uSXNWYWxpZCkKICAg
ICAgICAgbV9kZWxlZ2F0ZS0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBwZW5kaW5nUmVxdWVzdENvdW50KTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICAgICAg
ZGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBJREJFcnJvcjo6c2Vy
dmVyQ29ubmVjdGlvbkxvc3RFcnJvcigpKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMzk1LDcg
KzM5NSw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhCiAgICAgaWYgKG1fc2VydmVyQ29ubmVj
dGlvbklzVmFsaWQpCiAgICAgICAgIG1fZGVsZWdhdGUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICAgICAgZGlkQWJv
cnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIElEQkVycm9yOjpzZXJ2ZXJDb25u
ZWN0aW9uTG9zdEVycm9yKCkpOwogICAgICAgICB9KTsKICAgICB9CkBAIC01MDYsNyArNTA2LDcg
QEAgdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJz
aW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdElkZW50aWZpZXJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXJdIHsKICAgICAgICAgZGlk
R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCA4ODBmM2Q4YmRlOTNl
YjIyNTNmMWRiNTQ2YzYwZjc5MzRjNDdhMWQ4Li5iODI4NDg2YzBmNGFkMzI5YTgzMWMyY2ZmMWJk
MmEyMzc2ZGE3ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtMTU3LDEyICsx
NTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgOiBUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2Fj
dGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKLSAgICAgICAgbV9w
ZXJmb3JtRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZXJmb3Jt
TWV0aG9kID0gV1RGTW92ZShwZXJmb3JtTWV0aG9kKV0geworICAgICAgICBtX3BlcmZvcm1GdW5j
dGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGVyZm9ybU1ldGhvZCA9IFdU
Rk1vdmUocGVyZm9ybU1ldGhvZCldIHsKICAgICAgICAgICAgIHBlcmZvcm1NZXRob2QocHJvdGVj
dGVkVGhpcy5nZXQoKSk7CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKGNvbXBsZXRlTWV0aG9k
KSB7Ci0gICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0ZU1ldGhvZCA9IFdURk1vdmUoY29tcGxldGVNZXRob2QpXSAo
Y29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkgeworICAgICAgICAgICAgbV9jb21wbGV0
ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0ZU1ldGhv
ZCA9IFdURk1vdmUoY29tcGxldGVNZXRob2QpXSAoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRlTWV0aG9kKHJlc3VsdERhdGEpOwogICAg
ICAgICAgICAgfTsKICAgICAgICAgfQpAQCAtMTcyLDEyICsxNzIsMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgOiBUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVzdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKLSAgICAgICAgbV9wZXJmb3JtRnVuY3Rp
b24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZXJmb3JtTWV0aG9kID0gV1RG
TW92ZShwZXJmb3JtTWV0aG9kKV0geworICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGVyZm9ybU1ldGhvZCA9IFdURk1vdmUocGVyZm9y
bU1ldGhvZCldIHsKICAgICAgICAgICAgIHBlcmZvcm1NZXRob2QocHJvdGVjdGVkVGhpcy5nZXQo
KSk7CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKGNvbXBsZXRlTWV0aG9kKSB7Ci0gICAgICAg
ICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0ZU1ldGhvZCA9IFdURk1vdmUoY29tcGxldGVNZXRob2QpXSAoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkgeworICAgICAgICAgICAgbV9jb21wbGV0ZUZ1bmN0aW9uID0g
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0ZU1ldGhvZCA9IFdURk1vdmUo
Y29tcGxldGVNZXRob2QpXSAoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRlTWV0aG9kKHJlc3VsdERhdGEpOwogICAgICAgICAgICAgfTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggNTdhOGJjYjU4ZjQ3MWYyMDk2OWQ3NjdlOGQ4MTgyN2My
NDcxMTA2Ni4uMDViMzZjMzkwYzc2NGUzM2EzZmZjYTlkYmQ5YjY5YTUxMjUwZjBkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24u
Y3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBNZWRpYVNlc3Npb246OnJlbW92ZU9ic2VydmVy
KE9ic2VydmVyJiBvYnNlcnZlcikKIHZvaWQgTWVkaWFTZXNzaW9uOjpmb3JFYWNoT2JzZXJ2ZXIo
Y29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYgYXBwbHkpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
KyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgbV9vYnNlcnZlcnMuZm9yRWFj
aChhcHBseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBmNDU4NGZmMzUyODI1NmNlOTA3MDU4NDZjODBkYTVl
ZGUwNjQ2ODNjLi42YWVkNWQyZGUzYWJhNjUzMTJkOTAxMDMyMDIxZjlhY2Y2YjI3MzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
Y3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZVRpbWVyRmly
ZWQoKQogCiAgICAgLy8gNi4gUnVuIHRoZSBjb2RlZCBmcmFtZSByZW1vdmFsIGFsZ29yaXRobSB3
aXRoIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHJlbW92YWwgcmFu
Z2UuCiAKLSAgICBtX3ByaXZhdGUtPnJlbW92ZUNvZGVkRnJhbWVzKG1fcGVuZGluZ1JlbW92ZVN0
YXJ0LCBtX3BlbmRpbmdSZW1vdmVFbmQsIG1fc291cmNlLT5jdXJyZW50VGltZSgpLCBtX3NvdXJj
ZS0+aXNFbmRlZCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgbV9wcml2YXRlLT5yZW1vdmVDb2RlZEZyYW1lcyhtX3BlbmRpbmdSZW1vdmVTdGFydCwgbV9w
ZW5kaW5nUmVtb3ZlRW5kLCBtX3NvdXJjZS0+Y3VycmVudFRpbWUoKSwgbV9zb3VyY2UtPmlzRW5k
ZWQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIC8v
IDcuIFNldCB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIHRvIGZhbHNlLgogICAgICAgICBtX3VwZGF0
aW5nID0gZmFsc2U7CiAgICAgICAgIG1fcGVuZGluZ1JlbW92ZVN0YXJ0ID0gTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggOWYwM2NmNDZkNmRhMjNiYmNlNDFjOWZm
YzMyZDYxNTRhNjA4NDg3NS4uZDU0ZjFkYzJkNjU1MDE3NGJiMDcxZjEyOGJjODIxMzc5ZmQ4ZGM5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0
cmFpbnQKIHsKICAgICBtX3Byb21pc2UgPSBXVEY6Om1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKIAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25zdHJhaW50c10o
YXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25zdHJhaW50c10oYXV0byYmIGVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3Byb21pc2UpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggZmZkYTI0NDU2MDk4YjdiODMw
NTZmMDczZDFiMTQ1ZTNjMTBkNGYzMy4uNWMxMTZmZTVlZWYyOWNhYTE2NmY3NmJmNjJiMjM4ZmNl
YTQwNzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBzaXplX3QgZHVy
YXRpb24KICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIG1faXNQZW5kaW5nUGxheW91dFRhc2sg
PSB0cnVlOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYpIHsKKyAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0oYXV0byYpIHsKICAgICAgICAgcGxheU5leHRUb25lKCk7CiAgICAgfSk7CiAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggOGY1Nzg0ZWYwNTZjNTBiOGM1MDRkNGY0Yzg4MTk2
MTRjZTkyOTRiNS4uYzA1ODQxZTViNjFhNzViYzYxMmRiMmY3YWEwMGQ0MGMwNzZhMDg4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9u
OjpjcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcm9t
aQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2JhY2tlbmQtPmNyZWF0ZU9mZmVy
KFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHByb21pc2UgPSBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZShXVEZN
b3ZlKHByb21pc2UpKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fYmFja2Vu
ZC0+Y3JlYXRlT2ZmZXIoV1RGTW92ZShvcHRpb25zKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlv
blByb21pc2UoV1RGTW92ZShwcm9taXNlKSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpAQCAtMjQwLDcgKzI0MCw3IEBAIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYgb3B0
aW9ucywgUmVmPERlZmVycmVkUHJvCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
YmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRl
c2NyaXB0aW9uUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2VyKFdURk1vdmUob3B0aW9ucyksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFBlZXJDb25uZWN0
aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlKFdURk1vdmUocHJvbWlzZSkpXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChpc0Nsb3NlZCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzZXRMb2NhbERlc2Ny
aXB0aW9uKHN0ZDo6b3B0aW9uYWw8UlRDTG9jYWxTZXNzaW9uRGVzY3JpcAogICAgICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBkZXNjcmlwdGlvbjsKICAgICAgICAgaWYgKCFzZHAu
aXNFbXB0eSgpIHx8ICh0eXBlICE9IFJUQ1NkcFR5cGU6Ok9mZmVyICYmIHR5cGUgIT0gUlRDU2Rw
VHlwZTo6QW5zd2VyKSkKICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uOjpjcmVhdGUodHlwZSwgV1RGTW92ZShzZHApKTsKLSAgICAgICAgbV9iYWNrZW5kLT5z
ZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+KFdURk1vdmUo
cHJvbWlzZSkpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9iYWNrZW5kLT5z
ZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4oV1RGTW92ZShw
cm9taXNlKSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmlzQ2xvc2VkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTMwOSwxMCArMzA5LDEwIEBA
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbkluaXQmJiByZW1vdGVECiAgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBSVENT
ZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZURlc2NyaXB0aW9uKSk7CiAg
ICAgICAgIGlmIChkZXNjcmlwdGlvbi0+dHlwZSgpID09IFJUQ1NkcFR5cGU6Ok9mZmVyICYmIG1f
c2lnbmFsaW5nU3RhdGUgIT0gUlRDU2lnbmFsaW5nU3RhdGU6OlN0YWJsZSAmJiBtX3NpZ25hbGlu
Z1N0YXRlICE9IFJUQ1NpZ25hbGluZ1N0YXRlOjpIYXZlUmVtb3RlT2ZmZXIpIHsKICAgICAgICAg
ICAgIGF1dG8gcm9sbGJhY2tEZXNjcmlwdGlvbiA9IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6Y3Jl
YXRlKFJUQ1NkcFR5cGU6OlJvbGxiYWNrLCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pOwotICAg
ICAgICAgICAgbV9iYWNrZW5kLT5zZXRMb2NhbERlc2NyaXB0aW9uKHJvbGxiYWNrRGVzY3JpcHRp
b24ucHRyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRlc2NyaXB0
aW9uID0gV1RGTW92ZShkZXNjcmlwdGlvbiksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShh
dXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgbV9iYWNrZW5kLT5zZXRMb2NhbERlc2NyaXB0
aW9uKHJvbGxiYWNrRGVzY3JpcHRpb24ucHRyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgZGVzY3JpcHRpb24gPSBXVEZNb3ZlKGRlc2NyaXB0aW9uKSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGlzQ2xvc2VkKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICBtX2JhY2tlbmQtPnNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLmdldCgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+KFdURk1vdmUocHJvbWlzZSkpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBtX2JhY2tlbmQtPnNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLmdl
dCgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4oV1RGTW92ZShwcm9taXNlKSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNDbG9zZWQoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGUoQ2FuZGlkYXRlJiYgcnRjQ2FuZGlkYXRlLCBS
ZWY8RGVmZXJyZWRQcgogICAgICAgICByZXR1cm47CiAKICAgICBjaGFpbk9wZXJhdGlvbihXVEZN
b3ZlKHByb21pc2UpLCBbdGhpcywgY2FuZGlkYXRlID0gV1RGTW92ZShjYW5kaWRhdGUpXShhdXRv
JiYgcHJvbWlzZSkgbXV0YWJsZSB7Ci0gICAgICAgIG1fYmFja2VuZC0+YWRkSWNlQ2FuZGlkYXRl
KGNhbmRpZGF0ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlz
ZSA9IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPihXVEZNb3ZlKHByb21pc2UpKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fYmFja2VuZC0+YWRkSWNlQ2FuZGlkYXRlKGNhbmRp
ZGF0ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+KFdURk1vdmUocHJvbWlzZSkpXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc0Nsb3NlZCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUo
cmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKaW5kZXggMTY1MjdiYjNjZDcxYzc0MmU1
ZGRlMjI1MGI0YWRiNDQxNWE0YTQ1NS4uOWQ3ZTQ2NDg5YTQxZGM4M2ViNTNmNTE2YjExNWVmODFi
ZTUyOTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcApAQCAtODksNyArODksNyBAQCB2b2lk
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtZXIoUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXImIHRyYW5zZm9ybWVyKQogICAgICAgICBtX3RyYW5zZm9ybWVyID0gbWFrZVdlYWtQdHIo
dHJhbnNmb3JtZXIpOwogICAgIH0KICAgICB0cmFuc2Zvcm1lci5zdGFydFBlbmRpbmdBY3Rpdml0
eSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fYmFja2Vu
ZCkKICAgICAgICAgICAgIHNldHVwVHJhbnNmb3JtZXIobV9iYWNrZW5kLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcAppbmRleCA5NThjN2JiYjQy
NmI0MzU5OTVmNWQyNmNlOTM0NGIxNGZlNDQ0YTA5Li4wMzY5MDJlMzljM2EwYWQ4MGZhZWJiN2Q2
ZGQ5MTRjYWQ4ZjFlNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcApAQCAtODcsNyAr
ODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcjo6d3JpdGFibGUoKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CiAKICAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY29udGV4dC0+Z2xvYmFsT2JqZWN0KCkpOwotICAgICAg
ICBhdXRvIHdyaXRhYmxlT3JFeGNlcHRpb24gPSBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpjcmVhdGUoW3RyYW5zZm9ybWVyID0g
bWFrZVJlZigqdGhpcyldKGF1dG8mIGNvbnRleHQsIGF1dG8gdmFsdWUpIC0+IEV4Y2VwdGlvbk9y
PHZvaWQ+IHsKKyAgICAgICAgYXV0byB3cml0YWJsZU9yRXhjZXB0aW9uID0gV3JpdGFibGVTdHJl
YW06OmNyZWF0ZShnbG9iYWxPYmplY3QsIFNpbXBsZVdyaXRhYmxlU3RyZWFtU2luazo6Y3JlYXRl
KFt0cmFuc2Zvcm1lciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIGNvbnRleHQsIGF1dG8gdmFsdWUp
IC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtZXItPm1f
YmFja2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuY3BwCmluZGV4IGE5NmU0Y2E3NWJlNjc0OTRiYmU3ZTkzMDgyOWVmMTZmNTMw
YjBlZmEuLmY4OWE4YmUwZGYxMTU4ZGEzNTIzMzk3MzZjMGQ4Y2E3YTQ4ZDY2NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAK
QEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgUmVmPERlZmVycgogICAgICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29udGV4dC0+cG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2l0aFRyYWNrID0gV1RG
TW92ZSh3aXRoVHJhY2spLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYpIG11dGFi
bGUgeworICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHdpdGhUcmFjayA9IFdURk1vdmUod2l0aFRyYWNrKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb25u
ZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9zZWQoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKaW5kZXgg
OTYzY2MwNzVkYjEzNjFmMjA3NDY3YWFmMDAwZDMxYzQ3MTQ1NDRiOS4uZmIxODRjOWZhMGI0MjQx
ZjIyNmFkZWFmMTAwNzU3ZmY4ZjNhYjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmRvQ3JlYXRlQW5zd2VyKCkKIAogcnRjOjpzY29wZWRfcmVmcHRyPExpYldlYlJU
Q1N0YXRzQ29sbGVjdG9yPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVTdGF0c0NvbGxl
Y3RvcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgcmV0dXJuIExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZXBvcnQpIG11dGFibGUgewor
ICAgIHJldHVybiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mJiByZXBv
cnQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkgfHwgIXJlcG9ydCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaQogCiB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+IHRyYW5zY2VpdmVyKQogewotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNjZWl2ZXIgPSBX
VEZNb3ZlKHRyYW5zY2VpdmVyKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHJhbnNjZWl2ZXIgPSBXVEZNb3ZlKHRyYW5z
Y2VpdmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5uZXdUcmFu
c2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlJ0cFRyYW5zY2VpdmVySW4KIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbW92
ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlPiBy
ZWNlaXZlcikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlY2VpdmVyID0gV1RGTW92ZShyZWNlaXZlcildKCkgbXV0YWJsZSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlY2VpdmVy
ID0gV1RGTW92ZShyZWNlaXZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5pc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+cmVtb3ZlUmVtb3RlVHJhY2soV1RGTW92ZShyZWNlaXZlcikpOwpAQCAtNDU2LDcgKzQ1
Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsCiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6T25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5l
bEludGVyZmFjZT4gZGF0YUNoYW5uZWwpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhQ2hhbm5lbCA9IFdURk1vdmUoZGF0YUNoYW5u
ZWwpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBkYXRhQ2hhbm5lbCA9IFdURk1vdmUoZGF0YUNoYW5uZWwpXSgpIG11dGFi
bGUgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLnF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZShjb25uZWN0aW9uLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFDaGFubmVsID0gV1RG
TW92ZShkYXRhQ2hhbm5lbCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+aXNTdG9wcGVkKCkpCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpzdG9wKCkKIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbk5lZ290
aWF0aW9uTmVlZGVkRXZlbnQodWludDMyX3QgZXZlbnRJZCkKIHsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGV2ZW50SWRdIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZXZlbnRJZF0gewog
ICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm1hcmtB
c05lZWRpbmdOZWdvdGlhdGlvbihldmVudElkKTsKQEAgLTUyNCw3ICs1MjQsNyBAQCBzdGF0aWMg
aW5saW5lIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB0b1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZSh3ZWJy
dGM6OlBlZXJDb25uZWN0aQogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblN0YW5kYXJk
aXplZEljZUNvbm5lY3Rpb25DaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
SWNlQ29ubmVjdGlvblN0YXRlIHN0YXRlKQogewogICAgIGF1dG8gY29ubmVjdGlvblN0YXRlID0g
dG9SVENJY2VDb25uZWN0aW9uU3RhdGUoc3RhdGUpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvblN0YXRlXSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5lY3Rpb25T
dGF0ZV0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNvbm5lY3Rpb24oKS51cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUoY29ubmVjdGlvblN0YXRl
KTsKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgaW5saW5lIFJUQ0ljZUdhdGhlcmluZ1N0YXRl
IHRvUlRDSWNlR2F0aGVyaW5nU3RhdGUod2VicnRjOjpQZWVyQ29ubmVjdGlvbgogCiB2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIHN0YXRlKQogewotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RhdGVdIHsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc3RhdGVd
IHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5p
Y2VHYXRoZXJpbmdTdGF0ZUNoYW5nZWQodG9SVENJY2VHYXRoZXJpbmdTdGF0ZShzdGF0ZSkpOwpA
QCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25JY2VDYW5k
aWRhdGUoY29uc3Qgd2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2UKIAogICAgIGF1dG8gc2Rw
TUxpbmVJbmRleCA9IHNhZmVDYXN0PHVuc2lnbmVkIHNob3J0PihydGNDYW5kaWRhdGUtPnNkcF9t
bGluZV9pbmRleCgpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZGVzY3JpcHRpb25zID0gZGVzY3JpcHRpb25zRnJvbVBlZXJDb25uZWN0
aW9uKG1fYmFja2VuZC5nZXQoKSksIG1pZCA9IGZyb21TdGRTdHJpbmcocnRjQ2FuZGlkYXRlLT5z
ZHBfbWlkKCkpLCBzZHAgPSBmcm9tU3RkU3RyaW5nKHNkcCksIHNkcE1MaW5lSW5kZXgsIHVybCA9
IGZyb21TdGRTdHJpbmcocnRjQ2FuZGlkYXRlLT5zZXJ2ZXJfdXJsKCkpXSgpIG11dGFibGUgewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkZXNj
cmlwdGlvbnMgPSBkZXNjcmlwdGlvbnNGcm9tUGVlckNvbm5lY3Rpb24obV9iYWNrZW5kLmdldCgp
KSwgbWlkID0gZnJvbVN0ZFN0cmluZyhydGNDYW5kaWRhdGUtPnNkcF9taWQoKSksIHNkcCA9IGZy
b21TdGRTdHJpbmcoc2RwKSwgc2RwTUxpbmVJbmRleCwgdXJsID0gZnJvbVN0ZFN0cmluZyhydGND
YW5kaWRhdGUtPnNlcnZlcl91cmwoKSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChwcm90ZWN0
ZWRUaGlzLT5pc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3SUNFQ2FuZGlkYXRlKFdURk1vdmUo
c2RwKSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4LCBXVEZNb3ZlKHVybCksIFdURk1vdmUo
ZGVzY3JpcHRpb25zKSk7CkBAIC02NjIsNyArNjYyLDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoc3RkOjp1bmlxdWVfcHRy
PHcKICAgICBzdGQ6OnN0cmluZyBzZHA7CiAgICAgZGVzY3JpcHRpb24tPlRvU3RyaW5nKCZzZHAp
OwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzZHAgPSBmcm9tU3RkU3RyaW5nKHNkcCldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNkcCA9IGZyb21TdGRTdHJpbmco
c2RwKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9pc0lu
aXRpYXRvcikKQEAgLTY3NCw3ICs2NzQsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZChzdGQ6OnVuaXF1ZV9wdHI8dwogCiB2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxl
ZChFeGNlcHRpb25Db2RlIGVycm9yQ29kZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoZXJyb3JNZXNzYWdlKV0gKCkgbXV0YWJsZSB7
CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVy
cm9yQ29kZSwgZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9yTWVzc2FnZSldICgpIG11dGFibGUg
ewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2lzSW5pdGlhdG9yKQpAQCAtNzEw
LDcgKzcxMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENTY3RwVHJhbnNwb3J0QmFja2Vu
ZD4gU2N0cFRyYW5zcG9ydFN0YXRlOjpjcmVhdGVCYWNrZW5kCiAKIHZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoKQogewotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGVzY3Jp
cHRpb25zID0gZGVzY3JpcHRpb25zRnJvbVBlZXJDb25uZWN0aW9uKG1fYmFja2VuZC5nZXQoKSwg
R2F0aGVyU2lnbmFsaW5nU3RhdGU6OlllcyksIHNjdHBTdGF0ZSA9IFNjdHBUcmFuc3BvcnRTdGF0
ZShtX2JhY2tlbmQtPkdldFNjdHBUcmFuc3BvcnQoKSldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRlc2NyaXB0aW9ucyA9
IGRlc2NyaXB0aW9uc0Zyb21QZWVyQ29ubmVjdGlvbihtX2JhY2tlbmQuZ2V0KCksIEdhdGhlclNp
Z25hbGluZ1N0YXRlOjpZZXMpLCBzY3RwU3RhdGUgPSBTY3RwVHJhbnNwb3J0U3RhdGUobV9iYWNr
ZW5kLT5HZXRTY3RwVHJhbnNwb3J0KCkpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVzY3JpcHRpb25TdWNj
ZWVkZWQoV1RGTW92ZShkZXNjcmlwdGlvbnMpLCBzY3RwU3RhdGUuY3JlYXRlQmFja2VuZCgpKTsK
QEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldExvY2Fs
U2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb25Db2RlIGVycm9y
Q29kZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Ug
PSBTdHJpbmcoZXJyb3JNZXNzYWdlKV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Ug
PSBTdHJpbmcoZXJyb3JNZXNzYWdlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPmlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRMb2NhbERlc2NyaXB0aW9uRmFpbGVk
KEV4Y2VwdGlvbiB7IGVycm9yQ29kZSwgV1RGTW92ZShlcnJvck1lc3NhZ2UpIH0pOwpAQCAtNzI4
LDcgKzcyOCw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9u
RGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uQ29kZSBlcnJvCiAKIHZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKIHsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRlc2Ny
aXB0aW9ucyA9IGRlc2NyaXB0aW9uc0Zyb21QZWVyQ29ubmVjdGlvbihtX2JhY2tlbmQuZ2V0KCks
IEdhdGhlclNpZ25hbGluZ1N0YXRlOjpZZXMpLCBzY3RwU3RhdGUgPSBTY3RwVHJhbnNwb3J0U3Rh
dGUobV9iYWNrZW5kLT5HZXRTY3RwVHJhbnNwb3J0KCkpXSgpIG11dGFibGUgeworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkZXNjcmlwdGlvbnMg
PSBkZXNjcmlwdGlvbnNGcm9tUGVlckNvbm5lY3Rpb24obV9iYWNrZW5kLmdldCgpLCBHYXRoZXJT
aWduYWxpbmdTdGF0ZTo6WWVzKSwgc2N0cFN0YXRlID0gU2N0cFRyYW5zcG9ydFN0YXRlKG1fYmFj
a2VuZC0+R2V0U2N0cFRyYW5zcG9ydCgpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlvblN1
Y2NlZWRlZChXVEZNb3ZlKGRlc2NyaXB0aW9ucyksIHNjdHBTdGF0ZS5jcmVhdGVCYWNrZW5kKCkp
OwpAQCAtNzM3LDcgKzczNyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVt
b3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKIAogdm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uQ29kZSBl
cnJvckNvZGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVycm9yQ29kZSwgZXJyb3JNZXNz
YWdlID0gU3RyaW5nKGVycm9yTWVzc2FnZSldICgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlcnJvckNvZGUsIGVycm9yTWVz
c2FnZSA9IFN0cmluZyhlcnJvck1lc3NhZ2UpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlv
bkZhaWxlZChFeGNlcHRpb24geyBlcnJvckNvZGUsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsK
QEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uU3RhdHNE
ZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IHdlYgogICAgIGlmICghbV9z
dGF0c0ZpcnN0RGVsaXZlcmVkVGltZXN0YW1wKQogICAgICAgICBtX3N0YXRzRmlyc3REZWxpdmVy
ZWRUaW1lc3RhbXAgPSB0aW1lc3RhbXA7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHRpbWVzdGFtcCwgcmVwb3J0XSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHRp
bWVzdGFtcCwgcmVwb3J0XSB7CiAgICAgICAgIGlmIChtX2JhY2tlbmQgJiYgbV9zdGF0c0xvZ1Rp
bWVyLnJlcGVhdEludGVydmFsKCkgIT0gc3RhdHNMb2dJbnRlcnZhbCh0aW1lc3RhbXApKSB7CiAg
ICAgICAgICAgICBtX3N0YXRzTG9nVGltZXIuc3RvcCgpOwogICAgICAgICAgICAgbV9zdGF0c0xv
Z1RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0YXRzTG9nSW50ZXJ2YWwodGltZXN0YW1wKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
cXVlc3QuY3BwCmluZGV4IDg0MTQyOGEyNTYzZDE0ZWU2Y2U0ZGNkNWEyZDAyMTA3M2YwZDg2MmEu
LmIxZTk1NTUzNjIyNzgxZTk1MmZjNjM0Mzg5ZTdkYzhmZjQ1MGE5ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
Y3BwCkBAIC01MzQsNyArNTM0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXltZW50U2hpcHBpbmdUeXBl
PiBQYXltZW50UmVxdWVzdDo6c2hpcHBpbmdUeXBlKCkgY29uc3QKIAogdm9pZCBQYXltZW50UmVx
dWVzdDo6c2hpcHBpbmdBZGRyZXNzQ2hhbmdlZChSZWY8UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBp
bmdBZGRyZXNzKQogewotICAgIHdoZW5EZXRhaWxzU2V0dGxlZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHNoaXBwaW5nQWRkcmVzcyA9IG1ha2VSZWZQdHIoc2hpcHBp
bmdBZGRyZXNzLmdldCgpKV0oKSBtdXRhYmxlIHsKKyAgICB3aGVuRGV0YWlsc1NldHRsZWQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzaGlwcGluZ0FkZHJlc3MgPSBtYWtl
UmVmUHRyKHNoaXBwaW5nQWRkcmVzcy5nZXQoKSldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fc2hp
cHBpbmdBZGRyZXNzID0gV1RGTW92ZShzaGlwcGluZ0FkZHJlc3MpOwogICAgICAgICBkaXNwYXRj
aEFuZENoZWNrVXBkYXRlRXZlbnQoUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5zaGlwcGluZ2FkZHJlc3NjaGFuZ2VFdmVudCkpOwogICAgIH0pOwpAQCAtNTQy
LDcgKzU0Miw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5nQWRkcmVzc0NoYW5nZWQo
UmVmPFBheW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5nQWRkcmVzCiAKIHZvaWQgUGF5bWVudFJlcXVl
c3Q6OnNoaXBwaW5nT3B0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9uKQog
ewotICAgIHdoZW5EZXRhaWxzU2V0dGxlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHNoaXBwaW5nT3B0aW9uXSgpIG11dGFibGUgeworICAgIHdoZW5EZXRhaWxzU2V0
dGxlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNoaXBwaW5nT3B0aW9u
XSgpIG11dGFibGUgewogICAgICAgICBtX3NoaXBwaW5nT3B0aW9uID0gc2hpcHBpbmdPcHRpb247
CiAgICAgICAgIGRpc3BhdGNoQW5kQ2hlY2tVcGRhdGVFdmVudChQYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNoaXBwaW5nb3B0aW9uY2hhbmdlRXZlbnQpKTsK
ICAgICB9KTsKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaGlwcGlu
Z09wdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiBzaGlwcGluZ09wdGlvbikKIAogdm9pZCBQYXlt
ZW50UmVxdWVzdDo6cGF5bWVudE1ldGhvZENoYW5nZWQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1l
LCBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlvbiYmIG1ldGhv
ZERldGFpbHNGdW5jdGlvbikKIHsKLSAgICB3aGVuRGV0YWlsc1NldHRsZWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBtZXRob2ROYW1lLCBtZXRob2REZXRhaWxzRnVu
Y3Rpb24gPSBXVEZNb3ZlKG1ldGhvZERldGFpbHNGdW5jdGlvbildKCkgbXV0YWJsZSB7CisgICAg
d2hlbkRldGFpbHNTZXR0bGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
bWV0aG9kTmFtZSwgbWV0aG9kRGV0YWlsc0Z1bmN0aW9uID0gV1RGTW92ZShtZXRob2REZXRhaWxz
RnVuY3Rpb24pXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBldmVudE5hbWUgPSBldmVudE5h
bWVzKCkucGF5bWVudG1ldGhvZGNoYW5nZUV2ZW50OwogICAgICAgICBpZiAoaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lKSkKICAgICAgICAgICAgIGRpc3BhdGNoQW5kQ2hlY2tVcGRhdGVFdmVu
dChQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIG1ldGhvZE5hbWUs
IFdURk1vdmUobWV0aG9kRGV0YWlsc0Z1bmN0aW9uKSkpOwpAQCAtNTcxLDcgKzU3MSw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0Ojp1cGRhdGVXaXRoKFVwZGF0ZVJlYXNvbiBy
ZWFzb24sIFJlZjxET01Qcm9taXNlCiAKICAgICBBU1NFUlQoIW1fZGV0YWlsc1Byb21pc2UpOwog
ICAgIG1fZGV0YWlsc1Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwotICAgIG1fZGV0YWlsc1By
b21pc2UtPndoZW5TZXR0bGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgcmVhc29uXSgpIHsKKyAgICBtX2RldGFpbHNQcm9taXNlLT53aGVuU2V0dGxlZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlYXNvbl0oKSB7CiAgICAgICAgIHNldHRs
ZURldGFpbHNQcm9taXNlKHJlYXNvbik7CiAgICAgfSk7CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdDo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oRXZlbnQmIGV2ZW50LCBSZWY8RAogICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlv
bigpOwogCiAgICAgbV9tZXJjaGFudFNlc3Npb25Qcm9taXNlID0gV1RGTW92ZShtZXJjaGFudFNl
c3Npb25Qcm9taXNlKTsKLSAgICBtX21lcmNoYW50U2Vzc2lvblByb21pc2UtPndoZW5TZXR0bGVk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0oKSB7CisgICAgbV9tZXJj
aGFudFNlc3Npb25Qcm9taXNlLT53aGVuU2V0dGxlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dKCkgewogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW50ZXJhY3Rp
dmUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFBheW1l
bnRSZXF1ZXN0Ojp3aGVuRGV0YWlsc1NldHRsZWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RldGFpbHNQcm9taXNlLT53
aGVuU2V0dGxlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHdoZW5T
ZXR0bGVkRnVuY3Rpb24gPSBXVEZNb3ZlKHdoZW5TZXR0bGVkRnVuY3Rpb24pXSB7CisgICAgbV9k
ZXRhaWxzUHJvbWlzZS0+d2hlblNldHRsZWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB3aGVuU2V0dGxlZEZ1bmN0aW9uID0gV1RGTW92ZSh3aGVuU2V0dGxlZEZ1bmN0aW9u
KV0gewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3RpdmUpCiAgICAgICAg
ICAgICB3aGVuU2V0dGxlZEZ1bmN0aW9uKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwCmluZGV4
IDNlNTE2YzIxNzZlYTQzZjFjNmI1ZmE5ZDE5ZGI5Nzg1ZjBkMTg1MTQuLjRjYThjZmRkZDhiODQz
ZDA4ZWEyNTFmNTRhZDY3ZmI1NWQ2ODQ3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgdm9pZCBSZW1vdGVQbGF5YmFjazo6d2F0Y2hBdmFpbGFiaWxpdHkoUmVmPFJlbW90
ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2s+JiYKICAgICAgICAgbV9jYWxsYmFja01hcC5h
ZGQoY2FsbGJhY2tJZCwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgICAgIC8vIDguIEZ1bGZp
bGwgcHJvbWlzZSB3aXRoIHRoZSBjYWxsYmFja0lkIGFuZCBydW4gdGhlIGZvbGxvd2luZyBzdGVw
cyBpbiBwYXJhbGxlbDoKLSAgICAgICAgcHJvbWlzZS0+d2hlblNldHRsZWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjYWxsYmFja0lkXSB7CisgICAgICAgIHByb21p
c2UtPndoZW5TZXR0bGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2Fs
bGJhY2tJZF0gewogICAgICAgICAgICAgLy8gOC4xIFF1ZXVlIGEgdGFzayB0byBpbnZva2UgdGhl
IGNhbGxiYWNrIHdpdGggdGhlIGN1cnJlbnQgYXZhaWxhYmlsaXR5IGZvciB0aGUgbWVkaWEgZWxl
bWVudC4KICAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgY2FsbGJhY2tJZCwgYXZhaWxhYmxlID0gbV9h
dmFpbGFibGVdIHsKICAgICAgICAgICAgICAgICBpZiAoaXNDb250ZXh0U3RvcHBlZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4
IGRmYmRiYzcyZjM2YjBkOTAwOTgwOWM1YTcwYTZmZmE5ZTUxZGJlNGMuLmViYjJmMmY1NDZjNzMy
MmNlOTM1ZjhhNGViYTk0OTNhMDJiMjlhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEF1
ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBsYXp5
SW5pdGlhbGl6ZSgpOwotICAgIGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRp
bmdBY3Rpdml0eSgqdGhpcyldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikg
eworICAgIGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIGlm
ICghZXhjZXB0aW9uKQogICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwogICAg
IH0pOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5
YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBk
ZXN0aW5hdGlvbigpLnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CisgICAgZGVzdGluYXRpb24oKS5yZXN1bWUo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwZW5kaW5nQWN0aXZpdHkgPSBt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhj
ZXB0aW9uKSB7CiAgICAgICAgIHNldFN0YXRlKGV4Y2VwdGlvbiA/IFN0YXRlOjpTdXNwZW5kZWQg
OiBTdGF0ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwog
Ci0gICAgZGVzdGluYXRpb24oKS5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIHsKKyAgICBkZXN0aW5hdGlvbigp
LnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwZW5kaW5nQWN0
aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5n
QXVkaW9EaWRDaGFuZ2UoKQogCiAgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVw
ZGF0ZUlzUGxheWluZ01lZGlhKCkgb24gdGhlIG1haW4gdGhyZWFkLCBzaW5jZQogICAgIC8vIHdl
IGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJL08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8g
V2ViQ29yZSBjb3VsZCBibG9jay4KLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBwcm90ZWN0
ZWRUaGlzLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUlzUGxheWlu
Z01lZGlhKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKaW5kZXggMDg3ZTI1NDcz
Y2I4NGU2NzBkYzBmNTJiYmE5OWViNTJjZDQ3N2RkNC4uODYxMTI2YTg0MTlhYjIyY2E0OWNhYzEx
YmMwOWFhOWQyYWVjMDI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtMjAwLDcgKzIw
MCw3IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKQogICAgIC8vIEhl
YXAgYWxsb2NhdGlvbnMgYXJlIGZvcmJpZGRlbiBvbiB0aGUgYXVkaW8gdGhyZWFkIGZvciBwZXJm
b3JtYW5jZSByZWFzb25zIHNvIHdlIG5lZWQgdG8KICAgICAvLyBleHBsaWNpdGx5IGFsbG93IHRo
ZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25z
Rm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZW5k
aW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0geworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwZW5kaW5nQWN0
aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0gewogICAgICAgICBpZiAoY29udGV4
dCgpLmlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5LmNwcAppbmRleCBlOWY1MTk3YzRmMzI4ZDM5NzJjZDFkZWZlNDllZTgxMzc4ZGYyZDZj
Li40ZDNlNWMwNDUzNDZjMGQwMTA2OWYyN2QyY2M1ZGI0NzAyZmU0MDQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
U2NyCiAKIHZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9BdWRpb1dv
cmtsZXQoRnVuY3Rpb248dm9pZChBdWRpb1dvcmtsZXQmKT4mJiB0YXNrKQogewotICAgIG1fZG9j
dW1lbnQtPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRh
c2sgPSBXVEZNb3ZlKHRhc2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fZG9j
dW1lbnQtPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGFz
ayA9IFdURk1vdmUodGFzayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlm
IChtX3dvcmtsZXQpCiAgICAgICAgICAgICB0YXNrKCptX3dvcmtsZXQpOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5j
cHAKaW5kZXggYmFjOWIxNGFiMWQ3NDRjYzkzYjA1Yjg3NzEyYmJiZGU0YWFmMDkwZC4uZTNjMWM4
NjgxZWY0YThhMWFjMGQxNjRhZTA2Nzc2YTM0NjY2ODg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC0yODcsNyAr
Mjg3LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXROb2RlOjpmaXJlUHJvY2Vzc29yRXJyb3JPbk1haW5U
aHJlYWQoUHJvY2Vzc29yRXJyb3IgZXJyb3IpCiAgICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUg
Zm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28g
d2UgbmVlZCB0bwogICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxvY2F0
aW9uKHMpLgogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2Nv
cGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVycm9yXSgpIG11dGFibGUgeworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBl
cnJvcl0oKSBtdXRhYmxlIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICAgICAg
c3dpdGNoIChlcnJvcikgewogICAgICAgICBjYXNlIFByb2Nlc3NvckVycm9yOjpDb25zdHJ1Y3Rv
ckVycm9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNl
QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5jcHAKaW5kZXggMTY5YjZhYjM0Y2ZhYTFkZTBmN2QxZmU3ZjNkMDdkMzNkNmZh
NWEyMC4uY2NlMTQzYmJkYTc5NTJlOTU5MmM1MTc1MjZkMWQzMTUzNTFlZGQyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3Bw
CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6
ZSgpCiAKIHZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6Y2xlYXIoKQogewotICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKIAogICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBu
b2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgogICAgIGRvIHsKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAgIGlmICht
X2lzU3RvcFNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9Owog
CiAgICAgbV9pc1N0b3BTY2hlZHVsZWQgPSB0cnVlOwogCkBAIC02NTUsNyArNjU1LDcgQEAgdm9p
ZCBCYXNlQXVkaW9Db250ZXh0Ojp1cGRhdGVUYWlsUHJvY2Vzc2luZ05vZGVzKCkKICAgICAvLyBX
ZSB0cnkgdG8gYXZvaWQgaGVhcCBhbGxvY2F0aW9ucyBvbiB0aGUgYXVkaW8gdGhyZWFkIGJ1dCB0
aGVyZSBpcyBubyB3YXkgdG8gZG8gYSBtYWluIHRocmVhZCBkaXNwYXRjaAogICAgIC8vIHdpdGhv
dXQgb25lLgogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2Nv
cGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJs
ZSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBncmFwaExvY2soKSB9OwogICAgICAgICBkaXNh
YmxlT3V0cHV0c0ZvckZpbmlzaGVkVGFpbFByb2Nlc3NpbmdOb2RlcygpOwogICAgICAgICBtX2Rp
c2FibGVPdXRwdXRzRm9yVGFpbFByb2Nlc3NpbmdTY2hlZHVsZWQgPSBmYWxzZTsKQEAgLTcyMSw3
ICs3MjEsNyBAQCB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkK
ICAgICAgICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUgZm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0
aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28gd2UgbmVlZCB0bwogICAgICAgICAvLyBl
eHBsaWNpdGx5IGFsbG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICAgICAgRGlz
YWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9j
UmVzdHJpY3Rpb25zOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAt
NzMyLDcgKzczMiw3IEBAIHZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMo
KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgb2Jq
ZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgbG9jay4KLSAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhp
cyB7ICp0aGlzIH07CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgZ3JhcGhMb2NrKCkgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDA1ZTkzZWMyNmQ1NjcwODBjZTRhNTAzZTdl
MWM3OWI5YjVhNDMzMzUuLmVjN2FjOWIyNWE4ZGU3YjU3N2FkM2IxYzI2YTIwNWU4MDliYmJhODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlOjp+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCkKIAog
dm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc291cmNlU2FtcGxlUmF0ZSkKIHsKLSAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07
CiAKICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9wcm9jZXNzTG9jayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDM4
NjJkMDk3NDNkYjNkMDk2ZmFmYWQyZmY0MWQ0NjdhMWMyOGY1ZjIuLjI2M2Q4YmY1MDBkNTJkNmYx
N2ZlYTRkODVmNzY5NmM2MjhiM2I4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Rh
cnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdAogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBbHJl
YWR5IHN0YXJ0ZWQgcmVuZGVyaW5nIl9zIH0pOwogCiAgICAgbV9zdGFydGVkUmVuZGVyaW5nID0g
dHJ1ZTsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYg
cHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byByZXN1bHQgPSByZW5kZXJPbkF1ZGlvVGhyZWFkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcAppbmRleCAwZTE3ZDhmMTA5NTc5ZmYxYzU3Yjk0MzYxNDA4MDM2ZTIzMzY3ZDgzLi5jNGFk
YTcyZWJmZmQ1ZWM2Mzk2MmIxN2MwNzAwODQxZTlhOTUwZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAg
LTIwOSwxMSArMjA5LDExIEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAvLyBSZWZlcmVuY2Ugb3Vyc2VsZiBzbyB3ZSBk
b24ndCBhY2NpZGVudGFsbHkgZ2V0IGRlbGV0ZWQgYmVmb3JlIGZpcmVQcm9jZXNzRXZlbnQoKSBn
ZXRzIGNhbGxlZC4KICAgICAgICAgLy8gV2Ugb25seSB3YWl0IGZvciBzY3JpcHQgY29kZSBleGVj
dXRpb24gd2hlbiB0aGUgY29udGV4dCBpcyBhbiBvZmZsaW5lIG9uZSBmb3IgcGVyZm9ybWFuY2Ug
cmVhc29ucy4KICAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpIHsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFt0aGlzLCBidWZmZXJJbmRleCwgcHJv
dGVjdG9yID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFt0aGlzLCBidWZmZXJJbmRleCwgcHJvdGVjdG9yID0gUmVmIHsgKnRoaXMgfV0gewog
ICAgICAgICAgICAgICAgIGZpcmVQcm9jZXNzRXZlbnQoYnVmZmVySW5kZXgpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBidWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGJ1ZmZlckluZGV4LCBwcm90ZWN0b3IgPSBSZWYg
eyAqdGhpcyB9XSB7CiAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9j
a3NbYnVmZmVySW5kZXhdIH07CiAgICAgICAgICAgICAgICAgZmlyZVByb2Nlc3NFdmVudChidWZm
ZXJJbmRleCk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggOWFkMTFkNDA4OGY2NjM3N2RiMWRiYzA5ZGM1
MTA1ZTNmOTE2ODBjOS4uODAxODhkZDFkOWExYjJlYmEzY2Q5Zjc3MjM2NGFlNGM3YzA3MDk5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
QEAgLTY5OCw3ICs2OTgsNyBAQCB2b2lkIERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8
U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmUHRyPAogCiB2b2lkIERhdGFi
YXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uQ2FsbGJhY2soU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdHJhbnNhY3Rpb24gPSBtYWtlUmVmUHRyKHRyYW5zYWN0aW9uKV0oKSBtdXRh
YmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdHJhbnNhY3Rpb24gPSBtYWtlUmVmUHRyKHRyYW5zYWN0aW9uKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgbV9kb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsIFt0cmFuc2FjdGlvbiA9IFdURk1vdmUodHJhbnNhY3Rpb24pXSB7CiAgICAg
ICAgICAgICB0cmFuc2FjdGlvbi0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5j
cHAKaW5kZXggYzFiYWM4NmQzYWIyYjBkOTEzZmNlNzQyMTQzMWE5NDQ1OWVlZDJkOC4uNzg3ODc5
ZmE2ODc2YTk4NDg1NTFkMTZhZGUzODViMmU3NGUxYWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGll
bnQoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlk
Q29ubmVjdCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsK
ICAgICB9KSk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5
RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAg
fSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudCh1bnNpZ25lZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBA
IC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZCht
YWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFr
ZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNo
YWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CkBA
IC0yMTksNyArMjE5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1ZmZlcmUKIAogdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3Io
KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtl
VW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVycm9y
KCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIAogdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwoKQog
ewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmICht
X2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJMKCk7CiAgICAgfSkp
OwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpwcm9jZXNzUGVuZGluZ1Rhc2tzKCkKICAgICBpZiAoIW1fc3luY01ldGhvZERv
bmUpIHsKICAgICAgICAgLy8gV2hlbiBhIHN5bmNocm9ub3VzIG9wZXJhdGlvbiBpcyBpbiBwcm9n
cmVzcyAoaS5lLiB0aGUgZXhlY3V0aW9uIHN0YWNrIGNvbnRhaW5zCiAgICAgICAgIC8vIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpKSwg
d2UgY2Fubm90IGludm9rZSBjYWxsYmFja3MgaW4gdGhpcyBydW4gbG9vcC4KLSAgICAgICAgbV9j
b250ZXh0LnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC5wb3N0
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NQZW5k
aW5nVGFza3MoKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDg4YmQzZmEzMjcyYWY0NTYwOWYxNmUwMjcxYmVh
ODJmNmM5ZGI5ODQuLjY5NDAxYTMyODA4MTM0N2FlNmNhMjNkYTYyMGI4OGI4NzhkZjE0ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBA
IC0yMTcsNyArMjE3LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmZhaWxBc3luY2hyb25vdXNseSgpCiAg
ICAgLy8gY29uc3RydWN0b3IsIHdlIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUgY29uc3RydWN0b3Ig
aGFzIGNvbXBsZXRlZCBiZWZvcmUgZmlyaW5nIHRoZQogICAgIC8vIGV2ZW50OyBvdGhlcndpc2Us
IHVzZXJzIGNhbid0IGNvbm5lY3QgdG8gdGhlIGV2ZW50LgogCi0gICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XShhdXRvJikgeworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJikgewogICAgICAgICB0aGlzLT5k
aXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KCk7CiAgICAgICAgIHRoaXMtPnN0b3AoKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA1ZWI0MjZjYWM0ZGNkNjFlYmM0MmZmZjIxYWY3MmYxY2MyNjhm
ODNkLi45ZjMxNDM2Yzg3NWFlODNjNTA1MzE5ODM1ZDA3ZTFkYWFlY2ZmNzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29j
a2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlKQogICAgIHN0ZDo6b3B0aW9uYWw8
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5OwogICAgIGlmIChtX2FsbG93Q29va2llcykKICAgICAgICAgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkgPSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KCpt
X2RvY3VtZW50LCBtX2hhbmRzaGFrZS0+aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2ll
cygpKTsKLSAgICBoYW5kbGUuc2VuZEhhbmRzaGFrZShXVEZNb3ZlKGhhbmRzaGFrZU1lc3NhZ2Up
LCBXVEZNb3ZlKGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcywgYm9vbCBkaWRBY2Nlc3NTZWN1
cmVDb29raWVzKSB7CisgICAgaGFuZGxlLnNlbmRIYW5kc2hha2UoV1RGTW92ZShoYW5kc2hha2VN
ZXNzYWdlKSwgV1RGTW92ZShjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGJvb2wgc3VjY2VzcywgYm9vbCBkaWRBY2Nl
c3NTZWN1cmVDb29raWVzKSB7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIGZh
aWwoIkZhaWxlZCB0byBzZW5kIFdlYlNvY2tldCBoYW5kc2hha2UuIik7CiAKQEAgLTc0Myw3ICs3
NDMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUo
KQogICAgICAgICBhdXRvIGZyYW1lID0gbV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7
CiAgICAgICAgIHN3aXRjaCAoZnJhbWUtPmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVl
ZEZyYW1lVHlwZVN0cmluZzogewotICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUs
IGZyYW1lLT5zdHJpbmdEYXRhLmRhdGFBc1VJbnQ4UHRyKCksIGZyYW1lLT5zdHJpbmdEYXRhLmxl
bmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNj
ZXNzKSB7CisgICAgICAgICAgICBzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgZnJhbWUtPnN0cmlu
Z0RhdGEuZGF0YUFzVUludDhQdHIoKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGJvb2wgc3VjY2VzcykgewogICAgICAg
ICAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVk
IHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBAIC03NTEsNyAr
NzUxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVl
KCkKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgUXVldWVkRnJhbWVUeXBlVmVjdG9yOgotICAg
ICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT52ZWN0b3JEYXRhLmRhdGEo
KSwgZnJhbWUtPnZlY3RvckRhdGEuc2l6ZSgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAgICAgICAgICBzZW5kRnJhbWUoZnJhbWUt
Pm9wQ29kZSwgZnJhbWUtPnZlY3RvckRhdGEuZGF0YSgpLCBmcmFtZS0+dmVjdG9yRGF0YS5zaXpl
KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGJvb2wgc3VjY2Vzcykg
ewogICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFp
bCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBA
IC03NzgsNyArNzc4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdG
cmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9
IG1fYmxvYkxvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9
IEJsb2JMb2FkZXJOb3RTdGFydGVkOwotICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+
b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1
bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2Rl
LCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5
dGVMZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoYm9vbCBz
dWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGZhaWwoIkZhaWxlZCB0byBzZW5kIFdlYlNvY2tldCBmcmFtZS4iKTsKICAg
ICAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuY3BwCmluZGV4IDIzMzNkNjkwNGFjMzQzMTEyNzNkNTVjYmFkMDAwMjRmMzBjYzE5ZmEuLjdl
N2Y2OWRjNWE4NTY5YjQ2Mzc0MWU2NzA0ZDVhZTY2MDAzYWU4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3Nl
KGNvbnN0IERvY3VtZW50JiBkCiAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRy
aXg6OmZyb21Qcm9qZWN0aW9uKGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIpLnRvQ29sdW1uTWFqb3JG
bG9hdEFycmF5KCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGF1dG8geHJWaWV3ID0gV2ViWFJW
aWV3OjpjcmVhdGUobWFrZVJlZigqdGhpcyksIHZpZXcuZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSks
IEZsb2F0MzJBcnJheTo6Y3JlYXRlKHByb2plY3Rpb24uZGF0YSgpLCBwcm9qZWN0aW9uLnNpemUo
KSkpOworICAgICAgICBhdXRvIHhyVmlldyA9IFdlYlhSVmlldzo6Y3JlYXRlKFJlZiB7ICp0aGlz
IH0sIHZpZXcuZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0MzJBcnJheTo6Y3JlYXRlKHBy
b2plY3Rpb24uZGF0YSgpLCBwcm9qZWN0aW9uLnNpemUoKSkpOwogICAgICAgICB4clZpZXctPnNl
dFZpZXdwb3J0TW9kaWZpYWJsZShtX3Nlc3Npb24tPnN1cHBvcnRzVmlld3BvcnRTY2FsaW5nKCkp
OwogCiAgICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcgdG8geHJ2aWV3cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IDA1NGQ5YWJkOTdm
Y2E5YzQ3OTM0OTE0MzhhZTk5NTk2N2Y3NjExZGEuLmY4MDZhNDVjNDZmZDdlYWYwOWUzNTg2MDdl
MzgzNGMyYTlkNDNhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5jcHAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVz
dFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUsIFJlcXVlc3RSZWZlcgog
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3Jl
YXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8V2ViWFJSZWZlcmVuY2VT
cGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5j
ZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNl
ID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigq
dGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgUmVmIHsgKnRoaXMgfSwgdHlwZSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJY
UlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsK
KyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNy
ZWF0ZShkb2N1bWVudCwgUmVmIHsgKnRoaXMgfSwgdHlwZSk7CiAKICAgICAgICAgICAgIC8vIDIu
NS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCiAgICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0zMjMsNyAr
MzIzLDcgQEAgYm9vbCBXZWJYUlNlc3Npb246OmlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0CiAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaHV0LWRvd24tdGhlLXNl
c3Npb24KIHZvaWQgV2ViWFJTZXNzaW9uOjpzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSBpbml0
aWF0ZWRCeVN5c3RlbSkKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAgICBpZiAobV9lbmRlZCkg
ewogICAgICAgICAvLyBUaGlzIG1ldGhvZCB3YXMgY2FsbGVkIGVhcmxpZXIgd2l0aCBpbml0aWF0
ZWRCeVN5c3RlbT1ObyB3aGVuIHRoZQpAQCAtMzkwLDcgKzM5MCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFdlYlhSU2Vzc2lvbjo6ZW5kKEVuZFByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIFRo
ZSBzaHV0ZG93bigpIGNhbGwgYmVsb3cgbWlnaHQgcmVtb3ZlIHRoZSBzb2xlIHJlZmVyZW5jZSB0
byBzZXNzaW9uCiAgICAgLy8gdGhhdCBjb3VsZCBleGlzdCAodGhlIFhSU3lzdGVtIG93bnMgdGhl
IHNlc3Npb25zKSBzbyBsZXQncyBwcm90ZWN0IHRoaXMuCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAg
ICAgaWYgKG1fZW5kZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIkNhbm5vdCBlbmQgYSBzZXNzaW9uIG1vcmUgdGhhbiBvbmNlIl9zIH07CkBAIC01MDUs
NyArNTA1LDcgQEAgYm9vbCBXZWJYUlNlc3Npb246OmZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNv
bnN0CiAKIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0RnJhbWUoKQogewotICAgIG1fZGV2aWNl
LT5yZXF1ZXN0RnJhbWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0
byYmIGZyYW1lRGF0YSkgeworICAgIG1fZGV2aWNlLT5yZXF1ZXN0RnJhbWUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgZnJhbWVEYXRhKSB7CiAgICAgICAgIG9u
RnJhbWUoV1RGTW92ZShmcmFtZURhdGEpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXggNDU1NGE2MDE4YjdiYThhNjM2OTNh
NmJhZWViYTllZmIzN2RiNTY5ZC4uMDRlY2JlZDIzZDJhMzI3ZGZiN2JiMjNiOTMzMWE0NGY0N2Q3
MjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAK
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBXZWJYUlN5c3RlbTo6ZW5zdXJlSW1tZXJzaXZlWFJEZXZp
Y2VJc1NlbGVjdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogICAgIH0KIAogICAgIGJv
b2wgaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uID0gIW1faW1tZXJzaXZlWFJEZXZpY2VzSGF2
ZUJlZW5FbnVtZXJhdGVkOwotICAgIGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBpc0ZpcnN0WFJEZXZpY2VzRW51bWVyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGltbWVyc2l2ZVhSRGV2aWNlcykgbXV0YWJsZSB7CisgICAgZG9j
dW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZp
Y2VzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaXNGaXJzdFhSRGV2aWNl
c0VudW1lcmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBpbW1lcnNp
dmVYUkRldmljZXMpIG11dGFibGUgewogICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlc0hhdmVC
ZWVuRW51bWVyYXRlZCA9IHRydWU7CiAKICAgICAgICAgYXV0byBjYWxsYmFja09uRXhpdCA9IG1h
a2VTY29wZUV4aXQoWyZdKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcAppbmRleCA1NjYzYTFmMmZlNGEzNDkyYjEwNGQ0YTE2M2IwZjdjNWY1OTFlMmJmLi5mNDc5
ZmY1OTk5MWQxZTdjNmVlYmM4YWY0MTczODIxOWQ3MzU4YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViQW5p
bWF0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKIHZvaWQgV2ViQW5pbWF0aW9uOjpyZW1vdmUoKQog
ewogICAgIC8vIFRoaXMgb2JqZWN0IGNvdWxkIGJlIGRlbGV0ZWQgYWZ0ZXIgZWl0aGVyIGNsZWFy
aW5nIHRoZSBlZmZlY3Qgb3IgdGltZWxpbmUgcmVsYXRpb25zaGlwLgotICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKICAgICBzZXRFZmZlY3RJbnRlcm5hbChudWxscHRyKTsKICAgICBzZXRUaW1lbGluZShudWxs
cHRyKTsKIH0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0RWZmZWN0
KFJlZlB0cjxBbmltYXRpb25FZmZlY3Q+JiYgbmV3RWZmZWN0KQogICAgIGludmFsaWRhdGVFZmZl
Y3QoKTsKIAogICAgIC8vIFRoaXMgb2JqZWN0IGNvdWxkIGJlIGRlbGV0ZWQgYWZ0ZXIgY2xlYXJp
bmcgdGhlIGVmZmVjdCByZWxhdGlvbnNoaXAuCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIHNldEVm
ZmVjdEludGVybmFsKFdURk1vdmUobmV3RWZmZWN0KSwgaXNEZWNsYXJhdGl2ZUFuaW1hdGlvbigp
KTsKIAogICAgIC8vIDcuIFJ1biB0aGUgcHJvY2VkdXJlIHRvIHVwZGF0ZSBhbiBhbmltYXRpb24n
cyBmaW5pc2hlZCBzdGF0ZSBmb3IgYW5pbWF0aW9uIHdpdGggdGhlIGRpZCBzZWVrIGZsYWcgc2V0
IHRvIGZhbHNlLApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRUaW1l
bGluZShSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYgdGltZWxpbmUpCiAgICAgfQogCiAgICAg
Ly8gVGhpcyBvYmplY3QgY291bGQgYmUgZGVsZXRlZCBhZnRlciBjbGVhcmluZyB0aGUgdGltZWxp
bmUgcmVsYXRpb25zaGlwLgotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
OworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBzZXRUaW1lbGluZUludGVy
bmFsKFdURk1vdmUodGltZWxpbmUpKTsKIAogICAgIHNldFN1c3BlbmRlZChpczxEb2N1bWVudFRp
bWVsaW5lPihtX3RpbWVsaW5lKSAmJiBkb3duY2FzdDxEb2N1bWVudFRpbWVsaW5lPigqbV90aW1l
bGluZSkuYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpKTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lk
IFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrIGRpZFNlZWssIFN5bmNo
cm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8gaXMgYWxyZWFkeSBhIG1pY3JvdGFz
ayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZvciBhbmltYXRpb24uCiAgICAgICAgICAgICBt
X2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IHRydWU7CiAgICAgICAg
ICAgICBpZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlTWljcm90YXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9u
U3RlcHNNaWNyb3Rhc2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2Zpbmlz
aE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAppbmRleCAwNTAxOWQx
NjliNmQ2N2M1MzZmMWI5MzY4MGQ0YWUwNTdiMjczN2Q5Li5hNDg5NWMyZGJkOGRjMjg3ZjJmNmY2
ZTBlOGU3YWQyMjdjYmI0OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgRGVmZXJy
ZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFJlc29sdmVNCiAKICAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKSB7
CiAgICAgICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93biwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3Rv
ckdyYWJMb2NrOjpZZXM+IHN0cm9uZ1Jlc29sdXRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCByZXNvbHV0aW9uKTsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExv
b3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kZSwgc3Ryb25nUmVzb2x1dGlvbiA9IFdURk1vdmUoc3Ry
b25nUmVzb2x1dGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbW9kZSwgc3Ryb25nUmVzb2x1dGlvbiA9
IFdURk1vdmUoc3Ryb25nUmVzb2x1dGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6d2hlblNldHRsZWQoRnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYWN0
aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdoZW5TZXR0bGVkKFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWljcm90YXNrQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWljcm90YXNrQ2FsbGJhY2suaAppbmRleCBjMmY1YTZiMGEzNWI0ODc3MjViMjI2
OTljYjg2ZWQ5MDMwYTdlM2VhLi5iNTdiMmNhMmYxMWZkNDk5NWZiMTkyYzdhMDA1NmFhZmIzMDA2
MmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pY3JvdGFza0Nh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNaWNyb3Rhc2tDYWxs
YmFjay5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsbCgpCiAgICAg
ewotICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgeyBtYWtlUmVmKCp0aGlzKSB9OworICAgICAg
ICBhdXRvIHByb3RlY3RlZFRoaXMgeyBSZWYgeyAqdGhpcyB9IH07CiAgICAgICAgIEpTQzo6Vk0m
IHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCA4N2NiMGFiOGFhZDlhYWE5NzQwZTIwZWE2NzIxYzJlNWNhN2EzMzdjLi40NDcx
ZjZkMzU5NjI3NzFlYzNjNTBjZWQ3MjUxMzk5MDMwMTk2YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQzNzgs
NyArNDM3OCw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNr
Rm9ySW5kZXhlZERCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7CiAKLSAgICBibG9iUmVnaXN0cnko
KS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQihibG9iVVJMcygpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUg
eworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhl
ZERCKGJsb2JVUkxzKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKGF1dG8mJiBibG9i
RmlsZVBhdGhzKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgICAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlck1vZHVsZVNjcmlwdExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IDJhZTViN2JmMjgyNTYwNzRjMzdmYjg4YTNiMzI4NDUzODNkYzU5ZTcuLjZhMjg4MzgyZjJiODRl
NjljYWYwYjNlMzRlOWRjNDU4NmZhYzRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlck1vZHVsZVNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmNwcApAQCAtMTIxLDcgKzEy
MSw3IEBAIHZvaWQgV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiAK
IHZvaWQgV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyOjpub3RpZnlDbGllbnRGaW5pc2hlZCgpCiB7
Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIFdURk1vdmUobV9zb3VyY2VVUkwpLCBtX3Byb21pc2Uu
cmVsZWFzZU5vbk51bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAK
aW5kZXggNWNmY2FjY2Y5MGM5ZDNiYjJiNDlmZTUyMTRiNmNmNWY4MjFjZGJjMi4uYWEwNzViYWEy
OTgzMmJkMTE5ZjQ1YTdhYTE1NGNkNzdjMjFjNjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1
ZTo6aGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQoKSBjb25zdAogCiBSZWY8Q1NTR3JhZGllbnRW
YWx1ZT4gQ1NTR3JhZGllbnRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewotICAgIGF1dG8gcmVzdWx0ID0gaGFzQ29sb3JE
ZXJpdmVkRnJvbUVsZW1lbnQoKSA/IGNsb25lKCp0aGlzKSA6IG1ha2VSZWYoKnRoaXMpOworICAg
IGF1dG8gcmVzdWx0ID0gaGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQoKSA/IGNsb25lKCp0aGlz
KSA6IFJlZiB7ICp0aGlzIH07CiAgICAgcmVzb2x2ZVN0b3BDb2xvcnMocmVzdWx0LT5tX3N0b3Bz
LCBbJl0oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIGNvbG9yVmFsdWUpIHsKICAgICAgICAgcmV0
dXJuIGJ1aWxkZXJTdGF0ZS5jb2xvckZyb21QcmltaXRpdmVWYWx1ZVdpdGhSZXNvbHZlZEN1cnJl
bnRDb2xvcihjb2xvclZhbHVlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BYm9ydFNpZ25hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuY3Bw
CmluZGV4IGJmYTEwMGEyNDA1MzI2NGM1OWMwZjc1OTU0N2Y5YjY2YTZmZjBjZDkuLjUzYzUxYjY3
NWRkZWIwZDg3NTVmZGMxYmFiNDlmOTc4YzE3ZTIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BYm9ydFNpZ25hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2ln
bmFsLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEFib3J0U2lnbmFsOjpzaWduYWxBYm9ydCgp
CiAgICAgLy8gMi4gU2V0IHNpZ25hbOKAmXMgYWJvcnRlZCBmbGFnLgogICAgIG1fYWJvcnRlZCA9
IHRydWU7CiAKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBS
ZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgYXV0byBhbGdvcml0aG1zID0gc3RkOjpl
eGNoYW5nZShtX2FsZ29yaXRobXMsIHsgfSk7CiAgICAgZm9yIChhdXRvJiBhbGdvcml0aG0gOiBh
bGdvcml0aG1zKQogICAgICAgICBhbGdvcml0aG0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAppbmRleCA3ZjQyMTBiMThhOGMwMTZmZmFkZTYyODg2ZDNhNGIyOGU0NjQ1ZDNkLi5h
MzdkMDcxNDAzYTNlMDdiYTlkNmZlMTIyZmU2OGQ0ZWU4MDFmZDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGRyZW4oVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2
ZWN0b3IpCiAgICAgfQogCiAgICAgLy8gc3RlcCAzCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIENo
aWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwogICAgIHJlbW92ZUFsbENoaWxk
cmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIERlZmVyQ2hp
bGRyZW5DaGFuZ2VkOjpObyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZmMWU5OWVh
YjRkZWVmMTEyMWYwM2I5M2Y2ZWYxMmYyNjgxM2U3MjguLjQ1NjlmNGY2OGFlNWQ1N2QyODFmNmM5
NmIwNzVhYzkxZWEzYzI0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTczMiw3ICsx
NzMyLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYgdGl0bGUpCiAgICAgbV90aXRsZS5kaXJlY3Rpb24gPSB0aXRsZS5kaXJlY3Rpb247CiAK
ICAgICBpZiAoIW1fdXBkYXRlVGl0bGVUYXNrU2NoZWR1bGVkKSB7Ci0gICAgICAgIGV2ZW50TG9v
cCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHRoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIGV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1fdXBkYXRlVGl0
bGVUYXNrU2NoZWR1bGVkID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAoYXV0byBkb2N1bWVudExv
YWRlciA9IG1ha2VSZWZQdHIobG9hZGVyKCkpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50TG9h
ZGVyLT5zZXRUaXRsZShtX3RpdGxlKTsKQEAgLTM3MzgsNyArMzczOCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmRpZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCkKIAogICAgIGlmIChtX2dvdG9BbmNo
b3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZCkgewogICAgICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjdHJ5LXRvLXNj
cm9sbC10by10aGUtZnJhZ21lbnQKLSAgICAgICAgZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tT
b3VyY2U6Ok5ldHdvcmtpbmcsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXNd
IHsKKyAgICAgICAgZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcs
IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gewogICAgICAgICAgICAgYXV0
byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKHZpZXcoKSk7CiAgICAgICAgICAgICBpZiAoIWZyYW1l
VmlldykKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MDc1LDE0ICs1MDc1LDE0IEBAIHZv
aWQgRG9jdW1lbnQ6OmRpc3BhdGNoV2luZG93TG9hZEV2ZW50KCkKIAogdm9pZCBEb2N1bWVudDo6
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KFRhc2tTb3VyY2Ugc291cmNlLCBSZWY8RXZlbnQ+JiYg
ZXZlbnQpCiB7Ci0gICAgZXZlbnRMb29wKCkucXVldWVUYXNrKHNvdXJjZSwgW2RvY3VtZW50ID0g
bWFrZVJlZigqdGhpcyksIGV2ZW50ID0gV1RGTW92ZShldmVudCldIHsKKyAgICBldmVudExvb3Ao
KS5xdWV1ZVRhc2soc291cmNlLCBbZG9jdW1lbnQgPSBSZWYgeyAqdGhpcyB9LCBldmVudCA9IFdU
Rk1vdmUoZXZlbnQpXSB7CiAgICAgICAgIGRvY3VtZW50LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsK
ICAgICB9KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50T25X
aW5kb3coVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBldmVu
dExvb3AoKS5xdWV1ZVRhc2soc291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSB7CisgICAgZXZlbnRMb29wKCkucXVldWVU
YXNrKHNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBldmVudCA9
IFdURk1vdmUoZXZlbnQpXSB7CiAgICAgICAgIGlmICghbV9kb21XaW5kb3cpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIG1fZG9tV2luZG93LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAKaW5kZXggZDkxODkwNzIyZDgyNjFlYWY4
YmE0NTYwMWRlNGViNWE0NTViMzY1ZS4uYjljMWMxOTJjZmE0MmExZmYxYTJlYzNkYjk1ZjAwYjFj
ZWQ5ZDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBNaWNyb3Rhc2tRdWV1ZSYgV2luZG93RXZlbnRMb29wOjptaWNyb3Rhc2tRdWV1
ZSgpCiAKIHZvaWQgV2luZG93RXZlbnRMb29wOjpkaWRSZWFjaFRpbWVUb1J1bigpCiB7Ci0gICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7IC8vIEV4ZWN1dGluZyB0YXNrcyBt
YXkgcmVtb3ZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIFdpbmRvd0V2ZW50TG9vcC4KKyAg
ICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07IC8vIEV4ZWN1dGluZyB0YXNrcyBtYXkgcmVt
b3ZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIFdpbmRvd0V2ZW50TG9vcC4KICAgICBydW4o
KTsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgV2luZG93RXZlbnRMb29wOjpxdWV1ZU11
dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFzaygpCiAgICAgbV9tdXRhdGlvbk9ic2VydmVy
Q29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gdHJ1ZTsKICAgICBtX3BlcnBldHVhbFRhc2tH
cm91cEZvclNpbWlsYXJPcmlnaW5XaW5kb3dBZ2VudHMucXVldWVNaWNyb3Rhc2soW3RoaXNdIHsK
ICAgICAgICAgLy8gV2UgY2FuJ3QgbWFrZSBhIFJlZiB0byBXaW5kb3dFdmVudExvb3AgaW4gdGhl
IGxhbWJkYSBjYXB0dXJlIGFzIHRoYXQgd291bGQgcmVzdWx0IGluIGEgcmVmZXJlbmNlIGN5Y2xl
ICYgbGVhay4KLSAgICAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Cisg
ICAgICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICAgICAgbV9tdXRhdGlvbk9i
c2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gZmFsc2U7CiAKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgY2hlY2sgZG9lc24ndCBleGlzdCBpbiB0aGUgc3BlYy4KQEAgLTE0NSw3ICsx
NDUsNyBAQCBDdXN0b21FbGVtZW50UXVldWUmIFdpbmRvd0V2ZW50TG9vcDo6YmFja3VwRWxlbWVu
dFF1ZXVlKCkKICAgICAgICAgbV9wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlID0gdHJ1ZTsK
ICAgICAgICAgbV9wZXJwZXR1YWxUYXNrR3JvdXBGb3JTaW1pbGFyT3JpZ2luV2luZG93QWdlbnRz
LnF1ZXVlTWljcm90YXNrKFt0aGlzXSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4ndCBtYWtlIGEg
UmVmIHRvIFdpbmRvd0V2ZW50TG9vcCBpbiB0aGUgbGFtYmRhIGNhcHR1cmUgYXMgdGhhdCB3b3Vs
ZCByZXN1bHQgaW4gYSByZWZlcmVuY2UgY3ljbGUgJiBsZWFrLgotICAgICAgICAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgICAgICAgICBSZWYgcHJvdGVjdGVk
VGhpcyB7ICp0aGlzIH07CiAgICAgICAgICAgICBtX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVl
dWUgPSBmYWxzZTsKICAgICAgICAgICAgIEFTU0VSVChtX2N1c3RvbUVsZW1lbnRRdWV1ZSk7CiAg
ICAgICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6cHJvY2Vzc0JhY2t1cFF1ZXVl
KCptX2N1c3RvbUVsZW1lbnRRdWV1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggY2IzYjRlN2VjYWZhMjJk
MGEwYjBkOWQ1NTk3MWFhNzE2YWQ1NzZkZi4uNzJhNTMzOGNiYjE5NTM2MGM0MGFmNGI2OWRmNTRm
MjYwYWZlOTBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgTWVzc2Fn
ZVBvcnRDaGFubmVsOjpjbG9zZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
KQogCiAgICAgLy8gVGhpcyBzZXQgb2Ygc3RlcHMgaXMgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGxv
Y2sgaXMgdW5sb2NrZWQgYmVmb3JlIHRoZQogICAgIC8vIGxhc3QgcmVmIHRvIHRoaXMgb2JqZWN0
IGlzIHJlbGVhc2VkLgotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwor
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIG1fcGVuZGluZ01lc3NhZ2Vz
W2ldLmNsZWFyKCk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZVBvcnRUcmFuc2ZlcnNbaV0uY2xlYXIo
KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiBvdXRlckNhbGxiYWNrID0gW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
YXV0byBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiBvdXRlckNhbGxiYWNrID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGhhc0Fj
dGl2aXR5ID09IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzKSB7
CiAgICAgICAgICAgICBjYWxsYmFjayhoYXNBY3Rpdml0eSk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmlu
ZGV4IDExYTY4MmVlNzRmMWE4NmMwMjk5NTJlODcyYTVmZGNjMDVlMzA5OGIuLjQ2MzNkZmJmOTM3
ODBjNzNhODI1ODY2Yjc2OTgzMzcyYTI1ZDA5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgRWRpdENv
bW1hbmRDb21wb3NpdGlvbiogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmNvbXBvc2l0aW9uKCkgY29u
c3QKIAogRWRpdENvbW1hbmRDb21wb3NpdGlvbiYgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmVuc3Vy
ZUNvbXBvc2l0aW9uKCkKIHsKLSAgICBhdXRvIGNvbW1hbmQgPSBtYWtlUmVmUHRyKHRoaXMpOwor
ICAgIFJlZlB0ciBjb21tYW5kIHsgdGhpcyB9OwogICAgIHdoaWxlIChhdXRvKiBwYXJlbnQgPSBj
b21tYW5kLT5wYXJlbnQoKSkKICAgICAgICAgY29tbWFuZCA9IHBhcmVudDsKICAgICBpZiAoIWNv
bW1hbmQtPm1fY29tcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3Bw
CmluZGV4IGM5OWIwNmIyZDQ4ZDNkZTE0YzkzNWUyZjMxYzI4ZGQ5MWZiZjhiOGQuLjkwZWNlNGNj
YmMzYzI2MGNjOGQ4Mjk3MDFlODY1MmE5ZjBjNzFkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdENvbW1hbmQuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgYm9vbCBFZGl0Q29tbWFuZDo6aXNF
ZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpIGNvbnN0CiAKIHZvaWQgRWRpdENvbW1hbmQ6OnNl
dFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsK
LSAgICBmb3IgKGF1dG8gY29tbWFuZCA9IG1ha2VSZWZQdHIodGhpcyk7IDsgY29tbWFuZCA9IGNv
bW1hbmQtPm1fcGFyZW50LmdldCgpKSB7CisgICAgZm9yIChSZWZQdHIgY29tbWFuZCA9IHRoaXM7
IDsgY29tbWFuZCA9IGNvbW1hbmQtPm1fcGFyZW50LmdldCgpKSB7CiAgICAgICAgIGlmIChhdXRv
IGNvbXBvc2l0aW9uID0gY29tcG9zaXRpb25JZlBvc3NpYmxlKCpjb21tYW5kKSkKICAgICAgICAg
ICAgIGNvbXBvc2l0aW9uLT5zZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgICAg
ICBjb21tYW5kLT5tX3N0YXJ0aW5nU2VsZWN0aW9uID0gc2VsZWN0aW9uOwpAQCAtMTY4LDcgKzE2
OCw3IEBAIHZvaWQgRWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIAogdm9pZCBFZGl0Q29tbWFuZDo6c2V0RW5kaW5nU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICBmb3IgKGF1
dG8gY29tbWFuZCA9IG1ha2VSZWZQdHIodGhpcyk7IGNvbW1hbmQ7IGNvbW1hbmQgPSBjb21tYW5k
LT5tX3BhcmVudC5nZXQoKSkgeworICAgIGZvciAoUmVmUHRyIGNvbW1hbmQgPSB0aGlzOyBjb21t
YW5kOyBjb21tYW5kID0gY29tbWFuZC0+bV9wYXJlbnQuZ2V0KCkpIHsKICAgICAgICAgaWYgKGF1
dG8gY29tcG9zaXRpb24gPSBjb21wb3NpdGlvbklmUG9zc2libGUoKmNvbW1hbmQpKQogICAgICAg
ICAgICAgY29tcG9zaXRpb24tPnNldEVuZGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgICAg
ICBjb21tYW5kLT5tX2VuZGluZ1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYkNhbGxiYWNrLmNwcAppbmRleCBiOWE0MDYzNzkzZDc4NzVmOTc3NDZhZDhjMDAw
YzhiYzE5Y2EwZjNhLi4xMDM2ZGIxMjY2M2NlMWUxYjQxZWQzNmFjNmYxZTRjNWVmYmJmMjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JDYWxsYmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iQ2FsbGJhY2suY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBCbG9iQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPEJsb2I+JiYgYmxvYikK
IHsKLSAgICBjb250ZXh0LnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGJsb2IgPSBXVEZNb3ZlKGJsb2IpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewor
ICAgIGNvbnRleHQucG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBibG9iID0gV1RGTW92ZShibG9iKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaGFuZGxlRXZlbnQoYmxvYi5nZXQoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyLmNwcAppbmRleCBiYzA2ZGI1ZGI3ZDA5YmE5MGNkMmQ5OTY5NTYwY2M0NjNh
NzQ2MGEzLi45NDQxODJiN2E2M2IzNDA2YjM0OTA5MGMxMjJlMTNjYWZjNTQ5YzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZp
bGVSZWFkZXI6OmFib3J0KCkKICAgICBzdG9wKCk7CiAgICAgbV9lcnJvciA9IERPTUV4Y2VwdGlv
bjo6Y3JlYXRlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CiAKLSAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07
CiAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKICAgICBmaXJlRXZlbnQo
ZXZlbnROYW1lcygpLmxvYWRlbmRFdmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAppbmRleCBiMTk1Y2QzOGMxYjBkZGUwMDlmYjVmZmRk
YTg0ZGVjYzI2ZWJhMDlhLi5jNzM1OTgzNDFiZmEwYzY5NGZiMDRmZTIzZjE5NmE2MzRiZDNkZTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmZpcmVJbnB1
dEFuZENoYW5nZUV2ZW50cygpCiAgICAgaWYgKCFzaG91bGRTZW5kQ2hhbmdlRXZlbnRBZnRlckNo
ZWNrZWRDaGFuZ2VkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAg
ICBlbGVtZW50KCktPnNldFRleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoU3RyaW5n
KCkpOwogICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiAgICAgaWYgKGF1dG8q
IGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggOGZlODk0MjRlNDhjMmJmMTI2MDZhMzcw
NWZkOWVlNDE4OGY3NzJiZS4uMTA4YTI4MDhhMzQ4ZjQ4YjVkYjZhNjU5MjdlYWIzNzRhYmRlMGYw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIERpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6RGlyZWN0
b3J5RmlsZUxpc3RDcmVhdG9yKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvCiB2b2lkIERp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvcjo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBW
ZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogewogICAgIC8vIFJlc29sdmUgZGly
ZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFp
biB0aHJlYWQuCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRvY3VtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudCksIHBhdGhz
ID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkb2N1bWVudCA9
IG1ha2VSZWZQdHIoZG9jdW1lbnQpLCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZmlsZXMgPSBnYXRoZXJGaWxlSW5mb3JtYXRpb24ocGF0
aHMpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgZG9jdW1lbnQgPSBXVEZNb3ZlKGRvY3VtZW50KSwgZmlsZXMg
PSBjcm9zc1RocmVhZENvcHkoZmlsZXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIs
IG51bGxwdHIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggZjE3MTg5
ZGMwZTIxMjEwNzYwNGE0YmVjNjNkOWJjNDU5ZjVkZWE1My4uYmJjMGYxMjJiNTNmNWYyMzMzZmI2
NjZjYTVlYjNhYjNhZmMzYWQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmcKIAogdm9pZCBGaWxl
SW5wdXRUeXBlOjpkaWRDcmVhdGVGaWxlTGlzdChSZWY8RmlsZUxpc3Q+JiYgZmlsZUxpc3QsIFJl
ZlB0cjxJY29uPiYmIGljb24pCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgQVNTRVJUKCFh
bGxvd3NEaXJlY3RvcmllcygpIHx8IG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yKTsKICAgICBt
X2RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvciA9IG51bGxwdHI7CkBAIC01MDcsNyArNTA3LDcgQEAg
Ym9vbCBGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzV2l0aEltYWdlVHJhbnNjb2Rp
bmcoY29uc3QgVmVjdG9yPFN0cmluZz4KICAgICBhdXRvIHRyYW5zY29kaW5nVVRJID0gV2ViQ29y
ZTo6VVRJRnJvbU1JTUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOwogICAgIGF1dG8gdHJhbnNj
b2RpbmdFeHRlbnNpb24gPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRl
bnNpb25Gb3JNSU1FVHlwZSh0cmFuc2NvZGluZ01JTUVUeXBlKTsKIAotICAgIGF1dG8gY2FsbEZp
bGVzQ2hvc2VuID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGF0aHNdKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNlbWVudFBhdGhzKSB7CisgICAgYXV0byBjYWxsRmlsZXND
aG9zZW4gPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGhzXShjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRQYXRocykgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5m
aWxlc0Nob3NlbihwYXRocywgcmVwbGFjZW1lbnRQYXRocyk7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMDRmNzhlZDcx
MDMxZmYzMzNjMjg5NmMxOTEwOGUzZGQ5NWVmZTNjNS4uNzM2ZjgxYzk3MDA2YTA1OTBhYmUyNmU4
NGQwY2VmZjJiNTEzNWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojpmb2N1c0FuZFNob3dWYWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgLy8gZm9jdXMoKSB3
aWxsIHNjcm9sbCB0aGUgZWxlbWVudCBpbnRvIHZpZXcgYW5kIHRoaXMgc2Nyb2xsIG1heSBoYXBw
ZW4gYXN5bmNocm9ub3VzbHkuCiAgICAgLy8gQmVjYXVzZSBzY3JvbGxpbmcgdGhlIHZpZXcgaGlk
ZXMgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSwgd2UgbmVlZCB0byBzaG93IHRoZSB2YWxpZGF0aW9u
CiAgICAgLy8gbWVzc2FnZSBhc3luY2hyb25vdXNseSBhcyB3ZWxsLgotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAg
ICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDJkZWNmMWQ2NDAxZjdiYmY3OTQy
MTdkYTAzZGIwNzZhZWFmMjBjOWQuLjY0OTQzZmYyZTFmZTEzNTgyNjU1ZDU1YzRiODM1MGRiZWZi
MmQ1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTI4OSw3
ICsyODksNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3VibWl0SWZQb3NzaWJsZShFdmVudCog
ZXZlbnQsIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIHN1YgogICAgIGF1dG8gZm9ybVN0YXRlID0g
Rm9ybVN0YXRlOjpjcmVhdGUoKnRoaXMsIHRleHRGaWVsZFZhbHVlcygpLCBkb2N1bWVudCgpLCBO
b3RTdWJtaXR0ZWRCeUphdmFTY3JpcHQpOwogICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoV1RGTW92ZShmb3JtU3RhdGUpKTsKIAot
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0
ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIGF1dG8gc3VibWl0RXZlbnQgPSBTdWJtaXRFdmVudDo6
Y3JlYXRlKHN1Ym1pdHRlcik7CiAgICAgZGlzcGF0Y2hFdmVudChzdWJtaXRFdmVudCk7CkBAIC0z
OTUsNyArMzk1LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChFdmVudCogZXZlbnQs
IGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgcHJvY2UKICAgICBpZiAoZmlyc3RTdWNj
ZXNzZnVsU3VibWl0QnV0dG9uKQogICAgICAgICBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24t
PnNldEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsKIAotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpOyAvLyBGb3JtIHN1Ym1pc3Npb24gY2FuIGV4ZWN1dGUgYXJiaXRhcnkgSmF2
YVNjcmlwdC4KKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07IC8vIEZvcm0gc3VibWlz
c2lvbiBjYW4gZXhlY3V0ZSBhcmJpdGFyeSBKYXZhU2NyaXB0LgogCiAgICAgYXV0byBzaG91bGRM
b2NrSGlzdG9yeSA9IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSA/IExvY2tIaXN0b3J5OjpObyA6IExv
Y2tIaXN0b3J5OjpZZXM7CiAgICAgYXV0byBmb3JtU3VibWlzc2lvbiA9IEZvcm1TdWJtaXNzaW9u
OjpjcmVhdGUoKnRoaXMsIHN1Ym1pdHRlciwgbV9hdHRyaWJ1dGVzLCBldmVudCwgc2hvdWxkTG9j
a0hpc3RvcnksIHRyaWdnZXIpOwpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpyZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkKIHsKICAgICBBU1NFUlQoIXNob3Vs
ZEF1dG9jb21wbGV0ZSgpKTsKIAotICAgIGRvY3VtZW50KCkucG9zdFRhc2soW2Zvcm1FbGVtZW50
ID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGRvY3Vt
ZW50KCkucG9zdFRhc2soW2Zvcm1FbGVtZW50ID0gUmVmIHsgKnRoaXMgfV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGZvcm1FbGVtZW50LT5yZXNldEFzc29jaWF0ZWRGb3Jt
Q29udHJvbEVsZW1lbnRzKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCA2ZDY5ZjA3ZDY1MGZmMDgwYmQ2MjY5M2Y2MzI4YzdhZGYwMmMx
ZTYxLi5hODAyNTJlODdkMzZkMWU1NDgxNTQ5YThkNjViZGJlOTk5MmI3YzVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg5Myw3ICs4OTMsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgbV9pbnB1dFR5cGUt
PmF0dGFjaCgpOwogCiAgICAgaWYgKGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlz
KSB7Ci0gICAgICAgIGRvY3VtZW50KCkudmlldygpLT5xdWV1ZVBvc3RMYXlvdXRDYWxsYmFjayhb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGRvY3VtZW50KCkudmll
dygpLT5xdWV1ZVBvc3RMYXlvdXRDYWxsYmFjayhbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShT
ZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGU6OlJlc3RvcmVPclNlbGVjdEFsbCwgU2VsZWN0aW9uUmV2
ZWFsTW9kZTo6UmV2ZWFsKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTU0Miw3ICsxNTQyLDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkK
ICAgICBpZiAoaXNDb2xvckNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGRvY3VtZW50KCkucG9zdFRhc2soW2lucHV0RWxl
bWVudCA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBk
b2N1bWVudCgpLnBvc3RUYXNrKFtpbnB1dEVsZW1lbnQgPSBSZWYgeyAqdGhpcyB9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaW5wdXRFbGVtZW50LT5yZXNldCgpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDU5
ZDA3NTJkYzJhZGYxNTFiNmNmNWNmNzU4MWU5YTJlNDI0YTI0ZS4uMTk5ODYyYjgwN2FjMjIwNzRi
MmY0NWMyZjEyOTdiMTViNjJhMzgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0zMDUwLDcgKzMwNTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dEF1ZGlvT3V0cHV0RGV2aWNlKFN0cmluZyYmIGRldmljZUlkLCBET01Qcm9taXNlRGVmZXJyZQog
ICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPmF1ZGlvT3V0cHV0RGV2aWNlQ2hh
bmdlZCgpOwogCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBkZXZpY2VJZCA9IFdURk1vdmUoZGV2aWNlSWQpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGV2aWNlSWQgPSBXVEZNb3ZlKGRldmljZUlk
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fYXVk
aW9PdXRwdXRIYXNoZWREZXZpY2VJZCA9IFdURk1vdmUoZGV2aWNlSWQpOwogICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKICAgICB9KTsKQEAgLTQ2MjMsNyArNDYyMyw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxheW91dFNpemVDaGFuZ2VkKCkKIHsKICAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtl
UmVmUHRyKGRvY3VtZW50KCkudmlldygpKSkgewotICAgICAgICBhdXRvIHRhc2sgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGF1dG8gdGFzayA9IFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICAgICAgaWYgKGF1
dG8gcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgICAgICByb290LT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoInJlc2l6ZSIsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgICAgICB9OwpAQCAtNjQxNyw3ICs2NDE3
LDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5KGJvb2wgdmFsdWUpCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRi
eSkKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0
aGlzKSwgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSk7
CiAgICAgZWxzZQotICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCku
ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVt
ZW50PigqdGhpcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8g
c3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxW
aWRlb0VsZW1lbnQ+KCp0aGlzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XShhdXRvIHN1Y2Nlc3MpIG11dGFibGUgewogICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5T
dGFuZGJ5ID0gIXN1Y2Nlc3M7CiAgICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggZDQ2OWJkMjJjMDUyM2ZkMGQyYWIw
Nzk1NTAzYzBjYjkxOTVkMzZjOC4uMjA4YzhkMmExY2Q4Njk3MjRiNmRmNWQ5NTk0ZDk1OWI2ODA1
YjI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzY2hl
ZHVsZVVwZGF0ZUZvckFmdGVyU3R5bGVSZXNvbHV0aW9uKCkKIAogICAgIG1faGFzVXBkYXRlU2No
ZWR1bGVkRm9yQWZ0ZXJTdHlsZVJlc29sdXRpb24gPSB0cnVlOwogCi0gICAgU3R5bGU6OnF1ZXVl
UG9zdFJlc29sdXRpb25DYWxsYmFjayhbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgU3R5bGU6OnF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayhbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dXBkYXRlQWZ0ZXJTdHls
ZVJlc29sdXRpb24oKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRl
eCAyNzA4NjFiYTQ1Y2UzYTM1OTIyNjg1NmM2ODhkNzdlYjRkZWUzYWJmLi4wZWVmMDZhM2NiMjUw
MzIzYzM1MjU1N2YwYTFjYWMzNjRhYzU0YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CkBAIC05MzAsNyArOTMwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5wdXRUeXBlOjphcHBseVN0
ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW4KICAgICBpZiAobmV3
VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpKQogICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5n
ZS5tYXhpbXVtKCk7CiAKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
KyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgYXV0byByZXN1bHQgPSBzZXRW
YWx1ZUFzRGVjaW1hbChuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvcik7CiAgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSB8fCAhZWxlbWVudCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IGNiNjEyYTBiNTMwZDE1ZGQy
ODE4Y2RlNzAzNDNhMjVjYThjMTkwYjAuLjgwOGE5OWU2NTVlMjAxYWFhZTFiMGVmYjRhMzcyMjAy
Yjc3NDI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTQ2
OCw3ICs0NjgsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2NoZWR1bGVDb21taXRUb1BsYWNl
aG9sZGVyQ2FudmFzKCkKICAgICBpZiAoIW1faGFzU2NoZWR1bGVkQ29tbWl0KSB7CiAgICAgICAg
IGF1dG8mIHNjcmlwdENvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAg
ICBtX2hhc1NjaGVkdWxlZENvbW1pdCA9IHRydWU7Ci0gICAgICAgIHNjcmlwdENvbnRleHQucG9z
dFRhc2soW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpc10gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CisgICAgICAgIHNjcmlwdENvbnRleHQucG9zdFRhc2soW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
ICAgICAgICAgICAgIG1faGFzU2NoZWR1bGVkQ29tbWl0ID0gZmFsc2U7CiAgICAgICAgICAgICBj
b21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApp
bmRleCBjZmVjOGU0NTcwYWNjNjhkZTYwYjM2NDkyMWM3NjRjYWM2NDljMTFlLi4zYTE2NzZkN2Q2
YTU2MGFmYjU3NDNhM2NkZDE4ZmU2Y2JhMzVhZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDE1
Miw3ICs0MTUyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtlWFJDb21w
YXRpYmxlKE1ha2VYUkNvbXBhdGlibGVQcm9taXNlJiYgcHJvbWkKICAgICAvLyAyLiBMZXQgY29u
dGV4dCBiZSB0aGUgdGFyZ2V0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Ugb2JqZWN0LgogICAg
IC8vIDMuIEVuc3VyZSBhbiBpbW1lcnNpdmUgWFIgZGV2aWNlIGlzIHNlbGVjdGVkLgogICAgIGF1
dG8mIHhyU3lzdGVtID0gTmF2aWdhdG9yV2ViWFI6OnhyKHdpbmRvdy0+bmF2aWdhdG9yKCkpOwot
ICAgIHhyU3lzdGVtLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cHJvdGVjdGVkWHJTeXN0ZW0gPSBtYWtlUmVmKHhyU3lzdGVtKV0oKSBtdXRhYmxlIHsKKyAgICB4
clN5c3RlbS5lbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcHJvdGVj
dGVkWHJTeXN0ZW0gPSBtYWtlUmVmKHhyU3lzdGVtKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byByZWplY3RQcm9taXNlV2l0aEludmFsaWRTdGF0ZUVycm9yID0gbWFrZVNjb3BlRXhpdChbJl0o
KSB7CiAgICAgICAgICAgICBtX2lzWFJDb21wYXRpYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDg5YTYzZTM2MjE3MTIyNGI0MTNh
NDk1NDIzMTJlMzgzNmI2ZWJjMDcuLjc4NzI5NmNkYmM1MDYxNDE0YzAyYmY1MDJlMzRhYTQ1MGVm
YmU1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIHZvaWQgV2ViR0xTeW5jOjpzY2hlZHVsZUFsbG93Q2FjaGVVcGRhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICBpZiAoIWNhbnZhcykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5xdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKmNh
bnZhcywgVGFza1NvdXJjZTo6V2ViR0wsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KCkgeworICAgIGNvbnRleHQucXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCpjYW52YXMsIFRh
c2tTb3VyY2U6OldlYkdMLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgewogICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX2FsbG93Q2FjaGVVcGRhdGUgPSB0cnVlOwogICAgIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApp
bmRleCBmMjg4NzNjMGE1OGNiZDg5MDQyN2MwN2E2MTJmNGM0OTJlYTc4ZjY2Li5lMjM0ODU0YzEz
ZjYzY2UwMGNhYjQ0YmVhNTE0OWYzMTZjYjA5MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIEpTVmFs
dWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3cmFwcGVyKEpTR2xvYmFsT2JqZWN0KiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvCiAKICAgICBKU09iamVjdCogcHJvdG90eXBlID0gSlNDb21tYW5k
TGluZUFQSUhvc3Q6OmNyZWF0ZVByb3RvdHlwZShleGVjLT52bSgpLCAqZ2xvYmFsT2JqZWN0KTsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpOwotICAgIEpTQ29t
bWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBKU0NvbW1hbmRMaW5lQVBJSG9z
dDo6Y3JlYXRlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBtYWtlUmVmKCp0aGlzKSk7CisgICAg
SlNDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJSG9zdCA9IEpTQ29tbWFuZExpbmVB
UElIb3N0OjpjcmVhdGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFJlZiB7ICp0aGlzIH0pOwog
ICAgIG1fd3JhcHBlcnMuYWRkV3JhcHBlcihnbG9iYWxPYmplY3QsIGNvbW1hbmRMaW5lQVBJSG9z
dCk7CiAKICAgICByZXR1cm4gY29tbWFuZExpbmVBUElIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cAppbmRleCA2MjhjZGVjY2FiMWRiOTU2YTMyNjUyNTVhNjlhNzMyMDk1ZDIyMDkxLi42NDU0MGI1
OWI4YWFlODNjMTg4NjcxZTgxZDE5MGUxYmE2YjgxYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
c3VzcGVuZChVbnN1c3BlbmRTb29uIHVuc3VzcGVuZFNvb24pCiAgICAgbV9zdXNwZW5kZWQgPSB0
cnVlOwogCiAgICAgaWYgKHVuc3VzcGVuZFNvb24gPT0gVW5zdXNwZW5kU29vbjo6WWVzKSB7Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBmcm9udGVuZCBwYWdl
IGhhcyBiZWVuIGRlYWxsb2NhdGVkLCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCiAgICAgICAgICAg
ICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fZnJvbnRlbmRQYWdlKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBhZWNlNWE0YjYzZTM5MWExZjNhZDY4ODNiNmQ2
NzQ3MTUwYTdlMTkyLi43YTI0YWEyMjcxZTk2M2FmNjc0MTEwYzQ2NmI4NjQ3YWFjMTEzM2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAvLyBUaGUgZnJvbnRlbmQgY2FuIGJlIGNsb3NlZCBhbmQgZGVzdHJveSB0aGUgb3duaW5nIGZy
b250ZW5kIGNsaWVudCBiZWZvcmUgb3IgaW4gdGhlCiAgICAgICAgIC8vIHByb2Nlc3Mgb2YgZGlz
cGF0Y2hpbmcgdGhlIHRhc2ssIHNvIGtlZXAgYSBwcm90ZWN0b3IgcmVmZXJlbmNlIGhlcmUuCi0g
ICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIG1faGFz
U2NoZWR1bGVkVGFzayA9IGZhbHNlOwogICAgICAgICAgICAgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7
CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggZDNlOWNlYWQ5Y2I3YzgyZTJkOTAyNzA5MWFiZWU0OGQ2NWM0ZTQ5YS4uN2Q4YmIzNmJjNGQ3
OWRiYTc3NmNhYmI0YzI1NzU3MTU5N2QzMDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KCkK
IHsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
OwogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBtX3N1YnN0aXR1dGVEYXRh
LnJlc3BvbnNlKCk7CiAgICAgaWYgKHJlc3BvbnNlLnVybCgpLmlzRW1wdHkoKSkKQEAgLTU5MCw3
ICs1OTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBtX3NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhID0geyB9OwogICAgICAgICB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2Vy
dmljZVdvcmtlckNsaWVudCgpOwogICAgIH0KLSAgICB3aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShy
ZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpc10g
KGF1dG8mJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICB3aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShy
ZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSAo
YXV0byYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKTsKICAgICAgICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkgfHwgIW1fbWFpbkRv
Y3VtZW50RXJyb3IuaXNOdWxsKCkgfHwgIW1fZnJhbWUpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmMKICAgICBpZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBhdXRvIG5hdmln
YXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZigqbV9mcmFtZSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
IG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikgbXV0YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9u
UG9saWN5Q29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZigqbV9mcmFtZSksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbikgbXV0YWJsZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5hdmln
YXRpb25Qb2xpY3kgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoIChuYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24pIHsKICAgICAgICAgY2FzZSBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxv
YWQ6CkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmUKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpICYmIHJlc3BvbnNlLnNvdXJjZSgp
ID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpIHsKLSAgICAgICAgbWF0
Y2hSZWdpc3RyYXRpb24ocmVzcG9uc2UudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3BvbnNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgbXV0YWJsZSB7CisgICAgICAg
IG1hdGNoUmVnaXN0cmF0aW9uKHJlc3BvbnNlLnVybCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHJlc3BvbnNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoIW1fbWFpbkRvY3VtZW50RXJyb3IuaXNOdWxsKCkgfHwgIW1fZnJhbWUpIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTExMTYsNyArMTExNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpCiAgICAg
ICAgIG1haW5SZXNvdXJjZUxvYWRlci0+bWFya0luQXN5bmNSZXNwb25zZVBvbGljeUNoZWNrKCk7
CiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6Y3Jl
YXRlKCk7CiAgICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID0gdG9C
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uKG1fY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdCk7Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9u
c2UsIHJlcXVlc3RJZGVudGlmaWVyLCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluUmVzb3VyY2VMb2Fk
ZXIgPSBXVEZNb3ZlKG1haW5SZXNvdXJjZUxvYWRlciksCisgICAgZnJhbWVMb2FkZXIoKS0+Y2hl
Y2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVudGlmaWVyLCBicm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIG1haW5SZXNvdXJjZUxvYWRlciA9IFdURk1vdmUobWFpblJlc291cmNlTG9hZGVyKSwK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxl
YXNlKCksIHJlcXVlc3RJZGVudGlmaWVyXSAoUG9saWN5QWN0aW9uIHBvbGljeSwgUG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3BvbnNlSWRlbnRpZmllci5pc1ZhbGlkRm9yKHJlcXVlc3RJZGVudGlmaWVy
KSk7CiAgICAgICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KHBvbGljeSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTlkNjk1NWE5
MmQwZGMzZWRhNGQxMjExOGViZjA1NWYwODA3NGVmMC4uMTQ5YmE4YTMyNjhiOWI2MGFkYTlmZWNj
NGQ2NjNhMGY1NmE0MTY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVz
CiAKICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBtX3Jlc291cmNlLT5vcHRpb25z
KCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnM7CiAgICAgaWYgKG1fY2xpZW50KQot
ICAgICAgICBtX2NsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoYXV0byBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CisgICAgICAgIG1fY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGF1dG8gc2hvdWxkQ29udGlu
dWUpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29u
dGludWUgPT0gU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCBhMzM4
MzY0YzkxYmRlYjMyZDQ0YjMzYWIyZmIxODIzMzhkODlhZGFiLi40MzVmOTA0ZGU3Njk0NTY4OWQ1
ZGQ1Y2YxNDRhNmY2ZWE1M2NlZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKIHZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBSZXNvdXJjZUxvYWRlcjo6aW5pdChXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICBSZXNvdXJjZUxvYWRl
cjo6aW5pdChXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChi
b29sIHN1Y2Nlc3MpIG11dGFibGUgewogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICBBU1NFUlQoIXJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQtPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3Bv
bnNlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZWRpcmVjdFJlc3BvbnNlLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
bXV0YWJsZSB7CisgICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXF1ZXN0LmlzTnVs
bCgpKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwo
V1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAwYTBkNDNlZDU3NTA0Y2Q4MTA1YWM4NmUwZjAzNWY2ODNjZDMyOTI4Li5hYTg1YmI0ZDNjYTg3
MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpp
bml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aQogICAgIH0KICAgICBGcmFtZUxvYWRlcjo6YWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVk
ZWQoY2xpZW50UmVxdWVzdCwgbV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAKLSAgICB3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbChXVEZNb3ZlKGNsaWVudFJlcXVlc3QpLCBSZXNvdXJjZVJlc3BvbnNlKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
IG11dGFibGUgeworICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFdURk1vdmUoY2xpZW50UmVx
dWVzdCksIFJlc291cmNlUmVzcG9uc2UoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIC8vIElmIHRoaXMgUmVzb3VyY2VMb2FkZXIgd2FzIHN0b3BwZWQgYXMg
YSByZXN1bHQgb2Ygd2lsbFNlbmRSZXF1ZXN0LCBiYWlsIG91dC4KQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVl
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVy
UmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmxvYWREYXRhVVJMKCkKICAgICBhdXRvIG1vZGUgPSBEYXRhVVJMRGVjb2Rlcjo6TW9k
ZTo6TGVnYWN5OwogICAgIGlmIChtX3JlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1
ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKQogICAgICAgICBtb2RlID0gRGF0YVVSTERlY29kZXI6Ok1v
ZGU6OkZvcmdpdmluZ0Jhc2U2NDsKLSAgICBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHVybCwgc2No
ZWR1bGVDb250ZXh0LCBtb2RlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB1cmxdKGF1dG8gZGVjb2RlUmVzdWx0KSBtdXRhYmxlIHsKKyAgICBEYXRhVVJMRGVjb2Rlcjo6
ZGVjb2RlKHVybCwgc2NoZWR1bGVDb250ZXh0LCBtb2RlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHVybF0oYXV0byBkZWNvZGVSZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAodGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKCFkZWNvZGVSZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYzYWFkM2NhNzNlZTkwMmVkYmJjNGUwZTYxY2ZhZjA4
NTRmNDA0MDIuLjA4ZmI5M2QyM2E5NjYxMjM1YjJlMGY1ZTdlNzlkM2E5MGI2YWQ2YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTQzLDcgKzE0
Myw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiB7CiAgICAgLy8g
RklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWQuCiAgICAgQVNTRVJUKCFJT1NB
cHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpOwotICAgIGluaXQoUmVzb3VyY2VSZXF1ZXN0KG1f
aU9TT3JpZ2luYWxSZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKGJvb2wgc3VjY2VzcykgeworICAgIGluaXQoUmVzb3VyY2VSZXF1ZXN0KG1faU9TT3JpZ2lu
YWxSZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoYm9vbCBz
dWNjZXNzKSB7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgbV9pT1NPcmlnaW5hbFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKQEAgLTE2Miw3
ICsxNjIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpjYW5jZWxJZk5vdEZpbmlzaGluZygp
CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBSZXNvdXJjZUxvYWRlcjo6aW5pdChXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoYm9vbCBpbml0aWFsaXplZCkgbXV0YWJsZSB7CisgICAgUmVzb3Vy
Y2VMb2FkZXI6OmluaXQoV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYm9vbCBpbml0aWFsaXplZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghaW5pdGlhbGl6
ZWQpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpIHsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlv
bnMoKS5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlv
bklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRp
b25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgfQogCi0gICAgYXV0byBjb250aW51ZVdpbGxTZW5k
UmVxdWVzdCA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlZGlyZWN0
UmVzcG9uc2VdIChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgbXV0YWJsZSB7
CisgICAgYXV0byBjb250aW51ZVdpbGxTZW5kUmVxdWVzdCA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcmVkaXJlY3RSZXNwb25zZV0gKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxs
KCkgfHwgcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgaWYgKG5ld1JlcXVl
c3QuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1
c2UgbmV3IHJlcXVlc3QgaXMgTlVMTCAoMSkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YS4uMWM1
MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjp+QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyKCkKIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmNhbmNlbChFcnJvciBlcnJvcikKIHsKLSAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhp
cyB7ICp0aGlzIH07CiAKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFj
aykpCiAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CkBAIC0xMTksNyAr
MTE5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVIKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAwYWZmYTM4YmVkYmRjZDRkNDA3ZmY0Yzg2ZjAzMjFl
NTBkNDAzNWFjLi44MDM0ZTIxN2M2ODRiODVkZDA4YmNmMjI4ZTc3NzExZTYzYWQwZTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MTksNyArOTE5LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWMKICAgICBSZWZQdHI8V2luZG93UHJveHk+IGluY3VtYmVudFdpbmRvd1Byb3h5
ID0gaW5jdW1iZW50V2luZG93LmZyYW1lKCkgPyAmaW5jdW1iZW50V2luZG93LmZyYW1lKCktPndp
bmRvd1Byb3h5KCkgOiBudWxscHRyOwogICAgIGF1dG8gdXNlckdlc3R1cmVUb0ZvcndhcmQgPSBV
c2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0dXJlKCk7CiAKLSAgICBkb2N1bWVu
dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVl
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgaW5jdW1iZW50V2luZG93UHJveHkgPSBXVEZNb3ZlKGluY3VtYmVudFdpbmRv
d1Byb3h5KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLCB1c2VyR2VzdHVy
ZVRvRm9yd2FyZCA9IFdURk1vdmUodXNlckdlc3R1cmVUb0ZvcndhcmQpLCBwb3N0TWVzc2FnZUlk
ZW50aWZpZXIsIHN0YWNrVHJhY2UgPSBXVEZNb3ZlKHN0YWNrVHJhY2UpLCB0YXJnZXRPcmlnaW4g
PSBXVEZNb3ZlKHRhcmdldCldKCkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnQoKS0+ZXZlbnRMb29w
KCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OlBvc3RlZE1lc3NhZ2VRdWV1ZSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgaW5j
dW1iZW50V2luZG93UHJveHkgPSBXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgc291cmNl
T3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLCB1c2VyR2VzdHVyZVRvRm9yd2FyZCA9IFdU
Rk1vdmUodXNlckdlc3R1cmVUb0ZvcndhcmQpLCBwb3N0TWVzc2FnZUlkZW50aWZpZXIsIHN0YWNr
VHJhY2UgPSBXVEZNb3ZlKHN0YWNrVHJhY2UpLCB0YXJnZXRPcmlnaW4gPSBXVEZNb3ZlKHRhcmdl
dCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1l
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIHZvaWQgRE9N
V2luZG93OjpjbG9zZSgpCiAKICAgICBwYWdlLT5zZXRJc0Nsb3NpbmcoKTsKIAotICAgIGRvY3Vt
ZW50KCktPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24s
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBkb2N1bWVudCgp
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgaWYgKGF1dG8qIHBh
Z2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbG9zZVdpbmRv
dygpOwogICAgIH0pOwpAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgdm9pZCBET01XaW5kb3c6OmRpc3Bh
dGNoTG9hZEV2ZW50KCkKIHsKICAgICAvLyBJZiB3ZSBkaWQgbm90IHByb3RlY3QgaXQsIHRoZSBk
b2N1bWVudCBsb2FkZXIgYW5kIGl0cyB0aW1pbmcgc3Vib2JqZWN0IG1pZ2h0IGdldCBkZXN0cm95
ZWQKICAgICAvLyBhcyBhIHNpZGUgZWZmZWN0IG9mIHdoYXQgZXZlbnQgaGFuZGxpbmcgY29kZSBk
b2VzLgotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBw
cm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBhdXRvIHByb3RlY3RlZExvYWRlciA9IG1ha2VS
ZWZQdHIoZnJhbWUoKSA/IGZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgOiBudWxs
cHRyKTsKICAgICBib29sIHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcyA9IHByb3RlY3RlZExvYWRl
ciAmJiAhcHJvdGVjdGVkTG9hZGVyLT50aW1pbmcoKS5sb2FkRXZlbnRTdGFydCgpOwogCkBAIC0y
MjgxLDcgKzIyODEsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAgICAgLy8gY2FsbGVkIHdpdGggYSB0YXJnZXQgb2Yg
bnVsbC4gTW9zdCBjYWxsZXJzIHBhc3MgdGhlIGRvY3VtZW50IGFzIHRoZSB0YXJnZXQsIHRob3Vn
aC4KICAgICAvLyBGaXhpbmcgdGhpcyBjb3VsZCBhbGxvdyB1cyB0byByZW1vdmUgdGhlIHNwZWNp
YWwgY2FzZSBpbiBEb2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQuCiAKLSAgICBhdXRv
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7
ICp0aGlzIH07CiAKICAgICAvLyBQYXVzaW5nIGEgcGFnZSBtYXkgdHJpZ2dlciBwYWdlaGlkZSBh
bmQgcGFnZXNob3cgZXZlbnRzLiBXZWJDb3JlIGFsc28gaW1wbGljaXRseSBmaXJlcyB0aGVzZQog
ICAgIC8vIGV2ZW50cyB3aGVuIGNsb3NpbmcgYSBXZWJWaWV3LiBIZXJlIHdlIGtlZXAgdHJhY2sg
b2YgdGhlIHN0YXRlIG9mIHRoZSBwYWdlIHRvIHByZXZlbnQgZHVwbGljYXRlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAppbmRleCA2YTk1ZjJhYTA1MmZlZWIwN2UzOGE3MTkyZDAyZDk4NDY4ZjdlNWNiLi5k
NDY1NGFiYTcxZWM4ZjZmZDhiOTdhOWQwZGM4YjY3NTZlMDVlNWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKFVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGJvb2wgcGFnZVdhc05vdGlmaWVkID0gbV9wYWdlLT5oYXNCZWVuTm90aWZpZWRUb0luamVj
dFVzZXJTY3JpcHRzKCk7Ci0gICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFj
aFVzZXJTY3JpcHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5qZWN0
aW9uVGltZSwgcGFnZVdhc05vdGlmaWVkXSAoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3Qg
VXNlclNjcmlwdCYgc2NyaXB0KSB7CisgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCku
Zm9yRWFjaFVzZXJTY3JpcHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBp
bmplY3Rpb25UaW1lLCBwYWdlV2FzTm90aWZpZWRdIChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBj
b25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpIHsKICAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25U
aW1lKCkgPT0gaW5qZWN0aW9uVGltZSkgewogICAgICAgICAgICAgaWYgKHNjcmlwdC53YWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nKCkgPT0gV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9y
ZUluamVjdGluZzo6WWVzICYmICFwYWdlV2FzTm90aWZpZWQpCiAgICAgICAgICAgICAgICAgYWRk
VXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IGQyMDFkMmI4Y2RkNTBhODIwM2ZhOWQ5ZjM1NWU1ODk1ZTI2
NjQwOGUuLjlkMTU2OTJmN2Q5OGRlMjllZThjYzk5NDlmNDk5NzU2YzRhMjdhNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIzNzIsNyArMjM3Miw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpzY3JvbGxUb0ZvY3VzZWRFbGVtZW50SW1tZWRpYXRlbHlJZk5lZWRlZCgpCiAKIHZvaWQgRnJh
bWVWaWV3OjpzY3JvbGxUb0ZvY3VzZWRFbGVtZW50VGltZXJGaXJlZCgpCiB7Ci0gICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAq
dGhpcyB9OwogICAgIHNjcm9sbFRvRm9jdXNlZEVsZW1lbnRJbnRlcm5hbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IDNhNzI0MjM5ZTg2MjNlNjEwNGIzYTJmNDMy
ZWRiZDYzY2YwNjc1ZWYuLjA2Zjk0M2FjMTI4NWZhZjMyOThlNjA0ZTBjNTViNjc3NWQ5MTgyNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC00MzgsNyArNDM4LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZTo6c2NoZWR1bGVUYXNrSWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2hhc1NjaGVkdWxlZFRpbWluZ0J1ZmZlckRlbGl2ZXJ5VGFzayA9IHRydWU7Ci0gICAg
Y29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OlBlcmZvcm1hbmNlVGlt
ZWxpbmUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXNdIHsKKyAgICBjb250
ZXh0LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6UGVyZm9ybWFuY2VUaW1lbGlu
ZSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4
dCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IGM4MjkxN2M3MTNlYjk3
YzkxNmVjZTM3MjhjZDdjMGIwOGYyOGU5NDkuLmI1YTBhODJmZDZiM2E0MzJmNjhiYjEwMTBlN2Q2
MDUxZThlMWZkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Ro
cmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kCiAgICAgYWRkUGVuZGluZ1Njcm9sbFVwZGF0ZShXVEZNb3ZlKHNjcm9s
bFVwZGF0ZSkpOwogCiAgICAgYXV0byBkZWZlcnJlciA9IFdoZWVsRXZlbnRUZXN0TW9uaXRvckNv
bXBsZXRpb25EZWZlcnJlciB7IHdoZWVsRXZlbnRUZXN0TW9uaXRvcigpLCByZWludGVycHJldF9j
YXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2Rl
LnNjcm9sbGluZ05vZGVJRCgpKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJl
YWRTeW5jTmVlZGVkIH07Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRlZmVycmVyID0gV1RGTW92ZShkZWZlcnJlcildIHsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBkZWZl
cnJlciA9IFdURk1vdmUoZGVmZXJyZXIpXSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdD
b29yZGluYXRvciA9IHN0cm9uZ1RoaXMtPm1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IuZ2V0KCkpCiAg
ICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsaW5nVGhyZWFkQWRkZWRQZW5k
aW5nVXBkYXRlKCk7CiAgICAgfSk7CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6OndpbGxTdGFydFJlbmRlcmluZ1VwZGF0ZSgpCiAKICAgICAvLyBXYWl0IGZv
ciB0aGUgc2Nyb2xsaW5nIHRocmVhZCB0byBhY3F1aXJlIG1fdHJlZUxvY2suIFRoaXMgZW5zdXJl
cyB0aGF0IGFueSBwZW5kaW5nIHdoZWVsIGV2ZW50cyBhcmUgcHJvY2Vzc2VkLgogICAgIEJpbmFy
eVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCAmc2VtYXBob3JlXSgpIHsKKyAgICBTY3JvbGxp
bmdUaHJlYWQ6OmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgJnNlbWFw
aG9yZV0oKSB7CiAgICAgICAgIExvY2tlciB0cmVlTG9ja2VyIHsgcHJvdGVjdGVkVGhpcy0+bV90
cmVlTG9jayB9OwogICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPndhaXRGb3JSZW5kZXJpbmdVcGRhdGVDb21wbGV0aW9uT3JUaW1lb3V0KCk7CkBAIC00
MTAsNyArNDEwLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmRpc3BsYXlEaWRSZWZy
ZXNoKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CiAKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldKCkgeworICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGxheURp
ZFJlZnJlc2hPblNjcm9sbGluZ1RocmVhZCgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCBmOGU5MTM2MTgxN2E3ZTkyMDM3
ZjVlYzFkMDFmNWJkNjNlNDBmMGFhLi5kYmFjYTA0ZmIwNjgyNzBjNGE0NzFmMTliMzIxOTA1MWMx
ZWYwMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNv
dXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm92aWRlci0+cHJvdmlkZU1h
aW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldKGF1dG8gYnVmZmVyKSB7CisgICAgcHJvdmlkZXItPnByb3ZpZGVN
YWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8gYnVmZmVyKSB7CiAgICAgICAgIGlmIChidWZmZXIpCiAg
ICAgICAgICAgICBhcHBlbmRGcm9tQnVmZmVyKCpidWZmZXIpOwogICAgICAgICBlbHNlCkBAIC0x
NjUsNyArMTY1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjppdGVyYXRlQ2xpZW50cyhUJiYg
Y2FsbGJhY2spCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNJbkNsaWVudENhbGxiYWNrIHsg
bV9pc0luQ2xpZW50Q2FsbGJhY2ssIHRydWUgfTsKICAgICBhdXRvIGNsaWVudHNDb3B5IHsgbV9j
bGllbnRzIH07Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzIHsgbWFrZVJlZigqdGhpcykgfTsKKyAg
ICBhdXRvIHByb3RlY3RlZFRoaXMgeyBSZWYgeyAqdGhpcyB9IH07CiAKICAgICBmb3IgKGF1dG8m
IGNsaWVudCA6IGNsaWVudHNDb3B5KSB7CiAgICAgICAgIGlmIChjbGllbnQgJiYgaGFzQ2xpZW50
KCpjbGllbnQpKQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6aXRl
cmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRpZEFk
ZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHdlYWtDbGllbnQgPSBtYWtlV2Vha1B0cihjbGllbnQpXSgpIHsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWFr
Q2xpZW50ID0gbWFrZVdlYWtQdHIoY2xpZW50KV0oKSB7CiAgICAgICAgIGlmIChhdXRvIGNsaWVu
dCA9IHdlYWtDbGllbnQuZ2V0KCkpCiAgICAgICAgICAgICByZXBsYXlUb0NsaWVudCgqY2xpZW50
KTsKICAgICB9KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJl
cGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNJbkNsaWVudENhbGxiYWNrIHsgbV9pc0lu
Q2xpZW50Q2FsbGJhY2ssIHRydWUgfTsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgeyBtYWtlUmVm
KCp0aGlzKSB9OworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIAog
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRVcGRhdGluZygqdGhpcyk7CiAKQEAg
LTI0MSw3ICsyNDEsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjpk
ZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBh
dXRvIHByb3RlY3RlZFRoaXMgeyBtYWtlUmVmKCp0aGlzKSB9OworICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpVcGRh
dGluZykgewogICAgICAgICBtX3Byb3ZpZGVyID0gbnVsbHB0cjsKQEAgLTI4Nyw3ICsyODcsNyBA
QCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb3Zp
ZGVyLT5wcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKCp0aGlzLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJiBwYXNzd29yZCkgbXV0YWJsZSB7Cisg
ICAgcHJvdmlkZXItPnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgcGFzc3dvcmQpIG11dGFi
bGUgewogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6VXBkYXRpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IDMwYzc3NjYwZDdmNWYy
M2IzN2M4OWU1NDkxOTIyMTBiMzc0NzBmOWQuLjMwOTZjMGVmYjlkMDkxYjEyN2QxM2UyMDM3ZDVj
MDMzNGIxMzYwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtMjI2LDcgKzIyNiw3
IEBAIE9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGRvdWJsZSBzYW1wbGVU
aW1lLCB1aW50NjRfdCBob3N0VGltZSwgVUluCiAgICAgaWYgKCFtX2Rpc3BhdGNoVG9SZW5kZXJU
aHJlYWQpCiAgICAgICAgIHJlbmRlck9uUmVuZGVyaW5nVGhlYWRJZlBsYXlpbmcoZnJhbWVzVG9S
ZW5kZXIpOwogICAgIGVsc2UgewotICAgICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVzVG9SZW5kZXJdKCkgbXV0YWJsZSB7
CisgICAgICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGZyYW1lc1RvUmVuZGVyXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+cmVuZGVyT25SZW5kZXJpbmdUaGVhZElmUGxheWluZyhmcmFtZXNUb1JlbmRlcik7
CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAwNDAyZDU2YjAyNjUwZTZjYjAzYzk4NDc2YTZiOTcz
MzJjYjg0NWJhLi44MzQ5MzVjYzQ5OWJlMTg3ZmVlOWMxMDY5NjA0YzI0M2E4MjI5OGE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC0zNTMsNyArMzUzLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVl
dWUoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHBy
b3RlY3QgdGhpcywgbV9kZWNvZGluZ1F1ZXVlIGFuZCBtX2RlY29kZXIgZnJvbSBiZWluZyBkZWxl
dGVkIHdoaWxlIHdlIGFyZSBpbiB0aGUgZGVjb2RpbmcgbG9vcC4KLSAgICBkZWNvZGluZ1F1ZXVl
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvdGVjdGVkRGVj
b2RpbmdRdWV1ZSA9IG1ha2VSZWYoZGVjb2RpbmdRdWV1ZSgpKSwgcHJvdGVjdGVkRnJhbWVSZXF1
ZXN0UXVldWUgPSBtYWtlUmVmKGZyYW1lUmVxdWVzdFF1ZXVlKCkpLCBwcm90ZWN0ZWREZWNvZGVy
ID0gbWFrZVJlZigqbV9kZWNvZGVyKSwgc291cmNlVVJMID0gc291cmNlVVJMKCkuc3RyaW5nKCku
aXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgIGRlY29kaW5nUXVldWUoKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb3RlY3RlZERlY29kaW5nUXVldWUg
PSBtYWtlUmVmKGRlY29kaW5nUXVldWUoKSksIHByb3RlY3RlZEZyYW1lUmVxdWVzdFF1ZXVlID0g
bWFrZVJlZihmcmFtZVJlcXVlc3RRdWV1ZSgpKSwgcHJvdGVjdGVkRGVjb2RlciA9IG1ha2VSZWYo
Km1fZGVjb2RlciksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCgpLnN0cmluZygpLmlzb2xhdGVkQ29w
eSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgSW1hZ2VGcmFtZVJlcXVlc3QgZnJhbWVSZXF1ZXN0
OwogICAgICAgICBTZWNvbmRzIG1pbkRlY29kaW5nRHVyYXRpb24gPSBwcm90ZWN0ZWRUaGlzLT5m
cmFtZURlY29kaW5nRHVyYXRpb25Gb3JUZXN0aW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwMjQ1NGQ3NmYxMmFj
ZDQ3ZTZmZjYwMGM5MTdlY2I2NGM2ODYwMDZhLi5lYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzlj
Y2MzYzNlNTdmMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyOjppbnZhbGlkYXRlKCkKIAogICAgIG1fcGFyZW50ID0gbnVsbHB0cjsKIAot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkg
bXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dICgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9wTG9hZGluZygp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KaW5kZXggY2QyMTcyMzhjNTBjMzM0NzM5NTgzZDQ5ZmVlZWU2ZGY5OTI5OTI5MC4uMDY5
NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMTIsNyArMzEyLDcgQEAgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVQKICAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291
cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwotICAgIFtt
X2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBs
ZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0gKCkgbXV0YWJs
ZSB7CisgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJh
Y2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAo
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyldIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNldFRy
YWNrKHByb3RlY3RlZFRoaXMtPmZpcnN0RW5hYmxlZFRyYWNrKCkpOwogICAgICAgICB9KTsKQEAg
LTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldFRyYWNrKEFWQXNz
ZXRUcmFjayAqdHJhY2spCiAgICAgbV9jdXJzb3IgPSBtX3NhbXBsZURhdGEuZGVjb2RlT3JkZXIo
KS5lbmQoKTsKICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbnVsbHB0cjsKIAotICAgIFt0
cmFjayBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJuYXR1cmFsU2l6ZSIsIEAi
cHJlZmVycmVkVHJhbnNmb3JtIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpXSAoKSBtdXRhYmxlIHsKKyAgICBbdHJhY2sgbG9hZFZhbHVlc0FzeW5j
aHJvbm91c2x5Rm9yS2V5czpAW0AibmF0dXJhbFNpemUiLCBAInByZWZlcnJlZFRyYW5zZm9ybSJd
IGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFkVHJhY2tN
ZXRhZGF0YSgpOwogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZFNhbXBsZXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBjN2UxMGU4MjQzNzNjMGEzZTMxNGJjNjJiOTYy
ZmY4NDc2ODAxY2IyLi5iMTRhMDEyZTgyZTgwNzg3MTBjYjVhY2M1MmVjMDFmNzhmMWMwMDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZWZmZWN0aXZlUmF0ZUNoYW5nZWQoKQogICAgIHsKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7
CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmVm
ZmVjdGl2ZVJhdGVDaGFuZ2VkKCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IGNmM2MzNDEwYTM4YWRlYzQ5NTdjOTcxNDJi
MzI0MjI0ZDVhZmQ4MTIuLmE0Y2M4MjgwZWVjMjlmM2MxNmEzYjI1N2VlY2VlMjk5ZDUwNmY5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTQx
NywxMSArNDE3LDExIEBAIFZlY3RvcjxSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4gTWVkaWFTYW1w
bGVBVkZPYmpDOjpkaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzCiAKICAgICBDRkFycmF5UmVm
IGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVu
dHNBcnJheShtX3NhbXBsZS5nZXQoKSwgdHJ1ZSk7CiAgICAgaWYgKCFhdHRhY2htZW50c0FycmF5
KQotICAgICAgICByZXR1cm4gU2FtcGxlVmVjdG9yOjpmcm9tKG1ha2VSZWYoKnRoaXMpKTsKKyAg
ICAgICAgcmV0dXJuIFNhbXBsZVZlY3Rvcjo6ZnJvbShSZWYgeyAqdGhpcyB9KTsKIAogICAgIGF1
dG8gY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHNBcnJheSk7CiAgICAgaWYgKGNv
dW50IDw9IDEpCi0gICAgICAgIHJldHVybiBTYW1wbGVWZWN0b3I6OmZyb20obWFrZVJlZigqdGhp
cykpOworICAgICAgICByZXR1cm4gU2FtcGxlVmVjdG9yOjpmcm9tKFJlZiB7ICp0aGlzIH0pOwog
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGZpcnN0QXR0YWNobWVudCA9IGNoZWNrZWRfY2ZfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwg
MCkpOwogICAgIGJvb2wgaXNTeW5jID0gaXNDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRSYW5kb21B
Y2Nlc3MoZmlyc3RBdHRhY2htZW50KTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBWZWN0b3I8UmVmPE1l
ZGlhU2FtcGxlQVZGT2JqQz4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50b0hvbW9nZW5l
b3VzU2FtcGxlcwogICAgIHJhbmdlcy5hcHBlbmQoQ0ZSYW5nZU1ha2UoY3VycmVudFJhbmdlU3Rh
cnQsIGN1cnJlbnRSYW5nZUxlbmd0aCkpOwogCiAgICAgaWYgKHJhbmdlcy5zaXplKCkgPT0gMSkK
LSAgICAgICAgcmV0dXJuIFNhbXBsZVZlY3Rvcjo6ZnJvbShtYWtlUmVmKCp0aGlzKSk7CisgICAg
ICAgIHJldHVybiBTYW1wbGVWZWN0b3I6OmZyb20oUmVmIHsgKnRoaXMgfSk7CiAKICAgICBTYW1w
bGVWZWN0b3Igc2FtcGxlczsKICAgICBzYW1wbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmFu
Z2VzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQppbmRleCBhZjJhMmU2YzA0YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkw
MDllMWE1Li5lYTU5NDdjOWNiMTkyZWRiOTY1MDE5ODRlNTIwZGUzNTBjNTQyNzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
QEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNldExv
Z2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSQogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCog
YXNzZXQpCiB7Ci0gICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgc3Ryb25n
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhc3NldCA9IHJldGFpblB0cihhc3NldCldIHsKKyAgICBt
X2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRo
aXMgfSwgYXNzZXQgPSByZXRhaW5QdHIoYXNzZXQpXSB7CiAgICAgICAgIGlmICghbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0z
MDEsNyArMzAxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJv
cikKIHsKLSAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgIG1fY2Fs
bE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9
LCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKICAgICAgICAgaWYgKG1fZGlkRW5jb3VudGVy
RXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spCiAgICAgICAgICAgICBtX2RpZEVuY291bnRlckVy
cm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKGVycm9yLmdldCgpLmNvZGUpOwogICAgIH0pOwpAQCAt
MzEwLDcgKzMxMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRv
UGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqIGVycm9yCiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRy
YWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUsIHVuc2lnbmVkIGZsYWdzKQogewogICAgIFVOVVNFRF9QQVJBTShmbGFncyk7Ci0gICAg
bV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwg
bWVkaWFUeXBlID0gbWVkaWFUeXBlXSB7CisgICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFj
ayhbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNhbXBsZUJ1ZmZlciA9IHJldGFp
blB0cihzYW1wbGVCdWZmZXIpLCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKICAg
ICAgICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCmluZGV4IDZiYTgyYzRiMjY4OWE3MDhmNmYyMjgzYzU5MGEyZmU4NWU3N2I0YWMu
LmZkMmYwZDNlZTVkMDhkZTA4MDM2ZmFiYjE1YzJhMzQ1MDQyOGJhM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTMzNiw3
ICszMzYsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSgpCiAK
ICAgICBtX3BhcmVudCA9IG51bGxwdHI7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+c3RvcExvYWRpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggZWVkNmUyMDI4OThjNzQ4MGMwZTQ5Y2Q1NGNkMzM5MWFi
YmE1NDcxMS4uODBhODc4ZDg0MDZmYzFjNzAyMGEwMWYzNTkyMzRjNTdlZDQ4NDI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaQogICAgIH0KIAogICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAic3RhdHVzLmNvZGUoIiwgbV9zdGF0dXMuY29kZSwgIikiKTsKLSAgICBtX2Nh
bGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvZGUgPSBtX3N0YXR1cy5jb2RlXSB7CisgICAgbV9jYWxsT25DbGllbnRUaHJlYWRD
YWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvZGUgPSBtX3N0
YXR1cy5jb2RlXSB7CiAgICAgICAgIGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrKQogICAgICAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayhjb2RlKTsKICAgICB9KTsKQEAgLTc4Miw3ICs3ODIsNyBAQCBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0
YWRhdGEpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9pbml0aWFsaXphdGlvblNlZ21lbnRF
bmNvdW50ZXJlZCkgewotICAgICAgICAgICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21l
bnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9pbml0
aWFsaXphdGlvblNlZ21lbnQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChtX2Rp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgICAgIG1f
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9u
U2VnbWVudCkpOwogICAgICAgICAgICAgfSk7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB3ZWJtOjpT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKGNvbnN0IHdlYm06
OkVsZW1lbnRNZXRhZGF0YQogICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRyYWNrRGF0YS0+dHJhY2soKS50cmFj
a191aWQuaXNfcHJlc2VudCgpICYmIGJsb2NrR3JvdXAuZGlzY2FyZF9wYWRkaW5nLnZhbHVlKCkg
PiAwKSB7Ci0gICAgICAgICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYWNrSUQgPSB0cmFja0RhdGEtPnRyYWNr
KCkudHJhY2tfdWlkLnZhbHVlKCksIHBhZGRpbmcgPSBNZWRpYVRpbWUoYmxvY2tHcm91cC5kaXNj
YXJkX3BhZGRpbmcudmFsdWUoKSwga191c19pbl9zZWNvbmRzKV0oKSB7CisgICAgICAgICAgICBt
X2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdHJhY2tJRCA9IHRyYWNrRGF0YS0+dHJhY2soKS50cmFja191aWQudmFsdWUoKSwg
cGFkZGluZyA9IE1lZGlhVGltZShibG9ja0dyb3VwLmRpc2NhcmRfcGFkZGluZy52YWx1ZSgpLCBr
X3VzX2luX3NlY29uZHMpXSgpIHsKICAgICAgICAgICAgICAgICBpZiAobV9kaWRQYXJzZVRyaW1t
aW5nRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAgICBtX2RpZFBhcnNlVHJpbW1pbmdE
YXRhQ2FsbGJhY2sodHJhY2tJRCwgcGFkZGluZyk7CiAgICAgICAgICAgICB9KTsKQEAgLTEwODYs
NyArMTA4Niw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1l
KGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAKIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6cHJvdmlkZU1lZGlhRGF0YShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IHNhbXBsZUJ1ZmZlciwgdWludDY0X3QgdHJhY2tJRCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5
dGVSYW5nZU9mZnNldCkKIHsKLSAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUo
c2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgYnl0ZVJhbmdlT2Zmc2V0XSAoKSBtdXRhYmxlIHsKKyAg
ICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVCdWZmZXIpLCB0cmFja0lE
LCBieXRlUmFuZ2VPZmZzZXRdICgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fZGlkUHJvdmlk
ZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KaW5kZXggYjVmYTU4ZWM0Mjk2YzZmMzZhMWRmNzEz
MzQwMGEyNTQzMDZlMjU2Zi4uM2U1NjM2Y2UxOGIyNzM0ODlkNjhjYTZlMTViNmVjZTY0ODFiNDUw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpAQCAtOTksNyAr
OTksNyBAQCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6bWF5YmVCZWNvbWVSZWFk
eUZvck1vcmVNZWRpYURhdGEoKQogCiAgICAgTE9HKE1lZGlhLCAiV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjptYXliZUJlY29tZVJlYWR5Rm9yTW9yZU1lZGlhRGF0YSglcCkgLSBpc1JlYWR5
Rm9yTW9yZU1lZGlhRGF0YSglZCksIGhhc0NhbGxiYWNrKCVkKSIsIHRoaXMsIGlzUmVhZHlGb3JN
b3JlTWVkaWFEYXRhKCksICEhbV9ub3RpZmljYXRpb25DYWxsYmFjayk7CiAKLSAgICBlbnN1cmVP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIGVuc3Vy
ZU9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPm1fbm90aWZpY2F0aW9uQ2FsbGJhY2spCiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX25vdGlmaWNhdGlvbkNhbGxiYWNrKCk7CiAgICAgfSk7CkBAIC0zMTQs
NyArMzE0LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmhhbmRsZURlY29t
cHJlc3Npb25PdXRwdXQoYm9vbCBkaXNwbGF5aW5nLCBPU1MKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fZW5xdWVpbmdRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCBpbWFnZVNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YocmF3SW1hZ2VTYW1wbGVC
dWZmZXIpLCBkaXNwbGF5aW5nXSB7CisgICAgbV9lbnF1ZWluZ1F1ZXVlLT5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGltYWdlU2FtcGxlQnVmZmVyID0gYWRvcHRDRihy
YXdJbWFnZVNhbXBsZUJ1ZmZlciksIGRpc3BsYXlpbmddIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZW5xdWV1ZURlY29kZWRTYW1wbGUoaW1hZ2VTYW1wbGVCdWZmZXIuZ2V0KCksIGRpc3BsYXlp
bmcpOwogICAgIH0pOwogfQpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uOjplbnF1ZXVlRGVjb2RlZFNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGUsCiAgICAgaWYgKCFzaG91bGROb3RpZnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShtX2hhc0F2YWlsYWJsZUZyYW1lQ2FsbGJhY2spXSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKG1faGFzQXZhaWxhYmxlRnJhbWVDYWxsYmFjayldIHsKICAgICAgICAg
Y2FsbGJhY2soKTsKICAgICB9KTsKIH0KQEAgLTUyMiw3ICs1MjIsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjppbWFnZUZvclRpbWUo
Y29uc3QgTWVkaQogCiB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Zmx1c2goKQog
ewotICAgIG1fZGVjb21wcmVzc2lvblF1ZXVlLT5kaXNwYXRjaFN5bmMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICBtX2RlY29tcHJlc3Npb25R
dWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
KSBtdXRhYmxlIHsKICAgICAgICAgUEFMOjpDTUJ1ZmZlclF1ZXVlUmVzZXQocHJvdGVjdGVkVGhp
cy0+bV9wcm9kdWNlclF1ZXVlLmdldCgpKTsKICAgICAgICAgbV9lbnF1ZWluZ1F1ZXVlLT5kaXNw
YXRjaFN5bmMoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CiAgICAg
ICAgICAgICBQQUw6OkNNQnVmZmVyUXVldWVSZXNldChwcm90ZWN0ZWRUaGlzLT5tX2NvbnN1bWVy
UXVldWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCmluZGV4IGQ1OGU4MmRl
ZmFhOTZlNmQ4ZTY2NjE2YTIxM2IzOTUzZjZiMmU0ZmMuLmQyY2M4MWQ1ODRkNDdjMGMzMjA3MjU5
MmFlYzYxODBhYjYzNzVhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1v
dmUoY2FsbGJhY2tGdW5jdG9yKSldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbm90aWZpY2F0aW9uVHlwZSwg
Y2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4oV1RGTW92ZShjYWxsYmFja0Z1bmN0b3Ip
KV0gewogICAgICAgICAgICAgaWYgKCFtX2lzVmFsaWQubG9hZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGlmIChyZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvblR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMzQyMmVjNzIyNGM1ZjZmMWZkYmI4NjgxMGY1ZWIzYWE2
MThjY2U4Yi4uM2Y1NTcwYTY4MjU4OTI0YmYxMmUyYzBhNWRkN2YyODIwZmM1M2E0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG8KIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIqIHRyYWNr
ID0gbV90cmFja3MuZ2V0KHRyYWNrSWQpOwotICAgIHRyYWNrLT5ub3RpZnlXaGVuUmVhZHlGb3JN
b3JlU2FtcGxlcyhbcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHRyYWNrSWRdKCkg
bXV0YWJsZSB7CisgICAgdHJhY2stPm5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKFtwcm90
ZWN0b3IgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCB0cmFja0lkXSgpIG11dGFibGUgewogICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURk1vdmUocHJvdGVjdG9y
KSwgdGhpcywgdHJhY2tJZF0oKSB7CiAgICAgICAgICAgICBpZiAoIW1faGFzQmVlblJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UpCiAgICAgICAgICAgICAgICAgcHJvdmlkZU1lZGlhRGF0YSh0cmFja0lk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdh
Y3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggZDEy
OWQxYTdiZWUzZjcyNzZiZmQ0MGRjNzAzNmIxMTUyMmFhMDY2MS4uNjliYjY3YjRkYzk2MDYwM2I1
MjNkNTM3ZGNiMmI1OGYzZGMxY2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rQ2FsbGJhY2tGaXJlZCgpCiAKIHZvaWQgTGVnYWN5RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKGNvbnN0IERp
c3BsYXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUpCiB7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0aGlzLCBkaXNwbGF5VXBkYXRlLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGRpc3BsYXlVcGRhdGUsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmIChtX2Rpc3BsYXlMaW5r
KQogICAgICAgICAgICAgZGlzcGxheURpZFJlZnJlc2goZGlzcGxheVVwZGF0ZSk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IGRlM2ZkMjcxZDAy
ZGRjMDg3NWYzYTQ3OGUzYzlhNjE1ZWI2ODg3YjQuLjgxNDJkYTdhZWNlZTMwYTg3MGM1ZTIyMGZh
OWIxODgwNWY0ODliYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVwZGF0ZSgp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2NlbmVJ
bnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VXBk
YXRlU2NvcGU+KFJlZiB7ICp0aGlzIH0pOwogfQogCiBTY2VuZUludGVncmF0aW9uOjpDbGllbnQ6
On5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggN2MwM2U3
NDk2MDU1NjYxOTFkM2JiNzIyODQ3N2M3MzI3YjNiYTY3My4uNmI5NTU3MmY0M2ViNGE0ZjE1YjY2
MTVjY2Q5MmFjZWEyYTAwNzkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtODQ4LDcg
Kzg0OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRnVs
bHNjcmVlbk1vZGVsKFZpZGVvRnVsbHNjcmVlbk1vZGVsCiAKICAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCkgewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5hZGRDbGllbnQo
KnRoaXMpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0Um91dGVTaGFy
aW5nUG9saWN5QW5kQ29udGV4dFVJRChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyldIChSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saWN5LCBTdHJpbmcgY29udGV4dFVJRCkgewor
ICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5
QW5kQ29udGV4dFVJRChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIChSb3V0
ZVNoYXJpbmdQb2xpY3kgcG9saWN5LCBTdHJpbmcgY29udGV4dFVJRCkgewogICAgICAgICAgICAg
bV9yb3V0ZVNoYXJpbmdQb2xpY3kgPSBwb2xpY3k7CiAgICAgICAgICAgICBtX3JvdXRpbmdDb250
ZXh0VUlEID0gY29udGV4dFVJRDsKIApAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKICAgICBp
ZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkpIHsKICAgICAgICAgbV9zaG91bGRSZXR1
cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKICAgICAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29t
cGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAo
Qk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3Ig
KmVycm9yKSB7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbkhhbmRsZXIoc3VjY2VzcywgZXJy
b3IpOwogICAgICAgICB9XTsKICAgICB9IGVsc2UgewpAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1
cmVTdG9wV2l0aENvbXBsZXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByZXBh
cmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIg
Y29weV0pXShib29sIHJlc3RvcmVkKSAgeworICAgIHByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJl
U3RvcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHN0cm9uZ0NvbXBsZXRpb25IYW5k
bGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShib29sIHJlc3RvcmVkKSAg
ewogICAgICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFt
YmRhKCVwKSAtIHJlc3RvcmVkKCVzKSIsIHByb3RlY3RlZFRoaXMuZ2V0KCksIGJvb2xTdHJpbmco
cmVzdG9yZWQpKTsKICAgICAgICAgKCh2b2lkICheKShCT09MKSlzdHJvbmdDb21wbGV0aW9uSGFu
ZGxlci5nZXQoKSkocmVzdG9yZWQpOwogICAgIH0pOwpAQCAtMTQxOSw3ICsxNDE5LDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvU3RhbmRi
eSgpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZpbmFsaXplU2V0dXAo
KQogewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlcikgewogICAgICAgICAgICAgaWYgKCFtX2hhc1ZpZGVvQ29udGVudExh
eWVyICYmIG1fdGFyZ2V0TW9kZS5oYXNWaWRlbygpKSB7CiAgICAgICAgICAgICAgICAgbV9maW5h
bGl6ZVNldHVwTmVlZHNWaWRlb0NvbnRlbnRMYXllciA9IHRydWU7CkBAIC0xNDQ1LDcgKzE0NDUs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVl
bigpCiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsK
ICAgICBpZiAobV90YXJnZXRNb2RlLmhhc0Z1bGxzY3JlZW4oKSAmJiAhbV9jdXJyZW50TW9kZS5o
YXNGdWxsc2NyZWVuKCkpIHsKICAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpOT107Ci0gICAg
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOllFUyBj
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyld
IChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIChCT09MIHN1Y2Nlc3MsIE5TRXJy
b3IgKmVycm9yKSB7CiAgICAgICAgICAgICBlbnRlckZ1bGxzY3JlZW5IYW5kbGVyKHN1Y2Nlc3Ms
IGVycm9yLCBOZXh0QWN0aW9uOjpOZWVkc0VudGVyRnVsbFNjcmVlbik7CiAgICAgICAgIH1dOwog
ICAgICAgICByZXR1cm47CkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbigpCiAgICAgbV9lbnRlckZ1bGxzY3Jl
ZW5OZWVkc0VudGVyUGljdHVyZUluUGljdHVyZSA9IGZhbHNlOwogCiAgICAgaWYgKCFtX3Rhcmdl
dE1vZGUuaGFzRnVsbHNjcmVlbigpICYmIG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKSB7
Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6
WUVTIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgZXhpdEZ1bGxzY3JlZW5IYW5kbGVyKHN1Y2Nl
c3MsIGVycm9yLCBOZXh0QWN0aW9uOjpOZWVkc0VudGVyRnVsbFNjcmVlbik7CiAgICAgICAgIH1d
OwogICAgICAgICByZXR1cm47CkBAIC0xNTA5LDcgKzE1MDksNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojpkb0V4aXRGdWxsc2NyZWVuKCkKICAgICBtX2V4aXRGdWxsc2Ny
ZWVuTmVlZElubGluZVJlY3QgPSBmYWxzZTsKIAogICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc01v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpKSB7
Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6
WUVTIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgZXhpdEZ1bGxzY3JlZW5IYW5kbGVyKHN1Y2Nl
c3MsIGVycm9yLCBOZXh0QWN0aW9uOjpOZWVkc0V4aXRGdWxsU2NyZWVuKTsKICAgICAgICAgfV07
CiAgICAgICAgIHJldHVybjsKQEAgLTE1MzMsNyArMTUzMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRXhpdEZ1bGxzY3JlZW4oKQogCiAgICAgbV9zdGFuZGJ5ID0g
ZmFsc2U7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gewogICAgICAgICBpZiAobV9mdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgbV9jaGFuZ2luZ1N0YW5kYnlPbmx5
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA3MDE2YzdmOWEy
MjU2OTYyMjA4NGMyZjk1NDUxNTg5MDM1ODg0YzE1Li4zZDhhNzAxMGI3ZWFjMDFjYTcyMzA4Y2Yz
NGZlYmFmYTVkNWEyNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI0
Niw3ICsyNDYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1
ZXN0VXBkYXRlSW5saW5lUmVjdCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
SW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5n
ZXQoKSk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNsaWVudFJlY3RdIHsKICAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXRJbmxpbmVSZWN0KGNsaWVudFJlY3QsIGNsaWVudFJlY3QgIT0gSW50
UmVjdCgwLCAwLCAwLCAwKSk7CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkKIHsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFdlYlRo
cmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIHZpZGVvRnVs
bHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdKV0g
KCkgbXV0YWJsZSB7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxs
c2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVl
bkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0
cmFuc3BhcmVudEJsYWNrKV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHRoaXNdIHsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpCiB7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBXZWJUaHJl
YWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0Z1bGxz
Y3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXSldICgp
IG11dGFibGUgeworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNj
cmVlblZpZXcgbGF5ZXJdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5M
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjayldOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHRoaXNdICgpIG11dGFibGUgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewpAQCAtMzAx
LDExICszMDEsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlk
U2V0dXBGdWxsc2NyZWVuKCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIG1f
aW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKICAgICB9KTsKICNlbHNlCi0gICAgV2ViVGhy
ZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAo
KSBtdXRhYmxlIHsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxz
Y3JlZW5WaWV3IGxheWVyXSldICgpIG11dGFibGUgewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRy
YW5zcGFyZW50QmxhY2spXTsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdICgpIG11dGFibGUgewogICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdGhpc10gewpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OndpbGxFeGl0RnVsbHNjcmVlbigpCiB7CiAjaWYgUExBVEZPUk0o
V0FUQ0hPUykKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICBX
ZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPndpbGxFeGl0RnVsbHNjcmVlbigpOwog
ICAgIH0pOwogI2VuZGlmCkBAIC0zMzAsMTEgKzMzMCwxMSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbigpCiB7CiAgICAgQVNTRVJUKGlz
VUlUaHJlYWQoKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsKICAg
ICB9KTsKICNlbHNlCi0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZnVsbHNj
cmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmNsZWFudXBGdWxs
c2NyZWVuKCk7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKQogICAgIG1faW50ZXJmYWNlID0gbnVs
bHB0cjsKICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBuaWw7CiAKLSAgICBXZWJUaHJlYWRS
dW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgV2ViVGhy
ZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gewogICAgICAgICBt
X2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKICAgICAgICAg
bV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbV9w
bGF5YmFja01vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CkBAIC0zNjgsNyArMzY4LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxz
Y3JlZW4oKQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVl
bk1heVJldHVyblRvSW5saW5lKCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBX
ZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoKSBt
dXRhYmxlIHsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVu
dFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7CiAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRo
aXMsIGNsaWVudFJlY3RdIHsKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5wcmVwYXJlZFRvUmV0
dXJuVG9JbmxpbmUodHJ1ZSwgY2xpZW50UmVjdCk7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uQ2hh
bmdlZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIGR1cmF0aW9uXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGR1cmF0aW9uXSB7CiAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwogICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB2b2lk
IFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjdXJyZW50VGltZUNoYW5nZWQoZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBpZiAoV2ViVGhyZWFk
SXNDdXJyZW50KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50
VGltZSwgZG8KIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJ1ZmZlcmVk
VGltZUNoYW5nZWQoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXND
dXJyZW50KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgYnVmZmVyZWRUaW1lXSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlcmVk
VGltZV0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YnVmZmVyZWRUaW1lQ2hhbmdlZChi
dWZmZXJlZFRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDIwLDcgKzQy
MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJ1ZmZlcmVkVGlt
ZUNoYW5nZWQoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnJhdGVDaGFuZ2VkKE9wdGlvblNldDxQbGF5YmFja1Nlc3Npb25Nb2RlbDo6
UGxheWJhY2tTdGF0ZT4gcGxheWJhY2tTdGF0ZSwgZG91YmxlIHBsYXliYWNrUmF0ZSwgZG91Ymxl
IGRlZmF1bHRQbGF5YmFja1JhdGUpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHBsYXliYWNrU3RhdGUsIHBsYXliYWNrUmF0ZSwgZGVmYXVsdFBsYXliYWNr
UmF0ZV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBwbGF5YmFja1N0YXRlLCBwbGF5YmFja1JhdGUsIGRlZmF1bHRQbGF5
YmFja1JhdGVdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJhdGVDaGFuZ2VkKHBsYXli
YWNrU3RhdGUsIHBsYXliYWNrUmF0ZSwgZGVmYXVsdFBsYXliYWNrUmF0ZSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmF0ZUNoYW5nZWQoT3B0aW9uU2V0PFBsYXliYWNrU2Vzc2lv
bk1vZGUKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Omhhc1ZpZGVvQ2hh
bmdlZChib29sIGhhc1ZpZGVvKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCBoYXNWaWRlb10geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBoYXNWaWRlb10gewogICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+aGFzVmlkZW9DaGFuZ2VkKGhhc1ZpZGVvKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpoYXNWaWRlb0NoYW5nZWQoYm9vbCBoYXNWaWRlbykKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29u
c3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3Vy
cmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRGltZW5zaW9ucyA9IHZpZGVvRGltZW5zaW9uc10g
eworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCB2aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnNdIHsKICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodmlkZW9EaW1lbnNpb25z
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2Vk
KGNvbnN0IEZsb2F0U2l6ZSYgdgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMsIGRv
dWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQogewogICAg
IGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBwbGF0Zm9ybVRpbWVSYW5n
ZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50
ZXJ2YWxdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMo
KSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsXSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoVGltZVJhbmdlczo6Y3JlYXRlKHBs
YXRmb3JtVGltZVJhbmdlcyksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNv
bnN0IFRpbWVSYW5nZXMmIHQKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7CiAg
ICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhblBsYXlGYXN0UmV2
ZXJzZV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMg
VmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBpc29sYXRlZENvcHkoY29uc3QgVmVjdG9yPE1l
ZGlhU2VsZWN0aW9uT3B0aQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYg
KFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIG9wdGlvbnMgPSBpc29sYXRlZENv
cHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3B0aW9ucyA9IGlzb2xhdGVk
Q29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5k
ZXgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTA3LDcgKzUwNyw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZChjb25zdCBWCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewog
ICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBvcHRpb25zID0gaXNv
bGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9wdGlvbnMgPSBp
c29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNl
bGVjdGVkSW5kZXgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTIwLDcgKzUy
MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVu
dCgpKSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgdGhpcywgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSA9IGxvY2Fs
aXplZERldmljZU5hbWUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIGVuYWJsZWQsIHR5cGUsIGxv
Y2FsaXplZERldmljZU5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lLmlzb2xhdGVkQ29weSgpXSB7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQogICAg
ICAgICAgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZW5hYmxlZCwgdHlw
ZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiAgICAgICAgIH0pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tD
aGFuZ2VkKGJvb2wgZW5hYmxlZCwgUGxhCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCBkaXNhYmxl
ZCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgZGlzYWJs
ZWRdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgZGlzYWJsZWRdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPndp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChkaXNhYmxlZCk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2Vk
KGJvb2wKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Om11dGVkQ2hhbmdl
ZChib29sIG11dGVkKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCBtdXRlZF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBtdXRlZF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bXV0ZWRDaGFuZ2VkKG11dGVkKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTU2MCw3ICs1NjAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpt
dXRlZENoYW5nZWQoYm9vbCBtdXRlZCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnZvbHVtZUNoYW5nZWQoZG91YmxlIHZvbHVtZSkKIHsKICAgICBpZiAoV2ViVGhyZWFk
SXNDdXJyZW50KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdm9sdW1lXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHZvbHVtZV0gewog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENsaWVudCYKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RG
dWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgp
KTsKLSAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzLCBtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYV0geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhXSB7
CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgICAgIG1fZnVsbHNjcmVl
bk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpOwog
ICAgIH0pOwpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiAgICAgUmV0YWlu
UHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmll
dyBsYXllcl07CiAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldFN1YmxheWVyVHJhbnNmb3Jt
Olt2aWRlb0Z1bGxzY3JlZW5MYXllciB0cmFuc2Zvcm1dXTsKIAotICAgIGRpc3BhdGNoQXN5bmNP
bk1haW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgdGhpcywgZnJhbWUsIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gV1RGTW92
ZSh2aWRlb0Z1bGxzY3JlZW5MYXllcildIHsKKyAgICBkaXNwYXRjaEFzeW5jT25NYWluVGhyZWFk
V2l0aFdlYlRocmVhZExvY2tJZk5lZWRlZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHRoaXMsIGZyYW1lLCB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IFdURk1vdmUodmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpXSB7CiAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICAgICAgW0NBVHJhbnNhY3Rp
b24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVj
dCBmcmFtZSkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSB2aWRlb0dyYXZpdHkp
CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9HcmF2aXR5XSB7CisgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgdmlkZW9HcmF2
aXR5XSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgICAgIG1fZnVs
bHNjcmVlbk1vZGVsLT5zZXRWaWRlb0xheWVyR3Jhdml0eSh2aWRlb0dyYXZpdHkpOwogICAgIH0p
OwpAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpcywgbW9kZV0geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIG1vZGVdIHsKICAgICAgICAgaWYgKG1fZnVsbHNjcmVl
bk1vZGVsKQogICAgICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hh
bmdlZChtb2RlKTsKICAgICB9KTsKQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZW1vdmVDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQmCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwbGF5KCkKIHsK
ICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gewogICAgICAgICBpZiAobV9wbGF5YmFja01v
ZGVsKQogICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5wbGF5KCk7CiAgICAgfSk7CkBAIC03
MjgsNyArNzI4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGxh
eSgpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwYXVzZSgpCiB7CiAg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2Rl
bCkKICAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+cGF1c2UoKTsKICAgICB9KTsKQEAgLTcz
Nyw3ICs3MzcsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwYXVz
ZSgpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp0b2dnbGVQbGF5U3Rh
dGUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFdlYlRocmVhZFJ1bihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBXZWJUaHJlYWRSdW4o
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIGlmIChtX3Bs
YXliYWNrTW9kZWwpCiAgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnRvZ2dsZVBsYXlTdGF0
ZSgpOwogICAgIH0pOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0Ojp0b2dnbGVNdXRlZCgpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQo
KSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHRoaXNdIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxh
eWJhY2tNb2RlbC0+dG9nZ2xlTXV0ZWQoKTsKICAgICB9KTsKQEAgLTc1NSw3ICs3NTUsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp0b2dnbGVNdXRlZCgpCiB2b2lk
IFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRNdXRlZChib29sIG11dGVkKQog
ewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIG11dGVkXSB7CisgICAgV2ViVGhyZWFkUnVu
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgbXV0ZWRdIHsKICAgICAgICAg
aWYgKG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+c2V0TXV0
ZWQobXV0ZWQpOwogICAgIH0pOwpAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKIHsKICAg
ICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2b2x1bWVdIHsKKyAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCB2b2x1bWVdIHsKICAgICAgICAgaWYg
KG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+c2V0Vm9sdW1l
KHZvbHVtZSk7CiAgICAgfSk7CkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oYm9v
bCB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBXZWJUaHJlYWRSdW4o
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2YWx1ZV0geworICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHZhbHVlXSB7
CiAgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCiAgICAgICAgICAgICBtX3BsYXliYWNrTW9k
ZWwtPnNldFBsYXlpbmdPblNlY29uZFNjcmVlbih2YWx1ZSk7CiAgICAgfSk7CkBAIC03ODIsNyAr
NzgyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UGxheWlu
Z09uU2Vjb25kU2NyZWVuKGJvb2wgdmFsdWUpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpiZWdpblNjcnViYmluZygpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7
Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhp
c10geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRo
aXNdIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxheWJh
Y2tNb2RlbC0+YmVnaW5TY3J1YmJpbmcoKTsKICAgICB9KTsKQEAgLTc5MSw3ICs3OTEsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjcnViYmluZygpCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjplbmRTY3J1YmJpbmcoKQogewog
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIGlmIChtX3BsYXliYWNrTW9k
ZWwpCiAgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPmVuZFNjcnViYmluZygpOwogICAgIH0p
OwpAQCAtODAwLDcgKzgwMCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmVuZFNjcnViYmluZygpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZWVrVG9UaW1lKGRvdWJsZSB0aW1lLCBkb3VibGUgdG9sZXJhbmNlQmVmb3JlLCBkb3VibGUg
dG9sZXJhbmNlQWZ0ZXIpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhy
ZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdGltZSwgdG9s
ZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcl0geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9s
ZXJhbmNlQWZ0ZXJdIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAg
IG1fcGxheWJhY2tNb2RlbC0+c2Vla1RvVGltZSh0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVy
YW5jZUFmdGVyKTsKICAgICB9KTsKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWVrVG9UaW1lKGRvdWJsZSB0aW1lLCBkb3VibGUgdG9s
ZXJhbmNlQgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWso
ZG91YmxlIHRpbWUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhyZWFk
UnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdGltZV0geworICAg
IFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHRpbWVd
IHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxheWJhY2tN
b2RlbC0+ZmFzdFNlZWsodGltZSk7CiAgICAgfSk7CkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWsoZG91YmxlIHRpbWUpCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2Fy
ZCgpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10geworICAgIFdlYlRocmVhZFJ1bihb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdIHsKICAgICAgICAgaWYgKG1fcGxh
eWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+YmVnaW5TY2FubmluZ0Zv
cndhcmQoKTsKICAgICB9KTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQogewogICAg
IEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwp
CiAgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwog
ICAgIH0pOwpAQCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjplbmRTY2FubmluZygpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQo
KSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10geworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHRoaXNdIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKICAgICAgICAgICAgIG1fcGxh
eWJhY2tNb2RlbC0+ZW5kU2Nhbm5pbmcoKTsKICAgICB9KTsKQEAgLTg0NSw3ICs4NDUsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjplbmRTY2FubmluZygpCiB2b2lk
IFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXREZWZhdWx0UGxheWJhY2tSYXRl
KGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkp
OwotICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRo
aXMsIGRlZmF1bHRQbGF5YmFja1JhdGVdIHsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBkZWZhdWx0UGxheWJhY2tSYXRlXSB7CiAgICAgICAg
IGlmIChtX3BsYXliYWNrTW9kZWwpCiAgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnNldERl
ZmF1bHRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXliYWNrUmF0ZSk7CiAgICAgfSk7CkBAIC04NTQs
NyArODU0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RGVm
YXVsdFBsYXliYWNrUmF0ZShkb3VibGUgZGVmYXVsdFBsYXkKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OnNldFBsYXliYWNrUmF0ZShkb3VibGUgcGxheWJhY2tSYXRlKQog
ewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIHBsYXliYWNrUmF0ZV0geworICAgIFdlYlRo
cmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHBsYXliYWNrUmF0
ZV0gewogICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQogICAgICAgICAgICAgbV9wbGF5YmFj
a01vZGVsLT5zZXRQbGF5YmFja1JhdGUocGxheWJhY2tSYXRlKTsKICAgICB9KTsKQEAgLTg2Myw3
ICs4NjMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRQbGF5
YmFja1JhdGUoZG91YmxlIHBsYXliYWNrUmF0ZSkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpCiB7CiAg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgaW5kZXhdIHsKKyAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBpbmRleF0gewogICAgICAgICBpZiAo
bV9wbGF5YmFja01vZGVsKQogICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5zZWxlY3RBdWRp
b01lZGlhT3B0aW9uKGluZGV4KTsKICAgICB9KTsKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVp
bnQ2NF90IGluZGV4KQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KQogewogICAgIEFTU0VSVChpc1VJ
VGhyZWFkKCkpOwotICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIHRoaXMsIGluZGV4XSB7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgdGhpcywgaW5kZXhdIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tNb2Rl
bCkKICAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGluZGV4KTsKICAgICB9KTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2
aWRlb0VsCiAKICAgICBGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zID0geyAoZmxvYXQpdmlkZW9F
bGVtZW50LnZpZGVvV2lkdGgoKSwgKGZsb2F0KXZpZGVvRWxlbWVudC52aWRlb0hlaWdodCgpIH07
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWRlb0RpbWVuc2lvbnMs
IHZpZXdSZWYsIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmVdIHsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCB2aWRl
b0VsZW1lbnRDbGllbnRSZWN0LCB2aWRlb0RpbWVuc2lvbnMsIHZpZXdSZWYsIG1vZGUsIGFsbG93
c1BpY3R1cmVJblBpY3R1cmVdIHsKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAg
ICAgIFdlYlRocmVhZExvY2soKTsKIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VS
VChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgSW50UmVjdCBj
bGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdGhpcywgY2xpZW50UmVjdF0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIGNsaWVudFJlY3RdIHsKICAgICAg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgICAgIG1faW50ZXJmYWNlLT5leGl0RnVsbHNj
cmVlbihjbGllbnRSZWN0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCmluZGV4IDVkZjM0
OWZjNmZjZGZjZmFlYTc1NTYzMjBmM2FlNmU2Njc2MzRlOWIuLjI0NzVjMzViOGYzNGE4MTY1N2E4
ZTE5MDBjNDgxOTI5MzZmYmEwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQpAQCAtNDU2LDcgKzQ1
Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4o
TlNWaWV3JiBsYXllckhvc3RlZFZpZXcsIGNvbnN0CiAKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlT2JqQygpIHNldFVwUElQRm9yVmlkZW9WaWV3OiZsYXllckhvc3RlZFZpZXcgd2l0aEZy
YW1lOihOU1JlY3QpaW5pdGlhbFJlY3QgaW5XaW5kb3c6cGFyZW50V2luZG93XTsKIAotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCB0aGlzXSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcikKICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1
bGxzY3JlZW4oKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5j
cHAKaW5kZXggMzk2NTM1M2EzZmY1MTI3MTc2ZWZiNGRiZjEzYjUyZWJlNTVhYTVjNi4uYWQ2MDQy
YzhiYzM0NmI1MTU1NmJkZDVmZjhkOWU1MzVlZTY4OWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnN0YXJ0UmVuZGVyZXIoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2lzUGxheWluZyA9IHRydWU7Ci0gICAgbV9yZW5kZXJlci0+c3RhcnQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIG1fcmVuZGVyZXItPnN0YXJ0KFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9pc1Bs
YXlpbmcpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2F1ZGlvU291cmNlLT5hZGRBdWRp
b1NhbXBsZU9ic2VydmVyKHByb3RlY3RlZFRoaXMuZ2V0KCkpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAKaW5kZXggM2E2MjgwOWYyMWE5NDU0OTgxNTY2OWYxMDViYjU5ZDkyODEwZjI2Mi4u
MmNkZTQwMTZiY2FkYjUwMTc3OWZkZGViNzEzODhkMTUzMWM4OWFlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92
ZU9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpm
b3JFYWNoT2JzZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYgYXBwbHkpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgbV9v
YnNlcnZlcnMuZm9yRWFjaChhcHBseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNw
cAppbmRleCAzOWVhYjhjNzY4MWNhZmFhZjJmYWYxNWZhZDQ2M2UzOWI3ZGM0NDZiLi40NDI5NTNh
MWEzZjM0NmNmN2Y0MTk5YzcxZTI3NWE5M2UyNTE1ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6
OmZvckVhY2hPYnNlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+JiBhCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZXJzLmhhc051
bGxSZWZlcmVuY2VzKCkpOwotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
OworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBtX29ic2VydmVycy5mb3JF
YWNoKGFwcGx5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKaW5k
ZXggYzE5NGVkNjVmYzg4MWUzZDUyNWE2MmNhY2YwNzVmZjA4MDFkZjIzNS4uNDgzNGU3ZjA3Y2U3
MDk3ZDA1NmRkNjQ5NTliMzc2ZGZkMGE0YmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpPbkNoYW5nZWQoKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2F1ZGlv
VHJhY2stPnN0YXRlKCkgPT0gd2VicnRjOjpNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlOjprRW5k
ZWQpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5lbmQoKTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDI0YjhiMTdiNjg5N2I4MzkxOTg1M2U1
Y2JmOGE1YzMzNWFmYWUwMDQuLjRhYzM3M2U2ZWViOGIwNzllYzM3ZDFiODJmYmRlZGEzMTQ4YTkz
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtNjgsNyArNjgs
NyBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEo
KQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25DaGFuZ2VkKCkKIHsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAg
ICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV92aWRlb1RyYWNrLT5zdGF0ZSgpID09IHdlYnJ0Yzo6
TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZTo6a0VuZGVkKQogICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZW5kKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDhjYTFiMjM2
Njc4NTBhZDE1ZGJhZjg2OWE3NDkwMmU5NDRhZDM3OWMuLjgyNTk0MzgwYjY0Mzg0MmQwNWE1ZjE3
MTFkMDFlNjU1NTIzYWU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRJbnRlcnJ1cHRlZEZvclRlc3Rpbmco
Ym9vbCBpbnRlcnJ1cHRlZCkKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zm9yRWFjaE9ic2Vy
dmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4mIGFwcGx5KQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIG1fb2JzZXJ2ZXJzLmZv
ckVhY2goYXBwbHkpOwogfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjp1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpCiAgICAgLy8gSGVhcCBhbGxv
Y2F0aW9ucyBhcmUgZm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNl
IHJlYXNvbnMgc28gd2UgbmVlZCB0bwogICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxv
d2luZyBhbGxvY2F0aW9uKHMpLgogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJy
ZW50VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAocHJv
dGVjdGVkVGhpcy0+bV9oYXNTdGFydGVkUHJvZHVjaW5nRGF0YSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9oYXNTdGFydGVkUHJvZHVjaW5nRGF0YSA9IHRy
dWU7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjplbmQoT2Jz
ZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlcikKIAogICAgIEFMV0FZU19MT0dfSUYobV9sb2dnZXIsIExP
R0lERU5USUZJRVIpOwogCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7
CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgc3RvcCgpOwogICAgIG1f
aXNFbmRlZCA9IHRydWU7CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKQogdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbildIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlv
bigpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCBl
MDNkZmFmZDI0NDhhZTU0NTNlNDE1ZWQ4MTZhMDVjYWVkYjAxMmEwLi5iMjdjY2QzZDRlZjgxMGNl
MWM4NmI4Y2ZmMjAzZjI5ZGI2NGJiNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojp0cmlnZ2VyRGV2aWNlc0NoYW5nZWRPYnNlcnZlcnMoKQogewotICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsK
ICAgICBtX29ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7CiAgICAgICAgIG9i
c2VydmVyLmRldmljZXNDaGFuZ2VkKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlLmNwcAppbmRleCAxMmNlZDc5ZmNmNmE2ZTUzMGRkN2I5ZTEwMjU2NWQ4Zjc1YzJk
YTM0Li44OGJmNTY0MmIyMDM3MmNmMDEzM2YxZDY3N2JlOTlkMjU4MGUzMTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+JiYgbmV3U28KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OmFwcGx5
Um90YXRpb24oKQogewotICAgIGVuc3VyZU9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAobV9hcmVTaW5rc0Fza2lu
Z1RvQXBwbHlSb3RhdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmNwcAppbmRleCBmNjc3NDAwMTQxNmQ2NjQzNWIxOTkwZWZlZjNlNmZmNjE1MGNlZWVmLi5mMDcx
NzlkZDMzNDY2NGEzY2I2NDFiYTFlMzM3MDViMTgzNzUxZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWFsdGltZVZpZGVvU291cmNlOjp+UmVhbHRpbWVWaWRl
b1NvdXJjZSgpCiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6d2hlblJlYWR5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjYWxsYmFjaykKIHsKLSAgICBtX3NvdXJjZS0+d2hl
blJlYWR5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8gbWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zb3VyY2Ut
PndoZW5SZWFkeShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gbWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIHNl
dE5hbWUoU3RyaW5nIHsgbV9zb3VyY2UtPm5hbWUoKSB9KTsKICAgICAgICAgbV9jdXJyZW50U2V0
dGluZ3MgPSBtX3NvdXJjZS0+c2V0dGluZ3MoKTsKICAgICAgICAgc2V0U2l6ZShtX3NvdXJjZS0+
c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwCmluZGV4IGVlYTM0
NGVlOWE4MGYzNjU1MDAxOGI5YWQwYmQ1YjFjNWNjMDdkMTMuLmY2ZjVmOGJmZmFhM2I2YjIxMDYw
NDM4ODc2OTlmZTJiZTZhNjMwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVy
LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEdTdHJlYW1lckNhcHR1cmVyOjpyZW1vdmVPYnNl
cnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCiB2b2lkIEdTdHJlYW1lckNhcHR1cmVyOjpmb3JFYWNo
T2JzZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYgYXBwbHkpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgbV9vYnNlcnZl
cnMuZm9yRWFjaChhcHBseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQppbmRleCBiNjBiODg2NmZiYjgwNDg4YzIzZmUyYjU3NjkyYjMwZjg3ZTM4NjkwLi5m
MDM5ODc3MTcxNjQ3N2ExODllODZhMzE4YzA3NjBiOTMzYzQ5MGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVCdWZmZXIgPSBXVEZN
b3ZlKHNhbXBsZUJ1ZmZlcildKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2FtcGxlQnVmZmVyID0gV1RG
TW92ZShzYW1wbGVCdWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaE1lZGlhU2Ft
cGxlVG9PYnNlcnZlcnMoKnNhbXBsZUJ1ZmZlcik7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAppbmRleCBmY2Y1YzlmYmE0
ODU2YjYxMjgxYzMzMDQ2ODMyOTU4NjBjNWJhMDczLi4xNmExNmRjZTZkNTcxMTM4OWJiOTk1ZjU2
NjM5Y2FhNGIzYjUxMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
JiwgYwogICAgIC8vIEhlYXAgYWxsb2NhdGlvbnMgYXJlIGZvcmJpZGRlbiBvbiB0aGUgYXVkaW8g
dGhyZWFkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHNvIHdlIG5lZWQgdG8KICAgICAvLyBleHBs
aWNpdGx5IGFsbG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICBEaXNhYmxlTWFs
bG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmlj
dGlvbnM7Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgTGliV2ViUlRDUHJvdmlk
ZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW0KaW5kZXggMDE5
MTA3ZThmYTY2NDA0YjUwOWJkMWY0NTY5NzA5ODJiZDZjZmFiYS4uODlhYWJiZjMzOWZlYjY0MTQx
OWI1YmQ3NGRhYjgzMGQ0ZmQxZjViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckNvY29hLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQ29jb2E6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBmb3IK
ICAgICBtX2RhdGFTb3VyY2UtPnNldElucHV0Rm9ybWF0KG1faW5wdXREZXNjcmlwdGlvbi52YWx1
ZSgpKTsKICAgICBtX2RhdGFTb3VyY2UtPnNldE91dHB1dEZvcm1hdChtX291dHB1dERlc2NyaXB0
aW9uLnZhbHVlKCkpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG51bWJlck9mQ2hhbm5l
bHMsIHNhbXBsZVJhdGVdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY2xpZW50KQog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNo
YW5uZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IDAw
MTU0MmRiMjNmYTAwZWQzNTc0ZGJmMDI4NDdlMzg1YmZhZGEwYmIuLmE5NDVkMjMwMDM1YzkzMDIz
YzIzZWM4M2FjZWFiZThmZDIyZGIwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3BSZW5kZXJpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjbwogCiB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OnRpY2soKQogewotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVSYXRlID0gc2FtcGxlUmF0ZSgpLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2VzcyA9IG1fbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3NdIHsKKyAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBzYW1wbGVSYXRlID0gc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyA9
IG1fbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3NdIHsKICAgICAgICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKICAgICAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggMDVjODhlYTE3OWZj
NDE3MDdlMjZhNDU2NjQwZmIzNWIyZGM4NzY1OS4uMjQyNWZhYTBiNWUzYjlkMDk2Y2IyNjFkMDYy
NzhiZDFlZTEwMmZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp0aWNrKCkKICAgICBTZWNvbmRzIGRlbHRhID0gbm93
IC0gbV9sYXN0UmVuZGVyVGltZTsKICAgICBtX2xhc3RSZW5kZXJUaW1lID0gbm93OwogCi0gICAg
bV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBkZWx0YSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBkZWx0YSwgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgcmVuZGVyKGRlbHRhKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcAppbmRleCAzMTcwYmFhODA4MzE3MTc1MTFkNTRjYmQ4MGEyZTRh
NDNkMmNjNmMyLi41MzU5MGI0YjA1ZWJlOWIzNzhjZDNjOTNlMWRkOGRjN2ZkNTYyODU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KCkKICAgICB9CiAKICAgICAvLyBGaW5pc2ggdGhpcyBhc3luYyBjYWxsIHF1aWNrbHkgYW5k
IHJldHVybi4KLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRvU3Rh
cnQoKTsKICAgICB9KTsKIH0KQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhh
bmRsZTo6bm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MoKQogICAgIC8vIGFzIGlmIHRoZSByZXNwb25z
ZSBoYWQgYSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlciB3aXRoIHRoZSBmaWxlbmFtZSBwYXJh
bWV0ZXIgc2V0IHRvIHRoZSBGaWxlJ3MgbmFtZSBhdHRyaWJ1dGUuCiAgICAgLy8gTm90YWJseSwg
dGhpcyB3aWxsIGFmZmVjdCBhIG5hbWUgc3VnZ2VzdGVkIGluICJGaWxlIFNhdmUgQXMiLgogCi0g
ICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIFdURk1vdmUocmVzcG9u
c2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgY2xpZW50
KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgbV9idWZmZXIucmVz
aXplKGJ1ZmZlclNpemUpOwogICAgICAgICByZWFkQXN5bmMoKTsKICAgICB9KTsKQEAgLTYxMSw3
ICs2MTEsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9y
KCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
KHRoaXMsIFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dIHsKICAgICAgICAgbV9idWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwogICAgICAgICBy
ZWFkQXN5bmMoKTsKICAgICB9KTsKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlmeSB0aGUg
Y2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVudCBtaWdo
dCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sgZnVuY3Rp
b24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBjYWxscyBp
biB0aGUgc3RhY2suCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBkb05vdGlmeUZpbmlzaChw
cm90ZWN0ZWRUaGlzKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggN2M0MmU4
ODM1ZjUwMTcyMjNjMmE1NDQ4OTUwMDQxN2ZlMGM5ZTRmNC4uZWE0Njk1ZjFlMDQ0ZjY5MTgyMzdh
ZWNlMDRlMjk3NjM3ZjBmOTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zMDEsNyArMzAx
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KIAotICAgIGNs
aWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgY2xpZW50KCktPndpbGxTZW5k
UmVxdWVzdEFzeW5jKHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpCiAgICAgICAg
ICAgICByZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDI0ZDE0ODU4MjA1ZTEyMmQyZmJlZGYxYTM5
M2Q3YTgwZWNmMmM4MWIuLmY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTQzLDggKzE0Myw4IEBA
IFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVlCiAKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGF1dG8gd29y
ayA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNmUmVxdWVzdCA9IFJl
dGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+KGNmUmVxdWVzdCksIG9yaWdpbmFsUmVkaXJlY3RSZXNw
b25zZSA9IFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPihvcmlnaW5hbFJlZGlyZWN0UmVzcG9u
c2UpXSAoKSBtdXRhYmxlIHsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CisgICAg
YXV0byB3b3JrID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjZlJlcXVl
c3QgPSBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPihjZlJlcXVlc3QpLCBvcmlnaW5hbFJlZGly
ZWN0UmVzcG9uc2UgPSBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4ob3JpZ2luYWxSZWRpcmVj
dFJlc3BvbnNlKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGhhbmRsZSA9IHByb3RlY3Rl
ZFRoaXMtPm1faGFuZGxlOwogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgbV9yZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdC5jZlVS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwpAQCAtMTc2LDggKzE3Niw4IEBAIFJldGFpblB0cjxD
RlVSTFJlcXVlc3RSZWY+IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVlCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJl
ZiBjb25uZWN0aW9uLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiB7Ci0gICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgYXV0byB3b3JrID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2ZSZXNwb25zZSA9IFJldGFpblB0cjxDRlVS
TFJlc3BvbnNlUmVmPihjZlJlc3BvbnNlKSwgY29ubmVjdGlvbiA9IFJldGFpblB0cjxDRlVSTENv
bm5lY3Rpb25SZWY+KGNvbm5lY3Rpb24pXSAoKSBtdXRhYmxlIHsKKyAgICBSZWYgcHJvdGVjdGVk
VGhpcyB7ICp0aGlzIH07CisgICAgYXV0byB3b3JrID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjZlJlc3BvbnNlID0gUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+KGNm
UmVzcG9uc2UpLCBjb25uZWN0aW9uID0gUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4oY29u
bmVjdGlvbildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIWhhc0hhbmRsZSgpIHx8ICFtX2hh
bmRsZS0+Y2xpZW50KCkgfHwgIW1faGFuZGxlLT5jb25uZWN0aW9uKCkpIHsKICAgICAgICAgICAg
IG1fc2VtYXBob3JlLnNpZ25hbCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjEyLDcgKzIx
Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZE
YXRhUmVmIGRhdGEsIENGSW5kZXggb3JpZ2luYWxMZW5ndGgpCiB7Ci0gICAgYXV0byB3b3JrID0g
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YSA9IFJldGFpblB0cjxDRkRhdGFS
ZWY+KGRhdGEpLCBvcmlnaW5hbExlbmd0aCA9IG9yaWdpbmFsTGVuZ3RoXSAoKSBtdXRhYmxlIHsK
KyAgICBhdXRvIHdvcmsgPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPihkYXRhKSwgb3JpZ2luYWxMZW5ndGggPSBvcmlnaW5hbExlbmd0
aF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGhhbmRsZSA9IHByb3RlY3RlZFRoaXMtPm1f
aGFuZGxlOwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmhhc0hhbmRsZSgpIHx8ICFoYW5k
bGUtPmNsaWVudCgpIHx8ICFoYW5kbGUtPmNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogCiB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRp
ZEZpbmlzaExvYWRpbmcoKQogewotICAgIGF1dG8gd29yayA9IFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIG11dGFibGUgeworICAgIGF1dG8gd29yayA9IFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGhhbmRsZSA9IHBy
b3RlY3RlZFRoaXMtPm1faGFuZGxlOwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmhhc0hh
bmRsZSgpIHx8ICFoYW5kbGUtPmNsaWVudCgpIHx8ICFoYW5kbGUtPmNvbm5lY3Rpb24oKSkgewog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9oYW5kbGUtPmRlcmVmKCk7CkBAIC0yNTUsNyAr
MjU1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENGRXJyb3JS
ZWYgZXJyb3IpCiB7Ci0gICAgYXV0byB3b3JrID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZXJyb3IgPSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4oZXJyb3IpXSAoKSBtdXRhYmxlIHsK
KyAgICBhdXRvIHdvcmsgPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVycm9yID0g
UmV0YWluUHRyPENGRXJyb3JSZWY+KGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8m
IGhhbmRsZSA9IHByb3RlY3RlZFRoaXMtPm1faGFuZGxlOwogICAgICAgICBpZiAoIXByb3RlY3Rl
ZFRoaXMtPmhhc0hhbmRsZSgpIHx8ICFoYW5kbGUtPmNsaWVudCgpIHx8ICFoYW5kbGUtPmNvbm5l
Y3Rpb24oKSkgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9oYW5kbGUtPmRlcmVmKCk7
CkBAIC0yOTAsOCArMjkwLDggQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjoKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOwotICAgIGF1dG8gd29yayA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhY2hlZFJlc3BvbnNlID0gUmV0YWluUHRyPENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY+KGNh
Y2hlZFJlc3BvbnNlKV0gKCkgbXV0YWJsZSB7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhp
cyB9OworICAgIGF1dG8gd29yayA9IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2Fj
aGVkUmVzcG9uc2UgPSBSZXRhaW5QdHI8Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZj4oY2FjaGVkUmVz
cG9uc2UpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgaGFuZGxlID0gcHJvdGVjdGVkVGhp
cy0+bV9oYW5kbGU7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
cmVzcG9uc2UpIG11dGFibGUgewpAQCAtMzE3LDcgKzMxNyw3IEBAIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYg
Y2hhbGxlbmdlKQogewotICAgIGF1dG8gd29yayA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNoYWxsZW5nZSA9IFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+KGNoYWxs
ZW5nZSldICgpIG11dGFibGUgeworICAgIGF1dG8gd29yayA9IFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgY2hhbGxlbmdlID0gUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4o
Y2hhbGxlbmdlKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGhhbmRsZSA9IHByb3RlY3Rl
ZFRoaXMtPm1faGFuZGxlOwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmhhc0hhbmRsZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2
ZUNoYWxsZW5nCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKENGSW5kZXggdG90YWxCeXRlc1dyaXR0
ZW4sIENGSW5kZXggdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKLSAgICBhdXRvIHdvcmsg
PSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV0gKCkgbXV0YWJsZSB7CisgICAgYXV0byB3b3JrID0gW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGhhbmRsZSA9IHBy
b3RlY3RlZFRoaXMtPm1faGFuZGxlOwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmhhc0hh
bmRsZSgpIHx8ICFoYW5kbGUtPmNsaWVudCgpIHx8ICFoYW5kbGUtPmNvbm5lY3Rpb24oKSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTM1OSw4ICszNTksOCBAQCBCb29sZWFuIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNob3VsZFVzZUNy
ZWRlbgogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiBCb29sZWFuIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNh
blJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0
aW9uU3BhY2UpCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0g
ICAgYXV0byB3b3JrID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvdGVjdGlv
blNwYWNlID0gUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPihwcm90ZWN0aW9uU3Bh
Y2UpXSAoKSBtdXRhYmxlIHsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CisgICAg
YXV0byB3b3JrID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm90ZWN0aW9uU3Bh
Y2UgPSBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+KHByb3RlY3Rpb25TcGFjZSld
ICgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBoYW5kbGUgPSBwcm90ZWN0ZWRUaGlzLT5tX2hh
bmRsZTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChib29sIHJlc3VsdCkgbXV0YWJsZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXggODUwZmNhMTdhMjFkOTcx
YTllMjAyNzlhMjMxMmUyZGEyNzkwMDQyYi4uMzExYWVmMmQ4MGZlNzMzNmNkOGU1MTEzYzM5ZDk1
MGRiOGY0Mzk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUlt
cGwoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsCiAgICAgICAgICYmICFzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKQogICAgICAgICAmJiBfQ0ZOZXR3b3JrSXNLbm93bkhTVFNIb3N0V2l0
aFNlc3Npb24obV9odHRwc1VSTC5nZXQoKSwgbnVsbHB0cikpIHsKICAgICAgICAgLy8gQ2FsbCB0
aGlzIGFzeW5jaHJvbm91c2x5IGJlY2F1c2UgdGhlIHNvY2tldCBzdHJlYW0gaXMgbm90IGZ1bGx5
IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICAg
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVjYXVzZSBp
dCB2aW9sYXRlcyBIVFRQIFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIikpOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IDgwOTQ1YjMx
OWEwYzZiNjYwYTllZmJjMzY3YzA0ZWNiZmRjNTYyNmQuLjEwZDY1MzlkZjA0OGE2NmFhMDdmOTAz
NzdjMWQwMzkyNzZjNThlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTYxNCw3ICs2
MTQsNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVNlbnQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYg
cHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDI5ODczNTU4NWJiYzI1
ZDEyNzdmOTY1YjU5OWU0M2NhNjZlNmZjYmUuLjRiZDI1MDQyMzJmMTJlOTAyZjFjZGY0ZTkzZDNm
MzgyYmE4MzgyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmNhbmNlbCgpCiAgICAgYXV0byYgc2NoZWR1bGVyID0gQ3VybENvbnRleHQ6OnNpbmdsZXRv
bigpLnNjaGVkdWxlcigpOwogCiAgICAgaWYgKG5lZWRUb0ludm9rZURpZENhbmNlbFRyYW5zZmVy
KCkpIHsKLSAgICAgICAgcnVuT25Xb3JrZXJUaHJlYWRJZlJlcXVpcmVkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBydW5PbldvcmtlclRocmVhZElm
UmVxdWlyZWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIHsKICAgICAg
ICAgICAgIGRpZENhbmNlbFRyYW5zZmVyKCk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZSBpZiAo
bV9zdGFydFN0YXRlID09IFN0YXJ0U3RhdGU6OkRpZFN0YXJ0KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IHZvaWQgQ3VybFJlcXVlc3Q6OnJlc3VtZSgpCiAvKiBgdGhpc2AgaXMgcHJvdGVjdGVkIGluc2lk
ZSB0aGlzIG1ldGhvZC4gKi8KIHZvaWQgQ3VybFJlcXVlc3Q6OmNhbGxDbGllbnQoRnVuY3Rpb248
dm9pZChDdXJsUmVxdWVzdCYsIEN1cmxSZXF1ZXN0Q2xpZW50Jik+JiYgdGFzaykKIHsKLSAgICBy
dW5Pbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGFz
ayA9IFdURk1vdmUodGFzayldKCkgbXV0YWJsZSB7CisgICAgcnVuT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGFzayA9IFdURk1vdmUodGFzayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIHRhc2soKnRoaXMs
IG1ha2VSZWYoKm1fY2xpZW50KSk7CiAgICAgfSk7CkBAIC02MTgsNyArNjE4LDcgQEAgdm9pZCBD
dXJsUmVxdWVzdDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlRm9yRmlsZShjb25zdCBVUkwmIHVy
bCkKICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRo
KHVybC5wYXRoKCkudG9TdHJpbmcoKSk7CiAKICAgICAvLyBEaWRSZWNlaXZlUmVzcG9uc2UgbXVz
dCBub3QgYmUgY2FsbGVkIGltbWVkaWF0ZWx5Ci0gICAgcnVuT25Xb3JrZXJUaHJlYWRJZlJlcXVp
cmVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IGNyb3NzVGhy
ZWFkQ29weSh1cmwpLCBtaW1lVHlwZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1pbWVUeXBl
KSldKCkgbXV0YWJsZSB7CisgICAgcnVuT25Xb3JrZXJUaHJlYWRJZlJlcXVpcmVkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdXJsID0gY3Jvc3NUaHJlYWRDb3B5KHVybCks
IG1pbWVUeXBlID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobWltZVR5cGUpKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgQ3VybFJlc3BvbnNlIHJlc3BvbnNlOwogICAgICAgICByZXNwb25zZS51cmwg
PSBXVEZNb3ZlKHVybCk7CiAgICAgICAgIHJlc3BvbnNlLnN0YXR1c0NvZGUgPSAyMDA7CkBAIC02
NTksNyArNjU5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogICAgICAgICAvLyBTdGFydCB0cmFuc2ZlciBmb3IgZmlsZSBzY2hlbWUKICAgICAgICAg
c3RhcnRXaXRoSm9iTWFuYWdlcigpOwogICAgIH0gZWxzZSBpZiAobV9hY3Rpb25BZnRlckludm9r
ZSA9PSBBY3Rpb246OkZpbmlzaFRyYW5zZmVyKSB7Ci0gICAgICAgIHJ1bk9uV29ya2VyVGhyZWFk
SWZSZXF1aXJlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmaW5pc2hl
ZFJlc3VsdENvZGUgPSBtX2ZpbmlzaGVkUmVzdWx0Q29kZV0oKSB7CisgICAgICAgIHJ1bk9uV29y
a2VyVGhyZWFkSWZSZXF1aXJlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGZpbmlzaGVkUmVzdWx0Q29kZSA9IG1fZmluaXNoZWRSZXN1bHRDb2RlXSgpIHsKICAgICAgICAg
ICAgIGRpZENvbXBsZXRlVHJhbnNmZXIoZmluaXNoZWRSZXN1bHRDb2RlKTsKICAgICAgICAgfSk7
CiAgICAgfQpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6Omludm9rZUNhbmNl
bCgpCiAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIGV4dHJhY3QgdGhpcyBtZXRob2QuIFRoaXMg
aXMgYSB3b3JrYXJvdW5kIGZvciBNU1ZDJ3MgYnVnCiAgICAgLy8gd2hpY2ggaGFwcGVucyB3aGVu
IHVzaW5nIGxhbWJkYSBpbnNpZGUgb3RoZXIgbGFtYmRhLiBUaGUgY29tcGlsZXIgbG9zZXMgY29u
dGV4dAogICAgIC8vIG9mIGB0aGlzYCB3aGljaCBwcmV2ZW50IG1ha2VSZWYuCi0gICAgcnVuT25N
YWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAg
IHJ1bk9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkg
ewogICAgICAgICBjYW5jZWwoKTsKICAgICB9KTsKIH0KQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0OjpwYXVzZWRTdGF0dXNDaGFuZ2VkKCkKICAgICBpZiAoaXNDb21wbGV0ZWRP
ckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBydW5PbldvcmtlclRocmVhZElm
UmVxdWlyZWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CisgICAg
cnVuT25Xb3JrZXJUaHJlYWRJZlJlcXVpcmVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfV0oKSB7CiAgICAgICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkgfHwgIW1f
Y3VybEhhbmRsZSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApp
bmRleCBmOGI3MDhhZGI2ZGZmNWUwMjE0YmRmYjEyODM2ZWJmOGI2ZWVjZjIxLi5mZDBiYTYzMDAw
NmVhYjhjMDlmY2YyYTJiOTg1NTE5MzZmYTkxMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApA
QCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwogCiAgICAgaWYgKGNsaWVudCgpKSB7Ci0gICAg
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgICAgICBSZWYgcHJv
dGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodGhpcywgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKTsKICAgICB9
CiB9CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2EKIAogICAgIGNs
ZWFyQXV0aGVudGljYXRpb24oKTsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlKGRlbGVnYXRlKCktPnJlc3BvbnNlKCkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Uo
ZGVsZWdhdGUoKS0+cmVzcG9uc2UoKSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0gewogICAgICAgICBjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAg
fSk7CiB9CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
YW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW4KICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGNsaWVudCgpKSB7Ci0gICAgICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlz
IH07CiAgICAgICAgIGNsaWVudCgpLT5yZWNlaXZlZENhbmNlbGxhdGlvbih0aGlzLCBjaGFsbGVu
Z2UpOwogICAgIH0KIH0KQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3
aWxsU2VuZFJlcXVlc3QoKQogICAgIH0KIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2VD
b3B5ID0gZGVsZWdhdGUoKS0+cmVzcG9uc2UoKTsKLSAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1
ZXN0QXN5bmModGhpcywgV1RGTW92ZShuZXdSZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkgeworICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBX
VEZNb3ZlKG5ld1JlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlQ29weSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAg
ICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKICAg
ICB9KTsKIH0KQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKCkKIAogICAgIGlmIChiYXNlNjQpIHsKICAgICAgICAgZGF0YSA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhkYXRhKTsKLSAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgICAgICBjb250aW51ZUFmdGVyRGlkUmVj
ZWl2ZVJlc3BvbnNlKCk7CiAgICAgICAgIH0pOwogCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0YVVSTCgpCiAgICAgfSBlbHNlIHsKICAgICAgICAgVGV4
dEVuY29kaW5nIGVuY29kaW5nKGNoYXJzZXQpOwogICAgICAgICBkYXRhID0gZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKGRhdGEsIGVuY29kaW5nKTsKLSAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgICAgICBjb250aW51ZUFm
dGVyRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmlu
ZGV4IGJjNDRjYmI0Y2ExNDZmMTQwNWUxYWRiZmJhNzM0ODkwMmY4YTgwZDguLjExMGJmNDk3N2I1
MzZjNGRmNzUyYzc3MjZlYzZhYzVkYjFjZDRlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC00NTks
NyArNDU5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHBy
ZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3Zl
ciBJUEMuCiAgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgICAgIHJlcXVl
c3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5j
cHAKaW5kZXggNjM4MTA5NGM0N2NjZTYxNzRmMTg2YTZlZjRmMTZjODQwNjZhY2JhOS4uZTlkYzZi
ODM2MzI0NTQ4ZGI4ZGI3ZjRiM2UwNGZhZDBiMThhNDQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtNTYs
NyArNTYsNyBAQCBPcGVuWFJEZXZpY2U6Ok9wZW5YUkRldmljZShYckluc3RhbmNlIGluc3RhbmNl
LCBYclN5c3RlbUlkIHN5c3RlbSwgUmVmPFdvcmtRdWV1ZQogdm9pZCBPcGVuWFJEZXZpY2U6Omlu
aXRpYWxpemUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewog
ICAgICAgICBhdXRvIHN5c3RlbVByb3BlcnRpZXMgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0ZW1Q
cm9wZXJ0aWVzLCBYUl9UWVBFX1NZU1RFTV9QUk9QRVJUSUVTPigpOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IHhyR2V0U3lzdGVtUHJvcGVydGllcyhtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCAmc3lz
dGVtUHJvcGVydGllcyk7CiAgICAgICAgIGlmIChYUl9TVUNDRUVERUQocmVzdWx0KSkKQEAgLTg1
LDcgKzg1LDcgQEAgV2ViQ29yZTo6SW50U2l6ZSBPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVz
b2x1dGlvbihTZXNzaW9uTW9kZSBtb2RlKQogCiB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB7Ci0gICAgbV9xdWV1ZS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RlXSgpIHsK
KyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgbW9kZV0oKSB7CiAgICAgICAgIEFTU0VSVChtX2luc3RhbmNlICE9IFhSX05VTExfSEFORExF
KTsKICAgICAgICAgQVNTRVJUKG1fc2Vzc2lvbiA9PSBYUl9OVUxMX0hBTkRMRSk7CiAgICAgICAg
IEFTU0VSVChtX2V4dGVuc2lvbnMubWV0aG9kcygpLnhyR2V0T3BlbkdMR3JhcGhpY3NSZXF1aXJl
bWVudHNLSFIpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUgbW9kZSkKIAogdm9pZCBPcGVuWFJE
ZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogewotICAgIG1fcXVldWUuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CisgICAgbV9x
dWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgewog
ICAgICAgICBpZiAobV9zZXNzaW9uID09IFhSX05VTExfSEFORExFKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVS
ZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUgc3BhY2UKIAogdm9p
ZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewotICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgcG9sbEV2
ZW50cygpOwogICAgICAgICBpZiAoIWlzU2Vzc2lvblJlYWR5KG1fc2Vzc2lvblN0YXRlKSkgewog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVx
dWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAKIHZvaWQgT3BlblhS
RGV2aWNlOjpzdWJtaXRGcmFtZShWZWN0b3I8RGV2aWNlOjpMYXllcj4mJiBsYXllcnMpCiB7ICAg
Ci0gICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBsYXllcnMgPSBXVEZNb3ZlKGxheWVycyldKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGxheWVycyA9IFdU
Rk1vdmUobGF5ZXJzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKG1fZnJhbWVTdGF0ZS5z
aG91bGRSZW5kZXIpOwogICAgICAgICBWZWN0b3I8Y29uc3QgWHJDb21wb3NpdGlvbkxheWVyQmFz
ZUhlYWRlcio+IGZyYW1lRW5kTGF5ZXJzOwogICAgICAgICBpZiAobV9mcmFtZVN0YXRlLnNob3Vs
ZFJlbmRlcikgewpAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgT3BlblhSRGV2aWNlOjp3YWl0VW50
aWxTdG9wcGluZygpCiAgICAgcG9sbEV2ZW50cygpOwogICAgIGlmIChtX3Nlc3Npb25TdGF0ZSA+
PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKQogICAgICAgICByZXR1cm47Ci0gICAgbV9xdWV1
ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKKyAg
ICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
KSB7CiAgICAgICAgIHdhaXRVbnRpbFN0b3BwaW5nKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcAppbmRleCA3MTgyNTk2NGE4
NGExNDU2NjM0YWZjOTFkMDQ3ODQwYTVlOGMzNzM0Li5jYjk4NDg4YWI5YzJjZjJjMjM5NDZkNDgz
NzJkNDU0NzRhZjI4YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VRdW90YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1
b3RhTWFuYWdlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpyZXF1ZXN0U3BhY2VPbk1haW5UaHJlYWQodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJlcXUK
ICAgICAgICAgbV9xdW90YUNvdW50RG93bkxvY2sudW5sb2NrKCk7CiAgICAgfQogCi0gICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHNwYWNlUmVxdWVzdGVkLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
eworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHNwYWNlUmVxdWVzdGVkLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvIGRlY2lzaW9uID0gcmVxdWVzdFNwYWNlT25CYWNrZ3Jv
dW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGVjaXNpb25dKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBjYWxsYmFjayhkZWNpc2lvbik7CkBAIC04Niw3ICs4Niw3IEBAIFN0b3JhZ2VRdW90YU1h
bmFnZXI6OkRlY2lzaW9uIFN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZU9uQmFja2dy
b3VuZFRocmVhCiAKICAgICAvLyBCbG9jayB0aGlzIHRocmVhZCB1bnRpbCBnZXR0aW5nIGRlY3Np
b24gZm9yIHF1b3RhIGluY3JlYXNlLgogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzcGFjZVJlcXVlc3RlZCwgJnNlbWFwaG9yZV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc3BhY2VSZXF1ZXN0
ZWQsICZzZW1hcGhvcmVdKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2Us
ICIlcCAtIFN0b3JhZ2VRdW90YU1hbmFnZXIgYXNrcyBmb3IgcXVvdGEgaW5jcmVhc2UgJSIgUFJJ
dTY0LCB0aGlzLCBzcGFjZVJlcXVlc3RlZCk7CiAgICAgICAgIG1fcXVvdGFJbmNyZWFzZVJlcXVl
c3RlcihtX3F1b3RhLCBtX3VzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCAmc2VtYXBob3JlXShzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBuZXdRdW90YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhTdG9y
YWdlLCAiJXAgLSBTdG9yYWdlUXVvdGFNYW5hZ2VyIHJlY2VpdmVzIHF1b3RhIGluY3JlYXNlIHJl
c3BvbnNlICUiIFBSSXU2NCwgdGhpcywgbmV3UXVvdGEgPyAqbmV3UXVvdGEgOiAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcAppbmRleCBkZGM1NzAwOWU4ODJmNjU5OGNjNTk2Njhk
Mzk3OTUxYjI4NGI5MDA0Li5iMGVhZjY0YzUwODI1N2U4Yzk5ZjEyYmY3Y2I3YTc2OGIwMWViYTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdl
YlhSVGVzdDo6fldlYlhSVGVzdCgpID0gZGVmYXVsdDsKIHZvaWQgV2ViWFJUZXN0OjpzaW11bGF0
ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmFrZVhSRGV2aWNlSW5pdCYgaW5pdCwgV2ViRmFrZVhSRGV2aWNlUHJvbWlzZSYmIHByb21pc2Up
CiB7CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci10ZXN0LWFw
aS8jZG9tLXhydGVzdC1zaW11bGF0ZWRldmljZWNvbm5lY3Rpb24KLSAgICBjb250ZXh0LnBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXQsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgY29udGV4dC5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGluaXQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZGV2aWNlID0gV2Vi
RmFrZVhSRGV2aWNlOjpjcmVhdGUoKTsKICAgICAgICAgYXV0byYgc2ltdWxhdGVkRGV2aWNlID0g
ZGV2aWNlLT5zaW11bGF0ZWRYUkRldmljZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50TG9vcC5jcHAKaW5kZXggMTdmM2NhZWZmMmRiY2NmMTkwZmYxYjU3YzdjNjMxNTkz
YmQzNTU4MC4uNjU0ZjEwZDg3MjFmYWM0ZGJiMTM4YTZlYmIxMTgxNzdlYzg0NWYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcApAQCAtNDgsNyArNDgsNyBA
QCBXb3JrZXJFdmVudExvb3A6On5Xb3JrZXJFdmVudExvb3AoKQogdm9pZCBXb3JrZXJFdmVudExv
b3A6OnNjaGVkdWxlVG9SdW4oKQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW2V2ZW50TG9vcCA9
IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtldmVudExvb3AgPSBSZWYgeyAqdGhpcyB9XSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgZXZlbnRMb29wLT5ydW4oKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAKaW5kZXggMGFkMjBiNWFkM2YxZDE4ZjhkOTA0NTUxOGMwMGFlYmJlODQzMWMwZi4uYzg2
MzgwYmM3MDVlMWNmY2IwNzQ0MzYwNmEzODhjNGI2YWFiYTc4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBA
QCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZwogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0geworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG1lc3NhZ2Ug
PSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGlmICghbV9tYXlCZURlc3Ryb3ll
ZCkKICAgICAgICAgICAgIG1faW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlRnJvbVdvcmtlclRv
RnJvbnRlbmQobWVzc2FnZSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKaW5kZXggOTRhNTkyYjYzMjY2NDA3NzU1YmVlY2Ey
NDdhNWNjZGFkNWMwMjU4ZS4uZmQ2NTk4NDUzMGU3YzE4MjhlOTMzMzAwMTE1Mjk4ZWIwZWRhZWYz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFk
LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cnVuRXZl
bnRMb29wKCkKIAogdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRo
cmVhZCgpCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAg
UmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWlu
VGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzLgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCmlu
ZGV4IGU3MmVmMTM3NzhkNjQwM2MxYmY4NWI0ZTE3ZWNhMTNhNTk0ZjZjZGUuLjY2OWU4YmM1MWJh
YzVhYzM2MjI0OGVmYTAzNDkxOTIzYjEwNjJhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHBy
aXZhdGU6CiAKIHZvaWQgRXh0ZW5kYWJsZUV2ZW50OjphZGRFeHRlbmRMaWZldGltZVByb21pc2Uo
UmVmPERPTVByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBwcm9taXNlLT53aGVuU2V0dGxlZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHNldHRsZWRQcm9taXNlID0g
cHJvbWlzZS5wdHIoKV0gKCkgbXV0YWJsZSB7CisgICAgcHJvbWlzZS0+d2hlblNldHRsZWQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXR0bGVkUHJvbWlzZSA9IHByb21p
c2UucHRyKCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqc2V0
dGxlZFByb21pc2UtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBnbG9iYWxPYmplY3QucXVldWVN
aWNyb3Rhc2soRnVuY3Rpb25NaWNyb3Rhc2s6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHNldHRsZWRQcm9taXNlID0gV1RGTW92ZShzZXR0bGVk
UHJvbWlzZSldICgpIG11dGFibGUgewogICAgICAgICAgICAgLS1tX3BlbmRpbmdQcm9taXNlQ291
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5k
ZXggODE1MWJkYmUwMzY4NDg0OGY4MjMwZWUyYzZjNzM4YTJhMjY1OTljMC4uZmI1MTEyNTJiYzY4
ZGI4MWRlMWNiM2QzM2UxNGEyMTU1ODllYmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBGZXRjaEV2ZW50OjpyZXNwb25kV2l0aChSZWY8RE9NUHJvbWlzZT4mJiBwcm9taXNlKQog
ICAgIG1fcmVzcG9uZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwogICAgIGFkZEV4dGVuZExp
ZmV0aW1lUHJvbWlzZSgqbV9yZXNwb25kUHJvbWlzZSk7CiAKLSAgICBhdXRvIGlzUmVnaXN0ZXJl
ZCA9IG1fcmVzcG9uZFByb21pc2UtPndoZW5TZXR0bGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKKyAgICBhdXRvIGlzUmVnaXN0ZXJlZCA9IG1fcmVzcG9uZFByb21p
c2UtPndoZW5TZXR0bGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewog
ICAgICAgICBwcm9taXNlSXNTZXR0bGVkKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApp
bmRleCAzMDQxZDhiNjhkZGQ3YjY4ZDk4MjJmMDQyMjE0NjAwMjU2ZjAzZmEyLi40ZmIxZjU5ZjY3
NTBmMjdiYmRiYzA3MzUzZTMwMDQ3YTM5NDRlNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0x
MDUsNyArMTA1LDcgQEAgYXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+IFJl
YWR5UHJvbWlzZSYKICAgICAgICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CiAKICAgICAg
ICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIGVu
c3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLndoZW5SZWdpc3RyYXRpb25SZWFkeShjb250ZXh0LnRv
cE9yaWdpbigpLmRhdGEoKSwgY29udGV4dC51cmwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIG11dGFibGUgeworICAgICAg
ICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS53aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29udGV4
dC50b3BPcmlnaW4oKS5kYXRhKCksIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIG11dGFibGUgewogICAg
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFt0aGlzLCByZWdpc3RyYXRpb25EYXRhID0gV1RGTW92ZShyZWdpc3Ry
YXRpb25EYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBhdXRvKiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICAgICAgICAgIGlmICghY29udGV4dCB8
fCAhbV9yZWFkeVByb21pc2UpCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxE
ZWZlcnIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVj
dGlvbigpLm1hdGNoUmVnaXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9w
T3JpZ2luKCkuZGF0YSgpIH0sIHBhcnNlZFVSTCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgeworICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLm1hdGNoUmVnaXN0cmF0aW9u
KFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIHBhcnNl
ZFVSTCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
dGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAgICAgfQogCiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZ2V0UmVnaXN0cmF0aW9ucyhT
ZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBjb250ZXh0
LnVybCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhcykgbXV0YWJsZSB7Cisg
ICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9y
aWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9LCBjb250ZXh0LnVybCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsKICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVnaXN0cmF0aW9uRGF0YXMg
PSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1
dG8gcmVnaXN0cmF0aW9ucyA9IFdURjo6bWFwKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YXMpLCBb
Jl0oYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOwpAQCAtMzY1LDcgKzM2NSw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0
aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAg
IH0pOwogCi0gICAgYXV0byBub3RpZnlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhpdChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXkgPSBkYXRhLmtleSwgc2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkXSB7CisgICAgYXV0byBub3RpZnlJZkV4aXRFYXJseSA9IFdU
Rjo6bWFrZVNjb3BlRXhpdChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGtl
eSA9IGRhdGEua2V5LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRdIHsKICAgICAgICAgaWYgKHNo
b3VsZE5vdGlmeVdoZW5SZXNvbHZlZCA9PSBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQ6OlllcykK
ICAgICAgICAgICAgIG5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChrZXkpOwogICAgIH0pOwpA
QCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2
ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICBpZiAoIXByb21p
c2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmll
ciA9IGpvYi5pZGVudGlmaWVyKCksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQsIG5vdGlmeUlmRXhpdEVhcmx5ID0gV1RGTW92ZShub3RpZnlJZkV4aXRFYXJs
eSldKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGpvYklkZW50aWZpZXIgPSBqb2Iu
aWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkLCBub3RpZnlJZkV4aXRFYXJseSA9IFdURk1vdmUobm90aWZ5SWZFeGl0RWFybHkpXSgpIG11
dGFibGUgewogICAgICAgICBub3RpZnlJZkV4aXRFYXJseS5yZWxlYXNlKCk7CiAKICAgICAgICAg
YXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0
ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDgyMGU0Y2VmMWIwNjBjODAwZGM4M2U3ZDllYTZl
ODc4NWE4YjliNWIuLmU5MTQwOWRlNTIwYzJjYzljMGFlNTg3NTNlYjZhMTViNzRkOWNjN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9vbmdvaW5nSGVhcnRCZWF0Q2hlY2sgPSB0cnVlOwotICAgIHJ1bkxvb3AoKS5wb3N0
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJikgbXV0YWJs
ZSB7CisgICAgcnVuTG9vcCgpLnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfV0oYXV0byYpIG11dGFibGUgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oKSB7CiAgICAgICAgICAg
ICBtX29uZ29pbmdIZWFydEJlYXRDaGVjayA9IGZhbHNlOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDg4ZWJhYWQ5YjAzOWI2OGViM2ZhZjM4
NTk0MTY4NGEyMmY3YjYxNWEuLmVhMzY3MzdiN2MxYTc2ODU4MmZiODFiZWFlNDQ3MGE1ODViYzE2
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTQ2LDE0ICsx
NDYsMTQgQEAgYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXAKIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
IHRhc2spCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGFzayA9IFdURk1vdmUodGFzayksIHRo
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbdGFzayA9IFdURk1vdmUodGFzayksIHRoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAgdGFzay5wZXJmb3JtVGFzayht
X2RvY3VtZW50LmdldCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
bWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSB0ZXJtaW5hdGVkIGNhc2UuCiAgICAgICAgIG1faW5zcGVjdG9yUHJveHkuc2VuZE1lc3Nh
Z2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKICAgICB9KTsKQEAgLTE2MSw3ICsxNjEs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCBkaXNhYmxlZCkK
IHsKLSAgICBwb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGRpc2FibGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBwb3N0VGFz
a1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGlzYWJsZWRd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBtX3BhZ2UtPnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNw
ZWN0b3IoZGlzYWJsZWQpOwogICAgIH0pOyAgIApAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgY29ubmVjdGlvCiAKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFp
bnMoa2V5KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJl
ZigpKTsKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJl
ciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENv
cHkoKV0oYXV0byYpIG11dGFibGUgeworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9w
dGlvbnMuaXNvbGF0ZWRDb3B5KCldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgdGhyZWFkKCku
cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50
SWQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25z
KSk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CkBAIC0yNjYsNyAr
MjY2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnJlbW92ZUZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGkKIHZvaWQgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQogewog
ICAgIHRocmVhZCgpLndpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpOwotICAgIHRocmVh
ZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9IFdURk1vdmUoc291
cmNlRGF0YSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICB0aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9IFdURk1vdmUoc291cmNlRGF0YSldKGF1dG8mKSBtdXRh
YmxlIHsKICAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9Qb3N0TWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHNvdXJjZURhdGEpKTsKICAgICB9KTsKIH0KQEAgLTI3NCw3ICsyNzQs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmZpcmVJbnN0YWxsRXZlbnQoKQogewogICAgIHRocmVhZCgpLndpbGxQb3N0VGFza1RvRmly
ZUluc3RhbGxFdmVudCgpOwotICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJikgbXV0YWJsZSB7CisgICAgdGhy
ZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0oYXV0byYpIG11dGFibGUgewogICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVJ
bnN0YWxsRXZlbnQoKTsKICAgICB9KTsKIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6ZmlyZUluc3RhbGxFdmVudCgpCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6ZmlyZUFjdGl2YXRlRXZlbnQoKQogewogICAgIHRocmVhZCgpLndpbGxQ
b3N0VGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsKLSAgICB0aHJlYWQoKS5ydW5Mb29wKCkucG9z
dFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYpIG11dGFi
bGUgeworICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgdGhyZWFkKCkucXVl
dWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcAppbmRleCAxMGJiODI1OWViNGE1YmRjYWViMTllN2ExNjk1M2U3YWNhZmY0YWZj
Li5lYmRkOTljZWU5ZTMwYTdiNjQzZGJlMmQ2NGVjZmM2MDk4MmQ4OTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICsrbV9wdXNoQ291bnRlcjsKLSAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGFzayA9
IFdURk1vdmUodGFzayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGFzayA9IFdURk1vdmUodGFzayldKCkgbXV0
YWJsZSB7CiAgICAgICAgIHRhc2soKTsKICAgICB9KTsKIH0KQEAgLTI1OSwxNCArMjU5LDE0IEBA
IHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpCiAK
ICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2RhdGFiYXNlRmlsZVBhdGgpKSB7CiAg
ICAgICAgIGlmICghb3BlblNRTGl0ZURhdGFiYXNlKG1fZGF0YWJhc2VGaWxlUGF0aCkpIHsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0geworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgICAgICBkYXRhYmFzZUZhaWxlZFRv
T3BlbigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBv
cnRlZCgpOwogICAgIH0pOwogfQpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OnB1c2hDaGFuZ2VzKGNvbnN0IEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktlCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY2hlZHVsZVB1c2hDaGFuZ2VzKFZl
Y3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiYgdXBkYXRlZFJlZ2lzdHJhdGlvbnMsIFZl
Y3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiYmIHJlbW92ZWRSZWdpc3RyYXRpb25z
LCBTaG91bGRSZXRyeSBzaG91bGRSZXRyeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcHVzaENvdW50ZXIgPSBzaG91bGRSZXRyeSA9
PSBTaG91bGRSZXRyeTo6WWVzID8gbV9wdXNoQ291bnRlciA6IDA7Ci0gICAgcG9zdFRhc2tUb1dv
cmtRdWV1ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwdXNoQ291bnRl
ciwgdXBkYXRlZFJlZ2lzdHJhdGlvbnMgPSBXVEZNb3ZlKHVwZGF0ZWRSZWdpc3RyYXRpb25zKSwg
cmVtb3ZlZFJlZ2lzdHJhdGlvbnMgPSBXVEZNb3ZlKHJlbW92ZWRSZWdpc3RyYXRpb25zKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICBwb3N0VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgcHVzaENvdW50ZXIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zID0gV1RGTW92ZSh1cGRhdGVk
UmVnaXN0cmF0aW9ucyksIHJlbW92ZWRSZWdpc3RyYXRpb25zID0gV1RGTW92ZShyZW1vdmVkUmVn
aXN0cmF0aW9ucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGRvUHVzaENoYW5nZXModXBk
YXRlZFJlZ2lzdHJhdGlvbnMsIHJlbW92ZWRSZWdpc3RyYXRpb25zKTsKICAgICAgICAgaWYgKHN1
Y2Nlc3MpIHsKICAgICAgICAgICAgIHVwZGF0ZWRSZWdpc3RyYXRpb25zLmNsZWFyKCk7CkBAIC00
ODUsNyArNDg1LDcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhj
b25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIGlmIChp
bXBvcnRlZFNjcmlwdCkKICAgICAgICAgICAgICAgICBpbXBvcnRlZFNjcmlwdHMuYWRkKGNyb3Nz
VGhyZWFkQ29weShwYWlyLmtleSksIGNyb3NzVGhyZWFkQ29weShpbXBvcnRlZFNjcmlwdCkpOwog
ICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkYXRhLnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBtYWluU2NyaXB0ID0gY3Jvc3NUaHJlYWRDb3B5KG1haW5TY3JpcHQp
LCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKCkgbXV0YWJsZSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRhdGEuc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIG1haW5TY3JpcHQgPSBjcm9zc1RocmVhZENvcHkobWFpblNjcmlwdCksIGltcG9ydGVk
U2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChtX3N0b3JlKQogICAgICAgICAgICAgICAgIG1fc3RvcmUtPmRpZFNhdmVXb3JrZXJT
Y3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQp
LCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOwogICAgICAgICB9KTsKQEAgLTU4Nyw3ICs1ODcs
NyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RG
TW92ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1
cGRhdGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpIH07CiAgICAgICAgIGF1dG8gY29udGV4
dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1vdmUo
cmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3Zl
KCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZN
b3ZlKCpjb2VwKSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMsIFdU
Rk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRh
Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFk
ZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwogICAgICAgICB9KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA2MmY3MGVlYjgw
MWQ4NDg0ZTFhNDg5NWY3ZDM0NmMxYjRlNGM3OGVmLi5hYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0
MTQxY2M1ZTI5Y2U5NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAg
LTY1OCw3ICs2NTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVxdWVzdCgpCiAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8g
c2VuZCBYTUxIdHRwUmVxdWVzdHMgZnJvbSBvbnVubG9hZCwgPGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTA0Pi4KICAgICAgICAgYXV0byBsb2FkZXIgPSBUaHJlYWRh
YmxlTG9hZGVyOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMpOwogICAgICAgICBpZiAobG9hZGVyKQotICAgICAgICAgICAg
bV9sb2FkaW5nQWN0aXZpdHkgPSBMb2FkaW5nQWN0aXZpdHkgeyBtYWtlUmVmKCp0aGlzKSwgbG9h
ZGVyLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICAgICAgICAgIG1fbG9hZGluZ0FjdGl2aXR5ID0g
TG9hZGluZ0FjdGl2aXR5IHsgUmVmIHsgKnRoaXMgfSwgbG9hZGVyLnJlbGVhc2VOb25OdWxsKCkg
fTsKIAogICAgICAgICAvLyBFaXRoZXIgbG9hZGVyIGlzIG51bGwgb3Igc29tZSBlcnJvciB3YXMg
c3luY2hyb25vdXNseSBzZW50IHRvIHVzLgogICAgICAgICBBU1NFUlQobV9sb2FkaW5nQWN0aXZp
dHkgfHwgIW1fc2VuZEZsYWcpOwpAQCAtODk0LDcgKzg5NCw3IEBAIFN0cmluZyBYTUxIdHRwUmVx
dWVzdDo6c3RhdHVzVGV4dCgpIGNvbnN0CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAg
Ly8gSWYgd2UgYXJlIGFscmVhZHkgaW4gYW4gZXJyb3Igc3RhdGUsIGZvciBpbnN0YW5jZSB3ZSBj
YWxsZWQgYWJvcnQoKSwgYmFpbCBvdXQgZWFybHkuCiAgICAgaWYgKG1fZXJyb3IpCkBAIC05Mjgs
NyArOTI4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgaWYgKG1f
ZXJyb3IpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDc4NGYyMWYzMDA0
OGJiZmVlZTRjMTk4ZmQ2MzMyMDY3MDE0Y2JmYmEuLjAzYzU2ZTQ0Y2ZiNzViNGI2ODYyYmZmYjg5
MzA4YzQ1NTU5ZTgyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZpcnN0V2luZG93SGFuZGxlSW5SZXN1bHQoSlNPTjo6
VmFsdWUmIHJlc3VsdCkKIAogdm9pZCBTZXNzaW9uOjpjbG9zZUFsbFRvcGxldmVsQnJvd3NpbmdD
b250ZXh0cyhjb25zdCBTdHJpbmcmIHRvcGxldmVsQnJvd3NpbmdDb250ZXh0LCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNsb3Nl
VG9wTGV2ZWxCcm93c2luZ0NvbnRleHQodG9wbGV2ZWxCcm93c2luZ0NvbnRleHQsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgIGNsb3NlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQodG9wbGV2ZWxCcm93c2luZ0NvbnRleHQs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTk0LDcgKzE5NCw3IEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9hZFN0
cmF0ZWd5U3RyaW5nKCkgY29uc3QKIHZvaWQgU2Vzc2lvbjo6Y3JlYXRlVG9wTGV2ZWxCcm93c2lu
Z0NvbnRleHQoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQpOwotICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgbnVs
bHB0ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MsIG51bGxwdHIsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3Bv
bnNlT2JqZWN0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0
OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBTZXNzaW9uOjpoYW5kbGVVc2VyUHJvbXB0
cyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW4KIHsKICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3Np
bmdDb250ZXh0LnZhbHVlKCkpOwotICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2ciX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiaXNTaG93
aW5nSmF2YVNjcmlwdERpYWxvZyJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2Up
IG11dGFibGUgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFNlc3Npb246OmdvKGNvbnN0IFN0cmlu
ZyYgdXJsLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpbwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdXJsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHVybCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Q29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNF
cnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgU2Vzc2lvbjo6
Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0
cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0
LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1
bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFNlc3Np
b246OmJhY2soRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Q29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNF
cnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgU2Vzc2lvbjo6
Zm9yd2FyZChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShD
b21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vy
cm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBTZXNzaW9uOjpy
ZWZyZXNoKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENv
bW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJy
b3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFNlc3Npb246Omdl
dFRpdGxlKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENv
bW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJy
b3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFNlc3Npb246Omdl
dFdpbmRvd0hhbmRsZShGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbAogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5n
Q29udGV4dC52YWx1ZSgpKTsKLSAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJnZXRC
cm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdldEJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwg
IXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBTZXNzaW9uOjpj
bG9zZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgdG9wbGV2ZWxCcm93c2lu
Z0NvbnRleHQKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCB0b3BsZXZlbEJyb3dzaW5n
Q29udGV4dCk7Ci0gICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiY2xvc2VCcm93c2lu
Z0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiY2xvc2VCcm93c2luZ0NvbnRleHQi
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vz
c2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFtX2hvc3QtPmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgICAgIC8vIENsb3NpbmcgdGhl
IGJyb3dzaW5nIGNvbnRleHQgbWFkZSB0aGUgYnJvd3NlciBxdWl0LgogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6c3VjY2VzcyhKU09OOjpBcnJheTo6Y3JlYXRl
KCkpKTsKQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIFNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdD
b250ZXh0KGNvbnN0IFN0cmluZyYgdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQsIGNvbgogCiB2b2lk
IFNlc3Npb246OnN3aXRjaFRvV2luZG93KGNvbnN0IFN0cmluZyYgd2luZG93SGFuZGxlLCBGdW5j
dGlvbjx2b2lkKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQod2luZG93SGFuZGxlLCB7IH0sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdpbmRvd0hhbmRsZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgc3dpdGNoVG9Ccm93c2luZ0NvbnRleHQod2luZG93SGFuZGxlLCB7IH0sIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2luZG93SGFuZGxlLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hUb1dpbmRvdyhj
b25zdCBTdHJpbmcmIHdpbmRvd0hhbmRsZSwgRnVuY3Rpb248dm9pZChDb21tYW5kUmUKIAogdm9p
ZCBTZXNzaW9uOjpnZXRXaW5kb3dIYW5kbGVzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZ2V0QnJvd3NpbmdDb250ZXh0cyJfcywgSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSwgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QnJvd3NpbmdDb250
ZXh0cyJfcywgSlNPTjo6T2JqZWN0OjpjcmVhdGUoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShT
ZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgaWYgKHJl
c3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02MzIsNyArNjMyLDcg
QEAgdm9pZCBTZXNzaW9uOjpuZXdXaW5kb3coc3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGVIaW50
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHR5cGVIaW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0
cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVIaW50LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hUb0ZyYW1lKFJl
ZlB0cjxKU09OOjpWYWx1ZT4mJiBmcmFtZUlELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQgPSBXVEZNb3ZlKGZyYW1lSUQpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZyYW1lSUQgPSBXVEZNb3ZlKGZyYW1lSUQpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC03MzQsNyArNzM0LDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hUb1BhcmVu
dEZyYW1lKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkgKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAg
IGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzU4LDcgKzc1OCw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0VG9wbGV2
ZWxCcm93c2luZ0NvbnRleHRSZWN0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYK
IHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBh
cmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
LnZhbHVlKCkpOwotICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImdldEJyb3dzaW5n
Q29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
U2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgiZ2V0QnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRv
d1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBz
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3Vs
dCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBTZXNzaW9uOjptYXhpbWl6ZVdpbmRvdyhGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRs
ZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtOTAwLDcgKzkwMCw3IEBAIHZvaWQgU2Vzc2lvbjo6bWluaW1pemVXaW5kb3co
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBo
YW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTkyNSw3ICs5MjUsNyBAQCB2b2lkIFNlc3Npb246OmZ1bGxzY3JlZW5X
aW5kb3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5k
UmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkp
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lkIFNlc3Npb246OmNvbXB1
dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVu
dExheQogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygibm9kZUhhbmRsZSJfcywgZWxlbWVudElE
KTsKICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJzY3JvbGxJbnRvVmlld0lmTmVlZGVkIl9z
LCBvcHRpb25zLmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZO
ZWVkZWQpKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImNvb3JkaW5hdGVTeXN0ZW0iX3Ms
IG9wdGlvbnMuY29udGFpbnMoRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGlu
YXRlcykgPyAiTGF5b3V0Vmlld3BvcnQiX3MgOiAiUGFnZSJfcyk7Ci0gICAgbV9ob3N0LT5zZW5k
Q29tbWFuZFRvQmFja2VuZCgiY29tcHV0ZUVsZW1lbnRMYXlvdXQiX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2Vu
ZCgiY29tcHV0ZUVsZW1lbnRMYXlvdXQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3Bv
bnNlT2JqZWN0KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgZmFsc2UsIFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwODIsNyArMTA4Miw3IEBAIHZvaWQgU2Vzc2lvbjo6
ZmluZEVsZW1lbnRzKGNvbnN0IFN0cmluZyYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIEZpbmRFCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0
cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdHJhdGVneSwgc2VsZWN0
b3IsIG1vZGUsIHJvb3RFbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhh
bmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc3Ry
YXRlZ3ksIHNlbGVjdG9yLCBtb2RlLCByb290RWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MTY1LDcgKzExNjUsNyBAQCB2b2lkIFNlc3Npb246OmdldEFjdGl2ZUVsZW1lbnQoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclBy
b21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMjA5LDcgKzEyMDksNyBAQCB2b2lkIFNlc3Npb246OmlzRWxlbWVudFNlbGVjdGVkKGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBT
ZXNzaW9uOjpnZXRFbGVtZW50VGV4dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVz
ZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJ
RCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFu
ZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEzMTAsNyArMTMxMCw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudFRhZ05hbWUoY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCB2b2lkIFNl
c3Npb246OmdldEVsZW1lbnRSZWN0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNl
clByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElE
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5k
UmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTM4MSw3ICsxMzgxLDcgQEAgdm9pZCBTZXNzaW9uOjppc0VsZW1lbnRFbmFibGVkKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0
LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1
bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MjUsNyArMTQyNSw3IEBAIHZvaWQgU2Vz
c2lvbjo6aXNFbGVtZW50RGlzcGxheWVkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlv
bjx2b2lkIChDb21tYW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2Vy
UHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbGVtZW50SUQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRS
ZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDY5LDcgKzE0NjksNyBAQCB2b2lkIFNlc3Npb246OmdldEVsZW1lbnRBdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgYXR0cmlidQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBhdHRyaWJ1dGUsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11
dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgZWxlbWVudElELCBhdHRyaWJ1dGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MTQs
NyArMTUxNCw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBlbGVtZW50SUQsIHByb3BlcnR5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGVsZW1lbnRJRCwgcHJvcGVydHksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NTgsNyArMTU1OCw3
IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudENTU1ZhbHVlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBjb25zdCBTdHJpbmcmIGNzc1Byb3BlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBlbGVtZW50SUQsIGNzc1Byb3BlcnR5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBo
YW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVs
ZW1lbnRJRCwgY3NzUHJvcGVydHksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MDksNyArMTYwOSw3IEBA
IHZvaWQgU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYgY29tCiAgICAgcGFyYW1ldGVycy0+c2V0RG91YmxlKCJwYWdl
TG9hZFRpbWVvdXQiX3MsIG1fcGFnZUxvYWRUaW1lb3V0KTsKICAgICBpZiAoYXV0byBwYWdlTG9h
ZFN0cmF0ZWd5ID0gcGFnZUxvYWRTdHJhdGVneVN0cmluZygpKQogICAgICAgICBwYXJhbWV0ZXJz
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsIHBhZ2VMb2FkU3RyYXRlZ3kudmFsdWUo
KSk7Ci0gICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgid2FpdEZvck5hdmlnYXRpb25U
b0NvbXBsZXRlIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICBt
X2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJ3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUi
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vz
c2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNw
b25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IENvbW1hbmRSZXN1bHQ6
OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpOwogICAgICAgICAgICAgc3dp
dGNoIChyZXN1bHQuZXJyb3JDb2RlKCkpIHsKQEAgLTE2NTAsNyArMTY1MCw3IEBAIHZvaWQgU2Vz
c2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuCiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5k
bGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICBwYXJhbWV0ZXJz
LT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBpc0ZpbGVVcGxvYWRTY3JpcHQpOwogICAgIHBhcmFt
ZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAg
bV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24i
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25I
b3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgIG1faG9zdC0+c2VuZENvbW1h
bmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE2OTgsNyArMTY5OCw3IEBAIHZvaWQgU2Vzc2lvbjo6c2VsZWN0
T3B0aW9uRWxlbWVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuCiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3Ms
IG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlX29y
KGVtcHR5U3RyaW5nKCkpKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVIYW5kbGUi
X3MsIGVsZW1lbnRJRCk7Ci0gICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2VsZWN0
T3B0aW9uRWxlbWVudCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9o
b3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2VsZWN0T3B0aW9uRWxlbWVudCJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFu
ZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92
ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3
MTQsNyArMTcxNCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhh
bmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZWxl
bWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShD
b21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vy
cm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzk4LDcgKzE3OTgsNyBAQCB2b2lkIFNlc3Npb246
OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUgogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9z
LCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJmdW5jdGlvbiJfcywgaXNFZGl0YWJsZVNjcmlwdCk7CiAgICAgcGFyYW1ldGVycy0+
c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKLSAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNv
bW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24iX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJl
c3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNw
b25zZU9iamVjdCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTgyNyw3ICsxODI3LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50Q2xlYXIo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MDMsNyArMTkwMyw3IEBA
IHZvaWQgU2Vzc2lvbjo6c2V0SW5wdXRGaWxlVXBsb2FkRmlsZXMoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFt
ZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlX29yKGVtcHR5U3RyaW5n
KCkpKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVIYW5kbGUiX3MsIGVsZW1lbnRJ
RCk7CiAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoImZpbGVuYW1lcyJfcywgV1RGTW92ZShmaWxl
bmFtZXMpKTsKLSAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRGaWxlc0Zvcklu
cHV0RmlsZVVwbG9hZCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2Up
IG11dGFibGUgeworICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInNldEZpbGVzRm9y
SW5wdXRGaWxlVXBsb2FkIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNl
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5y
ZXNwb25zZU9iamVjdCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNzYsNyArMjA3Niw3
IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBlbGVtZW50SUQsIHRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVz
ZXJQcm9tcHRzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZWxlbWVudElE
LCB0ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShD
b21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vy
cm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIFNlc3Npb246
OmdldFBhZ2VTb3VyY2UoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21w
dHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjQyLDcgKzIyNDIsNyBAQCB2b2lkIFNl
c3Npb246OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIFJlZlB0cjxKU09OOjpB
cnJheT4mJiBhcmd1bWVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNl
clByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2NyaXB0LCBh
cmd1bWVudHNBcnJheSA9IFdURk1vdmUoYXJndW1lbnRzQXJyYXkpLCBtb2RlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHNjcmlwdCwgYXJndW1lbnRzQXJyYXkgPSBXVEZNb3ZlKGFyZ3Vt
ZW50c0FycmF5KSwgbW9kZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChy
ZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMzNyw3ICsyMzM3LDcgQEAgdm9p
ZCBTZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihpbnQgeCwgaW50IHksIE1vdXNlQnV0
dG9uIGJ1dHRvbiwgTW91c2VJbnQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHBhcmFtZXRl
cnMtPnNldEFycmF5KCJtb2RpZmllcnMiX3MsIEpTT046OkFycmF5OjpjcmVhdGUoKSk7Ci0gICAg
bV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgicGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24iX3Ms
IFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgIG1faG9zdC0+c2VuZENvbW1hbmRU
b0JhY2tlbmQoInBlcmZvcm1Nb3VzZUludGVyYWN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiBy
ZXNwb25zZSkgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM3MSw3ICsyMzcxLDcg
QEAgdm9pZCBTZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoVmVjdG9yPEtleWJv
YXJkSW50ZXJhY3Rpb24+JiYgaW50ZXJhY3QKICAgICAgICAgaW50ZXJhY3Rpb25zQXJyYXktPnB1
c2hPYmplY3QoV1RGTW92ZShpbnRlcmFjdGlvbk9iamVjdCkpOwogICAgIH0KICAgICBwYXJhbWV0
ZXJzLT5zZXRBcnJheSgiaW50ZXJhY3Rpb25zIl9zLCBXVEZNb3ZlKGludGVyYWN0aW9uc0FycmF5
KSk7Ci0gICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgicGVyZm9ybUtleWJvYXJkSW50
ZXJhY3Rpb25zIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKKyAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKCJwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMiX3MsIFdU
Rk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNv
bW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9y
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdU
Rk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNDYzLDcgKzI0NjMsNyBAQCB2b2lkIFNlc3Npb246OmdldEFsbENvb2tpZXMoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNl
clByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yNTMxLDcgKzI1MzEsNyBAQCB2b2lkIFNlc3Npb246OmFkZENvb2tpZShjb25zdCBD
b29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29va2llID0gYnVpbHRBdXRvbWF0aW9uQ29va2llKGNv
b2tpZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENv
bW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgIGhhbmRsZVVzZXJQcm9tcHRzKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29va2llID0gYnVpbHRBdXRvbWF0
aW9uQ29va2llKGNvb2tpZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
cmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NTYsNyArMjU1Niw3IEBAIHZv
aWQgU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5k
bGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYW1l
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5k
UmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1
ODEsNyArMjU4MSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyhGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBoYW5kbGVVc2VyUHJv
bXB0cyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI2NTQsNyArMjY1NCw3IEBAIHZvaWQgU2Vzc2lvbjo6cGVyZm9ybUFjdGlvbnMoVmVjdG9y
PFZlY3RvcjxBY3Rpb24+PiYmIGFjdGlvbnNCeVRpY2ssIEZ1bmN0aW9uPHZvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVVc2VyUHJvbXB0cyhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBhY3Rpb25zQnlUaWNrID0gV1RGTW92ZShhY3Rpb25zQnlUaWNr
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFu
ZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBhY3Rpb25zQnlUaWNrID0gV1RGTW92ZShh
Y3Rpb25zQnlUaWNrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgzNSw3ICsyODM1LDcgQEAgdm9pZCBT
ZXNzaW9uOjpyZWxlYXNlQWN0aW9ucyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGUKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2
ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgiY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZSJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJl
c3BvbnNlKSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiY2FuY2VsSW50ZXJh
Y3Rpb25TZXF1ZW5jZSJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIHsKICAgICAgICAg
aWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENv
bW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTI4NTMsNyArMjg1Myw3IEBAIHZvaWQgU2Vzc2lvbjo6ZGlz
bWlzc0FsZXJ0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAgIG1faG9zdC0+c2VuZENvbW1hbmRU
b0JhY2tlbmQoImRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZyJfcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNw
b25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgiZGlz
bWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlhbG9nIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25z
ZSkgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg3MSw3ICsyODcxLDcgQEAgdm9p
ZCBTZXNzaW9uOjphY2NlcHRBbGVydChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhh
bmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKCJhY2NlcHRDdXJyZW50SmF2YVNjcmlwdERpYWxvZyJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6
OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZCgiYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2ciX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9u
c2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yODg5LDcgKzI4
ODksNyBAQCB2b2lkIFNlc3Npb246OmdldEFsZXJ0VGV4dChGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dz
aW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsK
LSAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJtZXNzYWdlT2ZDdXJyZW50SmF2YVNj
cmlwdERpYWxvZyJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9ob3N0
LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgibWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2ci
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjkxNSw3ICsyOTE1LDcgQEAgdm9p
ZCBTZXNzaW9uOjpzZW5kQWxlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4KICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFu
ZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZygidXNlcklucHV0Il9zLCB0ZXh0KTsKLSAgICBtX2hvc3QtPnNlbmRDb21t
YW5kVG9CYWNrZW5kKCJzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdCJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6
OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CisgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZCgic2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9tcHQiX3MsIFdURk1v
dmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1h
bmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1v
dmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
OTMxLDcgKzI5MzEsNyBAQCB2b2lkIFNlc3Npb246OnRha2VTY3JlZW5zaG90KHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBlbGVtZW50SUQsIHN0ZDo6b3B0aW9uYWw8Ym9vbAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBzY3JvbGxJbnRvVmlldywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgaGFuZGxlVXNlclByb21wdHMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBlbGVtZW50SUQsIHNjcm9sbEludG9WaWV3LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlNjI3MTlkZDEyNjg4YzMzNmY5Yzk2MjVkM2My
NWQ4MDMzMjQxMWI0Li4zMjljOTNjYTlmODkyOGFmZDhhODE2NDg3NWZlNzg5ZjIyNDI5NmRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOwotICAgIHJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZN
b3ZlKGF0dHJpYnV0ZXMpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRj
aChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJ
bml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIH0pOwogICAgIG1fc3RyZWFtQ29u
bmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiYmCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNwbGF5V2FzUmVj
b25maWd1cmVkKCkKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7Ci0gICAgcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSgpIHsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdv
cmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSB7CiAg
ICAgICAgIGFzc2VydElzQ3VycmVudChwcm90ZWN0ZWRUaGlzLT5tX3N0cmVhbVRocmVhZCk7CiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY29udGV4dC0+ZGlzcGxheVdhc1JlY29uZmlndXJlZCgp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcAppbmRleCA1ZTZhOGFh
MzJlZDM0MDgwMmRmOWMwYmMwYzhhYjFlMWYyYzJiMjhlLi5jOTJkMjEyMWU2ZjI5YTdhZGMwNDEw
NGFlNzY2NjkxNTM5ZmY0ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApA
QCAtNTcsNyArNTcsNyBAQCBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6On5SZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyUHJveHkoKSA9IGRlZmF1bHQ7CiAKIFVuaXF1ZVJlZjxDQVJpbmdC
dWZmZXI+IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6Y3JlYXRlUmluZ0J1ZmZlcigp
CiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVm
PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XShTaGFyZWRNZW1vcnkqIG1lbW9yeSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBm
b3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KSBtdXRhYmxlIHsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZVJlZjxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oU2hhcmVkTWVtb3J5KiBtZW1vcnksIGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJhbWVDb3VudCkg
bXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VDaGFuZ2VkKG1lbW9yeSwg
Zm9ybWF0LCBmcmFtZUNvdW50KTsKICAgICB9KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggMjA4NzM3
MzllMDUzNGRkYTZhNDgyMjI0MTRhYWM3MTY0NjQwOGQ2Yi4uMWNkZTc5YjExZDkwNzJkMTE5ZTE2
YWNlZWM4NmU0NWQwYTQ0ZTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICByZXR1cm47CiAKICAgICBtX2RpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2sgPSBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOwotICAgIG1fY2xpZW50
LT5yZXNwb25zZVJlY2VpdmVkKCp0aGlzLCByZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CisgICAgbV9jbGllbnQtPnJlc3BvbnNl
UmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNlLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gc2hv
dWxkQ29udGludWUpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsK
ICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6
Ok5vKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5j
cHAKaW5kZXggZDhkY2IxMTAxM2NlNzY3ZTg0M2Y5OTc2MGQ3NDk5YjliZTZjMGM3My4uMzUwZmJk
MjlhOWY1YWY4ZDRiN2I4ZDIwMDcwN2RjNTVhODc5Yzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3Bw
CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCwKIAogdm9pZCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUs
IGJvb2wgaXNFbmRlZCwgUmVtb3ZlQ29kZWRGcmFtZXNBc3luY1JlcGx5JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5yZW1vdmVDb2RlZEZyYW1lcyhz
dGFydCwgZW5kLCBjdXJyZW50VGltZSwgaXNFbmRlZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnJlbW92ZUNvZGVk
RnJhbWVzKHN0YXJ0LCBlbmQsIGN1cnJlbnRUaW1lLCBpc0VuZGVkLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gYnVmZmVyZWQgPSBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmJ1ZmZlcmVkKCktPnJhbmdlcygpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcmVkKSwgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT50b3RhbFRy
YWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBiMjMy
NTgyNzQ0YzE1ODYwZTkyNTNlYjNkYmU5MjQ0ZTkxOWU4NjFmLi5lYzEwOTI2YTUxMzhjY2E4NDg4
ODQ2NTQ1ZDkyODExMmU4YWE2N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTYyLDcgKzYyLDcgQEAg
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQogewogICAgIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAot
ICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgYXV0
byBkZWNvZGVycyA9IFdURk1vdmUobV9kZWNvZGVycyk7CiAgICAgICAgIGZvciAoYXV0byBkZWNv
ZGVyIDogZGVjb2RlcnMudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcAppbmRleCBmOTMzZjI3NzAyNDdiNTM4NDJkYTFjMzZjZWM4MWVjOGZj
ZmE3ZjMyLi5hNTQ0NWQ3ZmQ1Y2NiYjVhZDAwY2RlY2VjNWQwM2Y2MzM0YjVkMTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjbG9zZSgp
CiB7CiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5yZW1vdmVUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
LSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfV0gewogICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbbGF5ZXJzID0gV1RGTW92ZSht
X2xheWVycyldIHsgfSk7CiAgICAgfSk7CiB9CkBAIC04MCwxMCArODAsMTAgQEAgYm9vbCBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb24KIAogdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNy
ZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBoaWRlUm9vdExh
eWVyLCBzaXplLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAg
IGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
aWRlbnRpZmllciwgaGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkp
OwogICAgICAgICBhdXRvJiBsYXllclJlZmVyZW5jZSA9ICpsYXllcjsKLSAgICAgICAgbGF5ZXJS
ZWZlcmVuY2UuaW5pdGlhbGl6ZShoaWRlUm9vdExheWVyLCBzaXplLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVu
dGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11dGFibGUgewor
ICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklk
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92
ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbGF5ZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICAgICAgICAgICAgICBtX2xheWVycy5hZGQoaWRl
bnRpZmllciwgV1RGTW92ZShsYXllcikpOwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcgogCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6
OnJlbGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluUnVuTG9v
cChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXJdKCkgbXV0
YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyXSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9sYXllcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgICAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW2xheWVyID0gbV9sYXllcnMudGFrZShpZGVudGlmaWVyKV0geyB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMjQ5ZDVjNzc1
MDg4ODdjNTAyODVkOWQ3OTdmYjRhNTU4ZTEwYTBmOS4uYWVhNDA5MWE1YmIxNGI3MWE1OTE1MmZh
YTRmNDc4ZjVjYmQ0YzUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBpbmxpbmUgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRh
cwogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0VwaGVtZXJhbCgpKTsKIAogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CisgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
dGFzayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAgdGFzaygpOwogICAgIH0pOwogfQpAQCAt
MjI1LDcgKzIyNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZXN0
cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKENvbXBsZXRpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBudWxscHRyOwogICAgICAgICBwb3N0
VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTIzNSw3
ICsyMzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9wdWxhdGVN
ZW1vcnlTdG9yZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbAogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSAmJiBpczxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSkgewog
ICAgICAgICAgICAgYXV0byYgZGF0YWJhc2VTdG9yZSA9IGRvd25jYXN0PFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpOwogICAgICAgICAgICAg
aWYgKGRhdGFiYXNlU3RvcmUuaXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxl
KCkpIHsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cgogICAgIC8v
IEl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgb3JpZ2lucyB0byB0aGUgYmFja2dyb3VuZCBxdWV1ZSB3
aXRob3V0IGlzb2xhdGVkIGNvcHkgaGVyZSBiZWNhdXNlIHRoaXMgaXMgYW4gci12YWx1ZQogICAg
IC8vIGNvbWluZyBmcm9tIElQQy4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBvbmx5IGNvbnRhaW5z
IHN0cmluZ3Mgd2hpY2ggYXJlIHNhZmUgdG8gbW92ZSB0byBvdGhlciB0aHJlYWRzIGFzIGxvbmcK
ICAgICAvLyBhcyBub2JvZHkgb24gdGhpcyB0aHJlYWQgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhv
c2Ugc3RyaW5ncy4KLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzdGF0aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0aWNzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHN0YXRpc3RpY3MgPSBXVEZN
b3ZlKHN0YXRpc3RpY3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7CiAg
ICAgICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haQogICAgIGlmIChpc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NFcGhlbWVyYWwoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlE
LCB3ZWJQYWdlSUQsIHdlYlBhZ2VQcm94eUlELCBzY29wZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogCi0gICAgYXV0byBzdGF0dXNIYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwg
ZnJhbWVJRCwgd2ViUGFnZUlELCB3ZWJQYWdlUHJveHlJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3Rh
dHVzKSBtdXRhYmxlIHsKKyAgICBhdXRvIHN0YXR1c0hhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNv
bGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5
KCksIGZyYW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTdG9yYWdlQWNjZXNzU3RhdHVz
IHN0YXR1cykgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CiAgICAgICAgIGNh
c2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2VzczoKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1l
RG9tYWluIH0pOwpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChjb25zdCBSZWdpc3RyCiAg
ICAgaWYgKCFtX25ldHdvcmtTZXNzaW9uIHx8ICghbV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJ
bnRlcmFjdGlvbi5jb250YWlucyhzdWJGcmFtZURvbWFpbikgJiYgIU5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBv
c2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURv
bWFpbikpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCB0
b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7CiAKLSAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgbXV0
YWJsZSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1h
dGlvbkNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwg
c2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChi
b29sIHVzZXJEaWRHcmFudEFjY2VzcykgbXV0YWJsZSB7CiAgICAgICAgIGlmICh1c2VyRGlkR3Jh
bnRBY2Nlc3MpCiAgICAgICAgICAgICBncmFudFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoc3ViRnJh
bWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bjo6WWVzLCBzY29wZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcgogICAgICAgICByZXR1cm4gY2xlYXJJbk1lbW9yeUVwaGVtZXJhbChXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHBv
c3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZEdyYW5k
ZmF0aGVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgc2hvdWxkR3JhbmRmYXRoZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3Rv
cmUpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3M6OlllcykKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50IEJlZm9yZSBiZWluZyBjbGVhcmVkLCBtX3N0YXRp
c3RpY3NTdG9yZSBpcyBudWxsIHdoZW4gdHJ5aW5nIHRvIGdyYW5kZmF0aGVyIGRhdGEuIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmNwcAppbmRleCBiMjI4N2YyZjA4YWZlNDA5NTI2ZjhhYWI4N2U3ZjM2ZTUyYzUxYjJh
Li4zOWY2NTBhMjhmN2M3YjFlNzZiNjkzNjgwY2Y1ZmE5OTA4MzNlNDUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViSURCU2VydmVyOjpXZWJJREJTZXJ2ZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2UKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNv
bGF0ZWRDb3B5KCksIHNwYWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildICgp
IG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNw
YWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildICgpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpn
ZXRPcmlnaW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0
eU9yCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgbW9kaWZp
Y2F0aW9uVGltCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWNhdGlvblRp
bWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBtb2RpZmljYXRpb25UaW1l
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERl
bGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbkRhdGFzID0gb3JpZ2luRGF0YXMuaXNv
bGF0ZWRDb3B5KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2lu
RGF0YXMgPSBvcmlnaW5EYXRhcy5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKQEAgLTEwNSw3ICsx
MDUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjbwogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBvbGRPcmlnaW4gPSBvbGRPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIG5ld09yaWdpbiA9
IG5ld09yaWdpbi5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBvbGRPcmlnaW4gPSBvbGRPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIG5ld09yaWdpbiA9
IG5ld09yaWdpbi5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKQEAgLTM5OSw3ICszOTksNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6YWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFdlYkNvcmU6OlByb2Nlc3NJZAogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBw
cm90ZWN0ZWRDb25uZWN0aW9uID0gbWFrZVJlZlB0cihjb25uZWN0aW9uKSwgcHJvY2Vzc0lkZW50
aWZpZXJdIHsKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHByb3RlY3RlZENvbm5lY3Rpb24gPSBtYWtlUmVmUHRyKGNvbm5lY3Rpb24pLCBwcm9jZXNz
SWRlbnRpZmllcl0gewogICAgICAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gbV9jb25uZWN0
aW9uTWFwLmVuc3VyZShwcm90ZWN0ZWRDb25uZWN0aW9uLT51bmlxdWVJRCgpLCBbJl0gewogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PigqcHJv
dGVjdGVkQ29ubmVjdGlvbiwgcHJvY2Vzc0lkZW50aWZpZXIpOwogICAgICAgICB9KTsKQEAgLTQy
MSw3ICs0MjEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbm5lY3Rpb24u
cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpXSB7
CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb25u
ZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldIHsKICAgICAgICAgbV90ZW1wb3JhcnlC
bG9iUGF0aHNQZXJDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uSUQpOwogICAgICAgICBhdXRv
IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAudGFrZShjb25uZWN0aW9uSUQpOwogCkBAIC00
MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZp
bGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGMKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBmaWxl
UGF0aHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVBhdGhzKV0geworICAgIHBvc3RUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlv
bi51bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENvcHkoZmlsZVBhdGhzKV0gewog
ICAgICAgICBpZiAoIW1fY29ubmVjdGlvbk1hcC5jb250YWlucyhjb25uZWN0aW9uSUQpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYklEQlNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAogICAgIC8vIERpc3BhdGNo
IGxhc3QgdGFzayB0byBjbGVhbiB1cC4KLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uTWFwLmNsZWFyKCk7CiAK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiYjA1ZjBlZTUyNGY1
NTQ3MjJlM2VhYTdlZTVkZDFiMGUxYTRlNWYyLi5hYWE4NzMxZjllY2FhNmE4MWY1MjFkYzBlN2Y4
NDkyM2ZhYTgxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDkzLDcgKzQ5
Myw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3Vy
Y2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lv
bihtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0ZWQoKSkgewot
ICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVy
cyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CisgICAgICAgIHNlcnZlci53
aGVuSW1wb3J0SXNDb21wbGV0ZWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBleGlzdGluZ0xvYWRl
clRvUmVzdW1lXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNz
LT53ZWJQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzSWRlbnRpZmllcigpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcy0+c3dT
ZXJ2ZXJGb3JTZXNzaW9uKG1fc2Vzc2lvbklEKS5pc0ltcG9ydENvbXBsZXRlZCgpKTsKQEAgLTYz
Myw3ICs2MzMsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmVjb25u
ZWN0VG8oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZQogCiAgICAgQVNTRVJUKCFsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBCb2R5KCkpOwogCi0gICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByZWNvbm5lY3Rp
b25JZGVudGlmaWVyID0gV1RGTW92ZShwcmVjb25uZWN0aW9uSWRlbnRpZmllcildKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJlY29ubmVjdGlvbklkZW50aWZpZXIg
PSBXVEZNb3ZlKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyKV0oY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIHsKICAgICAgICAgaWYgKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICAgICAg
ICAgZGlkRmluaXNoUHJlY29ubmVjdGlvbigqcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIGVycm9y
KTsKICAgICB9OwpAQCAtOTE3LDcgKzkxNyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNvbnN0CiAg
ICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgIGZpbGUtPnByZXBh
cmVGb3JGaWxlQWNjZXNzKCk7CiAKLSAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQihibG9iVVJMcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZpbGVSZWZl
cmVuY2VzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIGZpbGVQYXRocykgbXV0YWJsZSB7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoYmxvYlVSTHMsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZp
bGVSZWZlcmVuY2VzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byYmIGZpbGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgZmls
ZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2Vzcygp
OwogCkBAIC0xMjExLDcgKzEyMTEsNyBAQCB1aW50NjRfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rpb248dm9pZAogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIHVpbnQ2NF90KT4mJiBjYWxsYmFjaykK
IHsKLSAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkudGFr
ZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgbWVzc2FnZXMsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBkZWxpdmVyeUNhbGxiYWNrKSBtdXRhYmxlIHsKKyAgICBuZXR3b3Jr
UHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkudGFrZUFsbE1lc3NhZ2VzRm9y
UG9ydChwb3J0LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBtZXNzYWdlcywgRnVuY3Rpb248dm9pZCgpPiYm
IGRlbGl2ZXJ5Q2FsbGJhY2spIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG1l
c3NhZ2VzKSwgbmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoV1RGTW92ZShkZWxpdmVyeUNhbGxi
YWNrKSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggZDMzZDg0YWFiZWU0NmVhNjMwNjc5YTlj
MzA5NGRiNWE3MzUzYzY4OC4uZjcxMjBhMWI0NTFiNDEwZDU5Mzk5ZTVjYmI4ODRmYWUzOTVkN2Ex
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpyZXN1bWUoKQogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOwogCi0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICFtX2NsaWVudCkgewogICAgICAgICAg
ICAgY2xlYXJTdHJlYW0oKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYzMzMzIwN2E3NjY1YjFi
M2U3NDZjOTY5MjkyNjRiYWZkZjhjY2M3OS4uODQ2YmRkNTNmMzQ2YjVmY2M0MjgwN2E5ZjNhNTQ2
MzIzMmI4MTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTE5MDMsNyArMTkwMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
CiAKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNldC0+Y29udGFpbnMoc2Vzc2lvbklEKSkgewog
ICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNl
c3Npb25TdG9yYWdlKSkgewotICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vz
c2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgdGhpcywgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgeworICAgICAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHNlc3Npb25J
RCwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxi
YWNrQWdncmVnYXRvciwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3Jd
KGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3N0b3JhZ2VNYW5hZ2Vy
U2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTE5MTMsNyArMTkxMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExv
Y2FsU3RvcmFnZU9yaWdpbnMoc2Vzc2lvbklELCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNrQWdncmVnYXRvciwgZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgICAgICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHNlc3Npb25JRCwg
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBzZXNzaW9uSUQsIGNhbGxiYWNr
QWdncmVnYXRvciwgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3JdKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5jb250YWlucyhzZXNzaW9uSUQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTE5MjUsNyArMTkyNSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAKICAgICBhdXRvIHBh
dGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFwYXRoLmlz
RW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRP
cmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0
YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCku
Z2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25J
RCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRl
RGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIGlmICghbV93ZWJJREJTZXJ2
ZXJzLmNvbnRhaW5zKHNlc3Npb25JRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MTM0LDcgKzIxMzQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogCiAgICAgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lID0gbmV0d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAK
LSAgICBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG5ldHdvcmtEYXRhVGFzayA9IG1ha2VSZWYobmV0d29ya0RhdGFUYXNrKV0gKFN0cmluZyYm
IGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSkgbXV0YWJsZSB7CisgICAgZG93
bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25z
ZSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG5ldHdv
cmtEYXRhVGFzayA9IG1ha2VSZWYobmV0d29ya0RhdGFUYXNrKV0gKFN0cmluZyYmIGRlc3RpbmF0
aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBB
bGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZG93
bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsKICAgICAgICAg
aWYgKGRlc3RpbmF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBSZWY8
V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlV2ViSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQo
c2Vzc2lvbklEKTsKICAgICB9CiAKLSAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklEXShjb25zdCBhdXRvJiBvcmlnaW4sIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7CisgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklEXShjb25zdCBhdXRvJiBvcmlnaW4s
IHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7CiAgICAgICAgIHJldHVybiBwcm90ZWN0ZWRUaGlz
LT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgb3JpZ2luKS0+cmVxdWVzdFNwYWNlT25C
YWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMjM4NjNiZjdlZjM3N2I0YWE0ZjljNzYxMzI4MDExODJmMTg2YmI1Mi4uMjA1MmFhYzZiM2Rl
NmU4NmNjNzllNzlmYjk3NDBjZGQwYzM2ZTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjI5LDcgKzIy
OSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIExPQURFUl9SRUxFQVNFX0xPRygicmV0
cmlldmVDYWNoZUVudHJ5OiBpc01haW5GcmFtZUxvYWQ9JWQiLCBpc01haW5GcmFtZUxvYWQoKSk7
CiAgICAgQVNTRVJUKGNhblVzZUNhY2hlKHJlcXVlc3QpKTsKIAotICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsK
ICAgICBpZiAoaXNNYWluRnJhbWVMb2FkKCkpIHsKICAgICAgICAgQVNTRVJUKG1fcGFyYW1ldGVy
cy5vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSk7CiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewpAQCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uCiAgICAgICAgIGF1dG8gZXJyb3IgPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+
dmFsaWRhdGVSZXNwb25zZShtX25ldHdvcmtMb2FkID8gbV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSA6IG9yaWdpbmFsUmVxdWVzdCgpLCBtX3Jlc3BvbnNlKTsKICAgICAgICAgaWYgKCFl
cnJvci5pc051bGwoKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFsaWRhdGVSZXNwb25zZSBy
ZXR1cm5lZCBhbiBlcnJvciAoZXJyb3IuZG9tYWluPSUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGVy
cm9yLmNvZGU9JWQpIiwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JD
b2RlKCkpOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+bV9uZXR3b3JrTG9hZCkKICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgfSk7CkBAIC03MzIsNyArNzMy
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjaGVjay1hLWdsb2JhbC1vYmplY3Qncy1l
bWJlZGRlci1wb2xpY3kKICAgICBpZiAoc2hvdWxkSW50ZXJydXB0V29ya2VyTG9hZEZvckNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kobV9yZXNwb25zZSkpIHsKICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HX0VSUk9SKCJkaWRSZWNlaXZlUmVzcG9uc2U6IEludGVycnVwdGluZyB3b3JrZXIgbG9h
ZCBkdWUgdG8gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IG1f
cmVzcG9uc2UudXJsKCldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdXJsID0gbV9yZXNwb25zZS51cmwoKV0gewogICAg
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbmV0d29ya0xvYWQpCiAgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIldvcmtlciBsb2FkIHdhcyBibG9ja2VkIGJ5IENy
b3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vz
c0NvbnRyb2wgfSk7CiAgICAgICAgIH0pOwpAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZVJlZGlyZWN0
aW9uSWZOZWVkZWQocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0OiBDaGVja2luZyByZWRpcmVj
dCB1c2luZyBOZXR3b3JrTG9hZENoZWNrZXIiKTsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNr
ZXItPmNoZWNrUmVkaXJlY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJl
cXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB0aGlzLCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IG1fbmV0d29y
a0xvYWRDaGVja2VyLT5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpLCBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2tSZWRpcmVjdGlvbihXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25z
ZSksIHRoaXMsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3koKSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
V1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1
ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpLmlzQ2FuY2VsbGF0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0OiBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24gcmV0
dXJuZWQgd2l0aCBhIGNhbmNlbGxhdGlvbiIpOwpAQCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5
OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5j
cHAKaW5kZXggNTJlYjViMDhmMTZjYmEyMzIxNDkwMjhjZGFhODE1MGFkMDRlNGE5Zi4uOGUzMDQ0
OGUwZDcyYzYxZjYwNTA2Zjc1ODU1OWI3OTBkNGE3YmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC01MCwxNCAr
NTAsMTQgQEAgTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVhbShOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFVSTCYmIHUKIAogdm9pZCBOZXR3b3JrU29ja2V0U3Ry
ZWFtOjpzZW5kRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpCiB7Ci0gICAgbV9pbXBsLT5wbGF0Zm9ybVNlbmQoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVy
XSAoYm9vbCBzdWNjZXNzKSB7CisgICAgbV9pbXBsLT5wbGF0Zm9ybVNlbmQoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50
aWZpZXJdIChib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0
U3RyZWFtOjpEaWRTZW5kRGF0YShpZGVudGlmaWVyLCBzdWNjZXNzKSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6c2VuZEhhbmRzaGFrZShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5LCB1aW50NjRfdCBpZGVudGlmaWVyKQogewotICAg
IG1faW1wbC0+cGxhdGZvcm1TZW5kSGFuZHNoYWtlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwg
aGVhZGVyRmllbGRQcm94eSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
aWRlbnRpZmllcl0gKGJvb2wgc3VjY2VzcywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSB7
CisgICAgbV9pbXBsLT5wbGF0Zm9ybVNlbmRIYW5kc2hha2UoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpLCBoZWFkZXJGaWVsZFByb3h5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGlkZW50aWZpZXJdIChib29sIHN1Y2Nlc3MsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFNlbmRIYW5k
c2hha2UoaWRlbnRpZmllciwgc3VjY2VzcywgZGlkQWNjZXNzU2VjdXJlQ29va2llcykpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKaW5kZXggZTRlODhhMTEzMTFhYmE0OWM2
NWU2YmM4NDc2N2ExMTg4NTg4ZGIzNi4uMDhmNjFhYmQ3YWFiNThkY2Y0ZGMzMWYzNjEwZGIxZDdk
ZWVhYjQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmFkZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlCiAgICAgICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkobG9j
YWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlKTsKIAotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2Fs
U3RvcmFnZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IG1fc3RvcmFnZU1hbmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFsmXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VNYW5hZ2VyPihXVEZNb3ZlKGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkpOwogICAgICAgICAgICAgfSk7CkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChtX3N0b3JhZ2VNYW5h
Z2VyUGF0aHMucmVtb3ZlKHNlc3Npb25JRCkpIHsKLSAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklEXSgpIHsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBzZXNzaW9uSURdKCkgewogICAgICAgICAgICAgaWYgKGF1dG8gc3RvcmFnZU1hbmFnZXIg
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgICAgIGZv
ciAoYXV0byBzdG9yYWdlQXJlYUlEIDogc3RvcmFnZU1hbmFnZXItPmFsbFN0b3JhZ2VBcmVhSWRl
bnRpZmllcnMoKSkKICAgICAgICAgICAgICAgICAgICAgbV9zdG9yYWdlQXJlYXMucmVtb3ZlKHN0
b3JhZ2VBcmVhSUQpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OnJlbW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG1fY29u
bmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb25JRCk7CiAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklEXSgpIHsKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5lY3Rpb25J
RF0oKSB7CiAgICAgICAgIFZlY3RvcjxTdG9yYWdlQXJlYUlkZW50aWZpZXI+IGlkZW50aWZpZXJz
VG9SZW1vdmU7CiAgICAgICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIHN0b3JhZ2VBcmVhXSA6
IG1fc3RvcmFnZUFyZWFzKSB7CiAgICAgICAgICAgICBpZiAoc3RvcmFnZUFyZWEpCkBAIC0xMzIs
NyArMTMyLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpoYW5kbGVM
b3dNZW1vcnlXYXJuaW5nKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dIHsKICAgICAgICAgZm9yIChhdXRvJiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFyZWFz
LnZhbHVlcygpKQogICAgICAgICAgICAgc3RvcmFnZUFyZWEtPmhhbmRsZUxvd01lbW9yeVdhcm5p
bmcoKTsKICAgICB9KTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+c3VzcGVu
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgbV9xdWV1ZS0+c3VzcGVu
ZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+Zmx1c2hMb2NhbFN0b3JhZ2UoKTsKICAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0U2Vz
c2lvblN0b3JhZ2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR2V0T3IKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vz
c2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFn
ZXJzLmdldChzZXNzaW9uSUQpOwogICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOwogCkBA
IC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0
b3JhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEZWxldGVDYWwKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChz
ZXNzaW9uSUQpOwogICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOwogCkBAIC0yMjEsNyAr
MjIxLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VGb3JP
cmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBjb3BpZWRPcmlnaW5EYXRhcyA9IGNyb3NzVGhy
ZWFkQ29weShvcmlnaW5EYXRhcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNvcGllZE9yaWdpbkRhdGFz
ID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbkRhdGFzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byogc3RvcmFn
ZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICAgICAgQVNT
RVJUKHN0b3JhZ2VNYW5hZ2VyKTsKIApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBHZXRPcmlnCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Np
b25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIg
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICAgICAgQVNTRVJUKHN0b3Jh
Z2VNYW5hZ2VyKTsKIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OmRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgdGlt
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHNlc3Npb25JRCwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byogc3RvcmFnZU1hbmFn
ZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICAgICAgQVNTRVJUKHN0
b3JhZ2VNYW5hZ2VyKTsKIApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwg
Y29waWVkT3JpZ2luRGF0YXMgPSBjcm9zc1RocmVhZENvcHkob3JpZ2luRGF0YXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
c2Vzc2lvbklELCBjb3BpZWRPcmlnaW5EYXRhcyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5EYXRh
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMu
Z2V0KHNlc3Npb25JRCk7CiAgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CiAKQEAgLTI3
NSw3ICsyNzUsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRwogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Np
b25JRCk7CiAgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CiAKQEAgLTI5MCw3ICsyOTAs
NyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW5hbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIG9sZE5hbQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIG9sZE5hbWUgPSBvbGROYW1lLmlzb2xhdGVkQ29weSgp
LCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgb2xk
TmFtZSA9IG9sZE5hbWUuaXNvbGF0ZWRDb3B5KCksIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFn
ZXJzLmdldChzZXNzaW9uSUQpOwogICAgICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOwogICAg
ICAgICBzdG9yYWdlTWFuYWdlci0+cmVuYW1lT3JpZ2luKG9sZE5hbWUsIG5ld05hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCmluZGV4IDU1MDE5MDk2Mzc2NDNkNjA3YzNhNjEzMmJjOGRjYTJlYmQxMGEz
MTUuLjAyOTUxZWViNzEzNDIxNTBmNTFmYWJmYjg4MzU1OWFiZDdkZWVhNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIEVuZ2luZTo6cmVhZENhY2hlKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmICghY2FjaGUtPmlzT3BlbmVkKCkpIHsKLSAgICAgICAgY2Fj
aGUtPm9wZW4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FjaGVJZGVu
dGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9y
PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2FjaGUtPm9wZW4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhw
ZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0NCw3
ICs2NDQsNyBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hEaXJlY3RvcnlFbnRyaWVzKGJvb2wgc2hvdWxk
Q29tcHV0ZVNpemUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogewogICAgIGF1dG8gdGFza0NvdW50
ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IGZvbGRlclBhdGhzKSB7Ci0gICAg
ICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lv
UXVldWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZENvbXB1dGVTaXpl
LCB0YXNrQ291bnRlcl0gKGF1dG8mJiBvcmlnaW4pIG11dGFibGUgeworICAgICAgICBDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRl
cl0gKGF1dG8mJiBvcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmICghb3JpZ2luKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hEaXJlY3RvcnlFbnRy
aWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiBFbmdpbmU6OmNyZWF0ZUNsZWFyVGFzayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgKyttX2NsZWFyVGFza0Nv
dW50ZXI7Ci0gICAgcmV0dXJuIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgcmV0dXJuIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgaWYgKCEtLW1fY2xlYXJUYXNr
Q291bnRlcikgewogICAgICAgICAgICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGlu
Z0NsZWFyQ2FsbGJhY2tzKTsKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRl
clBhdAogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGZvciAoYXV0byYgZm9s
ZGVyUGF0aCA6IGZvbGRlclBhdGhzKSB7Ci0gICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5G
cm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBmb2xkZXJQYXRo
XSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBt
dXRhYmxlIHsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9s
ZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBvcmlnaW4sIGNhbGxiYWNrQWdncmVnYXRvciwgZm9sZGVyUGF0aF0gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIWZvbGRlck9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAoZm9sZGVyT3JpZ2luLT50b3BPcmlnaW4gIT0gb3JpZ2luICYmIGZvbGRlck9yaWdp
bi0+Y2xpZW50T3JpZ2luICE9IG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApp
bmRleCA2OGNmZjMwZTdmZDE4NTYzMmMzYWY5Y2I3ZjYxNWM5MzI4NDBmMGMyLi4xN2NiY2ZiMjE0
Yzc2Y2U3ZTJhZjBlZmZiNmUwNzMxN2U0OGViNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBDYWNoZXM6OnN0b3JlT3JpZ2luKENvbXBs
ZXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIGVuY29kZXIgPDwgbV9vcmln
aW4uY2xpZW50T3JpZ2luLnByb3RvY29sOwogICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50
T3JpZ2luLmhvc3Q7CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4ucG9ydDsK
LSAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVuYW1lKG1fcm9vdFBhdGgp
LCBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUg
eworICAgIG1fZW5naW5lLT53cml0ZUZpbGUoY2FjaGVzT3JpZ2luRmlsZW5hbWUobV9yb290UGF0
aCksIERhdGEgeyBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9LCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvcikpOwogICAgIH0pOwog
fQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgQ2FjaGVzOjppbml0aWFsaXplU2l6ZSgpCiAgICAg
fQogCiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgbV9zdG9yYWdlLT50cmF2ZXJzZSh7IH0s
IHsgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvdGVjdGVkU3Rv
cmFnZSA9IG1ha2VSZWYoKm1fc3RvcmFnZSksIHNpemVdKGNvbnN0IGF1dG8qIHN0b3JhZ2UsIGNv
bnN0IGF1dG8mIGluZm9ybWF0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnRyYXZlcnNl
KHsgfSwgeyB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHByb3RlY3Rl
ZFN0b3JhZ2UgPSBtYWtlUmVmKCptX3N0b3JhZ2UpLCBzaXplXShjb25zdCBhdXRvKiBzdG9yYWdl
LCBjb25zdCBhdXRvJiBpbmZvcm1hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghc3RvcmFn
ZSkgewogICAgICAgICAgICAgaWYgKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIENhY2hlcyB3YXMgY2xlYXJlZCBzbyBsZXQn
cyBub3QgZ2V0IGluaXRpYWxpemVkLgpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgQ2FjaGVzOjpj
bGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAg
aWYgKG1fZW5naW5lKQogICAgICAgICBtX2VuZ2luZS0+cmVtb3ZlRmlsZShjYWNoZXNMaXN0Rmls
ZW5hbWUobV9yb290UGF0aCkpOwogICAgIGlmIChtX3N0b3JhZ2UpIHsKLSAgICAgICAgbV9zdG9y
YWdlLT5jbGVhcihTdHJpbmcgeyB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIG1fc3RvcmFnZS0+Y2xlYXIoU3RyaW5n
IHsgfSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkIENhY2hlczo6
cmVhZENhY2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2Fj
aGU+LCBFcnJvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUtPnJlYWRG
aWxlKGZpbGVuYW1lLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11
dGFibGUgeworICAgIG1fZW5naW5lLT5yZWFkRmlsZShmaWxlbmFtZSwgW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25z
dCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fZW5naW5l
KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9E
aXNrKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0KIAogICAgIG1faXNXcml0
aW5nQ2FjaGVzVG9EaXNrID0gdHJ1ZTsKLSAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xp
c3RGaWxlbmFtZShtX3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fZW5n
aW5lLT53cml0ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpLCBlbmNvZGVDYWNo
ZU5hbWVzKG1fY2FjaGVzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgbV9pc1dyaXRpbmdDYWNoZXNUb0Rpc2sgPSBmYWxzZTsKICAg
ICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9y
YWdlLCAiQ2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayBmYWlsZWQgd3JpdGluZyBjYWNoZXMgdG8g
ZGlzayB3aXRoIGVycm9yICVkIiwgc3RhdGljX2Nhc3Q8aW50PigqZXJyb3IpKTsKQEAgLTU1Miw3
ICs1NTIsNyBAQCB2b2lkIENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBj
b25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mbwogICAgIGlmICghbV9zdG9yYWdlKQog
ICAgICAgICByZXR1cm4gY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKIAotICAgIG1fc3RvcmFnZS0+
c3RvcmUoQ2FjaGU6OmVuY29kZShyZWNvcmRJbmZvcm1hdGlvbiwgcmVjb3JkKSwgeyB9LCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRTdG9yYWdlID0gbWFr
ZVJlZigqbV9zdG9yYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50IGVycm9y
KSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnN0b3JlKENhY2hlOjplbmNvZGUocmVjb3JkSW5m
b3JtYXRpb24sIHJlY29yZCksIHsgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBwcm90ZWN0ZWRTdG9yYWdlID0gbWFrZVJlZigqbV9zdG9yYWdlKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6
OndyaXRlUmVjb3JkIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgZXJyb3IpOwogICAgICAgICAgICAg
Y2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMTZjYzUwZjcyN2UzYjZjNDlm
MjFiZTE4OTQ5YjViMDAwYzFhZjE3OC4uNWIwZmU1YzNlZWY3NzIyZWZmOTZiOGJhYTY0ZjRjODAw
YjY1ZTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJh
bWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXks
IHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpbmZvID0g
V1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgbmV0d29ya1Byb2Nlc3MgPSBtYWtlUmVmKG5ldHdv
cmtQcm9jZXNzKCkpLCBzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgZnJhbWVJRCwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbl0oYXV0byByZWNvcmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7
CisgICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0eSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFn
ZUtleSwgbmV0d29ya1Byb2Nlc3MgPSBtYWtlUmVmKG5ldHdvcmtQcm9jZXNzKCkpLCBzZXNzaW9u
SUQgPSBtX3Nlc3Npb25JRCwgZnJhbWVJRCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0o
YXV0byByZWNvcmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFn
ZVRpbWluZ3MgPSB0aW1pbmdzOwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC00ODcsNyAr
NDg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24KICAgICBhdXRvIGNhY2hlRW50cnkgPSBt
YWtlRW50cnkocmVxdWVzdCwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CiAgICAg
YXV0byByZWNvcmQgPSBjYWNoZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAotICAg
IG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBE
YXRhJiBib2R5RGF0YSkgbXV0YWJsZSB7CisgICAgbV9zdG9yYWdlLT5zdG9yZShyZWNvcmQsIFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgRGF0YSYgYm9keURhdGEpIG11dGFibGUgewogICAg
ICAgICBNYXBwZWRCb2R5IG1hcHBlZEJvZHk7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJD
RSkKICAgICAgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gYm9keURhdGEudHJ5Q3JlYXRlU2hh
cmVkTWVtb3J5KCkpIHsKQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIENhY2hlOjp0cmF2ZXJzZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQog
CiAgICAgKyttX3RyYXZlcnNlQ291bnQ7CiAKLSAgICBtX3N0b3JhZ2UtPnRyYXZlcnNlKHJlc291
cmNlVHlwZSgpLCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRy
YXZlcnNlSGFuZGxlciA9IFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKV0gKGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCogcmVjb3JkLCBjb25zdCBTdG9yYWdlOjpSZWNvcmRJbmZvJiByZWNvcmRJbmZvKSBt
dXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnRyYXZlcnNlKHJlc291cmNlVHlwZSgpLCB7IH0sIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHJhdmVyc2VIYW5kbGVyID0gV1RG
TW92ZSh0cmF2ZXJzZUhhbmRsZXIpXSAoY29uc3QgU3RvcmFnZTo6UmVjb3JkKiByZWNvcmQsIGNv
bnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIHJlY29yZEluZm8pIG11dGFibGUgewogICAgICAgICBp
ZiAoIXJlY29yZCkgewogICAgICAgICAgICAgLS1tX3RyYXZlcnNlQ291bnQ7CiAgICAgICAgICAg
ICB0cmF2ZXJzZUhhbmRsZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNw
cAppbmRleCAzODExZmU3OWRjOGIwYjQxOGZjZWViYTcwODgzNmNkNTgzMmU2MWQwLi4yODc5MTUw
ZmVmMmFhZDg5OTcyNmY4YWFmZTM3ZTk5YzViMzMyZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ3VybC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgSU9DaGFubmVsOjp+SU9DaGFubmVsKCkKIAog
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgb2Zmc2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSB7CisgICAgcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBvZmZzZXQsIHNpemUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVT
eXN0ZW06OmZpbGVTaXplKG1fZmlsZURlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIWZpbGVTaXpl
IHx8ICpmaWxlU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKICAg
ICAgICAgICAgIERhdGEgZGF0YTsKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJT0NoYW5uZWw6OnJl
YWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSYgcXVldWUsIEZ1bmN0aW9u
PHZvaWQKIAogdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEm
IGRhdGEsIFdvcmtRdWV1ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoaW50IGVycm9yKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBxdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICBxdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBGaWxlU3lzdGVtOjpz
ZWVrRmlsZShtX2ZpbGVEZXNjcmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3Jp
Z2luOjpCZWdpbm5pbmcpOwogICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUobV9maWxlRGVzY3JpcHRvciwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAg
ZXJyID0gZXJyIDwgMCA/IGVyciA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcApp
bmRleCA1ZjM5ZTcyMmQwMWFmMGFjY2ZhNzg2MmRhMTg5OWY3MmMxY2JiMDMyLi4zZDc3OTVkZjIy
MmY4YjllMmZmMGNjZTgyMTA4NzE2MTYxYWE5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
R0xpYi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmNJblRo
cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlJiBxdWV1ZSwgRgogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVGhyZWFkOjpjcmVhdGUoIklP
Q2hhbm5lbDo6cmVhZFN5bmMiLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzaXplLCBxdWV1ZSA9IG1ha2VSZWYocXVldWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgi
SU9DaGFubmVsOjpyZWFkU3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgc2l6ZSwgcXVldWUgPSBtYWtlUmVmKHF1ZXVlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIHNpemVfdCBidWZm
ZXJTaXplID0gc3RkOjptaW4oc2l6ZSwgZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSk7CiAgICAgICAg
IHVpbnQ4X3QqIGJ1ZmZlckRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhi
dWZmZXJTaXplKSk7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiByZWFkQnVmZmVyID0gYWRvcHRH
UmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGJ1ZmZlckRhdGEsIGJ1ZmZlclNpemUsIGZh
c3RGcmVlLCBidWZmZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBkZWE3MjJjMGUw
YTJkODI0N2VhNzUxYzY2ZWI2NDQ1NWYxNDRhYjkzLi43NWMzYzAxNDQ0NzlmOTc3N2ZjZjZlY2U0
OWQ2Nzk1YTYyNjljNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTMzOCw3ICszMzgsNyBA
QCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9y
YWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBzeW5jaHJvbml6aW5nIGNhY2hlIik7CiAKLSAgICBiYWNr
Z3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldICgpIG11dGFibGUgeworICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAg
YXV0byByZWNvcmRGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogICAgICAg
ICBhdXRvIGJsb2JGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogCkBAIC02
NjYsNyArNjY2LDcgQEAgdm9pZCBTdG9yYWdlOjpyZW1vdmUoY29uc3QgS2V5JiBrZXkpCiAgICAg
aWYgKCFtYXlDb250YWluKGtleSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKIAogICAgIC8vIFdlIGNhbid0IHJlbW92ZSB0aGUga2V5IGZyb20gdGhlIEJsb29tIGZpbHRl
ciAoYnV0IHNvbWUgZmFsc2UgcG9zaXRpdmVzIGFyZSBleHBlY3RlZCBhbnl3YXkpLgogICAgIC8v
IEZvciBzaW1wbGljaXR5IHdlIGFsc28gZG9uJ3QgcmVkdWNlIG1fYXBwcm94aW1hdGVTaXplIG9u
IHJlbW92YWxzLgpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgU3RvcmFnZTo6cmVtb3ZlKGNvbnN0
IFZlY3RvcjxLZXk+JiBrZXlzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxlCiAg
ICAgICAgIGtleXNUb1JlbW92ZS51bmNoZWNrZWRBcHBlbmQoa2V5KTsKICAgICB9CiAKLSAgICBz
ZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGtleXNUb1JlbW92ZSA9IFdURk1vdmUoa2V5c1RvUmVtb3ZlKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7
CisgICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGtleXNUb1JlbW92ZSA9IFdURk1vdmUoa2V5c1RvUmVtb3Zl
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5c1RvUmVtb3ZlKQogICAgICAgICAg
ICAgZGVsZXRlRmlsZXMoa2V5KTsKIApAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgU3RvcmFnZTo6
ZmluaXNoUmVhZE9wZXJhdGlvbihSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9uKQogICAgICAg
ICBlbHNlIGlmICghcmVhZE9wZXJhdGlvbi5pc0NhbmNlbGVkKQogICAgICAgICAgICAgcmVtb3Zl
KHJlYWRPcGVyYXRpb24ua2V5KTsKIAotICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKTsKKyAgICAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAg
ICAgIEFTU0VSVChtX2FjdGl2ZVJlYWRPcGVyYXRpb25zLmNvbnRhaW5zKCZyZWFkT3BlcmF0aW9u
KSk7CiAgICAgICAgIG1fYWN0aXZlUmVhZE9wZXJhdGlvbnMucmVtb3ZlKCZyZWFkT3BlcmF0aW9u
KTsKQEAgLTkwNyw3ICs5MDcsNyBAQCB2b2lkIFN0b3JhZ2U6OmZpbmlzaFdyaXRlT3BlcmF0aW9u
KFdyaXRlT3BlcmF0aW9uJiB3cml0ZU9wZXJhdGlvbiwgaW50IGVycm9yKQogICAgIGlmICgtLXdy
aXRlT3BlcmF0aW9uLmFjdGl2ZUNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07CiAKICAgICBpZiAod3JpdGVPcGVyYXRpb24uY29tcGxldGlvbkhhbmRsZXIpCiAgICAg
ICAgIHdyaXRlT3BlcmF0aW9uLmNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKQEAgLTk3NCw3ICs5
NzQsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9u
U2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgIEFTU0VSVCh0cmF2ZXJzZUhhbmRs
ZXIpOwogICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKLSAg
ICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gbWFrZVVuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlv
bj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikp
OworICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBtYWtlVW5pcXVlPFRyYXZlcnNlT3Bl
cmF0aW9uPihSZWYgeyAqdGhpcyB9LCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRs
ZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0cmF2ZXJzZU9wZXJhdGlvblB0
cjsKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RGTW92ZSh0cmF2ZXJzZU9w
ZXJhdGlvblB0cikpOwogCkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZl
cnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRy
YXZlcgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsICZ0cmF2ZXJzZU9w
ZXJhdGlvbl0gewogICAgICAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uaGFuZGxlcihudWxscHRy
LCB7IH0pOwogCi0gICAgICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKKyAgICAgICAgICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgICAgICAg
ICAgbV9hY3RpdmVUcmF2ZXJzZU9wZXJhdGlvbnMucmVtb3ZlKCZ0cmF2ZXJzZU9wZXJhdGlvbik7
CiAgICAgICAgIH0pOwpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgdm9pZCBTdG9yYWdlOjpjbGVhcihj
b25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9u
SGEKICAgICAgICAgbV9ibG9iRmlsdGVyLT5jbGVhcigpOwogICAgIG1fYXBwcm94aW1hdGVSZWNv
cmRzU2l6ZSA9IDA7CiAKLSAgICBpb1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgp
XSAoKSBtdXRhYmxlIHsKKyAgICBpb1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBtb2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCld
ICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1Bh
dGhJc29sYXRlZENvcHkoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1Bh
dGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBj
b25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKICAgICAgICAgICAgIGF1dG8gZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0
b3J5UGF0aCwgZmlsZU5hbWUpOwpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBTdG9yYWdlOjpz
aHJpbmsoKQogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3Mp
IHNocmlua2luZyBjYWNoZSBhcHByb3hpbWF0ZVNpemU9JXp1IGNhcGFjaXR5PSV6dSIsIGFwcHJv
eGltYXRlU2l6ZSgpLCBtX2NhcGFjaXR5KTsKIAotICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7
CisgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0g
dGhpcy0+cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKTsKICAgICAgICAgU3RyaW5nIGFueVR5cGU7
CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoLCBhbnlUeXBlLCBbdGhp
c10oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9y
eVBhdGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU2ZjRjMTRhMWFkMjQ1OWY5YzJhYTA2
NzcxMTVkZDlmNDhjOGFiNDYuLjVjMTI1MWFmNDE2YzM2YTIxYTcxYmM4NGYxOGQwNGM5NTFhNjc5
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OnJlc3VtZSgpCiAKICAgICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0
aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oKm1fc2Vzc2lvbik7CiAgICAgaWYgKGNvY29h
U2Vzc2lvbi5kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpICYmIG1faXNGb3JN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpIHsKLSAgICAgICAgYXV0byBkaWREZXRl
cm1pbmVEZXZpY2VSZXN0cmljdGlvblBvbGljeUZvclVSTCA9IG1ha2VCbG9ja1B0cihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShCT09MIGlzQmxvY2tlZCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gZGlkRGV0ZXJtaW5lRGV2aWNlUmVzdHJpY3Rpb25Qb2xpY3lGb3JVUkwg
PSBtYWtlQmxvY2tQdHIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShCT09M
IGlzQmxvY2tlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlzQmxvY2tlZF0gewog
ICAgICAgICAgICAgICAgIGlmIChpc0Jsb2NrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgc2No
ZWR1bGVGYWlsdXJlKFJlc3RyaWN0ZWRVUkxGYWlsdXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRl
eCBkOWQyZDYzZGViYTkxNjk3NmM5Yjg3OTlkNjc2YTkyMjExYzAzNTRmLi43ZThmZGJiYTk5ZTUw
NzQyMGM5NTlmYWQ0NjE4YzI0YjBiMWEyZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0yMDgs
NyArMjA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICAgICAgbV9jbGVhckNhY2hl
RGlzcGF0Y2hHcm91cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwog
CiAgICAgYXV0byBncm91cCA9IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAuZ2V0KCk7Ci0gICAg
ZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZ3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1h
a2VCbG9ja1B0cihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmll
ZFNpbmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKKyAgICBkaXNwYXRjaF9ncm91cF9hc3luYyhncm91cCwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgbW9kaWZpZWRTaW5jZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gYWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFttb2RpZmllZFNpbmNlLCAmYWdncmVnYXRvcl0o
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24pIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNoZSA9
IHNlc3Npb24uY2FjaGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA3MTU3MDFhYTVhNTNmNWE3
ZWE4MzM3NzIxNzBkNTZmYWE1YTAxMjFjLi44ZmM3YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5OGEyZmU3
MzFiZTA3NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUmVmPEN1
cmxSZXF1ZXN0PiBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXMKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkU2Vu
ZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpCiB7Ci0gICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAq
dGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUoKSA9
PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
NDMsNyArMTQzLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkU2VuZERhdGEo
Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBD
dXJsUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlKQogewotICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNv
bXBsZXRlZCB8fCAhbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc0LDcgKzE3NCw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJs
UmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBS
ZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNh
bmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAh
aXNEb3dubG9hZCgpKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9v
bCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRSZWRpcmVjdEFzR0VUKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgYm8KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VE
aWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlKG1fcmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBOZWdv
dGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJs
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigpCiAgICAgICAgIGJsb2NrQ29va2llcygpOwog
I2VuZGlmCiAgICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSk7
Ci0gICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkaWRDaGFuZ2VDcmVkZW50aWFsLCBpc0Nyb3NzT3JpZ2luXShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIG5ld1JlcXVlc3QpIHsKKyAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGlkQ2hhbmdlQ3JlZGVudGlhbCwgaXNDcm9zc09yaWdp
bl0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSB7CiAgICAgICAgIGlmIChuZXdS
ZXF1ZXN0LmlzTnVsbCgpIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZykKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6dHJ5SHR0cEF1dGhlbnRpY2F0aW9uKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxl
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpO
bywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8s
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2hhbGxlbmdlXShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0zODIsNyArMzgyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0cnlIdHRwQXV0aGVu
dGljYXRpb24oQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGUKIAogdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjp0cnlQcm94eUF1dGhlbnRpY2F0aW9uKFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQogewotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hh
bGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSksIE5lZ290aWF0ZWRMZWdh
Y3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVu
Z2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxs
ZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBOZWdvdGlhdGVkTGVnYWN5
VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjaGFsbGVuZ2Vd
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENy
ZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNh
bmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnRyeVBy
b3h5QXV0aGVudGljYXRpb24oV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZwogCiB2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OnRyeVNlcnZlclRydXN0RXZhbHVhdGlvbihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxl
bmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFs
bGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2hhbGxlbmdl
XShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggMTc1MjgzMTMyYzBjYTkzZWI0ZTZjNGY3YTlj
NDY2ZTdiNmIyMjc2NC4uZDMxOWViMTk1MjA4OGM5YjIyMjgzM2VjNjU3ZjExYjA0NjYwMjExMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIC8vIEZJWE1FOiBUaGlz
IGNhbm5vdCBiZSBlbGltaW5hdGVkIHVudGlsIG90aGVyIGNvZGUgbm8gbG9uZ2VyIHJlbGllcyBv
biBSZXNvdXJjZVJlc3BvbnNlJ3MgTmV0d29ya0xvYWRNZXRyaWNzLgogICAgIG1fcmVzcG9uc2Uu
c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6
Y3JlYXRlKG1fbmV0d29ya0xvYWRNZXRyaWNzKSk7CiAKLSAgICBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3Bv
bnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkg
ewogICAgICAgICAgICAgY2xlYXJSZXF1ZXN0KCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC03
OTAsNyArNzkwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjphdXRoZW50aWNhdGUoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UpCiAgICAgaWYgKG1fc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSAmJiBwZXJzaXN0ZW50
Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm90ZWN0aW9uU3Bh
Y2UgPSBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCk7CiAgICAgICAgIG1fc2Vzc2lvbi0+bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCktPmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2Uo
cHJvdGVjdGlvblNwYWNlLCBtX2NhbmNlbGxhYmxlLmdldCgpLAotICAgICAgICAgICAgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXV0aENoYWxsZW5nZSA9IFdURk1vdmUo
Y2hhbGxlbmdlKV0gKENyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYXV0aENoYWxsZW5nZSA9
IFdURk1vdmUoY2hhbGxlbmdlKV0gKENyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAhbV9jbGllbnQpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJSZXF1ZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTgwNSw3
ICs4MDUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
Ojpjb250aW51ZUF1dGhlbnRpY2F0ZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5n
ZSkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjaGFsbGVuZ2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY2hhbGxlbmdlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7
CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBT
dGF0ZTo6Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjYW5jZWxBdXRoZW50aWNhdGlvbihjaGFs
bGVuZ2UpOwogICAgICAgICAgICAgY2xlYXJSZXF1ZXN0KCk7CkBAIC05OTEsNyArOTkxLDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVjdGlvbigpCiAgICAg
Y2xlYXJSZXF1ZXN0KCk7CiAKICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSht
X3Jlc3BvbnNlKTsKLSAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHdhc0Jsb2NraW5nQ29va2llcywgdXNlckFnZW50ID0gV1RGTW92ZSh1
c2VyQWdlbnQpXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIHsKKyAgICBtX2Ns
aWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92ZShyZXNwb25zZSksIFdURk1v
dmUocmVxdWVzdCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2FzQmxv
Y2tpbmdDb29raWVzLCB1c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCldKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgewogICAgICAgICBpZiAobmV3UmVxdWVzdC5pc051bGwo
KSB8fCBtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IDM0MTk0N2EzYjg4NThiNjZmNGYzNjQzNGRlNGI3NDg1
ZWNmMGYwYTIuLjM0ZTdhYjZlMzRkMWYxZmE4ZmEyNjg3MmFhMTVhN2E0YzBlZmFiYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVVRFBTb2NrZXQoTGliV2ViUlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVy
LCBjCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU2VydmVyVENQU29ja2V0KExpYldl
YlJUQ1NvY2tldElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0d29yazo6U29ja2V0
QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50
IG9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKG1fcnRjTmV0d29ya1RocmVhZC5Jc0N1cnJlbnQoKSk7
Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgaWRlbnRpZmllciwgYWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10gewor
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgaWRlbnRpZmllciwgYWRkcmVzcywgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10gewogICAg
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjE1LDcg
KzIxNSw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVDbGllbnRUQ1BTb2NrZXQo
TGliV2ViUlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmCiAgICAgfQogI2VuZGlmCiAKLSAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
ZGVudGlmaWVyLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MsIHVzZXJBZ2VudCA9IFdURk1v
dmUodXNlckFnZW50KS5pc29sYXRlZENvcHkoKSwgb3B0aW9uc10oKSBtdXRhYmxlIHsKKyAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlk
ZW50aWZpZXIsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRkcmVzcywgdXNlckFnZW50ID0gV1RGTW92
ZSh1c2VyQWdlbnQpLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzA3LDcgKzMw
Nyw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNv
bHZlcihMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nJiYgYWRk
cmVzcykKIHsKICAgICBpZiAoIWlzTWFpblJ1bkxvb3AoKSkgewotICAgICAgICBjYWxsT25NYWlu
UnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVy
LCBhZGRyZXNzID0gV1RGTW92ZShhZGRyZXNzKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBpZGVudGlmaWVyLCBhZGRyZXNzID0gV1RGTW92ZShhZGRyZXNzKS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNyZWF0ZVJlc29sdmVyKGlkZW50aWZpZXIs
IFdURk1vdmUoYWRkcmVzcykpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgTmV0d29ya1JUQ1By
b3ZpZGVyOjpjcmVhdGVSZXNvbHZlcihMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzdG9wUmVzb2x2ZXIoTGliV2ViUlRDUmVz
b2x2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc01haW5SdW5Mb29wKCkp
IHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaWRlbnRpZmllcl0geworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXJdIHsKICAgICAgICAg
ICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIHN0b3BSZXNvbHZlcihpZGVudGlmaWVyKTsKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5l
dHdvcmtSVENQcm92aWRlcjo6Y2xvc2VMaXN0ZW5pbmdTb2NrZXRzKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZAogICAgICAgICBmb3IgKGF1dG8gaWQgOiBsaXN0ZW5pbmdTb2NrZXRJ
ZGVudGlmaWVycykKICAgICAgICAgICAgIG1fc29ja2V0cy5nZXQoaWQpLT5jbG9zZSgpOwogCi0g
ICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm92aWRlciA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0
ZW5pbmdTb2NrZXRJZGVudGlmaWVycyA9IFdURk1vdmUobGlzdGVuaW5nU29ja2V0SWRlbnRpZmll
cnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Cisg
ICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm92aWRlciA9IFJlZiB7ICp0aGlzIH0sIGxpc3Rl
bmluZ1NvY2tldElkZW50aWZpZXJzID0gV1RGTW92ZShsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVy
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAg
ICAgICAgICAgIGlmIChwcm92aWRlci0+bV9jb25uZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAg
Zm9yIChhdXRvIGlkZW50aWZpZXIgOiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycykKICAgICAg
ICAgICAgICAgICAgICAgcHJvdmlkZXItPm1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OkxpYldlYlJUQ05ldHdvcms6OlNpZ25hbENsb3NlKGlkZW50aWZpZXIsIEVDT05O
QUJPUlRFRCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IGViZDBiZGM5NGM1M2YzNDVkZDg0N2ZiYjg5MGE1ZTEwNGFkMWM0NWUuLjc0ODRk
ZjNjZTczYTVjYjRiM2FlYmMwZGU4OWQ3NGExYWVhMjkxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUlRDRGF0YUNo
YW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5
KCkKIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6cmVnaXN0ZXJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCksIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLnVuaXF1ZUlEKCldKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlm
aWVyID0gY29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpZmllcigpLCBjb25u
ZWN0aW9uSUQgPSBjb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS51bmlxdWVJRCgp
XSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYWRk
KGlkZW50aWZpZXIsIGNvbm5lY3Rpb25JRCk7CiAgICAgfSk7CkBAIC00OSw3ICs0OSw3IEBAIHZv
aWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OnJlZ2lzdGVyQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrQ29uCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHk6OnVucmVnaXN0ZXJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogewotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIg
PSBjb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCldIHsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCld
IHsKICAgICAgICAgQVNTRVJUKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKICAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlKGlkZW50aWZp
ZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApp
bmRleCA3OTk2NzAzZjQxZmM1YjJmN2EwZWNkMzEyNjdhNDA0MzI3ZWE4MTU4Li43ZjJkODNiNDg1
YTdjNTUwOWIxZDkwNGU4OTI0ZWFkN2QzYWZlNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
aW52YWxpZGF0ZSgpCiAgICAgCiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAKLSAgICBtX2Nvbm5l
Y3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBt
dXRhYmxlIHsKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wbGF0
Zm9ybUludmFsaWRhdGUoKTsKICAgICB9KTsKIH0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlv
blNldDxTZW5kT3B0aW9uPgogICAgIH0KICAgICAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFk
ZCBhIGJvb2xlYW4gZmxhZyBzbyB3ZSBkb24ndCBjYWxsIHRoaXMgd2hlbiB3b3JrIGhhcyBhbHJl
YWR5IGJlZW4gc2NoZWR1bGVkLgotICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgIG1fY29ubmVjdGlv
blF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJs
ZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlbmRPdXRnb2luZ01lc3NhZ2VzKCk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01MTIsNyArNTEyLDcgQEAgVGltZW91dCBDb25uZWN0
aW9uOjp0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyhUaW1lb3V0IHRp
bWVvdXQpIGMKIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgVGlt
ZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAg
ICB0aW1lb3V0ID0gdGltZW91dFJlc3BlY3RpbmdJZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcodGlt
ZW91dCk7CiAKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgfQogCiAg
ICAgaWYgKCFNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjppc1ZhbGlkTWVzc2FnZSgqbWVzc2FnZSkp
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgbWVzc2FnZU5hbWUgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UobWVzc2FnZU5hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpA
QCAtODU4LDcgKzg1OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZU9ic2VydmVyKGNv
bnN0IE1lc3NhZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENv
bm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpCiB7Ci0gICAgbV9jb25uZWN0
aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0
YWJsZSB7CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29ubmVj
dGlvbkRpZENsb3NlKCk7CiAgICAgfSk7CiB9CkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UoKQogICAgIGlmIChtX2RpZENsb3NlT25Db25uZWN0
aW9uV29ya1F1ZXVlQ2FsbGJhY2spCiAgICAgICAgIG1fZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWVDYWxsYmFjayh0aGlzKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7
CiAgICAgICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGV4cGxpY2l0bHkgaW52YWxp
ZGF0ZWQgYmVmb3JlIGRpc3BhdGNoQ29ubmVjdGlvbkRpZENsb3NlIHdhcyBjYWxsZWQsCiAgICAg
ICAgIC8vIHRoZW4gdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBpbnZhbGlkIGhlcmUuCiAgICAgICAg
IGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxpZCgpKQpAQCAtOTgyLDcgKzk4Miw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogCiB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogewotICAgIGVuc3VyZU9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWVdKCkgbXV0YWJsZSB7CisgICAgZW5z
dXJlT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG1l
c3NhZ2VOYW1lXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0
aGlzLCBtZXNzYWdlTmFtZSk7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIENvbm5lY3Rpb246
OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGluY29taW5n
TWVzc2FnZQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc0luY29taW5nTWVz
c2FnZXNUaHJvdHRsaW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2VzKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCA2YzNlMjky
NGJiYWQyODVmYTIxYjE1YzU4NTE5MTkyMTFmYjZjOTU0Li45NWJhYTg2MmI0NzA4MDI1ZTk4MGU4
NTg3NjViZTA0MzY1Zjc0OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0yMjcsMTIgKzIyNywxMiBAQCBib29sIENv
bm5lY3Rpb246Om9wZW4oKQogICAgIHNldE1hY2hQb3J0UXVldWVMZW5ndGgobV9yZWNlaXZlUG9y
dCwgTUFDSF9QT1JUX1FMSU1JVF9MQVJHRSk7CiAKICAgICBtX3JlY2VpdmVTb3VyY2UgPSBhZG9w
dE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFD
SF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1
ZSgpKSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNv
dXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7Cisg
ICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIHJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0
X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKKyAgICBkaXNw
YXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRd
IHsKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICAgICAgbWFjaF9wb3J0X3VuZ3VhcmQobWFj
aF90YXNrX3NlbGYoKSwgcmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9wb3J0X2Nv
bnRleHRfdD4ocHJvdGVjdGVkVGhpcy5nZXQoKSkpOworICAgICAgICBtYWNoX3BvcnRfdW5ndWFy
ZChtYWNoX3Rhc2tfc2VsZigpLCByZWNlaXZlUG9ydCwgcmVpbnRlcnByZXRfY2FzdDxtYWNoX3Bv
cnRfY29udGV4dF90Pihwcm90ZWN0ZWRUaGlzLnB0cigpKSk7CiAjZW5kaWYKICAgICAgICAgbWFj
aF9wb3J0X21vZF9yZWZzKG1hY2hfdGFza19zZWxmKCksIHJlY2VpdmVQb3J0LCBNQUNIX1BPUlRf
UklHSFRfUkVDRUlWRSwgLTEpOwogICAgIH0pOwpAQCAtMzcwLDEzICszNzAsMTMgQEAgdm9pZCBD
b25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNvdXJjZSgpCiAgICAgbV9zZW5kU291cmNlID0gYWRv
cHRPU09iamVjdChkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01B
Q0hfU0VORCwgbV9zZW5kUG9ydCwgRElTUEFUQ0hfTUFDSF9TRU5EX0RFQUQgfCBESVNQQVRDSF9N
QUNIX1NFTkRfUE9TU0lCTEUsIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkpKTsK
ICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9IHRydWU7CiAKLSAgICBkaXNwYXRjaF9z
b3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNl
X3NldF9yZWdpc3RyYXRpb25faGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoIW1fc2VuZFNvdXJjZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2Ug
PSBmYWxzZTsKICAgICAgICAgcmVzdW1lU2VuZFNvdXJjZSgpOwogICAgIH0pOwotICAgIGRpc3Bh
dGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0geworICAgIGRpc3BhdGNoX3NvdXJjZV9z
ZXRfZXZlbnRfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoIW1fc2VuZFNvdXJjZSkKICAgICAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcAppbmRleCBmZTkyYmQ3MWM1ODNhNTdjMjcyYjdkYzMyNjQ4OGVhNWI1
YzA5ODhmLi5iMDQwNjg2MDIwMmMwYjU4YWIyMDY1MjA1NDVhMWRmZTZlMzg5OWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApA
QCAtNTUwLDExICs1NTAsMTEgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShV
bml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8
fCBlcnJubyA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQogICAgICAgICAgICAgbV9w
ZW5kaW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0
cHV0TWVzc2FnZSkpOwotICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9z
b2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlv
bikgLT4gZ2Jvb2xlYW4geworICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQo
bV9zb2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIChHSU9Db25kaXRpb24gY29uZGl0
aW9uKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9f
T1VUKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdPdXRwdXRNZXNzYWdl
KTsKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCB0aGUgbW9uaXRvciBmcm9t
IHRoaXMgbGFtYmRhLCBiZWNhdXNlIHN0b3AgZGVzdHJveXMgdGhlIGxhbWJkYS4KLSAgICAgICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewog
ICAgICAgICAgICAgICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RvcCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gV1RGTW92ZShtX3BlbmRpbmdPdXRw
dXRNZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2lzQ29ubmVjdGVkKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAK
aW5kZXggMDRhZjhkYWI5NjdjMGY0NTI2YjA3NWM0NGFmMGVjODgwODZmYzM3MS4uYWZmMzlmYzEw
MmVkMDQ3MTIxZjNmMWMyYWZhODg5ZTA4MjIyODE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMjMzLDE0ICsyMzMsMTQgQEAg
dm9pZCBDb25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcigpCiAKIHZvaWQgQ29ubmVjdGlvbjo6
aW52b2tlUmVhZEV2ZW50SGFuZGxlcigpCiB7Ci0gICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBtX2Nvbm5l
Y3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XSB7CiAgICAgICAgIHJlYWRFdmVudEhhbmRsZXIoKTsKICAgICB9KTsKIH0KIAogdm9pZCBDb25u
ZWN0aW9uOjppbnZva2VXcml0ZUV2ZW50SGFuZGxlcigpCiB7Ci0gICAgbV9jb25uZWN0aW9uUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9XSB7CiAgICAgICAgIHdyaXRlRXZlbnRIYW5kbGVyKCk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlNWNmZTBkYTcxYzEy
OTkyYzk2Njg2MDBmYzc3OWRlZWJmNzJiMTViLi5iMTdlZTQzYTI0ZWIxOTZjMjE3ZDc2MjNmNzRk
ZDY2OWE1MWFmNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTk4Nyw3ICs5ODcsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVy
KToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAo
cmVjZWl2ZXIubmFtZSwgcmVjZWl2ZV92YXJpYW50KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
e1xuJykKICAgICAgICAgaWYgbm90IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VO
VEVEX1JFQ0VJVkVSX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1f
QVRUUklCVVRFKSk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTtcbicpCiAKICAgICAgICAgcmVzdWx0ICs9
IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2Ug
aW4gYXN5bmNfbWVzc2FnZXNdCiAKQEAgLTEwMTEsNyArMTAxMSw3IEBAIGRlZiBnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdib29sICVz
OjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
cilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0
cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCd7XG4nKQogICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShO
T1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07XG4n
KQogICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1l
c3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCiAgICAgICAgIGlmIHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpXG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdl
TWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBjODJmMDU0YTMyNWIwNjY1MzMyYzlmNzBlN2U1Zjc2
YmM3MjU5MmJkLi5jYWI1NTlmNmU1N2M4NTdiOTM0Mzc1ZWFiZTU5YTdiYjQ5YWVhYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNz
YWdlTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBUZXN0V2l0aElmTWVzc2FnZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAg
UmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpM
b2FkVVJMOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhJZk1lc3NhZ2U6OmxvYWRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VSZWNlaXZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRh
TWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCAxZTE5ODcxMDFhNDY0MWQ5NjBhMGNmZDYxY2ZhMzBl
YzczNmFjZmEzLi5hOWIwNzg5YzU5YWE5YTRlNWJiYjIxNTlhNWQxZWMwM2U1ODY3MjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VE
YXRhTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAg
UmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhOjpuYW1lKCkp
CiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1h
Z2VEYXRhOjpTZW5kSW1hZ2VEYXRhPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhJbWFnZURhdGE6OnNlbmRJbWFnZURhdGEpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY28KIAogYm9vbCBUZXN0
V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQogewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
OworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0
YTo6bmFtZSgpKQogICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0YT4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
KnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoSW1hZ2VEYXRhOjpyZWNlaXZlSW1hZ2VEYXRh
KTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExl
Z2FjeVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBiMWYxM2MyYjMzOTA2ZGMxNDk3
ZGQxN2U3ZWFhMjEyMTJjMGMwNDBiLi5kZmY3MjkxYTViZGMwNDdkNDFlMDRkYTllMjE4ZWU1NGE0
YTc1MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VSZWNl
aXZlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgVGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMOjpuYW1lKCkpCiAgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkxvYWRVUkw+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpsb2FkVVJMKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMTQwLDcgKzE0
MCw3IEBAIHZvaWQgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjCiAKIGJvb2wgVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNyZWF0ZVBsdWdpbj4oY29ubmVj
dGlvbiwgZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OmNyZWF0ZVBsdWdpbik7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IGQ1NmIw
OTM0MjZhMGM3ZDM5ZDRlMmE4Y2JjMmU2ZTNkYjlhMWE5ODkuLjE5OWYzYzMxZjVjMDRkYzliOGY3
YTc4YzIzNTI1NTExMTRjODM0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdl
UmVjZWl2ZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IFRlc3RXaXRoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhv
cmU6OlNlbmRTZW1hcGhvcmU6Om5hbWUoKSkKICAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6c2VuZFNlbWFwaG9yZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFRlc3RX
aXRoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjbwogCiBib29sIFRlc3RXaXRoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhp
cyB9OwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
U2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBo
b3JlPihjb25uZWN0aW9uLCBkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhT
ZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKaW5k
ZXggYjc0Y2RmMTU4ZjJkY2U3MWRiYzg4ZWY5MjJiZGI2YzIzODlkOGRiYy4uY2RjMWVmMTYxMGRm
Y2ZkYTNiZTI3ODdlYzgzMzM5ODM2ODU4YTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHZvaWQgVGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRU
aGlzIHsgKnRoaXMgfTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKQogICAgICAg
ICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZl
cjo6U2VuZFN0cmVhbUJ1ZmZlcj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
U3RyZWFtQnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAKaW5k
ZXggZTNkYmE5NWZmNmUwOTk5ZmNlMGNlM2U5Zjg2YTYyZGI3ZDI5MjQ2Yy4uNDRhNjZkOTdlZDdh
NDFlNzE2YTJiZjk4ZWQzNTU0MWU1NzA1OTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNs
YXNzTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB2b2lkIFRlc3RXaXRoU3VwZXJjbGFzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMg
eyAqdGhpcyB9OwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTDo6bmFtZSgpKQogICAgICAgICByZXR1cm4gSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OkxvYWRVUkw+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OmxvYWRVUkwpOwogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBUZXN0V2l0aFN1
cGVyY2xhc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWMKIAogYm9vbCBUZXN0V2l0aFN1cGVyY2xhc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBl
cmNsYXNzOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkKICAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RT
eW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhTdXBlcmNsYXNzOjp0ZXN0U3luY01lc3NhZ2UpOwogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3Vz
TWVzc2FnZTo6bmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdl
UmVjZWl2ZXIuY3BwCmluZGV4IDNkMjE4YWEwODg3MjEwMjUxYTYwMzZhYWFlYzJmMWFjN2M0ZDNj
NTYuLjQyOTgzYzE3NTQ5Y2Q3NWEyNThjNmMyMDNmNWRhY2EyODJkYjM4MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
TWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
KyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkVVJMOjpuYW1l
KCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6TG9hZFVSTD4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRob3V0QXR0cmlidXRlczo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAg
LTE0MCw3ICsxNDAsNyBAQCB2b2lkIFRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OgogCiBib29sIFRlc3RXaXRo
b3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQogewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
OworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNyZWF0ZVBsdWdp
bjo6bmFtZSgpKQogICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNyZWF0ZVBsdWdpbj4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
KnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6Y3JlYXRlUGx1Z2lu
KTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXgg
OTk1Mzk3ZmNkZmU1M2YzOWJjOTAyYzJmZTY3ZWE0ZDU4MGYwZWM0NC4uMGMzMjNiYTZjY2VkODky
YWVkMzQ2ZThlODFkMmU5NzdkMDQzYmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBU
aHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uCiAgICAgICAgIG1fYXR0cmlidXRlcy5uZWVkc1Jlc2l6
ZSA9ICF2aWV3cG9ydFNpemUuaXNFbXB0eSgpOwogICAgIH0KIAotICAgIG1fY29tcG9zaXRpbmdS
dW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIG1fc2NlbmUgPSBhZG9w
dFJlZihuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHRoaXMpKTsKICAgICAgICAgbV9uYXRp
dmVTdXJmYWNlSGFuZGxlID0gbV9jbGllbnQubmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0
aW5nKCk7CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6aW52
YWxpZGF0ZSgpCiAgICAgbV9zY2VuZS0+ZGV0YWNoKCk7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxv
b3AtPnN0b3BVcGRhdGVzKCk7CiAgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3ItPmludmFsaWRh
dGUoKTsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
ewogICAgICAgICBpZiAoIW1fY29udGV4dCB8fCAhbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9zY2VuZS0+cHVyZ2VHTFJlc291
cmNlcygpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzdXNw
ZW5kKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN1c3Bl
bmQoKTsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
ewogICAgICAgICBtX3NjZW5lLT5zZXRBY3RpdmUoZmFsc2UpOwogICAgIH0pOwogfQpAQCAtMTMx
LDcgKzEzMSw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZXN1bWUoKQogICAgIGlmICgt
LW1fc3VzcGVuZGVkQ291bnQgPiAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbXBvc2l0
aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBtX3NjZW5lLT5z
ZXRBY3RpdmUodHJ1ZSk7CiAgICAgfSk7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnJlc3Vt
ZSgpOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpmb3JjZVJl
cGFpbnQoKQogICAgIC8vIEZJWE1FOiBFbmFibGUgdGhpcyBmb3IgV1BFIG9uY2UgaXQncyBwb3Nz
aWJsZSB0byBkbyB0aGVzZSBmb3JjZWQgdXBkYXRlcwogICAgIC8vIGluIGEgd2F5IHRoYXQgZG9l
c24ndCBzdGFydmUgb3V0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIGJ1ZmZlcnMuCiAjaWYgUExB
VEZPUk0oR1RLKSAmJiAhVVNFKFdQRV9SRU5ERVJFUikKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICByZW5kZXJMYXllclRyZWUoKTsK
ICAgICB9KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggMTkz
MjBkZDUzNDQ2ZjQ2MmJkZmRkNzJiZjQwMGQzZDAwMmJiYWQ4My4uZDA2NGU0MjIxOTA3NGU5MTNk
NWRkZWQ2OTAwM2RlZmZjMDk0YjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3Bw
CkBAIC0xMTUsNyArMTE1LDcgQEAgTWVkaWFGb3JtYXRSZWFkZXI6Ok1lZGlhRm9ybWF0UmVhZGVy
KEFsbG9jYXRvciYmIGFsbG9jYXRvcikKIAogdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6c3RhcnRP
bk1haW5UaHJlYWQoTVRQbHVnaW5CeXRlU291cmNlUmVmIGJ5dGVTb3VyY2UpCiB7Ci0gICAgZW5z
dXJlT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBi
eXRlU291cmNlID0gcmV0YWluUHRyKGJ5dGVTb3VyY2UpXSgpIG11dGFibGUgeworICAgIGVuc3Vy
ZU9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBieXRl
U291cmNlID0gcmV0YWluUHRyKGJ5dGVTb3VyY2UpXSgpIG11dGFibGUgewogICAgICAgICBwYXJz
ZUJ5dGVTb3VyY2UoV1RGTW92ZShieXRlU291cmNlKSk7CiAgICAgfSk7CiB9CkBAIC0xNTMsMTUg
KzE1MywxNSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0YWlu
UHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBNZWRpYVRyYWNrUmVh
ZGVyOjpzdG9yYWdlUXVldWUoKS5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfSk7
CiAKLSAgICBwYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oU291cmNlQnVmZmVyUGFyc2VyOjpJ
bml0aWFsaXphdGlvblNlZ21lbnQmJiBpbml0aWFsaXphdGlvblNlZ21lbnQpIHsKKyAgICBwYXJz
ZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9u
U2VnbWVudCYmIGluaXRpYWxpemF0aW9uU2VnbWVudCkgewogICAgICAgICBkaWRQYXJzZVRyYWNr
cyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCksIG5vRXJyKTsKICAgICB9KTsKIAotICAg
IHBhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0odWludDY0X3QgZXJyb3JDb2RlKSB7Cisg
ICAgcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKHVpbnQ2NF90IGVycm9yQ29kZSkgewog
ICAgICAgICBkaWRQYXJzZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBw
YXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CisgICAgcGFyc2VyLT5zZXRE
aWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQs
IGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURhdGEo
V1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAKQEAg
LTE3MSw5ICsxNzEsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2Uo
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgIG1fZHVyYXRpb24g
PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CiAgICAgbV90cmFja1JlYWRlcnMuY2xlYXIoKTsK
IAotICAgIHJlYWRlclF1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYnl0ZVNvdXJjZSA9IG1fYnl0ZVNvdXJjZSwgcGFyc2VyID0gcGFyc2VyLnJl
bGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgcmVhZGVyUXVldWUoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ5dGVTb3VyY2UgPSBtX2J5dGVT
b3VyY2UsIHBhcnNlciA9IHBhcnNlci5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFibGUgewogICAg
ICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShieXRlU291cmNlKSk7Ci0gICAgICAgIE1l
ZGlhVHJhY2tSZWFkZXI6OnN0b3JhZ2VRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHBhcnNlciA9IFdURk1vdmUocGFyc2VyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgTWVkaWFUcmFja1JlYWRlcjo6c3RvcmFnZVF1ZXVlKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXJzZXIgPSBXVEZNb3ZlKHBhcnNl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBmaW5pc2hQYXJzaW5nKFdURk1vdmUocGFyc2Vy
KSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggZGM4ZTQwMzkyYmE5
ZWU1MDFlZWRmMjg1ZGZhN2Y0ZjZmOWM0OWI1Yy4uMmFjNTNiZGRlN2QxNjk4ZDljY2Q4YWQ2MTU4
NThjYmRlNDZjNDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgc3RhdGlj
IFdURjo6U3RyaW5nIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKGNvbnN0
IE1hcHBlZERhdGEmIG1hcHAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRl
bnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
ZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9y
ZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBm
YWxzZSk7CiAgICAgICAgIGF1dG8gbGVnYWN5UGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBh
dGgsIGlkZW50aWZpZXIsIHRydWUpOwogICAgICAgICBpZiAoZmlsZUV4aXN0cyhsZWdhY3lQYXRo
KSkgewpAQCAtNTEwLDcgKzUxMCw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1
cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKIHZvaWQgQ29u
dGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KT4gY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3Jl
YWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmVQ
YXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9yZWFkUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc3RvcmVQYXRoID0gbV9zdG9y
ZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcHJlZml4ID0gY29uc3RydWN0
ZWRQYXRoUHJlZml4KGZhbHNlIC8qbGVnYWN5Ki8pOwogICAgICAgICBhdXRvIHByZWZpeExlbmd0
aCA9IHByZWZpeC5sZW5ndGgoKTsKICAgICAgICAgYXV0byBsZWdhY3lQcmVmaXggPSBjb25zdHJ1
Y3RlZFBhdGhQcmVmaXgodHJ1ZSAvKmxlZ2FjeSovKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCB2b2lk
IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLAogICAgIGlmICghcGFyc2VkUnVsZXMuaGFzX3ZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBwYXJzZWRSdWxlcy5lcnJv
cigpKTsKICAgICAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
IGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IHBhcnNlZFJ1bGVzLnZh
bHVlKCkuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29w
eSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKKyAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNv
biA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFsdWUo
KS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVu
dGlmaWVyLCBmYWxzZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBjb21waWxlZFRvRmlsZShX
VEZNb3ZlKGpzb24pLCBXVEZNb3ZlKHBhcnNlZFJ1bGVzKSwgcGF0aCk7CkBAIC01NjEsNyArNTYx
LDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcmVtb3ZlUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVu
dGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9y
ZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb21w
bGV0ZSA9IFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjplcnJvcl9jb2RlIGVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV1RGTW92ZShlcnJvcildICgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKQEAgLTU5
OCw3ICs1OTgsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVu
dFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQogdm9pZCBDb250ZW50UnVsZUxp
c3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3JlYWRRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBz
dG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBj
b21wbGV0ZSA9IFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV1RGOjpTdHJpbmcgc291
cmNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNvdXJjZSA9IHNvdXJjZS5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc291cmNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5jcHAKaW5kZXggMGYxODJlY2U1MThlNzc3ZTQwYWZhNjU3MjFkMDU2M2FhNThlNWMwZC4uNWM3
OWIzMDg4MWRhOTlkY2NhZjU0Yjk3ZjNhNzkwMDY4ODUzZWZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2kKICAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3Jl
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvJiBjb29r
aWVNYW5hZ2VyID0gbV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFu
YWdlcigpOwotICAgIGNvb2tpZU1hbmFnZXIuZ2V0QWxsQ29va2llcyhtX293bmluZ0RhdGFTdG9y
ZS0+c2Vzc2lvbklEKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUgeworICAgIGNvb2tpZU1hbmFnZXIuZ2V0
QWxsQ29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYgY29va2llcykgbXV0YWJs
ZSB7CiAgICAgICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhXVEZNb3ZlKGNvb2tpZXMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CkBAIC05MSwxNCArOTEsMTQgQEAg
dm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXNGb3JVUkwoV1RGOjpVUkwmJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG8KICAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvJiBjb29raWVNYW5h
Z2VyID0gbV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigp
OwotICAgIGNvb2tpZU1hbmFnZXIuZ2V0Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lv
bklEKCksIHVybCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgY29va2llTWFuYWdlci5nZXRDb29r
aWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdXJsLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUg
ewogICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoV1RGTW92ZShjb29raWVzKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCiB2b2lkIEhUVFBDb29raWVTdG9y
ZTo6c2V0Q29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmIGNvb2tpZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBmaWx0ZXJBcHBC
b3VuZENvb2tpZXMoV1RGTW92ZShjb29raWVzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGF1dG8mJiBhcHBCb3VuZENvb2tpZXMpIG11dGFibGUgeworICAgIGZpbHRlckFwcEJvdW5k
Q29va2llcyhXVEZNb3ZlKGNvb2tpZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChh
dXRvJiYgYXBwQm91bmRDb29raWVzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX293bmluZ0Rh
dGFTdG9yZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byYgY29va2llTWFuYWdl
ciA9IG1fb3duaW5nRGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvb2tpZU1hbmFnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CmluZGV4IDYyYTUwMzE0OGY1OGIxODJjZWE0ZDAxOGIyZjJhMTFjNjk5ODY0OTguLjE5OTYzMDMy
OGE1ODdiZTExM2ViZTUyMzdhMGVmOGFmZmY3M2UzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtNDg0LDcgKzQ4NCw3IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiAKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaWNvblVSTCA9IGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VVUkwgPSBw
YWdlVVJMLmlzb2xhdGVkQ29weSgpLCBhbGxvd0RhdGFiYXNlV3JpdGUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV93b3Jr
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWNv
blVSTCA9IGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVk
Q29weSgpLCBhbGxvd0RhdGFiYXNlV3JpdGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBpZiAobV9kYi5pc09w
ZW4oKSkgewpAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKIHsKICAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYWdlVVJMID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKSwgYWxsb3dEYXRhYmFzZVdyaXRlLCB0aW1lc3RhbXAgPSBXYWxsVGltZTo6
bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYWdlVVJMID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKSwgYWxsb3dEYXRhYmFzZVdyaXRlLCB0aW1lc3RhbXAgPSBXYWxsVGltZTo6
bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2
NF90PiBpY29uSUQ7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0YTsKICAgICAgICAg
U3RyaW5nIGljb25VUkw7CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6Omxv
YWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0
ZQogICAgICAgICAgICAgICAgIHVwZGF0ZUljb25UaW1lc3RhbXAoaWNvbklELnZhbHVlKCksIHRp
bWVzdGFtcC5zZWNvbmRzQXM8aW50NjRfdD4oKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhcnRQ
cnVuZVRpbWVyKCk7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpY29uVVJMID0gV1RGTW92ZShpY29uVVJMKSwg
aWNvbkRhdGEgPSBXVEZNb3ZlKGljb25EYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWNvblVSTCA9
IFdURk1vdmUoaWNvblVSTCksIGljb25EYXRhID0gV1RGTW92ZShpY29uRGF0YSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoaWNvblVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02MjYsNyAr
NjI2LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgY29uc3QgdWludDhfdCogaWNvbkQKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1lcigpOwotICAgICAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVz
dWx0LCBpY29uVVJMID0gaWNvblVSTC5pc29sYXRlZENvcHkoKSwgcGFnZVVSTCA9IHBhZ2VVUkwu
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlc3VsdCwgaWNvblVSTCA9IGljb25VUkwu
aXNvbGF0ZWRDb3B5KCksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0lj
b25VUkxNYXBMb2NrIH07CiAgICAgICAgICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNl
dChwYWdlVVJMLCBpY29uVVJMKTsKQEAgLTYzOSw3ICs2MzksNyBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90
KiBpY29uRAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsgaWNvbkRhdGEsIGlj
b25EYXRhU2l6ZSB9OwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpY29uVVJMID0gaWNvblVSTC5pc29sYXRlZENvcHkoKSwg
aWNvbkRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHko
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBpY29uVVJMID0gaWNvblVSTC5pc29sYXRlZENvcHkoKSwgaWNvbkRhdGEg
PSBXVEZNb3ZlKGRhdGEpLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fZGIuaXNPcGVuKCkpIHsK
ICAgICAgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGIpOwpAQCAtNjc1
LDcgKzY3NSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
YWRlZEljb25zTG9jayB9OwogICAgICAgICBtX2xvYWRlZEljb25zLmNsZWFyKCk7CiAgICAgfQot
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CiAgICAgICAgICAgICBtX3BhZ2VVUkxU
b0ljb25VUkxNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcAppbmRleCBi
NDEwNGI5MmU1ODVmNDY1Yzk4MzZkYTZmNGEzMTVhYmE2YzYyMzdmLi44OGI2ZDQwMjk2OWQwZjc0
ZmQ3ZjUxOTk5MWE4MjE5ZWVlMzUyNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3Bw
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5z
aXRpb25Ub05leHRLZXlGcmFtZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0cmFu
c2l0aW9uQmV0d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwg
bV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
eworICAgIHRyYW5zaXRpb25CZXR3ZWVuS2V5RnJhbWVzKG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJ
bmRleCAtIDFdLCBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBmaW5pc2hEaXNw
YXRjaGluZyhlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzYsNyArMTc2LDcgQEAg
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJj
ZVN0YXRlKCkKICAgICBhdXRvJiBwb3N0U3RhdGVFbnRyeSA9IG5leHRLZXlGcmFtZS5zdGF0ZXNb
bV9pbnB1dFNvdXJjZVN0YXRlSW5kZXhdOwogICAgIFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1
dFNvdXJjZSA9IHBvc3RTdGF0ZUVudHJ5LmZpcnN0OwogCi0gICAgdHJhbnNpdGlvbklucHV0U291
cmNlVG9TdGF0ZShpbnB1dFNvdXJjZSwgcG9zdFN0YXRlRW50cnkuc2Vjb25kLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21t
YW5kRXJyb3I+IGVycm9yKSB7CisgICAgdHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShpbnB1
dFNvdXJjZSwgcG9zdFN0YXRlRW50cnkuc2Vjb25kLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3Ip
IHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6
ZXhjaGFuZ2UobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7
CiAgICAgICAgICAgICBmaW5pc2goZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA5
Y2IzZjY1YWEwNDFhZTBlNWM1ODM0N2ViZDQ3ZGE2ZDVkOWE2MmI0Li4wMGRlMDM2NWFhMjYyN2Q5
MjEzOGVmOGVmZmM1MTMyOThkNTE5ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzAy
LDcgKzMwMiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4
dHMoUmVmPEdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mCiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgZ2V0TmV4dENvbnRleHQobWFrZVJlZigqdGhpcyksIFdURk1vdmUocGFnZXMpLCBK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29u
dGV4dD46OmNyZWF0ZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgZ2V0TmV4dENvbnRleHQo
UmVmIHsgKnRoaXMgfSwgV1RGTW92ZShwYWdlcyksIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0Pjo6Y3JlYXRlKCksIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdD
b250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSYgaGFuZGxlLCBSZWY8R2V0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0
QnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXQKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRv
d05vdEZvdW5kKTsKIAotICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBt
dXRhYmxlIHsKKyAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxl
IHsKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKHByb3RlY3RlZFRoaXMtPmJ1aWxkQnJv
d3NpbmdDb250ZXh0Rm9yUGFnZShwYWdlLmdldCgpLCB3aW5kb3dGcmFtZSkpOwogICAgIH0pOwog
fQpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJy
b3dzaW5nQ29udGV4dChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jCiAgICAgaWYgKHBy
ZXNlbnRhdGlvbkhpbnQgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3Np
bmdDb250ZXh0UHJlc2VudGF0aW9uOjpUYWIpCiAgICAgICAgIG9wdGlvbnMgfD0gQVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnNQcmVmZXJOZXdUYWI7CiAKLSAgICBt
X2NsaWVudC0+cmVxdWVzdE5ld1BhZ2VXaXRoT3B0aW9ucygqdGhpcywgc3RhdGljX2Nhc3Q8QVBJ
OjpBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnM+KG9wdGlvbnMpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShXZWJQYWdlUHJveHkqIHBhZ2UpIHsKKyAgICBtX2NsaWVudC0+cmVxdWVzdE5ld1BhZ2VXaXRo
T3B0aW9ucygqdGhpcywgc3RhdGljX2Nhc3Q8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5n
Q29udGV4dE9wdGlvbnM+KG9wdGlvbnMpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdlYlBhZ2VQcm94eSogcGFnZSkgewogICAg
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUl9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiVGhlIHJlbW90ZSBzZXNzaW9uIGZhaWxl
ZCB0byBjcmVhdGUgYSBuZXcgYnJvd3NpbmcgY29udGV4dC4iKTsKIApAQCAtNDE1LDcgKzQxNSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0Nv
bnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBleGl0
RnVsbHNjcmVlbldpbmRvd0ZvclBhZ2UoKnBhZ2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVm
UHRyKHBhZ2UpLCB3aWR0aCwgaGVpZ2h0LCB4LCB5XSgpIG11dGFibGUgeworICAgIGV4aXRGdWxs
c2NyZWVuV2luZG93Rm9yUGFnZSgqcGFnZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZlB0cihw
YWdlKSwgd2lkdGgsIGhlaWdodCwgeCwgeV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgd2Vi
UGFnZSA9ICpwYWdlOwogICAgICAgICB0aGlzLT5yZXN0b3JlV2luZG93Rm9yUGFnZSh3ZWJQYWdl
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IFdURk1vdmUocGFnZSksIHdp
ZHRoLCBoZWlnaHQsIHgsIHldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvJiB3ZWJQYWdl
ID0gKnBhZ2U7CkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
bWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdp
bmRvd05vdEZvdW5kKTsKIAotICAgIGV4aXRGdWxsc2NyZWVuV2luZG93Rm9yUGFnZSgqcGFnZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWZQdHIocGFnZSldKCkgbXV0YWJsZSB7CisgICAgZXhp
dEZ1bGxzY3JlZW5XaW5kb3dGb3JQYWdlKCpwYWdlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVm
UHRyKHBhZ2UpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiB3ZWJQYWdlID0gKnBhZ2U7CiAg
ICAgICAgIHJlc3RvcmVXaW5kb3dGb3JQYWdlKHdlYlBhZ2UsIFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBwYWdlID0gV1RGTW92ZShwYWdlKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIG1heGltaXplV2luZG93Rm9yUGFnZSgqcGFnZSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgewpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
UihXaW5kb3dOb3RGb3VuZCk7CiAgICAgCi0gICAgZXhpdEZ1bGxzY3JlZW5XaW5kb3dGb3JQYWdl
KCpwYWdlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZlB0cihwYWdlKV0oKSBtdXRhYmxlIHsKKyAgICBl
eGl0RnVsbHNjcmVlbldpbmRvd0ZvclBhZ2UoKnBhZ2UsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWZQdHIo
cGFnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmhpZGVXaW5kb3dGb3JQ
YWdlKCpwYWdlLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgICAgICB9KTsKQEAgLTU5NSw3
ICs1OTUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpleGl0RnVsbHNjcmVlbldpbmRv
d0ZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXVEY6OgogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIG1fd2luZG93U3RhdGVUcmFuc2l0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoV2luZG93VHJhbnNpdGlvbmVkVG9TdGF0ZSk+IHsgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oV2luZG93VHJhbnNpdGlvbmVkVG9TdGF0ZSBzdGF0ZSkgbXV0YWJsZSB7Cisg
ICAgbV93aW5kb3dTdGF0ZVRyYW5zaXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChX
aW5kb3dUcmFuc2l0aW9uZWRUb1N0YXRlKT4geyBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFdpbmRvd1RyYW5zaXRpb25lZFRvU3RhdGUgc3RhdGUpIG11dGFibGUgewogICAgICAgICAvLyBJ
ZiBmdWxsc2NyZWVuIGV4aXRlZCBhbmQgd2UgZGlkbid0IHJlcXVlc3QgdGhhdCwganVzdCBpZ25v
cmUgaXQuCiAgICAgICAgIGlmIChzdGF0ZSAhPSBXaW5kb3dUcmFuc2l0aW9uZWRUb1N0YXRlOjpV
bmZ1bGxzY3JlZW4pCiAgICAgICAgICAgICByZXR1cm47CkBAIC02MzMsNyArNjMzLDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKFdlYlBhZ2VQ
cm94eSYgcGFnZSkKICAgICAvLyB0aGUgbG9hZCBpbiBjYXNlIG9mIG5vcm1hbCBzdHJhdGVneSwg
c28gd2Ugd2FudCB0byBkaXNwYXRjaCBhbGwgcGVuZGluZyBuYXZpZ2F0aW9uIGNhbGxiYWNrcy4K
ICAgICAvLyBJZiB0aGUgZGlhbG9nIHdhcyBzaG93biBkdXJpbmcgYSBzY3JpcHQgZXhlY3V0aW9u
LCB3ZSB3YW50IHRvIGZpbmlzaCB0aGUgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24KICAgICAv
LyBvcGVyYXRpb24gd2l0aCBhbiB1bmV4cGVjdGVkIGFsZXJ0IG9wZW4gZXJyb3IuCi0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGFnZSA9IG1ha2VSZWYocGFn
ZSldIHsKICAgICAgICAgaWYgKCFwYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2NsaWVu
dCB8fCAhbV9jbGllbnQtPmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2dPblBhZ2UoKnRoaXMsIHBh
Z2UpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXUKICAgICBpZiAoZnJhbWVOb3RGb3VuZCkKICAgICAgICAgQVNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBzdGQ6Om9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrXShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0YWJsZSB7Cisg
ICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgc3Rk
OjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrXShzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JU
eXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QQogICAgIGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsK
KyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBz
dGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yVHlwZSkgewogICAgICAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJv
clR5cGUpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MDksNyArMTYwOSw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnJlc2V0Q2xpY2tDb3VudCgpCiAKIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2Us
IE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0LCBjb25zdCBTdHJpbmcm
IHBvaW50ZXJUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHBhZ2UuZ2V0
V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFn
ZSA9IG1ha2VSZWYocGFnZSksIGludGVyYWN0aW9uLCBtb3VzZUJ1dHRvbiwgbG9jYXRpb25JblZp
ZXdwb3J0LCBwb2ludGVyVHlwZV0oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRh
YmxlIHsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIGludGVyYWN0aW9uLCBtb3VzZUJ1
dHRvbiwgbG9jYXRpb25JblZpZXdwb3J0LCBwb2ludGVyVHlwZV0oV2ViQ29yZTo6RmxvYXRSZWN0
IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjbGlwcGVkWCA9IHN0ZDo6bWlu
KHN0ZDo6bWF4KDAuMGYsIChmbG9hdClsb2NhdGlvbkluVmlld3BvcnQueCgpKSwgd2luZG93RnJh
bWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICBhdXRvIGNsaXBwZWRZID0gc3RkOjptaW4oc3Rk
OjptYXgoMC4wZiwgKGZsb2F0KWxvY2F0aW9uSW5WaWV3cG9ydC55KCkpLCB3aW5kb3dGcmFtZS5z
aXplKCkuaGVpZ2h0KCkpOwogICAgICAgICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXdw
b3J0LngoKSB8fCBjbGlwcGVkWSAhPSBsb2NhdGlvbkluVmlld3BvcnQueSgpKSB7CkBAIC0xNjUy
LDcgKzE2NTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50
ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaEludAogI2VuZGlmCiAKICAgICBtX3Np
bXVsYXRpbmdUb3VjaEludGVyYWN0aW9uID0gdHJ1ZTsKLSAgICBwbGF0Zm9ybVNpbXVsYXRlVG91
Y2hJbnRlcmFjdGlvbihwYWdlLCBpbnRlcmFjdGlvbiwgbG9jYXRpb25JblZpZXdwb3J0LCBkdXJh
dGlvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgcGxhdGZvcm1TaW11bGF0ZVRv
dWNoSW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIGxvY2F0aW9uSW5WaWV3cG9ydCwgZHVy
YXRpb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIG1fc2ltdWxhdGluZ1Rv
dWNoSW50ZXJhY3Rpb24gPSBmYWxzZTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3Ip
OwogICAgIH0pOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym8K
ICNpZiBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlV2hlZWxJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGRlbHRhLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBsb2NhdGlvbklu
Vmlld3BvcnQsIGRlbHRhXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUpIG11dGFibGUg
eworICAgIHBhZ2UuZ2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBwYWdlID0gbWFrZVJlZihwYWdlKSwgbG9jYXRpb25JblZpZXdwb3J0LCBkZWx0
YV0oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBjbGlwcGVkWCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHN0YXRpY19jYXN0PGZsb2F0Pihs
b2NhdGlvbkluVmlld3BvcnQueCgpKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsKICAg
ICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHN0YXRpY19jYXN0
PGZsb2F0Pihsb2NhdGlvbkluVmlld3BvcnQueSgpKSksIHdpbmRvd0ZyYW1lLnNpemUoKS5oZWln
aHQoKSk7CiAgICAgICAgIGlmIChjbGlwcGVkWCAhPSBsb2NhdGlvbkluVmlld3BvcnQueCgpIHx8
IGNsaXBwZWRZICE9IGxvY2F0aW9uSW5WaWV3cG9ydC55KCkpIHsKQEAgLTE3NzQsNyArMTc3NCw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAgICAgICAgIGtleU1vZGlmaWVycy5hZGQocHJv
dG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKSk7
CiAgICAgfQogCi0gICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCBmbG9hdFgsIGZsb2F0WSwgbW91c2VJbnRlcmFjdGlv
biwgbW91c2VCdXR0b24sIGtleU1vZGlmaWVyc10oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0Zy
YW1lKSBtdXRhYmxlIHsKKyAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgZmxvYXRYLCBmbG9hdFksIG1vdXNlSW50ZXJh
Y3Rpb24sIG1vdXNlQnV0dG9uLCBrZXlNb2RpZmllcnNdKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5k
b3dGcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIGZsb2F0WCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAu
MGYsIGZsb2F0WCksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsKICAgICAgICAgZmxvYXRZ
ID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwgZmxvYXRZKSwgd2luZG93RnJhbWUuc2l6ZSgpLmhl
aWdodCgpKTsKIApAQCAtMTg3Miw3ICsxODcyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2wK
ICAgICBpZiAoIWFjdGlvbnNUb1BlcmZvcm0uc2l6ZSgpKQogICAgICAgICBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiTm8gYWN0aW9u
cyB0byBwZXJmb3JtLiIpOwogCi0gICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
ayA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPiBlcnJvcikgeworICAgIGF1dG8ga2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2Fs
bGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAg
ICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3IudmFsdWUoKS50b1Byb3RvY29sU3RyaW5nKCkp
OwogICAgICAgICBlbHNlCkBAIC0yMTUwLDcgKzIxNTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOgogICAgIH0KIAogICAgIC8vIERlbGVnYXRlIHRoZSByZXN0IG9mIMKnMTcuNCBEaXNwYXRj
aGluZyBBY3Rpb25zIHRvIHRoZSBkaXNwYXRjaGVyLgotICAgIGlucHV0RGlzcGF0Y2hlci5ydW4o
ZnJhbWVJRCwgV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgIGlucHV0RGlzcGF0
Y2hlci5ydW4oZnJhbWVJRCwgV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAg
IGlmIChlcnJvcikKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1
ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CiAgICAgICAgIGVsc2UKQEAgLTIxNzksNyArMjE3OSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2Uo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6CiAgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
JiBpbnB1dERpc3BhdGNoZXIgPSBpbnB1dERpc3BhdGNoZXJGb3JQYWdlKCpwYWdlKTsKICAgICBp
bnB1dERpc3BhdGNoZXIuY2FuY2VsKCk7CiAgICAgCi0gICAgaW5wdXREaXNwYXRjaGVyLnJ1bihm
cmFtZUlELCBXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgaW5wdXRE
aXNwYXRjaGVyLnJ1bihmcmFtZUlELCBXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2Vz
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3Ip
IHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJl
KGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MDkxMGQ1OGRlNjhhYzY1NTBjYTQxZjQ5NWE4YWFjZDgzMmJmMzQzMC4uYTg1MjNlMWY3ZmI1NzY0
ZDU2YTIzMDM4ZjBjYjlkNDFiMzhmYzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgT3B0aW8KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHR1cm4gdGhpcyBpbnRv
IGEgUkVMRUFTRV9BU1NFUlQoKS4KICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBp
ZiAoIWlzTWFpblJ1bkxvb3AoKSkgewotICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKSwgc2Vu
ZE9wdGlvbnMsIGFzeW5jUmVwbHlJbmZvID0gV1RGTW92ZShhc3luY1JlcGx5SW5mbyksIHNob3Vs
ZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5XSgpIG11dGFibGUgeworICAgICAgICBjYWxs
T25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVuY29kZXIgPSBX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywgYXN5bmNSZXBseUluZm8gPSBXVEZNb3ZlKGFz
eW5jUmVwbHlJbmZvKSwgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVu
Y29kZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92ZShhc3luY1JlcGx5SW5mbyksIHNob3VsZFN0YXJ0
UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAz
MjNjNWJlODhhZTcyZGZjZmNkNjdhMjcxNWZjNmUyN2Y0Yjk3N2RkLi4yMjAwZjI2YTAyNTk1ZTBl
YjljMzhmOWU0YjU3ZDNjMWYxMWM2OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKICAgICAgICAgICAgICAgICBBVVRIT1JJ
WkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBbTWluaWF0
dXJpemVkXSBBbHJlYWR5IGhhcyBhIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkuIEhpZGRl
biBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNl
cnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3ByZXNlbnRp
bmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd0RpZERlbWluaWF0dXJp
emVOb3RpZmljYXRpb24gb2JqZWN0OnByZXNlbnRpbmdXaW5kb3cgcXVldWU6bmlsIHVzaW5nQmxv
Y2s6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoTlNOb3RpZmljYXRp
b24gKikgeworICAgICAgICAgICAgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
ckZvck5hbWU6TlNXaW5kb3dEaWREZW1pbmlhdHVyaXplTm90aWZpY2F0aW9uIG9iamVjdDpwcmVz
ZW50aW5nV2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsKICAgICAgICAgICAgICAgICBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBXaW5k
b3cgaGFzIGRlbWluaWF0dXJpemVkLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwuIik7CiAgICAg
ICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CiAgICAgICAgICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX3ByZXNl
bnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCldOwpAQCAtNDM4LDcgKzQz
OCw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVy
KCkKICAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNz
Vmlld0NvbnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFzIGFuIFVuaGlkZSBvYnNlcnZlciAo
JXApLiBEZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRvd0Rp
ZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2Vy
dmVyLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Fw
cGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0aW9uRGlkVW5oaWRlTm90aWZp
Y2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgIG1f
YXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TQXBwbGljYXRpb25EaWRVbmhpZGVOb3Rp
ZmljYXRpb24gb2JqZWN0Ok5TQXBwIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsKICAgICAgICAgICAg
IEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6
IEFwcGxpY2F0aW9uIGlzIG5vIGxvbmdlciBoaWRkZW4uIENvbXBsZXRpbmcgdGhlIGRpc21pc3Nh
bC4iKTsKICAgICAgICAgICAgIGRpc21pc3NWaWV3Q29udHJvbGxlcigpOwogICAgICAgICAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2Fw
cGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCBkY2FkZjhl
OTJiYjQ4ZDAwNTZmN2QyMDFjOTVkOGJkYTk2YThhNWVlLi44MjAyNzQ3ZTlmNzQ0YmJkN2IzZGI0
NWQwYTM1MzMwY2UwZTdjOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICBp
ZiAoIVBBTDo6aXNBdWRpb1Rvb2xib3hDb3JlRnJhbWV3b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6
Y2FuTG9hZF9BdWRpb1Rvb2xib3hDb3JlX0F1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3Ry
YXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgeworICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIENGRGF0YVJlZiByZWdpc3RyYXRpb25zIHsgbnVsbHB0ciB9OwogCiAgICAgICAg
IFdlYkNvcmU6OnJlZ2lzdGVyT3B1c0RlY29kZXJJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDkyMjg1
ODc0MDI0YWMyYWQ5YTY5ZDIxOGVkNDA3OTY1MzFiMDc0YmUuLjRkOGYyYzdlMjQwMmQwZmE1Y2M0
OGZiNmExZTk0YWVjYjJmMmNkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGV2
aWNlSWRIYXNoU2FsdFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvYWRTdG9yYWdl
RnJvbURpc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBk
ZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2lucykgeworICAgIGxvYWRTdG9yYWdlRnJvbURpc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoYXV0byYmIGRldmljZUlkSGFzaFNh
bHRGb3JPcmlnaW5zKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIG1fZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbnMgPSBXVEZNb3ZlKGRldmljZUlkSGFzaFNh
bHRGb3JPcmlnaW5zKTsKICAgICAgICAgbV9pc0xvYWRlZCA9IHRydWU7CkBAIC0xMDksNyArMTA5
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0
eU9yaWdpbkRhdGEoY29uc3QgY2hhciogbmFtZSwKIAogdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNhbHRGb3JPcmlnaW4+PiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fZGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnkpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQg
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OnN0b3JlSGFzaFNhbHRUb0Rpc2soY29uc3QgSGFzaFNh
bHRGb3JPcmlnaW4mIGhhc2hTCiAgICAgaWYgKG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBoYXNoU2FsdEZvck9yaWdp
biA9IGhhc2hTYWx0Rm9yT3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaGFz
aFNhbHRGb3JPcmlnaW4gPSBoYXNoU2FsdEZvck9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byBlbmNvZGVyID0gY3JlYXRlRW5jb2RlckZyb21EYXRhKGhhc2hT
YWx0Rm9yT3JpZ2luKTsKICAgICAgICAgd3JpdGVUb0Rpc2soV1RGTW92ZShlbmNvZGVyKSwgRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2VEaXJlY3RvcnksIGhhc2hTYWx0Rm9yT3JpZ2luLmRldmljZUlkSGFzaFNhbHQpKTsKICAgICB9
KTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXRE
ZXZpY2VJZEhhc2hTYWx0T3JpZ2lucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIERl
dmljZUlkSGFzaFNhbHRTdG9yYWdlOjpkZWxldGVIYXNoU2FsdEZyb21EaXNrKGNvbnN0IEhhc2hT
YWx0Rm9yT3JpZ2luJiBoYXNoU2FsdEZvck9yaWdpbikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkZXZpY2VJZEhhc2hTYWx0
ID0gaGFzaFNhbHRGb3JPcmlnaW4uZGV2aWNlSWRIYXNoU2FsdC5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGRldmljZUlkSGFzaFNhbHQgPSBoYXNoU2FsdEZvck9yaWdpbi5kZXZpY2VJ
ZEhhc2hTYWx0Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBTdHJpbmcgZmlsZUZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VE
aXJlY3RvcnksIGRldmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggNzg5
NjdiNmUyZmJlODkzYWY5OTU0NDcyNjY1ODExM2JkNGRmMzAwZC4uNTdiNTY1Y2I0YmFhZjZlMmU3
ZjAwYThjYmUwZDIxN2VjY2Y2ZWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMg
UmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCiB2b2lkIERvd25sb2FkUHJveHk6OmNhbmNlbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQ
STo6RGF0YSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RhdGFTdG9yZSkg
ewotICAgICAgICBtX2RhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEb3dubG9hZChtX2Rvd25sb2FkSUQp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgbV9kYXRhU3RvcmUtPm5ldHdvcmtQcm9j
ZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2FuY2Vs
RG93bmxvYWQobV9kb3dubG9hZElEKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2xlZ2FjeVJlc3VtZURhdGEuZ2V0KCkpOwogICAgICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYKIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIG1fY2xpZW50LT53aWxs
U2VuZFJlcXVlc3QoKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNw
b25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1
ZXN0JiYgbmV3UmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3QoKnRoaXMs
IFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7
CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobmV3UmVxdWVzdC51cmwoKSk7CiAgICAg
ICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9kYXRhU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogICAgIHN1Z2dlc3RlZEZpbGVu
YW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1
Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgpKTsKIAotICAgIG1fY2xpZW50LT5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZp
bGVuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFs
bG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFibGUgeworICAgIG1fY2xpZW50
LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2Us
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3Rl
ZEZpbGVuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUg
YWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBp
ZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDcxNWU3ZjAzMDJhZTE5ZjQxYzA1YWZlMDJhMzZm
OWQxNGQ5NDVkNjMuLmRiNWIxYTE3NTViMDQ2MWQxMmYyM2ZhOTgxYmZmNzhlMDJmYjYwY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBA
IC0zNjEsNyArMzYxLDcgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogCiB2b2lkIEdQVVByb2Nl
c3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVh
c29uKQogewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJl
ZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAg
Y2FzZSBHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVy
R0xpYi5jcHAKaW5kZXggYjBkMDc5ZmRkNjJmYTRmYTJkOWVjOGVkOWFlNjRjNWNiYWE5NWI5MC4u
MWM1NzVlMjk4YjQwYmY5NDUyZmFkYWU4OTMwN2I1NThiYzczYmQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVu
Y2hlckdMaWIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MoKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAg
ICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sg
dG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlcnZlclNvY2tldCA9IHNvY2tldFBh
aXIuc2VydmVyXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgc2VydmVyU29ja2V0ID0gc29ja2V0UGFpci5zZXJ2ZXJd
IHsKICAgICAgICAgZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcyhtX3Byb2Nlc3NJZGVudGlmaWVy
LCBzZXJ2ZXJTb2NrZXQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5LmNwcAppbmRleCA4ZmY5ZDk1Y2YwYmU2MTFhMWE0MjY4YTI2YmRhYjk1MzQxZTU1YzRi
Li43MTE1NGFkZDBhZjJiOTE0YWUyM2FiM2NlYzQzM2EwZTEzMGUxMWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmpvaW4oTWVkaWFTZXNzaW9uQ29tbWFuZENv
bXBsZXRpb25IYW5kbAogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAg
QUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2lu
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29y
ZGluYXRvci0+am9pbihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50
aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAtOTIsNyArOTIsNyBA
QCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZWVr
VG8oZG91YmxlIHRpbWUsIE1lZGlhU2VzcwogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5U
SUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCB0aW1lKTsKIAotICAgIG1fcHJpdmF0
ZUNvb3JkaW5hdG9yLT5zZWVrVG8odGltZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11
dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZWVrVG8odGltZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25E
YXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmll
ciwgImNvbXBsZXRpb24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNl
cHRpb24pKTsKICAgICB9KTsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQbGF5KE1lZGlhU2Vzc2lvbkNvbW1hbmRD
b21wbAogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xP
RyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wbGF5KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+
cGxheShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlv
bmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgQUxXQVlT
X0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBhdXNlKE1lZGlh
U2Vzc2lvbkNvbW1hbmRDb21wCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsK
ICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3It
PnBhdXNlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZh
dGVDb29yZGluYXRvci0+cGF1c2UoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7
CiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3Jk
aW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLAogICAgIGF1dG8gaWRlbnRpZmllciA9
IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJp
dmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRp
b24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxF
eGNlcHRpb25EYXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19MT0co
aWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDNmMWUyYjlkZWE2
NGZjYjk1ZmM1YTdhMTlhODExNzJhMjNmNTAwMGYuLjg2MTc3N2VjNmFhMmYwNzkzZDQwZDNjNWZi
MjY3NTVkYTUyMDgyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1By
b2Nlc3NEaWRUZXJtaW5hdGUoVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogewotICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsg
KnRoaXMgfTsKIAogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcC0+aW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAppbmRleCBlOWRk
MGI2YTQ2YzYzZWZhNDExNDNlOWFjNTZmOTk0Yjk2YWJmNjRlLi4yY2ZjYWU3NDg1ZDU5ZmQxY2Fl
OTM0YWU0NTg2MDdlZDA3ZjczNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcApAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cHJvbXB0KCkK
ICAgICBNZWRpYVBlcm1pc3Npb25SZWFzb24gcmVhc29uID0gTWVkaWFQZXJtaXNzaW9uUmVhc29u
OjpDYW1lcmE7CiAgICAgaWYgKHJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCiAgICAgICAgIHJlYXNv
biA9IHJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgPyBNZWRpYVBlcm1pc3Npb25SZWFzb246OkNhbWVy
YUFuZE1pY3JvcGhvbmUgOiBNZWRpYVBlcm1pc3Npb25SZWFzb246Ok1pY3JvcGhvbmU7Ci0gICAg
YWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFuYWdlci0+cGFnZSgpLCByZWFzb24sIHRvcExldmVsRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0oYm9vbCBncmFudGVkKSB7CisgICAgYWxlcnRGb3JQZXJtaXNzaW9uKG1fbWFu
YWdlci0+cGFnZSgpLCByZWFzb24sIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLmRh
dGEoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIGdyYW50ZWQp
IHsKICAgICAgICAgaWYgKCFncmFudGVkKQogICAgICAgICAgICAgZGVueShVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCmluZGV4IGY0ZGYy
YTFkOTg1YjY3NGQ0NzI5MmY2YTE4MDE1MjMxMDkwZWM5Y2IuLjQ4MWI3ODYzYTZhZGNjNWNjYjhh
MTdlMzdkZGQ3ZDNjNWJhZGNmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvbnRleHRNZW51UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51UHJveHkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgV2ViQ29udGV4dE1l
bnVQcm94eTo6dXNlQ29udGV4dE1lbnVJdGVtcyhWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRl
bT4+JiYKICAgICBwYWdlLT5wcm9jZXNzKCkuc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAog
ICAgIC8vIFByb3RlY3QgfHRoaXN8IGZyb20gYmVpbmcgZGVhbGxvY2F0ZWQgaWYgV2ViUGFnZVBy
b3h5IGNvZGUgaXMgcmUtZW50ZXJlZCBmcm9tIHRoZSBtZW51IHJ1bmxvb3Agb3IgZGVsZWdhdGVz
LgotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoV1RGTW92
ZShpdGVtcykpOwogCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2Ygc2hvd0NvbnRleHRN
ZW51V2l0aEl0ZW1zLCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUg
aXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IDM1NzVhYTMxOTQzMjg1
YTM3NzUxZjRiMjEzZmEwZGExZTkzYjBmMzcuLmUyYzQ3NTcxNDRjNzZlMGQxZWY1YmJlMmNhY2Y0
MzMwYzk4MjEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
CkBAIC0xOTYsNyArMTk2LDcgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBXZWJGcmFt
ZVByb3h5OjpzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkgKIHsKICAgICBpZiAo
bV9hY3RpdmVMaXN0ZW5lcikKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lci0+aWdub3JlKCk7Ci0g
ICAgbV9hY3RpdmVMaXN0ZW5lciA9IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6Y3JlYXRl
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgbV9h
Y3RpdmVMaXN0ZW5lciA9IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6Y3JlYXRlKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYWN0aW9uLCBwb2xpY2llcywgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgV1RGTW92ZShzYWZlQnJvd3NpbmdXYXJuaW5nKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBudWxscHRyOwogICAgIH0sIGV4cGVj
dFNhZmVCcm93c2luZ1Jlc3VsdCwgZXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2VhZjc5OTRkODAwNjliYTlm
MTQxZjFhZjI0Y2Q3Njk0MjY0ZGZmMC4uNTc0ZjA2NGI4ZDQxZDhhZjYxNzAwY2E0ZTkxOTFiMTRl
MDA0ZjIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
NTQzLDcgKzI1NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHsgfSk7CiAKLSAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIG11dGFi
bGUgewogICAgICAgICBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCA9IGF0
dHJpYnV0ZXM7CiAgICAgICAgIGNhbGxiYWNrKGF0dHJpYnV0ZXMpOwogICAgIH0pOwpAQCAtMzQ5
NCw3ICszNDk0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgfQogICAgIH0K
IAotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlz
LCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
ID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCisg
ICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpu
YXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1h
a2VSZWYoKm5hdmlnYXRpb24pLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAogICAgICAg
ICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciks
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRdIChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQYWdlUHJveHkqIGRlc3RpbmF0aW9uU3VzcGVu
ZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgewogICAgICAgICAvLyBJZiB0
aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQsIHRoZW4gbm8gbmVlZCB0byBwcm9jZWVk
LgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAhbmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdh
dGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSkpIHsKQEAgLTM2NDcsNyArMzY0Nyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgYm9vbCBpc1NlcnZlclNpZGVSZWRpcmVjdCA9
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIG5hdmlnYXRpb24uY3VycmVu
dFJlcXVlc3RJc1JlZGlyZWN0KCk7CiAgICAgYm9vbCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFm
dGVyQ29tbWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uOwogICAgIG1fcHJv
dmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIFdU
Rk1vdmUobmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVuZGVkUGFnZSksIG5hdmlnYXRpb24ubmF2
aWdhdGlvbklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0LCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1
ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHNob3VsZENsb3NlUHJldmlvdXNQ
YWdlQWZ0ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7Ci0gICAgYXV0byBjb250aW51
YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9u
ID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJz
aXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbnRp
bnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmF2aWdhdGlv
biA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vi
c2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChh
dXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7CiAgICAgICAgICAgICBMT0co
TG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3Mg
dG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwog
CkBAIC00NDc2LDcgKzQ0NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIAogICAgIG1fZHJhd2luZ0FyZWEt
PndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwogCi0gICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpG
b3JjZVJlcGFpbnQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbEFmdGVy
TmV4dFByZXNlbnRhdGlvblVwZGF0ZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1
dG8pIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfSk7CkBAIC01
NDE2LDcgKzU0MTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIHNob3VsZEV4cGVj
dEFwcEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6
OlllczsKICNlbmRpZgogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdh
dGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAo
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVz
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4p
IG11dGFibGUgeworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5
TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZyYW1l
ID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwg
bmF2aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJl
ZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFi
bGUgewogICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0lbGx1LCBu
YXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJuaW5nPSVk
LCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZp
Z2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5
QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7CiAKICAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFt
ZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9u
ID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIG11dGFibGUgewpAQCAtNTYxMCw3ICs1NjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWUKICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1fbWFp
bkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAgICAgYXV0byBu
YXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJh
bWVOYW1lLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBM
aW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKICAgICAKLSAgICBhdXRvIGxp
c3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZy
YW1lSUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJy
b3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSUQs
IG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNp
dGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5n
V2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3Nl
cnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRz
IG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJv
d3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01NjQ4LDcgKzU2NDgsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5h
dmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihu
YXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQ
STo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01J
TUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJl
ZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGxp
c3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAorICAgIGF1dG8gbGlz
dGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBp
ZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwK
ICAgICAgICAgcHJvY2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJu
aW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAg
ICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0
ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNp
ZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CkBAIC01NzE2LDcg
KzU3MTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0oRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSWRlbnRpZmllciBzb3VyYwogICAgIGZvciAoYXV0byYgcGFpciA6
IHRleHRGaWVsZFZhbHVlcykKICAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIEFQSTo6
RGljdGlvbmFyeTo6TWFwVHlwZTo6aXNWYWxpZEtleShwYWlyLmZpcnN0KSk7CiAKLSAgICBtX2Zv
cm1DbGllbnQtPndpbGxTdWJtaXRGb3JtKCp0aGlzLCAqZnJhbWUsICpzb3VyY2VGcmFtZSwgdGV4
dEZpZWxkVmFsdWVzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBmcmFtZUlELCBsaXN0ZW5lcklEXSgpIHsKKyAgICBtX2Zvcm1DbGllbnQtPndpbGxTdWJtaXRG
b3JtKCp0aGlzLCAqZnJhbWUsICpzb3VyY2VGcmFtZSwgdGV4dEZpZWxkVmFsdWVzLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZyYW1lSUQsIGxpc3RlbmVySURd
KCkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRG
b3JtKGZyYW1lSUQsIGxpc3RlbmVySUQpKTsKICAgICB9KTsKIH0KQEAgLTU4MzUsNyArNTgzNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIFdlYlBhCiAgICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0g
bV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKTsKICAgICBhdXRvIG9yaWdpbmF0
aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZSk7CiAgICAgYXV0byBtYWluRnJhbWVVUkwg
PSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwotICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBt
YWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50ID0gbmF2aWdhdGlvbkFjdGlvbkRhdGEucHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRdIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBt
YWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50ID0gbmF2aWdhdGlvbkFjdGlvbkRhdGEucHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRdIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFuZXdQYWdlKSB7CiAgICAgICAgICAgICByZXBseShzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODY3LDcgKzU4NjcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBXZWJQYQogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2luYXRpbmdG
cmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7
CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVh
dGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvLnB0
cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91
bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKLSAgICB0
cnlTT0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRoaXMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVhdHVyZXMpXSAoUmVmPEFQSTo6
TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxl
IHsKKyAgICB0cnlTT0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRo
aXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHdpbmRvd0ZlYXR1cmVzID0gV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyldIChS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG11dGFibGUgewogICAgICAgICBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZN
b3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQpAQCAtNjA5OSwxNCArNjA5OSwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0V2luZG93RnJhbWUoY29uc3QgRmxvYXRSZWN0JiBuZXdXaW5k
b3dGcmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdpbmRvd0ZyYW1lKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAg
ICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0UmVjdCBmcmFtZSkg
bXV0YWJsZSB7CisgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEZsb2F0
UmVjdCBmcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIHJlcGx5KHBhZ2VDbGllbnQoKS5jb252ZXJ0
VG9Vc2VyU3BhY2UoZnJhbWUpKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoRmxvYXRSZWN0KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEZsb2F0UmVjdCBmcmFtZSkgeworICAgIG1fdWlD
bGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChG
bG9hdFJlY3QgZnJhbWUpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFnZUNsaWVudCgp
LmNvbnZlcnRUb1VzZXJTcGFjZShmcmFtZSkpOwogICAgIH0pOwogfQpAQCAtNjI0MCw3ICs2MjQw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByaW50RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnMKIAogICAgIGZyYW1lLT5kaWRDaGFuZ2VUaXRs
ZSh0aXRsZSk7CiAKLSAgICBtX3VpQ2xpZW50LT5wcmludEZyYW1lKCp0aGlzLCAqZnJhbWUsIHBk
ZkZpcnN0UGFnZVNpemUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
eworICAgIG1fdWlDbGllbnQtPnByaW50RnJhbWUoKnRoaXMsICpmcmFtZSwgcGRmRmlyc3RQYWdl
U2l6ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ZW5kUHJpbnRpbmcoKTsgLy8gU2VuZCBhIG1lc3NhZ2Ugc3luY2hyb25vdXNseSB3aGlsZSBtX2lz
UGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uIGlzIHN0aWxsIHRydWUuCiAgICAgICAgIG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPSBmYWxzZTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTcwOTksNyArNzA5OSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpkaWRDaG9v
c2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTCiAg
ICAgYXV0byB0cmFuc2NvZGluZ1VUSSA9IFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSh0cmFuc2Nv
ZGluZ01JTUVUeXBlKTsKICAgICBhdXRvIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUodHJhbnNjb2Rp
bmdNSU1FVHlwZSk7CiAKLSAgICBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmaWxlVVJMcyA9IGZpbGVV
UkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VSTHMgPSB0cmFuc2NvZGluZ1VSTHMuaXNv
bGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEkuaXNvbGF0ZWRDb3B5
KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNpb24uaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgc2hhcmVkSW1hZ2VUcmFuc2NvZGluZ1F1ZXVlKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBmaWxlVVJMcyA9IGZp
bGVVUkxzLmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VSTHMgPSB0cmFuc2NvZGluZ1VSTHMu
aXNvbGF0ZWRDb3B5KCksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEkuaXNvbGF0ZWRD
b3B5KCksIHRyYW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNpb24uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgICAgIGF1dG8gdHJhbnNjb2RlZFVSTHMgPSB0cmFuc2NvZGVJbWFnZXModHJhbnNj
b2RpbmdVUkxzLCB0cmFuc2NvZGluZ1VUSSwgdHJhbnNjb2RpbmdFeHRlbnNpb24pOwpAQCAtODQy
OCw3ICs4NDI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdhbWVwYWRBY3Rpdml0eShjb25zdCBW
ZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMsIEV2ZW4KIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgTmVnb3RpYXRlZExl
Z2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTKQogewogICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5
VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcykgewotICAgICAgICBtX25hdmlnYXRpb25D
bGllbnQtPnNob3VsZEFsbG93TGVnYWN5VExTKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VdIChib29sIHNob3VsZEFsbG93TGVnYWN5VExTKSB7CisgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+c2hvdWxkQWxsb3dMZWdhY3lUTFMoKnRoaXMsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmdldCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXSAoYm9vbCBzaG91bGRBbGxvd0xlZ2FjeVRMUykgewog
ICAgICAgICAgICAgaWYgKHNob3VsZEFsbG93TGVnYWN5VExTKQogICAgICAgICAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlz
LCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC04
NDYxLDcgKzg0NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcgogewogICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSBmb3IgZnJhbWUg
JSIgUFJJdTY0ICIsIGN1cnJlbnQgcXVvdGEgJSIgUFJJdTY0ICIgY3VycmVudCB1c2FnZSAlIiBQ
Ukl1NjQgIiBleHBlY3RlZCB1c2FnZSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgY3Vy
cmVudFF1b3RhLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7CiAKLSAgICBT
dG9yYWdlUmVxdWVzdHM6OnNpbmdsZXRvbigpLnByb2Nlc3NPckFwcGVuZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYWdlVVJMID0gY3VycmVudFVSTCgpLCBmcmFtZUlE
LCBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVv
dGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNh
Z2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgU3RvcmFnZVJlcXVlc3RzOjpzaW5nbGV0b24oKS5wcm9jZXNzT3JBcHBlbmQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYWdlVVJMID0gY3VycmVudFVS
TCgpLCBmcmFtZUlELCBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRpc3BsYXlOYW1l
LCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2Us
IGV4cGVjdGVkVXNhZ2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHRoaXMtPm1ha2VTdG9yYWdlU3BhY2VSZXF1ZXN0
KGZyYW1lSUQsIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1
cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhw
ZWN0ZWRVc2FnZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBmcmFtZUlELCBwYWdlVVJMID0gV1RGTW92ZShwYWdlVVJMKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY3VycmVudFF1b3RhXShhdXRvIHF1b3RhKSBt
dXRhYmxlIHsKIAogICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2Us
ICJyZXF1ZXN0U3RvcmFnZVNwYWNlIHJlc3BvbnNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgcXVv
dGEgJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCksIHF1b3RhKTsKQEAgLTk4NTgsNyArOTg1
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKLSAgICBtX2ljb25M
b2FkaW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRJZGVudGlmaWVyXSAoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykgeworICAgIG1faWNvbkxvYWRpbmdDbGll
bnQtPmdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBsb2FkSWRlbnRpZmllcl0gKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJ
OjpEYXRhKik+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7CiAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICAgICAgY2FsbGJhY2so
bnVsbHB0cik7CkBAIC0xMDc5Myw3ICsxMDc5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxs
UGVyZm9ybVBhc3RlQ29tbWFuZCgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2
aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCkKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWVj
NzFhM2ZlNGY0ZDAwM2FkYTMxMTJjMTVlOTljZTgyOTNlMTRjOC4uYmUyMTJmNGZhYTc3NzEzZjFm
MzVlY2QwMDFlZGI3Yjc2ZjcwOWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtMTUwMSw3ICsxNTAxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
dGVybWluYXRlQWxsV2ViQ29udGVudFByb2Nlc3NlcygpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp0
ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0
ZWRUaGlzIHsgKnRoaXMgfTsKICAgICB3aGlsZSAoc2VydmljZVdvcmtlclByb2Nlc3NlcygpLmNv
bXB1dGVTaXplKCkpCiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5iZWdpbigpLT5k
aXNhYmxlU2VydmljZVdvcmtlcnMoKTsKICNlbmRpZgpAQCAtMTgzMyw3ICsxODMzLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICBhdXRvJiB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdGFyZ2V0VVJMIH07CiAKLSAgICBhdXRvIGNy
ZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBw
YWdlID0gbWFrZVJlZihwYWdlKSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4sIGRhdGFTdG9yZV0g
KCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94eT4geworICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGFnZSA9IG1ha2VSZWYocGFn
ZSksIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRhU3RvcmVdICgpIC0+IFJlZjxXZWJQcm9j
ZXNzUHJveHk+IHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihk
YXRhU3RvcmUsIHBhZ2UucHRyKCksIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyY2Jl
MTI4ODRiNWMwNzZlOWQwNGRmMjhmYzk5NDQ1YjJmMzhlOGE0Li4xZDg4MTVhZGI3M2FkMmQ1MjAz
YTY4YWEyOGMxOWJhZDMwY2Y4NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTkxOSw3ICs5MTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
cwogCiAgICAgLy8gUHJvdGVjdCBvdXJzZWx2ZXMsIGFzIHRoZSBjYWxsIHRvIHNodXREb3duKCkg
YmVsb3cgbWF5IG90aGVyd2lzZSBjYXVzZSB1cwogICAgIC8vIHRvIGJlIGRlbGV0ZWQgYmVmb3Jl
IHdlIGNhbiBmaW5pc2ggb3VyIHdvcmsuCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7CisgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCiAgICAgbGl2ZVBy
b2Nlc3Nlc0xSVSgpLnJlbW92ZSh0aGlzKTsKIApAQCAtMTAwMCw3ICsxMDAwLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7CiAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6
Iik7CiAKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBSZWYg
cHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAgICBtX2lzUmVzcG9uc2l2ZSA9IE5vT3JNYXli
ZTo6Tm87CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0CiAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaWRGaW5pc2hMYXVuY2hp
bmc6Iik7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkT3JDaGVja0Rpc2FibGVkKCkp
OwogCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgUmVmIHBy
b3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKICAgICBpZiAo
IUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbklkZW50aWZpZXIp
KSB7CkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogCiAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZmV0Y2hXZWJz
aXRlRGF0YTogVGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHBy
b2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIik7CiAKLSAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoZGF0YVR5cGVzKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gcmVwbHkpIG11dGFibGUgeworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShk
YXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRh
YmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhp
cyk7CiAjZW5kaWYKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
CiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJk
ZWxldGVXZWJzaXRlRGF0YTogVGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0
aGUgV2ViIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIik7CiAKLSAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFU
eXBlcywgbW9kaWZpZWRTaW5jZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVs
ZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
ICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTEzMTMsNyArMTMxMyw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnM6IFRha2luZyBh
IGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5n
IFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIik7CiAKLSAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhk
YXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhkYXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICNlbmRpZgpAQCAtMTMyNyw3ICsxMzI3LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gcmVhc29uKQogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5hdGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJyZXF1ZXN0VGVybWluYXRpb246IHJlYXNvbj0l
ZCIsIHJlYXNvbik7CiAKICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZSgpOwpA
QCAtMTY0Miw3ICsxNjQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEV4Y2VlZEluYWN0
aXZlTWVtb3J5TGltaXQoKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQ1BVTGlt
aXQoKQogewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJl
ZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2Vz
KCkpIHsKICAgICAgICAgaWYgKHBhZ2UtPmlzUGxheWluZ0F1ZGlvKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggOWUxZGJiZmM4ZTgyODgw
MWViMDg4M2EyNjAwZDFlYWEzZmZjZmZiNy4uYTEwZTY0MTdjZTFhMDU3MDgyYmQxYmRlNzc5MDA0
MTc1NjgwZGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJm
b3JtUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdQogCiAgICAg
bV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrID0gdHJ1ZTsKIAot
ICAgIEZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiBpbm5lckNvbXBsZXRpb25IYW5k
bGVyID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIG11dGFibGUgeworICAgIEZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiBp
bm5lckNvbXBsZXRpb25IYW5kbGVyID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvclJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayA9IGZhbHNlOwogICAgICAgICBpZiAoIW1f
c3RvcHBlZCAmJiAhbV9jb21wbGV0ZWQpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRl
eCA3ZDZkODE0OTQ5NmQ4NTg1MTJlNDVmZThjNWZjNWU4OTVjN2ZmMDg5Li41NjNiZWE4NmU5MmJl
NDM3MmVhMzgzZGYwYjc0NzFlM2I5M2EzMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbnN1
cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2UKIAog
ICAgIC8vIEhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIHRoZW4gYmFjayB0byB0aGUg
bWFpbiB0aHJlYWQKICAgICAvLyBlbnN1cmVzIHRoYXQgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cygpIGhhcyBmaW5pc2hlZC4KLSAgICBhcHBCb3VuZERvbWFpblF1ZXVlKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgYXBwQm91bmREb21h
aW5RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKGhhc0lu
aXRpYWxpemVkQXBwQm91bmREb21haW5zKTsKICAgICAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRp
b24tPmVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lGb3JUZXN0aW5nKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IGMyMjM0MjdiZWQ5ZDI1ZjQxYzA1ZmQwNzc1MTc4MjJlOWVlNWUzOTMuLjAzYjNkOGU0
OTU1OWJlZmQ3NzNhMzcyZDc4ZTA1NDU1NmM1OTZjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0z
NDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgdm9pZCBhZGRX
ZWJzaXRlRGF0YShXZWJzaXRlRGF0YSYmIHdlYnNpdGVEYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYnNpdGVE
YXRhID0gY3Jvc3NUaHJlYWRDb3B5KHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB3ZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weSh3ZWJzaXRlRGF0YSldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFdlYnNpdGVEYXRh
KFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMjkwLDcgKzEyOTAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2
bwogICAgIAogICAgIGF1dG8gbG9jYWxDYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcg
TG9jYWxDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAg
ICAKLSAgICBhdXRvIHd0ZkNhbGxiYWNrQWdncmVnYXRvciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbG9jYWxD
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICBhdXRvIHd0ZkNhbGxiYWNrQWdncmVnYXRvciA9IFdU
Rjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBsb2NhbENhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICBuZXR3b3JrUHJv
Y2VzcygpLmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Npb25JRCwg
W2xvY2FsQ2FsbGJhY2tBZ2dyZWdhdG9yXShWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJiBkYXRhKSB7CiAgICAgICAgICAgICBsb2NhbENhbGxi
YWNrQWdncmVnYXRvci0+YWRkUmVzdWx0KFdURk1vdmUoZGF0YSkpOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0K
aW5kZXggZDFiYjM0YThmZmUyM2U3NzBmZTdjZjAyNzQ1NWJiNjdkYWZlYmYzNC4uMGNjNDM1MTEx
MmQ0Y2M0ZDc3MzA2YzA4ZWNmMzcyZmUyYTg4NTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KQEAgLTM1Niw3ICszNTYsNyBA
QCBQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNzQXNzZXJ0aW9uKHBpZF90IHBpZCwgY29uc3QgU3Ry
aW5nJiByZWFzb24sIFByb2Nlc3NBc3Nlcgogdm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJl
QXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIGFzc2VydGlvbnNXb3JrUXVldWUoKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIGFzc2VydGlv
bnNXb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFjcXVpcmVTeW5jKCk7CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IDky
ZGE1Mzc4Nzk4MWVmYTYzZWI5ZWZhNTBkNmQyNjg3Y2FjN2ZhNWUuLjNiYzI1MDMyZjM1NTZhMzE5
MjhlMTVhMWEwYTgxNzk0MjMxY2E0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0zMzgsNyArMzM4LDcgQEAg
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRTaGFyZU1lbnVJdGVtKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTlNNZW51SXRlbQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ2V0
U3RhbmRhcmRTaGFyZU1lbnVJdGVtKGl0ZW1zLmdldCgpLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdGhpc10oTlNNZW51SXRlbSAqaXRlbSkgbXV0YWJsZSB7CisgICAgZ2V0
U3RhbmRhcmRTaGFyZU1lbnVJdGVtKGl0ZW1zLmdldCgpLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCB0aGlzXShOU01lbnVJdGVtICppdGVtKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFpdGVtKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94
eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
CiAgICAgYXV0byBpbWFnZUJpdG1hcCA9IG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgp
LmltYWdlQml0bWFwOwogCiAgICAgYXV0byBzcGFyc2VNZW51SXRlbXMgPSByZXRhaW5QdHIoW05T
UG9pbnRlckFycmF5IHN0cm9uZ09iamVjdHNQb2ludGVyQXJyYXldKTsKLSAgICBhdXRvIGluc2Vy
dE1lbnVJdGVtID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHdlYWtQYWdlID0gbWFrZVdlYWtQdHIocGFnZSgpKSwgaW1hZ2VVUkwgPSBXVEZNb3ZlKGltYWdl
VVJMKSwgaW1hZ2VCaXRtYXAgPSBXVEZNb3ZlKGltYWdlQml0bWFwKSwgc2hvdWxkVXBkYXRlUXVp
Y2tMb29rSXRlbVRpdGxlLCBxdWlja0xvb2tJdGVtVG9JbnNlcnRJZk5lZWRlZCA9IFdURk1vdmUo
cXVpY2tMb29rSXRlbVRvSW5zZXJ0SWZOZWVkZWQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBpdGVtc1JlbWFpbmluZyA9IGZpbHRlcmVkSXRlbXMuc2l6
ZSgpLCBtZW51ID0gV1RGTW92ZShtZW51KSwgc3BhcnNlTWVudUl0ZW1zXShOU01lbnVJdGVtICpp
dGVtLCBOU1VJbnRlZ2VyIGluZGV4KSBtdXRhYmxlIHsKKyAgICBhdXRvIGluc2VydE1lbnVJdGVt
ID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2Vha1BhZ2Ug
PSBtYWtlV2Vha1B0cihwYWdlKCkpLCBpbWFnZVVSTCA9IFdURk1vdmUoaW1hZ2VVUkwpLCBpbWFn
ZUJpdG1hcCA9IFdURk1vdmUoaW1hZ2VCaXRtYXApLCBzaG91bGRVcGRhdGVRdWlja0xvb2tJdGVt
VGl0bGUsIHF1aWNrTG9va0l0ZW1Ub0luc2VydElmTmVlZGVkID0gV1RGTW92ZShxdWlja0xvb2tJ
dGVtVG9JbnNlcnRJZk5lZWRlZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGl0ZW1zUmVtYWluaW5nID0gZmlsdGVyZWRJdGVtcy5zaXplKCksIG1lbnUg
PSBXVEZNb3ZlKG1lbnUpLCBzcGFyc2VNZW51SXRlbXNdKE5TTWVudUl0ZW0gKml0ZW0sIE5TVUlu
dGVnZXIgaW5kZXgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaW5kZXggPCBbc3BhcnNlTWVu
dUl0ZW1zIGNvdW50XSk7CiAgICAgICAgIEFTU0VSVCghW3NwYXJzZU1lbnVJdGVtcyBwb2ludGVy
QXRJbmRleDppbmRleF0pOwogICAgICAgICBbc3BhcnNlTWVudUl0ZW1zIHJlcGxhY2VQb2ludGVy
QXRJbmRleDppbmRleCB3aXRoUG9pbnRlcjppdGVtXTsKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnVzZUNvbnRleHRNZW51SXRlbXMoVmVjdG9yPFJlZjxX
ZWJDb250ZXh0TWVudUl0ZW0+PgogICAgICAgICByZXR1cm4gaXRlbS0+ZGF0YSgpOwogICAgIH0p
OwogCi0gICAgZ2V0Q29udGV4dE1lbnVGcm9tSXRlbXMoZGF0YSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oTlNNZW51ICptZW51KSBtdXRhYmxlIHsKKyAgICBnZXRDb250
ZXh0TWVudUZyb21JdGVtcyhkYXRhLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKE5TTWVudSAqbWVudSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcGFnZSgpKSB7CiAgICAg
ICAgICAgICBXZWJDb250ZXh0TWVudVByb3h5Ojp1c2VDb250ZXh0TWVudUl0ZW1zKHsgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCA3MjAwZTk2MDY2MDJjNmRlY2UzZGQ2Yzg1NGI3OGU0Y2JhNjEy
NjVmLi45YzMwODlmZjdkNjZjOTIxMjIwMTMyOWZhOGZjMTBjZmI4NTc3MGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE4Myw3ICsx
ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29u
c3QgRmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvdwogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBJbiBjYXNlIHRoZSBVSSBjbGllbnQgb3ZlcnJpZGVzIGdldFdpbmRvd0ZyYW1lKCksIHdlIGNh
bGwgaXQgaGVyZSB0byBtYWtlIHN1cmUgd2Ugc2VuZCB0aGUgYXBwcm9wcmlhdGUgd2luZG93IGZy
YW1lLgotICAgIG1fdWlDbGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nl
c3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzXSAoRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5TY3JlZW5D
b29yZGluYXRlcykgeworICAgIG1fdWlDbGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0
ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNdIChGbG9hdFJlY3Qgd2luZG93RnJhbWVJ
blNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZsb2F0UmVjdCB3aW5kb3dGcmFtZUluVW5m
bGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xpZW50KCkuY29udmVydFRvVXNlclNwYWNl
KHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5D
b29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3
RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSk7
CiAgICAgfSk7CkBAIC03MDQsMTQgKzcwNCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGRmWm9v
bU91dChQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpwZGZTYXZlVG9QREYoUERGUGx1Z2luSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2F2ZVBERihpZGVudGlmaWVyKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFN0cmluZyYmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTYXZlUERGKGlkZW50aWZpZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dIChTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMJiYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkgewogICAgICAgICBzYXZl
UERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIFdU
Rk1vdmUob3JpZ2luYXRpbmdVUkwpLCBkYXRhUmVmZXJlbmNlKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnBkZk9wZW5XaXRoUHJldmlldyhQREZQbHVnaW5JZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpP
cGVuUERGV2l0aFByZXZpZXcoaWRlbnRpZmllciksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIChTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mbywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBkZlVVSUQpIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Ok9w
ZW5QREZXaXRoUHJldmlldyhpZGVudGlmaWVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9XSAoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBw
ZGZVVUlEKSB7CiAgICAgICAgIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0
aXZlQXBwbGljYXRpb24oV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIFdURk1vdmUoZnJhbWVJ
bmZvKSwgZGF0YSwgcGRmVVVJRCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDE3MTVkZTA1
NDVlYjA4NjM2MjlkNGY2NmU4YjE5YWQyZjhmYWZiZDcuLmVjODE0ZDMwZmFkZjRkOTBlMTBlYjYw
NGY1Yjc4YzM4Njg5MTI1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246On5HUFVQcm9jZXNzQ29ubmVjdGlvbigpCiAKIHZvaWQgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiB7Ci0gICAgYXV0byBwcm90
ZWN0b3IgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBhdXRvIHByb3RlY3RvciA9IFJlZiB7ICp0aGlz
IH07CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25DbG9z
ZWQoKnRoaXMpOwogCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggNWNiM2ZlNjY5NjVhNjZmOGNlMzdhYzA5NWU3
MDZiMTFmZWU0MmI1MC4uNzc0MGRhNDVlYTYyZjFiMjdlZGQwNjFkMTUzYzc2Nzc5NDgzZDU5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydFJlbmRlcmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmCiAgICAgaWYgKCFjb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCi0gICAgY29ubmVjdGlvbi0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3Rh
cnRBdWRpb0Rlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25JRCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGJvb2wgaXNQbGF5aW5nKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpT
dGFydEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGlzUGxheWluZykgbXV0YWJsZSB7CiAgICAgICAgIHNldElzUGxheWlu
Zyhpc1BsYXlpbmcpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwogICAg
IH0pOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpzdG9wUmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYKICAgICBpZiAo
IWNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAK
LSAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGlzUGxheWluZykgbXV0YWJsZSB7
CisgICAgY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklE
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGlzUGxheWluZykgbXV0YWJsZSB7
CiAgICAgICAgIHNldElzUGxheWluZyhpc1BsYXlpbmcpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcighaXNQbGF5aW5nKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyTWFuYWdlci5jcHAKaW5kZXggNjdmOWJjYmZhZWI3NTQ5OTRkYjMxMWJlYTgzZDIwOGY1YWNm
ODFjOC4uZTMzZjM2ZTc4Y2U2MDFlN2U4YWUyZmRhMTk0OTI1NTg0NzZmMjYyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjo6YWRkUHJvdmlkZXIoUmVmPFJl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXIKICAgICBBU1NFUlQoV1RGOjppc01haW5SdW5Mb29wKCkp
OwogICAgIHNldENvbm5lY3Rpb24oJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb3ZpZGVyID0gV1RGTW92
ZShwcm92aWRlcildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIp
XSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBwcm92aWRlci0+aWRlbnRp
ZmllcigpOwogCiAgICAgICAgIEFTU0VSVCghbV9wcm92aWRlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOwpAQCAtODQsNyArODQsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyOjpyZW1vdmVQcm92aWRlcihNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbgogewogICAgIEFT
U0VSVChXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyXSB7CisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVu
dGlmaWVyXSB7CiAgICAgICAgIEFTU0VSVChtX3Byb3ZpZGVycy5jb250YWlucyhpZGVudGlmaWVy
KSk7CiAgICAgICAgIG1fcHJvdmlkZXJzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGZjYjAxMjIyMzQzZTc1OGRlNjY0NjY4
MzUyYmQxMjg0YTdmZmU0MzQuLmM2ZjhjOWEwMjE4MzFlODdiNzlkODM5MmMxMzM3OTU5YzZlMjg3
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseSgKLSAgICAgICAg
TWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1vdmVDb2RlZEZyYW1lcyhzdGFy
dCwgZW5kLCBjdXJyZW50TWVkaWFUaW1lLCBpc0VuZGVkKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byYmIGJ1ZmZlcmVkLCB1aW50NjRfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUlu
Qnl0ZXMpIG11dGFibGUgeworICAgICAgICBNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OlJlbW92ZUNvZGVkRnJhbWVzKHN0YXJ0LCBlbmQsIGN1cnJlbnRNZWRpYVRpbWUsIGlzRW5k
ZWQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBidWZmZXJlZCwgdWludDY0
X3QgdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNl
dEJ1ZmZlcmVkUmFuZ2VzKGJ1ZmZlcmVkKTsKICAgICAgICAgICAgIG1fdG90YWxUcmFja0J1ZmZl
clNpemVJbkJ5dGVzID0gdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzOwogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBjOWZjYjBkNzhmOTNmYzVmMGY4
MTM2NmMwYjEzMDk4YzNmM2UwNmMwLi4yNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEz
YjhiN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBib28KICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAg
ICAgICBhdXRvIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0
aW5nUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVy
LT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
ZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVj
aXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3Rv
clJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgewor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNl
KG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50
aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRS
ZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxv
YWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9p
bnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRl
bnRpZmllcik7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIAog
ICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250
cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTYsNyArMjE2LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAobGVuZ3RoPSV6ZCkiLCBtX251bUJ5dGVzUmVj
ZWl2ZWQpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIG1faW50ZXJj
ZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmV0d29ya0xvYWRNZXRyaWNzXSgpIG11dGFi
bGUgeworICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmV0d29y
a0xvYWRNZXRyaWNzXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikK
ICAgICAgICAgICAgICAgICBkaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNz
KTsKICAgICAgICAgfSk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKIAog
ICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xs
ZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGVycm9yXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVyY2Vw
dENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZXJyb3JdKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZEZhaWxSZXNvdXJjZUxvYWQo
ZXJyb3IpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNGFjYjgwMTNlOTQ2ZmJlMGM4ZTg3
ZTY2MWJmZWI5MjFlMjdhMWVlNy4uY2YxNDVhYTFkYjMxYTM2YzQwNmVkNTAwOTRhY2I1NWI5Nzdl
ZDg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRlY3JlYXNlQnVmZmVyZWRBbW91bnQoc2l6ZV90IGJ5dGVMZW5ndGgpCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZE1lc3NhZ2UoVCYmIG1lc3Nh
Z2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBieXRlTGVuZ3RoXSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnl0ZUxlbmd0
aF0gewogICAgICAgICBkZWNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpOwogICAgIH07
CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCB1bnNpZ25lZCBXZWJTb2NrZXRDaGFu
bmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3Nl
KGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICAvLyBBbiBhdHRlbXB0IHRv
IHNlbmQgY2xvc2luZyBoYW5kc2hha2UgbWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFu
bmVsIGNsb3NlZCBhbmQgZGVyZWZlcmVuY2VkLgotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIG1f
aXNDbG9zaW5nID0gdHJ1ZTsKICAgICBpZiAobV9jbGllbnQpCkBAIC0yMTUsNyArMjE1LDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7
CiAgICAgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJl
bW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKICAgICBsb2dF
cnJvck1lc3NhZ2UocmVhc29uKTsKICAgICBpZiAobV9jbGllbnQpCkBAIC0zMzcsNyArMzM3LDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZSh1bnNpZ25lZCBzaG9ydCBjb2RlLCBT
dHJpbmcmJiByZWFzb24pCiAgICAgbV9pbnNwZWN0b3IuZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1
bWVudC5nZXQoKSk7CiAKICAgICAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xvc2luZyBoYW5kc2hh
a2UgbWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3NlZCBhbmQgZGVyZWZl
cmVuY2VkLgotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJl
ZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIGJvb2wgcmVjZWl2ZWRDbG9zaW5nSGFu
ZHNoYWtlID0gY29kZSAhPSBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29k
ZUFibm9ybWFsQ2xvc3VyZTsKICAgICBpZiAocmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKQpAQCAt
Mzg3LDcgKzM4Nyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3VzcGVuZCgpCiAKIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKIHsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKKyAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgbV9p
c1N1c3BlbmRlZCA9IGZhbHNlOwogICAgIHdoaWxlICghbV9pc1N1c3BlbmRlZCAmJiAhbV9wZW5k
aW5nVGFza3MuaXNFbXB0eSgpKQogICAgICAgICBtX3BlbmRpbmdUYXNrcy50YWtlRmlyc3QoKSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAKaW5kZXggYzZkYmY1MjcwYWJiZDQ2OTdmMmNhOGMyMDZiMzU4Zjg0Yjg0YmYxOC4uNWM0
OTFjYTI1YjljYjFiM2ViYTE2Y2M5YjEwMTRiYjQzOThkMWJmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJl
cXVlc3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24oc2Vj
dXJpdHlPcmlnaW4udG9TdHJpbmcoKSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9uSGFuZGxlciksIHNl
Y3VyaXR5T3JpZ2luXShib29sIGFsbG93ZWQpIG11dGFibGUgeworICAgIG1fcGFnZS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9u
SGFuZGxlciksIHNlY3VyaXR5T3JpZ2luXShib29sIGFsbG93ZWQpIG11dGFibGUgewogICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI+KCktPmRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3Ry
aW5nKCksIGFsbG93ZWQpOwogCiAgICAgICAgIGF1dG8gcGVybWlzc2lvbkhhbmRsZXJzID0gbV9y
ZXF1ZXN0c1Blck9yaWdpbi50YWtlKHNlY3VyaXR5T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAppbmRleCAwOTBkNWE0MGNlYmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwLi5iOTdh
ODUyOGJlZmIwYzYyZGU2MzUxMjFjYjJhYmEwYzY1MWU1MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cG9wUG9wdXBz
RW5hYmxlZFN0YXRlKCkKIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGx1Z2luVGhyZWFkQXN5bmND
YWxsKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiB1c2VyRGF0YSkKIHsKLSAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVu
Y3Rpb24sIHVzZXJEYXRhXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZnVuY3Rpb24sIHVzZXJEYXRhXSB7CiAgICAgICAgIGlm
ICghcHJvdGVjdGVkVGhpcy0+bV9pc1N0YXJ0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IGFiNTljM2U5MDU5OTM2YmFmZGIyMzEyODMyYjAwZjZhMmVhYWY3MGYuLjA1YTc2ODQwOTA5
OTQxYzY4MDQ2YWRkYWFiMGQ2MDRjYWU3YzAzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNjg2LDcgKzY4Niw3IEBAIGlu
bGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUsIEhUTUxQbHVnSW5FbGVt
ZW50KiBwbHVnaW5FbGVtZW50KQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKICAg
ICBpZiAobV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkKSB7Ci0gICAgICAgIG1fcGRmVGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIlBERiBkb2N1bWVudCB0aHJlYWQiLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV9wZGZUaHJl
YWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUERGIGRvY3VtZW50IHRocmVhZCIsIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB0aHJlYWRF
bnRyeShXVEZNb3ZlKHByb3RlY3RlZFRoaXMpKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtNzA2
LDcgKzcwNiw3IEBAIFBERlBsdWdpbjo6flBERlBsdWdpbigpCiB2b2lkIFBERlBsdWdpbjo6cGRm
TG9nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIWlzTWFpblJ1bkxvb3AoKSkg
ewotICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG1l
c3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgICAgICBwZGZMb2cobWVz
c2FnZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC03NzEsNyArNzcxLDcgQEAg
dm9pZCBQREZQbHVnaW46OnJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCkKICNpZiAh
TE9HX0RJU0FCTEVECiAgICAgICAgIHBkZkxvZygiRGlzYWJsaW5nIGluY3JlbWVudGFsIFBERiBs
b2FkaW5nIG9uIGJhY2tncm91bmQgdGhyZWFkIik7CiAjZW5kaWYKLSAgICAgICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAg
ICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
IHsKICAgICAgICAgICAgIHJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCB2b2lkIFBERlBs
dWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3Np
dGlvbiwgQ29tcGxldAogICAgIHBkZkxvZyhtYWtlU3RyaW5nKCJTY2hlZHVsaW5nIGEgc3RyZWFt
IGxvYWRlciBmb3IgcmVxdWVzdCAiLCBpZGVudGlmaWVyLCAiICgiLCBjb3VudCwgIiBieXRlcyBh
dCAiLCBwb3NpdGlvbiwgIikiKSk7CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKCpjb3JlRnJh
bWUsIG1fc3RyZWFtTG9hZGVyQ2xpZW50LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXJdIChSZWZQdHI8V2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+JiYgbG9hZGVyKSB7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQoKmNvcmVGcmFtZSwgbV9zdHJlYW1Mb2FkZXJDbGllbnQsIFdURk1vdmUocmVzb3VyY2VS
ZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVy
XSAoUmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiYmIGxvYWRlcikg
ewogICAgICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0
byBpdGVyYXRvciA9IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5maW5kKGlkZW50aWZp
ZXIpOwpAQCAtMTgxNSw3ICsxODE1LDcgQEAgdm9pZCBQREZQbHVnaW46OnRyeVJ1blNjcmlwdHNJ
blBERkRvY3VtZW50KCkKICAgICBpZiAoIW1fcGRmRG9jdW1lbnQgfHwgIW1fZG9jdW1lbnRGaW5p
c2hlZExvYWRpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoVmVjdG9yPFJldGFp
blB0cjxDRlN0cmluZ1JlZj4+JiYgc2NyaXB0cykgbXV0YWJsZSB7CisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKFZlY3Rv
cjxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiYmIHNjcmlwdHMpIG11dGFibGUgewogICAgICAgICBp
ZiAoc2NyaXB0cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNjFhYzYxZmUz
ZDY4ODRhZDRkZDJlNWM4OGU2MTYxMGU5NDZlOWIyMi4uYTNkNmNjMzJmNjU0OWZhMGZhYjRhMjQ1
MDhmZTIyZjA0N2Y5ZDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0
cmVhbTo6c3RhcnQoKQogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGx1Z2luVmlldy0+bV9wbHVnaW5F
bGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKIAotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVQbHVnaW5T
dHJlYW1Mb2FkKCpmcmFtZSwgKnRoaXMsIFJlc291cmNlUmVxdWVzdCB7bV9yZXF1ZXN0fSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVmUHRyPE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyPiYmIGxvYWRlcikgeworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKCpmcmFtZSwgKnRoaXMs
IFJlc291cmNlUmVxdWVzdCB7bV9yZXF1ZXN0fSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9XShSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+JiYgbG9hZGVyKSB7
CiAgICAgICAgIG1fbG9hZGVyID0gV1RGTW92ZShsb2FkZXIpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCAwZTM0NjMxYWQ2ZmMyNDkxYjNk
YjI3NmIzZjE0ZmQwNjFjZWU5NjAwLi5mOTU4ZmU2ZDRiMjBmMjRjNDgyYjM1NjY2MTZkOWUyNTYz
NjhlOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBibG9iVVJMID0gYmxvYlVSTC5pc29sYXRlZENvcHkoKV0gKCkgeworICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYmxv
YlVSTCA9IGJsb2JVUkwuaXNvbGF0ZWRDb3B5KCldICgpIHsKICAgICAgICAgYXV0byogc2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkgewogICAgICAgICAgICAgZGlkRmFpbChpbnRl
cm5hbEVycm9yKGJsb2JVUkwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5k
ZXggNzJlZTliYTRhNTJhMDA4OTMxOWYyZGYwMjVmYzBmYmZmNWYxYzA4Zi4uODJiMjkzNTdjZTA4
Y2M0MDY0YzU2OTNjMGViN2UwMTgyZmFiMjg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVySW50ZXJuYWwoSW5qZWN0ZWRCdQogICAg
IGlmIChpdCA9PSBtX3VzZXJNZXNzYWdlSGFuZGxlcnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAogICAgIGF1dG8mIHVzZXJNZXNzYWdlSGFuZGxlcnMgPSBp
dC0+dmFsdWU7CiAgICAgYm9vbCB1c2VyTWVzc2FnZUhhbmRsZXJzQ2hhbmdlZCA9IHVzZXJNZXNz
YWdlSGFuZGxlcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbdXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
SWRlbnRpZmllcl0oYXV0byYgcGFpcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMWJkYWY4MjEyOTFkMzY2NWE5
MWE0YjhmMTUyMGVkODEwODBkMmU4OC4uNDNjZmUzMWNlODRkZDYwYzRkOWU4MTE0MzgxMWRkMjYw
MWJkZWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGUKIAogICAgICAgICBzY3JvbGxpbmdUcmVlLT53aWxsUHJvY2Vzc1doZWVsRXZlbnQoKTsK
IAotICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlLCB3aGVl
bEV2ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgcGFnZUlELCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpk
aXNwYXRjaChbc2Nyb2xsaW5nVHJlZSwgd2hlZWxFdmVudCwgcGxhdGZvcm1XaGVlbEV2ZW50LCBw
cm9jZXNzaW5nU3RlcHMsIHBhZ2VJRCwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsK
ICAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZykpIHsKICAgICAgICAgICAgICAgICBz
Y3JvbGxpbmdUcmVlLT53aWxsU2VuZEV2ZW50VG9NYWluVGhyZWFkKHBsYXRmb3JtV2hlZWxFdmVu
dCk7CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hXaGVlbEV2ZW50Vmlh
TWFpblRocmVhZChwYWdlSUQsIHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcyk7CkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGUKICNpZiBFTkFCTEUoTUFDX0dFU1RV
UkVfRVZFTlRTKQogdm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQp
CiB7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2VJRCwg
Z2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRj
aEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CiAgICAgfSk7CiB9CkBAIC0yMTcs
NyArMjE3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3UKICAgICB9CiAKICAgICBpZiAodXBk
YXRlTGlzdFdhc0VtcHR5KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFi
bGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hUb3VjaEV2ZW50cygpOwog
ICAgICAgICB9KTsKICAgICB9CkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoVG91Y2hFdmVudHMoKQogdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
V2hlZWxFdmVudFZpYU1haW5UaHJlYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwYWdlSUQsIHdoZWVsRXZlbnQsIHN0ZXBzID0gcHJvY2Vzc2luZ1N0ZXBz
IC0gV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkXSgpIG11dGFibGUg
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHBhZ2VJRCwgd2hlZWxFdmVudCwgc3RlcHMgPSBwcm9jZXNzaW5nU3RlcHMgLSBXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWRdKCkgbXV0YWJsZSB7CiAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoV2hlZWxFdmVudChwYWdlSUQsIHdoZWVsRXZlbnQs
IHN0ZXBzKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAppbmRleCA0NDY3ZTQ4ODhjNTY4
M2VmYzIxYzU5NmU0NGJhODQ4ZjY5ZDc1NTM1Li42YTI2ZmVhODhiNjE3OTVlMDU5ZDNhNWZhMTk0
Y2VjOWRmZjNmMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlCiAgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUuZ2V0KCkudmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm87
CiAgICAgfQogICAgIGlmICh1cGRhdGVMaXN0V2FzRW1wdHkpIHsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNw
YXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGYxNzVkMDlh
OTBkNTJkNjJmNzAxMWQ2ZDUzNWMwYTE2Yjc0ZTljMmYuLjNlNjBlZThhMjM5MWQxYjhkZWI5YzU4
YTNkNjAwMzViMTA2NWYzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDbG9z
ZSgpCiAKIHZvaWQgV2ViUGFnZTo6c3VzcGVuZEZvclByb2Nlc3NTd2FwKCkKIHsKLSAgICBhdXRv
IGZhaWxlZFRvU3VzcGVuZCA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICBhdXRvIGZhaWxlZFRvU3VzcGVuZCA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfV0gewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZh
aWxUb1N1c3BlbmRBZnRlclByb2Nlc3NTd2FwKCkpOwogICAgIH07CiAKQEAgLTM3NjYsNyArMzc2
Niw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoY29yZVdvcmxkKTsKICAg
ICB9CiAKLSAgICBydW5KYXZhU2NyaXB0KHdlYkZyYW1lLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCB3b3JsZERhdGEuZmlyc3QsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdWx0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+JiBleGNlcHRpb24pIG11dGFibGUgeworICAgIHJ1bkphdmFTY3Jp
cHQod2ViRnJhbWUuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VsdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZXhj
ZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIFdF
QlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgInJ1bkphdmFTY3JpcHRJbkZyYW1lSW5T
Y3JpcHRXb3JsZDogUmVxdWVzdCB0byBydW4gSmF2YVNjcmlwdCBmYWlsZWQgd2l0aCBlcnJvciAl
e3ByaXZhdGV9cyIsIGV4Y2VwdGlvbi0+bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
ZWxzZQpAQCAtNTUwNiw3ICs1NTA2LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNGb3JQcmlu
dGluZyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmkKIHsKICAg
ICBiZWdpblByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbyk7CiAgICAgaWYgKG1fcHJpbnRDb250
ZXh0ICYmIG1fcHJpbnRPcGVyYXRpb24pIHsKLSAgICAgICAgbV9wcmludE9wZXJhdGlvbi0+c3Rh
cnRQcmludChtX3ByaW50Q29udGV4dC5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9wcmludE9wZXJhdGlvbi0+c3RhcnRQcmludChtX3ByaW50Q29udGV4dC5nZXQoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgbV9wcmludE9wZXJhdGlvbiA9IG51bGxwdHI7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgICAgIH0pOwpAQCAt
NjEwMSw3ICs2MTAxLDcgQEAgdm9pZCBXZWJQYWdlOjplbGVtZW50RGlkQmx1cihXZWJDb3JlOjpF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50ID09ICZlbGVtZW50
KSB7CiAgICAgICAgIG1fcmVjZW50bHlCbHVycmVkRWxlbWVudCA9IFdURk1vdmUobV9mb2N1c2Vk
RWxlbWVudCk7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKV0geworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3Jl
Y2VudGx5Qmx1cnJlZEVsZW1lbnQpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWxl
bWVudERpZEJsdXIoKSk7CkBAIC03MDQ3LDcgKzcwNDcsNyBAQCB2b2lkIFdlYlBhZ2U6Omhhc1N0
b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFi
bGVEbwogCiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IFdlYkZyYW1lJiBmcmFtZSwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
V1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZS5m
cmFtZUlEKCksIG1faWRlbnRpZmllciwgbV93ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBzY29wZSks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHBh
Z2VJRCA9IG1faWRlbnRpZmllciwgZnJhbWVJRCA9IGZyYW1lLmZyYW1lSUQoKV0oUmVxdWVzdFN0
b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9w
RnJhbWVEb21haW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRlbnRpZmllciwgbV93ZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBzY29wZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnJhbWUg
PSBtYWtlUmVmKGZyYW1lKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFtZUlEID0gZnJhbWUu
ZnJhbWVJRCgpXShSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBpZiAocmVzdWx0Lndhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcykgewogICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQuc2NvcGUpIHsKICAgICAgICAgICAg
IGNhc2UgU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJGcmFtZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmlu
ZGV4IGM4YzRhZjdlYmQ4ZjExY2Y2YzhjYTdhZTdlMDdhMDNiNGQ1OTQ1NDkuLjAxNDBiMDNhODlm
Yzc5ZjZlNzA0NmJjNGFlMWI0Yzg0NmQ3MzVjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAt
MTAyLDE0ICsxMDIsMTQgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFBlcmZvcm1S
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmUKIAogICAgIGlmIChtX3dh
aXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBXRUJVUkxTQ0hFTUVUQVNLUFJP
WFlfUkVMRUFTRV9MT0coImRpZFBlcmZvcm1SZWRpcmVjdGlvbjogUmVjZWl2ZWQgcmVkaXJlY3Qg
ZHVyaW5nIHByZXZpb3VzIHJlZGlyZWN0IHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAg
ICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZWRp
cmVjdFJlc3BvbnNlID0gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHJlZGlyZWN0UmVzcG9uc2UgPSBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9u
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpZFBlcmZv
cm1SZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyID0gdHJ1ZTsKIAot
ICAgIGF1dG8gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3QsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KSBtdXRhYmxlIHsKKyAgICBhdXRvIGlubmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Qs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgbV93YWl0aW5nRm9yQ29tcGxl
dGlvbkhhbmRsZXIgPSBmYWxzZTsKIAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94
eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIGlmIChtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBXRUJV
UkxTQ0hFTUVUQVNLUFJPWFlfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogUmVjZWl2
ZWQgcmVzcG9uc2UgZHVyaW5nIHJlZGlyZWN0IHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0g
ICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXNwb25zZV0geworICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCByZXNwb25zZV0gewogICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzQsNyBA
QCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3dhaXRp
bmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IHRydWU7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIG1fd2FpdGluZ0Zv
ckNvbXBsZXRpb25IYW5kbGVyID0gZmFsc2U7CiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1Rh
c2soKTsKICAgICB9KTsKQEAgLTE0NywxMyArMTQ3LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFz
a1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkK
IAogICAgIGlmIChtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBXRUJV
UkxTQ0hFTUVUQVNLUFJPWFlfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBSZWNlaXZlZCBk
YXRhIGR1cmluZyByZXNwb25zZSBwcm9jZXNzaW5nLCBxdWV1aW5nIGl0LiIpOwotICAgICAgICBx
dWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YVZlY3Rv
ciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0geworICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhVmVjdG9yID0gVmVjdG9yIHsgZGF0YSwg
c2l6ZSB9XSB7CiAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhVmVjdG9yLnNpemUoKSwg
ZGF0YVZlY3Rvci5kYXRhKCkpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRh
dGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJv
Y2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgV2ViVVJM
U2NoZW1lVGFza1Byb3h5OjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVy
KSB7Ci0gICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBlcnJvcl0geworICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBlcnJvcl0gewogICAgICAgICAgICAgZGlkQ29tcGxldGUoZXJyb3IpOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3YmFiNDkyNzVlMmZjZTc3Mjgy
MGNmMTE1ZmI5MmVkODUyYmIzODJhLi4zZDFkMmZlMjZiZTlmOWRjYzVlMTI1M2EzNWI1OWE4NGRl
ZjgxZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtNzg5LDcgKzc4OSw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlU3lu
dGhldGljQ2xpY2soTm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpG
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY29udGVudENoYW5nZU9ic2VydmVyLnN0b3BD
b250ZW50T2JzZXJ2YXRpb24oKTsKLSAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHRhcmdldE5vZGUgPSBSZWY8Tm9kZT4obm9kZVJlc3BvbmRp
bmdUb0NsaWNrKSwgbG9jYXRpb24sIG1vZGlmaWVycywgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlLCBw
b2ludGVySWRdIHsKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHRhcmdldE5vZGUgPSBSZWY8Tm9kZT4obm9kZVJlc3BvbmRpbmdUb0NsaWNrKSwg
bG9jYXRpb24sIG1vZGlmaWVycywgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlLCBwb2ludGVySWRdIHsK
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNDbG9zZWQgfHwgIXByb3RlY3RlZFRoaXMt
PmNvcmVQYWdlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTgxMCw3ICs4MTAsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcoV0tDb250ZW50Q2hh
bmdlIG9ic2VydmVkQ29udGVudENoYQogICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2
YXRpb24sIHN0cmVhbSA8PCAiZGlkRmluaXNoQ29udGVudENoYW5nZU9ic2VydmluZzogcGVuZGlu
ZyB0YXJnZXQgbm9kZSgiIDw8IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZSA8PCAiKSIpOwog
ICAgIGlmICghbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlKQogICAgICAgICByZXR1cm47Ci0g
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
YXJnZXROb2RlID0gUmVmPE5vZGU+KCptX3BlbmRpbmdTeW50aGV0aWNDbGlja05vZGUpLCBvcmln
aW5hbERvY3VtZW50ID0gbWFrZVdlYWtQdHIobV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlLT5k
b2N1bWVudCgpKSwgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlLCBsb2NhdGlvbiA9IG1fcGVuZGluZ1N5
bnRoZXRpY0NsaWNrTG9jYXRpb24sIG1vZGlmaWVycyA9IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNr
TW9kaWZpZXJzLCBwb2ludGVySWQgPSBtX3BlbmRpbmdTeW50aGV0aWNDbGlja1BvaW50ZXJJZF0g
eworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
dGFyZ2V0Tm9kZSA9IFJlZjxOb2RlPigqbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlKSwgb3Jp
Z2luYWxEb2N1bWVudCA9IG1ha2VXZWFrUHRyKG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZS0+
ZG9jdW1lbnQoKSksIG9ic2VydmVkQ29udGVudENoYW5nZSwgbG9jYXRpb24gPSBtX3BlbmRpbmdT
eW50aGV0aWNDbGlja0xvY2F0aW9uLCBtb2RpZmllcnMgPSBtX3BlbmRpbmdTeW50aGV0aWNDbGlj
a01vZGlmaWVycywgcG9pbnRlcklkID0gbV9wZW5kaW5nU3ludGhldGljQ2xpY2tQb2ludGVySWRd
IHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNDbG9zZWQgfHwgIXByb3RlY3RlZFRo
aXMtPmNvcmVQYWdlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghb3JpZ2lu
YWxEb2N1bWVudCB8fCAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAhPSBvcmlnaW5hbERvY3VtZW50
KQpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkaW5nSW1h
Z2VGb3JFbGVtZW50KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYm9vbCBzaG91bGRTZW5kU25hcHNob3QgPSBtX3BlbmRpbmdJbWFnZUVs
ZW1lbnRzRm9yRHJvcFNuYXBzaG90LmlzRW1wdHkoKTsKLSAgICBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihlbGVtZW50LCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHNob3VsZFNlbmRTbmFwc2hvdF0geworICAgIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5maW5hbGl6ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVyKGVsZW1l
bnQsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2hvdWxkU2VuZFNuYXBzaG90XSB7
CiAgICAgICAgIGlmIChzaG91bGRTZW5kU25hcHNob3QpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5jb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsKICAgICB9KTsKQEAgLTEyMzQs
NyArMTIzNCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmlu
Z0FuZFJlZm9jdXNpbmdFbGVtZW50SWZOZWVkZWQoRWxlbWVuCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1faGFzUGVuZGluZ0lucHV0Q29udGV4dFVwZGF0ZUFmdGVyQmx1cnJpbmdBbmRSZWZvY3Vz
aW5nRWxlbWVudCA9IHRydWU7Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmIChtX2hhc1BlbmRp
bmdJbnB1dENvbnRleHRVcGRhdGVBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnQpCiAg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZUlucHV0Q29udGV4
dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudCgpKTsKICAgICAgICAgbV9oYXNQZW5k
aW5nSW5wdXRDb250ZXh0VXBkYXRlQWZ0ZXJCbHVycmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50ID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAppbmRleCA1ZWRhNWZiYmMyM2M3Y2QwYWIw
MzY3NTE0MDZkNTQ4NjhiOWExMjI4Li4wOTlkYjg2YTgzOTM2ZTY3ODZkNDY0M2QzYTZmYzNkNGRj
MjFmZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9p
ZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGlt
ZUF1ZGlvU291cmNlPiYmIHNvdXIKICAgICBBU1NFUlQoV1RGOjppc01haW5SdW5Mb29wKCkpOwog
ICAgIHNldENvbm5lY3Rpb24oc291cmNlLT5jb25uZWN0aW9uKCkpOwogCi0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc291cmNlID0g
V1RGTW92ZShzb3VyY2UpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc291cmNlID0gV1RGTW92ZShzb3VyY2Up
XSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBzb3VyY2UtPmlkZW50aWZp
ZXIoKTsKIAogICAgICAgICBBU1NFUlQoIW1fYXVkaW9Tb3VyY2VzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6
YWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlPiYmIHNvdXIKICAgICBBU1NF
UlQoV1RGOjppc01haW5SdW5Mb29wKCkpOwogICAgIHNldENvbm5lY3Rpb24oc291cmNlLT5jb25u
ZWN0aW9uKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc291cmNlID0gV1RGTW92ZShzb3VyY2UpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgc291cmNlID0gV1RGTW92ZShzb3VyY2UpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBzb3VyY2UtPmlkZW50aWZpZXIoKTsKIAogICAgICAgICBBU1NFUlQoIW1fdmlk
ZW9Tb3VyY2VzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lk
IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphZGRTb3VyY2UoUmVmPFJlbW90ZVJlYWx0aW1l
VmlkZW9Tb3VyY2U+JiYgc291cgogdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6cmVt
b3ZlU291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluUnVuTG9vcCgpKTsKLSAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVy
XSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBpZGVudGlmaWVyXSB7CiAgICAgICAgIEFTU0VSVChtX2F1ZGlvU291cmNlcy5jb250
YWlucyhpZGVudGlmaWVyKSB8fCBtX3ZpZGVvU291cmNlcy5jb250YWlucyhpZGVudGlmaWVyKSk7
CiAgICAgICAgIGlmICghbV9hdWRpb1NvdXJjZXMucmVtb3ZlKGlkZW50aWZpZXIpKQogICAgICAg
ICAgICAgbV92aWRlb1NvdXJjZXMucmVtb3ZlKGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwCmluZGV4IGY4OTFhNTMzMTQ1MGJmMTdlYWY5NWIwMGUzMThkYWUzYzczODc1NGUuLmQ0
YmQwOGNkOTViOGNjOWVlYzY0MGYzYTk2NjdiZTdiM2Y3ZDZlNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1Nv
dXJjZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6UmVt
b3RlUmVhbHRpbWVBdWRpb1NvdXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmkKIAogdm9p
ZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpCiB7
Ci0gICAgbV9wcm94eS5jcmVhdGVSZW1vdGVNZWRpYVNvdXJjZShkZXZpY2VJREhhc2hTYWx0KCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGJvb2wgc3VjY2VlZGVkLCBh
dXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMs
IGF1dG8mJiwgYXV0bywgYXV0bykgeworICAgIG1fcHJveHkuY3JlYXRlUmVtb3RlTWVkaWFTb3Vy
Y2UoZGV2aWNlSURIYXNoU2FsdCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYgc2V0dGluZ3Ms
IGF1dG8mJiBjYXBhYmlsaXRpZXMsIGF1dG8mJiwgYXV0bywgYXV0bykgewogICAgICAgICBpZiAo
IXN1Y2NlZWRlZCkgewogICAgICAgICAgICAgbV9wcm94eS5kaWRGYWlsKFdURk1vdmUoZXJyb3JN
ZXNzYWdlKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5k
ZXggNDNmM2MzNzY1YzcwOTQ1MzNjN2E3YTUyZjc0MWUwYjMyMjAwNmMwYi4uYzk3ZmVjM2U0OWFk
ZjYwOWEwOWFkYWI3NmQxYzY4ODYxOGJlODhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcApA
QCAtNjcsNyArNjcsNyBAQCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpSZW1vdGVSZWFsdGlt
ZVZpZGVvU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaQogCiB2b2lkIFJlbW90ZVJl
YWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKCkKIHsKLSAgICBtX3By
b3h5LmNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKGRldmljZUlESGFzaFNhbHQoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYm9vbCBzdWNjZWVkZWQsIGF1dG8mJiBlcnJv
ck1lc3NhZ2UsIGF1dG8mJiBzZXR0aW5ncywgYXV0byYmIGNhcGFiaWxpdGllcywgYXV0byYmIHBy
ZXNldHMsIGF1dG8gc2l6ZSwgYXV0byBmcmFtZVJhdGUpIG11dGFibGUgeworICAgIG1fcHJveHku
Y3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoZGV2aWNlSURIYXNoU2FsdCgpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNz
YWdlLCBhdXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMsIGF1dG8mJiBwcmVzZXRz
LCBhdXRvIHNpemUsIGF1dG8gZnJhbWVSYXRlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFzdWNj
ZWVkZWQpIHsKICAgICAgICAgICAgIG1fcHJveHkuZGlkRmFpbChXVEZNb3ZlKGVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMGY3ZmZjMDk4
MTM2MWM1YTk5Nzk0NTM1YTVhNWYxMTczNTViNDUwLi43YjM0ZTQzODBmYzI4ZmEwMDE1YzEzYzc3
NzM0ZGFlZGI4Y2JiZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChIVE1MVmlkZW9FbGVtZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Bh
Z2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVt
ZW50KSksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElk
LCB2aWRlb0VsZW1lbnRQdHIgPSAmdmlkZW9FbGVtZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHN1Y2Nlc3MpIG11dGFibGUgeworICAgIG1f
cGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0Vs
ZW1lbnQpKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBjb250ZXh0SWQs
IHZpZGVvRWxlbWVudFB0ciA9ICZ2aWRlb0VsZW1lbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gc3VjY2VzcykgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVuCiAKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhvc3Rp
bmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCi0gICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhp
cywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKKyAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBj
b250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
IHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSkpOwpAQCAtNDE3LDcgKzQxNyw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50CiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNl
KSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSAgICBtb2RlbC0+d2Fp
dEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXMsIGNvbnRleHRJZCwgbW9kZWxdICgpIG11dGFibGUgeyAvLyBuZWVkIHRoaXMgZm9y
IHJldHVybiB2aWRlbyBsYXllcgorICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVU
aGVuKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgY29udGV4dElkLCBtb2Rl
bF0gKCkgbXV0YWJsZSB7IC8vIG5lZWQgdGhpcyBmb3IgcmV0dXJuIHZpZGVvIGxheWVyCiAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZCwgbW9kZWxdICgpIG11dGFibGUgewogICAgICAg
ICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewpAQCAtNDM4LDcgKzQz
OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgYXV0byBbbW9kZWwsIGludGVyZmFj
ZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogICAgIENBTGF5ZXIqIHZp
ZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7
CiAKLSAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUg
eworICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkp
OwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4
aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgaWYgKCF2
aWRlb0VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCA9IFdU
Rk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdmlkZW9FbGVtZW50ID0gV1RG
TW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAgICAgICAgdmlkZW9FbGVtZW50LT53
aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkK
ICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29udGV4dElk
KSk7CkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gZXhpdCBmdWxsc2NyZWVuIG5vdyBpZiBpdCB3YXMgcHJldmlvdXNs
eSByZXF1ZXN0ZWQgZHVyaW5nIGFuIGFuaW1hdGlvbi4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnRdIHsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB2aWRlb0VsZW1lbnRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkK
ICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQoKnZpZGVvRWxlbWVudCwgW10oYm9vbCkgeyB9KTsKICAgICB9KTsKQEAgLTQ5OCwxMiAr
NDk4LDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50
ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29u
dGV4dElkLCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkK
ICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAg
ICB9KTsKICNlbHNlCi0gICAgbW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9k
ZWxdKCkgbXV0YWJsZSB7CisgICAgbW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4o
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9k
ZWxdKCkgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlLCBt
b2RlbF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHRJZCwgaW50ZXJmYWNlXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBj
b250ZXh0SWQsIGludGVyZmFjZV0gewpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQgfHwgIXRhcmdldElzRnVsbHNjcmVlbiB8
fCBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCwgbW9kZSwgc3RhbmRieV0g
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHZpZGVvRWxlbWVudCwgbW9kZSwgc3RhbmRieV0gewogICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZW50ZXJWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoKnZpZGVvRWxlbWVudCwgbW9kZSwgc3RhbmRieSk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCmluZGV4IDg5ZDgwOGM5ZGRlODkzNjRmNWU3YWEyYjEzZGY4N2RjZDAyMmExODMu
LmQ1OTE2YzFhNDNjYTlhNjQ1YjY3Y2ViZTI0MGNhZDVjZDk5NWIxZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9IGRhdGFi
YXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgc3BhY2VSZXF1ZXN0ZXIgPSBzdG9yYWdl
UXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMpXSAoKSBtdXRhYmxlIHsKKyAgICBkaXNw
YXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQs
IGRpcmVjdG9yeSA9IGRhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgc3BhY2VS
ZXF1ZXN0ZXIgPSBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKIAogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CkBAIC0xMjIsNyArMTIyLDcgQEAgSURCU2VydmVyOjpJREJDb25u
ZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkg
Y29uc3QKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1
ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOwogICAgIH0pOwpAQCAt
MTMwLDE0ICsxMzAsMTQgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGEKIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsK
KyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVz
dERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVk
Q29weSgpXSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAg
ICAgbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CkBAIC0xNDUs
MTI2ICsxNDUsMTI2IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhCiAKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0geworICAg
IGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
cmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSB0cmFuc2Fj
dGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5
KCldIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSwgZXJyb3IgPSBlcnJvci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7Ci0gICAgZGlz
cGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBlcnJvciA9IGVycm9yLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNrUmVwbHko
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIgPSB0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3Iu
aXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENvbW1p
dFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5p
c29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5
KCldIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENyZWF0ZU9iamVjdFN0b3Jl
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
RGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAg
ICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNo
VGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVzdWx0RGF0
YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29s
YXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCld
IHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIGRp
c3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
c3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNr
UmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXN1bHREYXRhID0g
cmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCld
IHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29w
eSgpXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1
bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFt
ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hU
YXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0
YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlc3VsdERhdGEgPSByZXN1bHRE
YXRhLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRS
ZW5hbWVJbmRleChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0g
ICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRj
aFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlc3VsdERh
dGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWRQdXRPckFkZChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogewotICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0UmVjb3JkKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xh
dGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0g
ewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsUmVjb3JkcyhyZXN1bHRE
YXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVw
bHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSA9IHJl
c3VsdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlz
b2xhdGVkQ29weSgpXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRDb3Vu
dChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZERlbGV0ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIGRp
c3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
c3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNr
UmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXN1bHREYXRhID0g
cmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkRGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogewotICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3BlbkN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29s
YXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcmVzdWx0RGF0YSA9IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCld
IHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0
RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5z
YWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+YWJvcnRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0pOwpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRy
YW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYKIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCBwZW5kaW5nQ291
bnRSZXF1ZXN0KQogewotICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCksIHBlbmRpbmdDb3VudFJlcXVlc3RdIHsKKyAgICBkaXNwYXRjaFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXNvdXJjZUlkZW50aWZpZXIgPSBy
ZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHBlbmRpbmdDb3VudFJlcXVlc3RdIHsK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZl
ci0+Y29tbWl0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyLCBwZW5kaW5nQ291bnRSZXF1
ZXN0KTsKICAgICB9KTsKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JgogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9
IHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2Nr
IH07CiAgICAgICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOwogICAgIH0pOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRh
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiBpbmZvKQogewotICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9
IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENv
cHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUo
cmVzdWx0RGF0YSwgaW5mbyk7CiAgICAgfSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXN1bHQKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0
ZWRDb3B5KCksIG9iamVjdFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFtZS5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwg
b2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBt
X3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7
CiAgICAgfSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXMKIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEu
aXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSA9IG5ld05hbWUu
aXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNv
bGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSA9IG5ld05hbWUuaXNv
bGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICB9KTsKQEAgLTMxMiw3ICsz
MTIsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlcwogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKLSAgICBkaXNwYXRjaFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSBy
ZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyXSB7CisgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
XSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9z
ZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CiAgICAgfSk7CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3QK
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewot
ICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBpbmZvID0gaW5mby5pc29s
YXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGlu
Zm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Nl
cnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBp
bmZvKTsKICAgICB9KTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LAogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIGRpc3BhdGNoVGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRh
Lmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSA9IGluZGV4
TmFtZS5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRD
b3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0gaW5kZXhOYW1lLmlzb2xh
dGVkQ29weSgpXSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAg
ICAgICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4TmFtZSk7CiAgICAgfSk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSkKIHsKLSAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlz
b2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1l
Lmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sg
fTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgfSk7CkBAIC0zNDQs
NyArMzQ0LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIAogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25z
dCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewot
ICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlEYXRhID0ga2V5RGF0
YS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRl
TW9kZV0geworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGtleURhdGEg
PSBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCBv
dmVyd3JpdGVNb2RlXSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY28KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERh
dGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRD
b3B5KCksIGdldFJlY29yZERhdGEgPSBnZXRSZWNvcmREYXRhLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVx
dWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZ2V0UmVjb3JkRGF0YSA9IGdl
dFJlY29yZERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBn
ZXRSZWNvcmREYXRhKTsKICAgICB9KTsKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgYwogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldEFsbFJl
Y29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKLSAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5p
c29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCks
IGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIHsK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZl
ci0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0p
OwpAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNv
cmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiAKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewotICAg
IGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1
ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlSYW5nZURhdGEgPSBrZXlS
YW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xh
dGVkQ29weSgpLCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZl
ci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CkBAIC0zNzYs
NyArMzc2LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KIAogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewotICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURh
dGEuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29w
eSgpLCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZGVs
ZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogICAgIH0pOwpAQCAtMzg0LDcg
KzM4NCw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhCiAKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUg
eworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlz
b2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5m
byk7CiAgICAgfSk7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBk
YXRhKQogewotICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBkYXRhID0g
ZGF0YS5pc29sYXRlZENvcHkoKV0geworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRD
b3B5KCksIGRhdGEgPSBkYXRhLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVx
dWVzdERhdGEsIGRhdGEpOwogICAgIH0pOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2Fj
dGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFu
c2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8g
PSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5m
byA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAgICAgfSk7CkBAIC00MDgsMzUgKzQwOCwz
NSBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZgogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKIHsKLSAgICBkaXNw
YXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVl
c3RJZGVudGlmaWVyID0gcmVxdWVzdElkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHJlcXVlc3Rl
ZFZlcnNpb25dIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllci5pc29s
YXRlZENvcHkoKSwgcmVxdWVzdGVkVmVyc2lvbl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJF
cnJvciYgZXJyb3IpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBlcnJvciA9IGVycm9yLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBlcnJvcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbG9z
ZUZyb21TZXJ2ZXIoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBkaXNwYXRjaFRhc2tSZXBseShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yID0gZXJyb3IuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSwgZXJyb3IgPSBlcnJvci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2
NF90IG5ld1ZlcnNpb24pCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKSwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0geworICAgIGRpc3Bh
dGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVz
dElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgb2xkVmVyc2lv
biwgbmV3VmVyc2lvbl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3Bl
bkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNp
b24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25u
ZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBkaXNwYXRjaFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyXSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAg
ICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdAogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2
ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKICAgICB9KTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBkaXNwYXRjaFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlm
aWVyLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2
ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmly
ZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5l
Y3Rpb25DbG9zZWQpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVu
dGlmaWVyID0gcmVxdWVzdElkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNvbm5lY3Rpb25DbG9z
ZWRdIHsKKyAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciA9IHJl
cXVlc3RJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBjb25uZWN0aW9uQ2xvc2VkXSB7CiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRp
ZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVx
dWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOwogICAgIH0pOwpAQCAtNDY4LDcgKzQ2
OCw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkCiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKIHsKLSAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0g
eworICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+b3BlbkRCUmVx
dWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CkBAIC00NzYsNyArNDc2LDcgQEAg
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHIKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsK
LSAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
aWRlbnRpZmllciA9IG1fY29ubmVjdGlvblRvU2VydmVyLT5pZGVudGlmaWVyKCksIHJlcXVlc3RJ
ZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0g
bV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9y
aWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoaWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7CiAgICAgfSk7
CkBAIC00ODQsMTQgKzQ4NCwxNCBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cgogCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYgZGF0YWJhc2VzKQog
ewotICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMgPSBkYXRhYmFzZXMuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllciwgZGF0YWJhc2VzID0gZGF0
YWJhc2VzLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKGRhdGFiYXNlcykpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIG1v
ZGlmaWNhdGlvblRpbWUpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWNhdGlvblRpbWVdIHsKKyAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBtb2RpZmljYXRpb25UaW1lXSB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2
ZXItPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmljYXRpb25UaW1l
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXgg
MDg2MTVlNDlmNTEzMDNhNGY1OWNhZDA1MzljZmZlN2Q5YTA1YjBjZC4uNGVmYjlhZGFmNzE4MzA0
YWNlNjA0NTlkOGY2ZWYyYjQxZDliMjI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0KQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpzdGFydCgpCiAgICAgQVNTRVJUKCFtX2ZyYW1lTG9hZGVyKTsKICAgICBBU1NFUlQo
IW1fbG9hZGVyKTsKIAotICAgIHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpLnNjaGVkdWxlUGx1
Z2luU3RyZWFtTG9hZCgqY29yZShbbV9pbnN0YW5jZS0+cGx1Z2luVmlldygpIHdlYkZyYW1lXSks
ICp0aGlzLCBtX3JlcXVlc3QuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIChSZWZQdHI8V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+JiYgbG9h
ZGVyKSB7CisgICAgd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1bGVQbHVnaW5TdHJl
YW1Mb2FkKCpjb3JlKFttX2luc3RhbmNlLT5wbHVnaW5WaWV3KCkgd2ViRnJhbWVdKSwgKnRoaXMs
IG1fcmVxdWVzdC5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAo
UmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiYmIGxvYWRlcikgewog
ICAgICAgICBtX2xvYWRlciA9IFdURk1vdmUobG9hZGVyKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCmluZGV4IDRiNGRkYzAwNGEyNmEzZWE2NDljMjY5MTU4MTRlNTY2MjBjOTU1MzUu
LjlhNGMyNTE3ZTg0Yzk2N2U4ZjdmZDM5OGY2YzViZGNhNzczMDEwNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06
OnN0YXJ0KCkKICAgICBBU1NFUlQoIW1fZnJhbWVMb2FkZXIpOwogICAgIEFTU0VSVCghbV9sb2Fk
ZXIpOwogCi0gICAgd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1bGVQbHVnaW5TdHJl
YW1Mb2FkKCpjb3JlKFttX3BsdWdpblZpZXcuZ2V0KCkgd2ViRnJhbWVdKSwgKnRoaXMsIG1fcmVx
dWVzdC5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFJlZlB0
cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJiBsb2FkZXIpIHsKKyAgICB3
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS5zY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoKmNvcmUo
W21fcGx1Z2luVmlldy5nZXQoKSB3ZWJGcmFtZV0pLCAqdGhpcywgbV9yZXF1ZXN0LmdldCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIChSZWZQdHI8V2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+JiYgbG9hZGVyKSB7CiAgICAgICAgIG1fbG9hZGVyID0g
V1RGTW92ZShsb2FkZXIpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY5NTNmMzBiMzdlYjIwZGMzNmJmYzQ1ZmIzY2M4Njhi
YmEyZDgwMTYuLjhjYTg4MmNmZWYwN2FiNDNmYmRjOGFiZDMzMDY0Y2FhZDhiMTM0OTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
MiBAQAorMjAyMS0wOS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0b3AgdXNpbmcgbWFrZVJlZigqdGhpcykgLyBtYWtlUmVmUHRyKHRoaXMpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA0NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2FsbFVJU2NyaXB0Q2FsbGJh
Y2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZG9Bc3luY1Rhc2spOgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Onpvb21Ub1NjYWxlKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmRvQXN5bmNUYXNrKToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjphY3RpdmF0ZURhdGFMaXN0U3VnZ2VzdGlvbik6Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cmVtb3ZlVmlld0Zyb21XaW5kb3cp
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFkZFZpZXdUb1dpbmRvdyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJU2NyaXB0Q29udHJvbGxlcldpbi5jcHA6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcldpbjo6ZG9Bc3luY1Rhc2spOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkgyOjpDb25uZWN0aW9uOjpyZWNlaXZlIGNvbnN0KToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1VJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXJDb2NvYTo6c2V0RGlkU2hvd0NvbnRleHRNZW51Q2FsbGJh
Y2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJDb2NvYTo6c2V0RGlkRGlzbWlz
c0NvbnRleHRNZW51Q2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1VJ
U2NyaXB0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
ckd0azo6ZG9Bc3luY1Rhc2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJHdGs6
OmFjdGl2YXRlQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlckd0azo6
cmVtb3ZlVmlld0Zyb21XaW5kb3cpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJH
dGs6OmFkZFZpZXdUb1dpbmRvdyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJ
T1M6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmRvQWZ0ZXJOZXh0U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjplbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9u
SXNVcFRvRGF0ZUF0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpkb0Fm
dGVyVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVySU9TOjp6b29tVG9TY2FsZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cklPUzo6cmV0cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQpOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjp0b3VjaERv
d25BdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpsaWZ0VXBB
dFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjp0d29GaW5nZXJT
aW5nbGVUYXBBdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpz
aW5nbGVUYXBBdFBvaW50V2l0aE1vZGlmaWVycyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcklPUzo6ZG91YmxlVGFwQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcklPUzo6c3R5bHVzRG93bkF0UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OnN0eWx1c01vdmVUb1BvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVySU9TOjpzdHlsdXNVcEF0UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OnN0eWx1c1RhcEF0UG9pbnRXaXRoTW9kaWZpZXJzKToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpsb25nUHJlc3NBdFBvaW50KToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVySU9TOjp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJv
YXJkKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpkaXNtaXNzRmlsZVBp
Y2tlcik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6YXBwbHlBdXRvY29y
cmVjdGlvbik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2ltdWxhdGVS
b3RhdGlvbik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2ltdWxhdGVS
b3RhdGlvbkxpa2VTYWZhcmkpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6
OnNldERpZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXREaWRFbmRGb3JtQ29udHJvbEludGVyYWN0aW9u
Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldFdpbGxC
ZWdpblpvb21pbmdDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklP
Uzo6c2V0RGlkRW5kWm9vbWluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVySU9TOjpzZXREaWRTaG93S2V5Ym9hcmRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcklPUzo6c2V0RGlkSGlkZUtleWJvYXJkQ2FsbGJhY2spOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldFdpbGxTdGFydElucHV0U2Vzc2lvbkNh
bGxiYWNrKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpjaG9vc2VNZW51
QWN0aW9uKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRXaWxsUHJl
c2VudFBvcG92ZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklP
Uzo6c2V0RGlkRGlzbWlzc1BvcG92ZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcklPUzo6c2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2spOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmFjdGl2YXRlRGF0YUxpc3RTdWdnZXN0aW9uKToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpkb0FmdGVyRG91YmxlVGFwRGVsYXkp
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Omluc3RhbGxUYXBHZXN0dXJl
T25XaW5kb3cpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjp6b29tVG9T
Y2FsZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6c2ltdWxhdGVBY2Nl
c3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24pOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXJNYWM6OmNob29zZU1lbnVBY3Rpb24pOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlQXRQb2ludCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci93aW4vVUlTY3JpcHRDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyV2luOjpkb0FzeW5jVGFzayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci93cGUvVUlTY3JpcHRDb250cm9sbGVyV1BFLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyV1BFOjpkb0FzeW5jVGFzayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcldQRTo6YWN0aXZhdGVBdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyV1BFOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcldQRTo6YWRkVmlld1RvV2luZG93KToKKwogMjAyMS0wOS0xNyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgUmVsZWFzZSBdIFRlc3RX
ZWJLaXRBUEkuTmV0d29ya1Byb2Nlc3MuQnJvYWRjYXN0Q2hhbm5lbENyYXNoUmVjb3ZlcnkgaXMg
Zmxha3kgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCA4YmYz
ODNmMGIwNzIxMDlhNjI4MGRlYmZhODNhMzFhY2Q2NDU1NDk1Li4wMmFmZjJhNTdkZmMwOTc1ZWNi
Y2U4ZWMxMmEwMGQwNWY3NzcyNTA3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApA
QCAtMjI5NywxNCArMjI5NywxNCBAQCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxVSVNjcmlwdENhbGxi
YWNrKHVuc2lnbmVkIGNhbGxiYWNrSUQsIEpTU3RyaW5nUmVmIHJlc3VsdCkKIHsKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvdGVjdGVkUmVzdWx0KHJlc3VsdCk7CiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSUQsIHByb3RlY3RlZFJlc3VsdF0oKSBtdXRh
YmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBjYWxsYmFja0lELCBwcm90ZWN0ZWRSZXN1bHRdKCkgbXV0YWJsZSB7CiAgICAg
ICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gcHJvdGVjdGVkVGhpcy0+bWFpbkZyYW1lSlNDb250
ZXh0KCk7CiAgICAgICAgIEpTVmFsdWVSZWYgcmVzdWx0VmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmlu
Zyhjb250ZXh0LCBwcm90ZWN0ZWRSZXN1bHQuZ2V0KCkpOwogICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5jYWxsVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxiYWNrSUQsIDEsICZyZXN1bHRWYWx1ZSk7CiAg
ICAgfSk7CiAjZWxzZQogICAgIFdlYlRocmVhZFJ1bigKLSAgICAgICAgbWFrZUJsb2NrUHRyKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSUQsIHByb3RlY3RlZFJlc3Vs
dF0geworICAgICAgICBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjYWxsYmFja0lELCBwcm90ZWN0ZWRSZXN1bHRdIHsKICAgICAgICAgICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0ID0gcHJvdGVjdGVkVGhpcy0+bWFpbkZyYW1lSlNDb250ZXh0KCk7CiAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIHJlc3VsdFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwg
cHJvdGVjdGVkUmVzdWx0LmdldCgpKTsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNhbGxU
ZXN0UnVubmVyQ2FsbGJhY2soY2FsbGJhY2tJRCwgMSwgJnJlc3VsdFZhbHVlKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDA1
YjliOGUzMzc1OTdiNDM2Y2MyMzIwYWYxMzQwMmRkODk4YjBkZTcuLjZiNzQ4MjMzM2UzYTYzODIz
NTUwNzcwZWQyYTcyOGFiYjZhM2NkOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcklPUzo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAg
ICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNh
bGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAotICAgIFdvcmtRdWV1ZTo6bWFp
bigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrSURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRl
eHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29t
cGxldGUoY2FsbGJhY2tJRCk7CkBAIC02MSw4ICs2MSw4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVySU9TOjp6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7
CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFz
ayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAKLSAgICBXb3JrUXVldWU6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
Y2FsZSwgY2FsbGJhY2tJRF0gewotICAgICAgICBbZ1dlYlNjcm9sbFZpZXcgem9vbVRvU2NhbGU6
c2NhbGUgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywg
c3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVl
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBz
Y2FsZSwgY2FsbGJhY2tJRF0geworICAgICAgICBbZ1dlYlNjcm9sbFZpZXcgem9vbVRvU2NhbGU6
c2NhbGUgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywg
c3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgICAgIGlm
ICghbV9jb250ZXh0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY29u
dGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBmMjgzM2EyYjJjNDE0
MjcyZjcwOTg0MGQ1ZDQ4ODRiNjAxOGY2ZDc4Li5jOWUzMmMyMGY2NDIyZGYwMGEzNGMxNTEzNTNl
YTUwOGJmMzI0NjU2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlw
dENvbnRyb2xsZXJNYWMubW0KQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXJNYWM6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQg
Y2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2Fs
bGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAKLSAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7Cisg
ICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxi
YWNrSUQpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjph
Y3RpdmF0ZURhdGFMaXN0U3VnZ2VzdGlvbih1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZVJlCiAgICAg
VU5VU0VEX1BBUkFNKGluZGV4KTsKIAogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRl
eHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3Rl
bnQpOwotICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSURd
IHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlbW92ZVZpZXdGcm9tV2luZG93KEpT
VmFsdWVSZWYgY2FsbGJhY2spCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2Vi
Vmlld107CiAgICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAKLSAgICBXb3JrUXVl
dWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICgh
bV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5j
VGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyTWFjOjphZGRWaWV3VG9XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAg
ICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKICAgICBbW21haW5XaW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlld107CiAKLSAgICBXb3JrUXVldWU6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxs
YmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250
ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0Nv
bXBsZXRlKGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1VJU2NyaXB0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlT
Y3JpcHRDb250cm9sbGVyV2luLmNwcAppbmRleCA4ZjdlOWE4NDVjMDA0NTMyM2ExNWQwZWY0Mjhi
YTAzZjkxYmJlZGI1Li41NDc4NWM0NzhjYjcwYzIxNjMyYjM5Y2U3ODA3Y2I3M2I2Nzc5MDU4IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlTY3JpcHRDb250cm9sbGVyV2lu
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlTY3JpcHRDb250cm9sbGVyV2lu
LmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcldpbjo6ZG9Bc3lu
Y1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0g
bV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25Q
ZXJzaXN0ZW50KTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRCBdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRCBdIHsKICAgICAg
ICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4
dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW0KaW5kZXggMWJmOGY2Mjg3ZTg5ZjEyZDcwMDEyZGJhMmU3MDhiYzJhMzA4
ZWQ3NC4uYmMzYTI5NDYwZDlkZTY3Y2E5OTAyMjhlMDUxMTAyYmVlYzlkMTQ0MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQg
SDI6OkNvbm5lY3Rpb246OnJlY2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFtZSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIC8vIGh0dHBzOi8vaHR0cDIuZ2l0aHViLmlvL2h0
dHAyLXNwZWMvI3JmYy5zZWN0aW9uLjMuNQogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IGNsaWVu
dENvbm5lY3Rpb25QcmVmYWNlTGVuZ3RoID0gMjQ7CiAgICAgICAgIGlmIChtX3JlY2VpdmVCdWZm
ZXIuc2l6ZSgpIDwgY2xpZW50Q29ubmVjdGlvblByZWZhY2VMZW5ndGgpIHsKLSAgICAgICAgICAg
IG1fdGxzQ29ubmVjdGlvbi5yZWNlaXZlQnl0ZXMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFZlY3Rvcjx1aW50OF90PiYmIGJ5dGVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdGxz
Q29ubmVjdGlvbi5yZWNlaXZlQnl0ZXMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVj
dG9yPHVpbnQ4X3Q+JiYgYnl0ZXMpIG11dGFibGUgewogICAgICAgICAgICAgICAgIG1fcmVjZWl2
ZUJ1ZmZlci5hcHBlbmRWZWN0b3IoYnl0ZXMpOwogICAgICAgICAgICAgICAgIHJlY2VpdmUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgfSk7CkBAIC00NjMsNyArNDYz
LDcgQEAgdm9pZCBIMjo6Q29ubmVjdGlvbjo6cmVjZWl2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEZyYW1lJiYpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBtX3Rsc0Nvbm5lY3Rpb24ucmVjZWl2ZUJ5dGVzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChWZWN0b3I8dWludDhfdD4mJiBieXRlcykgbXV0YWJsZSB7CisgICAgbV90bHNDb25uZWN0
aW9uLnJlY2VpdmVCeXRlcyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8dWlu
dDhfdD4mJiBieXRlcykgbXV0YWJsZSB7CiAgICAgICAgIG1fcmVjZWl2ZUJ1ZmZlci5hcHBlbmRW
ZWN0b3IoYnl0ZXMpOwogICAgICAgICByZWNlaXZlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVUlT
Y3JpcHRDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1VJ
U2NyaXB0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVkNjgyNDk3YWQyNzQwY2FkNTNjZDI0MDU0
YzM0N2Q5YmI2NjAzZWEuLmFlNjE2ZDE1M2FiOTcyZTUzODYwMDc5ZTAxMTk5YzYwMGI3ZjhkYmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVUlTY3JpcHRDb250cm9s
bGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9VSVNjcmlwdENv
bnRyb2xsZXJDb2NvYS5tbQpAQCAtMTc2LDcgKzE3Niw3IEBAIE5TVW5kb01hbmFnZXIgKlVJU2Ny
aXB0Q29udHJvbGxlckNvY29hOjpwbGF0Zm9ybVVuZG9NYW5hZ2VyKCkgY29uc3QKIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyQ29jb2E6OnNldERpZFNob3dDb250ZXh0TWVudUNhbGxiYWNrKEpTVmFs
dWVSZWYgY2FsbGJhY2spCiB7CiAgICAgVUlTY3JpcHRDb250cm9sbGVyOjpzZXREaWRTaG93Q29u
dGV4dE1lbnVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgd2ViVmlldygpLmRpZFNob3dDb250ZXh0
TWVudUNhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyldIHsKKyAgICB3ZWJWaWV3KCkuZGlkU2hvd0NvbnRleHRNZW51Q2FsbGJhY2sgPSBtYWtl
QmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlm
ICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmZp
cmVDYWxsYmFjayhDYWxsYmFja1R5cGVEaWRTaG93Q29udGV4dE1lbnUpOwpAQCAtMTg2LDcgKzE4
Niw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyQ29jb2E6OnNldERpZFNob3dDb250ZXh0TWVu
dUNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlckNv
Y29hOjpzZXREaWREaXNtaXNzQ29udGV4dE1lbnVDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNr
KQogewogICAgIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkRGlzbWlzc0NvbnRleHRNZW51Q2Fs
bGJhY2soY2FsbGJhY2spOwotICAgIHdlYlZpZXcoKS5kaWREaXNtaXNzQ29udGV4dE1lbnVDYWxs
YmFjayA9IG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgd2ViVmlldygpLmRpZERpc21pc3NDb250ZXh0TWVudUNhbGxiYWNrID0gbWFrZUJsb2Nr
UHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5maXJlQ2Fs
bGJhY2soQ2FsbGJhY2tUeXBlRGlkRGlzbWlzc0NvbnRleHRNZW51KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGYx
MWI2ZDA2MzQ5MDQyMDg3YjM5NDUyMDhiZjQ5YzJkOTA3NzdhZmUuLjMxMjdmZDliMDRjYzQ1YWQ2
NzM5ZDRhMWUyNDEwMDkwMmJjYjA5MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29s
IFVJU2NyaXB0Q29udHJvbGxlckd0azo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNv
bnN0CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlckd0azo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBj
YWxsYmFjaykKIHsKICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJl
Rm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYg
KCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5
bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXJHdGs6OmFjdGl2YXRlQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1
ZVJlZiBjYWxsYmFjaykKICAgICBldmVudFNlbmRlci0+bW91c2VEb3duKDAsIDApOwogICAgIGV2
ZW50U2VuZGVyLT5tb3VzZVVwKDAsIDApOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNr
SUQpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyR3RrOjpyZW1v
dmVWaWV3RnJvbVdpbmRvdyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIGF1dG8qIG1haW5XZWJW
aWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCk7CiAgICAgbWFp
bldlYlZpZXctPnJlbW92ZUZyb21XaW5kb3coKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxs
YmFja0lEKTsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlckd0azo6
YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgYXV0byogbWFpbldlYlZp
ZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKTsKICAgICBtYWlu
V2ViVmlldy0+YWRkVG9XaW5kb3coKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lE
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQppbmRleCA5NWMzODNkNTcyYTgxMDVmZTY5ZGMwMWJhYTU4YzJkOWVhMTM2NTU5Li5j
YmFlOTUxYjRjYTFhMjcwY2ViN2Y2ZWY5MDA0Y2M0NDFhNjhlYjUwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0xMTgs
NyArMTE4LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OndhaXRGb3JPdXRzdGFuZGlu
Z0NhbGxiYWNrcygpCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZG9BZnRlclByZXNlbnRh
dGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNr
SUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlw
ZU5vblBlcnNpc3RlbnQpOwotICAgIFt3ZWJWaWV3KCkgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9u
VXBkYXRlOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
YWxsYmFja0lEXSB7CisgICAgW3dlYlZpZXcoKSBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJh
Y2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKQEAgLTEyOCw3
ICsxMjgsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZG9BZnRlclByZXNlbnRhdGlv
blVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6
OmRvQWZ0ZXJOZXh0U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2FsbGJhY2sp
CiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5j
VGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0gICAgW3dlYlZpZXco
KSBfZG9BZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGU6bWFrZUJsb2NrUHRyKFt0aGlz
LCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBbd2ViVmll
dygpIF9kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZTptYWtlQmxvY2tQdHIoW3Ro
aXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlm
ICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFz
eW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVySU9TOjpkb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZShK
U1ZhbHVlUmVmIGNhbGxiCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZW5zdXJlUG9zaXRp
b25JbmZvcm1hdGlvbklzVXBUb0RhdGVBdChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxs
YmFjaykKIHsKICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9y
QXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLSAgICBbd2Vi
VmlldygpIF9yZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEF0UG9zaXRpb246Q0dQb2ludE1ha2UoeCwg
eSkgY29tcGxldGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjYWxsYmFja0lEXSAoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKikgeworICAg
IFt3ZWJWaWV3KCkgX3JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50QXRQb3NpdGlvbjpDR1BvaW50TWFr
ZSh4LCB5KSBjb21wbGV0aW9uQmxvY2s6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0g
UmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0gKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopIHsK
ICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
Y29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CkBAIC0xNDgsNyArMTQ4LDcg
QEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25J
c1VwVG9EYXRlQXQobG9uZyB4LCBsb25nIHkKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpk
b0FmdGVyVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAg
ICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhj
YWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0gICAgW3dlYlZpZXcoKSBfZG9B
ZnRlck5leHRWaXNpYmxlQ29udGVudFJlY3RVcGRhdGU6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJv
bmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBbd2ViVmlldygpIF9k
b0FmdGVyTmV4dFZpc2libGVDb250ZW50UmVjdFVwZGF0ZTptYWtlQmxvY2tQdHIoW3RoaXMsIHN0
cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9j
b250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFz
a0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgVUlTY3JpcHRD
b250cm9sbGVySU9TOjp6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJh
Y2spCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFz
eW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAKLSAgICBbd2Vi
VmlldygpIHpvb21Ub1NjYWxlOnNjYWxlIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJ
RF0geworICAgIFt3ZWJWaWV3KCkgem9vbVRvU2NhbGU6c2NhbGUgYW5pbWF0ZWQ6WUVTIGNvbXBs
ZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7
CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnJldHJpZXZl
U3BlYWtTZWxlY3Rpb25Db250ZW50KEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWdu
ZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywg
Q2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAgICAgCi0gICAgW3dlYlZpZXcoKSBhY2Nlc3Np
YmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnRXaXRoQ29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
SURdIHsKKyAgICBbd2ViVmlldygpIGFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9u
Q29udGVudFdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVySU9TOjpzaW11bGF0ZUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbihK
U1ZhCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXTsKICAgICBbY2VudGVyIHBvc3ROb3RpZmljYXRpb25OYW1lOlVJ
QWNjZXNzaWJpbGl0eUludmVydENvbG9yc1N0YXR1c0RpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmpl
Y3Q6d2ViVmlld107CiAKLSAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrSURdIHsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6bWFr
ZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0g
ewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
bV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKQEAgLTIxNiw3ICsyMTYs
NyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6dG91Y2hEb3duQXRQb2ludChsb25nIHgs
IGxvbmcgeSwgbG9uZyB0b3VjaENvdW50LCBKUwogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBt
X2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBl
cnNpc3RlbnQpOwogCiAgICAgYXV0byBsb2NhdGlvbiA9IGdsb2JhbFRvQ29udGVudENvb3JkaW5h
dGVzKHdlYlZpZXcoKSwgeCwgeSk7Ci0gICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0gdG91Y2hEb3duOmxvY2F0aW9uIHRvdWNoQ291bnQ6dG91Y2hDb3VudCBj
b21wbGV0aW9uQmxvY2s6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2
ZW50R2VuZXJhdG9yXSB0b3VjaERvd246bG9jYXRpb24gdG91Y2hDb3VudDp0b3VjaENvdW50IGNv
bXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhp
cyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQp
OwpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpsaWZ0VXBB
dFBvaW50KGxvbmcgeCwgbG9uZyB5LCBsb25nIHRvdWNoQ291bnQsIEpTVmFsCiAgICAgdW5zaWdu
ZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywg
Q2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAgICAgCiAgICAgYXV0byBsb2NhdGlvbiA9IGds
b2JhbFRvQ29udGVudENvb3JkaW5hdGVzKHdlYlZpZXcoKSwgeCwgeSk7Ci0gICAgW1tISURFdmVu
dEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gbGlmdFVwOmxvY2F0aW9uIHRvdWNo
Q291bnQ6dG91Y2hDb3VudCBjb21wbGV0aW9uQmxvY2s6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJv
bmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBbW0hJREV2ZW50R2Vu
ZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBsaWZ0VXA6bG9jYXRpb24gdG91Y2hDb3Vu
dDp0b3VjaENvdW50IGNvbXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVySU9TOjp0d29GaW5nZXJTaW5nbGVUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVl
UmVmCiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5j
VGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAKICAgICBhdXRvIGxv
Y2F0aW9uID0gZ2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMod2ViVmlldygpLCB4LCB5KTsKLSAg
ICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSB0d29GaW5nZXJU
YXA6bG9jYXRpb24gY29tcGxldGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgW1tISURFdmVudEdlbmVyYXRv
ciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gdHdvRmluZ2VyVGFwOmxvY2F0aW9uIGNvbXBsZXRp
b25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBj
YWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAt
MzEwLDcgKzMxMCw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzaW5nbGVUYXBBdFBv
aW50V2l0aE1vZGlmaWVycyhXZWJDb3JlOjpGbG9hdFBvaW50IGxvCiAgICAgZm9yIChhdXRvJiBt
b2RpZmllckZsYWcgOiBtb2RpZmllckZsYWdzKQogICAgICAgICBbW0hJREV2ZW50R2VuZXJhdG9y
IHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBrZXlEb3duOm1vZGlmaWVyRmxhZ107CiAKLSAgICBb
W0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSB0YXA6Z2xvYmFsVG9D
b250ZW50Q29vcmRpbmF0ZXMod2ViVmlldygpLCBsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSkg
Y29tcGxldGlvbkJsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1v
ZGlmaWVyRmxhZ3MgPSBXVEZNb3ZlKG1vZGlmaWVyRmxhZ3MpLCBibG9jayA9IFdURk1vdmUoYmxv
Y2spXSAoKSBtdXRhYmxlIHsKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50
R2VuZXJhdG9yXSB0YXA6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMod2ViVmlldygpLCBsb2Nh
dGlvbi54KCksIGxvY2F0aW9uLnkoKSkgY29tcGxldGlvbkJsb2NrOlt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgbW9kaWZpZXJGbGFncyA9IFdURk1vdmUobW9kaWZpZXJGbGFn
cyksIGJsb2NrID0gV1RGTW92ZShibG9jayldICgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVySU9TOjpkb3VibGVUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBm
bG9hdCBkZWxheSwgSlNWYWx1CiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4
dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVu
dCk7CiAKLSAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBk
b3VibGVUYXA6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMod2ViVmlldygpLCB4LCB5KSBkZWxh
eTpkZWxheSBjb21wbGV0aW9uQmxvY2s6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNo
YXJlZEhJREV2ZW50R2VuZXJhdG9yXSBkb3VibGVUYXA6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0
ZXMod2ViVmlldygpLCB4LCB5KSBkZWxheTpkZWxheSBjb21wbGV0aW9uQmxvY2s6bWFrZUJsb2Nr
UHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0gewogICAg
ICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250
ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKQEAgLTMzOCw3ICszMzgsNyBAQCB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c3R5bHVzRG93bkF0UG9pbnQobG9uZyB4LCBsb25n
IHksIGZsb2F0IGF6aW11dGhBbmdsZQogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRl
eHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3Rl
bnQpOwogCiAgICAgYXV0byBsb2NhdGlvbiA9IGdsb2JhbFRvQ29udGVudENvb3JkaW5hdGVzKHdl
YlZpZXcoKSwgeCwgeSk7Ci0gICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdl
bmVyYXRvcl0gc3R5bHVzRG93bkF0UG9pbnQ6bG9jYXRpb24gYXppbXV0aEFuZ2xlOmF6aW11dGhB
bmdsZSBhbHRpdHVkZUFuZ2xlOmFsdGl0dWRlQW5nbGUgcHJlc3N1cmU6cHJlc3N1cmUgY29tcGxl
dGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFja0lEXSB7CisgICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdl
bmVyYXRvcl0gc3R5bHVzRG93bkF0UG9pbnQ6bG9jYXRpb24gYXppbXV0aEFuZ2xlOmF6aW11dGhB
bmdsZSBhbHRpdHVkZUFuZ2xlOmFsdGl0dWRlQW5nbGUgcHJlc3N1cmU6cHJlc3N1cmUgY29tcGxl
dGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CkBA
IC0zNTAsNyArMzUwLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnN0eWx1c01vdmVU
b1BvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBhemltdXRoQW5nbGUKICAgICB1bnNpZ25lZCBj
YWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxs
YmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAogICAgIGF1dG8gbG9jYXRpb24gPSBnbG9iYWxUb0Nv
bnRlbnRDb29yZGluYXRlcyh3ZWJWaWV3KCksIHgsIHkpOwotICAgIFtbSElERXZlbnRHZW5lcmF0
b3Igc2hhcmVkSElERXZlbnRHZW5lcmF0b3JdIHN0eWx1c01vdmVUb1BvaW50OmxvY2F0aW9uIGF6
aW11dGhBbmdsZTphemltdXRoQW5nbGUgYWx0aXR1ZGVBbmdsZTphbHRpdHVkZUFuZ2xlIHByZXNz
dXJlOnByZXNzdXJlIGNvbXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFtbSElERXZlbnRHZW5lcmF0
b3Igc2hhcmVkSElERXZlbnRHZW5lcmF0b3JdIHN0eWx1c01vdmVUb1BvaW50OmxvY2F0aW9uIGF6
aW11dGhBbmdsZTphemltdXRoQW5nbGUgYWx0aXR1ZGVBbmdsZTphbHRpdHVkZUFuZ2xlIHByZXNz
dXJlOnByZXNzdXJlIGNvbXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVySU9TOjpzdHlsdXNVcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2FsbGJh
Y2spCiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5j
VGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAKICAgICBhdXRvIGxv
Y2F0aW9uID0gZ2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMod2ViVmlldygpLCB4LCB5KTsKLSAg
ICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBzdHlsdXNVcEF0
UG9pbnQ6bG9jYXRpb24gY29tcGxldGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25n
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgW1tISURFdmVudEdlbmVy
YXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gc3R5bHVzVXBBdFBvaW50OmxvY2F0aW9uIGNv
bXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhp
cyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQp
OwpAQCAtMzg1LDE0ICszODUsMTQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnN0eWx1
c1RhcEF0UG9pbnRXaXRoTW9kaWZpZXJzKGxvbmcgeCwgbG9uZyB5LCBmbG9hdAogICAgICAgICBb
W0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBrZXlEb3duOm1vZGlm
aWVyRmxhZ107CiAKICAgICBhdXRvIGxvY2F0aW9uID0gZ2xvYmFsVG9Db250ZW50Q29vcmRpbmF0
ZXMod2ViVmlldygpLCB4LCB5KTsKLSAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2
ZW50R2VuZXJhdG9yXSBzdHlsdXNUYXBBdFBvaW50OmxvY2F0aW9uIGF6aW11dGhBbmdsZTphemlt
dXRoQW5nbGUgYWx0aXR1ZGVBbmdsZTphbHRpdHVkZUFuZ2xlIHByZXNzdXJlOnByZXNzdXJlIGNv
bXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2tJRCwgbW9kaWZpZXJGbGFncyA9IFdURk1vdmUobW9kaWZpZXJGbGFncyld
IHsKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBzdHls
dXNUYXBBdFBvaW50OmxvY2F0aW9uIGF6aW11dGhBbmdsZTphemltdXRoQW5nbGUgYWx0aXR1ZGVB
bmdsZTphbHRpdHVkZUFuZ2xlIHByZXNzdXJlOnByZXNzdXJlIGNvbXBsZXRpb25CbG9jazptYWtl
QmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lELCBt
b2RpZmllckZsYWdzID0gV1RGTW92ZShtb2RpZmllckZsYWdzKV0gewogICAgICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG1v
ZGlmaWVyRmxhZ3Muc2l6ZSgpOyBpOyApIHsKICAgICAgICAgICAgIC0taTsKICAgICAgICAgICAg
IFtbSElERXZlbnRHZW5lcmF0b3Igc2hhcmVkSElERXZlbnRHZW5lcmF0b3JdIGtleVVwOm1vZGlm
aWVyRmxhZ3NbaV1dOwogICAgICAgICB9Ci0gICAgICAgIFtbSElERXZlbnRHZW5lcmF0b3Igc2hh
cmVkSElERXZlbnRHZW5lcmF0b3JdIHNlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxv
Y2s6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrSURdIHsKKyAgICAgICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVy
YXRvcl0gc2VuZE1hcmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIo
W3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAg
ICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpsb25nUHJlc3NBdFBvaW50KGxvbmcg
eCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJ
RCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBl
Tm9uUGVyc2lzdGVudCk7CiAgICAgCi0gICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0gbG9uZ1ByZXNzOmdsb2JhbFRvQ29udGVudENvb3JkaW5hdGVzKHdlYlZp
ZXcoKSwgeCwgeSkgY29tcGxldGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgW1tISURFdmVudEdlbmVyYXRv
ciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gbG9uZ1ByZXNzOmdsb2JhbFRvQ29udGVudENvb3Jk
aW5hdGVzKHdlYlZpZXcoKSwgeCwgeSkgY29tcGxldGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbdGhp
cywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYg
KCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5
bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNT
dHJpbmdSZWYgY2hhcmEKICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVw
YXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAog
ICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUga2V5Ym9hcmQgaXMgYWxyZWFkeSBzaG93bi4KLSAgICBb
W0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBrZXlQcmVzczp0b1dU
RlN0cmluZyhjaGFyYWN0ZXIpIGNvbXBsZXRpb25CbG9jazptYWtlQmxvY2tQdHIoW3N0cm9uZ1Ro
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFtbSElERXZlbnRHZW5lcmF0
b3Igc2hhcmVkSElERXZlbnRHZW5lcmF0b3JdIGtleVByZXNzOnRvV1RGU3RyaW5nKGNoYXJhY3Rl
cikgY29tcGxldGlvbkJsb2NrOm1ha2VCbG9ja1B0cihbc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPm1fY29udGV4dCkKICAg
ICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJh
Y2tJRCk7CiAgICAgfSkuZ2V0KCldOwpAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgVUlTY3JpcHRD
b250cm9sbGVySU9TOjpkaXNtaXNzRmlsZVBpY2tlcihKU1ZhbHVlUmVmIGNhbGxiYWNrKQogCiAg
ICAgLy8gUm91bmQtdHJpcCB3aXRoIHRoZSBXZWJQcm9jZXNzIHRvIG1ha2Ugc3VyZSBpdCBoYXMg
YmVlbiBub3RpZmllZCBvZiB0aGUgZGlzbWlzc2FsLgogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQg
PSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5v
blBlcnNpc3RlbnQpOwotICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIiIgY29tcGxl
dGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSURdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiIiBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lE
KTsKQEAgLTc1MCw4ICs3NTAsOCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6YXBwbHlB
dXRvY29ycmVjdGlvbihKU1N0cmluZ1JlZiBuZXdTdHJpbmcsIEpTU3RyaW5nUgogICAgIHVuc2ln
bmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ss
IENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwogCiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAq
d2ViVmlldyA9IHRoaXMtPndlYlZpZXcoKTsKLSAgICBbd2ViVmlldyBhcHBseUF1dG9jb3JyZWN0
aW9uOnRvV1RGU3RyaW5nKG5ld1N0cmluZykgdG9TdHJpbmc6dG9XVEZTdHJpbmcob2xkU3RyaW5n
KSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBbd2ViVmlldyBhcHBseUF1dG9jb3Jy
ZWN0aW9uOnRvV1RGU3RyaW5nKG5ld1N0cmluZykgdG9TdHJpbmc6dG9XVEZTdHJpbmcob2xkU3Ry
aW5nKSB3aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0geworICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMg
PSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgICAgICAvLyBhcHBseUF1dG9j
b3JyZWN0aW9uIGNhbiBjYWxsIGl0cyBjb21wbGV0aW9uIGhhbmRsZXIgc3luY2hyb25vdXNseSwK
ICAgICAgICAgICAgIC8vIHdoaWNoIG1ha2VzIFVJU2NyaXB0Q29udHJvbGxlciB1bmhhcHB5IChz
ZWUgYnVnIDE3Mjg4NCkuCiAgICAgICAgICAgICBpZiAoIW1fY29udGV4dCkKQEAgLTkxOCw3ICs5
MTgsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2ltdWxhdGVSb3RhdGlvbihEZXZp
Y2VPcmllbnRhdGlvbiogb3JpZW50YXRpb24sIEpTVgogICAgIAogICAgIHVuc2lnbmVkIGNhbGxi
YWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNr
VHlwZU5vblBlcnNpc3RlbnQpOwogICAgIAotICAgIHdlYlZpZXcucm90YXRpb25EaWRFbmRDYWxs
YmFjayA9IG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
YWxsYmFja0lEXSB7CisgICAgd2ViVmlldy5yb3RhdGlvbkRpZEVuZENhbGxiYWNrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0gewog
ICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9j
b250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKQEAgLTkzNCw3ICs5MzQsNyBA
QCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2ltdWxhdGVSb3RhdGlvbkxpa2VTYWZhcmko
RGV2aWNlT3JpZW50YXRpb24qIG9yaWVudAogICAgIAogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQg
PSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5v
blBlcnNpc3RlbnQpOwogICAgIAotICAgIHdlYlZpZXcucm90YXRpb25EaWRFbmRDYWxsYmFjayA9
IG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFj
a0lEXSB7CisgICAgd2ViVmlldy5yb3RhdGlvbkRpZEVuZENhbGxiYWNrID0gbWFrZUJsb2NrUHRy
KFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0gewogICAgICAg
ICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0
LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lk
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2ltdWxhdGVSb3RhdGlvbkxpa2VTYWZhcmkoRGV2aWNl
T3JpZW50YXRpb24qIG9yaWVudAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldERpZFN0
YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7
CiAgICAgVUlTY3JpcHRDb250cm9sbGVyOjpzZXREaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rp
b25DYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgd2ViVmlldygpLmRpZFN0YXJ0Rm9ybUNvbnRyb2xJ
bnRlcmFjdGlvbkNhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICB3ZWJWaWV3KCkuZGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0
aW9uQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhp
cyB9XSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX2NvbnRleHQtPmZpcmVDYWxsYmFjayhDYWxsYmFja1R5cGVEaWRTdGFydEZvcm1Db250
cm9sSW50ZXJhY3Rpb24pOwpAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVySU9TOjpzZXREaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25DYWxsYmFjayhKU1ZhbHVl
UmVmCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2V0RGlkRW5kRm9ybUNvbnRyb2xJbnRl
cmFjdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgVUlTY3JpcHRDb250
cm9sbGVyOjpzZXREaWRFbmRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2soY2FsbGJhY2sp
OwotICAgIHdlYlZpZXcoKS5kaWRFbmRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sgPSBt
YWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIHdl
YlZpZXcoKS5kaWRFbmRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sgPSBtYWtlQmxvY2tQ
dHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmICghbV9j
b250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmZpcmVDYWxs
YmFjayhDYWxsYmFja1R5cGVEaWRFbmRGb3JtQ29udHJvbEludGVyYWN0aW9uKTsKQEAgLTk2Niw3
ICs5NjYsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2V0RGlkRW5kRm9ybUNvbnRy
b2xJbnRlcmFjdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYgYwogdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXJJT1M6OnNldFdpbGxCZWdpblpvb21pbmdDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
ewogICAgIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0V2lsbEJlZ2luWm9vbWluZ0NhbGxiYWNrKGNh
bGxiYWNrKTsKLSAgICB3ZWJWaWV3KCkud2lsbEJlZ2luWm9vbWluZ0NhbGxiYWNrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICB3ZWJWaWV3
KCkud2lsbEJlZ2luWm9vbWluZ0NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdU
aGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5maXJlQ2FsbGJhY2soQ2FsbGJhY2tUeXBl
V2lsbEJlZ2luWm9vbWluZyk7CkBAIC05NzYsNyArOTc2LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXJJT1M6OnNldFdpbGxCZWdpblpvb21pbmdDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNr
KQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldERpZEVuZFpvb21pbmdDYWxsYmFjayhK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkRW5k
Wm9vbWluZ0NhbGxiYWNrKGNhbGxiYWNrKTsKLSAgICB3ZWJWaWV3KCkuZGlkRW5kWm9vbWluZ0Nh
bGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKKyAgICB3ZWJWaWV3KCkuZGlkRW5kWm9vbWluZ0NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0
aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoIW1fY29udGV4
dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5maXJlQ2FsbGJhY2so
Q2FsbGJhY2tUeXBlRGlkRW5kWm9vbWluZyk7CkBAIC05ODYsNyArOTg2LDcgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OnNldERpZEVuZFpvb21pbmdDYWxsYmFjayhKU1ZhbHVlUmVmIGNh
bGxiYWNrKQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldERpZFNob3dLZXlib2FyZENh
bGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgVUlTY3JpcHRDb250cm9sbGVyOjpz
ZXREaWRTaG93S2V5Ym9hcmRDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgd2ViVmlldygpLmRpZFNo
b3dLZXlib2FyZENhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICB3ZWJWaWV3KCkuZGlkU2hvd0tleWJvYXJkQ2FsbGJhY2sgPSBt
YWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAg
IGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQt
PmZpcmVDYWxsYmFjayhDYWxsYmFja1R5cGVEaWRTaG93S2V5Ym9hcmQpOwpAQCAtOTk2LDcgKzk5
Niw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXREaWRTaG93S2V5Ym9hcmRDYWxs
YmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNl
dERpZEhpZGVLZXlib2FyZENhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgVUlT
Y3JpcHRDb250cm9sbGVyOjpzZXREaWRIaWRlS2V5Ym9hcmRDYWxsYmFjayhjYWxsYmFjayk7Ci0g
ICAgd2ViVmlldygpLmRpZEhpZGVLZXlib2FyZENhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlz
LCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICB3ZWJWaWV3KCkuZGlkSGlkZUtl
eWJvYXJkQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAq
dGhpcyB9XSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBtX2NvbnRleHQtPmZpcmVDYWxsYmFjayhDYWxsYmFja1R5cGVEaWRIaWRlS2V5Ym9h
cmQpOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNl
dERpZEhpZGVLZXlib2FyZENhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcklPUzo6c2V0V2lsbFN0YXJ0SW5wdXRTZXNzaW9uQ2FsbGJhY2soSlNWYWx1
ZVJlZiBjYWxsYmFjaykKIHsKICAgICBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFdpbGxTdGFydElu
cHV0U2Vzc2lvbkNhbGxiYWNrKGNhbGxiYWNrKTsKLSAgICB3ZWJWaWV3KCkud2lsbFN0YXJ0SW5w
dXRTZXNzaW9uQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtl
UmVmKCp0aGlzKV0geworICAgIHdlYlZpZXcoKS53aWxsU3RhcnRJbnB1dFNlc3Npb25DYWxsYmFj
ayA9IG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAg
ICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29u
dGV4dC0+ZmlyZUNhbGxiYWNrKENhbGxiYWNrVHlwZVdpbGxTdGFydElucHV0U2Vzc2lvbik7CkBA
IC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6Y2hvb3NlTWVu
dUFjdGlvbihKU1N0cmluZ1JlZiBqc0FjdGlvbiwgSlNWYWx1ZVJlZiBjYQogICAgICAgICByZXR1
cm47CiAKICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5
bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLSAgICBzaW5nbGVU
YXBBdFBvaW50V2l0aE1vZGlmaWVycyhyZWN0LmNlbnRlcigpLCB7IH0sIG1ha2VCbG9ja1B0cihb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAg
c2luZ2xlVGFwQXRQb2ludFdpdGhNb2RpZmllcnMocmVjdC5jZW50ZXIoKSwgeyB9LCBtYWtlQmxv
Y2tQdHIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7
CiAgICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFz
a0NvbXBsZXRlKGNhbGxiYWNrSUQpOwogICAgIH0pKTsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIGJv
b2wgVUlTY3JpcHRDb250cm9sbGVySU9TOjppc1Nob3dpbmdQb3BvdmVyKCkgY29uc3QKIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRXaWxsUHJlc2VudFBvcG92ZXJDYWxsYmFjayhKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogewogICAgIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0V2lsbFByZXNl
bnRQb3BvdmVyQ2FsbGJhY2soY2FsbGJhY2spOwotICAgIHdlYlZpZXcoKS53aWxsUHJlc2VudFBv
cG92ZXJDYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSB7CisgICAgd2ViVmlldygpLndpbGxQcmVzZW50UG9wb3ZlckNhbGxiYWNrID0gbWFr
ZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBp
ZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5m
aXJlQ2FsbGJhY2soQ2FsbGJhY2tUeXBlV2lsbFByZXNlbnRQb3BvdmVyKTsKQEAgLTEwNDUsNyAr
MTA0NSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRXaWxsUHJlc2VudFBvcG92
ZXJDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJ
T1M6OnNldERpZERpc21pc3NQb3BvdmVyQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsK
ICAgICBVSVNjcmlwdENvbnRyb2xsZXI6OnNldERpZERpc21pc3NQb3BvdmVyQ2FsbGJhY2soY2Fs
bGJhY2spOwotICAgIHdlYlZpZXcoKS5kaWREaXNtaXNzUG9wb3ZlckNhbGxiYWNrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICB3ZWJWaWV3
KCkuZGlkRGlzbWlzc1BvcG92ZXJDYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25n
VGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+ZmlyZUNhbGxiYWNrKENhbGxiYWNrVHlw
ZURpZERpc21pc3NQb3BvdmVyKTsKQEAgLTExMTYsNyArMTExNiw3IEBAIGJvb2wgVUlTY3JpcHRD
b250cm9sbGVySU9TOjppc0Rpc21pc3NpbmdNZW51KCkgY29uc3QKIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVySU9TOjpzZXREaWRFbmRTY3JvbGxpbmdDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNr
KQogewogICAgIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2so
Y2FsbGJhY2spOwotICAgIHdlYlZpZXcoKS5kaWRFbmRTY3JvbGxpbmdDYWxsYmFjayA9IG1ha2VC
bG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgd2ViVmll
dygpLmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdU
aGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5maXJlQ2FsbGJhY2soQ2FsbGJhY2tUeXBl
RGlkRW5kU2Nyb2xsaW5nKTsKQEAgLTExNDksNyArMTE0OSw3IEBAIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVySU9TOjphY3RpdmF0ZURhdGFMaXN0U3VnZ2VzdGlvbih1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZVJlCiAgICAgW3dlYlZpZXcoKSBfc2VsZWN0RGF0YUxpc3RPcHRpb246aW5kZXhdOwogCiAg
ICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhj
YWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNh
bGxiYWNrSUQpOwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJ
T1M6OmRvQWZ0ZXJEb3VibGVUYXBEZWxheShKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgICAgICBt
YXhpbXVtSW50ZXJ2YWxCZXR3ZWVuU3VjY2Vzc2l2ZVRhcHMgKz0gYWRkaXRpb25hbERlbGF5QmV0
d2VlblN1Y2Nlc3NpdmVUYXBzOwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNo
X3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIChpbnQ2NF90KShtYXhpbXVtSW50ZXJ2YWxCZXR3ZWVu
U3VjY2Vzc2l2ZVRhcHMgKiBOU0VDX1BFUl9TRUMpKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrSURdIHsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVf
Tk9XLCAoaW50NjRfdCkobWF4aW11bUludGVydmFsQmV0d2VlblN1Y2Nlc3NpdmVUYXBzICogTlNF
Q19QRVJfU0VDKSksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhp
cywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYg
KCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5
bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcklPUzo6Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkKIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVySU9TOjppbnN0YWxsVGFwR2VzdHVyZU9uV2luZG93KEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiB7CiAgICAgbV9jb250ZXh0LT5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrLCBD
YWxsYmFja1R5cGVXaW5kb3dUYXBSZWNvZ25pemVkKTsKLSAgICB3ZWJWaWV3KCkud2luZG93VGFw
UmVjb2duaXplZENhbGxiYWNrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICB3ZWJWaWV3KCkud2luZG93VGFwUmVjb2duaXplZENhbGxiYWNr
ID0gbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAg
ICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250
ZXh0LT5maXJlQ2FsbGJhY2soQ2FsbGJhY2tUeXBlV2luZG93VGFwUmVjb2duaXplZCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggMWZjMzg1YjIxMmE1MzQ1MmI3MmJhMGZiZTlhOGI3NDFjMzQ1OGM1NC4uNDA2ZWU5MTlk
MzZlYzA3ZmM0OWRiMjMxNmU4YTBjNDJlNGZjODUzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtNzEsNyArNzEsNyBA
QCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIGF1dG8qIHdlYlZpZXcgPSB0aGlzLT53ZWJWaWV3KCk7
CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VTY2FsZTpzY2FsZSB3aXRoT3JpZ2luOkNHUG9pbnRaZXJv
XTsKIAotICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTptYWtlQmxv
Y2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewor
ICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTptYWtlQmxvY2tQdHIo
W3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAg
IGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQt
PmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlck1hYzo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VO
b3RpZmljYXRpb24oSlNWYQogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbW05T
V29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gbm90aWZpY2F0aW9uQ2VudGVyXTsKICAgICBbY2Vu
dGVyIHBvc3ROb3RpZmljYXRpb25OYW1lOk5TV29ya3NwYWNlQWNjZXNzaWJpbGl0eURpc3BsYXlP
cHRpb25zRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDp3ZWJWaWV3XTsKIAotICAgIFt3ZWJW
aWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTptYWtlQmxvY2tQdHIoW3RoaXMsIHN0
cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFt3ZWJWaWV3IF9k
b0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTptYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVyTWFjOjpjaG9vc2VNZW51QWN0aW9uKEpTU3RyaW5nUmVmIGpzQWN0aW9uLCBKU1ZhbHVlUmVm
IGNhCiAgICAgICAgIFthY3RpdmVNZW51IGNhbmNlbFRyYWNraW5nXTsKICAgICB9CiAKLSAgICBX
b3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICgh
bV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5j
VGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyTWFjOjphY3RpdmF0ZUF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVS
ZWYgY2FsbGJhY2spCiAgICAgZXZlbnRTZW5kZXItPm1vdXNlRG93bigwLCAwKTsKICAgICBldmVu
dFNlbmRlci0+bW91c2VVcCgwLCAwKTsKIAotICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBX
b3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9VSVNjcmlwdENvbnRyb2xs
ZXJXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVUlTY3JpcHRDb250cm9sbGVy
V2luLmNwcAppbmRleCBjYmZhNWUyNjliY2RkYTA1ZWYwOTJjNzNkZGMyNTdkNTc5YTMyN2JmLi5l
OTE4ZmU4ZTdkNWM1Njg1ZWU1MTc4YTVlM2Q4MmMxZWE0N2M2NjhmIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dpbi9VSVNjcmlwdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1VJU2NyaXB0Q29udHJvbGxlcldpbi5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJXaW46OmRvQXN5bmNUYXNrKEpTVmFs
dWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+
cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNhbGxiYWNrSUQgXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrSUQgXSB7CiAgICAgICAgIGlmICghbV9j
b250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFz
a0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93cGUvVUlTY3JpcHRDb250cm9sbGVyV1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d3BlL1VJU2NyaXB0Q29udHJvbGxlcldQRS5jcHAKaW5kZXggNGRlN2NiNTg3MGNiZDljZTIwNGJl
MWFmYWVjYzgwZmQ4NGNmMGE0OS4uNWQ1NWE2MjE4MzNhYTJjODZhZTcwZWI4YzAxNDFlYjY2OGY5
ZjRmYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvVUlTY3JpcHRDb250
cm9sbGVyV1BFLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9VSVNjcmlwdENv
bnRyb2xsZXJXUEUuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFJlZjxVSVNjcmlwdENvbnRyb2xsZXI+
IFVJU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlKFVJU2NyaXB0Q29udGV4dCYgY29udGV4dCkKIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyV1BFOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNr
KQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3lu
Y1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
YWxsYmFja0lEXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAoIW1fY29u
dGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tD
b21wbGV0ZShjYWxsYmFja0lEKTsKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXJXUEU6OmFjdGl2YXRlQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxs
YmFjaykKICAgICBldmVudFNlbmRlci0+bW91c2VEb3duKDAsIDApOwogICAgIGV2ZW50U2VuZGVy
LT5tb3VzZVVwKDAsIDApOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBj
YWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwpAQCAt
MTA1LDcgKzEwNSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyV1BFOjpyZW1vdmVWaWV3RnJv
bVdpbmRvdyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIGF1dG8qIG1haW5XZWJWaWV3ID0gVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCk7CiAgICAgbWFpbldlYlZpZXct
PnJlbW92ZUZyb21XaW5kb3coKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsK
QEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcldQRTo6YWRkVmlld1Rv
V2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgYXV0byogbWFpbldlYlZpZXcgPSBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKTsKICAgICBtYWluV2ViVmlldy0+
YWRkVG9XaW5kb3coKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2Fs
bGJhY2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>